You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dj...@apache.org on 2010/01/22 01:10:56 UTC

svn commit: r901935 [2/3] - in /geronimo/server/trunk: framework/configs/karaf-framework/src/main/filtered-resources/etc/ framework/configs/rmi-naming/src/main/plan/ framework/modules/geronimo-core/src/main/java/org/apache/geronimo/validator/ framework...

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder.java?rev=901935&r1=901934&r2=901935&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilder.java Fri Jan 22 00:10:53 2010
@@ -65,6 +65,9 @@
 import org.apache.geronimo.gbean.annotation.ParamSpecial;
 import org.apache.geronimo.gbean.annotation.SpecialAttributeType;
 import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+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.j2ee.management.impl.J2EEApplicationImpl;
 import org.apache.geronimo.kernel.GBeanAlreadyExistsException;
 import org.apache.geronimo.kernel.GBeanNotFoundException;
@@ -139,6 +142,7 @@
     private final Naming naming;
     private final Collection<? extends ArtifactResolver> artifactResolvers;
     private final BundleContext bundleContext;
+    private final AbstractNameQuery globalContextAbstractName;
 
     public static ThreadLocal<Boolean> createPlanMode = new ThreadLocal<Boolean>() {
         @Override
@@ -154,50 +158,11 @@
         }
     };
 
-//    static {
-//        GBeanInfoBuilder infoBuilder = GBeanInfoBuilder.createStatic(EARConfigBuilder.class, NameFactory.CONFIG_BUILDER);
-//        infoBuilder.addAttribute("defaultEnvironment", Environment.class, true, true);
-//        infoBuilder.addAttribute("transactionManagerAbstractName", AbstractNameQuery.class, true);
-//        infoBuilder.addAttribute("connectionTrackerAbstractName", AbstractNameQuery.class, true);
-//        infoBuilder.addAttribute("corbaGBeanAbstractName", AbstractNameQuery.class, true);
-//        infoBuilder.addAttribute("serverName", AbstractNameQuery.class, true);
-//
-//        infoBuilder.addReference("Repositories", Repository.class, "Repository");
-//        infoBuilder.addReference("EJBConfigBuilder", ModuleBuilder.class, NameFactory.MODULE_BUILDER);
-//        infoBuilder.addReference("WebConfigBuilder", ModuleBuilder.class, NameFactory.MODULE_BUILDER);
-//        infoBuilder.addReference("ConnectorConfigBuilder", ModuleBuilder.class, NameFactory.MODULE_BUILDER);
-//        infoBuilder.addReference("ActivationSpecInfoLocator", ActivationSpecInfoLocator.class, NameFactory.MODULE_BUILDER);
-//        infoBuilder.addReference("AppClientConfigBuilder", ModuleBuilder.class, NameFactory.MODULE_BUILDER);
-//        infoBuilder.addReference("ServiceBuilders", NamespaceDrivenBuilder.class, NameFactory.MODULE_BUILDER);
-//        infoBuilder.addReference("PersistenceUnitBuilders", ModuleBuilderExtension.class, NameFactory.MODULE_BUILDER);
-//        infoBuilder.addReference("ArtifactResolvers", ArtifactResolver.class, "ArtifactResolver");
-//
-//        infoBuilder.addAttribute("kernel", Kernel.class, false);
-//
-//        infoBuilder.setConstructor(new String[]{
-//                "defaultEnvironment",
-//                "transactionManagerAbstractName",
-//                "connectionTrackerAbstractName",
-//                "corbaGBeanAbstractName",
-//                "serverName",
-//                "Repositories",
-//                "EJBConfigBuilder",
-//                "WebConfigBuilder",
-//                "ConnectorConfigBuilder",
-//                "ActivationSpecInfoLocator",
-//                "AppClientConfigBuilder",
-//                "ServiceBuilders",
-//                "PersistenceUnitBuilders",
-//                "ArtifactResolvers",
-//                "kernel"
-//        });
-//
-//    }
-
     public EARConfigBuilder(@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 = "EJBConfigBuilder", namingType = NameFactory.MODULE_BUILDER)Collection<ModuleBuilder> ejbConfigBuilder,
@@ -214,6 +179,7 @@
                 transactionManagerAbstractName,
                 connectionTrackerAbstractName,
                 corbaGBeanAbstractName,
+                globalContextAbstractName,
                 serverName,
                 ConfigurationUtil.getConfigurationManager(kernel),
                 repositories,
@@ -233,6 +199,7 @@
                             AbstractNameQuery connectionTrackerAbstractName,
                             AbstractNameQuery corbaGBeanAbstractName,
                             AbstractNameQuery serverName,
+                            AbstractNameQuery globalContextAbstractName,
                             Collection<? extends Repository> repositories,
                             ModuleBuilder ejbConfigBuilder,
                             ModuleBuilder webConfigBuilder,
@@ -247,6 +214,7 @@
                 transactionManagerAbstractName,
                 connectionTrackerAbstractName,
                 corbaGBeanAbstractName,
+                globalContextAbstractName,
                 serverName,
                 null,
                 repositories,
@@ -266,6 +234,7 @@
                              AbstractNameQuery transactionManagerAbstractName,
                              AbstractNameQuery connectionTrackerAbstractName,
                              AbstractNameQuery corbaGBeanAbstractName,
+                             AbstractNameQuery globalContextAbstractName,
                              AbstractNameQuery serverName,
                              ConfigurationManager configurationManager,
                              Collection<? extends Repository> repositories,
@@ -294,6 +263,7 @@
         this.transactionManagerObjectName = transactionManagerAbstractName;
         this.connectionTrackerObjectName = connectionTrackerAbstractName;
         this.corbaGBeanObjectName = corbaGBeanAbstractName;
+        this.globalContextAbstractName = globalContextAbstractName;
         this.serverName = serverName;
         this.naming = naming;
         this.artifactResolvers = artifactResolvers;
@@ -660,7 +630,7 @@
                 }
 
                 // Create the J2EEApplication managed object
-                GBeanData gbeanData = new GBeanData(earContext.getModuleName(), J2EEApplicationImpl.GBEAN_INFO);
+                GBeanData gbeanData = new GBeanData(earContext.getModuleName(), J2EEApplicationImpl.class);
                 try {
                     String originalSpecDD = applicationInfo.getOriginalSpecDD();
                     if (originalSpecDD == null) {
@@ -692,6 +662,8 @@
                 earContext.addGBean(gbeanData);
             }
 
+            AbstractName appJndiName = naming.createChildName(earContext.getModuleName(), "ApplicationJndi", "ApplicationJndi");
+            earContext.getGeneralData().put(EARContext.APPLICATION_JNDI_NAME_KEY, appJndiName);
             // each module can now add it's GBeans
             for (Module module : applicationInfo.getModules()) {
                 if (createPlanMode.get()) {
@@ -710,6 +682,12 @@
                 EARConfigBuilder.appInfo.set(applicationInfo);
                 throw new DeploymentException();
             }
+            Map<JndiKey, Map<String, Object>> contexts = NamingBuilder.JNDI_KEY.get(earContext.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", globalContextAbstractName);
+            earContext.addGBean(appContexts);
 
             // it's the caller's responsibility to close the context...
             return earContext;

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EARContext.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EARContext.java?rev=901935&r1=901934&r2=901935&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EARContext.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/EARContext.java Fri Jan 22 00:10:53 2010
@@ -34,6 +34,7 @@
  * @version $Rev:386276 $ $Date$
  */
 public class EARContext extends DeploymentContext {
+    public static final String APPLICATION_JNDI_NAME_KEY = "AppplicationJndiName";
 
     private final AbstractNameQuery serverName;
     private final AbstractNameQuery transactionManagerObjectName;

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/NamingBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/NamingBuilder.java?rev=901935&r1=901934&r2=901935&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/NamingBuilder.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/main/java/org/apache/geronimo/j2ee/deployment/NamingBuilder.java Fri Jan 22 00:10:53 2010
@@ -24,6 +24,7 @@
 import org.apache.geronimo.deployment.AbstractNamespaceBuilder;
 import org.apache.geronimo.gbean.AbstractName;
 import org.apache.geronimo.j2ee.annotation.Holder;
+import org.apache.geronimo.j2ee.jndi.JndiKey;
 import org.apache.geronimo.kernel.repository.Environment;
 import org.apache.xmlbeans.XmlObject;
 
@@ -37,12 +38,12 @@
     XmlObject[] NO_REFS = new XmlObject[] {};
     String ENV = "env/";
 
-    Key<Map<String, Object>> JNDI_KEY = new Key<Map<String, Object>>() {
+    Key<Map<JndiKey, Map<String, Object>>> JNDI_KEY = new Key<Map<JndiKey, Map<String, Object>>>() {
 
-        public Map<String, Object> get(Map context) {
-            Map<String, Object> result = (Map<String, Object>) context.get(this);
+        public Map<JndiKey, Map<String, Object>> get(Map context) {
+            Map<JndiKey, Map<String, Object>> result = (Map<JndiKey, Map<String, Object>>) context.get(this);
             if (result == null) {
-                result = new HashMap<String, Object>();
+                result = new HashMap<JndiKey, Map<String, Object>>();
                 context.put(this, result);
             }
             return result;

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilderTestSupport.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilderTestSupport.java?rev=901935&r1=901934&r2=901935&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilderTestSupport.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee-builder/src/test/java/org/apache/geronimo/j2ee/deployment/EARConfigBuilderTestSupport.java Fri Jan 22 00:10:53 2010
@@ -96,6 +96,8 @@
 
     protected static final AbstractName nonTransactionalTimerObjectName = naming.createChildName(rootConfig, "NonTransactionalThreaPooledTimer", "ThreadPooledTimer");
 
+    protected static final AbstractName globalContextAbstractName = naming.createChildName(rootConfig, "GlobalContext", "GlobalContext");
+
     protected static final AbstractName serverName = naming.createChildName(rootConfig, "J2EEServer", "Server");
 
     protected static final AbstractName earName = naming.createRootName(new Artifact("org.apache.geronimo.test.test-ear", "ear", "", "ear"), "test", NameFactory.J2EE_APPLICATION);
@@ -119,6 +121,8 @@
 
     protected final AbstractNameQuery connectionTrackerAbstractNameQuery = new AbstractNameQuery(connectionTrackerObjectName, null);
 
+    protected final AbstractNameQuery globalContextAbstractNameQuery = new AbstractNameQuery(globalContextAbstractName, null);
+
     protected final AbstractNameQuery corbaGBeanAbstractNameQuery = new AbstractNameQuery(serverName, null);
 
     private ListableRepository repository;
@@ -145,6 +149,7 @@
                     connectionTrackerAbstractNameQuery,
                     corbaGBeanAbstractNameQuery,
                     null,
+                    globalContextAbstractNameQuery,
                     Collections.singleton(repository),
                     ejbConfigBuilder,
                     webConfigBuilder,
@@ -176,6 +181,7 @@
                 connectionTrackerAbstractNameQuery,
                 corbaGBeanAbstractNameQuery,
                 null,
+                globalContextAbstractNameQuery,
                 null,
                 ejbConfigBuilder,
                 webConfigBuilder,
@@ -211,6 +217,7 @@
                 connectionTrackerAbstractNameQuery,
                 corbaGBeanAbstractNameQuery,
                 null,
+                globalContextAbstractNameQuery,
                 null,
                 ejbConfigBuilder,
                 webConfigBuilder,
@@ -246,6 +253,7 @@
                 connectionTrackerAbstractNameQuery,
                 corbaGBeanAbstractNameQuery,
                 null,
+                globalContextAbstractNameQuery,
                 null,
                 ejbConfigBuilder,
                 webConfigBuilder,
@@ -281,6 +289,7 @@
                 connectionTrackerAbstractNameQuery,
                 corbaGBeanAbstractNameQuery,
                 null,
+                globalContextAbstractNameQuery,
                 null,
                 ejbConfigBuilder,
                 webConfigBuilder,
@@ -316,6 +325,7 @@
                 connectionTrackerAbstractNameQuery,
                 corbaGBeanAbstractNameQuery,
                 null,
+                globalContextAbstractNameQuery,
                 null,
                 null,
                 webConfigBuilder,
@@ -352,6 +362,7 @@
                 connectionTrackerAbstractNameQuery,
                 corbaGBeanAbstractNameQuery,
                 null,
+                globalContextAbstractNameQuery,
                 null,
                 ejbConfigBuilder,
                 null,
@@ -387,6 +398,7 @@
                 connectionTrackerAbstractNameQuery,
                 corbaGBeanAbstractNameQuery,
                 null,
+                globalContextAbstractNameQuery,
                 null,
                 ejbConfigBuilder,
                 webConfigBuilder,

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee/pom.xml?rev=901935&r1=901934&r2=901935&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee/pom.xml (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee/pom.xml Fri Jan 22 00:10:53 2010
@@ -46,6 +46,12 @@
             <artifactId>geronimo-management</artifactId>
             <version>${version}</version>
         </dependency>
+        
+        <dependency>
+            <groupId>org.apache.geronimo.framework</groupId>
+            <artifactId>geronimo-naming</artifactId>
+            <version>${version}</version>
+        </dependency>
 
         <dependency>
             <groupId>org.apache.geronimo.framework</groupId>
@@ -65,7 +71,11 @@
                     <instructions>
                         <!--packages containing "impl" or "internal" are excluded by default -->
                         <Export-Package>
-                            org.apache.geronimo.j2ee,org.apache.geronimo.j2ee.annotation,org.apache.geronimo.j2ee.j2eeobjectnames,org.apache.geronimo.j2ee.management.impl
+                            org.apache.geronimo.j2ee,
+                            org.apache.geronimo.j2ee.annotation,
+                            org.apache.geronimo.j2ee.j2eeobjectnames,
+                            org.apache.geronimo.j2ee.jndi,
+                            org.apache.geronimo.j2ee.management.impl
                         </Export-Package>
                         <!--<_versionpolicy>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy>-->
                     </instructions>

Added: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee/src/main/java/org/apache/geronimo/j2ee/jndi/ApplicationJndi.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee/src/main/java/org/apache/geronimo/j2ee/jndi/ApplicationJndi.java?rev=901935&view=auto
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee/src/main/java/org/apache/geronimo/j2ee/jndi/ApplicationJndi.java (added)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee/src/main/java/org/apache/geronimo/j2ee/jndi/ApplicationJndi.java Fri Jan 22 00:10:53 2010
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+
+package org.apache.geronimo.j2ee.jndi;
+
+import org.apache.geronimo.gbean.GBeanLifecycle;
+import org.apache.geronimo.gbean.annotation.GBean;
+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.gjndi.FederatedContext;
+import org.apache.geronimo.kernel.Kernel;
+import org.apache.geronimo.naming.enc.EnterpriseNamingContext;
+
+import javax.naming.Context;
+import javax.naming.NamingException;
+import java.util.Map;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@GBean
+public class ApplicationJndi implements GBeanLifecycle {
+
+    private final Context applicationContext;
+    private final Context globalAdditions;
+    private final FederatedContext globalContext;
+
+    public ApplicationJndi(@ParamAttribute(name = "globalContextSegment") Map<String, Object> globalContextSegment,
+                           @ParamAttribute(name = "applicationContextMap") Map<String, Object> applicationContext,
+                           @ParamReference(name = "GlobalContext", namingType = "Context") FederatedContext globalContext,
+                           @ParamSpecial(type = SpecialAttributeType.kernel) Kernel kernel,
+                           @ParamSpecial(type = SpecialAttributeType.classLoader) ClassLoader classLoader
+                           ) throws NamingException {
+        this.globalAdditions = EnterpriseNamingContext.livenReferences(globalContextSegment, null, kernel, classLoader, JndiScope.global.name() + "/");
+        this.globalContext = globalContext;
+        this.globalContext.federateContext(this.globalAdditions);
+        this.applicationContext = EnterpriseNamingContext.livenReferences(applicationContext, null, kernel, classLoader, JndiScope.application.name() + "/");
+    }
+
+    public Context getApplicationContext() {
+        return applicationContext;
+    }
+
+    public FederatedContext getGlobalContext() {
+        return globalContext;
+    }
+
+    @Override
+    public void doStart() throws Exception {
+    }
+
+    @Override
+    public void doStop() throws Exception {
+        globalContext.unfederateContext(globalAdditions);
+    }
+
+    @Override
+    public void doFail() {
+        try {
+            doStop();
+        } catch (Exception e) {
+            //ignore
+        }
+    }
+}

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

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

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

Added: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee/src/main/java/org/apache/geronimo/j2ee/jndi/JndiKey.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee/src/main/java/org/apache/geronimo/j2ee/jndi/JndiKey.java?rev=901935&view=auto
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee/src/main/java/org/apache/geronimo/j2ee/jndi/JndiKey.java (added)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee/src/main/java/org/apache/geronimo/j2ee/jndi/JndiKey.java Fri Jan 22 00:10:53 2010
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+
+package org.apache.geronimo.j2ee.jndi;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public interface JndiKey {
+    String toString();
+}

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

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

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

Added: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee/src/main/java/org/apache/geronimo/j2ee/jndi/JndiScope.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee/src/main/java/org/apache/geronimo/j2ee/jndi/JndiScope.java?rev=901935&view=auto
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee/src/main/java/org/apache/geronimo/j2ee/jndi/JndiScope.java (added)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee/src/main/java/org/apache/geronimo/j2ee/jndi/JndiScope.java Fri Jan 22 00:10:53 2010
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+
+package org.apache.geronimo.j2ee.jndi;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public enum JndiScope implements JndiKey {
+    global, application, module, comp
+}

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

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

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

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-j2ee/src/main/java/org/apache/geronimo/j2ee/management/impl/J2EEApplicationImpl.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-j2ee/src/main/java/org/apache/geronimo/j2ee/management/impl/J2EEApplicationImpl.java?rev=901935&r1=901934&r2=901935&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-j2ee/src/main/java/org/apache/geronimo/j2ee/management/impl/J2EEApplicationImpl.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-j2ee/src/main/java/org/apache/geronimo/j2ee/management/impl/J2EEApplicationImpl.java Fri Jan 22 00:10:53 2010
@@ -16,12 +16,7 @@
  */
 package org.apache.geronimo.j2ee.management.impl;
 
-import java.util.Hashtable;
-import java.util.Collection;
-import java.util.ArrayList;
-import javax.management.ObjectName;
-import org.apache.geronimo.gbean.GBeanInfo;
-import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.geronimo.gbean.annotation.*;
 import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
 import org.apache.geronimo.kernel.ObjectNameUtil;
 import org.apache.geronimo.management.AppClientModule;
@@ -33,27 +28,34 @@
 import org.apache.geronimo.management.geronimo.ResourceAdapterModule;
 import org.apache.geronimo.management.geronimo.WebModule;
 
+import javax.management.ObjectName;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Hashtable;
+
 /**
  * @version $Rev$ $Date$
  */
+
+@GBean(j2eeType = NameFactory.J2EE_APPLICATION)
 public class J2EEApplicationImpl implements J2EEApplication {
     private final String objectName;
     private final String deploymentDescriptor;
     private final J2EEServer server;
-    private final Collection resources;
-    private final Collection appClientModules;
-    private final Collection ejbModules;
-    private final Collection resourceAdapterModules;
-    private final Collection webModules;
-
-    public J2EEApplicationImpl(String objectName,
-            String deploymentDescriptor,
-            J2EEServer server,
-            Collection resources,
-            Collection appClientModules,
-            Collection ejbModules,
-            Collection resourceAdapterModules,
-            Collection webModules) {
+    private final Collection<J2EEResource> resources;
+    private final Collection<AppClientModule> appClientModules;
+    private final Collection<EJBModule> ejbModules;
+    private final Collection<ResourceAdapterModule> resourceAdapterModules;
+    private final Collection<WebModule> webModules;
+
+    public J2EEApplicationImpl(@ParamSpecial(type = SpecialAttributeType.objectName)String objectName,
+            @ParamAttribute(name="deploymentDescriptor")String deploymentDescriptor,
+            @ParamReference(name="Server", namingType = NameFactory.J2EE_SERVER)J2EEServer server,
+            @ParamReference(name="Resources", namingType = NameFactory.J2EE_RESOURCE)Collection<J2EEResource> resources,
+            @ParamReference(name="AppClientModules", namingType = NameFactory.APP_CLIENT_MODULE)Collection<AppClientModule> appClientModules,
+            @ParamReference(name="EJBModules", namingType = NameFactory.EJB_MODULE)Collection<EJBModule> ejbModules,
+            @ParamReference(name="ResourceAdapterModules", namingType = NameFactory.RESOURCE_ADAPTER_MODULE)Collection<ResourceAdapterModule> resourceAdapterModules,
+            @ParamReference(name="WebModules", namingType = NameFactory.WEB_MODULE)Collection<WebModule> webModules) {
 
         this.objectName = objectName;
         ObjectName myObjectName = ObjectNameUtil.getObjectName(this.objectName);
@@ -163,33 +165,4 @@
         return server.getObjectName();
     }
 
-    public static final GBeanInfo GBEAN_INFO;
-
-    static {
-        GBeanInfoBuilder infoFactory = GBeanInfoBuilder.createStatic(J2EEApplicationImpl.class, NameFactory.J2EE_APPLICATION);
-        infoFactory.addAttribute("deploymentDescriptor", String.class, true);
-        infoFactory.addReference("Server", J2EEServer.class);
-        infoFactory.addReference("Resources", J2EEResource.class);
-        infoFactory.addReference("AppClientModules", AppClientModule.class);
-        infoFactory.addReference("EJBModules", EJBModule.class);
-        infoFactory.addReference("ResourceAdapterModules", ResourceAdapterModule.class);
-        infoFactory.addReference("WebModules", WebModule.class);
-
-        infoFactory.setConstructor(new String[]{
-                "objectName",
-                "deploymentDescriptor",
-                "Server",
-                "Resources",
-                "AppClientModules",
-                "EJBModules",
-                "ResourceAdapterModules",
-                "WebModules",
-        });
-
-        GBEAN_INFO = infoFactory.getBeanInfo();
-    }
-
-    public static GBeanInfo getGBeanInfo() {
-        return GBEAN_INFO;
-    }
 }

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/AbstractNamingBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/AbstractNamingBuilder.java?rev=901935&r1=901934&r2=901935&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/AbstractNamingBuilder.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/AbstractNamingBuilder.java Fri Jan 22 00:10:53 2010
@@ -37,6 +37,8 @@
 import org.apache.geronimo.j2ee.annotation.Injection;
 import org.apache.geronimo.j2ee.deployment.Module;
 import org.apache.geronimo.j2ee.deployment.NamingBuilder;
+import org.apache.geronimo.j2ee.jndi.JndiKey;
+import org.apache.geronimo.j2ee.jndi.JndiScope;
 import org.apache.geronimo.kernel.config.Configuration;
 import org.apache.geronimo.kernel.repository.Artifact;
 import org.apache.geronimo.kernel.repository.Dependency;
@@ -126,13 +128,43 @@
     public int getPriority() {
         return NORMAL_PRIORITY;
     }
+
+    protected void put(String key, Object value, Map<JndiKey, Map<String, Object>> contexts) {
+        JndiKey jndiKey;
+        if (key.startsWith("java:")) {
+            int pos = key.indexOf("/", 5);
+            String type = key.substring(5, pos);
+            jndiKey = JndiScope.valueOf(type);
+            key = key.substring(5);
+        } else {
+            key = "comp/env/" + key;
+            jndiKey = JndiScope.comp;
+        }
+        Map<String, Object> scope = contexts.get(jndiKey);
+        if (scope == null) {
+            scope = new HashMap<String, Object>();
+            contexts.put(jndiKey, scope);
+        }
+        scope.put(key, value);
+    }
     
-    protected Object lookupJndiContextMap(Map sharedContext, String name) {
-        Map<String, Object> jndiContext = getJndiContextMap(sharedContext);
-        return jndiContext.get(name);
+    protected Object lookupJndiContextMap(Map sharedContext, String key) {
+        JndiKey jndiKey;
+        if (key.startsWith("java:")) {
+            int pos = key.indexOf("/", 5);
+            String type = key.substring(5, pos);
+            jndiKey = JndiScope.valueOf(type);
+            key = key.substring(5);
+        } else {
+            key = "comp/env/" + key;
+            jndiKey = JndiScope.comp;
+        }
+        Map<String, Object> scope = getJndiContextMap(sharedContext).get(jndiKey);
+        if (scope == null) return null;
+        return scope.get(key);
     }
     
-    protected Map<String, Object> getJndiContextMap(Map sharedContext) {
+    protected Map<JndiKey, Map<String, Object>> getJndiContextMap(Map sharedContext) {
         return NamingBuilder.JNDI_KEY.get(sharedContext);
     }
 

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilder.java?rev=901935&r1=901934&r2=901935&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilder.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilder.java Fri Jan 22 00:10:53 2010
@@ -137,7 +137,7 @@
                 // see Java EE 5 spec, section EE.5.4.1.3
                 if (value != null) {
                     addInjections(name, envEntry.getInjectionTargetArray(), componentContext);
-                    getJndiContextMap(componentContext).put(ENV + name, value);
+                    put(name, value, getJndiContextMap(componentContext));
                 }
             } catch (NumberFormatException e) {
                 throw new DeploymentException("Invalid env-entry value for name: " + name, e);

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/GBeanRefBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/GBeanRefBuilder.java?rev=901935&r1=901934&r2=901935&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/GBeanRefBuilder.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/main/java/org/apache/geronimo/naming/deployment/GBeanRefBuilder.java Fri Jan 22 00:10:53 2010
@@ -89,7 +89,7 @@
 
             String refName = gbeanRef.getRefName();
 
-            NamingBuilder.JNDI_KEY.get(componentContext).put(ENV + refName, new GBeanReference(module.getConfigId(), queries, gBeanType));
+            put(refName, new GBeanReference(module.getConfigId(), queries, gBeanType), NamingBuilder.JNDI_KEY.get(componentContext));
 
         }
     }

Modified: geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/test/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilderTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/test/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilderTest.java?rev=901935&r1=901934&r2=901935&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/test/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilderTest.java (original)
+++ geronimo/server/trunk/plugins/j2ee/geronimo-naming-builder/src/test/java/org/apache/geronimo/naming/deployment/EnvironmentEntryBuilderTest.java Fri Jan 22 00:10:53 2010
@@ -29,6 +29,7 @@
 import javax.naming.NamingException;
 
 import junit.framework.TestCase;
+import org.apache.geronimo.j2ee.jndi.JndiScope;
 import org.apache.geronimo.naming.enc.EnterpriseNamingContext;
 import org.apache.geronimo.j2ee.deployment.NamingBuilder;
 import org.apache.xmlbeans.XmlObject;
@@ -39,7 +40,7 @@
  */
 public class EnvironmentEntryBuilderTest extends TestCase {
     private Map componentContext = new HashMap();
-    private NamingBuilder environmentEntryBuilder = new EnvironmentEntryBuilder(new String[] {AbstractNamingBuilder.JEE_NAMESPACE});
+    private NamingBuilder environmentEntryBuilder = new EnvironmentEntryBuilder(new String[]{AbstractNamingBuilder.JEE_NAMESPACE});
 
     private static final String TEST = "<tmp xmlns=\"http://java.sun.com/xml/ns/javaee\">" +
             "<env-entry>" +
@@ -164,23 +165,23 @@
             cursor.dispose();
         }
         environmentEntryBuilder.buildNaming(doc, null, null, componentContext);
-        Context context = EnterpriseNamingContext.createEnterpriseNamingContext(NamingBuilder.JNDI_KEY.get(componentContext));
+        Context context = EnterpriseNamingContext.livenReferences(NamingBuilder.JNDI_KEY.get(componentContext).get(JndiScope.comp), null, null, null, "comp/");
         Set actual = new HashSet();
-        for (NamingEnumeration e = context.listBindings("env"); e.hasMore();) {
+        for (NamingEnumeration e = context.listBindings("comp/env"); e.hasMore();) {
             NameClassPair pair = (NameClassPair) e.next();
             actual.add(pair.getName());
         }
         Set expected = new HashSet(Arrays.asList(new String[]{"string", "char", "byte", "short", "int", "long", "float", "double", "boolean"}));
         assertEquals(expected, actual);
-        assertEquals(stringVal, context.lookup("env/string"));
-        assertEquals(charVal, context.lookup("env/char"));
-        assertEquals(byteVal, context.lookup("env/byte"));
-        assertEquals(shortVal, context.lookup("env/short"));
-        assertEquals(intVal, context.lookup("env/int"));
-        assertEquals(longVal, context.lookup("env/long"));
-        assertEquals(floatVal, context.lookup("env/float"));
-        assertEquals(doubleVal, context.lookup("env/double"));
-        assertEquals(booleanVal, context.lookup("env/boolean"));
+        assertEquals(stringVal, context.lookup("comp/env/string"));
+        assertEquals(charVal, context.lookup("comp/env/char"));
+        assertEquals(byteVal, context.lookup("comp/env/byte"));
+        assertEquals(shortVal, context.lookup("comp/env/short"));
+        assertEquals(intVal, context.lookup("comp/env/int"));
+        assertEquals(longVal, context.lookup("comp/env/long"));
+        assertEquals(floatVal, context.lookup("comp/env/float"));
+        assertEquals(doubleVal, context.lookup("comp/env/double"));
+        assertEquals(booleanVal, context.lookup("comp/env/boolean"));
     }
 
     public void testEnvEntriesOverride() throws Exception {
@@ -212,34 +213,29 @@
             cursor.dispose();
         }
         environmentEntryBuilder.buildNaming(doc, plan, null, componentContext);
-        Context context = EnterpriseNamingContext.createEnterpriseNamingContext(NamingBuilder.JNDI_KEY.get(componentContext));
+        Context context = EnterpriseNamingContext.livenReferences(NamingBuilder.JNDI_KEY.get(componentContext).get(JndiScope.comp), null, null, null, "comp/");
         Set actual = new HashSet();
-        for (NamingEnumeration e = context.listBindings("env"); e.hasMore();) {
+        for (NamingEnumeration e = context.listBindings("comp/env"); e.hasMore();) {
             NameClassPair pair = (NameClassPair) e.next();
             actual.add(pair.getName());
         }
         Set expected = new HashSet(Arrays.asList(new String[]{"string", "char", "byte", "short", "int", "long", "float", "double", "boolean"}));
         assertEquals(expected, actual);
-        assertEquals(stringVal, context.lookup("env/string"));
-        assertEquals(charVal, context.lookup("env/char"));
-        assertEquals(byteVal, context.lookup("env/byte"));
-        assertEquals(shortVal, context.lookup("env/short"));
-        assertEquals(intVal, context.lookup("env/int"));
-        assertEquals(longVal, context.lookup("env/long"));
-        assertEquals(floatVal, context.lookup("env/float"));
-        assertEquals(doubleVal, context.lookup("env/double"));
-        assertEquals(booleanVal, context.lookup("env/boolean"));
+        assertEquals(stringVal, context.lookup("comp/env/string"));
+        assertEquals(charVal, context.lookup("comp/env/char"));
+        assertEquals(byteVal, context.lookup("comp/env/byte"));
+        assertEquals(shortVal, context.lookup("comp/env/short"));
+        assertEquals(intVal, context.lookup("comp/env/int"));
+        assertEquals(longVal, context.lookup("comp/env/long"));
+        assertEquals(floatVal, context.lookup("comp/env/float"));
+        assertEquals(doubleVal, context.lookup("comp/env/double"));
+        assertEquals(booleanVal, context.lookup("comp/env/boolean"));
     }
 
-    public void xtestEmptyEnvironment() throws NamingException {
-        Context context = EnterpriseNamingContext.createEnterpriseNamingContext(componentContext);
-        try {
-            Context env = (Context) context.lookup("env");
-            assertNotNull(env);
-        } catch (NamingException e) {
-            e.printStackTrace();
-            fail();
-        }
+    public void testEmptyEnvironment() throws NamingException {
+        Context context = EnterpriseNamingContext.livenReferences(NamingBuilder.JNDI_KEY.get(componentContext).get(JndiScope.comp), null, null, null, "comp/");
+        Context env = (Context) context.lookup("comp/env");
+        assertNotNull(env);
     }
 
 }

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=901935&r1=901934&r2=901935&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 Fri Jan 22 00:10:53 2010
@@ -17,33 +17,6 @@
 
 package org.apache.geronimo.web25.deployment;
 
-import java.io.File;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.net.URI;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.LinkedHashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
-import java.util.zip.ZipEntry;
-
-import javax.security.auth.message.module.ServerAuthModule;
-import javax.xml.bind.JAXBException;
-import javax.xml.namespace.NamespaceContext;
-import javax.xml.namespace.QName;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.stream.Location;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-
 import org.apache.geronimo.common.DeploymentException;
 import org.apache.geronimo.components.jaspi.model.AuthModuleType;
 import org.apache.geronimo.components.jaspi.model.ConfigProviderType;
@@ -70,6 +43,8 @@
 import org.apache.geronimo.j2ee.deployment.WebServiceBuilder;
 import org.apache.geronimo.j2ee.deployment.annotation.SecurityAnnotationHelper;
 import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+import org.apache.geronimo.j2ee.jndi.JndiKey;
+import org.apache.geronimo.j2ee.jndi.JndiScope;
 import org.apache.geronimo.kernel.GBeanAlreadyExistsException;
 import org.apache.geronimo.kernel.Kernel;
 import org.apache.geronimo.kernel.Naming;
@@ -111,6 +86,32 @@
 import org.slf4j.LoggerFactory;
 import org.xml.sax.SAXException;
 
+import javax.security.auth.message.module.ServerAuthModule;
+import javax.xml.bind.JAXBException;
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.namespace.QName;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.stream.Location;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.StringWriter;
+import java.net.URI;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+import java.util.zip.ZipEntry;
+
 /**
  * @version $Rev$ $Date$
  */
@@ -707,6 +708,10 @@
         Map<NamingBuilder.Key, Object> buildingContext = new HashMap<NamingBuilder.Key, Object>();
         buildingContext.put(NamingBuilder.GBEAN_NAME_KEY, moduleContext.getModuleName());
 
+        //get partial jndi context from earContext.
+        Map<JndiKey, Map<String, Object>> jndiContext = new HashMap<JndiKey, Map<String, Object>>(NamingBuilder.JNDI_KEY.get(earContext.getGeneralData()));
+        buildingContext.put(NamingBuilder.JNDI_KEY, jndiContext);
+
         if (!webApp.getMetadataComplete()) {
             // 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)
@@ -718,11 +723,19 @@
         //This means that you cannot use the default environment of the web builder to add configs that will be searched.
         getNamingBuilders().buildNaming(webApp, vendorPlan, webModule, buildingContext);
 
-        Map compContext = NamingBuilder.JNDI_KEY.get(buildingContext);
+        //Combine contexts.  Note this may not work right for jaxws which has a comp/env/WebServiceContext binding
+        Map<String, Object> compContext = new HashMap<String, Object>();
+        if (jndiContext.get(JndiScope.comp) != null) {
+            compContext.putAll(jndiContext.get(JndiScope.comp));
+        }
+        if (jndiContext.get(JndiScope.module) != null) {
+            compContext.putAll(jndiContext.get(JndiScope.module));
+        }
+        
         Holder holder = NamingBuilder.INJECTION_KEY.get(buildingContext);
 
         webModule.getSharedContext().put(WebModule.WEB_APP_DATA, webModuleData);
-        webModule.getSharedContext().put(NamingBuilder.JNDI_KEY, compContext);
+        webModule.getSharedContext().put(NamingBuilder.JNDI_KEY, jndiContext);
         webModule.getSharedContext().put(NamingBuilder.INJECTION_KEY, holder);
         if (moduleContext.getServerName() != null) {
             webModuleData.setReferencePattern("J2EEServer", moduleContext.getServerName());
@@ -741,6 +754,7 @@
         }
 
         webModuleData.setAttribute("componentContext", compContext);
+        webModuleData.setReferencePattern("ApplicationJndi", (AbstractName)earContext.getGeneralData().get(EARContext.APPLICATION_JNDI_NAME_KEY));
         webModuleData.setReferencePattern("TransactionManager", moduleContext.getTransactionManagerName());
         webModuleData.setReferencePattern("TrackedConnectionAssociator", moduleContext.getConnectionTrackerName());
         webModuleData.setAttribute("modulePath", webModule.isStandAlone() || webModule.getEarContext() != webModule.getRootEarContext()? null: webModule.getTargetPath());

Modified: geronimo/server/trunk/plugins/j2ee/j2ee-deployer/src/main/plan/plan.xml
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/j2ee/j2ee-deployer/src/main/plan/plan.xml?rev=901935&r1=901934&r2=901935&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/j2ee/j2ee-deployer/src/main/plan/plan.xml (original)
+++ geronimo/server/trunk/plugins/j2ee/j2ee-deployer/src/main/plan/plan.xml Fri Jan 22 00:10:53 2010
@@ -23,6 +23,7 @@
     <gbean name="EARBuilder" class="org.apache.geronimo.j2ee.deployment.EARConfigBuilder">
         <attribute name="transactionManagerAbstractName">?name=TransactionManager</attribute>
         <attribute name="connectionTrackerAbstractName">?name=ConnectionTracker</attribute>
+        <attribute name="globalContextAbstractName">?name=JavaGlobalContext</attribute>
         <attribute name="corbaGBeanAbstractName">?name=Server</attribute>
         <attribute name="serverName">?j2eeType=J2EEServer#org.apache.geronimo.management.geronimo.J2EEServer</attribute>
         <reference name="Repositories">

Modified: geronimo/server/trunk/plugins/jaxws/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/JAXWSServiceRefBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jaxws/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/JAXWSServiceRefBuilder.java?rev=901935&r1=901934&r2=901935&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jaxws/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/JAXWSServiceRefBuilder.java (original)
+++ geronimo/server/trunk/plugins/jaxws/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/JAXWSServiceRefBuilder.java Fri Jan 22 00:10:53 2010
@@ -166,7 +166,7 @@
         Object ref = createService(serviceRef, gerServiceRef, module, bundle,
                                    serviceInterfaceClass, serviceQName,
                                    wsdlURI, serviceReferenceType, portComponentRefMap);
-        getJndiContextMap(componentContext).put(ENV + name, ref);
+        put(name, ref, getJndiContextMap(componentContext));
     }
 
     public abstract Object createService(ServiceRefType serviceRef, GerServiceRefType gerServiceRef,

Modified: geronimo/server/trunk/plugins/jaxws/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/WARWebServiceFinder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jaxws/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/WARWebServiceFinder.java?rev=901935&r1=901934&r2=901935&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jaxws/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/WARWebServiceFinder.java (original)
+++ geronimo/server/trunk/plugins/jaxws/geronimo-jaxws-builder/src/main/java/org/apache/geronimo/jaxws/builder/WARWebServiceFinder.java Fri Jan 22 00:10:53 2010
@@ -54,7 +54,7 @@
         boolean useSimpleFinder =
             Boolean.getBoolean("org.apache.geronimo.jaxws.builder.useSimpleFinder");
 
-        WebServiceFinder webServiceFinder = null;
+        WebServiceFinder webServiceFinder;
 
         if (useSimpleFinder) {
             webServiceFinder = new SimpleWARWebServiceFinder();
@@ -87,13 +87,13 @@
         if (isEJB) {
             File jarFile = new File(moduleFile.getName());
             try {
-                urlList.add(jarFile.toURL());
+                urlList.add(jarFile.toURI().toURL());
             } catch (MalformedURLException e) {
                 // this should not happen
                 throw new DeploymentException(e);
             }
         } else {
-            File baseDir = null;
+            File baseDir;
 
             if (moduleFile instanceof UnpackedJarFile) {
                 // war directory is being deployed (--inPlace)
@@ -135,7 +135,7 @@
                     // ensure it is first
                     File classesDir = new File(baseDir, "WEB-INF/classes/");
                     try {
-                        urlList.add(0, classesDir.toURL());
+                        urlList.add(0, classesDir.toURI().toURL());
                     } catch (MalformedURLException e) {
                         // this should not happen, ignore
                     }
@@ -143,7 +143,7 @@
                         && name.endsWith(".jar")) {
                     File jarFile = new File(baseDir, name);
                     try {
-                        urlList.add(jarFile.toURL());
+                        urlList.add(jarFile.toURI().toURL());
                     } catch (MalformedURLException e) {
                         // this should not happen, ignore
                     }
@@ -151,8 +151,8 @@
             }
         }
 
-        URL[] urls = urlList.toArray(new URL[] {});
-        TemporaryClassLoader tempClassLoader = null;
+        URL[] urls = urlList.toArray(new URL[urlList.size()]);
+        TemporaryClassLoader tempClassLoader;
         try {
             tempClassLoader = new TemporaryClassLoader(urls, parentClassLoader);
             List<Class> classes = new ArrayList<Class>();

Modified: geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/WebAppContextWrapper.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/WebAppContextWrapper.java?rev=901935&r1=901934&r2=901935&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/WebAppContextWrapper.java (original)
+++ geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/main/java/org/apache/geronimo/jetty8/WebAppContextWrapper.java Fri Jan 22 00:10:53 2010
@@ -18,14 +18,7 @@
 package org.apache.geronimo.jetty8;
 
 import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.EventListener;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Hashtable;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 
 import javax.management.MalformedObjectNameException;
 import javax.management.ObjectName;
@@ -44,6 +37,7 @@
 import org.apache.geronimo.j2ee.annotation.Holder;
 import org.apache.geronimo.j2ee.annotation.LifecycleMethod;
 import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+import org.apache.geronimo.j2ee.jndi.ApplicationJndi;
 import org.apache.geronimo.j2ee.management.impl.InvalidObjectNameException;
 import org.apache.geronimo.jetty8.handler.GeronimoWebAppContext;
 import org.apache.geronimo.jetty8.handler.IntegrationContext;
@@ -105,7 +99,7 @@
     public WebAppContextWrapper(@ParamSpecial(type = SpecialAttributeType.objectName) String objectName,
                                 @ParamAttribute(name = "contextPath") String contextPath,
                                 @ParamAttribute(name = "deploymentDescriptor") String originalSpecDD,
-                                @ParamAttribute(name = "modulePath")String modulePath,
+                                @ParamAttribute(name = "modulePath") String modulePath,
                                 @ParamAttribute(name = "componentContext") Map<String, Object> componentContext,
                                 @ParamSpecial(type = SpecialAttributeType.classLoader) ClassLoader classLoader,
                                 @ParamSpecial(type = SpecialAttributeType.bundle) Bundle bundle,
@@ -142,6 +136,7 @@
 
                                 @ParamReference(name = "J2EEServer") J2EEServer server,
                                 @ParamReference(name = "J2EEApplication") J2EEApplication application,
+                                @ParamReference(name = "ApplicationJndi") ApplicationJndi applicationJndi,
                                 @ParamSpecial(type = SpecialAttributeType.kernel) Kernel kernel) throws Exception {
 
         assert componentContext != null;
@@ -185,7 +180,18 @@
 
         //wrap the web app context with the jndi handler
         GeronimoUserTransaction userTransaction = new GeronimoUserTransaction(transactionManager);
-        this.componentContext = EnterpriseNamingContext.createEnterpriseNamingContext(componentContext, userTransaction, kernel, classLoader);
+        Set<Context> contexts = new LinkedHashSet<Context>(3);
+        Context localContext = EnterpriseNamingContext.livenReferences(componentContext, userTransaction, kernel, classLoader, "comp/");
+        contexts.add(localContext);
+        if (applicationJndi != null) {
+            if (applicationJndi.getApplicationContext() != null) {
+                contexts.add(applicationJndi.getApplicationContext());
+            }
+            if (applicationJndi.getGlobalContext() != null) {
+                contexts.add(applicationJndi.getGlobalContext());
+            }
+        }
+        this.componentContext = EnterpriseNamingContext.createEnterpriseNamingContext(contexts);
         integrationContext = new IntegrationContext(this.componentContext, unshareableResources, applicationManagedSecurityResources, trackedConnectionAssociator, userTransaction, bundle);
         webAppContext = new GeronimoWebAppContext(securityHandler, sessionHandler, servletHandler, null, integrationContext, classLoader, modulePath);
         webAppContext.setContextPath(contextPath);

Modified: geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/test/java/org/apache/geronimo/jetty8/AbstractWebModuleTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/test/java/org/apache/geronimo/jetty8/AbstractWebModuleTest.java?rev=901935&r1=901934&r2=901935&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/test/java/org/apache/geronimo/jetty8/AbstractWebModuleTest.java (original)
+++ geronimo/server/trunk/plugins/jetty8/geronimo-jetty8/src/test/java/org/apache/geronimo/jetty8/AbstractWebModuleTest.java Fri Jan 22 00:10:53 2010
@@ -173,7 +173,7 @@
                 null,
                 null,
                 null,
-                null);
+                null, null);
         app.doStart();
         return app;
     }

Modified: geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbDeploymentBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbDeploymentBuilder.java?rev=901935&r1=901934&r2=901935&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbDeploymentBuilder.java (original)
+++ geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbDeploymentBuilder.java Fri Jan 22 00:10:53 2010
@@ -38,6 +38,8 @@
 import org.apache.geronimo.j2ee.deployment.EARContext;
 import org.apache.geronimo.j2ee.deployment.NamingBuilder;
 import org.apache.geronimo.j2ee.deployment.annotation.AnnotatedEjbJar;
+import org.apache.geronimo.j2ee.jndi.JndiKey;
+import org.apache.geronimo.j2ee.jndi.JndiScope;
 import org.apache.geronimo.kernel.GBeanAlreadyExistsException;
 import org.apache.geronimo.naming.deployment.AbstractNamingBuilder;
 import org.apache.geronimo.naming.deployment.GBeanResourceEnvironmentBuilder;
@@ -171,10 +173,9 @@
         }
     }
 
-
     public void addEjbModuleDependency(AbstractName ejbModuleName) {
         for (GBeanData gbean : gbeans.values()) {
-            gbean.addDependency(ejbModuleName);
+            gbean.setReferencePattern("EjbModule", ejbModuleName);
         }
     }
 
@@ -359,25 +360,26 @@
             ejbModule.setClassFinder(createEjbJarClassFinder(ejbModule));
         }
 
+        Map<JndiKey, Map<String, Object>> moduleJndiContext = NamingBuilder.JNDI_KEY.get(ejbModule.getSharedContext());
         EnterpriseBeansType enterpriseBeans = ejbJarType.getEnterpriseBeans();
         if (enterpriseBeans != null) {
             for (SessionBeanType xmlbeansEjb : enterpriseBeans.getSessionArray()) {
                 String ejbName = xmlbeansEjb.getEjbName().getStringValue().trim();
                 GBeanData gbean = getEjbGBean(ejbName);
                 ResourceRefType[] resourceRefs = xmlbeansEjb.getResourceRefArray();
-                addEnc(gbean, xmlbeansEjb, resourceRefs);
+                addEnc(gbean, xmlbeansEjb, resourceRefs, moduleJndiContext);
             }
             for (MessageDrivenBeanType xmlbeansEjb : enterpriseBeans.getMessageDrivenArray()) {
                 String ejbName = xmlbeansEjb.getEjbName().getStringValue().trim();
                 GBeanData gbean = getEjbGBean(ejbName);
                 ResourceRefType[] resourceRefs = xmlbeansEjb.getResourceRefArray();
-                addEnc(gbean, xmlbeansEjb, resourceRefs);
+                addEnc(gbean, xmlbeansEjb, resourceRefs, moduleJndiContext);
             }
             for (EntityBeanType xmlbeansEjb : enterpriseBeans.getEntityArray()) {
                 String ejbName = xmlbeansEjb.getEjbName().getStringValue().trim();
                 GBeanData gbean = getEjbGBean(ejbName);
                 ResourceRefType[] resourceRefs = xmlbeansEjb.getResourceRefArray();
-                addEnc(gbean, xmlbeansEjb, resourceRefs);
+                addEnc(gbean, xmlbeansEjb, resourceRefs, moduleJndiContext);
             }
 
         }
@@ -388,7 +390,7 @@
         }
     }
 
-    private void addEnc(GBeanData gbean, XmlObject xmlbeansEjb, ResourceRefType[] resourceRefs) throws DeploymentException {
+    private void addEnc(GBeanData gbean, XmlObject xmlbeansEjb, ResourceRefType[] resourceRefs, Map<JndiKey, Map<String, Object>> moduleJndiContext) throws DeploymentException {
         OpenejbGeronimoEjbJarType geronimoOpenejb = ejbModule.getVendorDD();
 
         //
@@ -397,6 +399,8 @@
 
         // Geronimo uses a map to pass data to the naming build and for the results data
         Map<Object, Object> buildingContext = new HashMap<Object, Object>();
+        Map<JndiKey, Map<String, Object>> jndiContext = new HashMap<JndiKey, Map<String, Object>>();
+        buildingContext.put(NamingBuilder.JNDI_KEY, jndiContext);
         buildingContext.put(NamingBuilder.GBEAN_NAME_KEY, gbean.getAbstractName());
         ((AnnotatedEjbJar) ejbModule.getAnnotatedApp()).setBean(xmlbeansEjb);
 
@@ -404,7 +408,7 @@
                 geronimoOpenejb,
                 ejbModule, buildingContext);
 
-        Map compContext = NamingBuilder.JNDI_KEY.get(buildingContext);
+        Map<String, Object> compContext = jndiContext.get(JndiScope.comp);
         gbean.setAttribute("componentContextMap", compContext);
 
         //

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=901935&r1=901934&r2=901935&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 Fri Jan 22 00:10:53 2010
@@ -54,6 +54,8 @@
 import org.apache.geronimo.j2ee.deployment.NamingBuilder;
 import org.apache.geronimo.j2ee.deployment.annotation.AnnotatedEjbJar;
 import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+import org.apache.geronimo.j2ee.jndi.JndiKey;
+import org.apache.geronimo.j2ee.jndi.JndiScope;
 import org.apache.geronimo.kernel.GBeanNotFoundException;
 import org.apache.geronimo.kernel.Naming;
 import org.apache.geronimo.kernel.classloader.TemporaryClassLoader;
@@ -743,7 +745,11 @@
         EjbDeploymentBuilder ejbDeploymentBuilder = ejbModule.getEjbBuilder();
 
         // add enc
+        Map<JndiKey, Map<String, Object>> jndiContext = NamingBuilder.JNDI_KEY.get(earContext.getGeneralData());
+        ejbModule.getSharedContext().put(NamingBuilder.JNDI_KEY, jndiContext);
         ejbDeploymentBuilder.buildEnc();
+        Map<String, Object> moduleContext = jndiContext.remove(JndiScope.module);
+
 
         Set<GBeanData> gBeanDatas = earContext.getConfiguration().findGBeanDatas(Collections.singleton(new AbstractNameQuery(PersistenceUnitGBean.class.getName())));
         LinkResolver<String> linkResolver = new UniqueDefaultLinkResolver<String>();
@@ -767,7 +773,7 @@
             }
         }
         // Add JSR77 EJBModule GBean
-        GBeanData ejbModuleGBeanData = new GBeanData(ejbModule.getModuleName(), EjbModuleImplGBean.GBEAN_INFO);
+        GBeanData ejbModuleGBeanData = new GBeanData(ejbModule.getModuleName(), EjbModuleImplGBean.class);
         try {
             ejbModuleGBeanData.setReferencePattern("J2EEServer", earContext.getServerName());
             if (!ejbModule.isStandAlone()) {
@@ -784,6 +790,9 @@
             ejbModuleGBeanData.setReferencePattern("OpenEjbSystem", new AbstractNameQuery(null, Collections.EMPTY_MAP, OpenEjbSystem.class.getName()));
             ejbModuleGBeanData.setAttribute("ejbJarInfo", ejbModule.getEjbJarInfo());
             ejbModuleGBeanData.setAttribute("modulePath", ejbModule.getTargetPath());
+            ejbModuleGBeanData.setAttribute("moduleContext", moduleContext);
+            AbstractName applicationJndiName = (AbstractName)earContext.getGeneralData().get(EARContext.APPLICATION_JNDI_NAME_KEY); 
+            ejbModuleGBeanData.setReferencePattern("ApplicationJndi", applicationJndiName);
             earContext.addGBean(ejbModuleGBeanData);
         } catch (Exception e) {
             throw new DeploymentException("Unable to initialize EJBModule GBean " + ejbModuleGBeanData.getAbstractName(), e);

Modified: geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbRefBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbRefBuilder.java?rev=901935&r1=901934&r2=901935&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbRefBuilder.java (original)
+++ geronimo/server/trunk/plugins/openejb/geronimo-openejb-builder/src/main/java/org/apache/geronimo/openejb/deployment/EjbRefBuilder.java Fri Jan 22 00:10:53 2010
@@ -166,16 +166,15 @@
             Object value = entry.getValue();
 
             // work with names prefixed with java:comp/
-            if (name.startsWith("java:comp/")) {
-                name = name.substring("java:comp/".length());
-            }
-
-            // if this is a ref it will be prefixed with env/
-            if (name.startsWith("env/")) {
+            if (name.startsWith("env/") ||
+                    name.startsWith("java:global/") ||
+                    name.startsWith("java:application/") ||
+                    name.startsWith("java:module/") ||
+                    name.startsWith("java:comp/")) {
                 if (uri != null) {
                     value = createClientRef(value);
                 }
-                getJndiContextMap(componentContext).put(name, value);
+                put(name, value, getJndiContextMap(componentContext));
             }
         }
     }
@@ -222,7 +221,7 @@
             EjbRef ref = new EjbRef();
             // ejb-ref-name
             ref.setEjbRefName(refName);
-            
+
             jndiConsumer.getEjbRef().add(ref);
 
             // ejb-ref-type
@@ -296,7 +295,7 @@
             EjbLocalRef ref = new EjbLocalRef();
             // ejb-ref-name
             ref.setEjbRefName(refName);
-            
+
             jndiConsumer.getEjbLocalRef().add(ref);
 
             // ejb-ref-type
@@ -387,6 +386,7 @@
 
     // XMLBean uses lame arrays that can be null, so we need an asList that handles nulls
     // Beware Arrays.asList(), it returns an ArrayList lookalike, that is not fully mutable...
+
     public static <E> List<E> asList(E[] array) {
         if (array == null) {
             return new ArrayList<E>();

Modified: geronimo/server/trunk/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/stateful/deployment/ClusteredStatefulDeployment.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/stateful/deployment/ClusteredStatefulDeployment.java?rev=901935&r1=901934&r2=901935&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/stateful/deployment/ClusteredStatefulDeployment.java (original)
+++ geronimo/server/trunk/plugins/openejb/geronimo-openejb-clustering-wadi/src/main/java/org/apache/geronimo/openejb/cluster/stateful/deployment/ClusteredStatefulDeployment.java Fri Jan 22 00:10:53 2010
@@ -22,19 +22,14 @@
 import java.util.Map;
 import java.util.Set;
 
-import javax.naming.Context;
-import javax.security.auth.login.LoginException;
-
 import org.apache.geronimo.clustering.SessionManager;
 import org.apache.geronimo.connector.outbound.connectiontracking.TrackedConnectionAssociator;
 import org.apache.geronimo.gbean.GBeanInfo;
 import org.apache.geronimo.gbean.GBeanInfoBuilder;
-import org.apache.geronimo.gbean.GBeanLifecycle;
 import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
 import org.apache.geronimo.kernel.Kernel;
-import org.apache.geronimo.naming.enc.EnterpriseNamingContext;
-import org.apache.geronimo.openejb.EjbDeployment;
 import org.apache.geronimo.openejb.EjbDeploymentGBean;
+import org.apache.geronimo.openejb.EjbModuleImpl;
 import org.apache.geronimo.openejb.OpenEjbSystem;
 import org.apache.geronimo.openejb.cluster.infra.SessionManagerTracker;
 import org.apache.geronimo.security.jacc.RunAsSource;
@@ -42,121 +37,67 @@
 import org.apache.openejb.Container;
 
 /**
- *
  * @version $Rev:$ $Date:$
  */
-public class ClusteredStatefulDeployment extends EjbDeployment implements GBeanLifecycle {
+public class ClusteredStatefulDeployment extends EjbDeploymentGBean {
 
     private final SessionManager sessionManager;
 
-    public ClusteredStatefulDeployment() throws LoginException {
-        sessionManager = null;
-    }
+//    public ClusteredStatefulDeployment() throws LoginException {
+//        sessionManager = null;
+//    }
 
     public ClusteredStatefulDeployment(String objectName,
-        String deploymentId,
-        String ejbName,
-        String homeInterfaceName,
-        String remoteInterfaceName,
-        String localHomeInterfaceName,
-        String localInterfaceName,
-        String serviceEndpointInterfaceName,
-        String beanClassName,
-        ClassLoader classLoader,
-        boolean securityEnabled,
-        String defaultRole,
-        String runAsRole,
-        RunAsSource runAsSource,
-        Map componentContext,
-        Set unshareableResources,
-        Set applicationManagedSecurityResources,
-        TrackedConnectionAssociator trackedConnectionAssociator,
-        GeronimoTransactionManager transactionManager,
-        OpenEjbSystem openEjbSystem,
-        SessionManager sessionManager,
-        Kernel kernel) throws Exception {
-        this(objectName,
-            deploymentId,
-            ejbName,
-            homeInterfaceName,
-            remoteInterfaceName,
-            localHomeInterfaceName,
-            localInterfaceName,
-            serviceEndpointInterfaceName,
-            beanClassName,
-            classLoader,
-            securityEnabled,
-            defaultRole,
-            runAsRole,
-            runAsSource,
-            EnterpriseNamingContext.createEnterpriseNamingContext(componentContext,
-                transactionManager,
-                kernel,
-                classLoader),
-            unshareableResources,
-            applicationManagedSecurityResources,
-            trackedConnectionAssociator,
-            openEjbSystem,
-            sessionManager);
-    }
-    
-    public ClusteredStatefulDeployment(String objectName,
-        String deploymentId,
-        String ejbName,
-        String homeInterfaceName,
-        String remoteInterfaceName,
-        String localHomeInterfaceName,
-        String localInterfaceName,
-        String serviceEndpointInterfaceName,
-        String beanClassName,
-        ClassLoader classLoader,
-        boolean securityEnabled,
-        String defaultRole,
-        String runAsRole,
-        RunAsSource runAsSource,
-        Context componentContext,
-        Set unshareableResources,
-        Set applicationManagedSecurityResources,
-        TrackedConnectionAssociator trackedConnectionAssociator,
-        OpenEjbSystem openEjbSystem,
-        SessionManager sessionManager) throws LoginException {
+                                       String deploymentId,
+                                       String ejbName,
+                                       String homeInterfaceName,
+                                       String remoteInterfaceName,
+                                       String localHomeInterfaceName,
+                                       String localInterfaceName,
+                                       String serviceEndpointInterfaceName,
+                                       String beanClassName,
+                                       ClassLoader classLoader,
+                                       boolean securityEnabled,
+                                       String defaultRole,
+                                       String runAsRole,
+                                       RunAsSource runAsSource,
+                                       Map<String, Object> componentContext,
+                                       Set<String> unshareableResources,
+                                       Set<String> applicationManagedSecurityResources,
+                                       TrackedConnectionAssociator trackedConnectionAssociator,
+                                       GeronimoTransactionManager transactionManager,
+                                       OpenEjbSystem openEjbSystem,
+                                       SessionManager sessionManager,
+                                       EjbModuleImpl ejbModule,
+                                       Kernel kernel) throws Exception {
         super(objectName,
-            deploymentId,
-            ejbName,
-            homeInterfaceName,
-            remoteInterfaceName,
-            localHomeInterfaceName,
-            localInterfaceName,
-            serviceEndpointInterfaceName,
-            beanClassName,
-            classLoader,
-            securityEnabled,
-            defaultRole,
-            runAsRole,
-            runAsSource,
-            componentContext,
-            unshareableResources,
-            applicationManagedSecurityResources,
-            trackedConnectionAssociator,
-            openEjbSystem);
+                deploymentId,
+                ejbName,
+                homeInterfaceName,
+                remoteInterfaceName,
+                localHomeInterfaceName,
+                localInterfaceName,
+                serviceEndpointInterfaceName,
+                beanClassName,
+                classLoader,
+                securityEnabled,
+                defaultRole,
+                runAsRole,
+                runAsSource,
+                componentContext,
+                unshareableResources,
+                applicationManagedSecurityResources,
+                trackedConnectionAssociator,
+                transactionManager,
+                openEjbSystem,
+                ejbModule,
+                kernel);
         if (null == sessionManager) {
             throw new IllegalArgumentException("sessionManager is required");
         }
         this.sessionManager = sessionManager;
     }
 
-    public void doStart() throws Exception {
-        start();
-    }
-
-    public void doStop() throws Exception {
-        stop();
-    }
-
-    public void doFail() {
-        stop();
-    }
-
     protected void start() throws Exception {
         super.start();
 
@@ -190,42 +131,42 @@
 
     static {
         GBeanInfoBuilder builder = GBeanInfoBuilder.createStatic(ClusteredStatefulDeployment.class,
-            ClusteredStatefulDeployment.class,
-            EjbDeploymentGBean.GBEAN_INFO,
-            NameFactory.STATEFUL_SESSION_BEAN);
-        
+                ClusteredStatefulDeployment.class,
+                EjbDeploymentGBean.GBEAN_INFO,
+                NameFactory.STATEFUL_SESSION_BEAN);
+
         builder.addReference(GBEAN_REF_SESSION_MANAGER, SessionManager.class, GBeanInfoBuilder.DEFAULT_J2EE_TYPE);
-        
-        builder.setConstructor(new String[] { "objectName",
-            "deploymentId",
-            "ejbName",
-
-            "homeInterfaceName",
-            "remoteInterfaceName",
-            "localHomeInterfaceName",
-            "localInterfaceName",
-            "serviceEndpointInterfaceName",
-            "beanClassName",
-            "classLoader",
-
-            "securityEnabled",
-            "defaultRole",
-            "runAsRole",
-            "RunAsSource",
-
-            "componentContextMap",
-
-            "unshareableResources",
-            "applicationManagedSecurityResources",
-            "TrackedConnectionAssociator",
-            "TransactionManager",
 
-            "OpenEjbSystem",
-            GBEAN_REF_SESSION_MANAGER,
+        builder.setConstructor(new String[]{"objectName",
+                "deploymentId",
+                "ejbName",
+
+                "homeInterfaceName",
+                "remoteInterfaceName",
+                "localHomeInterfaceName",
+                "localInterfaceName",
+                "serviceEndpointInterfaceName",
+                "beanClassName",
+                "classLoader",
+
+                "securityEnabled",
+                "defaultRole",
+                "runAsRole",
+                "RunAsSource",
+
+                "componentContextMap",
+
+                "unshareableResources",
+                "applicationManagedSecurityResources",
+                "TrackedConnectionAssociator",
+                "TransactionManager",
+
+                "OpenEjbSystem",
+                GBEAN_REF_SESSION_MANAGER,
 
-            "kernel"
+                "kernel"
         });
-        
+
         GBEAN_INFO = builder.getBeanInfo();
     }
 

Modified: geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbDeployment.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbDeployment.java?rev=901935&r1=901934&r2=901935&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbDeployment.java (original)
+++ geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbDeployment.java Fri Jan 22 00:10:53 2010
@@ -57,8 +57,8 @@
     private final Context componentContext;
 
     // connector stuff
-    private final Set unshareableResources;
-    private final Set applicationManagedSecurityResources;
+    private final Set<String> unshareableResources;
+    private final Set<String> applicationManagedSecurityResources;
     private final TrackedConnectionAssociator trackedConnectionAssociator;
 
     protected final OpenEjbSystem openEjbSystem;
@@ -87,8 +87,8 @@
             String runAsRole,
             RunAsSource runAsSource,
             Context componentContext,
-            Set unshareableResources,
-            Set applicationManagedSecurityResources,
+            Set<String> unshareableResources,
+            Set<String> applicationManagedSecurityResources,
             TrackedConnectionAssociator trackedConnectionAssociator,
             OpenEjbSystem openEjbSystem) throws LoginException {
         this.objectName = objectName;
@@ -170,11 +170,11 @@
         return javaCompSubContext;
     }
 
-    public Set getUnshareableResources() {
+    public Set<String> getUnshareableResources() {
         return unshareableResources;
     }
 
-    public Set getApplicationManagedSecurityResources() {
+    public Set<String> getApplicationManagedSecurityResources() {
         return applicationManagedSecurityResources;
     }
 

Modified: geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbDeploymentGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbDeploymentGBean.java?rev=901935&r1=901934&r2=901935&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbDeploymentGBean.java (original)
+++ geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbDeploymentGBean.java Fri Jan 22 00:10:53 2010
@@ -17,42 +17,45 @@
  */
 package org.apache.geronimo.openejb;
 
+import java.util.LinkedHashSet;
 import java.util.Map;
 import java.util.Set;
 
+import javax.naming.Context;
+import javax.naming.NamingException;
+import org.apache.geronimo.connector.outbound.connectiontracking.TrackedConnectionAssociator;
 import org.apache.geronimo.gbean.GBeanInfo;
 import org.apache.geronimo.gbean.GBeanInfoBuilder;
 import org.apache.geronimo.gbean.GBeanLifecycle;
 import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+import org.apache.geronimo.kernel.Kernel;
 import org.apache.geronimo.naming.enc.EnterpriseNamingContext;
-import org.apache.geronimo.security.jacc.RunAsSource;
 import org.apache.geronimo.security.SecurityNames;
+import org.apache.geronimo.security.jacc.RunAsSource;
 import org.apache.geronimo.transaction.manager.GeronimoTransactionManager;
-import org.apache.geronimo.connector.outbound.connectiontracking.TrackedConnectionAssociator;
-import org.apache.geronimo.kernel.Kernel;
 
 public class EjbDeploymentGBean extends EjbDeployment implements GBeanLifecycle {
     public EjbDeploymentGBean(String objectName,
-            String deploymentId,
-            String ejbName,
-            String homeInterfaceName,
-            String remoteInterfaceName,
-            String localHomeInterfaceName,
-            String localInterfaceName,
-            String serviceEndpointInterfaceName,
-            String beanClassName,
-            ClassLoader classLoader,
-            boolean securityEnabled,
-            String defaultRole,
-            String runAsRole,
-            RunAsSource runAsSource,
-            Map componentContext,
-            Set unshareableResources,
-            Set applicationManagedSecurityResources,
-            TrackedConnectionAssociator trackedConnectionAssociator,
-            GeronimoTransactionManager transactionManager,
-            OpenEjbSystem openEjbSystem,
-            Kernel kernel) throws Exception {
+                              String deploymentId,
+                              String ejbName,
+                              String homeInterfaceName,
+                              String remoteInterfaceName,
+                              String localHomeInterfaceName,
+                              String localInterfaceName,
+                              String serviceEndpointInterfaceName,
+                              String beanClassName,
+                              ClassLoader classLoader,
+                              boolean securityEnabled,
+                              String defaultRole,
+                              String runAsRole,
+                              RunAsSource runAsSource,
+                              Map<String, Object> componentContext,
+                              Set<String> unshareableResources,
+                              Set<String> applicationManagedSecurityResources,
+                              TrackedConnectionAssociator trackedConnectionAssociator,
+                              GeronimoTransactionManager transactionManager,
+                              OpenEjbSystem openEjbSystem,
+                              EjbModuleImpl ejbModule, Kernel kernel) throws Exception {
         super(objectName,
                 deploymentId,
                 ejbName,
@@ -67,13 +70,23 @@
                 defaultRole,
                 runAsRole,
                 runAsSource,
-                EnterpriseNamingContext.createEnterpriseNamingContext(componentContext, transactionManager, kernel, classLoader),
+                buildJndiContext(componentContext, ejbModule, transactionManager, kernel, classLoader),
                 unshareableResources,
                 applicationManagedSecurityResources,
                 trackedConnectionAssociator,
                 openEjbSystem);
     }
 
+    private static Context buildJndiContext(Map<String, Object> componentContext, EjbModuleImpl ejbModule, GeronimoTransactionManager transactionManager, Kernel kernel, ClassLoader classLoader) throws NamingException {
+        Context compContext = EnterpriseNamingContext.livenReferences(componentContext, transactionManager, kernel, classLoader, "comp/");
+        Set<Context> contexts = new LinkedHashSet<Context>(4);
+        contexts.add(compContext);
+        contexts.add(ejbModule.getModuleContext());
+        contexts.add(ejbModule.getApplicationJndi().getApplicationContext());
+        contexts.add(ejbModule.getApplicationJndi().getGlobalContext());
+        return EnterpriseNamingContext.createEnterpriseNamingContext(contexts);
+    }
+
     public void doStart() throws Exception {
         start();
     }
@@ -117,6 +130,7 @@
         infoFactory.addReference("TransactionManager", GeronimoTransactionManager.class);
 
         infoFactory.addReference("OpenEjbSystem", OpenEjbSystem.class);
+        infoFactory.addReference("EjbModule", EjbModuleImpl.class);
 
         infoFactory.addAttribute("kernel", Kernel.class, false);
 
@@ -146,6 +160,7 @@
                 "TransactionManager",
 
                 "OpenEjbSystem",
+                "EjbModule",
 
                 "kernel",
         });