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 2011/09/07 17:10:17 UTC

svn commit: r1166214 - in /geronimo/server/trunk: framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/ plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/ plugins/j2ee/geronimo-web-2.5-bu...

Author: xuhaihong
Date: Wed Sep  7 15:10:16 2011
New Revision: 1166214

URL: http://svn.apache.org/viewvc?rev=1166214&view=rev
Log:
GERONIMO-6143 Create a fragment context for each sub modules in the EAR package

Modified:
    geronimo/server/trunk/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/DeploymentContext.java
    geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/Module.java
    geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/AbstractWebModuleBuilder.java
    geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/MergeHelper.java
    geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/test/java/org/apache/geronimo/web25/deployment/WebFragmentTest.java
    geronimo/server/trunk/plugins/jetty8/geronimo-jetty8-builder/src/main/java/org/apache/geronimo/jetty8/deployment/JettyModuleBuilder.java
    geronimo/server/trunk/plugins/myfaces/geronimo-myfaces-builder/src/main/java/org/apache/geronimo/myfaces/deployment/MyFacesModuleBuilderExtension.java
    geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbModuleBuilder.java
    geronimo/server/trunk/plugins/tomcat/geronimo-tomcat7-builder/src/main/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java

Modified: geronimo/server/trunk/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/DeploymentContext.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/DeploymentContext.java?rev=1166214&r1=1166213&r2=1166214&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/DeploymentContext.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/DeploymentContext.java Wed Sep  7 15:10:16 2011
@@ -31,7 +31,6 @@ import java.util.Collections;
 import java.util.HashSet;
 import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
-import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -495,6 +494,14 @@ public class DeploymentContext {
         return configuration.getBundle();
     }
 
+    public ConfigurationModuleType getModuleType() {
+        return moduleType;
+    }
+
+    public Environment getEnvironment() {
+        return environment;
+    }
+
     protected BundleContext getBundleContext() {
         return bundleContext;
     }

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/Module.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/Module.java?rev=1166214&r1=1166213&r2=1166214&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/Module.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/Module.java Wed Sep  7 15:10:16 2011
@@ -301,7 +301,7 @@ public abstract class Module<T, U> {
     }
 
     public void addAsChildConfiguration() throws DeploymentException {
-        if (rootEarContext != null && rootEarContext != earContext) {
+        if (rootEarContext != null && rootEarContext != earContext && !(earContext instanceof FragmentContext)) {
             ConfigurationData moduleConfigurationData = earContext.getConfigurationData();
             rootEarContext.addChildConfiguration(getTargetPath(), moduleConfigurationData);
         }

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=1166214&r1=1166213&r2=1166214&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 Wed Sep  7 15:10:16 2011
@@ -56,6 +56,7 @@ import org.apache.geronimo.components.ja
 import org.apache.geronimo.deployment.ModuleIDBuilder;
 import org.apache.geronimo.deployment.NamespaceDrivenBuilder;
 import org.apache.geronimo.deployment.NamespaceDrivenBuilderCollection;
+import org.apache.geronimo.deployment.service.EnvironmentBuilder;
 import org.apache.geronimo.deployment.xmlbeans.XmlBeansUtil;
 import org.apache.geronimo.gbean.AbstractName;
 import org.apache.geronimo.gbean.AbstractNameQuery;
@@ -63,6 +64,7 @@ import org.apache.geronimo.gbean.GBeanDa
 import org.apache.geronimo.gbean.GBeanInfoBuilder;
 import org.apache.geronimo.j2ee.annotation.Holder;
 import org.apache.geronimo.j2ee.deployment.EARContext;
+import org.apache.geronimo.j2ee.deployment.FragmentContext;
 import org.apache.geronimo.j2ee.deployment.Module;
 import org.apache.geronimo.j2ee.deployment.ModuleBuilder;
 import org.apache.geronimo.j2ee.deployment.ModuleBuilderExtension;
@@ -77,12 +79,9 @@ import org.apache.geronimo.j2ee.jndi.Web
 import org.apache.geronimo.kernel.GBeanAlreadyExistsException;
 import org.apache.geronimo.kernel.Kernel;
 import org.apache.geronimo.kernel.Naming;
-import org.apache.geronimo.kernel.config.Configuration;
 import org.apache.geronimo.kernel.config.ConfigurationModuleType;
 import org.apache.geronimo.kernel.config.ConfigurationStore;
-import org.apache.geronimo.kernel.repository.Artifact;
 import org.apache.geronimo.kernel.repository.Environment;
-import org.apache.geronimo.kernel.repository.ImportType;
 import org.apache.geronimo.kernel.util.FileUtils;
 import org.apache.geronimo.naming.deployment.ResourceEnvironmentSetter;
 import org.apache.geronimo.security.jacc.ComponentPermissions;
@@ -92,9 +91,9 @@ import org.apache.geronimo.security.jasp
 import org.apache.geronimo.security.jaspi.ServerAuthModuleGBean;
 import org.apache.geronimo.web.info.WebAppInfo;
 import org.apache.geronimo.web.security.SpecSecurityBuilder;
-import org.apache.geronimo.web25.deployment.utils.WebAppXmlAttributeBuilder;
 import org.apache.geronimo.web25.deployment.merge.MergeHelper;
 import org.apache.geronimo.web25.deployment.security.AuthenticationWrapper;
+import org.apache.geronimo.web25.deployment.utils.WebAppXmlAttributeBuilder;
 import org.apache.geronimo.xbeans.geronimo.j2ee.GerSecurityDocument;
 import org.apache.openejb.jee.Filter;
 import org.apache.openejb.jee.JaxbJavaee;
@@ -122,7 +121,7 @@ import org.xml.sax.SAXException;
  */
 public abstract class AbstractWebModuleBuilder implements ModuleBuilder {
     private static final Logger log = LoggerFactory.getLogger(AbstractWebModuleBuilder.class);
-    
+
     static {
         PropertyEditorManager.registerEditor(WebAppInfo.class, WebAppXmlAttributeBuilder.class);
     }
@@ -250,7 +249,7 @@ public abstract class AbstractWebModuleB
     }
 
     protected void addGBeanDependencies(EARContext earContext, GBeanData webModuleData) {
-        log.debug("Adding dependencies to web module: " + webModuleData.getAbstractName());
+        //log.debug("Adding dependencies to web module: " + webModuleData.getAbstractName());
 //        Configuration earConfiguration = earContext.getConfiguration();
 //        addDependencies(earContext.findGBeanDatas(earConfiguration, MANAGED_CONNECTION_FACTORY_PATTERN), webModuleData);
 //        addDependencies(earContext.findGBeanDatas(earConfiguration, ADMIN_OBJECT_PATTERN), webModuleData);
@@ -343,10 +342,10 @@ public abstract class AbstractWebModuleB
             throws DeploymentException {
         EARContext moduleContext;
         //TODO GERONIMO-4972 find a way to create working nested bundles.
-        if (true || module.isStandAlone()) {
+        if (module.isStandAlone()) {
             moduleContext = earContext;
         } else {
-            Environment environment = module.getEnvironment();
+            /*Environment environment = module.getEnvironment();
             Artifact earConfigId = earContext.getConfigID();
             Artifact configId = new Artifact(earConfigId.getGroupId(), earConfigId.getArtifactId() + "_" + module.getTargetPath(), earConfigId.getVersion(), "car");
             environment.setConfigId(configId);
@@ -363,7 +362,10 @@ public abstract class AbstractWebModuleB
             } catch (DeploymentException e) {
                 cleanupConfigurationDir(configurationDir);
                 throw e;
-            }
+            }*/
+            //Merge the environment configurations to the parent EAR package, as now the same bundle is shared for all the modules.
+            EnvironmentBuilder.mergeEnvironments(earContext.getEnvironment(), module.getEnvironment());
+            moduleContext = new FragmentContext(earContext, ConfigurationModuleType.WAR);
         }
         module.setEarContext(moduleContext);
         module.setRootEarContext(earContext);
@@ -402,11 +404,11 @@ public abstract class AbstractWebModuleB
             // and the url class loader will not pick up a manifest from an unpacked dir
             //GERONIMO-4972 this can't be correct for one-bundle deployments.
             moduleContext.addManifestClassPath(warFile, RELATIVE_MODULE_BASE_URI, manifestcp);
-            
+
             for (String classpath : manifestcp) {
                 earContext.addToClassPath(module.resolve(classpath).toString());
             }
-            
+
         } catch (IOException e) {
             throw new DeploymentException("Problem deploying war", e);
         } finally {
@@ -455,19 +457,19 @@ public abstract class AbstractWebModuleB
         if (hasSecurityRealmName) {
             earContext.setHasSecurity(true);
         }
-        
+
       //Inform errors if login-config element contains more than one
         List<LoginConfig> loginConfigs = webApp.getLoginConfig();
         if (loginConfigs.size() > 1) {
             throw new DeploymentException("Web app " + webApp.getDisplayName() + " cannot have more than one login-config element.  Currently has " + loginConfigs.size() + " login-config elements.");
         }
-        
+
        //Inform errors if session-config element contains more than one
         List<SessionConfig> sessionConfigs = webApp.getSessionConfig();
         if (sessionConfigs.size() > 1) {
             throw new DeploymentException("Web app " + webApp.getDisplayName() + " cannot have more than one sesion-config element.  Currently has " + sessionConfigs.size() + " session-config elements.");
         }
-        
+
         //TODO think about how to provide a default security realm name
         XmlObject[] securityElements = XmlBeansUtil.selectSubstitutionGroupElements(SECURITY_QNAME, gerWebApp);
         if (securityElements.length > 0 && !hasSecurityRealmName) {
@@ -485,9 +487,9 @@ public abstract class AbstractWebModuleB
         } else {
             originalSpecDDVersion = identifySpecDDSchemaVersion(originalSpecDD);
         }
-        earContext.getGeneralData().put(INITIAL_WEB_XML_SCHEMA_VERSION, originalSpecDDVersion);
+        webModule.getEarContext().getGeneralData().put(INITIAL_WEB_XML_SCHEMA_VERSION, originalSpecDDVersion);
         //Process web fragments and annotations
-        if (INITIAL_WEB_XML_SCHEMA_VERSION.get(earContext.getGeneralData()) >= 2.5f && !webApp.isMetadataComplete()) {
+        if (INITIAL_WEB_XML_SCHEMA_VERSION.get(webModule.getEarContext().getGeneralData()) >= 2.5f && !webApp.isMetadataComplete()) {
             MergeHelper.processWebFragmentsAndAnnotations(earContext, webModule, bundle, webApp);
         }
         MergeHelper.processServletContainerInitializer(earContext, webModule, bundle);
@@ -548,7 +550,7 @@ public abstract class AbstractWebModuleB
         }
         return schemaVersion;
     }
-    
+
     protected ComponentPermissions buildSpecSecurityConfig(EARContext earContext, WebApp webApp, Bundle bundle) {
         SpecSecurityBuilder builder = new SpecSecurityBuilder(new WebAppInfo());
         return builder.buildSpecSecurityConfig();
@@ -676,20 +678,20 @@ public abstract class AbstractWebModuleB
             throws DeploymentException {
         Map<EARContext.Key, Object> buildingContext = new HashMap<EARContext.Key, Object>();
         buildingContext.put(NamingBuilder.GBEAN_NAME_KEY, moduleContext.getModuleName());
-        
+
         String moduleName =  webModule.getName();
-        
+
         if (earContext.getSubModuleNames().contains(moduleName)){
             log.warn("Duplicated moduleName: '"+moduleName +"' is found ! deployer will rename it to: '"+moduleName +
                     "_duplicated' , please check your modules in application to make sure they don't share the same name");
             moduleName = moduleName +"_duplicated";
             earContext.getSubModuleNames().add(moduleName);
-        }   
-        
+        }
+
         earContext.getSubModuleNames().add(moduleName);
         webModule.getJndiContext().get(JndiScope.module).put("module/ModuleName", moduleName);
 
-        
+
         if (!webApp.isMetadataComplete()) {
             // Create a classfinder and populate it for the naming builder(s). The absence of a
             // classFinder in the module will convey whether metadata-complete is set (or not)
@@ -730,7 +732,7 @@ public abstract class AbstractWebModuleB
         addGBeanDependencies(earContext, webModuleData);
         webModuleData.setReferencePattern("TransactionManager", moduleContext.getTransactionManagerName());
         webModuleData.setReferencePattern("TrackedConnectionAssociator", moduleContext.getConnectionTrackerName());
-        webModuleData.setAttribute("modulePath", webModule.isStandAlone() || webModule.getEarContext() != webModule.getRootEarContext() ? null : webModule.getTargetPath());
+        webModuleData.setAttribute("modulePath", webModule.isStandAlone() ? null : webModule.getTargetPath());
     }
 
     private static class InternWrapper implements XMLStreamReader {

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/MergeHelper.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/MergeHelper.java?rev=1166214&r1=1166213&r2=1166214&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/MergeHelper.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/main/java/org/apache/geronimo/web25/deployment/merge/MergeHelper.java Wed Sep  7 15:10:16 2011
@@ -49,8 +49,8 @@ import org.apache.geronimo.j2ee.deployme
 import org.apache.geronimo.j2ee.deployment.Module;
 import org.apache.geronimo.j2ee.deployment.util.CircularReferencesException;
 import org.apache.geronimo.j2ee.deployment.util.FragmentSortUtils;
-import org.apache.geronimo.j2ee.deployment.util.IllegalConfigurationException;
 import org.apache.geronimo.j2ee.deployment.util.FragmentSortUtils.Visitor;
+import org.apache.geronimo.j2ee.deployment.util.IllegalConfigurationException;
 import org.apache.geronimo.kernel.util.IOUtils;
 import org.apache.geronimo.kernel.util.JoinUtils;
 import org.apache.geronimo.kernel.util.JoinUtils.NameCallback;
@@ -100,10 +100,10 @@ import org.apache.xbean.finder.BundleAnn
 import org.apache.xbean.finder.BundleAssignableClassFinder;
 import org.apache.xbean.osgi.bundle.util.BundleClassFinder;
 import org.apache.xbean.osgi.bundle.util.BundleResourceFinder;
+import org.apache.xbean.osgi.bundle.util.BundleResourceFinder.ResourceFinderCallback;
 import org.apache.xbean.osgi.bundle.util.ClassDiscoveryFilter;
 import org.apache.xbean.osgi.bundle.util.DiscoveryRange;
 import org.apache.xbean.osgi.bundle.util.ResourceDiscoveryFilter;
-import org.apache.xbean.osgi.bundle.util.BundleResourceFinder.ResourceFinderCallback;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.ServiceReference;
 import org.osgi.service.packageadmin.PackageAdmin;
@@ -174,14 +174,14 @@ public class MergeHelper {
         }
         // EXCLUDED_JAR_URLS is required for TLD scanning, ServletContainerInitializer scanning and ServletContextListeners.
         // So does it mean that we always need to scan web-fragment.xml whatever meta-complete is set with true or false.
-        Set<String> excludedURLs = AbstractWebModuleBuilder.EXCLUDED_JAR_URLS.get(earContext.getGeneralData());
+        Set<String> excludedURLs = AbstractWebModuleBuilder.EXCLUDED_JAR_URLS.get(module.getEarContext().getGeneralData());
         //Add left named web-fragment.xml file URLs to the EXCLUDED_JAR_URLS List
         for (WebFragmentEntry excludedFragment : unusedWebFragmentEntryMap.values()) {
             excludedURLs.add(excludedFragment.getJarURL());
         }
 
         WebFragmentEntry[] webFragmentEntries = orderedWebFragments.toArray(new WebFragmentEntry[orderedWebFragments.size()]);
-        saveOrderedLibAttribute(earContext, webFragmentEntries);
+        saveOrderedLibAttribute(earContext, module, webFragmentEntries);
         return webFragmentEntries;
     }
 
@@ -250,7 +250,7 @@ public class MergeHelper {
     public static void processServletContainerInitializer(EARContext earContext, Module module, Bundle bundle) throws DeploymentException {
         //ServletContainerInitializer
         ServiceReference reference = bundle.getBundleContext().getServiceReference(PackageAdmin.class.getName());
-        final Set<String> excludedJarNames = AbstractWebModuleBuilder.EXCLUDED_JAR_URLS.get(earContext.getGeneralData());
+        final Set<String> excludedJarNames = AbstractWebModuleBuilder.EXCLUDED_JAR_URLS.get(module.getEarContext().getGeneralData());
         final Set<String> servletContainerInitializers = new HashSet<String>();
         try {
             PackageAdmin packageAdmin = (PackageAdmin) bundle.getBundleContext().getService(reference);
@@ -326,7 +326,7 @@ public class MergeHelper {
                 Set<String> acceptedClassNames = bundleClassFinder.find();
                 servletContainerInitializerClassNamesMap.put(servletContainerInitializer, acceptedClassNames.size() > 0 ? acceptedClassNames : null);
             }
-            earContext.getGeneralData().put(AbstractWebModuleBuilder.SERVLET_CONTAINER_INITIALIZERS, servletContainerInitializerClassNamesMap);
+            module.getEarContext().getGeneralData().put(AbstractWebModuleBuilder.SERVLET_CONTAINER_INITIALIZERS, servletContainerInitializerClassNamesMap);
         } catch (Exception e) {
             throw new DeploymentException("Fail to scan javax.servlet.ServletContainerInitializer", e);
         } finally {
@@ -478,7 +478,7 @@ public class MergeHelper {
                 }
 
             }).toArray(new WebFragmentEntry[webFragmentEntryMap.values().size()]);
-            saveOrderedLibAttribute(earContext, webFragments);
+            saveOrderedLibAttribute(earContext, module, webFragments);
             return webFragments;
         } catch (IllegalConfigurationException e) {
             throw new DeploymentException("Jar file " + webFragmentEntryMap.get(e.getNodeName()).getJarURL() + " is not configured correctly for " + e.getMessage(), e);
@@ -558,7 +558,7 @@ public class MergeHelper {
         }
     }
 
-    private static void saveOrderedLibAttribute(EARContext earContext, WebFragmentEntry[] webFragmentEntries) {
+    private static void saveOrderedLibAttribute(EARContext earContext, Module module, WebFragmentEntry[] webFragmentEntries) {
         //Save ORDERED_LIBS Attribute
         List<String> orderedLibs = new ArrayList<String>();
         for (WebFragmentEntry webFragmentEntry : webFragmentEntries) {
@@ -570,6 +570,6 @@ public class MergeHelper {
                 }
             }
         }
-        earContext.getGeneralData().put(AbstractWebModuleBuilder.ORDERED_LIBS, orderedLibs);
+        module.getEarContext().getGeneralData().put(AbstractWebModuleBuilder.ORDERED_LIBS, orderedLibs);
     }
 }

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/test/java/org/apache/geronimo/web25/deployment/WebFragmentTest.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/WebFragmentTest.java?rev=1166214&r1=1166213&r2=1166214&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/test/java/org/apache/geronimo/web25/deployment/WebFragmentTest.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-web-2.5-builder/src/test/java/org/apache/geronimo/web25/deployment/WebFragmentTest.java Wed Sep  7 15:10:16 2011
@@ -19,6 +19,7 @@ package org.apache.geronimo.web25.deploy
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.net.URI;
 import java.net.URL;
 import java.util.Collection;
 import java.util.LinkedHashMap;
@@ -27,9 +28,12 @@ import java.util.List;
 import java.util.Map;
 
 import junit.framework.Assert;
+
 import org.apache.geronimo.common.DeploymentException;
+import org.apache.geronimo.deployment.DeployableBundle;
 import org.apache.geronimo.gbean.AbstractName;
 import org.apache.geronimo.j2ee.deployment.EARContext;
+import org.apache.geronimo.j2ee.deployment.WebModule;
 import org.apache.geronimo.kernel.config.Configuration;
 import org.apache.geronimo.kernel.config.ConfigurationData;
 import org.apache.geronimo.kernel.config.ConfigurationManager;
@@ -81,7 +85,8 @@ public class WebFragmentTest extends Xml
         jarURLWebFragmentMap.put("WEB-INF/lib/testC.jar", loadXmlObject("webfragments/absolute/webfragmentC.xml", WebFragment.class));
         jarURLWebFragmentMap.put("WEB-INF/lib/testD.jar", loadXmlObject("webfragments/absolute/webfragmentD.xml", WebFragment.class));
         WebApp webApp = loadXmlObject("webfragments/absolute/web-withothers.xml", WebApp.class);
-        WebFragmentEntry[] webFragmentEntries = MergeHelper.sortWebFragments(new DummyEARContext(), null, null, webApp, jarURLWebFragmentMap);
+        EARContext rootContext = new DummyEARContext();
+        WebFragmentEntry[] webFragmentEntries = MergeHelper.sortWebFragments(rootContext, createDummyWebModule(rootContext), null, webApp, jarURLWebFragmentMap);
         Assert.assertEquals(4, webFragmentEntries.length);
         Assert.assertEquals("webfragmentD", webFragmentEntries[0].getName());
         Assert.assertEquals("webfragmentB", webFragmentEntries[1].getName());
@@ -104,7 +109,8 @@ public class WebFragmentTest extends Xml
         jarURLWebFragmentMap.put("WEB-INF/lib/testC.jar", loadXmlObject("webfragments/absolute/webfragmentC.xml", WebFragment.class));
         jarURLWebFragmentMap.put("WEB-INF/lib/testD.jar", loadXmlObject("webfragments/absolute/webfragmentD.xml", WebFragment.class));
         WebApp webApp = loadXmlObject("webfragments/absolute/web-withoutothers.xml", WebApp.class);
-        WebFragmentEntry[] webFragmentEntries = MergeHelper.sortWebFragments(new DummyEARContext(), null, null, webApp, jarURLWebFragmentMap);
+        EARContext rootContext = new DummyEARContext();
+        WebFragmentEntry[] webFragmentEntries = MergeHelper.sortWebFragments(rootContext, createDummyWebModule(rootContext), null, webApp, jarURLWebFragmentMap);
         Assert.assertEquals(2, webFragmentEntries.length);
         Assert.assertEquals("webfragmentD", webFragmentEntries[0].getName());
         Assert.assertEquals("webfragmentA", webFragmentEntries[1].getName());
@@ -121,7 +127,8 @@ public class WebFragmentTest extends Xml
         //D -(after) -> others
         jarURLWebFragmentMap.put("WEB-INF/lib/testD.jar", loadXmlObject("webfragments/relative/webfragmentD.xml", WebFragment.class));
         WebApp webApp = loadXmlObject("webfragments/relative/web.xml", WebApp.class);
-        WebFragmentEntry[] webFragmentEntries = MergeHelper.sortWebFragments(new DummyEARContext(), null, null, webApp, jarURLWebFragmentMap);
+        EARContext rootContext = new DummyEARContext();
+        WebFragmentEntry[] webFragmentEntries = MergeHelper.sortWebFragments(rootContext, createDummyWebModule(rootContext), null, webApp, jarURLWebFragmentMap);
         Assert.assertEquals("webfragmentC", webFragmentEntries[0].getName());
         Assert.assertEquals("webfragmentB", webFragmentEntries[1].getName());
         Assert.assertEquals("webfragmentA", webFragmentEntries[2].getName());
@@ -143,7 +150,8 @@ public class WebFragmentTest extends Xml
             jarURLWebFragmentMap.put("WEB-INF/lib/testC.jar", loadXmlObject("webfragments/circus/circusA/webfragmentC.xml", WebFragment.class));
             jarURLWebFragmentMap.put("WEB-INF/lib/testD.jar", loadXmlObject("webfragments/circus/circusA/webfragmentD.xml", WebFragment.class));
             WebApp webApp = loadXmlObject("webfragments/circus/circusA/web.xml", WebApp.class);
-            MergeHelper.sortWebFragments(new DummyEARContext(), null, null, webApp, jarURLWebFragmentMap);
+            EARContext rootContext = new DummyEARContext();
+            WebFragmentEntry[] webFragmentEntries = MergeHelper.sortWebFragments(rootContext, createDummyWebModule(rootContext), null, webApp, jarURLWebFragmentMap);
             fail("Circus Dependency should be found");
         } catch (DeploymentException e) {
             Assert.assertTrue(e.getMessage().indexOf("WEB-INF/lib/testA.jar") != -1);
@@ -166,7 +174,8 @@ public class WebFragmentTest extends Xml
             jarURLWebFragmentMap.put("WEB-INF/lib/testC.jar", loadXmlObject("webfragments/circus/circusB/webfragmentC.xml", WebFragment.class));
             jarURLWebFragmentMap.put("WEB-INF/lib/testD.jar", loadXmlObject("webfragments/circus/circusB/webfragmentD.xml", WebFragment.class));
             WebApp webApp = loadXmlObject("webfragments/circus/circusB/web.xml", WebApp.class);
-            MergeHelper.sortWebFragments(new DummyEARContext(), null, null, webApp, jarURLWebFragmentMap);
+            EARContext rootContext = new DummyEARContext();
+            WebFragmentEntry[] webFragmentEntries = MergeHelper.sortWebFragments(rootContext, createDummyWebModule(rootContext), null, webApp, jarURLWebFragmentMap);
             fail("Circus Dependency should be found");
         } catch (DeploymentException e) {
             Assert.assertTrue(e.getMessage().indexOf("WEB-INF/lib/testA.jar") != -1 || e.getMessage().indexOf("WEB-INF/lib/testB.jar") != -1);
@@ -191,7 +200,8 @@ public class WebFragmentTest extends Xml
             //D -(after) -> A
             jarURLWebFragmentMap.put("WEB-INF/lib/testD.jar", loadXmlObject("webfragments/circus/circusC/webfragmentD.xml", WebFragment.class));
             WebApp webApp = loadXmlObject("webfragments/circus/circusC/web.xml", WebApp.class);
-            MergeHelper.sortWebFragments(new DummyEARContext(), null, null, webApp, jarURLWebFragmentMap);
+            EARContext rootContext = new DummyEARContext();
+            WebFragmentEntry[] webFragmentEntries = MergeHelper.sortWebFragments(rootContext, createDummyWebModule(rootContext), null, webApp, jarURLWebFragmentMap);
             fail("Circus Dependency should be found");
         } catch (DeploymentException e) {
             Assert.assertTrue(e.getMessage().indexOf("WEB-INF/lib/testA.jar") != -1 || e.getMessage().indexOf("WEB-INF/lib/testB.jar") != -1 || e.getMessage().indexOf("WEB-INF/lib/testD.jar") != -1);
@@ -208,6 +218,13 @@ public class WebFragmentTest extends Xml
         }
     }
 
+    private WebModule createDummyWebModule(EARContext rootContext) throws Exception {
+        WebModule webModule = new WebModule(true, new AbstractName(new URI("test/test/1.0/car?J2EEApplication=null,j2eeType=WebModule,name=test.war")), "test.war", new Environment(), new DeployableBundle(new MockBundle(WebFragmentTest.class.getClassLoader(), "", 1L)), "",
+                new WebApp(), null, "", "", "", null, null);
+        webModule.setEarContext(new DummyEARContext());
+        return webModule;
+    }
+
     public static class DummyConfigurationManager implements ConfigurationManager {
 
         @Override
@@ -435,8 +452,8 @@ public class WebFragmentTest extends Xml
          * }
          */
         public DummyEARContext() throws Exception {
-            super(FileUtils.createTempDir(), null, new Environment(), ConfigurationModuleType.WAR, null, new DummyConfigurationManager(), new MockBundleContext(new MockBundle(WebFragmentTest.class
-                    .getClassLoader(), "", 1L)), null, null, null, null, null, null);
+            super(FileUtils.createTempDir(), null, new Environment(), ConfigurationModuleType.WAR, null, new DummyConfigurationManager(), new MockBundleContext(new MockBundle(
+                    WebFragmentTest.class.getClassLoader(), "", 1L)), null, null, null, null, null, null);
         }
     }
 }

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=1166214&r1=1166213&r2=1166214&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 Wed Sep  7 15:10:16 2011
@@ -528,9 +528,9 @@ public class JettyModuleBuilder extends 
             //Save Deployment Attributes
             Map<String, Object> deploymentAttributes = new HashMap<String, Object>();
             deploymentAttributes.put(WebApplicationConstants.META_COMPLETE, webApp.isMetadataComplete());
-            deploymentAttributes.put(WebApplicationConstants.SCHEMA_VERSION, INITIAL_WEB_XML_SCHEMA_VERSION.get(earContext.getGeneralData()));
-            deploymentAttributes.put(WebApplicationConstants.ORDERED_LIBS, AbstractWebModuleBuilder.ORDERED_LIBS.get(earContext.getGeneralData()));
-            deploymentAttributes.put(WebApplicationConstants.SERVLET_CONTAINER_INITIALIZERS, AbstractWebModuleBuilder.SERVLET_CONTAINER_INITIALIZERS.get(earContext.getGeneralData()));
+            deploymentAttributes.put(WebApplicationConstants.SCHEMA_VERSION, INITIAL_WEB_XML_SCHEMA_VERSION.get(webModule.getEarContext().getGeneralData()));
+            deploymentAttributes.put(WebApplicationConstants.ORDERED_LIBS, AbstractWebModuleBuilder.ORDERED_LIBS.get(webModule.getEarContext().getGeneralData()));
+            deploymentAttributes.put(WebApplicationConstants.SERVLET_CONTAINER_INITIALIZERS, AbstractWebModuleBuilder.SERVLET_CONTAINER_INITIALIZERS.get(webModule.getEarContext().getGeneralData()));
             webModuleData.setAttribute("deploymentAttributes", deploymentAttributes);
 
             //TODO this may definitely not be the best place for this!
@@ -545,7 +545,7 @@ public class JettyModuleBuilder extends 
             //not truly metadata complete until MBEs have run
             if (!webApp.isMetadataComplete()) {
                 webApp.setMetadataComplete(true);
-                if (INITIAL_WEB_XML_SCHEMA_VERSION.get(earContext.getGeneralData()) >= 2.5f) {
+                if (INITIAL_WEB_XML_SCHEMA_VERSION.get(webModule.getEarContext().getGeneralData()) >= 2.5f) {
                     String specDeploymentPlan = getSpecDDAsString(webModule);
                     module.setOriginalSpecDD(specDeploymentPlan);
                     earContext.addFile(new URI("./WEB-INF/web.xml"), specDeploymentPlan);

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=1166214&r1=1166213&r2=1166214&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 Wed Sep  7 15:10:16 2011
@@ -214,7 +214,7 @@ public class MyFacesModuleBuilderExtensi
         FacesConfig webAppFacesConfig = getWebAppFacesConfig(webModule);
 
         //Parse all faces-config.xml files found in META-INF folder
-        Set<ConfigurationResource> metaInfConfigurationResources = JSF_META_INF_CONFIGURATION_RESOURCES.get(earContext.getGeneralData());
+        Set<ConfigurationResource> metaInfConfigurationResources = JSF_META_INF_CONFIGURATION_RESOURCES.get(module.getEarContext().getGeneralData());
         List<FacesConfig> metaInfFacesConfigs = new ArrayList<FacesConfig>(metaInfConfigurationResources.size());
         for (ConfigurationResource configurationResource : metaInfConfigurationResources) {
             FacesConfig facesConfig = configurationResource.getFacesConfig();
@@ -262,7 +262,7 @@ public class MyFacesModuleBuilderExtensi
         GBeanData myFacesWebAppContextData = new GBeanData(myFacesWebAppContextName, MyFacesWebAppContext.class);
 
         Set<ConfigurationResource> faceletsLibraries = new HashSet<ConfigurationResource>();
-        faceletsLibraries.addAll(JSF_FACELET_CONFIG_RESOURCES.get(earContext.getGeneralData()));
+        faceletsLibraries.addAll(JSF_FACELET_CONFIG_RESOURCES.get(webModule.getEarContext().getGeneralData()));
         faceletsLibraries.addAll(getContextFaceletsLibraries(webApp, webModule));
         myFacesWebAppContextData.setAttribute("faceletConfigResources", faceletsLibraries);
 

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=1166214&r1=1166213&r2=1166214&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 Wed Sep  7 15:10:16 2011
@@ -66,6 +66,7 @@ import org.apache.geronimo.gbean.annotat
 import org.apache.geronimo.gbean.annotation.ParamReference;
 import org.apache.geronimo.j2ee.deployment.AppClientModule;
 import org.apache.geronimo.j2ee.deployment.EARContext;
+import org.apache.geronimo.j2ee.deployment.FragmentContext;
 import org.apache.geronimo.j2ee.deployment.Module;
 import org.apache.geronimo.j2ee.deployment.ModuleBuilder;
 import org.apache.geronimo.j2ee.deployment.ModuleBuilderExtension;
@@ -78,6 +79,7 @@ import org.apache.geronimo.kernel.GBeanA
 import org.apache.geronimo.kernel.GBeanNotFoundException;
 import org.apache.geronimo.kernel.Naming;
 import org.apache.geronimo.kernel.config.Configuration;
+import org.apache.geronimo.kernel.config.ConfigurationModuleType;
 import org.apache.geronimo.kernel.config.ConfigurationStore;
 import org.apache.geronimo.kernel.repository.Artifact;
 import org.apache.geronimo.kernel.repository.Environment;
@@ -89,7 +91,6 @@ import org.apache.geronimo.openejb.EjbCo
 import org.apache.geronimo.openejb.EjbDeployment;
 import org.apache.geronimo.openejb.EjbModuleImpl;
 import org.apache.geronimo.openejb.OpenEjbSystem;
-import org.apache.geronimo.openejb.cdi.SharedOwbContext;
 import org.apache.geronimo.openejb.xbeans.ejbjar.OpenejbGeronimoEjbJarType;
 import org.apache.geronimo.persistence.PersistenceUnitGBean;
 import org.apache.geronimo.security.jacc.ComponentPermissions;
@@ -310,7 +311,7 @@ public class EjbModuleBuilder implements
         }
 
     }
-    
+
 
     private Module createModule(Object plan, JarFile moduleFile, String targetPath, URL specDDUrl, Environment earEnvironment, Module parentModule, Naming naming, ModuleIDBuilder idBuilder,
             String ddDir, boolean subModule) throws DeploymentException {
@@ -322,11 +323,11 @@ public class EjbModuleBuilder implements
             throw new IllegalArgumentException("targetPath must not end with a '/'");
 
         ClassLoader detectTempClassLoader = null;
-        
+
         ClassLoader ejbModuleTempClassLoader = null;
-        
+
         List<File> tempFileList = new ArrayList<File>();
-        
+
         try {
             // verify we have a valid file
             String jarPath = moduleFile.getName();
@@ -338,24 +339,24 @@ public class EjbModuleBuilder implements
             File jarFile = new File(moduleFile.getName());
 
             baseUrl = jarFile.toURI().toURL();
-            
+
             List<URL> libURLs = new ArrayList<URL>();
-            
+
             libURLs.add(baseUrl);
-            
+
             boolean standAlone = earEnvironment == null;
-        
+
            if (parentModule instanceof WebModule)  {
-              
+
                Deployable deployable = parentModule.getDeployable();
                if (!(deployable instanceof DeployableJarFile)) {
                    throw new IllegalArgumentException("Expected DeployableJarFile");
                }
-               
+
                 JarFile war = ((DeployableJarFile) deployable).getJarFile();
-                
+
                 Enumeration<JarEntry> entries = war.entries();
-            
+
                 while (entries.hasMoreElements()) {
                     String jarEntryName = entries.nextElement().getName();
                    if (jarEntryName.startsWith("WEB-INF/lib/") && jarEntryName.endsWith(".jar")) {
@@ -364,15 +365,15 @@ public class EjbModuleBuilder implements
                        libURLs.add(libJar.toURI().toURL());
                        libJar.deleteOnExit();
                     }
-                }  
-                
-                // The war it self is a ejbmodule. If the war is standalone, 
+                }
+
+                // The war it self is a ejbmodule. If the war is standalone,
                 // the corresponding ejbmodule is standalone too.
                 standAlone = parentModule.isStandAlone();
             }
-            
 
-            
+
+
             detectTempClassLoader = ClassLoaderUtil.createTempClassLoader(ClassLoaderUtil.createClassLoader(jarPath, libURLs.toArray(new URL[0]), OpenEJB.class.getClassLoader()));
 
             ResourceFinder finder = new ResourceFinder("", detectTempClassLoader, baseUrl);
@@ -384,7 +385,7 @@ public class EjbModuleBuilder implements
             // measure will explicitly look for specific known descriptor files and add them if
             // the getResourcesMap() method was unable to find them.  In this "bad jar" scenario
             // some extra features such as the openejb.altdd.prefix functionality will not work.
-            
+
             String[] doubleCheck = {"ejb-jar.xml", "geronimo-openejb.xml", "openejb-jar.xml", "beans.xml", "env-entries.properties", "web.xml"};
 
             for (String entry : doubleCheck) {
@@ -400,16 +401,16 @@ public class EjbModuleBuilder implements
 
 
             if (!isEjbModule(baseUrl,libURLs, detectTempClassLoader, descriptors)) {
-               
+
                 return null;
             }
-            
-            
+
+
             libURLs.clear();
             libURLs.add(baseUrl);
-            
+
             ejbModuleTempClassLoader = ClassLoaderUtil.createTempClassLoader(ClassLoaderUtil.createClassLoader(jarPath, libURLs.toArray(new URL[0]), OpenEJB.class.getClassLoader()));
-            
+
 
             // create the EJB Module
             org.apache.openejb.config.EjbModule ejbModule = new org.apache.openejb.config.EjbModule(ejbModuleTempClassLoader, null, jarPath, null, null);
@@ -439,15 +440,15 @@ public class EjbModuleBuilder implements
                     xmlCursor.toFirstChild();
                     qname = xmlCursor.getName();
                 }
-                
+
              while (xmlCursor.hasNextToken()){
-                 
+
                  qname = xmlCursor.getName();
                     if (qname == null || qname.getLocalPart() == null) {
                         xmlCursor.toNextToken();
                         continue;
                     }
-                
+
                 if (qname.getLocalPart().equals("openejb-jar")) {
                     ejbModule.getAltDDs().put("openejb-jar.xml", xmlCursor.xmlText());
                     break;
@@ -455,7 +456,7 @@ public class EjbModuleBuilder implements
                     ejbModule.getAltDDs().put("geronimo-openejb.xml", xmlCursor.xmlText());
                     break;
                 }
-                
+
                 xmlCursor.toNextToken();
 
                 }
@@ -497,10 +498,10 @@ public class EjbModuleBuilder implements
                 AbstractName earName = naming.createRootName(environment.getConfigId(), NameFactory.NULL, NameFactory.J2EE_APPLICATION);
                 moduleName = naming.createChildName(earName, environment.getConfigId().toString(), NameFactory.EJB_MODULE);
             } else {
-                
+
                 AbstractName parentName = parentModule instanceof AppClientModule ? ((AppClientModule) parentModule)
                         .getAppClientName() : parentModule.getModuleName();
-                        
+
                 moduleName = naming.createChildName(parentName, targetPath, NameFactory.EJB_MODULE);
             }
 
@@ -550,18 +551,18 @@ public class EjbModuleBuilder implements
             }
             return module;
         } catch (DeploymentException e) {
-            
+
             throw e;
-            
+
         } catch (Exception e) {
 
             throw new DeploymentException(e);
-            
+
         }  finally {
-            
+
             releaseTempClassLoader(detectTempClassLoader);
             releaseTempClassLoader(ejbModuleTempClassLoader);
-            
+
             for (File file:tempFileList){
                 FileUtils.recursiveDelete(file);
             }
@@ -640,30 +641,31 @@ public class EjbModuleBuilder implements
         if (module instanceof EjbModule) {
             installModule(module, earContext);
             EARContext moduleContext;
-//        if (module.isStandAlone()) {
-            moduleContext = earContext;
-//        } else {
-//            Environment environment = earContext.getConfiguration().getEnvironment();
-//            File configurationDir = new File(earContext.getBaseDir(), module.getTargetPath());
-////            configurationDir.mkdirs();
-//
-//            // construct the ejb app deployment context... this is the same class used by the ear context
-//            try {
-//                File inPlaceConfigurationDir = null;
-//                if (null != earContext.getInPlaceConfigurationDir()) {
-//                    inPlaceConfigurationDir = new File(earContext.getInPlaceConfigurationDir(), module.getTargetPath());
-//                }
-//                moduleContext = new EARContext(configurationDir,
-//                        inPlaceConfigurationDir,
-//                        environment,
-//                        ConfigurationModuleType.EJB,
-//                        module.getModuleName(),
-//                        earContext);
-//            } catch (DeploymentException e) {
-//                cleanupConfigurationDir(configurationDir);
-//                throw e;
-//            }
-//        }
+            if (module.isStandAlone()) {
+                moduleContext = earContext;
+            } else {
+                moduleContext = new FragmentContext(earContext, ConfigurationModuleType.EJB);
+                //            Environment environment = earContext.getConfiguration().getEnvironment();
+                //            File configurationDir = new File(earContext.getBaseDir(), module.getTargetPath());
+                ////            configurationDir.mkdirs();
+                //
+                //            // construct the ejb app deployment context... this is the same class used by the ear context
+                //            try {
+                //                File inPlaceConfigurationDir = null;
+                //                if (null != earContext.getInPlaceConfigurationDir()) {
+                //                    inPlaceConfigurationDir = new File(earContext.getInPlaceConfigurationDir(), module.getTargetPath());
+                //                }
+                //                moduleContext = new EARContext(configurationDir,
+                //                        inPlaceConfigurationDir,
+                //                        environment,
+                //                        ConfigurationModuleType.EJB,
+                //                        module.getModuleName(),
+                //                        earContext);
+                //            } catch (DeploymentException e) {
+                //                cleanupConfigurationDir(configurationDir);
+                //                throw e;
+                //            }
+            }
             module.setEarContext(moduleContext);
             module.setRootEarContext(earContext);
             if (((EjbModule) module).getEjbJar().getAssemblyDescriptor() != null) {
@@ -709,11 +711,11 @@ public class EjbModuleBuilder implements
                         .getModuleLocations();
                 URI baseUri = URI.create(module.getTargetPath());
                 earContext.getCompleteManifestClassPath(module.getDeployable(), baseUri, URI.create("."), EjbModuleClasspaths, moduleLocations);
-                
+
                 for (String classpath:EjbModuleClasspaths){
                     earContext.addToClassPath(classpath);
                 }
-                
+
             }
             //earContext.addInclude(".", moduleFile);
         } catch (IOException e) {
@@ -755,7 +757,7 @@ public class EjbModuleBuilder implements
             LinkedHashSet<Module<?,?>> modules = module.getModules();
             for (Module<?,?> subModule: modules) {
                 if (subModule instanceof EjbModule)  {
-                    
+
                     if(module instanceof AppClientModule){
                         earContext = module.getEarContext();
                     }
@@ -764,11 +766,11 @@ public class EjbModuleBuilder implements
             }
         }
     }
-    
+
 
     private void doInitContext(EARContext earContext, Module module, Bundle bundle) throws DeploymentException {
         EjbModule ejbModule = (EjbModule) module;
-        
+
 
 
         AppInfo appInfo = getAppInfo(earContext, ejbModule, bundle);
@@ -812,7 +814,7 @@ public class EjbModuleBuilder implements
         // Add extra gbean declared in the geronimo-openejb.xml file
         serviceBuilders.build(ejbModule.getVendorDD(), earContext, ejbModule.getEarContext());
 
-       
+
         GBeanData ejbModuleGBeanData = new GBeanData(ejbModule.getModuleName(), EjbModuleImpl.class);
         try {
 
@@ -850,7 +852,7 @@ public class EjbModuleBuilder implements
                 module.setClassLoader(bundleLoader);
                 appModule.getEjbModules().add(module.getEjbModule());
             }
-            
+
             if(!ejbModule.isStandAlone())
             {
                appModule.setModuleId(ejbModule.getParentModule().getName());
@@ -1164,19 +1166,19 @@ public class EjbModuleBuilder implements
         }
         // add enc
         String moduleName = module.getName();
-        
+
         if (earContext.getSubModuleNames().size() > 1 && earContext.getSubModuleNames().contains(moduleName)){
             log.warn("Duplicated moduleName: '"+moduleName +"' is found ! deployer will rename it to: '"+moduleName +
                     "_duplicated' , please check your modules in application to make sure they don't share the same name");
             moduleName = moduleName +"_duplicated";
             earContext.getSubModuleNames().add(moduleName);
         }
-        
+
         if (!(module.getParentModule() instanceof WebModule) && !(module.getParentModule() instanceof AppClientModule)) {
             earContext.getSubModuleNames().add(moduleName);
             module.getJndiScope(JndiScope.module).put("module/ModuleName", moduleName);
         }
-        
+
         ejbDeploymentBuilder.buildEnc();
 
         Set<GBeanData> gBeanDatas = earContext.getConfiguration().findGBeanDatas(Collections.singleton(new AbstractNameQuery(PersistenceUnitGBean.class.getName())));
@@ -1445,18 +1447,18 @@ public class EjbModuleBuilder implements
             return appInfo;
         }
     }
-    
+
     public static class MessageDestinationInfo implements JndiConsumer {
-        
+
         private final IllegalStateException notAllowedException = new IllegalStateException(
                 "this instance is only used for adminObjectRefBuilder to get MessageDestination defined.");
         private final List<MessageDestination> specMessageDestinations;
-        
+
         public MessageDestinationInfo(List<MessageDestination> specMessageDestinations) {
             this.specMessageDestinations = specMessageDestinations == null ? new ArrayList<MessageDestination>()
                     : specMessageDestinations;
         }
-        
+
         @Override
         public Collection<DataSource> getDataSource() {
             throw notAllowedException;

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=1166214&r1=1166213&r2=1166214&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 Wed Sep  7 15:10:16 2011
@@ -689,9 +689,9 @@ public class TomcatModuleBuilder extends
             //Save Deployment Attributes
             Map<String, Object> deploymentAttributes = new HashMap<String, Object>();
             deploymentAttributes.put(WebApplicationConstants.META_COMPLETE, webApp.isMetadataComplete());
-            deploymentAttributes.put(WebApplicationConstants.SCHEMA_VERSION, INITIAL_WEB_XML_SCHEMA_VERSION.get(earContext.getGeneralData()));
-            deploymentAttributes.put(WebApplicationConstants.ORDERED_LIBS, AbstractWebModuleBuilder.ORDERED_LIBS.get(earContext.getGeneralData()));
-            deploymentAttributes.put(WebApplicationConstants.SERVLET_CONTAINER_INITIALIZERS, AbstractWebModuleBuilder.SERVLET_CONTAINER_INITIALIZERS.get(earContext.getGeneralData()));
+            deploymentAttributes.put(WebApplicationConstants.SCHEMA_VERSION, INITIAL_WEB_XML_SCHEMA_VERSION.get(webModule.getEarContext().getGeneralData()));
+            deploymentAttributes.put(WebApplicationConstants.ORDERED_LIBS, AbstractWebModuleBuilder.ORDERED_LIBS.get(webModule.getEarContext().getGeneralData()));
+            deploymentAttributes.put(WebApplicationConstants.SERVLET_CONTAINER_INITIALIZERS, AbstractWebModuleBuilder.SERVLET_CONTAINER_INITIALIZERS.get(webModule.getEarContext().getGeneralData()));
             webModuleData.setAttribute("deploymentAttributes", deploymentAttributes);
 
             //listeners added directly to the StandardContext will get loaded by the tomcat classloader, not the app classloader!
@@ -718,7 +718,7 @@ public class TomcatModuleBuilder extends
                 webModuleData.setReferencePattern("applicationPolicyConfigurationManager", EARContext.JACC_MANAGER_NAME_KEY.get(earContext.getGeneralData()));
             }
             //not truly metadata complete until MBEs have run
-            if (INITIAL_WEB_XML_SCHEMA_VERSION.get(earContext.getGeneralData()) >= 2.5f) {
+            if (INITIAL_WEB_XML_SCHEMA_VERSION.get(module.getEarContext().getGeneralData()) >= 2.5f) {
                 webApp.setMetadataComplete(true);
                 String specDeploymentPlan = getSpecDDAsString(webModule);
                 module.setOriginalSpecDD(specDeploymentPlan);