taylor      2004/05/07 13:34:23

  Modified:    portal/src/java/org/apache/jetspeed/tools/pamanager
                        FileSystemPAM.java
  Added:       portal/src/java/org/apache/jetspeed/tools/pamanager
                        WebDescriptorUtilities.java
  Log:
  Patch from Ate Douma to support web application security constraints

  

  PR:

  Obtained from:

  Submitted by: 

  Reviewed by:  

  CVS: ----------------------------------------------------------------------

  CVS: PR:

  CVS:   If this change addresses a PR in the problem report tracking

  CVS:   database, then enter the PR number(s) here.

  CVS: Obtained from:

  CVS:   If this change has been taken from another system, such as NCSA,

  CVS:   then name the system in this line, otherwise delete it.

  CVS: Submitted by:

  CVS:   If this code has been contributed to Apache by someone else; i.e.,

  CVS:   they sent us a patch or a new module, then include their name/email

  CVS:   address here. If this is your work then delete this line.

  CVS: Reviewed by:

  CVS:   If we are doing pre-commit code reviews and someone else has

  CVS:   reviewed your changes, include their name(s) here.

  CVS:   If you have not had it reviewed then delete this line.

  
  Revision  Changes    Path
  1.25      +15 -11    
jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/tools/pamanager/FileSystemPAM.java
  
  Index: FileSystemPAM.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/tools/pamanager/FileSystemPAM.java,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- FileSystemPAM.java        10 Mar 2004 17:17:01 -0000      1.24
  +++ FileSystemPAM.java        7 May 2004 20:34:23 -0000       1.25
  @@ -366,17 +366,21 @@
           {
               app.setApplicationType(MutablePortletApplication.WEBAPP);
           }
  -        //                                   // create the web application
  -        MutableWebApplication webapp = new WebApplicationDefinitionImpl();
  -        if (paName.startsWith("/"))
  -        {
  -            webapp.setContextRoot(paName);
  +
  +        String contextRoot;
  +        String webXMLPath = portletAppDir + "/WEB-INF/web.xml";
  +
  +        if (paName.startsWith("/")) {
  +            contextRoot = paName;
  +        } else {
  +            contextRoot = "/" + paName;
           }
  -        else
  -        {
  -            webapp.setContextRoot("/" + paName);
  -        }
  -        webapp.addDisplayName(Jetspeed.getDefaultLocale(), paName);
  +
  +        // load the web.xml
  +        log.info("Loading "+webXMLPath + " into memory....");
  +        MutableWebApplication webapp = (MutableWebApplication) 
WebDescriptorUtilities.loadDescriptor(webXMLPath, contextRoot, Jetspeed
  +                .getDefaultLocale(), paName);
  +
           app.setWebApplicationDefinition(webapp);
           
           try
  
  
  
  1.1                  
jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/tools/pamanager/WebDescriptorUtilities.java
  
  Index: WebDescriptorUtilities.java
  ===================================================================
  /*
   * Copyright 2000-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.jetspeed.tools.pamanager;
  
  import java.io.FileReader;
  import java.util.Locale;
  
  import org.apache.commons.digester.Digester;
  import org.apache.commons.logging.Log;
  import org.apache.commons.logging.LogFactory;
  import org.apache.jetspeed.om.common.servlet.MutableWebApplication;
  import org.apache.jetspeed.om.servlet.impl.SecurityRoleImpl;
  import org.apache.jetspeed.om.servlet.impl.WebApplicationDefinitionImpl;
  
  /**
   * Utilities for manipulating the web.xml deployment descriptor
   *
   * @author <a href="mailto:[EMAIL PROTECTED]">Ate Douma </a>*
   * @version $Id: WebDescriptorUtilities.java,v 1.1 2004/05/07 20:34:23 taylor Exp $
   */
  public class WebDescriptorUtilities {
  
      protected final static Log log = LogFactory.getLog(WebDescriptorUtilities.class);
  
      /**
       * Load a web.xml file into a Web Application tree
       *
       * @param pathWebXML
       *            The path to the web.xml file
       * @param contexRoot
       *            The context root of the web application
       * @param locale
       *            The locale of the display name of the web application
       * @param displayName
       *            The display name of the web application
       * @return The Java object tree representing web.xml
       */
      public static MutableWebApplication loadDescriptor(String pathWebXML, String 
contextRoot, Locale locale, String displayName)
              throws PortletApplicationException {
          try {
  
              FileReader reader = new java.io.FileReader(pathWebXML);
  
              // TODO move config to digester-rules.xml. Example:
              // http://www.onjava.com/pub/a/onjava/2002/10/23/digester.html?page=3
              Digester digester = new Digester();
              digester.setValidating(false);
              digester.addObjectCreate("web-app", WebApplicationDefinitionImpl.class);
  
              digester.addObjectCreate("web-app/security-role", 
SecurityRoleImpl.class);
              digester.addBeanPropertySetter("web-app/security-role/description", 
"description");
              digester.addBeanPropertySetter("web-app/security-role/role-name", 
"roleName");
              digester.addSetNext("web-app/security-role", "addSecurityRole");
  
              WebApplicationDefinitionImpl wd = (WebApplicationDefinitionImpl) 
digester.parse(reader);
  
              wd.setContextRoot(contextRoot);
              wd.addDescription(locale, displayName);
              return wd;
  
          } catch (Throwable t) {
              t.printStackTrace();
              String msg = "Could not digest \"" + pathWebXML + "\".  " + t.toString();
              log.error(msg, t);
              throw new PortletApplicationException(msg, t);
          }
      }
  }
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to