Package org.jboss.metadata.web.jboss

Source Code of org.jboss.metadata.web.jboss.JBossWebMetaData

/*
* JBoss, Home of Professional Open Source
* Copyright 2007, Red Hat Middleware LLC, and individual contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.metadata.web.jboss;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;

import org.jboss.metadata.common.jboss.WebserviceDescriptionsMetaData;
import org.jboss.metadata.ejb.jboss.JBossEnvironmentRefsGroupMetaData;
import org.jboss.metadata.javaee.jboss.RunAsIdentityMetaData;
import org.jboss.metadata.javaee.spec.EJBLocalReferenceMetaData;
import org.jboss.metadata.javaee.spec.EJBLocalReferencesMetaData;
import org.jboss.metadata.javaee.spec.EJBReferenceMetaData;
import org.jboss.metadata.javaee.spec.EJBReferencesMetaData;
import org.jboss.metadata.javaee.spec.EmptyMetaData;
import org.jboss.metadata.javaee.spec.Environment;
import org.jboss.metadata.javaee.spec.EnvironmentEntriesMetaData;
import org.jboss.metadata.javaee.spec.EnvironmentEntryMetaData;
import org.jboss.metadata.javaee.spec.JavaEEMetaDataConstants;
import org.jboss.metadata.javaee.spec.LifecycleCallbacksMetaData;
import org.jboss.metadata.javaee.spec.MessageDestinationMetaData;
import org.jboss.metadata.javaee.spec.MessageDestinationReferenceMetaData;
import org.jboss.metadata.javaee.spec.MessageDestinationReferencesMetaData;
import org.jboss.metadata.javaee.spec.MessageDestinationsMetaData;
import org.jboss.metadata.javaee.spec.ParamValueMetaData;
import org.jboss.metadata.javaee.spec.PersistenceContextReferenceMetaData;
import org.jboss.metadata.javaee.spec.PersistenceContextReferencesMetaData;
import org.jboss.metadata.javaee.spec.PersistenceUnitReferenceMetaData;
import org.jboss.metadata.javaee.spec.PersistenceUnitReferencesMetaData;
import org.jboss.metadata.javaee.spec.ResourceEnvironmentReferenceMetaData;
import org.jboss.metadata.javaee.spec.ResourceEnvironmentReferencesMetaData;
import org.jboss.metadata.javaee.spec.ResourceReferenceMetaData;
import org.jboss.metadata.javaee.spec.ResourceReferencesMetaData;
import org.jboss.metadata.javaee.spec.RunAsMetaData;
import org.jboss.metadata.javaee.spec.SecurityRoleMetaData;
import org.jboss.metadata.javaee.spec.SecurityRoleRefsMetaData;
import org.jboss.metadata.javaee.spec.SecurityRolesMetaData;
import org.jboss.metadata.javaee.spec.ServiceReferenceMetaData;
import org.jboss.metadata.javaee.spec.ServiceReferencesMetaData;
import org.jboss.metadata.javaee.support.AbstractMappedMetaData;
import org.jboss.metadata.javaee.support.NamedModuleImpl;
import org.jboss.metadata.web.spec.AnnotationMetaData;
import org.jboss.metadata.web.spec.ErrorPageMetaData;
import org.jboss.metadata.web.spec.FilterMappingMetaData;
import org.jboss.metadata.web.spec.FiltersMetaData;
import org.jboss.metadata.web.spec.HttpMethodConstraintMetaData;
import org.jboss.metadata.web.spec.JspConfigMetaData;
import org.jboss.metadata.web.spec.ListenerMetaData;
import org.jboss.metadata.web.spec.LocaleEncodingsMetaData;
import org.jboss.metadata.web.spec.LoginConfigMetaData;
import org.jboss.metadata.web.spec.MimeMappingMetaData;
import org.jboss.metadata.web.spec.MultipartConfigMetaData;
import org.jboss.metadata.web.spec.SecurityConstraintMetaData;
import org.jboss.metadata.web.spec.ServletMappingMetaData;
import org.jboss.metadata.web.spec.ServletMetaData;
import org.jboss.metadata.web.spec.ServletSecurityMetaData;
import org.jboss.metadata.web.spec.SessionConfigMetaData;
import org.jboss.metadata.web.spec.WelcomeFileListMetaData;

/**
* The combined web.xml/jboss-web.xml metadata
*
* @author Scott.Stark@jboss.org
* @version $Revision: 84989 $
*/
public class JBossWebMetaData extends NamedModuleImpl {
    private static final long serialVersionUID = 1;

    // Spec information
    private String servletVersion;
    private EmptyMetaData distributable;
    private boolean metadataComplete;
    private List<ParamValueMetaData> contextParams;
    private SessionConfigMetaData sessionConfig;
    private FiltersMetaData filters;
    private List<FilterMappingMetaData> filterMappings;
    private List<ErrorPageMetaData> errorPages;
    private JspConfigMetaData jspConfig;
    private List<ListenerMetaData> listeners;
    private LoginConfigMetaData loginConfig;
    private List<MimeMappingMetaData> mimeMappings;
    private List<ServletMappingMetaData> servletMappings;
    private List<SecurityConstraintMetaData> securityConstraints;
    private WelcomeFileListMetaData welcomeFileList;
    private LocaleEncodingsMetaData localEncodings;

    // JBoss extended information
    private String dtdPublicId;
    private String dtdSystemId;
    private String version;
    private String contextRoot;
    private String alternativeDD;
    private String securityDomain;
    private String jaccContextID;
    /** The loader repository */
    private ClassLoadingMetaData classLoading;
    /** A list of extra dependencies to wait on */
    private List<String> depends;
    /** */
    private Map<String, RunAsIdentityMetaData> runAsIdentity = new ConcurrentHashMap<String, RunAsIdentityMetaData>();
    private SecurityRolesMetaData securityRoles = new SecurityRolesMetaData();
    /** The servlets */
    private JBossServletsMetaData servlets = new JBossServletsMetaData();
    /** The message destinations */
    private MessageDestinationsMetaData messageDestinations = new MessageDestinationsMetaData();
    /** The environment */
    private JBossEnvironmentRefsGroupMetaData jndiEnvironmentRefsGroup;
    /** The web app virtual host list */
    private List<String> virtualHosts;
    private boolean flushOnSessionInvalidation;
    private boolean useSessionCookies;
    private ReplicationConfig replicationConfig;
    private PassivationConfig passivationConfig;
    private WebserviceDescriptionsMetaData webserviceDescriptions = new WebserviceDescriptionsMetaData();
    private Boolean jaccAllStoreRole;
    private JBossAnnotationsMetaData annotations;

    private List<ContainerListenerMetaData> containerListeners;
    private List<ValveMetaData> valves;
    private List<String> overlays;

    /** The web context class loader used to create the java:comp context */
    @Deprecated
    private transient ClassLoader encLoader;
    /** The web context class loader, used to create the ws4ee service endpoint */
    @Deprecated
    private transient ClassLoader cxtLoader;
    /**
     * this is really a hack for new injection code so that we can reparse
     * web.xml/jbossweb.xml for JavaEE 5 injections todo remove this when we
     * clean up
     */
    private HashMap<?, ?> arbitraryMetadata = new HashMap<Object, Object>();

    /**
     * The maximum number of active sessions allowed, or -1 for no limit
     */
    private Integer maxActiveSessions = null;

    /** Should the context use session cookies or use default */
    private int sessionCookies = SESSION_COOKIES_DEFAULT;

    public static final int SESSION_COOKIES_DEFAULT = 0;
    public static final int SESSION_COOKIES_ENABLED = 1;
    public static final int SESSION_COOKIES_DISABLED = 2;

    /**
     * Callback for the DTD information
     *
     * @param root
     * @param publicId
     * @param systemId
     */
    public void setDTD(String root, String publicId, String systemId) {
        this.dtdPublicId = publicId;
        this.dtdSystemId = systemId;
        // Set the version based on the public id
        if (dtdPublicId != null && dtdPublicId.contains("3.0"))
            setVersion("3.0");
        else if (dtdPublicId != null && dtdPublicId.contains("3.2"))
            setVersion("3.2");
        else if (dtdPublicId != null && dtdPublicId.contains("2.4"))
            setVersion("4.0");
        else if (dtdPublicId != null && dtdPublicId.contains("4.2"))
            setVersion("4.2");
        else if (dtdPublicId != null && dtdPublicId.contains("5.0"))
            setVersion("5.0");
        else if (dtdSystemId != null && dtdSystemId.contains("3_0"))
            setVersion("3.0");
        else if (dtdSystemId != null && dtdSystemId.contains("3_2"))
            setVersion("3.2");
        else if (dtdSystemId != null && dtdSystemId.contains("4_0"))
            setVersion("4.0");
        else if (dtdSystemId != null && dtdSystemId.contains("4_2"))
            setVersion("4.2");
        else if (dtdSystemId != null && dtdSystemId.contains("5_0"))
            setVersion("5.0");
        else if (dtdSystemId != null && dtdSystemId.contains("6_0"))
            setVersion("6.0");
    }

    /**
     * Get the DTD public id if one was seen
     *
     * @return the value of the web.xml dtd public id
     */
    public String getDtdPublicId() {
        return dtdPublicId;
    }
    public void setDtdPublicId(String dtdPublicId) {
        this.dtdPublicId = dtdPublicId;
    }

    /**
     * Get the DTD system id if one was seen
     *
     * @return the value of the web.xml dtd system id
     */
    public String getDtdSystemId() {
        return dtdSystemId;
    }
    public void setDtdSystemId(String dtdSystemId) {
        this.dtdSystemId = dtdSystemId;
    }

    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    public String getServletVersion() {
        return servletVersion;
    }

    public void setServletVersion(String servletVersion) {
        this.servletVersion = servletVersion;
    }

    /**
     * Is this a servlet 2.3 version application
     *
     * @return true if this is a javaee 2.3 version application
     */
    public boolean is23() {
        return servletVersion != null && servletVersion.equals(JavaEEMetaDataConstants.J2EE_13_WEB);
    }

    public boolean is24() {
        return servletVersion != null && servletVersion.equals("2.4");
    }

    public boolean is25() {
        return servletVersion != null && servletVersion.equals("2.5");
    }

    public boolean is30() {
        return servletVersion != null && servletVersion.equals("3.0");
    }

    public boolean isMetadataComplete() {
        return metadataComplete;
    }

    public void setMetadataComplete(boolean metadataComplete) {
        this.metadataComplete = metadataComplete;
    }

    public JBossAnnotationsMetaData getAnnotations() {
        return annotations;
    }

    public void setAnnotations(JBossAnnotationsMetaData annotations) {
        this.annotations = annotations;
    }

    public EmptyMetaData getDistributable() {
        return distributable;
    }

    public void setDistributable(EmptyMetaData distributable) {
        this.distributable = distributable;
    }

    public SessionConfigMetaData getSessionConfig() {
        return sessionConfig;
    }

    public void setSessionConfig(SessionConfigMetaData sessionConfig) {
        this.sessionConfig = sessionConfig;
    }

    public List<ParamValueMetaData> getContextParams() {
        return contextParams;
    }

    public void setContextParams(List<ParamValueMetaData> params) {
        this.contextParams = params;
    }

    public FiltersMetaData getFilters() {
        return filters;
    }

    public void setFilters(FiltersMetaData filters) {
        this.filters = filters;
    }

    public List<FilterMappingMetaData> getFilterMappings() {
        return filterMappings;
    }

    public void setFilterMappings(List<FilterMappingMetaData> filterMappings) {
        this.filterMappings = filterMappings;
    }

    public List<ErrorPageMetaData> getErrorPages() {
        return errorPages;
    }

    public void setErrorPages(List<ErrorPageMetaData> errorPages) {
        this.errorPages = errorPages;
    }

    public JspConfigMetaData getJspConfig() {
        return jspConfig;
    }

    public void setJspConfig(JspConfigMetaData jspConfig) {
        this.jspConfig = jspConfig;
    }

    public List<ListenerMetaData> getListeners() {
        return listeners;
    }

    public void setListeners(List<ListenerMetaData> listeners) {
        this.listeners = listeners;
    }

    public LocaleEncodingsMetaData getLocalEncodings() {
        return localEncodings;
    }

    public void setLocalEncodings(LocaleEncodingsMetaData localEncodings) {
        this.localEncodings = localEncodings;
    }

    public LoginConfigMetaData getLoginConfig() {
        return loginConfig;
    }

    public void setLoginConfig(LoginConfigMetaData loginConfig) {
        this.loginConfig = loginConfig;
    }

    public List<MimeMappingMetaData> getMimeMappings() {
        return mimeMappings;
    }

    public void setMimeMappings(List<MimeMappingMetaData> mimeMappings) {
        this.mimeMappings = mimeMappings;
    }

    public JBossServletMetaData getServletByName(String name) {
        JBossServletMetaData servlet = null;
        if (servlets != null)
            servlet = servlets.get(name);
        return servlet;
    }

    public JBossServletsMetaData getServlets() {
        return servlets;
    }

    public void setServlets(JBossServletsMetaData servlets) {
        this.servlets = servlets;
    }

    public List<ServletMappingMetaData> getServletMappings() {
        return servletMappings;
    }

    public void setServletMappings(List<ServletMappingMetaData> servletMappings) {
        this.servletMappings = servletMappings;
    }

    public List<SecurityConstraintMetaData> getSecurityConstraints() {
        return securityConstraints;
    }

    public void setSecurityConstraints(List<SecurityConstraintMetaData> securityConstraints) {
        this.securityConstraints = securityConstraints;
    }

    public SecurityRolesMetaData getSecurityRoles() {
        return securityRoles;
    }

    public void setSecurityRoles(SecurityRolesMetaData securityRoles) {
        this.securityRoles = securityRoles;
    }

    public WelcomeFileListMetaData getWelcomeFileList() {
        return welcomeFileList;
    }

    public void setWelcomeFileList(WelcomeFileListMetaData welcomeFileList) {
        this.welcomeFileList = welcomeFileList;
    }

    public EJBLocalReferenceMetaData getEjbLocalReferenceByName(String name) {
        return AbstractMappedMetaData.getByName(name, getEjbLocalReferences());
    }

    public EJBLocalReferencesMetaData getEjbLocalReferences() {
        if (jndiEnvironmentRefsGroup != null)
            return jndiEnvironmentRefsGroup.getEjbLocalReferences();
        return null;
    }

    public EJBReferenceMetaData getEjbReferenceByName(String name) {
        return AbstractMappedMetaData.getByName(name, getEjbReferences());
    }

    public EJBReferencesMetaData getEjbReferences() {
        if (jndiEnvironmentRefsGroup != null)
            return jndiEnvironmentRefsGroup.getEjbReferences();
        return null;
    }

    public EnvironmentEntriesMetaData getEnvironmentEntries() {
        if (jndiEnvironmentRefsGroup != null)
            return jndiEnvironmentRefsGroup.getEnvironmentEntries();
        return null;
    }

    public EnvironmentEntryMetaData getEnvironmentEntryByName(String name) {
        return AbstractMappedMetaData.getByName(name, getEnvironmentEntries());
    }

    public MessageDestinationReferenceMetaData getMessageDestinationReferenceByName(String name) {
        return AbstractMappedMetaData.getByName(name, getMessageDestinationReferences());
    }

    public MessageDestinationReferencesMetaData getMessageDestinationReferences() {
        if (jndiEnvironmentRefsGroup != null)
            return jndiEnvironmentRefsGroup.getMessageDestinationReferences();
        return null;
    }

    public PersistenceContextReferenceMetaData getPersistenceContextReferenceByName(String name) {
        return AbstractMappedMetaData.getByName(name, getPersistenceContextRefs());
    }

    public PersistenceContextReferencesMetaData getPersistenceContextRefs() {
        if (jndiEnvironmentRefsGroup != null)
            return jndiEnvironmentRefsGroup.getPersistenceContextRefs();
        return null;
    }

    public PersistenceUnitReferenceMetaData getPersistenceUnitReferenceByName(String name) {
        return AbstractMappedMetaData.getByName(name, getPersistenceUnitRefs());
    }

    public PersistenceUnitReferencesMetaData getPersistenceUnitRefs() {
        if (jndiEnvironmentRefsGroup != null)
            return jndiEnvironmentRefsGroup.getPersistenceUnitRefs();
        return null;
    }

    public LifecycleCallbacksMetaData getPostConstructs() {
        if (jndiEnvironmentRefsGroup != null)
            return jndiEnvironmentRefsGroup.getPostConstructs();
        return null;
    }

    public LifecycleCallbacksMetaData getPreDestroys() {
        if (jndiEnvironmentRefsGroup != null)
            return jndiEnvironmentRefsGroup.getPreDestroys();
        return null;
    }

    public ResourceEnvironmentReferenceMetaData getResourceEnvironmentReferenceByName(String name) {
        return AbstractMappedMetaData.getByName(name, getResourceEnvironmentReferences());
    }

    public ResourceEnvironmentReferencesMetaData getResourceEnvironmentReferences() {
        if (jndiEnvironmentRefsGroup != null)
            return jndiEnvironmentRefsGroup.getResourceEnvironmentReferences();
        return null;
    }

    public ResourceReferenceMetaData getResourceReferenceByName(String name) {
        return AbstractMappedMetaData.getByName(name, getResourceReferences());
    }

    public ResourceReferencesMetaData getResourceReferences() {
        if (jndiEnvironmentRefsGroup != null)
            return jndiEnvironmentRefsGroup.getResourceReferences();
        return null;
    }

    public ServiceReferenceMetaData getServiceReferenceByName(String name) {
        return AbstractMappedMetaData.getByName(name, getServiceReferences());
    }

    public ServiceReferencesMetaData getServiceReferences() {
        if (jndiEnvironmentRefsGroup != null)
            return jndiEnvironmentRefsGroup.getServiceReferences();
        return null;
    }

    public MessageDestinationsMetaData getMessageDestinations() {
        return messageDestinations;
    }

    public void setMessageDestinations(MessageDestinationsMetaData messageDestinations) {
        this.messageDestinations = messageDestinations;
    }

    public String getAlternativeDD() {
        return alternativeDD;
    }

    public void setAlternativeDD(String alternativeDD) {
        this.alternativeDD = alternativeDD;
    }

    public String getContextRoot() {
        return contextRoot;
    }

    public void setContextRoot(String contextRoot) {
        this.contextRoot = contextRoot;
    }

    public List<String> getDepends() {
        return depends;
    }

    public ClassLoader getENCLoader() {
        return encLoader;
    }

    public void setENCLoader(ClassLoader encLoader) {
        this.encLoader = encLoader;
    }

    public ClassLoader getContextLoader() {
        return cxtLoader;
    }

    public void setContextLoader(ClassLoader cxtLoader) {
        this.cxtLoader = cxtLoader;
    }

    public void setDepends(List<String> depends) {
        this.depends = depends;
    }

    public ClassLoadingMetaData getClassLoading() {
        return classLoading;
    }

    public void setClassLoading(ClassLoadingMetaData classLoading) {
        this.classLoading = classLoading;
    }

    public String getJaccContextID() {
        return jaccContextID;
    }

    public void setJaccContextID(String jaccContextID) {
        this.jaccContextID = jaccContextID;
    }

    public String getPublicID() {
        return this.getDtdPublicId();
    }

    public String getSecurityDomain() {
        return securityDomain;
    }

    public void setSecurityDomain(String securityDomain) {
        if (securityDomain == null)
            throw new IllegalArgumentException("securityDomain is null");
        this.securityDomain = securityDomain.trim();
    }

    public HashMap<?, ?> getArbitraryMetadata() {
        return arbitraryMetadata;
    }

    public void setArbitraryMetadata(HashMap<?, ?> arbitraryMetadata) {
        this.arbitraryMetadata = arbitraryMetadata;
    }

    public boolean isFlushOnSessionInvalidation() {
        return flushOnSessionInvalidation;
    }

    public void setFlushOnSessionInvalidation(boolean flushOnSessionInvalidation) {
        this.flushOnSessionInvalidation = flushOnSessionInvalidation;
    }

    public Integer getMaxActiveSessions() {
        return maxActiveSessions;
    }

    public void setMaxActiveSessions(Integer maxActiveSessions) {
        this.maxActiveSessions = maxActiveSessions;
    }

    public PassivationConfig getPassivationConfig() {
        return passivationConfig;
    }

    public void setPassivationConfig(PassivationConfig passivationConfig) {
        this.passivationConfig = passivationConfig;
    }

    public ReplicationConfig getReplicationConfig() {
        return replicationConfig;
    }

    public void setReplicationConfig(ReplicationConfig replicationConfig) {
        this.replicationConfig = replicationConfig;
    }

    public boolean isUseSessionCookies() {
        return useSessionCookies;
    }

    public void setUseSessionCookies(boolean useSessionCookies) {
        this.useSessionCookies = useSessionCookies;
    }

    public int getSessionCookies() {
        return this.sessionCookies;
    }

    public void setSessionCookies(int sessionCookies) {
        this.sessionCookies = sessionCookies;
    }

    public List<String> getVirtualHosts() {
        return virtualHosts;
    }

    public void setVirtualHosts(List<String> virtualHosts) {
        this.virtualHosts = virtualHosts;
    }

    public WebserviceDescriptionsMetaData getWebserviceDescriptions() {
        return webserviceDescriptions;
    }

    public void setWebserviceDescriptions(WebserviceDescriptionsMetaData webserviceDescriptions) {
        this.webserviceDescriptions = webserviceDescriptions;
    }

    public List<ContainerListenerMetaData> getContainerListeners() {
    return containerListeners;
  }

  public void setContainerListeners(
      List<ContainerListenerMetaData> containerListeners) {
    this.containerListeners = containerListeners;
  }

  public List<ValveMetaData> getValves() {
    return valves;
  }

  public void setValves(List<ValveMetaData> valves) {
    this.valves = valves;
  }

  public List<String> getOverlays() {
    return overlays;
  }

  public void setOverlays(List<String> overlays) {
    this.overlays = overlays;
  }

  /**
     * Get the security-role names from the web.xml descriptor
     *
     * @return Set<String> of the security-role names from the web.xml
     */
    public Set<String> getSecurityRoleNames() {
        return new HashSet<String>(securityRoles.keySet());
    }

    /**
     * Get the servlet/security-role-refs
     *
     * @param servletName
     * @return
     */
    public SecurityRoleRefsMetaData getSecurityRoleRefs(String servletName) {
        SecurityRoleRefsMetaData refs = null;
        if (getServlets() != null) {
            ServletMetaData servlet = getServlets().get(servletName);
            if (servlet != null) {
                refs = servlet.getSecurityRoleRefs();
            }
        }
        return refs;
    }

    public Map<String, Set<String>> getPrincipalVersusRolesMap() {
        Map<String, Set<String>> principalRolesMap = null;

        for (SecurityRoleMetaData srm : securityRoles) {
            String rolename = srm.getRoleName();
            if (principalRolesMap == null)
                principalRolesMap = new HashMap<String, Set<String>>();
            if (srm.getPrincipals() != null)
                for (String pr : srm.getPrincipals()) {
                    Set<String> roleset = principalRolesMap.get(pr);
                    if (roleset == null)
                        roleset = new HashSet<String>();
                    if (!roleset.contains(rolename))
                        roleset.add(rolename);
                    principalRolesMap.put(pr, roleset);
                }
        }
        return principalRolesMap;
    }

    /**
     * Get the jndiEnvironmentRefsGroup.
     *
     * @return the jndiEnvironmentRefsGroup.
     */
    public Environment getJndiEnvironmentRefsGroup() {
        return jndiEnvironmentRefsGroup;
    }

    /**
     * Set the jndiEnvironmentRefsGroup.
     * IT DOESN't MERGE...
     *
     * @param jndiEnvironmentRefsGroup the jndiEnvironmentRefsGroup.
     * @throws IllegalArgumentException for a null jndiEnvironmentRefsGroup
     */
    public void setJndiEnvironmentRefsGroup(Environment env) {
        if (env == null)
            throw new IllegalArgumentException("Null jndiEnvironmentRefsGroup");
        JBossEnvironmentRefsGroupMetaData jenv = (JBossEnvironmentRefsGroupMetaData) env;
        jndiEnvironmentRefsGroup = jenv;
    }

    // just for the xml binding, to expose correct model group type
    public void setEnvironmentRefsGroup(JBossEnvironmentRefsGroupMetaData env) {
        this.setJndiEnvironmentRefsGroup(env);
    }

    public Boolean getJaccAllStoreRole() {
        return jaccAllStoreRole;
    }
    public boolean isJaccAllStoreRole() {
        if (jaccAllStoreRole == null)
            return Boolean.FALSE;
        return jaccAllStoreRole;
    }

    public void setJaccAllStoreRole(boolean isJaccAllStoreRole) {
        this.jaccAllStoreRole = Boolean.valueOf(isJaccAllStoreRole);
    }

    public MessageDestinationMetaData getMessageDestination(String name) {
        return messageDestinations.get(name);
    }

    /**
     * Access the RunAsIdentity associated with the given servlet
     *
     * @param servletName - the servlet-name from the web.xml
     * @return RunAsIdentity for the servet if one exists, null otherwise
     */
    public RunAsIdentityMetaData getRunAsIdentity(String servletName) {
        RunAsIdentityMetaData identity = runAsIdentity.get(servletName);
        if (identity == null) {
            JBossServletsMetaData servlets = getServlets();
            if (servlets != null) {
                ServletMetaData servlet = servlets.get(servletName);
                if (servlet != null) {
                    // Check for a web.xml run-as only specification
                    RunAsMetaData runAs = servlet.getRunAs();
                    if (runAs != null) {
                        String roleName = runAs.getRoleName();
                        identity = new RunAsIdentityMetaData(roleName, null);
                        runAsIdentity.put(servletName, identity);
                    }
                }
            }
        }
        return identity;
    }

    /**
     *
     * @return servlet/run-as <String servlet-name, RunAsIdentityMetaData>
     */
    public Map<String, RunAsIdentityMetaData> getRunAsIdentity() {
        return runAsIdentity;
    }

    /**
     * The jboss-web.xml servlet/run-as <String servlet-name,
     * SecurityRoleMetaData>
     */
    public void setRunAsIdentity(Map<String, RunAsIdentityMetaData> runAsIdentity) {
        this.runAsIdentity.clear();
        this.runAsIdentity.putAll(runAsIdentity);
    }

    public void mergeSecurityRoles(SecurityRolesMetaData roles) {
        securityRoles = roles;
    }

    public void resolveAnnotations() {
        if (annotations != null) {
            for (AnnotationMetaData annotation : annotations) {
                String className = annotation.getClassName();
                for (JBossServletMetaData servlet : servlets) {
                    if (servlet.getServletClass() != null && servlet.getServletClass().equals(className)) {
                        // Merge @RunAs
                        if (annotation.getRunAs() != null && servlet.getRunAs() == null) {
                            RunAsMetaData runAs = new RunAsMetaData();
                            runAs.setRoleName(annotation.getRunAs().getRoleName());
                            servlet.setRunAs(runAs);
                        }
                        // Merge @MultipartConfig
                        if (annotation.getMultipartConfig() != null && servlet.getMultipartConfig() == null) {
                            MultipartConfigMetaData multipartConfig = new MultipartConfigMetaData();
                            MultipartConfigMetaData webFragmentMetaData = annotation.getMultipartConfig();
                             multipartConfig.setLocation(webFragmentMetaData.getLocation());
                            if (webFragmentMetaData.getMaxFileSizeSet()) {
                                 multipartConfig.setMaxFileSize(webFragmentMetaData.getMaxFileSize());
                            }
                            if (webFragmentMetaData.getMaxRequestSizeSet()) {
                                multipartConfig.setMaxRequestSize(webFragmentMetaData.getMaxRequestSize());
                            }
                            if (webFragmentMetaData.getFileSizeThresholdSet()) {
                                multipartConfig.setFileSizeThreshold(webFragmentMetaData.getFileSizeThreshold());
                            }
                            servlet.setMultipartConfig(multipartConfig);
                        }
                        // Merge @ServletSecurity
                        if (annotation.getServletSecurity() != null && servlet.getServletSecurity() == null) {
                            ServletSecurityMetaData servletSecurityAnnotation = annotation.getServletSecurity();
                            ServletSecurityMetaData servletSecurity = new ServletSecurityMetaData();
                            servletSecurity.setEmptyRoleSemantic(servletSecurityAnnotation.getEmptyRoleSemantic());
                            servletSecurity.setTransportGuarantee(servletSecurityAnnotation.getTransportGuarantee());
                            List<String> roleNames = new ArrayList<String>();
                            roleNames.addAll(servletSecurityAnnotation.getRolesAllowed());
                            servletSecurity.setRolesAllowed(roleNames);
                            if (servletSecurityAnnotation.getHttpMethodConstraints() != null) {
                                List<HttpMethodConstraintMetaData> methodConstraints = new ArrayList<HttpMethodConstraintMetaData>();
                                for (HttpMethodConstraintMetaData annotationMethodConstraint : servletSecurityAnnotation
                                        .getHttpMethodConstraints()) {
                                    HttpMethodConstraintMetaData methodConstraint = new HttpMethodConstraintMetaData();
                                    methodConstraint.setMethod(annotationMethodConstraint.getMethod());
                                    methodConstraint.setEmptyRoleSemantic(annotationMethodConstraint.getEmptyRoleSemantic());
                                    methodConstraint.setTransportGuarantee(annotationMethodConstraint.getTransportGuarantee());
                                    roleNames = new ArrayList<String>();
                                    roleNames.addAll(annotationMethodConstraint.getRolesAllowed());
                                    methodConstraint.setRolesAllowed(roleNames);
                                    methodConstraints.add(methodConstraint);
                                }
                                servletSecurity.setHttpMethodConstraints(methodConstraints);
                            }
                            servlet.setServletSecurity(servletSecurity);
                        }
                    }
                }
            }
        }
    }

    public void resolveRunAs() {
        // Update run-as indentity for a run-as-principal
        if (servlets != null) {
            for (JBossServletMetaData servlet : servlets) {
                String servletName = servlet.getServletName();
                String principalName = servlet.getRunAsPrincipal();
                // Get the web.xml run-as primary role
                String webXmlRunAs = null;
                if (servlet.getRunAs() != null)
                    webXmlRunAs = servlet.getRunAs().getRoleName();
                if (principalName != null) {
                    // Update the run-as indentity to use the principal name
                    if (webXmlRunAs == null) {
                        // Needs to be merged from Annotations
                        webXmlRunAs = "PLACEHOLDER_FOR_ANNOTATION";
                        // throw new IllegalStateException("run-as-principal: "
                        // + principalName +
                        // " found in jboss-web.xml but there was no run-as in web.xml");
                    }
                    // See if there are any additional roles for this principal
                    Set<String> extraRoles = securityRoles.getSecurityRoleNamesByPrincipal(principalName);
                    RunAsIdentityMetaData runAsId = new RunAsIdentityMetaData(webXmlRunAs, principalName, extraRoles);
                    runAsIdentity.put(servletName, runAsId);
                } else if (webXmlRunAs != null) {
                    RunAsIdentityMetaData runAsId = new RunAsIdentityMetaData(webXmlRunAs, null);
                    runAsIdentity.put(servletName, runAsId);
                }
            }
        }
    }

}
TOP

Related Classes of org.jboss.metadata.web.jboss.JBossWebMetaData

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.