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

svn commit: r902507 [2/3] - in /geronimo/server/trunk: framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/ framework/modules/geronimo-deployment/src/test/java/org/apache/geronimo/deployment/ plugins/ plugins/axis/geronim...

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/WebModule.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/WebModule.java?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/WebModule.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/WebModule.java Sat Jan 23 23:28:10 2010
@@ -18,6 +18,8 @@
 
 import java.util.jar.JarFile;
 
+import org.apache.geronimo.deployment.Deployable;
+import org.apache.geronimo.deployment.DeployableJarFile;
 import org.apache.geronimo.gbean.AbstractName;
 import org.apache.geronimo.j2ee.deployment.annotation.AnnotatedWebApp;
 import org.apache.geronimo.kernel.config.ConfigurationModuleType;
@@ -32,7 +34,11 @@
     public static final String WEB_APP_DATA = "WEB_APP_DATA";
 
     public WebModule(boolean standAlone, AbstractName moduleName, Environment environment, JarFile moduleFile, String targetPath, XmlObject specDD, XmlObject vendorDD, String originalSpecDD, String contextRoot, String namespace, AnnotatedWebApp annotatedWebApp) {
-        super(standAlone, moduleName, environment, moduleFile, targetPath, specDD, vendorDD, originalSpecDD, namespace, annotatedWebApp );
+        this(standAlone, moduleName, environment, new DeployableJarFile(moduleFile), targetPath, specDD, vendorDD, originalSpecDD, contextRoot, namespace, annotatedWebApp);
+    }
+    
+    public WebModule(boolean standAlone, AbstractName moduleName, Environment environment, Deployable deployable, String targetPath, XmlObject specDD, XmlObject vendorDD, String originalSpecDD, String contextRoot, String namespace, AnnotatedWebApp annotatedWebApp) {
+        super(standAlone, moduleName, environment, deployable, targetPath, specDD, vendorDD, originalSpecDD, namespace, annotatedWebApp );
         this.contextRoot = contextRoot;
     }
 

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder13NakedTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder13NakedTest.java?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder13NakedTest.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder13NakedTest.java Sat Jan 23 23:28:10 2010
@@ -16,6 +16,8 @@
  */
 package org.apache.geronimo.j2ee.deployment;
 
+import java.util.jar.JarFile;
+
 import org.apache.geronimo.kernel.repository.Artifact;
 import org.apache.geronimo.kernel.util.JarUtils;
 
@@ -34,7 +36,7 @@
         locations.put(null, new Artifact("org.apache.geronimo.testsupport", "test-ear-javaee_5", "3.0-SNAPSHOT", "ear"));
         ejbConfigBuilder.ejbModule = new EJBModule(false, ejbModuleName, null, null, "test-ejb-jar.jar", null, null, null, null);
         webConfigBuilder.contextRoot = contextRoot;
-        webConfigBuilder.webModule = new WebModule(false, webModuleName, null, null, "test-war.war", null, null, null, contextRoot, WEB_NAMESPACE, null);
+        webConfigBuilder.webModule = new WebModule(false, webModuleName, null, (JarFile)null, "test-war.war", null, null, null, contextRoot, WEB_NAMESPACE, null);
         connectorConfigBuilder.connectorModule = new ConnectorModule(false, raModuleName, null, null, "test-rar.rar", null, null, null, null);
     }
 

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder13Test.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder13Test.java?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder13Test.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder13Test.java Sat Jan 23 23:28:10 2010
@@ -16,6 +16,8 @@
  */
 package org.apache.geronimo.j2ee.deployment;
 
+import java.util.jar.JarFile;
+
 import org.apache.geronimo.kernel.repository.Artifact;
 import org.apache.geronimo.kernel.util.JarUtils;
 
@@ -34,7 +36,7 @@
         locations.put(null, new Artifact("org.apache.geronimo.testsupport", "test-ear-javaee_5", "3.0-SNAPSHOT", "ear"));
         ejbConfigBuilder.ejbModule = new EJBModule(false, ejbModuleName, null, null, "test-ejb-jar.jar", null, null, null, null);
         webConfigBuilder.contextRoot = contextRoot;
-        webConfigBuilder.webModule = new WebModule(false, webModuleName, null, null, "test-war.war", null, null, null, contextRoot, WEB_NAMESPACE, null);
+        webConfigBuilder.webModule = new WebModule(false, webModuleName, null, (JarFile)null, "test-war.war", null, null, null, contextRoot, WEB_NAMESPACE, null);
         connectorConfigBuilder.connectorModule = new ConnectorModule(false, raModuleName, null, null, "test-rar.rar", null, null, null, null);
     }
 

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder14AltDDTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder14AltDDTest.java?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder14AltDDTest.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder14AltDDTest.java Sat Jan 23 23:28:10 2010
@@ -16,6 +16,8 @@
  */
 package org.apache.geronimo.j2ee.deployment;
 
+import java.util.jar.JarFile;
+
 import org.apache.geronimo.kernel.repository.Artifact;
 import org.apache.geronimo.kernel.util.JarUtils;
 
@@ -33,7 +35,7 @@
         locations.put(null, new Artifact("org.apache.geronimo.testsupport", "test-ear-javaee_5", "3.0-SNAPSHOT", "ear"));
         ejbConfigBuilder.ejbModule = new EJBModule(false, ejbModuleName, null, null, "ejb.jar/", null, null, null, null);
         webConfigBuilder.contextRoot = contextRoot;
-        webConfigBuilder.webModule = new WebModule(false, webModuleName, null, null, "war.war/", null, null, null, contextRoot, WEB_NAMESPACE, null);
+        webConfigBuilder.webModule = new WebModule(false, webModuleName, null, (JarFile)null, "war.war/", null, null, null, contextRoot, WEB_NAMESPACE, null);
         connectorConfigBuilder.connectorModule = new ConnectorModule(false, raModuleName, null, null, "rar.rar", null, null, null, null);
     }
 

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder14AltDDUnpackedTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder14AltDDUnpackedTest.java?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder14AltDDUnpackedTest.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder14AltDDUnpackedTest.java Sat Jan 23 23:28:10 2010
@@ -16,6 +16,8 @@
  */
 package org.apache.geronimo.j2ee.deployment;
 
+import java.util.jar.JarFile;
+
 import org.apache.geronimo.kernel.repository.Artifact;
 import org.apache.geronimo.kernel.util.JarUtils;
 
@@ -33,7 +35,7 @@
         locations.put(null, new Artifact("org.apache.geronimo.testsupport", "test-ear-javaee_5", "3.0-SNAPSHOT", "ear"));
         ejbConfigBuilder.ejbModule = new EJBModule(false, ejbModuleName, null, null, "ejb.jar/", null, null, null, null);
         webConfigBuilder.contextRoot = contextRoot;
-        webConfigBuilder.webModule = new WebModule(false, webModuleName, null, null, "war.war/", null, null, null, contextRoot, WEB_NAMESPACE, null);
+        webConfigBuilder.webModule = new WebModule(false, webModuleName, null, (JarFile)null, "war.war/", null, null, null, contextRoot, WEB_NAMESPACE, null);
         connectorConfigBuilder.connectorModule = new ConnectorModule(false, raModuleName, null, null, "rar.rar/", null, null, null, null);
     }
 

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder14NakedTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder14NakedTest.java?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder14NakedTest.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder14NakedTest.java Sat Jan 23 23:28:10 2010
@@ -16,6 +16,8 @@
  */
 package org.apache.geronimo.j2ee.deployment;
 
+import java.util.jar.JarFile;
+
 import org.apache.geronimo.kernel.repository.Artifact;
 import org.apache.geronimo.kernel.util.JarUtils;
 
@@ -34,7 +36,7 @@
         locations.put(null, new Artifact("org.apache.geronimo.testsupport", "test-ear-javaee_5", "3.0-SNAPSHOT", "ear"));
         ejbConfigBuilder.ejbModule = new EJBModule(false, ejbModuleName, null, null, "test-ejb-jar.jar", null, null, null, null);
         webConfigBuilder.contextRoot = contextRoot;
-        webConfigBuilder.webModule = new WebModule(false, webModuleName, null, null, "test-war.war", null, null, null, contextRoot, WEB_NAMESPACE, null);
+        webConfigBuilder.webModule = new WebModule(false, webModuleName, null, (JarFile)null, "test-war.war", null, null, null, contextRoot, WEB_NAMESPACE, null);
         connectorConfigBuilder.connectorModule = new ConnectorModule(false, raModuleName, null, null, "test-rar.rar", null, null, null, null);
     }
 

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder14NakedUnpackedTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder14NakedUnpackedTest.java?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder14NakedUnpackedTest.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder14NakedUnpackedTest.java Sat Jan 23 23:28:10 2010
@@ -16,6 +16,8 @@
  */
 package org.apache.geronimo.j2ee.deployment;
 
+import java.util.jar.JarFile;
+
 import org.apache.geronimo.kernel.repository.Artifact;
 import org.apache.geronimo.kernel.util.JarUtils;
 
@@ -34,7 +36,7 @@
         locations.put(null, new Artifact("org.apache.geronimo.testsupport", "test-ear-javaee_5", "3.0-SNAPSHOT", "ear"));
         ejbConfigBuilder.ejbModule = new EJBModule(false, ejbModuleName, null, null, "ejb.jar/", null, null, null, null);
         webConfigBuilder.contextRoot = contextRoot;
-        webConfigBuilder.webModule = new WebModule(false, webModuleName, null, null, "war.war/", null, null, null, contextRoot, WEB_NAMESPACE, null);
+        webConfigBuilder.webModule = new WebModule(false, webModuleName, null, (JarFile)null, "war.war/", null, null, null, contextRoot, WEB_NAMESPACE, null);
         connectorConfigBuilder.connectorModule = new ConnectorModule(false, raModuleName, null, null, "rar.rar/", null, null, null, null);
     }
 

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder14Test.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder14Test.java?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder14Test.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder14Test.java Sat Jan 23 23:28:10 2010
@@ -16,6 +16,8 @@
  */
 package org.apache.geronimo.j2ee.deployment;
 
+import java.util.jar.JarFile;
+
 import org.apache.geronimo.kernel.repository.Artifact;
 import org.apache.geronimo.kernel.util.JarUtils;
 
@@ -34,7 +36,7 @@
         locations.put(null, new Artifact("org.apache.geronimo.testsupport", "test-ear-javaee_5", "3.0-SNAPSHOT", "ear"));
         ejbConfigBuilder.ejbModule = new EJBModule(false, ejbModuleName, null, null, "ejb.jar", null, null, null, null);
         webConfigBuilder.contextRoot = contextRoot;
-        webConfigBuilder.webModule = new WebModule(false, webModuleName, null, null, "war.war", null, null, null, contextRoot, WEB_NAMESPACE, null);
+        webConfigBuilder.webModule = new WebModule(false, webModuleName, null, (JarFile)null, "war.war", null, null, null, contextRoot, WEB_NAMESPACE, null);
         connectorConfigBuilder.connectorModule = new ConnectorModule(false, raModuleName, null, null, "rar.rar", null, null, null, null);
     }
 

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder14UnpackedTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder14UnpackedTest.java?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder14UnpackedTest.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder14UnpackedTest.java Sat Jan 23 23:28:10 2010
@@ -16,6 +16,8 @@
  */
 package org.apache.geronimo.j2ee.deployment;
 
+import java.util.jar.JarFile;
+
 import org.apache.geronimo.kernel.util.JarUtils;
 import org.apache.geronimo.kernel.repository.Artifact;
 
@@ -34,7 +36,7 @@
         locations.put(null, new Artifact("org.apache.geronimo.testsupport", "test-ear-javaee_5", "3.0-SNAPSHOT", "ear"));
         ejbConfigBuilder.ejbModule = new EJBModule(false, ejbModuleName, null, null, "ejb.jar/", null, null, null, null);
         webConfigBuilder.contextRoot = contextRoot;
-        webConfigBuilder.webModule = new WebModule(false, webModuleName, null, null, "war.war/", null, null, null, contextRoot, WEB_NAMESPACE, null);
+        webConfigBuilder.webModule = new WebModule(false, webModuleName, null, (JarFile)null, "war.war/", null, null, null, contextRoot, WEB_NAMESPACE, null);
         connectorConfigBuilder.connectorModule = new ConnectorModule(false, raModuleName, null, null, "rar.rar/", null, null, null, null);
     }
 

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder5AltDDTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder5AltDDTest.java?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder5AltDDTest.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder5AltDDTest.java Sat Jan 23 23:28:10 2010
@@ -16,6 +16,8 @@
  */
 package org.apache.geronimo.j2ee.deployment;
 
+import java.util.jar.JarFile;
+
 import org.apache.geronimo.kernel.util.JarUtils;
 import org.apache.geronimo.kernel.repository.Artifact;
 
@@ -33,7 +35,7 @@
         locations.put(null, new Artifact("org.apache.geronimo.testsupport", "test-ear-javaee_5", "3.0-SNAPSHOT", "ear"));
         ejbConfigBuilder.ejbModule = new EJBModule(false, ejbModuleName, null, null, "ejb.jar/", null, null, null, null);
         webConfigBuilder.contextRoot = contextRoot;
-        webConfigBuilder.webModule = new WebModule(false, webModuleName, null, null, "war.war/", null, null, null, contextRoot, WEB_NAMESPACE, null);
+        webConfigBuilder.webModule = new WebModule(false, webModuleName, null, (JarFile)null, "war.war/", null, null, null, contextRoot, WEB_NAMESPACE, null);
         connectorConfigBuilder.connectorModule = new ConnectorModule(false, raModuleName, null, null, "rar.rar", null, null, null, null);
     }
 

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder5AltDDUnpackedTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder5AltDDUnpackedTest.java?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder5AltDDUnpackedTest.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder5AltDDUnpackedTest.java Sat Jan 23 23:28:10 2010
@@ -16,6 +16,8 @@
  */
 package org.apache.geronimo.j2ee.deployment;
 
+import java.util.jar.JarFile;
+
 import org.apache.geronimo.kernel.util.JarUtils;
 import org.apache.geronimo.kernel.repository.Artifact;
 
@@ -33,7 +35,7 @@
         locations.put(null, new Artifact("org.apache.geronimo.testsupport", "test-ear-javaee_5", "3.0-SNAPSHOT", "ear"));
         ejbConfigBuilder.ejbModule = new EJBModule(false, ejbModuleName, null, null, "ejb.jar/", null, null, null, null);
         webConfigBuilder.contextRoot = contextRoot;
-        webConfigBuilder.webModule = new WebModule(false, webModuleName, null, null, "war.war/", null, null, null, contextRoot, WEB_NAMESPACE, null);
+        webConfigBuilder.webModule = new WebModule(false, webModuleName, null, (JarFile)null, "war.war/", null, null, null, contextRoot, WEB_NAMESPACE, null);
         connectorConfigBuilder.connectorModule = new ConnectorModule(false, raModuleName, null, null, "rar.rar/", null, null, null, null);
     }
 

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder5NakedTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder5NakedTest.java?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder5NakedTest.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder5NakedTest.java Sat Jan 23 23:28:10 2010
@@ -16,6 +16,8 @@
  */
 package org.apache.geronimo.j2ee.deployment;
 
+import java.util.jar.JarFile;
+
 import org.apache.geronimo.kernel.util.JarUtils;
 import org.apache.geronimo.kernel.repository.Artifact;
 
@@ -34,7 +36,7 @@
         locations.put(null, new Artifact("org.apache.geronimo.testsupport", "test-ear-javaee_5", "3.0-SNAPSHOT", "ear"));
         ejbConfigBuilder.ejbModule = new EJBModule(false, ejbModuleName, null, null, "test-ejb-jar.jar", null, null, null, null);
         webConfigBuilder.contextRoot = contextRoot;
-        webConfigBuilder.webModule = new WebModule(false, webModuleName, null, null, "test-war.war", null, null, null, contextRoot, WEB_NAMESPACE, null);
+        webConfigBuilder.webModule = new WebModule(false, webModuleName, null, (JarFile)null, "test-war.war", null, null, null, contextRoot, WEB_NAMESPACE, null);
         connectorConfigBuilder.connectorModule = new ConnectorModule(false, raModuleName, null, null, "test-rar.rar", null, null, null, null);
     }
 

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder5NakedUnpackedTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder5NakedUnpackedTest.java?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder5NakedUnpackedTest.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder5NakedUnpackedTest.java Sat Jan 23 23:28:10 2010
@@ -16,6 +16,8 @@
  */
 package org.apache.geronimo.j2ee.deployment;
 
+import java.util.jar.JarFile;
+
 import org.apache.geronimo.kernel.util.JarUtils;
 import org.apache.geronimo.kernel.repository.Artifact;
 
@@ -34,7 +36,7 @@
         locations.put(null, new Artifact("org.apache.geronimo.testsupport", "test-ear-javaee_5", "3.0-SNAPSHOT", "ear"));
         ejbConfigBuilder.ejbModule = new EJBModule(false, ejbModuleName, null, null, "ejb.jar/", null, null, null, null);
         webConfigBuilder.contextRoot = contextRoot;
-        webConfigBuilder.webModule = new WebModule(false, webModuleName, null, null, "war.war/", null, null, null, contextRoot, WEB_NAMESPACE, null);
+        webConfigBuilder.webModule = new WebModule(false, webModuleName, null, (JarFile)null, "war.war/", null, null, null, contextRoot, WEB_NAMESPACE, null);
         connectorConfigBuilder.connectorModule = new ConnectorModule(false, raModuleName, null, null, "rar.rar/", null, null, null, null);
     }
 

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder5Test.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder5Test.java?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder5Test.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder5Test.java Sat Jan 23 23:28:10 2010
@@ -16,6 +16,8 @@
  */
 package org.apache.geronimo.j2ee.deployment;
 
+import java.util.jar.JarFile;
+
 import org.apache.geronimo.kernel.util.JarUtils;
 import org.apache.geronimo.kernel.repository.Artifact;
 
@@ -34,7 +36,7 @@
         locations.put(null, new Artifact("org.apache.geronimo.testsupport", "test-ear-javaee_5", "3.0-SNAPSHOT", "ear"));
         ejbConfigBuilder.ejbModule = new EJBModule(false, ejbModuleName, null, null, "ejb.jar", null, null, null, null);
         webConfigBuilder.contextRoot = contextRoot;
-        webConfigBuilder.webModule = new WebModule(false, webModuleName, null, null, "war.war", null, null, null, contextRoot, WEB_NAMESPACE, null);
+        webConfigBuilder.webModule = new WebModule(false, webModuleName, null, (JarFile)null, "war.war", null, null, null, contextRoot, WEB_NAMESPACE, null);
         connectorConfigBuilder.connectorModule = new ConnectorModule(false, raModuleName, null, null, "rar.rar", null, null, null, null);
     }
 

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder5UnpackedTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder5UnpackedTest.java?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder5UnpackedTest.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder5UnpackedTest.java Sat Jan 23 23:28:10 2010
@@ -16,6 +16,8 @@
  */
 package org.apache.geronimo.j2ee.deployment;
 
+import java.util.jar.JarFile;
+
 import org.apache.geronimo.kernel.util.JarUtils;
 import org.apache.geronimo.kernel.repository.Artifact;
 
@@ -34,7 +36,7 @@
         locations.put(null, new Artifact("org.apache.geronimo.testsupport", "test-ear-javaee_5", "3.0-SNAPSHOT", "ear"));
         ejbConfigBuilder.ejbModule = new EJBModule(false, ejbModuleName, null, null, "ejb.jar/", null, null, null, null);
         webConfigBuilder.contextRoot = contextRoot;
-        webConfigBuilder.webModule = new WebModule(false, webModuleName, null, null, "war.war/", null, null, null, contextRoot, WEB_NAMESPACE, null);
+        webConfigBuilder.webModule = new WebModule(false, webModuleName, null, (JarFile)null, "war.war/", null, null, null, contextRoot, WEB_NAMESPACE, null);
         connectorConfigBuilder.connectorModule = new ConnectorModule(false, raModuleName, null, null, "rar.rar/", null, null, null, null);
     }
 

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/MockConnectorConfigBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/MockConnectorConfigBuilder.java?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/MockConnectorConfigBuilder.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/MockConnectorConfigBuilder.java Sat Jan 23 23:28:10 2010
@@ -45,6 +45,10 @@
     private Bundle bundle;
     public Module connectorModule;
 
+    public Module createModule(Bundle bundle, Naming naming, ModuleIDBuilder idBuilder) throws DeploymentException {
+        return null;
+    }
+    
     public Module createModule(File plan, JarFile moduleFile, Naming naming, ModuleIDBuilder idBuilder) throws DeploymentException {
         AbstractName earName = naming.createRootName(new Artifact("test", "test-war", "", "rar"), NameFactory.NULL, NameFactory.J2EE_APPLICATION) ;
         AbstractName moduleName = naming.createChildName(earName, "rar", NameFactory.RESOURCE_ADAPTER_MODULE);

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/MockEJBConfigBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/MockEJBConfigBuilder.java?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/MockEJBConfigBuilder.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/MockEJBConfigBuilder.java Sat Jan 23 23:28:10 2010
@@ -41,6 +41,10 @@
     private Bundle bundle;
     public EJBModule ejbModule;
 
+    public Module createModule(Bundle bundle, Naming naming, ModuleIDBuilder idBuilder) throws DeploymentException {
+        return null;
+    }
+    
     public Module createModule(File plan, JarFile moduleFile, Naming naming, ModuleIDBuilder idBuilder) throws DeploymentException {
         AbstractName earName = naming.createRootName(new Artifact("test", "test-ejb-jar", "", "jar"), NameFactory.NULL, NameFactory.J2EE_APPLICATION) ;
         AbstractName moduleName = naming.createChildName(earName, "ejb-jar", NameFactory.EJB_MODULE);

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/MockWARConfigBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/MockWARConfigBuilder.java?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/MockWARConfigBuilder.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/MockWARConfigBuilder.java Sat Jan 23 23:28:10 2010
@@ -44,6 +44,10 @@
     public WebModule webModule;
     public String contextRoot;
 
+    public Module createModule(Bundle bundle, Naming naming, ModuleIDBuilder idBuilder) throws DeploymentException {
+        return null;
+    }
+    
     public Module createModule(File plan, JarFile moduleFile, Naming naming, ModuleIDBuilder idBuilder) throws DeploymentException {
         AbstractName earName = naming.createRootName(new Artifact("test", "test-war", "", "war"), NameFactory.NULL, NameFactory.J2EE_APPLICATION) ;
         AbstractName moduleName = naming.createChildName(earName, "war", NameFactory.WEB_MODULE);

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/SwitchingServiceRefBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/SwitchingServiceRefBuilder.java?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/SwitchingServiceRefBuilder.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/SwitchingServiceRefBuilder.java Sat Jan 23 23:28:10 2010
@@ -97,8 +97,8 @@
         }
 
         Bundle bundle = module.getEarContext().getDeploymentBundle();
-        Class jaxrpcClass = loadClass("javax.xml.rpc.Service", bundle);
-        Class jaxwsClass = loadClass("javax.xml.ws.Service", bundle);
+        Class jaxrpcClass = null;
+        Class jaxwsClass = null;
 
         XmlObject[] serviceRefs = specDD.selectChildren(serviceRefQNameSet);
 
@@ -107,6 +107,12 @@
         Map serviceRefMap = mapServiceRefs(gerServiceRefsUntyped);
 
         for (XmlObject serviceRef : serviceRefs) {
+            if (jaxrpcClass == null) {
+                jaxrpcClass = loadClass("javax.xml.rpc.Service", bundle);
+            }
+            if (jaxwsClass == null) {
+                jaxwsClass = loadClass("javax.xml.ws.Service", bundle);
+            }
             ServiceRefType serviceRefType = (ServiceRefType) convert(
                     serviceRef, JEE_CONVERTER, ServiceRefType.type);
 

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-security-builder/src/main/java/org/apache/geronimo/security/deployment/GeronimoSecurityBuilderImpl.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-security-builder/src/main/java/org/apache/geronimo/security/deployment/GeronimoSecurityBuilderImpl.java?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-security-builder/src/main/java/org/apache/geronimo/security/deployment/GeronimoSecurityBuilderImpl.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-security-builder/src/main/java/org/apache/geronimo/security/deployment/GeronimoSecurityBuilderImpl.java Sat Jan 23 23:28:10 2010
@@ -138,6 +138,9 @@
     }
 
     //MBE methods
+    public void createModule(Module module, Bundle bundle, Naming naming, ModuleIDBuilder idBuilder) throws DeploymentException {        
+    }
+
     public void createModule(Module module, Object plan, JarFile moduleFile, String targetPath, URL specDDUrl, Environment environment, Object moduleContextInfo, AbstractName earName, Naming naming, ModuleIDBuilder idBuilder) throws DeploymentException {
     }
 

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/AbstractWebModuleBuilder.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/AbstractWebModuleBuilder.java?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/AbstractWebModuleBuilder.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/AbstractWebModuleBuilder.java Sat Jan 23 23:28:10 2010
@@ -354,9 +354,8 @@
         ModuleList moduleLocations = (ModuleList) module.getRootEarContext().getGeneralData().get(ModuleList.class);
         URI baseUri = URI.create(module.getTargetPath());
         URI resolutionUri = invertURI(baseUri);
-        earContext.getCompleteManifestClassPath(module.getModuleFile(), baseUri, resolutionUri, manifestcp, moduleLocations);
-
-
+        earContext.getCompleteManifestClassPath(module.getDeployable(), baseUri, resolutionUri, manifestcp, moduleLocations);
+        
         WebAppType webApp = (WebAppType) module.getSpecDD();
         if ((webApp.getSecurityConstraintArray().length > 0 || webApp.getSecurityRoleArray().length > 0)) {
             if (!hasSecurityRealmName) {

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=902507&r1=902506&r2=902507&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 Jan 23 23:28:10 2010
@@ -132,6 +132,10 @@
             super(kernel, null, null, null, Collections.EMPTY_SET, null);
         }
 
+        public Module createModule(Bundle bundle, Naming naming, ModuleIDBuilder idBuilder) throws DeploymentException {
+            return null;
+        }
+        
         protected Module createModule(Object plan, JarFile moduleFile, String targetPath, URL specDDUrl, boolean standAlone, String contextRoot, AbstractName earName, Naming naming, ModuleIDBuilder idBuilder) throws DeploymentException {
             return null;
         }
@@ -145,6 +149,7 @@
         public String getSchemaNamespace() {
             return null;
         }
+        
     }
 
 

Modified: geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/main/java/org/apache/geronimo/jasper/deployment/JspModuleBuilderExtension.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/main/java/org/apache/geronimo/jasper/deployment/JspModuleBuilderExtension.java?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/main/java/org/apache/geronimo/jasper/deployment/JspModuleBuilderExtension.java (original)
+++ geronimo/server/trunk/plugins/jasper/geronimo-jasper-builder/src/main/java/org/apache/geronimo/jasper/deployment/JspModuleBuilderExtension.java Sat Jan 23 23:28:10 2010
@@ -109,6 +109,9 @@
         this.namingBuilders = namingBuilders;
     }
 
+    public void createModule(Module module, Bundle bundle, Naming naming, ModuleIDBuilder idBuilder) throws DeploymentException {
+    }
+
     public void createModule(Module module, Object plan, JarFile moduleFile, String targetPath, URL specDDUrl, Environment environment, Object moduleContextInfo, AbstractName earName, Naming naming, ModuleIDBuilder idBuilder) throws DeploymentException {
     }
 

Modified: geronimo/server/trunk/plugins/jaxws/geronimo-jaxws-ejb-builder/src/main/java/org/apache/geronimo/jaxws/ejb/builder/JAXWSEJBModuleBuilderExtension.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jaxws/geronimo-jaxws-ejb-builder/src/main/java/org/apache/geronimo/jaxws/ejb/builder/JAXWSEJBModuleBuilderExtension.java?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jaxws/geronimo-jaxws-ejb-builder/src/main/java/org/apache/geronimo/jaxws/ejb/builder/JAXWSEJBModuleBuilderExtension.java (original)
+++ geronimo/server/trunk/plugins/jaxws/geronimo-jaxws-ejb-builder/src/main/java/org/apache/geronimo/jaxws/ejb/builder/JAXWSEJBModuleBuilderExtension.java Sat Jan 23 23:28:10 2010
@@ -92,6 +92,9 @@
         this.wsGBeanData = kernel.getGBeanData(webServiceLinkTemplateName);
     }
 
+    public void createModule(Module module, Bundle bundle, Naming naming, ModuleIDBuilder idBuilder) throws DeploymentException {
+    }
+
     public void createModule(Module module, Object plan, JarFile moduleFile, String targetPath, URL specDDUrl, Environment environment, Object moduleContextInfo, AbstractName earName, Naming naming, ModuleIDBuilder idBuilder) throws DeploymentException {
         if (this.defaultEnvironment != null) {
             EnvironmentBuilder.mergeEnvironments(environment, this.defaultEnvironment);

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=902507&r1=902506&r2=902507&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 Jan 23 23:28:10 2010
@@ -38,6 +38,9 @@
 import javax.management.ObjectName;
 import javax.servlet.Servlet;
 import org.apache.geronimo.common.DeploymentException;
+import org.apache.geronimo.deployment.Deployable;
+import org.apache.geronimo.deployment.DeployableBundle;
+import org.apache.geronimo.deployment.DeployableJarFile;
 import org.apache.geronimo.deployment.ModuleIDBuilder;
 import org.apache.geronimo.deployment.NamespaceDrivenBuilder;
 import org.apache.geronimo.deployment.NamespaceDrivenBuilderCollection;
@@ -234,6 +237,72 @@
         return new GBeanData(kernel.getGBeanData(templateName));
     }
       
+    public Module createModule(Bundle bundle, Naming naming, ModuleIDBuilder idBuilder) throws DeploymentException {
+        if (bundle == null) {
+            throw new NullPointerException("bundle is null");
+        }
+        String contextPath = (String) bundle.getHeaders().get("Web-ContextPath");
+        if (contextPath == null) {
+            // not for us
+            return null;
+        }
+        
+        String specDD = null;
+        WebAppType webApp = null;
+        
+        URL specDDUrl = bundle.getEntry("WEB-INF/web.xml");
+        if (specDDUrl == null) {
+            webApp = WebAppType.Factory.newInstance();
+        } else {
+            try {
+                specDD = JarUtils.readAll(specDDUrl);
+
+                XmlObject parsed = XmlBeansUtil.parse(specDD);
+                WebAppDocument webAppDoc = convertToServletSchema(parsed);
+                webApp = webAppDoc.getWebApp();
+                check(webApp);
+            } catch (XmlException e) {
+                throw new DeploymentException("Error parsing web.xml for " + bundle.getSymbolicName(), e);
+            } catch (Exception e) {
+                throw new DeploymentException("Error reading web.xml for " + bundle.getSymbolicName(), e);
+            }
+        }
+        
+        AbstractName earName = null;
+        String targetPath = ".";   
+        boolean standAlone = true;
+        
+        Deployable deployable = new DeployableBundle(bundle);
+        // parse vendor dd
+        JettyWebAppType jettyWebApp = getJettyWebApp(null, deployable, standAlone, targetPath, webApp);
+
+        EnvironmentType environmentType = jettyWebApp.getEnvironment();
+        Environment environment = EnvironmentBuilder.buildEnvironment(environmentType, defaultEnvironment);
+
+        if (webApp.getDistributableArray().length == 1) {
+            clusteringBuilders.buildEnvironment(jettyWebApp, environment);
+        }
+
+        idBuilder.resolve(environment, bundle.getSymbolicName(), "wab");
+
+        AbstractName moduleName;
+        if (earName == null) {
+            earName = naming.createRootName(environment.getConfigId(), NameFactory.NULL, NameFactory.J2EE_APPLICATION);
+            moduleName = naming.createChildName(earName, environment.getConfigId().toString(), NameFactory.WEB_MODULE);
+        } else {
+            moduleName = naming.createChildName(earName, targetPath, NameFactory.WEB_MODULE);
+        }
+
+        // Create the AnnotatedApp interface for the WebModule
+        AnnotatedWebApp annotatedWebApp = new AnnotatedWebApp(webApp);
+
+        WebModule module = new WebModule(standAlone, moduleName, environment, deployable, targetPath, webApp, jettyWebApp, specDD, contextPath, JETTY_NAMESPACE, annotatedWebApp);
+        for (ModuleBuilderExtension mbe : moduleBuilderExtensions) {
+            mbe.createModule(module, bundle, naming, idBuilder);
+        }
+        return module;
+    }
+    
     protected Module createModule(Object plan, JarFile moduleFile, String targetPath, URL specDDUrl, boolean standAlone, String contextRoot, AbstractName earName, Naming naming, ModuleIDBuilder idBuilder) throws DeploymentException {
         assert moduleFile != null : "moduleFile is null";
         assert targetPath != null : "targetPath is null";
@@ -273,15 +342,15 @@
             webApp = WebAppType.Factory.newInstance();
         }
 
+        Deployable deployable = new DeployableJarFile(moduleFile);
         // parse vendor dd
-        JettyWebAppType jettyWebApp = getJettyWebApp(plan, moduleFile, standAlone, targetPath, webApp);
+        JettyWebAppType jettyWebApp = getJettyWebApp(plan, deployable, standAlone, targetPath, webApp);
         contextRoot = getContextRoot(jettyWebApp, contextRoot, webApp, standAlone, moduleFile, targetPath);
 
         EnvironmentType environmentType = jettyWebApp.getEnvironment();
         Environment environment = EnvironmentBuilder.buildEnvironment(environmentType, defaultEnvironment);
 
-        Boolean distributable = webApp.getDistributableArray().length == 1 ? TRUE : FALSE;
-        if (TRUE == distributable) {
+        if (webApp.getDistributableArray().length == 1) {
             clusteringBuilders.buildEnvironment(jettyWebApp, environment);
         }
 
@@ -303,8 +372,7 @@
         // Create the AnnotatedApp interface for the WebModule
         AnnotatedWebApp annotatedWebApp = new AnnotatedWebApp(webApp);
 
-        WebModule module = new WebModule(standAlone, moduleName, environment, moduleFile, targetPath, webApp, jettyWebApp, specDD, contextRoot, JETTY_NAMESPACE, annotatedWebApp);
-
+        WebModule module = new WebModule(standAlone, moduleName, 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);
         }
@@ -322,7 +390,7 @@
         return contextRoot;
     }
 
-    JettyWebAppType getJettyWebApp(Object plan, JarFile moduleFile, boolean standAlone, String targetPath, WebAppType webApp) throws DeploymentException {
+    JettyWebAppType getJettyWebApp(Object plan, Deployable deployable, boolean standAlone, String targetPath, WebAppType webApp) throws DeploymentException {
         XmlObject rawPlan = null;
         try {
             // load the geronimo-web.xml from either the supplied plan or from the earFile
@@ -333,17 +401,14 @@
                     if (plan != null) {
                         rawPlan = XmlBeansUtil.parse(((File) plan).toURL(), getClass().getClassLoader());
                     } else {
-                        URL path = JarUtils.createJarURL(moduleFile, "WEB-INF/geronimo-web.xml");
-                        try {
+                        URL path = deployable.getResource("WEB-INF/geronimo-web.xml");
+                        if (path == null) {
+                            path = deployable.getResource("WEB-INF/geronimo-jetty.xml");
+                        }
+                        if (path == null) {
+                            log.warn("Web application " + targetPath + " does not contain a WEB-INF/geronimo-web.xml deployment plan.  This may or may not be a problem, depending on whether you have things like resource references that need to be resolved.  You can also give the deployer a separate deployment plan file on the command line.");
+                        } else {
                             rawPlan = XmlBeansUtil.parse(path, getClass().getClassLoader());
-                        } catch (FileNotFoundException e) {
-                            path = JarUtils.createJarURL(moduleFile, "WEB-INF/geronimo-jetty.xml");
-                            try {
-                                rawPlan = XmlBeansUtil.parse(path, getClass().getClassLoader());
-                            } catch (FileNotFoundException e1) {
-                                log.warn(
-                                        "Web application " + targetPath + " does not contain a WEB-INF/geronimo-web.xml deployment plan.  This may or may not be a problem, depending on whether you have things like resource references that need to be resolved.  You can also give the deployer a separate deployment plan file on the command line.");
-                            }
                         }
                     }
                 }

Modified: geronimo/server/trunk/plugins/jetty8/geronimo-jetty8-builder/src/test/java/org/apache/geronimo/jetty8/deployment/PlanParsingTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jetty8/geronimo-jetty8-builder/src/test/java/org/apache/geronimo/jetty8/deployment/PlanParsingTest.java?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jetty8/geronimo-jetty8-builder/src/test/java/org/apache/geronimo/jetty8/deployment/PlanParsingTest.java (original)
+++ geronimo/server/trunk/plugins/jetty8/geronimo-jetty8-builder/src/test/java/org/apache/geronimo/jetty8/deployment/PlanParsingTest.java Sat Jan 23 23:28:10 2010
@@ -26,6 +26,7 @@
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.jar.JarFile;
 
+import org.apache.geronimo.deployment.DeployableJarFile;
 import org.apache.geronimo.deployment.service.GBeanBuilder;
 import org.apache.geronimo.deployment.xbeans.ArtifactType;
 import org.apache.geronimo.deployment.xbeans.EnvironmentType;
@@ -159,7 +160,7 @@
         URL war = classLoader.getResource("deployables/war5");
         assertTrue(war != null);
         UnpackedJarFile moduleFile = new UnpackedJarFile(new File(war.getFile()));
-        JettyWebAppType jettyWebApp = builder.getJettyWebApp(null, moduleFile, true, null, null);
+        JettyWebAppType jettyWebApp = builder.getJettyWebApp(null, new DeployableJarFile(moduleFile), true, null, null);
         moduleFile.close();
         assertEquals(1, jettyWebApp.getResourceRefArray().length);
     }
@@ -168,7 +169,7 @@
         URL war = classLoader.getResource("deployables/war6.war");
         assertTrue(war != null);
         JarFile moduleFile = new JarFile(new File(war.getFile()));
-        JettyWebAppType jettyWebApp = builder.getJettyWebApp(null, moduleFile, true, null, null);
+        JettyWebAppType jettyWebApp = builder.getJettyWebApp(null, new DeployableJarFile(moduleFile), true, null, null);
         moduleFile.close();
         assertEquals(1, jettyWebApp.getResourceRefArray().length);
     }
@@ -212,7 +213,7 @@
         assertTrue(war != null);
         JarFile dummyFile = new JarFile(new File(war.getFile()));
 
-        webApp = builder.getJettyWebApp(webApp, dummyFile, true, null, null);
+        webApp = builder.getJettyWebApp(webApp, new DeployableJarFile(dummyFile), true, null, null);
 
         assertEquals("myContextRoot", webApp.getContextRoot());
 
@@ -223,7 +224,7 @@
         URL war = classLoader.getResource("deployables/war2.war");
         assertTrue(war != null);
         JarFile dummyFile = new JarFile(new File(war.getFile()));
-        JettyWebAppType GerWebAppType = builder.getJettyWebApp(null, dummyFile, true, null, null);
+        JettyWebAppType GerWebAppType = builder.getJettyWebApp(null, new DeployableJarFile(dummyFile), true, null, null);
         WebAppType webApp = getWebApp(dummyFile);
         String contextRoot = builder.getContextRoot(GerWebAppType, null, webApp, true, dummyFile, null);
 
@@ -236,7 +237,7 @@
         URL war = classLoader.getResource("deployables/war2.war");
         assertTrue(war != null);
         JarFile dummyFile = new JarFile(new File(war.getFile()));
-        JettyWebAppType GerWebAppType = builder.getJettyWebApp(null, dummyFile, false, "myTargetPath", null);
+        JettyWebAppType GerWebAppType = builder.getJettyWebApp(null, new DeployableJarFile(dummyFile), false, "myTargetPath", null);
         WebAppType webApp = getWebApp(dummyFile);
         String contextRoot = builder.getContextRoot(GerWebAppType, null, webApp, false, dummyFile, "myTargetPath");
         assertEquals("myTargetPath", contextRoot);
@@ -252,7 +253,7 @@
         URL war = classLoader.getResource("deployables/war2.war");
         assertTrue(war != null);
         JarFile dummyFile = new JarFile(new File(war.getFile()));
-        JettyWebAppType GerWebAppType = builder.getJettyWebApp(null, dummyFile, false, "myTargetPath", webAppType);
+        JettyWebAppType GerWebAppType = builder.getJettyWebApp(null, new DeployableJarFile(dummyFile), false, "myTargetPath", webAppType);
 //        WebAppType webApp = getWebApp(dummyFile);
         String contextRoot = builder.getContextRoot(GerWebAppType, null, webAppType, false, dummyFile, "myTargetPath");
 

Modified: geronimo/server/trunk/plugins/myfaces/geronimo-myfaces-builder/src/main/java/org/apache/geronimo/myfaces/deployment/MyFacesModuleBuilderExtension.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/myfaces/geronimo-myfaces-builder/src/main/java/org/apache/geronimo/myfaces/deployment/MyFacesModuleBuilderExtension.java?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/myfaces/geronimo-myfaces-builder/src/main/java/org/apache/geronimo/myfaces/deployment/MyFacesModuleBuilderExtension.java (original)
+++ geronimo/server/trunk/plugins/myfaces/geronimo-myfaces-builder/src/main/java/org/apache/geronimo/myfaces/deployment/MyFacesModuleBuilderExtension.java Sat Jan 23 23:28:10 2010
@@ -93,6 +93,9 @@
         this.namingBuilders = namingBuilders;
     }
 
+    public void createModule(Module module, Bundle bundle, Naming naming, ModuleIDBuilder idBuilder) throws DeploymentException {
+    }
+    
     public void createModule(Module module, Object plan, JarFile moduleFile, String targetPath, URL specDDUrl, Environment environment, Object moduleContextInfo, AbstractName earName, Naming naming, ModuleIDBuilder idBuilder) throws DeploymentException {
         if (!(module instanceof WebModule)) {
             //not a web module, nothing to do

Modified: geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbModuleBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbModuleBuilder.java?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbModuleBuilder.java (original)
+++ geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbModuleBuilder.java Sat Jan 23 23:28:10 2010
@@ -201,6 +201,10 @@
         return EjbModuleBuilder.OPENEJBJAR_NAMESPACE;
     }
 
+    public Module createModule(Bundle bundle, Naming naming, ModuleIDBuilder idBuilder) throws DeploymentException {
+        return null;
+    }
+    
     public Module createModule(File plan, JarFile moduleFile, Naming naming, ModuleIDBuilder idBuilder) throws DeploymentException {
         return createModule(plan, moduleFile, "ejb.jar", null, null, null, naming, idBuilder);
     }
@@ -520,7 +524,7 @@
         EARContext moduleContext = module.getEarContext();
         ModuleList moduleLocations = (ModuleList) module.getRootEarContext().getGeneralData().get(ModuleList.class);
         URI baseUri = URI.create(module.getTargetPath());
-        moduleContext.getCompleteManifestClassPath(module.getModuleFile(), baseUri, URI.create("."), manifestcp, moduleLocations);
+        moduleContext.getCompleteManifestClassPath(module.getDeployable(), baseUri, URI.create("."), manifestcp, moduleLocations);
         moduleContext.getGeneralData().put(ClassPathList.class, manifestcp);
 
         for (ModuleBuilderExtension builder : moduleBuilderExtensions) {

Modified: geronimo/server/trunk/plugins/openejb/geronimo-openejb-clustering-builder-wadi/src/main/java/org/apache/geronimo/openejb/deployment/cluster/WADIOpenEJBClusteringBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/geronimo-openejb-clustering-builder-wadi/src/main/java/org/apache/geronimo/openejb/deployment/cluster/WADIOpenEJBClusteringBuilder.java?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/openejb/geronimo-openejb-clustering-builder-wadi/src/main/java/org/apache/geronimo/openejb/deployment/cluster/WADIOpenEJBClusteringBuilder.java (original)
+++ geronimo/server/trunk/plugins/openejb/geronimo-openejb-clustering-builder-wadi/src/main/java/org/apache/geronimo/openejb/deployment/cluster/WADIOpenEJBClusteringBuilder.java Sat Jan 23 23:28:10 2010
@@ -208,6 +208,9 @@
         }
     }
 
+    public void createModule(Module module, Bundle bundle, Naming naming, ModuleIDBuilder idBuilder) throws DeploymentException {
+    }
+
     public void createModule(Module module,
         Object plan,
         JarFile moduleFile,

Modified: geronimo/server/trunk/plugins/openjpa2/geronimo-persistence-jpa20-builder/src/main/java/org/apache/geronimo/persistence/builder/PersistenceUnitBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openjpa2/geronimo-persistence-jpa20-builder/src/main/java/org/apache/geronimo/persistence/builder/PersistenceUnitBuilder.java?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/openjpa2/geronimo-persistence-jpa20-builder/src/main/java/org/apache/geronimo/persistence/builder/PersistenceUnitBuilder.java (original)
+++ geronimo/server/trunk/plugins/openjpa2/geronimo-persistence-jpa20-builder/src/main/java/org/apache/geronimo/persistence/builder/PersistenceUnitBuilder.java Sat Jan 23 23:28:10 2010
@@ -87,6 +87,9 @@
         this.defaultPersistenceUnitProperties = defaultPersistenceUnitProperties == null ? new Properties() : defaultPersistenceUnitProperties;
     }
 
+    public void createModule(Module module, Bundle bundle, Naming naming, ModuleIDBuilder idBuilder) throws DeploymentException {
+    }
+
     public void createModule(Module module, Object plan, JarFile moduleFile, String targetPath, URL specDDUrl, Environment environment, Object moduleContextInfo, AbstractName earName, Naming naming, ModuleIDBuilder idBuilder) throws DeploymentException {
     }
 

Modified: geronimo/server/trunk/plugins/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/pom.xml?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/pom.xml (original)
+++ geronimo/server/trunk/plugins/pom.xml Sat Jan 23 23:28:10 2010
@@ -137,6 +137,7 @@
         <!--<module>procrun</module>-->
         <module>jetty8</module>
         <module>tomcat</module>
+        <module>wab</module>
     </modules>
 
     <profiles>

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=902507&r1=902506&r2=902507&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 Jan 23 23:28:10 2010
@@ -34,6 +34,9 @@
 import javax.servlet.Servlet;
 
 import org.apache.geronimo.common.DeploymentException;
+import org.apache.geronimo.deployment.Deployable;
+import org.apache.geronimo.deployment.DeployableBundle;
+import org.apache.geronimo.deployment.DeployableJarFile;
 import org.apache.geronimo.deployment.ModuleIDBuilder;
 import org.apache.geronimo.deployment.NamespaceDrivenBuilder;
 import org.apache.geronimo.deployment.NamespaceDrivenBuilderCollection;
@@ -58,6 +61,7 @@
 import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
 import org.apache.geronimo.kernel.Kernel;
 import org.apache.geronimo.kernel.Naming;
+import org.apache.geronimo.kernel.repository.Artifact;
 import org.apache.geronimo.kernel.repository.Environment;
 import org.apache.geronimo.kernel.util.JarUtils;
 import org.apache.geronimo.naming.deployment.ENCConfigBuilder;
@@ -159,6 +163,77 @@
         doStop();
     }
 
+    public Module createModule(Bundle bundle, Naming naming, ModuleIDBuilder idBuilder) throws DeploymentException {
+        if (bundle == null) {
+            throw new NullPointerException("bundle is null");
+        }
+        String contextPath = (String) bundle.getHeaders().get("Web-ContextPath");
+        if (contextPath == null) {
+            // not for us
+            return null;
+        }
+        
+        String specDD = null;
+        WebAppType webApp = null;
+        Boolean isJavaee;
+        
+        URL specDDUrl = bundle.getEntry("WEB-INF/web.xml");
+        if (specDDUrl == null) {
+            webApp = WebAppType.Factory.newInstance();
+            isJavaee = true;
+        } else {
+            try {
+                specDD = JarUtils.readAll(specDDUrl);
+
+                XmlObject parsed = XmlBeansUtil.parse(specDD);
+                isJavaee = "http://java.sun.com/xml/ns/javaee".equals(getRootNamespace(parsed));
+                
+                WebAppDocument webAppDoc = convertToServletSchema(parsed);
+                webApp = webAppDoc.getWebApp();
+                check(webApp);
+            } catch (XmlException e) {
+                throw new DeploymentException("Error parsing web.xml for " + bundle.getSymbolicName(), e);
+            } catch (Exception e) {
+                throw new DeploymentException("Error reading web.xml for " + bundle.getSymbolicName(), e);
+            }
+        }
+        
+        AbstractName earName = null;
+        String targetPath = ".";   
+        boolean standAlone = true;
+        
+        Deployable deployable = new DeployableBundle(bundle);
+        // parse vendor dd
+        TomcatWebAppType tomcatWebApp = getTomcatWebApp(null, deployable, standAlone, targetPath, webApp);
+
+        EnvironmentType environmentType = tomcatWebApp.getEnvironment();
+        Environment environment = EnvironmentBuilder.buildEnvironment(environmentType, defaultEnvironment);
+
+        if (webApp.getDistributableArray().length == 1) {
+            clusteringBuilders.buildEnvironment(tomcatWebApp, environment);
+        }
+
+        idBuilder.resolve(environment, bundle.getSymbolicName(), "wab");
+        
+        AbstractName moduleName;
+        if (earName == null) {
+            earName = naming.createRootName(environment.getConfigId(), NameFactory.NULL, NameFactory.J2EE_APPLICATION);
+            moduleName = naming.createChildName(earName, environment.getConfigId().toString(), NameFactory.WEB_MODULE);
+        } else {
+            moduleName = naming.createChildName(earName, targetPath, NameFactory.WEB_MODULE);
+        }
+
+        // Create the AnnotatedApp interface for the WebModule
+        AnnotatedWebApp annotatedWebApp = new AnnotatedWebApp(webApp);
+
+        WebModule module = new WebModule(standAlone, moduleName, environment, deployable, targetPath, webApp, tomcatWebApp, specDD, contextPath, TOMCAT_NAMESPACE, annotatedWebApp);
+        for (ModuleBuilderExtension mbe : moduleBuilderExtensions) {
+            mbe.createModule(module, bundle, naming, idBuilder);
+        }
+        module.getSharedContext().put(IS_JAVAEE, isJavaee);
+        return module;
+    }
+    
     protected Module createModule(Object plan, JarFile moduleFile, String targetPath, URL specDDUrl, boolean standAlone, String contextRoot, AbstractName earName, Naming naming, ModuleIDBuilder idBuilder) throws DeploymentException {
         assert moduleFile != null : "moduleFile is null";
         assert targetPath != null : "targetPath is null";
@@ -180,14 +255,8 @@
             // we found web.xml, if it won't parse that's an error.
             XmlObject parsed = XmlBeansUtil.parse(specDD);
             //Dont save updated xml if it isn't javaee
-            XmlCursor cursor = parsed.newCursor();
-            try {
-                cursor.toStartDoc();
-                cursor.toFirstChild();
-                isJavaee = "http://java.sun.com/xml/ns/javaee".equals(cursor.getName().getNamespaceURI());
-            } finally {
-                cursor.dispose();
-            }
+            isJavaee = "http://java.sun.com/xml/ns/javaee".equals(getRootNamespace(parsed));
+
             WebAppDocument webAppDoc = convertToServletSchema(parsed);
             webApp = webAppDoc.getWebApp();
             check(webApp);
@@ -205,41 +274,28 @@
             //else ignore as jee5 allows optional spec dd for .war's
         }
 
-        if (webApp == null)
+        if (webApp == null) {
             webApp = WebAppType.Factory.newInstance();
-
+        }
+        
+        Deployable deployable = new DeployableJarFile(moduleFile);
         // parse vendor dd
-        TomcatWebAppType tomcatWebApp = getTomcatWebApp(plan, moduleFile, standAlone, targetPath, webApp);
+        TomcatWebAppType tomcatWebApp = getTomcatWebApp(plan, deployable, standAlone, targetPath, webApp);
         contextRoot = getContextRoot(tomcatWebApp, contextRoot, webApp, standAlone, moduleFile, targetPath);
 
         EnvironmentType environmentType = tomcatWebApp.getEnvironment();
         Environment environment = EnvironmentBuilder.buildEnvironment(environmentType, defaultEnvironment);
 
-        Boolean distributable = webApp.getDistributableArray().length == 1 ? TRUE : FALSE;
-        if (TRUE == distributable) {
+        if (webApp.getDistributableArray().length == 1) {
             clusteringBuilders.buildEnvironment(tomcatWebApp, environment);
         }
 
         // Note: logic elsewhere depends on the default artifact ID being the file name less extension (ConfigIDExtractor)
-        String warName = "";
-        File temp = new File(moduleFile.getName());
-        if (temp.isFile()) {
-            warName = temp.getName();
-            if (warName.lastIndexOf('.') > -1) {
-                warName = warName.substring(0, warName.lastIndexOf('.'));
-            }
-        } else {
-            try {
-                warName = temp.getCanonicalFile().getName();
-                if (warName.equals("")) {
-                    // Root directory
-                    warName = "$root-dir$";
-                }
-            } catch (IOException e) {
-                //really?
-            }
+        String warName = new File(moduleFile.getName()).getName();
+        if (warName.lastIndexOf('.') > -1) {
+            warName = warName.substring(0, warName.lastIndexOf('.'));
         }
-        idBuilder.resolve(environment, warName, "car");
+        idBuilder.resolve(environment, warName, "war");
 
         AbstractName moduleName;
         if (earName == null) {
@@ -252,7 +308,7 @@
         // Create the AnnotatedApp interface for the WebModule
         AnnotatedWebApp annotatedWebApp = new AnnotatedWebApp(webApp);
 
-        WebModule module = new WebModule(standAlone, moduleName, environment, moduleFile, targetPath, webApp, tomcatWebApp, specDD, contextRoot, TOMCAT_NAMESPACE, annotatedWebApp);
+        WebModule module = new WebModule(standAlone, moduleName, 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);
         }
@@ -260,6 +316,17 @@
         return module;
     }
 
+    private static String getRootNamespace(XmlObject object) {
+        XmlCursor cursor = object.newCursor();
+        try {
+            cursor.toStartDoc();
+            cursor.toFirstChild();
+            return cursor.getName().getNamespaceURI();
+        } finally {
+            cursor.dispose();
+        }
+    }
+    
     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()) {
@@ -281,7 +348,7 @@
     }
 
 
-    TomcatWebAppType getTomcatWebApp(Object plan, JarFile moduleFile, boolean standAlone, String targetPath, WebAppType webApp) throws DeploymentException {
+    TomcatWebAppType getTomcatWebApp(Object plan, Deployable deployable, boolean standAlone, String targetPath, WebAppType webApp) throws DeploymentException {
         XmlObject rawPlan = null;
         try {
             // load the geronimo-web.xml from either the supplied plan or from the earFile
@@ -292,16 +359,14 @@
                     if (plan != null) {
                         rawPlan = XmlBeansUtil.parse(((File) plan).toURL(), getClass().getClassLoader());
                     } else {
-                        URL path = JarUtils.createJarURL(moduleFile, "WEB-INF/geronimo-web.xml");
-                        try {
+                        URL path = deployable.getResource("WEB-INF/geronimo-web.xml");
+                        if (path == null) {
+                            path = deployable.getResource("WEB-INF/geronimo-tomcat.xml");
+                        }
+                        if (plan == null) {
+                            log.warn("Web application " + targetPath + " does not contain a WEB-INF/geronimo-web.xml deployment plan.  This may or may not be a problem, depending on whether you have things like resource references that need to be resolved.  You can also give the deployer a separate deployment plan file on the command line.");                            
+                        } else {
                             rawPlan = XmlBeansUtil.parse(path, getClass().getClassLoader());
-                        } catch (FileNotFoundException e) {
-                            path = JarUtils.createJarURL(moduleFile, "WEB-INF/geronimo-tomcat.xml");
-                            try {
-                                rawPlan = XmlBeansUtil.parse(path, getClass().getClassLoader());
-                            } catch (FileNotFoundException e1) {
-                                log.warn("Web application " + targetPath + " does not contain a WEB-INF/geronimo-web.xml deployment plan.  This may or may not be a problem, depending on whether you have things like resource references that need to be resolved.  You can also give the deployer a separate deployment plan file on the command line.");
-                            }
                         }
                     }
                 }

Added: geronimo/server/trunk/plugins/wab/TODO
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/wab/TODO?rev=902507&view=auto
==============================================================================
--- geronimo/server/trunk/plugins/wab/TODO (added)
+++ geronimo/server/trunk/plugins/wab/TODO Sat Jan 23 23:28:10 2010
@@ -0,0 +1,7 @@
+TODO:
+ - extender needs to start tracking bundles only once kernel is fully initialized (all plugins are loaded)
+ - rfc66 contextpath collision detection
+ - for collision detection the extender will need to know all the contextPaths of other Java EE apps deployed
+ - register ServerContext into service registry (Tomcat & Jetty)
+ - extender needs to check/wait for web container to be available
+

Modified: geronimo/server/trunk/plugins/wab/geronimo-web-extender/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/wab/geronimo-web-extender/pom.xml?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/wab/geronimo-web-extender/pom.xml (original)
+++ geronimo/server/trunk/plugins/wab/geronimo-web-extender/pom.xml Sat Jan 23 23:28:10 2010
@@ -50,6 +50,12 @@
             <groupId>org.ops4j.pax.logging</groupId>
             <artifactId>pax-logging-api</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>org.apache.geronimo.modules</groupId>
+            <artifactId>geronimo-web-2.5-builder</artifactId>
+            <version>${version}</version>
+        </dependency>
     </dependencies>
 
     <build>
@@ -63,7 +69,9 @@
                             org.osgi.service.event;resolution:=optional,
                             *
                         </Import-Package>
+<!--
                         <Bundle-Activator>org.apache.geronimo.osgi.web.WebContainerExtender</Bundle-Activator>
+-->
                     </instructions>
                 </configuration>
             </plugin>

Modified: geronimo/server/trunk/plugins/wab/geronimo-web-extender/src/main/java/org/apache/geronimo/osgi/web/WebApplication.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/wab/geronimo-web-extender/src/main/java/org/apache/geronimo/osgi/web/WebApplication.java?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/wab/geronimo-web-extender/src/main/java/org/apache/geronimo/osgi/web/WebApplication.java (original)
+++ geronimo/server/trunk/plugins/wab/geronimo-web-extender/src/main/java/org/apache/geronimo/osgi/web/WebApplication.java Sat Jan 23 23:28:10 2010
@@ -18,8 +18,32 @@
  */
 package org.apache.geronimo.osgi.web;
 
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.concurrent.atomic.AtomicBoolean;
 
+import org.apache.geronimo.deployment.ModuleIDBuilder;
+import org.apache.geronimo.gbean.AbstractName;
+import org.apache.geronimo.gbean.GBeanData;
+import org.apache.geronimo.j2ee.deployment.BundleDeploymentContext;
+import org.apache.geronimo.j2ee.deployment.EARContext;
+import org.apache.geronimo.j2ee.deployment.ModuleBuilder;
+import org.apache.geronimo.j2ee.deployment.NamingBuilder;
+import org.apache.geronimo.j2ee.deployment.WebModule;
+import org.apache.geronimo.j2ee.jndi.ApplicationJndi;
+import org.apache.geronimo.j2ee.jndi.JndiKey;
+import org.apache.geronimo.j2ee.jndi.JndiScope;
+import org.apache.geronimo.kernel.Kernel;
+import org.apache.geronimo.kernel.Naming;
+import org.apache.geronimo.kernel.config.ConfigurationData;
+import org.apache.geronimo.kernel.config.ConfigurationManager;
+import org.apache.geronimo.kernel.config.ConfigurationUtil;
+import org.apache.geronimo.kernel.config.NoSuchConfigException;
+import org.apache.geronimo.kernel.repository.Artifact;
 import org.osgi.framework.Bundle;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -44,6 +68,8 @@
     private final AtomicBoolean running = new AtomicBoolean();
     
     private boolean destroyed;
+    
+    private Artifact deployedArtifact;
 
     /**
      * Construct a WebApplicationImp object to represent a
@@ -56,7 +82,7 @@
     public WebApplication(WebContainerExtender extender, Bundle bundle, String contextPath) {
         this.extender = extender;
         this.bundle = bundle;
-        this.contextPath = contextPath;
+        this.contextPath = contextPath;       
     }
 
     public String getContextPath() {
@@ -101,22 +127,18 @@
     }
 
     private void deploying() {
-        LOGGER.debug("Deploying bundle {}", getBundle().getSymbolicName());
         extender.getEventDispatcher().deploying(bundle, contextPath);
     }
 
     private void deployed() {
-        LOGGER.debug("Deployed bundle {}", getBundle().getSymbolicName());
         extender.getEventDispatcher().deployed(bundle, contextPath);
     }
 
     private void undeploying() {
-        LOGGER.debug("Undeploying bundle {}", bundle.getSymbolicName());
         extender.getEventDispatcher().undeploying(bundle, contextPath);
     }
 
     private void undeployed() {
-        LOGGER.debug("Undeployed bundle {}", bundle.getSymbolicName());
         extender.getEventDispatcher().undeployed(bundle, contextPath);
     }
 
@@ -131,12 +153,90 @@
         if (destroyed) {
             return;
         }
+        ConfigurationData configurationData = null;
         try {
             // send out a broadcast alert that we're going to do this
             deploying();
+                       
+            ConfigurationManager configurationManager = extender.getConfigurationManager();
+                        
+            File configSer = bundle.getBundleContext().getDataFile("config.ser");
+            if (configSer.exists() && configSer.lastModified() == bundle.getLastModified()) {
+                LOGGER.info("Redeploying WAB {} at {}", new Object[] {bundle, contextPath});
+                
+                FileInputStream in = new FileInputStream(configSer);
+                try {
+                    configurationData = ConfigurationUtil.readConfigurationData(in);
+                } finally {
+                    in.close();
+                }
+            } else {
+                LOGGER.info("Deploying WAB {} at {}", new Object[] {bundle, contextPath});
+                
+                ModuleIDBuilder idBuilder = new ModuleIDBuilder();
+                Kernel kernel = extender.getKernel();
+                Naming naming = kernel.getNaming();
+                ModuleBuilder webModuleBuilder = extender.getWebModuleBuilder();    
+                
+                WebModule webModule = (WebModule) webModuleBuilder.createModule(bundle, naming, idBuilder);
+
+                BundleDeploymentContext deploymentContext = 
+                    new BundleDeploymentContext(
+                        webModule.getEnvironment(),
+                        webModule.getType(),
+                        naming,
+                        configurationManager,
+                        bundle.getBundleContext(),
+                        extender.getServerName(),
+                        webModule.getModuleName(),
+                        extender.getTransactionManagerObjectName(),
+                        extender.getConnectionTrackerObjectName(),
+                        extender.getCorbaGBeanObjectName(),
+                        new HashMap(),
+                        bundle);
+                webModule.setEarContext(deploymentContext);
+                webModule.setRootEarContext(deploymentContext);
+
+                deploymentContext.flush();
+                deploymentContext.initializeConfiguration();
+
+                webModuleBuilder.initContext(deploymentContext, webModule, bundle);
+                
+                AbstractName appJndiName = naming.createChildName(deploymentContext.getModuleName(), "ApplicationJndi", "ApplicationJndi");
+                deploymentContext.getGeneralData().put(EARContext.APPLICATION_JNDI_NAME_KEY, appJndiName);
+                
+                webModuleBuilder.addGBeans(deploymentContext, webModule, bundle, extender.getRepositories());     
+
+                Map<JndiKey, Map<String, Object>> contexts = NamingBuilder.JNDI_KEY.get(deploymentContext.getGeneralData());
+                GBeanData appContexts = new GBeanData(appJndiName, ApplicationJndi.class);
+                appContexts.setAttribute("globalContextSegment", contexts.get(JndiScope.global));
+                appContexts.setAttribute("applicationContextMap", contexts.get(JndiScope.application));
+                appContexts.setReferencePattern("GlobalContext", extender.getGlobalContextAbstractName());
+                deploymentContext.addGBean(appContexts);
+                
+                configurationData = deploymentContext.getConfigurationData();
+                FileOutputStream out = new FileOutputStream(configSer);
+                try {
+                    ConfigurationUtil.writeConfigurationData(configurationData, out);
+                } finally {
+                    out.close();
+                }
+
+                deploymentContext.close();
+
+                // set config.ser last modified time to be of the bundle
+                configSer.setLastModified(bundle.getLastModified());
+            }
+            
+            configurationData.setUseEnvironment(true);    
+            configurationData.setBundleContext(bundle.getBundleContext());
+            
+            configurationManager.loadConfiguration(configurationData);
+            configurationManager.startConfiguration(configurationData.getId());
 
-            // TODO: do actual deployment
-            System.out.println("Deploying " + contextPath + " " + bundle);
+            deployedArtifact = configurationData.getId();
+            
+            LOGGER.info("Deployed WAB {} at {}", new Object[] {bundle, contextPath});
             
             // send out the deployed event
             deployed();
@@ -144,11 +244,26 @@
             LOGGER.error("Unable to start web application for bundle " + getBundle().getSymbolicName(), exception);
             // broadcast a failure event
             failed(exception);
+            // undeploy the configuration (in case it was loaded but failed to start)
+            if (configurationData != null) {
+                undeploy(configurationData.getId());
+            }
             // unregister the application and possibly let other WABs with the same ContextPath to deploy
             extender.unregisterWebApplication(this);
         }
     }
-
+    
+    private void undeploy(Artifact artifact) {
+        ConfigurationManager configurationManager = extender.getConfigurationManager();
+        try {
+            configurationManager.uninstallConfiguration(artifact);
+        } catch (IOException e) {
+            e.printStackTrace();
+        } catch (NoSuchConfigException e) {
+            // ignore
+        }
+    }
+    
     /**
      * Undeploy a web application.
      */
@@ -168,9 +283,12 @@
         // send the undeploying event
         undeploying();
         
-        // TODO: do actual undeployment
-        System.out.println("Undeploying " + contextPath + " " + bundle);
-
+        if (deployedArtifact != null) {
+            LOGGER.info("Undeploying WAB {} at {}", new Object[] {bundle, contextPath});
+            undeploy(deployedArtifact);
+            LOGGER.info("Undeployed WAB {} at {}", new Object[] {bundle, contextPath});
+        }
+        
         // finished with the undeploy operation
         undeployed();
         

Modified: geronimo/server/trunk/plugins/wab/geronimo-web-extender/src/main/java/org/apache/geronimo/osgi/web/WebContainerExtender.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/wab/geronimo-web-extender/src/main/java/org/apache/geronimo/osgi/web/WebContainerExtender.java?rev=902507&r1=902506&r2=902507&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/wab/geronimo-web-extender/src/main/java/org/apache/geronimo/osgi/web/WebContainerExtender.java (original)
+++ geronimo/server/trunk/plugins/wab/geronimo-web-extender/src/main/java/org/apache/geronimo/osgi/web/WebContainerExtender.java Sat Jan 23 23:28:10 2010
@@ -19,12 +19,27 @@
 package org.apache.geronimo.osgi.web;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
+import org.apache.geronimo.gbean.AbstractNameQuery;
+import org.apache.geronimo.gbean.GBeanLifecycle;
+import org.apache.geronimo.gbean.SingleElementCollection;
+import org.apache.geronimo.gbean.annotation.ParamAttribute;
+import org.apache.geronimo.gbean.annotation.ParamReference;
+import org.apache.geronimo.gbean.annotation.ParamSpecial;
+import org.apache.geronimo.gbean.annotation.SpecialAttributeType;
+import org.apache.geronimo.j2ee.deployment.ModuleBuilder;
+import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+import org.apache.geronimo.kernel.Kernel;
+import org.apache.geronimo.kernel.config.ConfigurationManager;
+import org.apache.geronimo.kernel.config.ConfigurationUtil;
+import org.apache.geronimo.kernel.repository.Environment;
+import org.apache.geronimo.kernel.repository.Repository;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
@@ -41,17 +56,88 @@
  * 
  * @version $Rev$, $Date$
  */
-public class WebContainerExtender implements BundleActivator {
+public class WebContainerExtender implements GBeanLifecycle {
     // the header that identifies a bundle as being a WAB
     public final static String WEB_CONTEXT_PATH_HEADER = "Web-ContextPath";
 
     private static final Logger LOGGER = LoggerFactory.getLogger(WebContainerExtender.class);
 
+    private final Kernel kernel;
+    private final BundleContext bundleContext;
+    private final Environment defaultEnvironment;
+    private final AbstractNameQuery serverName;
+    private final AbstractNameQuery transactionManagerObjectName;
+    private final AbstractNameQuery connectionTrackerObjectName;
+    private final AbstractNameQuery corbaGBeanObjectName;
+    private final AbstractNameQuery globalContextAbstractName;
+    private final SingleElementCollection<ModuleBuilder> webConfigBuilder;
+    private final Collection<? extends Repository> repositories;
+    private final ConfigurationManager configurationManager;
+    
     private Map<String, WebApplication> contextPathMap;
     private WebContainerEventDispatcher eventDispatcher;
     private BundleTracker bt;
     private ExecutorService executor;
+    
+    public WebContainerExtender(@ParamAttribute(name = "defaultEnvironment") Environment defaultEnvironment,
+                                @ParamAttribute(name = "transactionManagerAbstractName") AbstractNameQuery transactionManagerAbstractName,
+                                @ParamAttribute(name = "connectionTrackerAbstractName") AbstractNameQuery connectionTrackerAbstractName,
+                                @ParamAttribute(name = "corbaGBeanAbstractName") AbstractNameQuery corbaGBeanAbstractName,
+                                @ParamAttribute(name = "globalContextAbstractName") AbstractNameQuery globalContextAbstractName,
+                                @ParamAttribute(name = "serverName") AbstractNameQuery serverName,
+                                @ParamReference(name = "Repositories", namingType = "Repository") Collection<? extends Repository> repositories,
+                                @ParamReference(name = "WebModuleBuilders", namingType = NameFactory.MODULE_BUILDER) Collection<ModuleBuilder> webModuleBuilders,
+                                @ParamSpecial(type = SpecialAttributeType.kernel) Kernel kernel,
+                                @ParamSpecial(type = SpecialAttributeType.bundleContext) BundleContext bundleContext) throws Exception {
+        this.defaultEnvironment = defaultEnvironment;
+        this.transactionManagerObjectName = transactionManagerAbstractName;
+        this.connectionTrackerObjectName = connectionTrackerAbstractName;
+        this.corbaGBeanObjectName = corbaGBeanAbstractName;
+        this.globalContextAbstractName = globalContextAbstractName;
+        this.serverName = serverName;
+        this.repositories = repositories;
+        this.webConfigBuilder = new SingleElementCollection<ModuleBuilder>(webModuleBuilders);
+        this.bundleContext = bundleContext;
+        this.kernel = kernel;   
+        this.configurationManager = ConfigurationUtil.getConfigurationManager(kernel);
+    }
+
+    AbstractNameQuery getServerName() {
+        return serverName;
+    }
+
+    AbstractNameQuery getTransactionManagerObjectName() {
+        return transactionManagerObjectName;
+    }
 
+    AbstractNameQuery getConnectionTrackerObjectName() {
+        return connectionTrackerObjectName;
+    }
+
+    AbstractNameQuery getCorbaGBeanObjectName() {
+        return corbaGBeanObjectName;
+    }
+
+    AbstractNameQuery getGlobalContextAbstractName() {
+        return globalContextAbstractName;
+    }
+    
+    Collection<? extends Repository> getRepositories() {
+        return repositories;
+    }
+    
+    Kernel getKernel() {
+        return kernel;
+    }
+    
+    ConfigurationManager getConfigurationManager() {
+        return configurationManager;
+    }
+    
+    ModuleBuilder getWebModuleBuilder() {
+        return webConfigBuilder.getElement();
+    }
+    
     /**
      * Activate the bundle and initialize the extender instance.
      *
@@ -178,4 +264,16 @@
     protected synchronized void unregisterWebApplication(WebApplication webApp) {
         contextPathMap.remove(webApp.getContextPath());
     }
+
+    public void doFail() {
+        stop(bundleContext);  
+    }
+
+    public void doStart() throws Exception {
+        start(bundleContext);
+    }
+
+    public void doStop() throws Exception {
+        stop(bundleContext);        
+    }
 }