Package org.jasig.portal.container.binding

Source Code of org.jasig.portal.container.binding.WebApplicationUnmarshaller

/* Copyright 2004 The JA-SIG Collaborative.  All rights reserved.
*  See license distributed with this file and
*  available online at http://www.uportal.org/license.html
*/

package org.jasig.portal.container.binding;

import java.io.IOException;
import java.io.InputStream;
import java.util.Locale;

import org.apache.pluto.om.common.DescriptionSet;
import org.apache.pluto.om.common.DisplayNameSet;
import org.apache.pluto.om.common.ParameterSet;
import org.apache.pluto.om.common.SecurityRoleSet;
import org.apache.pluto.om.servlet.ServletDefinitionList;
import org.apache.pluto.om.servlet.WebApplicationDefinition;
import org.jasig.portal.container.deploy.WebAppDtdResolver;
import org.jasig.portal.container.om.common.DescriptionSetImpl;
import org.jasig.portal.container.om.common.DisplayNameSetImpl;
import org.jasig.portal.container.om.common.ParameterImpl;
import org.jasig.portal.container.om.common.ParameterSetImpl;
import org.jasig.portal.container.om.common.SecurityRoleImpl;
import org.jasig.portal.container.om.common.SecurityRoleRefImpl;
import org.jasig.portal.container.om.common.SecurityRoleRefSetImpl;
import org.jasig.portal.container.om.common.SecurityRoleSetImpl;
import org.jasig.portal.container.om.servlet.AuthConstraintImpl;
import org.jasig.portal.container.om.servlet.DistributableImpl;
import org.jasig.portal.container.om.servlet.EjbLocalRefImpl;
import org.jasig.portal.container.om.servlet.EjbRefImpl;
import org.jasig.portal.container.om.servlet.EnvEntryImpl;
import org.jasig.portal.container.om.servlet.ErrorPageImpl;
import org.jasig.portal.container.om.servlet.FilterImpl;
import org.jasig.portal.container.om.servlet.FilterMappingImpl;
import org.jasig.portal.container.om.servlet.FormLoginConfigImpl;
import org.jasig.portal.container.om.servlet.IconImpl;
import org.jasig.portal.container.om.servlet.ListenerImpl;
import org.jasig.portal.container.om.servlet.LoginConfigImpl;
import org.jasig.portal.container.om.servlet.MimeMappingImpl;
import org.jasig.portal.container.om.servlet.ResourceEnvRefImpl;
import org.jasig.portal.container.om.servlet.ResourceRefImpl;
import org.jasig.portal.container.om.servlet.RunAsImpl;
import org.jasig.portal.container.om.servlet.SecurityConstraintImpl;
import org.jasig.portal.container.om.servlet.ServletDefinitionImpl;
import org.jasig.portal.container.om.servlet.ServletDefinitionListImpl;
import org.jasig.portal.container.om.servlet.ServletMappingImpl;
import org.jasig.portal.container.om.servlet.ServletMappingListImpl;
import org.jasig.portal.container.om.servlet.SessionConfigImpl;
import org.jasig.portal.container.om.servlet.TagLibImpl;
import org.jasig.portal.container.om.servlet.TagLibListImpl;
import org.jasig.portal.container.om.servlet.UserDataConstraintImpl;
import org.jasig.portal.container.om.servlet.WebApplicationDefinitionImpl;
import org.jasig.portal.container.om.servlet.WebResourceCollectionImpl;
import org.jasig.portal.container.om.servlet.WelcomeFileListImpl;
import org.jasig.portal.utils.DocumentFactory;
import org.jasig.portal.utils.XML;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.EntityResolver;
import org.xml.sax.SAXException;

/**
* Parses a <code>web.xml</code> file and produces data structures.
* @author Ken Weiner, kweiner@unicon.net
* @version $Revision: 1.7 $
*/
public class WebApplicationUnmarshaller {

    private InputStream inputStream;
    private String contextName;
    private Document doc; // Might want to consider SAX instead of DOM parsing
    private WebApplicationDefinitionImpl webApplicationDefinition;
    private static EntityResolver webAppDtdResolver;
   
    public WebApplicationUnmarshaller() {
        this.webApplicationDefinition = new WebApplicationDefinitionImpl();
        webAppDtdResolver = new WebAppDtdResolver();
    }

    /**
     * Initializer that takes an input stream to the <code>web.xml</code> file as well
     * as the context name of the portlet application.
     * @param inputStream an input stream to the contents of the <code>web.xml</code> file
     * @param contextName the context name of the portlet application
     * @throws IOException
     * @throws SAXException
     */
    public void init(InputStream inputStream, String contextName) throws IOException, SAXException {
        this.inputStream = inputStream;
        this.doc = DocumentFactory.getDocumentFromStream(inputStream, webAppDtdResolver);
        this.contextName = contextName;
    }
   
    /**
     * Returns a WebApplicationDefinition object that was populated with data
     * from the <code>web.xml</code> file.
     * @return the web application definition
     */
    public WebApplicationDefinition getWebApplicationDefinition() {
        Element webAppE = doc.getDocumentElement();  
        webApplicationDefinition.setId(contextName);
        webApplicationDefinition.setContextRoot("/" + contextName);
        webApplicationDefinition.setIcon(getIcon(webAppE));
        webApplicationDefinition.setDisplayNames(getDisplayNames(webAppE));
        webApplicationDefinition.setDescriptions(getDescriptions(webAppE));
        webApplicationDefinition.setDistributable(getDistributable(webAppE));
        webApplicationDefinition.setInitParameterSet(getParameters(webAppE, "context-param"));
        webApplicationDefinition.setFilters(getFilters(webAppE));
        webApplicationDefinition.setFilterMappings(getFilterMappings(webAppE));
        webApplicationDefinition.setListeners(getListeners(webAppE));
        webApplicationDefinition.setServletDefinitionList(getServletDefinitions(webAppE));   
        webApplicationDefinition.setServletMappings(getServletMappings(webAppE));
        webApplicationDefinition.setSessionConfig(getSessionConfig(webAppE));
        webApplicationDefinition.setMimeMappings(getMimeMappings(webAppE));
        webApplicationDefinition.setWelcomeFiles(getWelcomeFiles(webAppE));
        webApplicationDefinition.setErrorPages(getErrorPages(webAppE));
        webApplicationDefinition.setTagLibs(getTagLibs(webAppE));
        webApplicationDefinition.setResourceEnvRefs(getResourceEnvRefs(webAppE));
        webApplicationDefinition.setResourceRefs(getResourceRefs(webAppE));
        webApplicationDefinition.setSecurityConstraints(getSecurityConstraints(webAppE));
        webApplicationDefinition.setLoginConfig(getLoginConfig(webAppE));
        webApplicationDefinition.setSecurityRoles(getSecurityRoles(webAppE));
        webApplicationDefinition.setEnvEntries(getEnvEntries(webAppE));
        webApplicationDefinition.setEjbRefs(getEjbRefs(webAppE));
        webApplicationDefinition.setEjbLocalRefs(getEjbLocalRefs(webAppE));
        return webApplicationDefinition;
    }

    private ServletDefinitionList getServletDefinitions(Element webAppE) {
        ServletDefinitionListImpl servletDefinitions = new ServletDefinitionListImpl();
        
        NodeList servletNL = webAppE.getElementsByTagName("servlet");
        for (int i = 0; i < servletNL.getLength(); i++) {
            Element servletE = (Element)servletNL.item(i);
            ServletDefinitionImpl servletDefinition = new ServletDefinitionImpl();
            servletDefinition.setIcon(getIcon(servletE));
            servletDefinition.setServletName(XML.getChildElementText(servletE, "servlet-name"));
            servletDefinition.setDisplayNames(getDisplayNames(servletE));
            servletDefinition.setDescriptions(getDescriptions(servletE));
            servletDefinition.setServletClass(XML.getChildElementText(servletE, "servlet-class"));
            servletDefinition.setJspFile(XML.getChildElementText(servletE, "jsp-file"));
            servletDefinition.setInitParameters(getParameters(servletE, "init-param"));
            servletDefinition.setLoadOnStartup(XML.getChildElementText(servletE, "load-on-startup"));
           
            // Add run as
            NodeList runAsNL = servletE.getElementsByTagName("run-as");
            if (runAsNL.getLength() > 0) {
                Element runAsE = (Element)runAsNL.item(0);
                RunAsImpl runAs = new RunAsImpl();
                runAs.setRoleName(XML.getChildElementText(runAsE, "role-name"));
                runAs.setDescriptions(getDescriptions(runAsE));
                servletDefinition.setRunAs(runAs);
            }
           
            // Add servlet security role refs
            SecurityRoleRefSetImpl securityRoleRefs = new SecurityRoleRefSetImpl();
            NodeList securityRoleRefNL = servletE.getElementsByTagName("security-role-ref");
            for (int m = 0; m < securityRoleRefNL.getLength(); m += 1) {
                Element securityRoleRefE = (Element)securityRoleRefNL.item(m);
                String roleName = XML.getChildElementText(securityRoleRefE, "role-name");
                String roleLink = XML.getChildElementText(securityRoleRefE, "role-link");
                String description = XML.getChildElementText(securityRoleRefE, "description");
                SecurityRoleRefImpl securityRoleRef = new SecurityRoleRefImpl();
                securityRoleRef.setDescription(description);
                securityRoleRef.setRoleName(roleName);
                securityRoleRef.setRoleLink(roleLink);
                securityRoleRefs.add(securityRoleRef);
            }
            servletDefinition.setSecurityRoleRefs(securityRoleRefs);
           
            // Add servlet mappings for this servlet
            NodeList servletMappingNL = webAppE.getElementsByTagName("servlet-mapping");
            for (int k = 0; k < servletMappingNL.getLength(); k += 1) {
                Element servletMappingE = (Element)servletMappingNL.item(k);
                String servletMappingName = XML.getChildElementText(servletMappingE, "servlet-name");
                String servletMappingUrlPattern = XML.getChildElementText(servletMappingE, "url-pattern");
                if (servletMappingName.equals(servletDefinition.getServletName())) {
                    servletDefinition.setServletMapping(servletMappingName, servletMappingUrlPattern);
                    break;
                }
            }

            servletDefinition.setWebApplicationDefinition(webApplicationDefinition);
            servletDefinitions.add(servletDefinition);
        }
       
        return servletDefinitions;
    }
   
    private IconImpl getIcon(Element e) {
        IconImpl icon = null;
        NodeList iconNL = e.getElementsByTagName("icon");
        if (iconNL.getLength() > 0) {
            icon = new IconImpl();
            Element iconE = (Element)iconNL.item(0);
            icon.setSmallIcon(XML.getChildElementText(iconE, "small-icon"));
            icon.setLargeIcon(XML.getChildElementText(iconE, "large-icon"));
        }
        return icon;
    }
   
    private DisplayNameSet getDisplayNames(Element e) {
        DisplayNameSetImpl displayNames = new DisplayNameSetImpl();
        NodeList displayNameNL = e.getElementsByTagName("display-name");
        for (int i = 0; i < displayNameNL.getLength(); i++) {
            Element displayNameE = (Element)displayNameNL.item(i);
            String displayName = XML.getElementText(displayNameE);
            displayNames.add(displayName, Locale.getDefault());
        }
        return displayNames;
    }
   
    private DescriptionSet getDescriptions(Element e) {
        DescriptionSetImpl descriptions = new DescriptionSetImpl();
        NodeList descriptionNL = e.getElementsByTagName("description");
        for (int i = 0; i < descriptionNL.getLength(); i++) {
            Element descriptionE = (Element)descriptionNL.item(i);
            String description = XML.getElementText(descriptionE);
            descriptions.add(description, Locale.getDefault());
        }
        return descriptions;
    }
   
    private DistributableImpl getDistributable(Element e) {
        DistributableImpl distributable = null;
        NodeList distributableNL = e.getElementsByTagName("distributable");
        if (distributableNL.getLength() > 0) {
            distributable = new DistributableImpl();
        }
        return distributable;
    }
   
    private ParameterSet getParameters(Element e, String paramElementName) {
        ParameterSetImpl parameters = new ParameterSetImpl();
        NodeList contextParamNL = e.getElementsByTagName(paramElementName);
        for (int i = 0; i < contextParamNL.getLength(); i++) {
            Element contextParamE = (Element)contextParamNL.item(i);
            String paramName = XML.getChildElementText(contextParamE, "param-name");
            String paramValue = XML.getChildElementText(contextParamE, "param-value");
            String description = XML.getChildElementText(contextParamE, "description");
            ParameterImpl parameter = new ParameterImpl();
            parameter.setName(paramName);
            parameter.setValue(paramValue);
            parameter.setDescriptionSet(getDescriptions(contextParamE));
            parameters.add(parameter);
        }       
        return parameters;
    }
   
    private FilterImpl[] getFilters(Element e) {
        NodeList filterNL = e.getElementsByTagName("filter");
        FilterImpl[] filters = new FilterImpl[filterNL.getLength()];
        for (int i = 0; i < filterNL.getLength(); i++) {
            Element filterE = (Element)filterNL.item(i);
            IconImpl icon = getIcon(filterE);
            String filterName = XML.getChildElementText(filterE, "filter-name");
            DisplayNameSet displayNames = getDisplayNames(filterE);
            DescriptionSet descriptions = getDescriptions(filterE);
            String filterClass = XML.getChildElementText(filterE, "filter-class");
            ParameterSet initParameters = getParameters(filterE, "init-param");
            FilterImpl filter = new FilterImpl();
            filter.setIcon(icon);
            filter.setFilterName(filterName);
            filter.setDisplayNames(displayNames);
            filter.setDescriptions(descriptions);
            filter.setFilterClass(filterClass);
            filter.setInitParamteters(initParameters);
            filters[i]= filter;
        }       
        return filters;
    }
   
    private FilterMappingImpl[] getFilterMappings(Element e) {
        NodeList filterMappingNL = e.getElementsByTagName("filter-mapping");
        FilterMappingImpl[] filterMappings = new FilterMappingImpl[filterMappingNL.getLength()];
        for (int i = 0; i < filterMappingNL.getLength(); i++) {
            Element filterMappingE = (Element)filterMappingNL.item(i);
            String filterName = XML.getChildElementText(filterMappingE, "filter-name");
            String urlPattern = XML.getChildElementText(filterMappingE, "url-pattern");
            String servletName = XML.getChildElementText(filterMappingE, "servlet-name");
            FilterMappingImpl filterMapping = new FilterMappingImpl();
            filterMapping.setFilterName(filterName);
            filterMapping.setUrlPattern(urlPattern);
            filterMapping.setServletName(servletName);
            filterMappings[i] = filterMapping;
        }
        return filterMappings;
    }
   
    private ListenerImpl[] getListeners(Element e) {
        NodeList listenerNL = e.getElementsByTagName("listener");
        ListenerImpl[] listeners = new ListenerImpl[listenerNL.getLength()];
        for (int i = 0; i < listenerNL.getLength(); i++) {
            Element listenerE = (Element)listenerNL.item(i);
            String listenerClass = XML.getChildElementText(listenerE, "listener-class");
            ListenerImpl listener = new ListenerImpl();
            listener.setListenerClass(listenerClass);
            listeners[i] = listener;
        }
        return listeners;
    }
   
    private ServletMappingListImpl getServletMappings(Element e) {
        ServletMappingListImpl servletMappings = new ServletMappingListImpl();
        NodeList servletMappingNL = e.getElementsByTagName("servlet-mapping");
        for (int i = 0; i < servletMappingNL.getLength(); i++) {
            Element servletMappingE = (Element)servletMappingNL.item(i);
            String servletName = XML.getChildElementText(servletMappingE, "servlet-name");
            String urlPattern = XML.getChildElementText(servletMappingE, "url-pattern");
            ServletMappingImpl servletMapping = new ServletMappingImpl();
            servletMapping.setServletName(servletName);
            servletMapping.setUrlPattern(urlPattern);
            servletMappings.add(servletMapping);
        }
        return servletMappings;
    }

    private SessionConfigImpl getSessionConfig(Element e) { 
        SessionConfigImpl sessionConfig = null;
        NodeList sessionConfigNL = e.getElementsByTagName("session-config");
        if (sessionConfigNL.getLength() > 0) {
            sessionConfig = new SessionConfigImpl();
            sessionConfig.setSessionTimeout(XML.getChildElementText(e, "session-timeout"));
        }
        return sessionConfig;
    }
   
    private MimeMappingImpl[] getMimeMappings(Element e) { 
        NodeList mimeMappingNL = e.getElementsByTagName("mime-mapping");
        MimeMappingImpl[] mimeMappings = new MimeMappingImpl[mimeMappingNL.getLength()];
        for (int i = 0; i < mimeMappingNL.getLength(); i++) {
            Element mimeMappingE = (Element)mimeMappingNL.item(i);
            String extension = XML.getChildElementText(mimeMappingE, "extension");
            String mimeType = XML.getChildElementText(mimeMappingE, "mime-type");
            MimeMappingImpl mimeMapping = new MimeMappingImpl();
            mimeMapping.setExtension(extension);
            mimeMapping.setMimeType(mimeType);
            mimeMappings[i] = mimeMapping;
        }
        return mimeMappings;
    }   
   
    private WelcomeFileListImpl getWelcomeFiles(Element e) { 
        WelcomeFileListImpl welcomeFileList = null;
        NodeList welcomeFileListNL = e.getElementsByTagName("welcome-file-list");
        if (welcomeFileListNL.getLength() > 0) {
            welcomeFileList = new WelcomeFileListImpl();
            NodeList welcomeFileNL = e.getElementsByTagName("welcome-file");
            for (int i = 0; i < welcomeFileNL.getLength(); i++) {
                Element welcomeFileE = (Element)welcomeFileNL.item(i);
                welcomeFileList.add(XML.getElementText(welcomeFileE));
            }
        }
        return welcomeFileList;
    }
   
    private ErrorPageImpl[] getErrorPages(Element e) { 
        NodeList errorPageNL = e.getElementsByTagName("error-page");
        ErrorPageImpl[] errorPages = new ErrorPageImpl[errorPageNL.getLength()];
        for (int i = 0; i < errorPageNL.getLength(); i++) {
            Element errorPageE = (Element)errorPageNL.item(i);
            String errorCode = XML.getChildElementText(errorPageE, "error-code");
            String exceptionType = XML.getChildElementText(errorPageE, "exception-type");
            String location = XML.getChildElementText(errorPageE, "location");
            ErrorPageImpl errorPage = new ErrorPageImpl();
            errorPage.setErrorCode(errorCode);
            errorPage.setExceptionType(exceptionType);
            errorPage.setLocation(location);
            errorPages[i] = errorPage;
        }
        return errorPages;
    }
   
    private TagLibListImpl getTagLibs(Element e) { 
        TagLibListImpl tagLibs = new TagLibListImpl();
        NodeList tagLibNL = e.getElementsByTagName("taglib");
        for (int i = 0; i < tagLibNL.getLength(); i++) {
            Element tagLibE = (Element)tagLibNL.item(i);
            String tagLibUri = XML.getChildElementText(tagLibE, "taglib-uri");
            String tagLibLocation = XML.getChildElementText(tagLibE, "taglib-location");
            TagLibImpl tagLib = new TagLibImpl();
            tagLib.setTaglibUri(tagLibUri);
            tagLib.setTaglibLocation(tagLibLocation);
            tagLibs.add(tagLib);
        }
        return tagLibs;
    }
   
    private ResourceEnvRefImpl[] getResourceEnvRefs(Element e) {
        NodeList resourceEnvRefNL = e.getElementsByTagName("resource-env-ref");
        ResourceEnvRefImpl[] resourceEnvRefs = new ResourceEnvRefImpl[resourceEnvRefNL.getLength()];
        for (int i = 0; i < resourceEnvRefNL.getLength(); i++) {
            Element resourceEnvRefE = (Element)resourceEnvRefNL.item(i);
            DescriptionSet descriptions = getDescriptions(resourceEnvRefE);
            String resourceEnvRefName = XML.getChildElementText(resourceEnvRefE, "resource-env-ref-name");
            String resourceEnvRefType = XML.getChildElementText(resourceEnvRefE, "resource-env-ref-type");
            ResourceEnvRefImpl resourceEnvRef = new ResourceEnvRefImpl();
            resourceEnvRef.setDescriptions(descriptions);
            resourceEnvRef.setResourceEnvRefName(resourceEnvRefName);
            resourceEnvRef.setResourceEnvRefType(resourceEnvRefType);
            resourceEnvRefs[i] = resourceEnvRef;
        }
        return resourceEnvRefs;
    }
   
    private ResourceRefImpl[] getResourceRefs(Element e) {
        NodeList resourceRefNL = e.getElementsByTagName("resource-ref");
        ResourceRefImpl[] resourceRefs = new ResourceRefImpl[resourceRefNL.getLength()];
        for (int i = 0; i < resourceRefNL.getLength(); i++) {
            Element resourceRefE = (Element)resourceRefNL.item(i);
            DescriptionSet descriptions = getDescriptions(resourceRefE);
            String resRefName = XML.getChildElementText(resourceRefE, "res-ref-name");
            String resType = XML.getChildElementText(resourceRefE, "res-type");
            String resAuth = XML.getChildElementText(resourceRefE, "res-auth");
            String resSharingScope = XML.getChildElementText(resourceRefE, "res-sharing-scope");
            ResourceRefImpl resourceRef = new ResourceRefImpl();
            resourceRef.setDescriptions(descriptions);
            resourceRef.setResRefName(resRefName);
            resourceRef.setResType(resType);
            resourceRef.setResAuth(resAuth);
            resourceRef.setResSharingScope(resSharingScope);
            resourceRefs[i] = resourceRef;
        }
        return resourceRefs;
    }
   
    private SecurityConstraintImpl[] getSecurityConstraints(Element e) {
        NodeList securityConstraintNL = e.getElementsByTagName("security-constraint");
        SecurityConstraintImpl[] securityConstraints = new SecurityConstraintImpl[securityConstraintNL.getLength()];
        for (int i = 0; i < securityConstraintNL.getLength(); i++) {
            SecurityConstraintImpl securityConstraint = new SecurityConstraintImpl();
            Element securityConstraintE = (Element)securityConstraintNL.item(i);
            DisplayNameSet displayNames = getDisplayNames(securityConstraintE);
            securityConstraint.setDisplayNames(displayNames);
            NodeList webResourceCollectionNL = securityConstraintE.getElementsByTagName("web-resource-collection");
            WebResourceCollectionImpl[] webResourceCollections = new WebResourceCollectionImpl[webResourceCollectionNL.getLength()];
            for (int j = 0; j < webResourceCollectionNL.getLength(); j++) {
                WebResourceCollectionImpl webResourceCollection = new WebResourceCollectionImpl();
                Element webResourceCollectionE = (Element)webResourceCollectionNL.item(j);
                String webResourceName = XML.getChildElementText(webResourceCollectionE, "web-resource-name");
                DescriptionSet descriptions = getDescriptions(webResourceCollectionE);
                NodeList urlPatternNL = webResourceCollectionE.getElementsByTagName("url-pattern");
                String[] urlPatterns = new String[urlPatternNL.getLength()];
                for (int k = 0; k < urlPatternNL.getLength(); k++) {
                    Element urlPatternE = (Element)urlPatternNL.item(k);
                    urlPatterns[k] = XML.getElementText(urlPatternE);
                }
                NodeList httpMethodNL = webResourceCollectionE.getElementsByTagName("http-method");
                String[] httpMethods = new String[httpMethodNL.getLength()];
                for (int k = 0; k < httpMethodNL.getLength(); k++) {
                    Element httpMethodE = (Element)httpMethodNL.item(k);
                    httpMethods[k] = XML.getElementText(httpMethodE);
                }
                webResourceCollection.setWebResourceName(webResourceName);
                webResourceCollection.setDescriptions(descriptions);
                webResourceCollection.setUrlPatterns(urlPatterns);
                webResourceCollection.setHttpMethods(httpMethods);
                webResourceCollections[j] = webResourceCollection;
            }
            securityConstraint.setWebResourceCollections(webResourceCollections);
            NodeList authConstraintNL = securityConstraintE.getElementsByTagName("auth-constraint");
            if (authConstraintNL.getLength() > 0) {
                Element authConstraintE = (Element)authConstraintNL.item(0);
                AuthConstraintImpl authConstraint = new AuthConstraintImpl();
                DescriptionSet descriptions = getDescriptions(authConstraintE);
                NodeList roleNameNL = authConstraintE.getElementsByTagName("role-name");
                String[] roleNames = new String[roleNameNL.getLength()];
                for (int k = 0; k < roleNameNL.getLength(); k++) {
                    Element roleNameE = (Element)roleNameNL.item(k);
                    roleNames[k] = XML.getElementText(roleNameE);
                }
                authConstraint.setDescriptions(descriptions);
                authConstraint.setRoleNames(roleNames);
                securityConstraint.setAuthConstraint(authConstraint);       
            }
            NodeList userDataConstraintNL = securityConstraintE.getElementsByTagName("user-data-constraint");
            if (userDataConstraintNL.getLength() > 0) {
                Element userDataConstraintE = (Element)userDataConstraintNL.item(0);
                UserDataConstraintImpl userDataConstraint = new UserDataConstraintImpl();
                DescriptionSet descriptions = getDescriptions(userDataConstraintE);
                String transportGuarantee = XML.getChildElementText(userDataConstraintE, "transport-guarantee");              
                userDataConstraint.setDescriptions(descriptions);
                userDataConstraint.setTransportGuarantee(transportGuarantee);
                securityConstraint.setUserDataConstraint(userDataConstraint);
            }
            securityConstraints[i] = securityConstraint;
        }
        return securityConstraints;
    }
   
    private LoginConfigImpl getLoginConfig(Element e) {
        LoginConfigImpl loginConfig = null;
        NodeList loginConfigNL = e.getElementsByTagName("login-config");
        if (loginConfigNL.getLength() > 0) {
            Element loginConfigE = (Element)loginConfigNL.item(0);
            loginConfig = new LoginConfigImpl();
            loginConfig.setAuthMethod(XML.getChildElementText(loginConfigE, "auth-method"));
            loginConfig.setRealmName(XML.getChildElementText(loginConfigE, "realm-name"));
            NodeList formLoginConfigNL = loginConfigE.getElementsByTagName("form-login-config");
            if (formLoginConfigNL.getLength() > 0) {
                Element formLoginConfigE = (Element)formLoginConfigNL.item(0);
                FormLoginConfigImpl formLoginConfig = new FormLoginConfigImpl();
                formLoginConfig.setFormLoginPage(XML.getChildElementText(formLoginConfigE, "form-login-page"));
                formLoginConfig.setFormErrorPage(XML.getChildElementText(formLoginConfigE, "form-error-page"));
                loginConfig.setFormLoginConfig(formLoginConfig);
            }
        }
        return loginConfig;
    }
   
    private SecurityRoleSet getSecurityRoles(Element e) {
        SecurityRoleSetImpl securityRoles = new SecurityRoleSetImpl();
        NodeList securityRoleNL = e.getElementsByTagName("security-role");
        for (int i = 0; i < securityRoleNL.getLength(); i++) {
            Element securityRoleE = (Element)securityRoleNL.item(i);
            String roleName = XML.getChildElementText(securityRoleE, "role-name");
            String description = XML.getChildElementText(securityRoleE, "description");
            SecurityRoleImpl securityRole = new SecurityRoleImpl();
            securityRole.setDescription(description);
            securityRole.setRoleName(roleName);
            securityRoles.add(securityRole);
        }
        return securityRoles;
    }
   
    private EnvEntryImpl[] getEnvEntries(Element e) {
        NodeList envEntryNL = e.getElementsByTagName("env-entry");
        EnvEntryImpl[] envEntries = new EnvEntryImpl[envEntryNL.getLength()];
        for (int i = 0; i < envEntryNL.getLength(); i++) {
            Element envEntryE = (Element)envEntryNL.item(i);
            EnvEntryImpl envEntry = new EnvEntryImpl();
            envEntry.setDescriptions(getDescriptions(envEntryE));
            envEntry.setEnvEntryName(XML.getChildElementText(envEntryE, "env-entry-name"));
            envEntry.setEnvEntryValue(XML.getChildElementText(envEntryE, "env-entry-value"));
            envEntry.setEnvEntryType(XML.getChildElementText(envEntryE, "env-entry-type"));
            envEntries[i] = envEntry;
        }
        return envEntries;
    }

    private EjbRefImpl[] getEjbRefs(Element e) {
        NodeList ejbRefNL = e.getElementsByTagName("ejb-ref");
        EjbRefImpl[] ejbRefs = new EjbRefImpl[ejbRefNL.getLength()];
        for (int i = 0; i < ejbRefNL.getLength(); i++) {
            Element ejbRefE = (Element)ejbRefNL.item(i);
            EjbRefImpl ejbRef = new EjbRefImpl();
            ejbRef.setDescriptions(getDescriptions(ejbRefE));
            ejbRef.setEjbRefName(XML.getChildElementText(ejbRefE, "ejb-ref-name"));
            ejbRef.setEjbRefType(XML.getChildElementText(ejbRefE, "ejb-ref-type"));
            ejbRef.setHome(XML.getChildElementText(ejbRefE, "home"));
            ejbRef.setRemote(XML.getChildElementText(ejbRefE, "remote"));
            ejbRef.setEjbLink(XML.getChildElementText(ejbRefE, "ejb-link"));
            ejbRefs[i] = ejbRef;
        }
        return ejbRefs;
    }

    private EjbLocalRefImpl[] getEjbLocalRefs(Element e) {
        NodeList ejbRefNL = e.getElementsByTagName("ejb-local-ref");
        EjbLocalRefImpl[] ejbLocalRefs = new EjbLocalRefImpl[ejbRefNL.getLength()];
        for (int i = 0; i < ejbRefNL.getLength(); i++) {
            Element ejbLocalRefE = (Element)ejbRefNL.item(i);
            EjbLocalRefImpl ejbLocalRef = new EjbLocalRefImpl();
            ejbLocalRef.setDescriptions(getDescriptions(ejbLocalRefE));
            ejbLocalRef.setEjbRefName(XML.getChildElementText(ejbLocalRefE, "ejb-ref-name"));
            ejbLocalRef.setEjbRefType(XML.getChildElementText(ejbLocalRefE, "ejb-ref-type"));
            ejbLocalRef.setLocalHome(XML.getChildElementText(ejbLocalRefE, "local-home"));
            ejbLocalRef.setLocal(XML.getChildElementText(ejbLocalRefE, "local"));
            ejbLocalRef.setEjbLink(XML.getChildElementText(ejbLocalRefE, "ejb-link"));
            ejbLocalRefs[i] = ejbLocalRef;
        }
        return ejbLocalRefs;
    }
   
}
TOP

Related Classes of org.jasig.portal.container.binding.WebApplicationUnmarshaller

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.