[ http://nagoya.apache.org/jira/browse/GERONIMO-533?page=history ]

Jeremy Boynes reassigned GERONIMO-533:
--------------------------------------

    Assign To: Alan Cabrera

> Removed the TomcatSecureWebAppContext and placed code in TomcatWebAppContext
> ----------------------------------------------------------------------------
>
>          Key: GERONIMO-533
>          URL: http://nagoya.apache.org/jira/browse/GERONIMO-533
>      Project: Apache Geronimo
>         Type: Improvement
>   Components: Tomcat
>     Versions: 1.0-M4
>  Environment: MacOSX
>     Reporter: Jeff Genender
>     Assignee: Alan Cabrera
>     Priority: Minor
>  Attachments: tomcat.diff
>
> Removed the TomcatSecureWebAppContext and instead placed the security code in 
> TomcatWebAppContext, similarly to Jetty.  Updated the unit tests to reflect 
> this change.  Also changed the TomcatModuleBuilder to use the GbeanData 
> instead of the deprecated GBeanMbean.
> Diff is included below.
> Index: src/test/org/apache/geronimo/tomcat/AbstractWebModuleTest.java
> ===================================================================
> --- src/test/org/apache/geronimo/tomcat/AbstractWebModuleTest.java    
> (revision 123364)
> +++ src/test/org/apache/geronimo/tomcat/AbstractWebModuleTest.java    
> (working copy)
> @@ -132,7 +132,7 @@
>      // securityRoles, Map legacySecurityConstraintMap) throws Exception {
>      protected ObjectName setUpSecureAppContext(SecurityConstraint[] 
> securityConstraints, String[] securityRoles)
>              throws Exception {
> -        GBeanData app = new GBeanData(webModuleName, 
> TomcatSecureWebAppContext.GBEAN_INFO);
> +        GBeanData app = new GBeanData(webModuleName, 
> TomcatWebAppContext.GBEAN_INFO);
>          app.setAttribute("webAppRoot", new 
> File("target/var/catalina/webapps/war3/").toURI());
>          app.setAttribute("webClassPath", new URI[] {});
>          app.setAttribute("configurationBaseUrl", new 
> File("target/var/catalina/webapps/war3/WEB-INF/web.xml").toURL());
> Index: src/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java
> ===================================================================
> --- src/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java   
> (revision 123364)
> +++ src/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java   
> (working copy)
> @@ -38,7 +38,7 @@
>  import org.apache.geronimo.deployment.util.DeploymentUtil;
>  import org.apache.geronimo.gbean.GBeanInfo;
>  import org.apache.geronimo.gbean.GBeanInfoBuilder;
> -import org.apache.geronimo.gbean.jmx.GBeanMBean;
> +import org.apache.geronimo.gbean.GBeanData;
>  import org.apache.geronimo.j2ee.deployment.EARContext;
>  import org.apache.geronimo.j2ee.deployment.Module;
>  import org.apache.geronimo.j2ee.deployment.ModuleBuilder;
> @@ -97,9 +97,9 @@
>              throw new DeploymentException("Could not construct module name", 
> e);
>          }
>  
> -        GBeanMBean gbean;
> +        GBeanData gbean;
>          try {
> -            gbean = new GBeanMBean(TomcatWebAppContext.GBEAN_INFO);
> +            gbean = new GBeanData(webModuleName, 
> TomcatWebAppContext.GBEAN_INFO);
>  
>              gbean.setAttribute("webAppRoot", baseUri);
>              gbean.setAttribute("webClassPath", webClassPath);
> @@ -110,7 +110,7 @@
>          } catch (Exception e) {
>              throw new DeploymentException("Unable to initialize webapp 
> GBean", e);
>          }
> -        earContext.addGBean(webModuleName, gbean);
> +        earContext.addGBean(gbean);
>          return null;
>      }
>  
> Index: src/java/org/apache/geronimo/tomcat/TomcatSecureWebAppContext.java
> ===================================================================
> --- src/java/org/apache/geronimo/tomcat/TomcatSecureWebAppContext.java        
> (revision 123364)
> +++ src/java/org/apache/geronimo/tomcat/TomcatSecureWebAppContext.java        
> (working copy)
> @@ -1,142 +0,0 @@
> -/**
> - *
> - * Copyright 2003-2004 The Apache Software Foundation
> - *
> - *  Licensed under the Apache License, Version 2.0 (the "License");
> - *  you may not use this file except in compliance with the License.
> - *  You may obtain a copy of the License at
> - *
> - *     http://www.apache.org/licenses/LICENSE-2.0
> - *
> - *  Unless required by applicable law or agreed to in writing, software
> - *  distributed under the License is distributed on an "AS IS" BASIS,
> - *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> - *  See the License for the specific language governing permissions and
> - *  limitations under the License.
> - */
> -package org.apache.geronimo.tomcat;
> -
> -import java.net.URI;
> -import java.net.URL;
> -
> -import org.apache.catalina.Realm;
> -import org.apache.catalina.deploy.LoginConfig;
> -import org.apache.catalina.deploy.SecurityConstraint;
> -import org.apache.commons.logging.Log;
> -import org.apache.commons.logging.LogFactory;
> -
> -import org.apache.geronimo.gbean.GBeanInfo;
> -import org.apache.geronimo.gbean.GBeanInfoBuilder;
> -import org.apache.geronimo.gbean.GBeanLifecycle;
> -import org.apache.geronimo.gbean.WaitingException;
> -
> -
> -/**
> - * Wrapper for a WebApplicationContext that sets up its J2EE environment.
> - *
> - * @version $Rev: 56022 $ $Date: 2004-10-30 07:16:18 +0200 (Sat, 30 Oct 
> 2004) $
> - */
> -public class TomcatSecureWebAppContext extends TomcatWebAppContext 
> implements GBeanLifecycle {
> -
> -    private final static Log log = 
> LogFactory.getLog(org.apache.geronimo.tomcat.TomcatSecureWebAppContext.class);
> -
> -    private final LoginConfig loginConfig;
> -
> -    private final Realm tomcatRealm;
> -
> -    private final SecurityConstraint[] securityConstraints;
> -
> -    private final String[] securityRoles;
> -
> -    public TomcatSecureWebAppContext(URI webAppRoot, URI[] webClassPath, URL 
> configurationBaseUrl, String authMethod,
> -                                     String realmName, String loginPage, 
> String errorPage, Realm tomcatRealm,
> -                                     SecurityConstraint[] 
> securityConstraints, String[] securityRoles, TomcatContainer container) {
> -
> -        super(webAppRoot, webClassPath, configurationBaseUrl, container);
> -
> -        assert authMethod != null;
> -        assert realmName != null;
> -        assert loginPage != null;
> -        assert errorPage != null;
> -        assert tomcatRealm != null;
> -        assert securityConstraints != null;
> -        assert securityRoles != null;
> -
> -        this.tomcatRealm = tomcatRealm;
> -        this.securityConstraints = securityConstraints;
> -        this.securityRoles = securityRoles;
> -
> -        loginConfig = new LoginConfig();
> -        loginConfig.setAuthMethod(authMethod);
> -        loginConfig.setRealmName(realmName);
> -        loginConfig.setLoginPage(loginPage);
> -        loginConfig.setErrorPage(errorPage);
> -
> -    }
> -
> -    public void setContextProperties() {
> -        super.setContextProperties();
> -
> -        context.setRealm(tomcatRealm);
> -        context.setLoginConfig(loginConfig);
> -
> -        // Add the security constraints
> -        for (int i = 0; i < securityConstraints.length; i++) {
> -            SecurityConstraint sc = securityConstraints[i];
> -            context.addConstraint(sc);
> -        }
> -
> -        // Add the security roles
> -        for (int i = 0; i < securityRoles.length; i++) {
> -            context.addSecurityRole(securityRoles[i]);
> -        }
> -    }
> -
> -    public void doStart() throws WaitingException, Exception {
> -        super.doStart();
> -        log.info("TomcatSecureWebAppContext started");
> -    }
> -
> -    public void doStop() throws Exception {
> -        super.doStop();
> -        log.info("TomcatSecureWebAppContext stopped");
> -    }
> -
> -    public void doFail() {
> -        super.doFail();
> -        log.info("TomcatSecureWebAppContext failed");
> -    }
> -
> -    public static final GBeanInfo GBEAN_INFO;
> -
> -    static {
> -        GBeanInfoBuilder infoFactory = new GBeanInfoBuilder("Tomcat Secure 
> WebApplication Context", TomcatSecureWebAppContext.class);
> -
> -        infoFactory.addAttribute("webAppRoot", URI.class, true);
> -        infoFactory.addAttribute("webClassPath", URI[].class, true);
> -        infoFactory.addAttribute("configurationBaseUrl", URL.class, true);
> -
> -        infoFactory.addAttribute("path", String.class, true);
> -
> -        infoFactory.addAttribute("authMethod", String.class, true);
> -        infoFactory.addAttribute("realmName", String.class, true);
> -        infoFactory.addAttribute("loginPage", String.class, true);
> -        infoFactory.addAttribute("errorPage", String.class, true);
> -
> -        infoFactory.addAttribute("tomcatRealm", Realm.class, true);
> -        infoFactory.addAttribute("securityConstraints", 
> SecurityConstraint[].class, true);
> -        infoFactory.addAttribute("securityRoles", String[].class, true);
> -
> -        infoFactory.addReference("Container", TomcatContainer.class);
> -
> -        infoFactory.setConstructor(new String[]{"webAppRoot", 
> "webClassPath", "configurationBaseUrl", "authMethod",
> -                                                "realmName", "loginPage", 
> "errorPage", "tomcatRealm", "securityConstraints", "securityRoles",
> -                                                "Container"});
> -
> -        GBEAN_INFO = infoFactory.getBeanInfo();
> -    }
> -
> -    public static GBeanInfo getGBeanInfo() {
> -        return GBEAN_INFO;
> -    }
> -}
> Index: src/java/org/apache/geronimo/tomcat/TomcatWebAppContext.java
> ===================================================================
> --- src/java/org/apache/geronimo/tomcat/TomcatWebAppContext.java      
> (revision 123364)
> +++ src/java/org/apache/geronimo/tomcat/TomcatWebAppContext.java      
> (working copy)
> @@ -21,6 +21,9 @@
>  import java.net.URL;
>  
>  import org.apache.catalina.Context;
> +import org.apache.catalina.Realm;
> +import org.apache.catalina.deploy.SecurityConstraint;
> +import org.apache.catalina.deploy.LoginConfig;
>  import org.apache.commons.logging.Log;
>  import org.apache.commons.logging.LogFactory;
>  
> @@ -49,8 +52,19 @@
>  
>      private String docBase = null;
>  
> -    public TomcatWebAppContext(URI webAppRoot, URI[] webClassPath, URL 
> configurationBaseUrl, TomcatContainer container) {
> +    private final LoginConfig loginConfig;
>  
> +    private final Realm tomcatRealm;
> +
> +    private final SecurityConstraint[] securityConstraints;
> +
> +    private final String[] securityRoles;
> +
> +
> +    public TomcatWebAppContext(URI webAppRoot, URI[] webClassPath, URL 
> configurationBaseUrl, String authMethod,
> +                               String realmName, String loginPage, String 
> errorPage, Realm tomcatRealm,
> +                               SecurityConstraint[] securityConstraints, 
> String[] securityRoles,
> +                               TomcatContainer container) {
>          assert webAppRoot != null;
>          assert webClassPath != null;
>          assert configurationBaseUrl != null;
> @@ -60,6 +74,19 @@
>          this.container = container;
>  
>          this.setDocBase(this.webAppRoot.getPath());
> +        this.tomcatRealm = tomcatRealm;
> +        this.securityConstraints = securityConstraints;
> +        this.securityRoles = securityRoles;
> +
> +        if (authMethod != null){
> +            loginConfig = new LoginConfig();
> +            loginConfig.setAuthMethod(authMethod);
> +            loginConfig.setRealmName(realmName);
> +            loginConfig.setLoginPage(loginPage);
> +            loginConfig.setErrorPage(errorPage);
> +        } else {
> +            loginConfig = null;    
> +        }
>      }
>  
>      public String getDocBase() {
> @@ -73,6 +100,28 @@
>      public void setContextProperties() {
>          context.setDocBase(webAppRoot.getPath());
>          context.setPath(path);
> +
> +        //Security
> +        if (tomcatRealm != null)
> +            context.setRealm(tomcatRealm);
> +
> +        if (loginConfig != null)
> +            context.setLoginConfig(loginConfig);
> +
> +        // Add the security constraints
> +        if (securityConstraints != null) {
> +            for (int i = 0; i < securityConstraints.length; i++) {
> +                SecurityConstraint sc = securityConstraints[i];
> +                context.addConstraint(sc);
> +            }
> +        }
> +
> +        // Add the security roles
> +        if (securityRoles != null) {
> +            for (int i = 0; i < securityRoles.length; i++) {
> +                context.addSecurityRole(securityRoles[i]);
> +            }
> +        }
>      }
>  
>      public Context getContext() {
> @@ -109,7 +158,7 @@
>  
>      public void doFail() {
>          container.removeContext(this);
> -        
> +
>          log.info("TomcatWebAppContext failed");
>      }
>  
> @@ -124,9 +173,20 @@
>  
>          infoFactory.addAttribute("path", String.class, true);
>  
> +        infoFactory.addAttribute("authMethod", String.class, true);
> +        infoFactory.addAttribute("realmName", String.class, true);
> +        infoFactory.addAttribute("loginPage", String.class, true);
> +        infoFactory.addAttribute("errorPage", String.class, true);
> +
> +        infoFactory.addAttribute("tomcatRealm", Realm.class, true);
> +        infoFactory.addAttribute("securityConstraints", 
> SecurityConstraint[].class, true);
> +        infoFactory.addAttribute("securityRoles", String[].class, true);
> +
>          infoFactory.addReference("Container", TomcatContainer.class);
>  
> -        infoFactory.setConstructor(new String[]{"webAppRoot", 
> "webClassPath", "configurationBaseUrl", "Container"});
> +        infoFactory.setConstructor(new String[]{"webAppRoot", 
> "webClassPath", "configurationBaseUrl", "authMethod",
> +                                                "realmName", "loginPage", 
> "errorPage", "tomcatRealm",
> +                                                "securityConstraints", 
> "securityRoles", "Container"});
>  
>          GBEAN_INFO = infoFactory.getBeanInfo();
>      }

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://nagoya.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira

Reply via email to