You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ad...@apache.org on 2003/09/27 18:17:12 UTC

cvs commit: incubator-geronimo/modules/core/src/java/org/apache/geronimo/xml/deployment AbstractWebAppLoader.java

adc         2003/09/27 09:17:12

  Modified:    modules/core/src/java/org/apache/geronimo/xml/deployment
                        AbstractWebAppLoader.java
  Log:
  Filled in the meat for the method loadCommonElements().
  
  Revision  Changes    Path
  1.3       +514 -2    incubator-geronimo/modules/core/src/java/org/apache/geronimo/xml/deployment/AbstractWebAppLoader.java
  
  Index: AbstractWebAppLoader.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/core/src/java/org/apache/geronimo/xml/deployment/AbstractWebAppLoader.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- AbstractWebAppLoader.java	17 Sep 2003 01:47:14 -0000	1.2
  +++ AbstractWebAppLoader.java	27 Sep 2003 16:17:12 -0000	1.3
  @@ -57,8 +57,30 @@
   
   import org.apache.geronimo.deployment.model.web.AbstractWebApp;
   import org.apache.geronimo.deployment.model.web.ContextParam;
  +import org.apache.geronimo.deployment.model.web.SecurityConstraint;
  +import org.apache.geronimo.deployment.model.web.Filter;
  +import org.apache.geronimo.deployment.model.web.FilterMapping;
  +import org.apache.geronimo.deployment.model.web.Listener;
  +import org.apache.geronimo.deployment.model.web.Servlet;
  +import org.apache.geronimo.deployment.model.web.ServletMapping;
  +import org.apache.geronimo.deployment.model.web.SessionConfig;
  +import org.apache.geronimo.deployment.model.web.MimeMapping;
  +import org.apache.geronimo.deployment.model.web.WelcomeFileList;
  +import org.apache.geronimo.deployment.model.web.ErrorPage;
  +import org.apache.geronimo.deployment.model.web.JSPConfig;
  +import org.apache.geronimo.deployment.model.web.Taglib;
  +import org.apache.geronimo.deployment.model.web.JSPPropertyGroup;
  +import org.apache.geronimo.deployment.model.web.WebResourceCollection;
  +import org.apache.geronimo.deployment.model.web.AuthConstraint;
  +import org.apache.geronimo.deployment.model.web.UserDataConstraint;
  +import org.apache.geronimo.deployment.model.web.LoginConfig;
  +import org.apache.geronimo.deployment.model.web.FormLoginConfig;
  +import org.apache.geronimo.deployment.model.web.LocaleEncodingMappingList;
  +import org.apache.geronimo.deployment.model.web.LocaleEncodingMapping;
  +import org.apache.geronimo.deployment.model.j2ee.DisplayName;
   import org.w3c.dom.Element;
   
  +
   /**
    *
    *
  @@ -70,21 +92,511 @@
   
       protected void loadCommonElements(AbstractWebApp webApp, Element root) {
           webApp.setVersion(LoaderUtil.getAttribute(root, "version"));
  +
  +        J2EELoader.loadDescribable(root, webApp);
  +        J2EELoader.loadDisplayable(root, webApp);
           webApp.setDistributable(LoaderUtil.getBoolean(root, "distributable"));
           loadContextParams(webApp, root);
  -        // @todo the other common elements
  +        loadFilterTypes(webApp, root);
  +        loadFilterMappings(webApp, root);
  +        loadListeners(webApp, root);
  +        loadServlets(webApp, root);
  +        loadServletMappings(webApp, root);
  +        loadSessionConfigs(webApp, root);
  +        loadMimeMappings(webApp, root);
  +        loadWelcomeFileLists(webApp, root);
  +        loadErrorPages(webApp, root);
  +        loadJspConfigs(webApp, root);
  +        loadSecurityConstraints(webApp, root);
  +        loadLoginConfigs(webApp, root);
  +        webApp.setSecurityRole(J2EELoader.loadSecurityRoles(root));
  +        loadLocaleEncodingMappingLists(webApp, root);
       }
   
       private void loadContextParams(AbstractWebApp webApp, Element root) {
           Element[] elements = LoaderUtil.getChildren(root, "context-param");
           ContextParam[] params = new ContextParam[elements.length];
  +
           for (int i=0; i < elements.length; i++) {
               Element e = elements[i];
               ContextParam param = new ContextParam();
  +
               param.setParamName(LoaderUtil.getChildContent(e, "param-name"));
               param.setParamValue(LoaderUtil.getChildContent(e, "param-value"));
  +
               params[i] = param;
           }
           webApp.setContextParam(params);
  +    }
  +
  +    private void loadFilterTypes(AbstractWebApp webApp, Element root) {
  +        Element[] elements = LoaderUtil.getChildren(root, "filter");
  +        Filter[] filters = new Filter[elements.length];
  +
  +        for (int i=0; i < elements.length; i++) {
  +            Element e = elements[i];
  +            final Filter filter = new Filter();
  +
  +            J2EELoader.loadDisplayable(e, filter);
  +            J2EELoader.loadDescribable(e, filter);
  +            filter.setFilterName(LoaderUtil.getChildContent(e, "filter-name"));
  +            filter.setFilterClass(LoaderUtil.getChildContent(e, "filter-class"));
  +            filter.setInitParam(J2EELoader.loadInitParams(e));
  +
  +            filters[i] = filter;
  +        }
  +        webApp.setFilter(filters);
  +    }
  +
  +
  +    private void loadFilterMappings(AbstractWebApp webApp, Element root) {
  +        Element[] elements = LoaderUtil.getChildren(root, "filter-mapping");
  +        FilterMapping[] mappings = new FilterMapping[elements.length];
  +
  +        for (int i=0; i<elements.length; i++) {
  +            Element e = elements[i];
  +            FilterMapping mapping = new FilterMapping();
  +
  +            mapping.setFilterName(LoaderUtil.getChildContent(e, "filter-name"));
  +            mapping.setUrlPattern(LoaderUtil.getChildContent(e, "url-pattern"));
  +            mapping.setServletName(LoaderUtil.getChildContent(e, "servlet-name"));
  +            loadDispatcher(mapping, e);
  +
  +            mappings[i] = mapping;
  +        }
  +        webApp.setFilterMapping(mappings);
  +    }
  +
  +    private void loadDispatcher(FilterMapping mapping, Element root) {
  +        Element[] elements = LoaderUtil.getChildren(root, "dispatcher");
  +        String[] dispatchers = new String[elements.length];
  +
  +        for (int i=0; i<elements.length; i++) {
  +            Element e = elements[i];
  +            dispatchers[i] = LoaderUtil.getContent(e);
  +        }
  +        mapping.setDispatcher(dispatchers);
  +    }
  +
  +    private void loadListeners(AbstractWebApp webApp, Element root) {
  +        Element[] elements = LoaderUtil.getChildren(root, "listener");
  +        Listener[] listeners = new Listener[elements.length];
  +
  +        for (int i=0; i<elements.length; i++) {
  +            Element e = elements[i];
  +            Listener listener = new Listener();
  +
  +            J2EELoader.loadDisplayable(e, listener);
  +            J2EELoader.loadDescribable(e, listener);
  +            listener.setListenerClass(LoaderUtil.getChildContent(e, "listener-class"));
  +
  +            listeners[i] = listener;
  +        }
  +        webApp.setListener(listeners);
  +
  +    }
  +
  +    private void loadServlets(AbstractWebApp webApp, Element root) {
  +        Element[] elements = LoaderUtil.getChildren(root, "servlet");
  +        Servlet[] servlets = new Servlet[elements.length];
  +
  +        for (int i=0; i<elements.length; i++) {
  +            Element e = elements[i];
  +            final Servlet servlet = new Servlet();
  +
  +            J2EELoader.loadDisplayable(e, servlet);
  +            J2EELoader.loadDescribable(e, servlet);
  +            servlet.setServletName(LoaderUtil.getChildContent(e, "servlet-name"));
  +            servlet.setServletClass(LoaderUtil.getChildContent(e, "servlet-class"));
  +            servlet.setJspFile(LoaderUtil.getChildContent(e, "jsp-file"));
  +            servlet.setInitParam(J2EELoader.loadInitParams(e));
  +            String value = LoaderUtil.getChildContent(e, "load-on-startup");
  +            if (value != null) {
  +                servlet.setLoadOnStartup(new Integer(value));
  +            }
  +            servlet.setRunAs(J2EELoader.loadRunAs(e));
  +            servlet.setSecurityRoleRef(J2EELoader.loadSecurityRoleRefs(e));
  +
  +            servlets[i] = servlet;
  +        }
  +        webApp.setServlet(servlets);
  +    }
  +
  +    private void loadServletMappings(AbstractWebApp webApp, Element root) {
  +        Element[] elements = LoaderUtil.getChildren(root, "servlet-mapping");
  +        ServletMapping[] mappings = new ServletMapping[elements.length];
  +
  +        for (int i=0; i<elements.length; i++) {
  +            Element e = elements[i];
  +            ServletMapping mapping = new ServletMapping();
  +
  +            mapping.setServletName(LoaderUtil.getChildContent(e, "servlet-name"));
  +            mapping.setUrlPattern(LoaderUtil.getChildContent(e, "url-pattern"));
  +
  +            mappings[i] = mapping;
  +        }
  +        webApp.setServletMapping(mappings);
  +    }
  +
  +    private void loadSessionConfigs(AbstractWebApp webApp, Element root) {
  +        Element[] elements = LoaderUtil.getChildren(root, "session-config");
  +        SessionConfig[] sessionConfigs = new SessionConfig[elements.length];
  +
  +        for (int i=0; i<elements.length; i++) {
  +            Element e = elements[i];
  +            SessionConfig sessionConfig = new SessionConfig();
  +
  +            String value = LoaderUtil.getChildContent(e, "session-timeout");
  +            if (value != null) {
  +                sessionConfig.setSessionTimeout(new Integer(value));
  +            }
  +
  +            sessionConfigs[i] = sessionConfig;
  +        }
  +        webApp.setSessionConfig(sessionConfigs);
  +    }
  +
  +    private void loadMimeMappings(AbstractWebApp webApp, Element root) {
  +        Element[] elements = LoaderUtil.getChildren(root, "mime-mapping");
  +        MimeMapping[] mappings = new MimeMapping[elements.length];
  +
  +        for (int i=0; i<elements.length; i++) {
  +            Element e = elements[i];
  +            MimeMapping mapping = new MimeMapping();
  +
  +            mapping.setExtension(LoaderUtil.getChildContent(e, "extension"));
  +            mapping.setMimeType(LoaderUtil.getChildContent(e, "mime-type"));
  +
  +            mappings[i] = mapping;
  +        }
  +        webApp.setMimeMapping(mappings);
  +    }
  +
  +    private void loadWelcomeFileLists(AbstractWebApp webApp, Element root) {
  +        Element[] elements = LoaderUtil.getChildren(root, "welcome-file-list");
  +        WelcomeFileList[] fileLists = new WelcomeFileList[elements.length];
  +
  +        for (int i=0; i<elements.length; i++) {
  +            Element e = elements[i];
  +            WelcomeFileList fileList = new WelcomeFileList();
  +
  +            loadWelcomeFiles(fileList, e);
  +
  +            fileLists[i] = fileList;
  +        }
  +        webApp.setWelcomeFileList(fileLists);
  +    }
  +
  +    private void loadWelcomeFiles(WelcomeFileList fileList, Element root) {
  +        Element[] elements = LoaderUtil.getChildren(root, "welcome-file");
  +        String[] constraints = new String[elements.length];
  +
  +        for (int i=0; i<elements.length; i++) {
  +            constraints[i] = LoaderUtil.getContent(elements[i]);
  +        }
  +        fileList.setWelcomeFile(constraints);
  +    }
  +
  +    private void loadErrorPages(AbstractWebApp webApp, Element root) {
  +        Element[] elements = LoaderUtil.getChildren(root, "error-page");
  +        ErrorPage[] errorPages = new ErrorPage[elements.length];
  +
  +        for (int i=0; i<elements.length; i++) {
  +            Element e = elements[i];
  +            ErrorPage errorPage = new ErrorPage();
  +
  +            errorPage.setErrorCode(new Integer(LoaderUtil.getChildContent(e, "error-code")));
  +            errorPage.setExceptionType(LoaderUtil.getChildContent(e, "exception-type"));
  +            errorPage.setLocation(LoaderUtil.getChildContent(e, "location"));
  +
  +            errorPages[i] = errorPage;
  +        }
  +        webApp.setErrorPage(errorPages);
  +    }
  +
  +    private void loadJspConfigs(AbstractWebApp webApp, Element root) {
  +        Element[] elements = LoaderUtil.getChildren(root, "jsp-config");
  +        JSPConfig[] jspConfigs = new JSPConfig[elements.length];
  +
  +        for (int i=0; i<elements.length; i++) {
  +            Element e = elements[i];
  +            JSPConfig jspConfig = new JSPConfig();
  +
  +            loadTagLib(jspConfig, e);
  +            loadJspPropertyGroup(jspConfig, e);
  +
  +            jspConfigs[i] = jspConfig;
  +        }
  +        webApp.setJspConfig(jspConfigs);
  +    }
  +
  +    private void loadTagLib(JSPConfig jspConfig, Element root) {
  +        Element[] elements = LoaderUtil.getChildren(root, "taglib");
  +        Taglib[] taglibs = new Taglib[elements.length];
  +
  +        for (int i=0; i<elements.length; i++) {
  +            Element e = elements[i];
  +            Taglib taglib = new Taglib();
  +
  +            taglib.setTaglibUri(LoaderUtil.getChildContent(e, "taglib-uri"));
  +            taglib.setTaglibLocation(LoaderUtil.getChildContent(e, "taglib-location"));
  +
  +            taglibs[i] = taglib;
  +        }
  +        jspConfig.setTaglib(taglibs);
  +    }
  +
  +    private void loadJspPropertyGroup(JSPConfig jspConfig, Element root) {
  +        Element[] elements = LoaderUtil.getChildren(root, "jsp-property-group");
  +        JSPPropertyGroup[] jspPropertyGroups = new JSPPropertyGroup[elements.length];
  +
  +        for (int i=0; i<elements.length; i++) {
  +            Element e = elements[i];
  +            JSPPropertyGroup jspPropertyGroup = new JSPPropertyGroup();
  +
  +            J2EELoader.loadDisplayable(e, jspPropertyGroup);
  +            J2EELoader.loadDescribable(e, jspPropertyGroup);
  +            loadUrlPatterns(jspPropertyGroup, e);
  +            String value = LoaderUtil.getChildContent(e, "el-ignored");
  +            if (value != null) {
  +                jspPropertyGroup.setELIgnored(new Boolean(value));
  +            }
  +            value = LoaderUtil.getChildContent(e, "page-encoding");
  +            if (value != null) {
  +                jspPropertyGroup.setPageEncoding(value);
  +            }
  +            value = LoaderUtil.getChildContent(e, "scripting-invalid");
  +            if (value != null) {
  +                jspPropertyGroup.setScriptingInvalid(new Boolean(value));
  +            }
  +            value = LoaderUtil.getChildContent(e, "is-xml");
  +            if (value != null) {
  +                jspPropertyGroup.setXML(new Boolean(value));
  +            }
  +            loadIncludePrelude(jspPropertyGroup, e);
  +            loadIncludeCoda(jspPropertyGroup, e);
  +
  +            jspPropertyGroups[i] = jspPropertyGroup;
  +        }
  +        jspConfig.setJSPPropertyGroup(jspPropertyGroups);
  +    }
  +
  +    private void loadUrlPatterns(JSPPropertyGroup jspPropertyGroup, Element root) {
  +        Element[] elements = LoaderUtil.getChildren(root, "url-pattern");
  +        String[] patterns = new String[elements.length];
  +
  +        for (int i=0; i<elements.length; i++) {
  +            Element e = elements[i];
  +            patterns[i] = LoaderUtil.getContent(e);
  +        }
  +        jspPropertyGroup.setURLPattern(patterns);
  +    }
  +
  +    private void loadIncludePrelude(JSPPropertyGroup jspPropertyGroup, Element root) {
  +        Element[] elements = LoaderUtil.getChildren(root, "include-prelude");
  +        String[] includes = new String[elements.length];
  +
  +        for (int i=0; i<elements.length; i++) {
  +            Element e = elements[i];
  +            includes[i] = LoaderUtil.getContent(e);
  +        }
  +        jspPropertyGroup.setIncludePrelude(includes);
  +    }
  +
  +    private void loadIncludeCoda(JSPPropertyGroup jspPropertyGroup, Element root) {
  +        Element[] elements = LoaderUtil.getChildren(root, "include-coda");
  +        String[] includes = new String[elements.length];
  +
  +        for (int i=0; i<elements.length; i++) {
  +            Element e = elements[i];
  +            includes[i] = LoaderUtil.getContent(e);
  +        }
  +        jspPropertyGroup.setIncludeCoda(includes);
  +    }
  +
  +    private void loadSecurityConstraints(AbstractWebApp webApp, Element root) {
  +        Element[] elements = LoaderUtil.getChildren(root, "security-constraint");
  +        SecurityConstraint[] constraints = new SecurityConstraint[elements.length];
  +
  +        for (int i=0; i<elements.length; i++) {
  +            Element e = elements[i];
  +            SecurityConstraint constraint = new SecurityConstraint();
  +
  +            constraint.setDisplayName(loadDisplayable(e));
  +            loadWebResourceCollections(constraint, e);
  +            loadAuthConstraint(constraint, e);
  +            loadUserDataConstraint(constraint, e);
  +
  +            constraints[i] = constraint;
  +        }
  +        webApp.setSecurityConstraint(constraints);
  +    }
  +
  +    private static DisplayName[] loadDisplayable(Element parent) {
  +        Element[] roots = LoaderUtil.getChildren(parent, "display-name");
  +        DisplayName[] ds = new DisplayName[roots.length];
  +
  +        for(int i = 0; i < roots.length; i++) {
  +            Element root = roots[i];
  +            ds[i] = new DisplayName();
  +
  +            ds[i].setLang(root.getAttribute("lang"));
  +            ds[i].setContent(LoaderUtil.getContent(root));
  +        }
  +        return ds;
  +    }
  +
  +    private void loadWebResourceCollections(SecurityConstraint constraint, Element root) {
  +        Element[] elements = LoaderUtil.getChildren(root, "web-resource-collection");
  +        WebResourceCollection[] collections = new WebResourceCollection[elements.length];
  +
  +        for (int i=0; i<elements.length; i++) {
  +            Element e = elements[i];
  +            WebResourceCollection collection = new WebResourceCollection();
  +
  +            collection.setWebResourceName(LoaderUtil.getChildContent(e, "web-resource-name"));
  +            J2EELoader.loadDescribable(e, collection);
  +            loadUrlPatterns(collection, e);
  +            loadHttpMethods(collection, e);
  +
  +            collections[i] = collection;
  +        }
  +        constraint.setWebResourceCollection(collections);
  +    }
  +
  +    private void loadUrlPatterns(WebResourceCollection collection, Element root) {
  +        Element[] elements = LoaderUtil.getChildren(root, "url-pattern");
  +        String[] patterns = new String[elements.length];
  +
  +        for (int i=0; i<elements.length; i++) {
  +            Element e = elements[i];
  +            patterns[i] = LoaderUtil.getContent(e);
  +        }
  +        collection.setUrlPattern(patterns);
  +    }
  +
  +    private void loadHttpMethods(WebResourceCollection collection, Element root) {
  +        Element[] elements = LoaderUtil.getChildren(root, "http-method");
  +        String[] patterns = new String[elements.length];
  +
  +        for (int i=0; i<elements.length; i++) {
  +            Element e = elements[i];
  +            patterns[i] = LoaderUtil.getContent(e);
  +        }
  +        collection.setHttpMethod(patterns);
  +    }
  +
  +    private void loadAuthConstraint(SecurityConstraint securityConstraint, Element root) {
  +        Element element = LoaderUtil.getChild(root, "auth-constraint");
  +
  +        if (element != null) {
  +            AuthConstraint constraint = new AuthConstraint();
  +
  +            J2EELoader.loadDescribable(element, constraint);
  +            loadRoleNames(constraint, element);
  +
  +            securityConstraint.setAuthConstraint(constraint);
  +        }
  +    }
  +
  +    private void loadRoleNames(AuthConstraint constraint, Element root) {
  +        Element[] elements = LoaderUtil.getChildren(root, "role-name");
  +        String[] names = new String[elements.length];
  +
  +        for (int i=0; i<elements.length; i++) {
  +            Element e = elements[i];
  +            names[i] = LoaderUtil.getContent(e);
  +        }
  +        constraint.setRoleName(names);
  +    }
  +
  +    private void loadUserDataConstraint(SecurityConstraint securityConstraint, Element root) {
  +        Element element = LoaderUtil.getChild(root, "user-data-constraint");
  +
  +        if (element != null) {
  +            UserDataConstraint constraint = new UserDataConstraint();
  +
  +            J2EELoader.loadDescribable(element, constraint);
  +            constraint.setTransportGuarantee(LoaderUtil.getChildContent(element, "transport-guarantee"));
  +
  +            securityConstraint.setUserDataConstraint(constraint);
  +        }
  +    }
  +
  +    private void loadLoginConfigs(AbstractWebApp webApp, Element root) {
  +        Element[] elements = LoaderUtil.getChildren(root, "login-config");
  +        LoginConfig[] loginConfigs = new LoginConfig[elements.length];
  +
  +        for (int i=0; i<elements.length; i++) {
  +            Element e = elements[i];
  +            LoginConfig loginConfig = new LoginConfig();
  +
  +            loadAuthMethod(loginConfig, e);
  +            loadRealmName(loginConfig, e);
  +            loadFormLoginConfig(loginConfig, e);
  +
  +            loginConfigs[i] = loginConfig;
  +        }
  +        webApp.setLoginConfig(loginConfigs);
  +    }
  +
  +    private void loadAuthMethod(LoginConfig loginConfig, Element root) {
  +        Element element = LoaderUtil.getChild(root, "auth-method");
  +
  +        if (element != null) {
  +            loginConfig.setAuthMethod(LoaderUtil.getContent(element));
  +        }
  +    }
  +
  +    private void loadRealmName(LoginConfig loginConfig, Element root) {
  +        Element element = LoaderUtil.getChild(root, "realm-name");
  +
  +        if (element != null) {
  +            loginConfig.setRealmName(LoaderUtil.getContent(element));
  +        }
  +    }
  +
  +    private void loadFormLoginConfig(LoginConfig loginConfig, Element root) {
  +        Element element = LoaderUtil.getChild(root, "form-login-config");
  +
  +        if (element != null) {
  +            FormLoginConfig formLoginConfig = new FormLoginConfig();
  +
  +            formLoginConfig.setFormLoginPage(LoaderUtil.getChildContent(element, "form-login-page"));
  +            formLoginConfig.setFormErrorPage(LoaderUtil.getChildContent(element, "form-error-page"));
  +
  +            loginConfig.setFormLoginConfig(formLoginConfig);
  +        }
  +    }
  +
  +    private void loadLocaleEncodingMappingLists(AbstractWebApp webApp, Element root) {
  +        Element[] elements = LoaderUtil.getChildren(root, "locale-encoding-mapping-list");
  +        LocaleEncodingMappingList[] mappingLists = new LocaleEncodingMappingList[elements.length];
  +
  +        for (int i=0; i<elements.length; i++) {
  +            Element e = elements[i];
  +            LocaleEncodingMappingList mappingList = new LocaleEncodingMappingList();
  +
  +            loadLocaleEncodingMappings(mappingList, e);
  +
  +            mappingLists[i] = mappingList;
  +        }
  +        webApp.setLocaleEncodingMappingList(mappingLists);
  +    }
  +
  +    private void loadLocaleEncodingMappings(LocaleEncodingMappingList mappingList, Element root) {
  +        Element[] elements = LoaderUtil.getChildren(root, "locale-encoding-mapping");
  +        LocaleEncodingMapping[] mappings = new LocaleEncodingMapping[elements.length];
  +
  +        for (int i=0; i<elements.length; i++) {
  +            Element e = elements[i];
  +            LocaleEncodingMapping mapping = new LocaleEncodingMapping();
  +
  +            mapping.setLocale(LoaderUtil.getChildContent(e, "locale"));
  +            mapping.setEncoding(LoaderUtil.getChildContent(e, "encoding"));
  +
  +            mappings[i] = mapping;
  +        }
  +        mappingList.setLocaleEncodingMapping(mappings);
       }
   }