You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by xu...@apache.org on 2010/05/01 13:51:08 UTC

svn commit: r939982 [2/3] - in /geronimo/server/trunk: framework/modules/ framework/modules/geronimo-security/src/main/java/org/apache/geronimo/security/jacc/ framework/modules/geronimo-security/src/main/java/org/apache/geronimo/security/jacc/mappingpr...

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ResourceEnvRefMergeHandler.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ResourceEnvRefMergeHandler.java?rev=939982&r1=939981&r2=939982&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ResourceEnvRefMergeHandler.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ResourceEnvRefMergeHandler.java Sat May  1 11:51:06 2010
@@ -22,8 +22,8 @@ import org.apache.geronimo.web25.deploym
 import org.apache.geronimo.web25.deployment.merge.MergeContext;
 import org.apache.geronimo.web25.deployment.merge.MergeItem;
 import org.apache.geronimo.web25.deployment.utils.WebDeploymentMessageUtils;
-import org.apache.geronimo.xbeans.javaee6.ResourceEnvRefType;
 import org.apache.geronimo.xbeans.javaee6.InjectionTargetType;
+import org.apache.geronimo.xbeans.javaee6.ResourceEnvRefType;
 import org.apache.geronimo.xbeans.javaee6.WebAppType;
 import org.apache.geronimo.xbeans.javaee6.WebFragmentType;
 

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ResourceRefMergeHandler.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ResourceRefMergeHandler.java?rev=939982&r1=939981&r2=939982&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ResourceRefMergeHandler.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ResourceRefMergeHandler.java Sat May  1 11:51:06 2010
@@ -22,8 +22,8 @@ import org.apache.geronimo.web25.deploym
 import org.apache.geronimo.web25.deployment.merge.MergeContext;
 import org.apache.geronimo.web25.deployment.merge.MergeItem;
 import org.apache.geronimo.web25.deployment.utils.WebDeploymentMessageUtils;
-import org.apache.geronimo.xbeans.javaee6.ResourceRefType;
 import org.apache.geronimo.xbeans.javaee6.InjectionTargetType;
+import org.apache.geronimo.xbeans.javaee6.ResourceRefType;
 import org.apache.geronimo.xbeans.javaee6.WebAppType;
 import org.apache.geronimo.xbeans.javaee6.WebFragmentType;
 

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServiceRefMergeHandler.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServiceRefMergeHandler.java?rev=939982&r1=939981&r2=939982&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServiceRefMergeHandler.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServiceRefMergeHandler.java Sat May  1 11:51:06 2010
@@ -22,8 +22,8 @@ import org.apache.geronimo.web25.deploym
 import org.apache.geronimo.web25.deployment.merge.MergeContext;
 import org.apache.geronimo.web25.deployment.merge.MergeItem;
 import org.apache.geronimo.web25.deployment.utils.WebDeploymentMessageUtils;
-import org.apache.geronimo.xbeans.javaee6.ServiceRefType;
 import org.apache.geronimo.xbeans.javaee6.InjectionTargetType;
+import org.apache.geronimo.xbeans.javaee6.ServiceRefType;
 import org.apache.geronimo.xbeans.javaee6.WebAppType;
 import org.apache.geronimo.xbeans.javaee6.WebFragmentType;
 

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMappingMergeHandler.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMappingMergeHandler.java?rev=939982&r1=939981&r2=939982&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMappingMergeHandler.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMappingMergeHandler.java Sat May  1 11:51:06 2010
@@ -19,6 +19,7 @@ package org.apache.geronimo.web25.deploy
 
 import java.util.ArrayList;
 import java.util.List;
+
 import org.apache.geronimo.common.DeploymentException;
 import org.apache.geronimo.web25.deployment.merge.ElementSource;
 import org.apache.geronimo.web25.deployment.merge.MergeContext;

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMergeHandler.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMergeHandler.java?rev=939982&r1=939981&r2=939982&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMergeHandler.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/webfragment/ServletMergeHandler.java Sat May  1 11:51:06 2010
@@ -19,6 +19,7 @@ package org.apache.geronimo.web25.deploy
 
 import java.util.ArrayList;
 import java.util.List;
+
 import org.apache.geronimo.common.DeploymentException;
 import org.apache.geronimo.web25.deployment.merge.MergeContext;
 import org.apache.geronimo.xbeans.javaee6.ServletType;

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/security/AuthenticationWrapper.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/security/AuthenticationWrapper.java?rev=939982&r1=939981&r2=939982&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/security/AuthenticationWrapper.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/security/AuthenticationWrapper.java Sat May  1 11:51:06 2010
@@ -21,9 +21,9 @@
 package org.apache.geronimo.web25.deployment.security;
 
 import org.apache.geronimo.xbeans.geronimo.jaspi.JaspiAuthModuleType;
-import org.apache.geronimo.xbeans.geronimo.jaspi.JaspiServerAuthContextType;
-import org.apache.geronimo.xbeans.geronimo.jaspi.JaspiServerAuthConfigType;
 import org.apache.geronimo.xbeans.geronimo.jaspi.JaspiConfigProviderType;
+import org.apache.geronimo.xbeans.geronimo.jaspi.JaspiServerAuthConfigType;
+import org.apache.geronimo.xbeans.geronimo.jaspi.JaspiServerAuthContextType;
 
 /**
  * Wrapper interface for jetty and tomcat Authentication elemens.  Need jaxb :-)

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/test/java/org/apache/geronimo/web/deployment/GenericToSpecificPlanConverterTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/test/java/org/apache/geronimo/web/deployment/GenericToSpecificPlanConverterTest.java?rev=939982&r1=939981&r2=939982&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/test/java/org/apache/geronimo/web/deployment/GenericToSpecificPlanConverterTest.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/test/java/org/apache/geronimo/web/deployment/GenericToSpecificPlanConverterTest.java Sat May  1 11:51:06 2010
@@ -25,6 +25,7 @@ import java.util.Map;
 import javax.xml.namespace.QName;
 
 import junit.framework.TestCase;
+
 import org.apache.geronimo.deployment.xmlbeans.XmlBeansUtil;
 import org.apache.geronimo.schema.ElementConverter;
 import org.apache.geronimo.schema.NamespaceElementConverter;

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/test/java/org/apache/geronimo/web/deployment/WebAppDConfigTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/test/java/org/apache/geronimo/web/deployment/WebAppDConfigTest.java?rev=939982&r1=939981&r2=939982&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/test/java/org/apache/geronimo/web/deployment/WebAppDConfigTest.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/test/java/org/apache/geronimo/web/deployment/WebAppDConfigTest.java Sat May  1 11:51:06 2010
@@ -26,6 +26,7 @@ import javax.enterprise.deploy.model.DDB
 import javax.enterprise.deploy.spi.DeploymentConfiguration;
 
 import junit.framework.TestCase;
+
 import org.apache.geronimo.deployment.tools.loader.WebDeployable;
 import org.apache.geronimo.kernel.osgi.MockBundle;
 import org.osgi.framework.Bundle;

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/test/java/org/apache/geronimo/web25/deployment/SchemaConversionTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/test/java/org/apache/geronimo/web25/deployment/SchemaConversionTest.java?rev=939982&r1=939981&r2=939982&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/test/java/org/apache/geronimo/web25/deployment/SchemaConversionTest.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/test/java/org/apache/geronimo/web25/deployment/SchemaConversionTest.java Sat May  1 11:51:06 2010
@@ -18,23 +18,24 @@
 package org.apache.geronimo.web25.deployment;
 
 import java.net.URL;
-import java.util.List;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.List;
 import java.util.jar.JarFile;
 
-import org.apache.geronimo.kernel.repository.Environment;
-import org.apache.geronimo.testsupport.XmlBeansTestSupport;
-import org.apache.geronimo.j2ee.deployment.Module;
-import org.apache.geronimo.j2ee.deployment.EARContext;
+import org.apache.geronimo.common.DeploymentException;
+import org.apache.geronimo.deployment.ModuleIDBuilder;
 import org.apache.geronimo.gbean.AbstractName;
-import org.apache.geronimo.kernel.Naming;
+import org.apache.geronimo.j2ee.deployment.EARContext;
+import org.apache.geronimo.j2ee.deployment.Module;
 import org.apache.geronimo.kernel.Kernel;
-import org.apache.geronimo.deployment.ModuleIDBuilder;
-import org.apache.geronimo.common.DeploymentException;
-import org.apache.xmlbeans.XmlObject;
+import org.apache.geronimo.kernel.Naming;
+import org.apache.geronimo.kernel.repository.Environment;
+import org.apache.geronimo.schema.SchemaConversionUtils;
+import org.apache.geronimo.testsupport.XmlBeansTestSupport;
 import org.apache.xmlbeans.XmlException;
+import org.apache.xmlbeans.XmlObject;
 import org.apache.xmlbeans.XmlOptions;
 import org.osgi.framework.Bundle;
 
@@ -51,14 +52,14 @@ public class SchemaConversionTest extend
         URL srcXml = classLoader.getResource("javaee_5schema/web-2-25.xml");
         URL expectedOutputXml = classLoader.getResource("javaee_6schema/web-2-30.xml");
         XmlObject xmlObject = XmlObject.Factory.parse(srcXml, options);
-        xmlObject = webModuleBuilder.convertToServletSchema(xmlObject);
+        xmlObject = SchemaConversionUtils.convertToServletSchema(xmlObject);
         XmlObject expected = XmlObject.Factory.parse(expectedOutputXml);
         log.debug(xmlObject.toString());
         log.debug(expected.toString());
         List problems = new ArrayList();
         boolean ok = compareXmlObjects(xmlObject, expected, problems);
         assertTrue("Differences: " + problems, ok);
-        xmlObject = webModuleBuilder.convertToServletSchema(xmlObject);
+        xmlObject = SchemaConversionUtils.convertToServletSchema(xmlObject);
         boolean ok2 = compareXmlObjects(xmlObject, expected, problems);
         assertTrue("Differences: " + problems, ok2);
     }
@@ -67,14 +68,14 @@ public class SchemaConversionTest extend
         URL srcXml = classLoader.getResource("j2ee_1_4schema/web-2-24.xml");
         URL expectedOutputXml = classLoader.getResource("javaee_6schema/web-2-30.xml");
         XmlObject xmlObject = XmlObject.Factory.parse(srcXml, options);
-        xmlObject = webModuleBuilder.convertToServletSchema(xmlObject);
+        xmlObject = SchemaConversionUtils.convertToServletSchema(xmlObject);
         XmlObject expected = XmlObject.Factory.parse(expectedOutputXml);
         log.debug(xmlObject.toString());
         log.debug(expected.toString());
         List problems = new ArrayList();
         boolean ok = compareXmlObjects(xmlObject, expected, problems);
         assertTrue("Differences: " + problems, ok);
-        xmlObject = webModuleBuilder.convertToServletSchema(xmlObject);
+        xmlObject = SchemaConversionUtils.convertToServletSchema(xmlObject);
         boolean ok2 = compareXmlObjects(xmlObject, expected, problems);
         assertTrue("Differences: " + problems, ok2);
     }
@@ -83,14 +84,14 @@ public class SchemaConversionTest extend
         URL srcXml = classLoader.getResource("j2ee_1_3dtd/web-23.xml");
         URL expectedOutputXml = classLoader.getResource("j2ee_1_3dtd/web-30.xml");
         XmlObject xmlObject = XmlObject.Factory.parse(srcXml);
-        xmlObject = webModuleBuilder.convertToServletSchema(xmlObject);
+        xmlObject = SchemaConversionUtils.convertToServletSchema(xmlObject);
         XmlObject expected = XmlObject.Factory.parse(expectedOutputXml);
         log.debug(xmlObject.toString());
         log.debug(expected.toString());
         List problems = new ArrayList();
         boolean ok = compareXmlObjects(xmlObject, expected, problems);
         assertTrue("Differences: " + problems, ok);
-        xmlObject = webModuleBuilder.convertToServletSchema(xmlObject);
+        xmlObject = SchemaConversionUtils.convertToServletSchema(xmlObject);
         boolean ok2 = compareXmlObjects(xmlObject, expected, problems);
         assertTrue("Differences: " + problems, ok2);
     }
@@ -99,13 +100,13 @@ public class SchemaConversionTest extend
         URL srcXml = classLoader.getResource("j2ee_1_3dtd/web-1-23.xml");
         URL expectedOutputXml = classLoader.getResource("j2ee_1_3dtd/web-1-30.xml");
         XmlObject xmlObject = XmlObject.Factory.parse(srcXml);
-        xmlObject = webModuleBuilder.convertToServletSchema(xmlObject);
+        xmlObject = SchemaConversionUtils.convertToServletSchema(xmlObject);
 //        log.debug(xmlObject.toString());
         XmlObject expected = XmlObject.Factory.parse(expectedOutputXml);
         List problems = new ArrayList();
         boolean ok = compareXmlObjects(xmlObject, expected, problems);
         assertTrue("Differences: " + problems, ok);
-        xmlObject = webModuleBuilder.convertToServletSchema(xmlObject);
+        xmlObject = SchemaConversionUtils.convertToServletSchema(xmlObject);
         boolean ok2 = compareXmlObjects(xmlObject, expected, problems);
         assertTrue("Differences: " + problems, ok2);
     }
@@ -114,14 +115,14 @@ public class SchemaConversionTest extend
         URL srcXml = classLoader.getResource("j2ee_1_2dtd/web-1-22.xml");
         URL expectedOutputXml = classLoader.getResource("j2ee_1_2dtd/web-1-30.xml");
         XmlObject xmlObject = XmlObject.Factory.parse(srcXml);
-        xmlObject = webModuleBuilder.convertToServletSchema(xmlObject);
+        xmlObject = SchemaConversionUtils.convertToServletSchema(xmlObject);
         XmlObject expected = XmlObject.Factory.parse(expectedOutputXml);
 //        log.debug(xmlObject.toString());
 //        log.debug(expected.toString());
         List problems = new ArrayList();
         boolean ok = compareXmlObjects(xmlObject, expected, problems);
         assertTrue("Differences: " + problems, ok);
-        xmlObject = webModuleBuilder.convertToServletSchema(xmlObject);
+        xmlObject = SchemaConversionUtils.convertToServletSchema(xmlObject);
         boolean ok2 = compareXmlObjects(xmlObject, expected, problems);
         assertTrue("Differences: " + problems, ok2);
     }
@@ -130,7 +131,7 @@ public class SchemaConversionTest extend
         URL srcXml = classLoader.getResource("javaee_6schema/web-1-30.xml");
         XmlObject xmlObject = XmlObject.Factory.parse(srcXml);
         try {
-            webModuleBuilder.convertToServletSchema(xmlObject);
+            SchemaConversionUtils.convertToServletSchema(xmlObject);
             fail("doc src/test-data/javaee_5schema/web-1-30.xml is invalid, should not have validated");
         } catch (XmlException e) {
             //expected
@@ -140,7 +141,7 @@ public class SchemaConversionTest extend
     public void testParseWeb30() throws Exception {
         URL srcXml = classLoader.getResource("javaee_6schema/web-2-30.xml");
         XmlObject xmlObject = XmlObject.Factory.parse(srcXml);
-        webModuleBuilder.convertToServletSchema(xmlObject);
+        SchemaConversionUtils.convertToServletSchema(xmlObject);
     }
 
     private static class WebModuleBuilder extends AbstractWebModuleBuilder {

Added: geronimo/server/trunk/plugins/j2ee/geronimo-web/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web/pom.xml?rev=939982&view=auto
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web/pom.xml (added)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web/pom.xml Sat May  1 11:51:06 2010
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You 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.
+-->
+
+<!-- $Rev$ $Date$ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.geronimo.plugins</groupId>
+        <artifactId>j2ee</artifactId>
+        <version>3.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>org.apache.geronimo.modules</groupId>
+    <artifactId>geronimo-web</artifactId>
+    <packaging>bundle</packaging>
+    <name>Geronimo Plugins, J2EE :: Web</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.geronimo.framework</groupId>
+            <artifactId>geronimo-security</artifactId>
+            <version>${version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.geronimo.modules</groupId>
+            <artifactId>geronimo-j2ee-schema</artifactId>
+            <version>${version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.ops4j.pax.logging</groupId>
+            <artifactId>pax-logging-api</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-servlet_3.0_spec</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.geronimo.modules</groupId>
+            <artifactId>geronimo-j2ee</artifactId>
+            <version>${version}</version>
+        </dependency>
+
+    </dependencies>
+    
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>xmlbeans-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <configuration>
+                    <instructions>                       
+                        <DynamicImport-Package>schemaorg_apache_xmlbeans.*</DynamicImport-Package>
+                        <Import-Package>
+                            org.apache.geronimo.xbeans.javaee.impl,
+                            org.apache.geronimo.xbeans.javaee,
+                            *
+                        </Import-Package>
+                        <!--<_versionpolicy>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy>
+                        org.apache.geronimo.xbeans.javaee.impl,
+                            org.apache.geronimo.xbeans.javaee,
+                            org.apache.geronimo.xbeans.persistence.impl,
+                            org.apache.geronimo.xbeans.persistence,
+                            org.apache.geronimo.xbeans.j2ee.impl,
+                            org.apache.geronimo.xbeans.j2ee,
+                            org.w3.xml.x1998.namespace.impl,
+                            org.w3.xml.x1998.namespace,
+                            org.apache.geronimo.deployment.xbeans.impl,
+                            org.apache.geronimo.deployment.javabean.xbeans.impl,
+                            org.apache.geronimo.deployment.xbeans,
+                            org.apache.geronimo.deployment.javabean.xbeans,
+                            org.apache.geronimo.deployment.dconfigbean,
+                            org.apache.geronimo.deployment.service,
+                            org.apache.geronimo.deployment.service.jsr88,
+                            org.apache.xmlbeans.impl.schema;version="2.4",
+                            org.apache.geronimo.xbeans.geronimo.j2ee,
+                            org.apache.geronimo.xbeans.geronimo.j2ee.impl,
+                            org.apache.geronimo.j2ee.deployment,
+                            org.apache.geronimo.j2ee.deployment.annotation,
+                            org.apache.geronimo.j2ee.jsr88,
+                            org.apache.geronimo.xbeans.geronimo.naming,
+                            org.apache.geronimo.xbeans.geronimo.naming.impl,
+                            org.apache.geronimo.naming.deployment,
+                            org.apache.geronimo.naming.deployment.jsr88,
+                            org.apache.geronimo.xbeans.geronimo.jaspi,
+                            org.apache.geronimo.xbeans.geronimo.jaspi.impl,
+                        -->
+                    </instructions>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>
+

Propchange: geronimo/server/trunk/plugins/j2ee/geronimo-web/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/server/trunk/plugins/j2ee/geronimo-web/pom.xml
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/server/trunk/plugins/j2ee/geronimo-web/pom.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebAttributeName.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebAttributeName.java?rev=939982&view=auto
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebAttributeName.java (added)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebAttributeName.java Sat May  1 11:51:06 2010
@@ -0,0 +1,25 @@
+/**
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You 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.web;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public enum WebAttributeName {
+    META_COMPLETE, ORDERED_LIBS, SCHEMA_VERSION, SERVLET_CONTAINER_INITIALIZERS;
+}

Propchange: geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebAttributeName.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebAttributeName.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/WebAttributeName.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/security/HTTPMethods.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/security/HTTPMethods.java?rev=939982&r1=939221&r2=939982&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/security/HTTPMethods.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/security/HTTPMethods.java Sat May  1 11:51:06 2010
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.geronimo.web25.deployment.security;
+package org.apache.geronimo.web.security;
 
 import java.util.HashSet;
 import java.util.Set;

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/security/SpecSecurityBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/security/SpecSecurityBuilder.java?rev=939982&r1=939221&r2=939982&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/security/SpecSecurityBuilder.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/security/SpecSecurityBuilder.java Sat May  1 11:51:06 2010
@@ -17,11 +17,13 @@
  * under the License.
  */
 
-package org.apache.geronimo.web25.deployment.security;
+package org.apache.geronimo.web.security;
 
+import java.net.URL;
 import java.security.Permission;
 import java.security.PermissionCollection;
 import java.security.Permissions;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -33,22 +35,43 @@ import javax.security.jacc.PolicyContext
 import javax.security.jacc.WebResourcePermission;
 import javax.security.jacc.WebRoleRefPermission;
 import javax.security.jacc.WebUserDataPermission;
-
+import javax.servlet.HttpMethodConstraintElement;
+import javax.servlet.Servlet;
+import javax.servlet.ServletSecurityElement;
+import javax.servlet.annotation.HttpConstraint;
+import javax.servlet.annotation.HttpMethodConstraint;
+import javax.servlet.annotation.ServletSecurity;
+import javax.servlet.annotation.ServletSecurity.TransportGuarantee;
+
+import org.apache.geronimo.deployment.xmlbeans.XmlBeansUtil;
+import org.apache.geronimo.kernel.util.JarUtils;
+import org.apache.geronimo.schema.SchemaConversionUtils;
 import org.apache.geronimo.security.jacc.ComponentPermissions;
+import org.apache.geronimo.xbeans.javaee6.AuthConstraintType;
 import org.apache.geronimo.xbeans.javaee6.RoleNameType;
 import org.apache.geronimo.xbeans.javaee6.SecurityConstraintType;
 import org.apache.geronimo.xbeans.javaee6.SecurityRoleRefType;
 import org.apache.geronimo.xbeans.javaee6.SecurityRoleType;
+import org.apache.geronimo.xbeans.javaee6.ServletMappingType;
 import org.apache.geronimo.xbeans.javaee6.ServletType;
 import org.apache.geronimo.xbeans.javaee6.UrlPatternType;
+import org.apache.geronimo.xbeans.javaee6.WebAppDocument;
 import org.apache.geronimo.xbeans.javaee6.WebAppType;
 import org.apache.geronimo.xbeans.javaee6.WebResourceCollectionType;
+import org.apache.xbean.osgi.bundle.util.BundleUtils;
+import org.apache.xmlbeans.XmlException;
+import org.apache.xmlbeans.XmlObject;
+import org.osgi.framework.Bundle;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * @version $Rev$ $Date$
  */
 public class SpecSecurityBuilder {
 
+    private static final Logger logger = LoggerFactory.getLogger(SpecSecurityBuilder.class);
+
     private final Set<String> securityRoles = new HashSet<String>();
 
     private final Map<String, URLPattern> uncheckedPatterns = new HashMap<String, URLPattern>();
@@ -67,15 +90,159 @@ public class SpecSecurityBuilder {
 
     private final RecordingPolicyConfiguration policyConfiguration = new RecordingPolicyConfiguration(true);
 
-    public ComponentPermissions buildSpecSecurityConfig(WebAppType webApp) {
-        collectRoleNames(webApp.getSecurityRoleArray());
+    /**
+     * webApp is xmlbean object of the initial web.xml ( May be merged all the web-fragment.xml files)
+     */
+    private WebAppType initialWebApp;
+
+    private Bundle bundle;
+
+    private boolean annotationScanRequired;
+
+    private Set<String> urlPatternsConfiguredInDeploymentPlans = new HashSet<String>();
+
+    /**
+     *   dynamicSecurityWebApp contains all the servlet security constraints configured by ServletRegistration.Dynamic interface
+     */
+    private WebAppType dynamicSecurityWebApp;
+
+    /**
+     * annotationSecurityWebApp contains all the servlet security constraints configured by ServletConstraint annotation
+     */
+    private WebAppType annotationSecurityWebApp;
+
+    public SpecSecurityBuilder(WebAppType webApp) {
+        this(webApp, null, false);
+    }
+
+    public SpecSecurityBuilder(WebAppType initialWebApp, Bundle bundle, boolean annotationScanRequired) {
+        this.initialWebApp = initialWebApp;
+        if (annotationScanRequired && bundle == null) {
+            throw new IllegalArgumentException("Bundle parameter could not be null while annotation scanning is required");
+        }
+        this.bundle = bundle;
+        this.annotationScanRequired = annotationScanRequired;
+        initialize();
+    }
+
+    public SpecSecurityBuilder(Bundle bundle, boolean annotationScanRequired) {
+        this.bundle = bundle;
+        this.annotationScanRequired = annotationScanRequired;
+        URL specDDUrl = BundleUtils.getEntry(bundle, "WEB-INF/web.xml");
+        if (specDDUrl == null) {
+            initialWebApp = WebAppType.Factory.newInstance();
+        } else {
+            try {
+                String specDD = JarUtils.readAll(specDDUrl);
+                XmlObject parsed = XmlBeansUtil.parse(specDD);
+                WebAppDocument webAppDoc = SchemaConversionUtils.convertToServletSchema(parsed);
+                initialWebApp = webAppDoc.getWebApp();
+            } catch (XmlException e) {
+                throw new IllegalArgumentException("Error parsing web.xml for " + bundle.getSymbolicName(), e);
+            } catch (Exception e) {
+                throw new IllegalArgumentException("Error reading web.xml for " + bundle.getSymbolicName(), e);
+            }
+        }
+        initialize();
+    }
+
+    public void declareRoles(String... roleNames) {
+        //Let's go ahead to directly add the roles to the securityRoles set. The set will be used in the collectRoleNames method.
+        for (String roleName : roleNames) {
+            if (roleName == null || roleName.trim().length() == 0) {
+                throw new IllegalArgumentException("RoleName of null value or empty string is not allowed in declareRoles method");
+            }
+            securityRoles.add(roleName.trim());
+        }
+    }
+
+    public Set<String> setServletSecurity(ServletSecurityElement constraint, Collection<String> urlPatterns) {
+        if (dynamicSecurityWebApp == null) {
+            dynamicSecurityWebApp = WebAppType.Factory.newInstance();
+        }
+        Set<String> uneffectedUrlPatterns = new HashSet<String>();
+        for (String urlPattern : urlPatterns) {
+            if (urlPatternsConfiguredInDeploymentPlans.contains(urlPattern)) {
+                uneffectedUrlPatterns.add(urlPattern);
+            }
+        }
+        Collection<String> effectedUrlPatterns = null;
+        if (uneffectedUrlPatterns.size() == 0) {
+            effectedUrlPatterns = urlPatterns;
+        } else {
+            effectedUrlPatterns = new HashSet<String>();
+            effectedUrlPatterns.addAll(urlPatterns);
+            effectedUrlPatterns.removeAll(uneffectedUrlPatterns);
+        }
+        //Update SecurityConstraint configured by ServletSecurity annotations if required
+        if (annotationSecurityWebApp != null) {
+            overrideSecurityConstraints(annotationSecurityWebApp, effectedUrlPatterns);
+        }
+        //Update SecurityConstraint configured by previous setServletSecurity invocations
+        overrideSecurityConstraints(dynamicSecurityWebApp, effectedUrlPatterns);
+        //Update Role List
+        //Roles that are implicitly declared as a result of their use within the setServletSecurity or setRunAsRole methods of the ServletRegistration interface
+        //need not be declared.
+        //Set SecurityConstraint
+        if (constraint.getHttpMethodConstraints().size() > 0) {
+            for (HttpMethodConstraintElement httpMethodConstraint : constraint.getHttpMethodConstraints()) {
+                //Generate a security-constraint for each HttpMethodConstraint
+                addNewHTTPMethodSecurityConstraint(dynamicSecurityWebApp, httpMethodConstraint.getRolesAllowed(), httpMethodConstraint.getTransportGuarantee(), httpMethodConstraint
+                        .getEmptyRoleSemantic(), httpMethodConstraint.getMethodName(), effectedUrlPatterns);
+               declareRoles(httpMethodConstraint.getRolesAllowed());
+            }
+        }
+        addNewHTTPSecurityConstraint(dynamicSecurityWebApp, constraint.getRolesAllowed(), constraint.getTransportGuarantee(), constraint.getEmptyRoleSemantic(), constraint.getMethodNames()
+                .toArray(new String[0]), effectedUrlPatterns);
+        declareRoles(constraint.getRolesAllowed());
+        return uneffectedUrlPatterns;
+    }
+
+    private void overrideSecurityConstraints(WebAppType webApp, Collection<String> urlPatterns) {
+        for (SecurityConstraintType securityConstraint : webApp.getSecurityConstraintArray()) {
+            int iCurrentWebResourceCollectionIndex = 0;
+            for (WebResourceCollectionType webResourceCollection : securityConstraint.getWebResourceCollectionArray()) {
+                Set<String> validateAnnotationUrlPatterns = new HashSet<String>();
+                for (UrlPatternType urlPattern : webResourceCollection.getUrlPatternArray()) {
+                    if (!urlPatterns.contains(urlPattern.getStringValue())) {
+                        validateAnnotationUrlPatterns.add(urlPattern.getStringValue());
+                    }
+                }
+                if (validateAnnotationUrlPatterns.size() == 0) {
+                    securityConstraint.removeWebResourceCollection(iCurrentWebResourceCollectionIndex);
+                    continue;
+                } else if (validateAnnotationUrlPatterns.size() < webResourceCollection.getUrlPatternArray().length) {
+                    for (int i = 0, iLoopSize = webResourceCollection.getUrlPatternArray().length; i < iLoopSize; i++) {
+                        webResourceCollection.removeUrlPattern(0);
+                    }
+                    for (String validateAnnotationUrlPattern : validateAnnotationUrlPatterns) {
+                        webResourceCollection.addNewUrlPattern().setStringValue(validateAnnotationUrlPattern);
+                    }
+                }
+                iCurrentWebResourceCollectionIndex++;
+            }
+        }
+    }
+
+    public ComponentPermissions buildSpecSecurityConfig() {
+        if (dynamicSecurityWebApp != null) {
+            for (SecurityConstraintType securityConstraint : dynamicSecurityWebApp.getSecurityConstraintArray()) {
+                initialWebApp.addNewSecurityConstraint().set(securityConstraint);
+            }
+        }
+        if (annotationSecurityWebApp != null) {
+            for (SecurityConstraintType securityConstraint : annotationSecurityWebApp.getSecurityConstraintArray()) {
+                initialWebApp.addNewSecurityConstraint().set(securityConstraint);
+            }
+        }
+        collectRoleNames(initialWebApp.getSecurityRoleArray());
         try {
-            for (ServletType servletType : webApp.getServletArray()) {
+            for (ServletType servletType : initialWebApp.getServletArray()) {
                 processRoleRefPermissions(servletType);
             }
             //add the role-ref permissions for unmapped jsps
             addUnmappedJSPPermissions();
-            analyzeSecurityConstraints(webApp.getSecurityConstraintArray());
+            analyzeSecurityConstraints(initialWebApp.getSecurityConstraintArray());
             removeExcludedDups();
             return buildComponentPermissions();
         } catch (PolicyContextException e) {
@@ -83,7 +250,7 @@ public class SpecSecurityBuilder {
         }
     }
 
-    public void analyzeSecurityConstraints(SecurityConstraintType[] securityConstraintArray) {
+    private void analyzeSecurityConstraints(SecurityConstraintType[] securityConstraintArray) {
         for (SecurityConstraintType securityConstraintType : securityConstraintArray) {
             Map<String, URLPattern> currentPatterns;
             if (securityConstraintType.isSetAuthConstraint()) {
@@ -154,7 +321,7 @@ public class SpecSecurityBuilder {
         }
     }
 
-    public void removeExcludedDups() {
+    private void removeExcludedDups() {
         for (Map.Entry<String, URLPattern> excluded : excludedPatterns.entrySet()) {
             String url = excluded.getKey();
             URLPattern pattern = excluded.getValue();
@@ -172,7 +339,7 @@ public class SpecSecurityBuilder {
         }
     }
 
-    public ComponentPermissions buildComponentPermissions() throws PolicyContextException {
+    private ComponentPermissions buildComponentPermissions() throws PolicyContextException {
         for (URLPattern pattern : excludedPatterns.values()) {
             String name = pattern.getQualifiedPattern(allSet);
             String actions = pattern.getMethods();
@@ -215,7 +382,6 @@ public class SpecSecurityBuilder {
             addOrUpdatePattern(uncheckedResourcePatterns, name, methods, URLPattern.NA);
             addOrUpdatePattern(uncheckedUserPatterns, name, methods, URLPattern.NA);
         }
-
         if (!allMap.containsKey("/")) {
             URLPattern pattern = new URLPattern("/", Collections.EMPTY_SET, false);
             String name = pattern.getQualifiedPattern(allSet);
@@ -284,6 +450,190 @@ public class SpecSecurityBuilder {
         }
     }
 
+    /**
+     * 1. Scan ServletConstraint annotations to build a map for conflict checking
+     * 2. Build a url-pattern
+     */
+    private void initialize() {
+        // Initialize urlPatternsConfiguredInDeploymentPlans map, which contains all the url patterns configured in portable deployment plan
+        for (SecurityConstraintType secuirtyConstrait : initialWebApp.getSecurityConstraintArray()) {
+            for (WebResourceCollectionType webResourceCollection : secuirtyConstrait.getWebResourceCollectionArray()) {
+                for (UrlPatternType urlPattern : webResourceCollection.getUrlPatternArray()) {
+                    urlPatternsConfiguredInDeploymentPlans.add(urlPattern.getStringValue());
+                }
+            }
+        }
+        //Scan ServletConstraint annotations if required
+        if (annotationScanRequired) {
+            annotationSecurityWebApp = WebAppType.Factory.newInstance();
+            scanServletConstraintAnnotations();
+        }
+    }
+
+    private void scanServletConstraintAnnotations() {
+        try {
+            Map<String, Set<String>> servletClassNameUrlPatternsMap = genetateServletClassUrlPatternsMap();
+            for (ServletType servlet : initialWebApp.getServletArray()) {
+                if (servlet.getServletClass() == null || servlet.getServletClass().getStringValue().isEmpty()) {
+                    continue;
+                }
+                String servletClassName = servlet.getServletClass().getStringValue();
+                Class<?> cls = bundle.loadClass(servletClassName);
+                if (!Servlet.class.isAssignableFrom(cls)) {
+                    continue;
+                }
+                ServletSecurity servletSecurity = cls.getAnnotation(ServletSecurity.class);
+                if (servletSecurity == null) {
+                    continue;
+                }
+                Set<String> urlPatterns = servletClassNameUrlPatternsMap.get(servletClassName);
+                if (urlPatterns == null || urlPatterns.isEmpty()) {
+                    if (logger.isDebugEnabled()) {
+                        logger.debug("No url pattern for the servlet class " + servletClassName + " is found in the deployment plan, SecurityConstraint annotation is ignored");
+                    }
+                    continue;
+                }
+                HttpConstraint httpConstraint = servletSecurity.value();
+                if (servletSecurity.httpMethodConstraints().length > 0) {
+                    String[] omissionMethods = new String[servletSecurity.httpMethodConstraints().length];
+                    int iIndex = 0;
+                    for (HttpMethodConstraint httpMethodConstraint : servletSecurity.httpMethodConstraints()) {
+                        //Generate a security-constraint for each HttpMethodConstraint
+                        String httpMethod = httpMethodConstraint.value().trim();
+                        omissionMethods[iIndex++] = httpMethod;
+                        addNewHTTPMethodSecurityConstraint(annotationSecurityWebApp, httpMethodConstraint.rolesAllowed(), httpMethodConstraint.transportGuarantee(), httpMethodConstraint
+                                .emptyRoleSemantic(), httpMethod, urlPatterns);
+                    }
+                    addNewHTTPSecurityConstraint(annotationSecurityWebApp, httpConstraint.rolesAllowed(), httpConstraint.transportGuarantee(), httpConstraint.value(), omissionMethods, urlPatterns);
+                } else {
+                    addNewHTTPSecurityConstraint(annotationSecurityWebApp, httpConstraint.rolesAllowed(), httpConstraint.transportGuarantee(), httpConstraint.value(), new String[] {}, urlPatterns);
+                }
+            }
+        } catch (ClassNotFoundException e) {
+            //Should never occur, as webservice builder  have already checked it.
+            logger.error("Fail to load class", e);
+        }
+    }
+
+    /**
+     * Create Security Constraint based on the arguments
+     * @param webApp
+     * @param rolesAllowed
+     * @param transportGuarantee
+     * @param emptyRoleSemantic
+     * @return null when emptyRoleSemantic=PERMIT AND rolesAllowed={} AND transportGuarantee=NONE
+     */
+    private SecurityConstraintType addNewSecurityConstraint(WebAppType webApp, String[] rolesAllowed, TransportGuarantee transportGuarantee, ServletSecurity.EmptyRoleSemantic emptyRoleSemantic) {
+        //IF emptyRoleSemantic=PERMIT AND rolesAllowed={} AND transportGuarantee=NONE then
+        //  No Constraint
+        //END IF
+        if (rolesAllowed.length > 0 || transportGuarantee.equals(TransportGuarantee.CONFIDENTIAL) || emptyRoleSemantic.equals(ServletSecurity.EmptyRoleSemantic.DENY)) {
+            SecurityConstraintType securityConstraint = webApp.addNewSecurityConstraint();
+            if (transportGuarantee.equals(TransportGuarantee.CONFIDENTIAL)) {
+                securityConstraint.addNewUserDataConstraint().addNewTransportGuarantee().setStringValue(TransportGuarantee.CONFIDENTIAL.name());
+            }
+            if (emptyRoleSemantic.equals(ServletSecurity.EmptyRoleSemantic.DENY)) {
+                securityConstraint.addNewAuthConstraint();
+            } else {
+                AuthConstraintType authConstraint = securityConstraint.addNewAuthConstraint();
+                for (String roleAllowed : rolesAllowed) {
+                    authConstraint.addNewRoleName().setStringValue(roleAllowed);
+                }
+            }
+            return securityConstraint;
+        }
+        return null;
+    }
+
+    private SecurityConstraintType addNewHTTPSecurityConstraint(WebAppType webApp, String[] rolesAllowed, TransportGuarantee transportGuarantee, ServletSecurity.EmptyRoleSemantic emptyRoleSemantic,
+            String[] omissionMethods, Collection<String> urlPatterns) {
+        SecurityConstraintType securityConstraint = addNewSecurityConstraint(webApp, rolesAllowed, transportGuarantee, emptyRoleSemantic);
+        if (omissionMethods.length > 0 || securityConstraint != null) {
+            if (securityConstraint == null) {
+                securityConstraint = webApp.addNewSecurityConstraint();
+            }
+            WebResourceCollectionType webResourceCollection = securityConstraint.getWebResourceCollectionArray().length == 0 ? securityConstraint.addNewWebResourceCollection() : securityConstraint
+                    .getWebResourceCollectionArray(0);
+            for (String omissionMethod : omissionMethods) {
+                webResourceCollection.addNewHttpMethodOmission().setStringValue(omissionMethod);
+            }
+            for (String urlPattern : urlPatterns) {
+                webResourceCollection.addNewUrlPattern().setStringValue(urlPattern);
+            }
+        }
+        return securityConstraint;
+    }
+
+    private SecurityConstraintType addNewHTTPMethodSecurityConstraint(WebAppType webApp, String[] rolesAllowed, TransportGuarantee transportGuarantee,
+            ServletSecurity.EmptyRoleSemantic emptyRoleSemantic, String httpMethod, Collection<String> urlPatterns) {
+        SecurityConstraintType securityConstraint = addNewSecurityConstraint(webApp, rolesAllowed, transportGuarantee, emptyRoleSemantic);
+        if (securityConstraint == null) {
+            securityConstraint = webApp.addNewSecurityConstraint();
+        }
+        WebResourceCollectionType webResourceCollection = securityConstraint.getWebResourceCollectionArray().length == 0 ? securityConstraint.addNewWebResourceCollection() : securityConstraint
+                .getWebResourceCollectionArray(0);
+        for (String urlPattern : urlPatterns) {
+            webResourceCollection.addNewUrlPattern().setStringValue(urlPattern);
+        }
+        webResourceCollection.addNewHttpMethod().setStringValue(httpMethod);
+        return securityConstraint;
+    }
+
+    /**
+     * The return map contains the servlet class -> url patterns pairs, which are not configured in the security-constraint elements in the deployment plan.
+     * Because the security-constraint configurations in the deployment plan have the highest priority, those constraints configured by annotations should not override them
+     * @return
+     */
+    private Map<String, Set<String>> genetateServletClassUrlPatternsMap() {
+        Map<String, Set<String>> servletNameUrlPatternsMap = new HashMap<String, Set<String>>();
+        for (ServletMappingType servletMapping : initialWebApp.getServletMappingArray()) {
+            String servletName = servletMapping.getServletName().getStringValue();
+            Set<String> urlPatterns = servletNameUrlPatternsMap.get(servletName);
+            if (urlPatterns == null) {
+                urlPatterns = new HashSet<String>();
+                servletNameUrlPatternsMap.put(servletName, urlPatterns);
+            }
+            for (UrlPatternType urlPattern : servletMapping.getUrlPatternArray()) {
+                if (!urlPatternsConfiguredInDeploymentPlans.contains(urlPattern.getStringValue())) {
+                    urlPatterns.add(urlPattern.getStringValue());
+                }
+            }
+        }
+        Map<String, Set<String>> servletClassUrlPatternsMap = new HashMap<String, Set<String>>();
+        for (ServletType servlet : initialWebApp.getServletArray()) {
+            if (servlet.getServletClass() == null || servlet.getServletClass().getStringValue().isEmpty()) {
+                continue;
+            }
+            String servletClassName = servlet.getServletClass().getStringValue();
+            Set<String> urlPatterns = servletClassUrlPatternsMap.get(servlet.getServletClass().getStringValue());
+            if (urlPatterns == null) {
+                urlPatterns = new HashSet<String>();
+                servletClassUrlPatternsMap.put(servletClassName, urlPatterns);
+            }
+            Set<String> servletMappingUrlPatterns = servletNameUrlPatternsMap.get(servlet.getServletName().getStringValue());
+            if (servletMappingUrlPatterns != null) {
+                urlPatterns.addAll(servletMappingUrlPatterns);
+            }
+        }
+        return servletClassUrlPatternsMap;
+    }
+
+    public void clear() {
+        securityRoles.clear();
+        uncheckedPatterns.clear();
+        uncheckedResourcePatterns.clear();
+        uncheckedUserPatterns.clear();
+        excludedPatterns.clear();
+        rolesPatterns.clear();
+        allSet.clear();
+        allMap.clear();
+        initialWebApp = null;
+        bundle = null;
+        urlPatternsConfiguredInDeploymentPlans = null;
+        dynamicSecurityWebApp = null;
+        annotationSecurityWebApp = null;
+    }
+
     private static class RecordingPolicyConfiguration implements PolicyConfiguration {
 
         private final PermissionCollection excludedPermissions = new Permissions();

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/security/URLPattern.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/security/URLPattern.java?rev=939982&r1=939221&r2=939982&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/security/URLPattern.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/security/URLPattern.java Sat May  1 11:51:06 2010
@@ -15,7 +15,7 @@
  *  limitations under the License.
  */
 
-package org.apache.geronimo.web25.deployment.security;
+package org.apache.geronimo.web.security;
 
 import java.util.Collection;
 import java.util.HashSet;

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/security/URLPatternCheck.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/security/URLPatternCheck.java?rev=939982&r1=939221&r2=939982&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/security/URLPatternCheck.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/security/URLPatternCheck.java Sat May  1 11:51:06 2010
@@ -15,13 +15,13 @@
  *  limitations under the License.
  */
 
-package org.apache.geronimo.web25.deployment.security;
-
+package org.apache.geronimo.web.security;
 
 /**
  * @version $Rev$ $Date$
  */
 public abstract class URLPatternCheck {
+
     public abstract boolean check(URLPattern base, URLPattern test);
 
     public abstract boolean matches(String base, String test);

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/security/UncheckedItem.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/security/UncheckedItem.java?rev=939982&r1=939221&r2=939982&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/security/UncheckedItem.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web/src/main/java/org/apache/geronimo/web/security/UncheckedItem.java Sat May  1 11:51:06 2010
@@ -18,7 +18,7 @@
  */
 
 
-package org.apache.geronimo.web25.deployment.security;
+package org.apache.geronimo.web.security;
 
 /**
  * @version $Rev$ $Date$

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web/src/test/java/org/apache/geronimo/web/security/SecurityConfigTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web/src/test/java/org/apache/geronimo/web/security/SecurityConfigTest.java?rev=939982&r1=939221&r2=939982&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web/src/test/java/org/apache/geronimo/web/security/SecurityConfigTest.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web/src/test/java/org/apache/geronimo/web/security/SecurityConfigTest.java Sat May  1 11:51:06 2010
@@ -15,7 +15,7 @@
  *  limitations under the License.
  */
 
-package org.apache.geronimo.web25.deployment.security;
+package org.apache.geronimo.web.security;
 
 import java.net.URL;
 
@@ -35,12 +35,10 @@ public class SecurityConfigTest extends 
     private XmlOptions options = new XmlOptions();
 
     public void testNoSecConstraint() throws Exception {
-        URL srcXml = classLoader.getResource("deployables/war3/WEB-INF/web.xml");
+        URL srcXml = classLoader.getResource("security/web-nosecurity.xml");
         WebAppDocument webAppDoc = WebAppDocument.Factory.parse(srcXml, options);
         WebAppType webApp = webAppDoc.getWebApp();
-        SpecSecurityBuilder builder = new SpecSecurityBuilder();
-        ComponentPermissions componentPermissions = builder.buildSpecSecurityConfig(webApp);
+        SpecSecurityBuilder builder = new SpecSecurityBuilder(webApp);
+        ComponentPermissions componentPermissions = builder.buildSpecSecurityConfig();
     }
-
-
 }

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web/src/test/java/org/apache/geronimo/web/security/SpecSecurityParsingTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web/src/test/java/org/apache/geronimo/web/security/SpecSecurityParsingTest.java?rev=939982&r1=939221&r2=939982&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web/src/test/java/org/apache/geronimo/web/security/SpecSecurityParsingTest.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web/src/test/java/org/apache/geronimo/web/security/SpecSecurityParsingTest.java Sat May  1 11:51:06 2010
@@ -18,7 +18,7 @@
  */
 
 
-package org.apache.geronimo.web25.deployment.security;
+package org.apache.geronimo.web.security;
 
 import java.net.URL;
 import java.security.Permission;
@@ -46,8 +46,8 @@ public class SpecSecurityParsingTest ext
         URL srcXml = classLoader.getResource("security/web1.xml");
         WebAppDocument webAppDoc = WebAppDocument.Factory.parse(srcXml, options);
         WebAppType webAppType = webAppDoc.getWebApp();
-        SpecSecurityBuilder builder = new SpecSecurityBuilder();
-        ComponentPermissions permissions = builder.buildSpecSecurityConfig(webAppType);
+        SpecSecurityBuilder builder = new SpecSecurityBuilder(webAppType);
+        ComponentPermissions permissions = builder.buildSpecSecurityConfig();
         PermissionCollection unchecked = permissions.getUncheckedPermissions();
         assertTrue(unchecked.implies(new WebResourcePermission("/login.do", "!")));
         assertTrue(unchecked.implies(new WebResourcePermission("/foo", "!")));
@@ -65,8 +65,8 @@ public class SpecSecurityParsingTest ext
         URL srcXml = classLoader.getResource("security/web2.xml");
         WebAppDocument webAppDoc = WebAppDocument.Factory.parse(srcXml, options);
         WebAppType webAppType = webAppDoc.getWebApp();
-        SpecSecurityBuilder builder = new SpecSecurityBuilder();
-        ComponentPermissions permissions = builder.buildSpecSecurityConfig(webAppType);
+        SpecSecurityBuilder builder = new SpecSecurityBuilder(webAppType);
+        ComponentPermissions permissions = builder.buildSpecSecurityConfig();
         Permission p = new WebResourcePermission("/Test/Foo", "GET,POST");
         assertTrue(implies(p, permissions, "Admin"));
         assertFalse(implies(new WebResourcePermission("/Test", ""), permissions, null));
@@ -77,8 +77,8 @@ public class SpecSecurityParsingTest ext
         URL srcXml = classLoader.getResource("security/web3.xml");
         WebAppDocument webAppDoc = WebAppDocument.Factory.parse(srcXml, options);
         WebAppType webAppType = webAppDoc.getWebApp();
-        SpecSecurityBuilder builder = new SpecSecurityBuilder();
-        ComponentPermissions permissions = builder.buildSpecSecurityConfig(webAppType);
+        SpecSecurityBuilder builder = new SpecSecurityBuilder(webAppType);
+        ComponentPermissions permissions = builder.buildSpecSecurityConfig();
         Permission p = new WebResourcePermission("/Test/Foo", "GET,POST");
         assertTrue(implies(p, permissions, "Admin"));
         assertFalse(implies(p, permissions, null));
@@ -105,8 +105,8 @@ public class SpecSecurityParsingTest ext
         URL srcXml = classLoader.getResource("security/web4.xml");
         WebAppDocument webAppDoc = WebAppDocument.Factory.parse(srcXml, options);
         WebAppType webAppType = webAppDoc.getWebApp();
-        SpecSecurityBuilder builder = new SpecSecurityBuilder();
-        ComponentPermissions permissions = builder.buildSpecSecurityConfig(webAppType);
+        SpecSecurityBuilder builder = new SpecSecurityBuilder(webAppType);
+        ComponentPermissions permissions = builder.buildSpecSecurityConfig();
         // test excluding longer path than allowed
         Permission p = new WebResourcePermission("/Foo/Baz", "GET");
         assertTrue(implies(p, permissions, "Admin"));
@@ -136,8 +136,8 @@ public class SpecSecurityParsingTest ext
         URL srcXml = classLoader.getResource("security/web5.xml");
         WebAppDocument webAppDoc = WebAppDocument.Factory.parse(srcXml, options);
         WebAppType webAppType = webAppDoc.getWebApp();
-        SpecSecurityBuilder builder = new SpecSecurityBuilder();
-        ComponentPermissions permissions = builder.buildSpecSecurityConfig(webAppType);
+        SpecSecurityBuilder builder = new SpecSecurityBuilder(webAppType);
+        ComponentPermissions permissions = builder.buildSpecSecurityConfig();
         // test excluding longer path than allowed
         Permission p = new WebResourcePermission("/foo/Baz", "GET");
         assertFalse(implies(p, permissions, "user"));
@@ -154,8 +154,8 @@ public class SpecSecurityParsingTest ext
         URL srcXml = classLoader.getResource("security/web6.xml");
         WebAppDocument webAppDoc = WebAppDocument.Factory.parse(srcXml, options);
         WebAppType webAppType = webAppDoc.getWebApp();
-        SpecSecurityBuilder builder = new SpecSecurityBuilder();
-        ComponentPermissions permissions = builder.buildSpecSecurityConfig(webAppType);
+        SpecSecurityBuilder builder = new SpecSecurityBuilder(webAppType);
+        ComponentPermissions permissions = builder.buildSpecSecurityConfig();
         Permission p = new WebResourcePermission("/app/*", "GET");
         assertFalse(implies(p, permissions, null));
         p = new WebResourcePermission("/app/home", "POST");

Added: geronimo/server/trunk/plugins/j2ee/geronimo-web/src/test/resources/security/web-nosecurity.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web/src/test/resources/security/web-nosecurity.xml?rev=939982&view=auto
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web/src/test/resources/security/web-nosecurity.xml (added)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web/src/test/resources/security/web-nosecurity.xml Sat May  1 11:51:06 2010
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You 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.
+-->
+  
+<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+
+    <description>Test Web Deployment</description>
+
+    <security-constraint>
+        <web-resource-collection>
+            <web-resource-name>Admin Role</web-resource-name>
+            <url-pattern>*.do</url-pattern>
+        </web-resource-collection>
+        <auth-constraint>
+            <role-name>content-administrator</role-name>
+        </auth-constraint>
+    </security-constraint>
+
+    <security-constraint>
+        <web-resource-collection>
+            <web-resource-name>Unrestricted ACCESS</web-resource-name>
+            <url-pattern>/login.do</url-pattern>
+        </web-resource-collection>
+    </security-constraint>    
+
+    <login-config>
+        <auth-method>FORM</auth-method>
+        <realm-name>Test JAAS Realm</realm-name>
+        <form-login-config>
+            <form-login-page>/auth/logon.html?param=test</form-login-page>
+            <form-error-page>/auth/logonError.html?param=test</form-error-page>
+        </form-login-config>
+    </login-config>
+
+    <security-role>
+        <role-name>content-administrator</role-name>
+    </security-role>
+
+</web-app>
\ No newline at end of file

Propchange: geronimo/server/trunk/plugins/j2ee/geronimo-web/src/test/resources/security/web-nosecurity.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/server/trunk/plugins/j2ee/geronimo-web/src/test/resources/security/web-nosecurity.xml
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/server/trunk/plugins/j2ee/geronimo-web/src/test/resources/security/web-nosecurity.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web/src/test/resources/security/web6.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-web/src/test/resources/security/web6.xml?rev=939982&r1=939221&r2=939982&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web/src/test/resources/security/web6.xml (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web/src/test/resources/security/web6.xml Sat May  1 11:51:06 2010
@@ -15,7 +15,7 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-<web-app xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee">
+<web-app xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee">
     <security-constraint>
         <web-resource-collection>
             <web-resource-name>resource1</web-resource-name>

Modified: geronimo/server/trunk/plugins/j2ee/j2ee-deployer/src/main/history/dependencies.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/j2ee-deployer/src/main/history/dependencies.xml?rev=939982&r1=939981&r2=939982&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/j2ee-deployer/src/main/history/dependencies.xml (original)
+++ geronimo/server/trunk/plugins/j2ee/j2ee-deployer/src/main/history/dependencies.xml Sat May  1 11:51:06 2010
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<plugin-artifact xmlns:ns2="http://geronimo.apache.org/xml/ns/attributes-1.2" xmlns="http://geronimo.apache.org/xml/ns/plugins-1.3">
+<plugin-artifact xmlns="http://geronimo.apache.org/xml/ns/plugins-1.3" xmlns:ns2="http://geronimo.apache.org/xml/ns/attributes-1.2">
     <module-id>
         <groupId>org.apache.geronimo.configs</groupId>
         <artifactId>j2ee-deployer</artifactId>
@@ -48,6 +48,11 @@
     </dependency>
     <dependency>
         <groupId>org.apache.geronimo.modules</groupId>
+        <artifactId>geronimo-web</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.geronimo.modules</groupId>
         <artifactId>geronimo-web-2.5-builder</artifactId>
         <type>jar</type>
     </dependency>

Modified: geronimo/server/trunk/plugins/j2ee/jsr88-war-configurer/src/main/history/dependencies.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/jsr88-war-configurer/src/main/history/dependencies.xml?rev=939982&r1=939981&r2=939982&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/jsr88-war-configurer/src/main/history/dependencies.xml (original)
+++ geronimo/server/trunk/plugins/j2ee/jsr88-war-configurer/src/main/history/dependencies.xml Sat May  1 11:51:06 2010
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<plugin-artifact xmlns:ns2="http://geronimo.apache.org/xml/ns/attributes-1.2" xmlns="http://geronimo.apache.org/xml/ns/plugins-1.3">
+<plugin-artifact xmlns="http://geronimo.apache.org/xml/ns/plugins-1.3" xmlns:ns2="http://geronimo.apache.org/xml/ns/attributes-1.2">
     <module-id>
         <groupId>org.apache.geronimo.configs</groupId>
         <artifactId>jsr88-war-configurer</artifactId>
@@ -148,6 +148,11 @@
     </dependency>
     <dependency>
         <groupId>org.apache.geronimo.modules</groupId>
+        <artifactId>geronimo-web</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.geronimo.modules</groupId>
         <artifactId>geronimo-web-2.5-builder</artifactId>
         <type>jar</type>
     </dependency>

Modified: geronimo/server/trunk/plugins/j2ee/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/pom.xml?rev=939982&r1=939981&r2=939982&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/pom.xml (original)
+++ geronimo/server/trunk/plugins/j2ee/pom.xml Sat May  1 11:51:06 2010
@@ -42,6 +42,7 @@
         <module>geronimo-naming-builder</module>
         <module>geronimo-security-builder</module>
         <module>geronimo-test-ddbean</module>
+        <module>geronimo-web</module>
         <module>geronimo-web-2.5-builder</module>
         <module>j2ee-server</module>
         <module>jsr88-ear-configurer</module>

Modified: geronimo/server/trunk/plugins/jetty8/geronimo-jetty8-builder/src/main/java/org/apache/geronimo/jetty8/deployment/JettyModuleBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jetty8/geronimo-jetty8-builder/src/main/java/org/apache/geronimo/jetty8/deployment/JettyModuleBuilder.java?rev=939982&r1=939981&r2=939982&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jetty8/geronimo-jetty8-builder/src/main/java/org/apache/geronimo/jetty8/deployment/JettyModuleBuilder.java (original)
+++ geronimo/server/trunk/plugins/jetty8/geronimo-jetty8-builder/src/main/java/org/apache/geronimo/jetty8/deployment/JettyModuleBuilder.java Sat May  1 11:51:06 2010
@@ -84,7 +84,6 @@ import org.apache.geronimo.kernel.GBeanA
 import org.apache.geronimo.kernel.GBeanNotFoundException;
 import org.apache.geronimo.kernel.Kernel;
 import org.apache.geronimo.kernel.Naming;
-import org.apache.xbean.osgi.bundle.util.BundleUtils;
 import org.apache.geronimo.kernel.repository.Environment;
 import org.apache.geronimo.kernel.util.FileUtils;
 import org.apache.geronimo.kernel.util.JarUtils;
@@ -129,6 +128,7 @@ import org.apache.geronimo.xbeans.javaee
 import org.apache.geronimo.xbeans.javaee6.WebAppDocument;
 import org.apache.geronimo.xbeans.javaee6.WebAppType;
 import org.apache.geronimo.xbeans.javaee6.WelcomeFileListType;
+import org.apache.xbean.osgi.bundle.util.BundleUtils;
 import org.apache.xmlbeans.XmlException;
 import org.apache.xmlbeans.XmlObject;
 import org.osgi.framework.Bundle;
@@ -259,7 +259,7 @@ public class JettyModuleBuilder extends 
             try {
                 specDD = JarUtils.readAll(specDDUrl);
                 XmlObject parsed = XmlBeansUtil.parse(specDD);
-                WebAppDocument webAppDoc = convertToServletSchema(parsed);
+                WebAppDocument webAppDoc = SchemaConversionUtils.convertToServletSchema(parsed);
                 webApp = webAppDoc.getWebApp();
                 WebDeploymentValidationUtils.validateWebApp(webApp);
             } catch (XmlException e) {
@@ -301,7 +301,7 @@ public class JettyModuleBuilder extends 
         if (name == null) {
             name = bundle.getSymbolicName();
         }
-        
+
         WebModule module = new WebModule(standAlone, moduleName, name, environment, deployable, targetPath, webApp, jettyWebApp, specDD, contextPath, JETTY_NAMESPACE, annotatedWebApp);
         for (ModuleBuilderExtension mbe : moduleBuilderExtensions) {
             mbe.createModule(module, bundle, naming, idBuilder);
@@ -328,7 +328,7 @@ public class JettyModuleBuilder extends 
 
             // we found web.xml, if it won't parse that's an error.
             XmlObject parsed = XmlBeansUtil.parse(specDD);
-            WebAppDocument webAppDoc = convertToServletSchema(parsed);
+            WebAppDocument webAppDoc = SchemaConversionUtils.convertToServletSchema(parsed);
             webApp = webAppDoc.getWebApp();
             WebDeploymentValidationUtils.validateWebApp(webApp);
         } catch (XmlException e) {
@@ -392,7 +392,7 @@ public class JettyModuleBuilder extends 
                 name = FileUtils.removeExtension(targetPath, ".war");
             }
         }
-        
+
         WebModule module = new WebModule(standAlone, moduleName, name, environment, deployable, targetPath, webApp, jettyWebApp, specDD, contextRoot, JETTY_NAMESPACE, annotatedWebApp);
         for (ModuleBuilderExtension mbe : moduleBuilderExtensions) {
             mbe.createModule(module, plan, moduleFile, targetPath, specDDUrl, environment, contextRoot, earName, naming, idBuilder);
@@ -635,7 +635,7 @@ public class JettyModuleBuilder extends 
             addServlets(moduleName, webModule, servletTypes, servletMappings, moduleContext);
 
             if (jettyWebApp.isSetSecurityRealmName()) {
-                configureSecurityRealm(earContext, webApp, jettyWebApp, webModuleData);
+                configureSecurityRealm(earContext, webApp, jettyWebApp, bundle, webModuleData);
             }
 
             //See Jetty-386, GERONIMO-3738
@@ -677,7 +677,7 @@ public class JettyModuleBuilder extends 
 //        moduleContext.addGBean(beanData);
     }
 
-    private void configureSecurityRealm(EARContext earContext, WebAppType webApp, JettyWebAppType jettyWebApp, GBeanData webModuleData) throws DeploymentException {
+    private void configureSecurityRealm(EARContext earContext, WebAppType webApp, JettyWebAppType jettyWebApp, Bundle bundle, GBeanData webModuleData) throws DeploymentException {
         AbstractName moduleName = webModuleData.getAbstractName();
         if (earContext.getSecurityConfiguration() == null) {
             throw new DeploymentException(
@@ -694,9 +694,10 @@ public class JettyModuleBuilder extends 
         //String policyContextID = webModuleName.getCanonicalName();
         webModuleData.setAttribute("policyContextID", policyContextID);
 
-        ComponentPermissions componentPermissions = buildSpecSecurityConfig(webApp);
 
+        ComponentPermissions componentPermissions = buildSpecSecurityConfig(earContext, webApp, bundle);
         earContext.addSecurityContext(policyContextID, componentPermissions);
+
     }
 
     private void addDefaultServletsGBeans(EARContext earContext, EARContext moduleContext, AbstractName moduleName, Set knownServletMappings) throws GBeanNotFoundException, GBeanAlreadyExistsException {

Modified: geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/pom.xml?rev=939982&r1=939981&r2=939982&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/pom.xml (original)
+++ geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/pom.xml Sat May  1 11:51:06 2010
@@ -55,6 +55,12 @@
             <artifactId>geronimo-wab</artifactId>
             <version>${version}</version>
         </dependency>
+        
+        <dependency>
+            <groupId>org.apache.geronimo.modules</groupId>
+            <artifactId>geronimo-web</artifactId>
+            <version>${version}</version>
+        </dependency>
 
         <dependency>
             <groupId>org.apache.geronimo.framework</groupId>

Modified: geronimo/server/trunk/plugins/jetty8/jetty8-clustering-wadi/src/main/history/dependencies.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jetty8/jetty8-clustering-wadi/src/main/history/dependencies.xml?rev=939982&r1=939981&r2=939982&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jetty8/jetty8-clustering-wadi/src/main/history/dependencies.xml (original)
+++ geronimo/server/trunk/plugins/jetty8/jetty8-clustering-wadi/src/main/history/dependencies.xml Sat May  1 11:51:06 2010
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<plugin-artifact xmlns:ns2="http://geronimo.apache.org/xml/ns/attributes-1.2" xmlns="http://geronimo.apache.org/xml/ns/plugins-1.3">
+<plugin-artifact xmlns="http://geronimo.apache.org/xml/ns/plugins-1.3" xmlns:ns2="http://geronimo.apache.org/xml/ns/attributes-1.2">
     <module-id>
         <groupId>org.apache.geronimo.configs</groupId>
         <artifactId>jetty8-clustering-wadi</artifactId>
@@ -28,6 +28,11 @@
     </dependency>
     <dependency>
         <groupId>org.apache.geronimo.modules</groupId>
+        <artifactId>geronimo-j2ee-schema</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.geronimo.modules</groupId>
         <artifactId>geronimo-jetty8-clustering-wadi</artifactId>
         <type>jar</type>
     </dependency>
@@ -37,6 +42,11 @@
         <type>jar</type>
     </dependency>
     <dependency>
+        <groupId>org.apache.geronimo.modules</groupId>
+        <artifactId>geronimo-web</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
         <groupId>org.eclipse.jetty</groupId>
         <artifactId>jetty-jaspi</artifactId>
         <type>jar</type>

Modified: geronimo/server/trunk/plugins/jetty8/jetty8/src/main/history/dependencies.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jetty8/jetty8/src/main/history/dependencies.xml?rev=939982&r1=939981&r2=939982&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jetty8/jetty8/src/main/history/dependencies.xml (original)
+++ geronimo/server/trunk/plugins/jetty8/jetty8/src/main/history/dependencies.xml Sat May  1 11:51:06 2010
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<plugin-artifact xmlns:ns2="http://geronimo.apache.org/xml/ns/attributes-1.2" xmlns="http://geronimo.apache.org/xml/ns/plugins-1.3">
+<plugin-artifact xmlns="http://geronimo.apache.org/xml/ns/plugins-1.3" xmlns:ns2="http://geronimo.apache.org/xml/ns/attributes-1.2">
     <module-id>
         <groupId>org.apache.geronimo.configs</groupId>
         <artifactId>jetty8</artifactId>
@@ -33,6 +33,11 @@
     </dependency>
     <dependency>
         <groupId>org.apache.geronimo.modules</groupId>
+        <artifactId>geronimo-j2ee-schema</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.geronimo.modules</groupId>
         <artifactId>geronimo-jetty8</artifactId>
         <type>jar</type>
     </dependency>
@@ -42,6 +47,11 @@
         <type>jar</type>
     </dependency>
     <dependency>
+        <groupId>org.apache.geronimo.modules</groupId>
+        <artifactId>geronimo-web</artifactId>
+        <type>jar</type>
+    </dependency>
+    <dependency>
         <groupId>org.eclipse.jetty</groupId>
         <artifactId>jetty-ajp</artifactId>
         <type>jar</type>

Modified: geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7-builder/src/main/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7-builder/src/main/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java?rev=939982&r1=939981&r2=939982&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7-builder/src/main/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java (original)
+++ geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7-builder/src/main/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java Sat May  1 11:51:06 2010
@@ -61,16 +61,15 @@ import org.apache.geronimo.j2ee.deployme
 import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
 import org.apache.geronimo.kernel.Kernel;
 import org.apache.geronimo.kernel.Naming;
-import org.apache.xbean.osgi.bundle.util.BundleUtils;
 import org.apache.geronimo.kernel.repository.Environment;
 import org.apache.geronimo.kernel.util.FileUtils;
 import org.apache.geronimo.kernel.util.JarUtils;
 import org.apache.geronimo.naming.deployment.ENCConfigBuilder;
 import org.apache.geronimo.naming.deployment.GBeanResourceEnvironmentBuilder;
 import org.apache.geronimo.naming.deployment.ResourceEnvironmentSetter;
+import org.apache.geronimo.schema.SchemaConversionUtils;
 import org.apache.geronimo.security.deployment.GeronimoSecurityBuilderImpl;
 import org.apache.geronimo.security.jaas.ConfigurationFactory;
-import org.apache.geronimo.security.jacc.ComponentPermissions;
 import org.apache.geronimo.tomcat.LifecycleListenerGBean;
 import org.apache.geronimo.tomcat.ManagerGBean;
 import org.apache.geronimo.tomcat.RealmGBean;
@@ -78,6 +77,7 @@ import org.apache.geronimo.tomcat.Tomcat
 import org.apache.geronimo.tomcat.ValveGBean;
 import org.apache.geronimo.tomcat.cluster.CatalinaClusterGBean;
 import org.apache.geronimo.tomcat.util.SecurityHolder;
+import org.apache.geronimo.web.WebAttributeName;
 import org.apache.geronimo.web.deployment.GenericToSpecificPlanConverter;
 import org.apache.geronimo.web25.deployment.AbstractWebModuleBuilder;
 import org.apache.geronimo.web25.deployment.security.AuthenticationWrapper;
@@ -93,6 +93,7 @@ import org.apache.geronimo.xbeans.geroni
 import org.apache.geronimo.xbeans.javaee6.ServletType;
 import org.apache.geronimo.xbeans.javaee6.WebAppDocument;
 import org.apache.geronimo.xbeans.javaee6.WebAppType;
+import org.apache.xbean.osgi.bundle.util.BundleUtils;
 import org.apache.xmlbeans.XmlException;
 import org.apache.xmlbeans.XmlObject;
 import org.osgi.framework.Bundle;
@@ -171,7 +172,7 @@ public class TomcatModuleBuilder extends
             try {
                 specDD = JarUtils.readAll(specDDUrl);
                 XmlObject parsed = XmlBeansUtil.parse(specDD);
-                WebAppDocument webAppDoc = convertToServletSchema(parsed);
+                WebAppDocument webAppDoc = SchemaConversionUtils.convertToServletSchema(parsed);
                 webApp = webAppDoc.getWebApp();
                 WebDeploymentValidationUtils.validateWebApp(webApp);
             } catch (XmlException e) {
@@ -213,7 +214,7 @@ public class TomcatModuleBuilder extends
         if (name == null) {
             name = bundle.getSymbolicName();
         }
-        
+
         WebModule module = new WebModule(standAlone, moduleName, name, environment, deployable, targetPath, webApp, tomcatWebApp, specDD, contextPath, TOMCAT_NAMESPACE, annotatedWebApp);
         for (ModuleBuilderExtension mbe : moduleBuilderExtensions) {
             mbe.createModule(module, bundle, naming, idBuilder);
@@ -241,7 +242,7 @@ public class TomcatModuleBuilder extends
             // we found web.xml, if it won't parse that's an error.
             XmlObject parsed = XmlBeansUtil.parse(specDD);
 
-            WebAppDocument webAppDoc = convertToServletSchema(parsed);
+            WebAppDocument webAppDoc = SchemaConversionUtils.convertToServletSchema(parsed);
             webApp = webAppDoc.getWebApp();
             WebDeploymentValidationUtils.validateWebApp(webApp);
         } catch (XmlException e) {
@@ -305,14 +306,14 @@ public class TomcatModuleBuilder extends
                 name = FileUtils.removeExtension(targetPath, ".war");
             }
         }
-        
+
         WebModule module = new WebModule(standAlone, moduleName, name, environment, deployable, targetPath, webApp, tomcatWebApp, specDD, contextRoot, TOMCAT_NAMESPACE, annotatedWebApp);
         for (ModuleBuilderExtension mbe : moduleBuilderExtensions) {
             mbe.createModule(module, plan, moduleFile, targetPath, specDDUrl, environment, contextRoot, earName, naming, idBuilder);
         }
         return module;
     }
-    
+
     private String getContextRoot(TomcatWebAppType tomcatWebApp, String contextRoot, WebAppType webApp, boolean standAlone, JarFile moduleFile, String targetPath) {
         //If we have a context root, override everything
         if (tomcatWebApp.isSetContextRoot()) {
@@ -551,8 +552,11 @@ public class TomcatModuleBuilder extends
                 String policyContextID = moduleName.toString().replaceAll("[, :]", "_");
                 securityHolder.setPolicyContextID(policyContextID);
 
+                /*
+                 * For web applications, we would not calculate permissions in the deployment time, as it is allowed to update in Servlet 3.0 on the initialize step
                 ComponentPermissions componentPermissions = buildSpecSecurityConfig(webApp);
                 earContext.addSecurityContext(policyContextID, componentPermissions);
+                */
                 //TODO WTF is this for?
                 securityHolder.setSecurity(true);
 
@@ -562,14 +566,24 @@ public class TomcatModuleBuilder extends
                     AuthenticationWrapper authType = new TomcatAuthenticationWrapper(tomcatWebApp.getAuthentication());
                     configureLocalJaspicProvider(authType, contextPath, module, webModuleData);
                 }
-
             }
 
+            //Save Deployment Attributes
+            Map<String, Object> deploymentAttributes = new HashMap<String, Object>();
+            deploymentAttributes.put(WebAttributeName.META_COMPLETE.name(), webApp.getMetadataComplete());
+            deploymentAttributes.put(WebAttributeName.SCHEMA_VERSION.name(), INITIAL_WEB_XML_SCHEMA_VERSION.get(earContext.getGeneralData()));
+            deploymentAttributes.put(WebAttributeName.ORDERED_LIBS.name(), AbstractWebModuleBuilder.ORDERED_LIBS.get(earContext.getGeneralData()));
+            deploymentAttributes.put(WebAttributeName.SERVLET_CONTAINER_INITIALIZERS.name(), AbstractWebModuleBuilder.SERVLET_CONTAINER_INITIALIZERS.get(earContext.getGeneralData()));
+            webModuleData.setAttribute("deploymentAttributes", deploymentAttributes);
+
             //listeners added directly to the StandardContext will get loaded by the tomcat classloader, not the app classloader!
             //TODO this may definitely not be the best place for this!
             for (ModuleBuilderExtension mbe : moduleBuilderExtensions) {
                 mbe.addGBeans(earContext, module, bundle, repository);
             }
+            if(tomcatWebApp.isSetSecurityRealmName()) {
+                webModuleData.setReferencePattern("applicationPolicyConfigurationManager", EARContext.JACC_MANAGER_NAME_KEY.get(earContext.getGeneralData()));
+            }
             //not truly metadata complete until MBEs have run
             if (!webApp.getMetadataComplete()) {
                 webApp.setMetadataComplete(true);
@@ -580,7 +594,6 @@ public class TomcatModuleBuilder extends
                 }
             }
             webModuleData.setAttribute("deploymentDescriptor", module.getOriginalSpecDD());
-
             module.addAsChildConfiguration();
         } catch (DeploymentException de) {
             throw de;

Modified: geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/pom.xml?rev=939982&r1=939981&r2=939982&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/pom.xml (original)
+++ geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7/pom.xml Sat May  1 11:51:06 2010
@@ -52,6 +52,12 @@
             <artifactId>geronimo-wab</artifactId>
             <version>${version}</version>
         </dependency>
+        
+        <dependency>
+            <groupId>org.apache.geronimo.modules</groupId>
+            <artifactId>geronimo-web</artifactId>
+            <version>${version}</version>
+        </dependency>
 
         <!-- g-security comes from this -->
         <dependency>
@@ -77,12 +83,6 @@
             <scope>test</scope>
         </dependency>
 
-        <!--<dependency>-->
-        <!--<groupId>${tomcatGroupId}</groupId>-->
-        <!--<artifactId>jasper-jdt</artifactId>-->
-        <!--<scope>test</scope>-->
-        <!--</dependency>-->
-
         <dependency>
             <groupId>org.ops4j.pax.logging</groupId>
             <artifactId>pax-logging-api</artifactId>