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/05/22 00:57:09 UTC

svn commit: r947211 - in /geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb: DeepBindableContext.java EjbDeployment.java GeronimoThreadContextListener.java XBeanJndiFactory.java

Author: djencks
Date: Fri May 21 22:57:09 2010
New Revision: 947211

URL: http://svn.apache.org/viewvc?rev=947211&view=rev
Log:
GERONIMO-5025 Move stuff around so injection works in openejb.  Currently requires OPENEJB-1014-6.diff to be applied to openejb

Modified:
    geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/DeepBindableContext.java
    geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/EjbDeployment.java
    geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/GeronimoThreadContextListener.java
    geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/XBeanJndiFactory.java

Modified: geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/DeepBindableContext.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/DeepBindableContext.java?rev=947211&r1=947210&r2=947211&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/DeepBindableContext.java (original)
+++ geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/DeepBindableContext.java Fri May 21 22:57:09 2010
@@ -69,6 +69,10 @@ public class DeepBindableContext extends
         return new ContextWrapper(this);
     }
 
+    ContextWrapper newContextWrapper(Context rootContext) throws NamingException {
+        return new ContextWrapper(rootContext);
+    }
+
     class ContextWrapper implements Context {
         private final Context rootContext;
         private final String shortPrefix;
@@ -81,6 +85,10 @@ public class DeepBindableContext extends
             longPrefix = "java:" + shortPrefix;
         }
 
+        Context getRootContext() {
+            return rootContext;
+        }
+
         public Object lookup(Name name) throws NamingException {
             return rootContext.lookup(name);
         }

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=947211&r1=947210&r2=947211&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 May 21 22:57:09 2010
@@ -70,6 +70,9 @@ public class EjbDeployment implements EJ
     private final Subject runAs;
 
     private final Context componentContext;
+    private final Context moduleContext;
+    private final Context applicationContext;
+    private final Context globalContext;
 
     // connector stuff
     private final Set<String> unshareableResources;
@@ -119,24 +122,16 @@ public class EjbDeployment implements EJ
         }
         this.defaultSubject = defaultRole == null ? runAsSource.getDefaultSubject() : runAsSource.getSubjectForRole(defaultRole);
         this.runAs = runAsSource.getSubjectForRole(runAsRole);
-        this.componentContext = buildJndiContext(applicationJndi, moduleJndi, compContext, transactionManager, kernel, classLoader);
+        this.componentContext = EnterpriseNamingContext.livenReferences(compContext, transactionManager, kernel, classLoader, "comp/");
+        this.moduleContext = EnterpriseNamingContext.livenReferences(moduleJndi, transactionManager, kernel, classLoader, "module/");
+        this.applicationContext = applicationJndi.getApplicationContext();
+        this.globalContext = applicationJndi.getGlobalContext();
         this.unshareableResources = unshareableResources;
         this.applicationManagedSecurityResources = applicationManagedSecurityResources;
         this.trackedConnectionAssociator = trackedConnectionAssociator;
         this.openEjbSystem = openEjbSystem;
     }
 
-    private static Context buildJndiContext(ApplicationJndi applicationJndi, Map<String, Object> moduleJndi, Map<String, Object> componentContext, GeronimoTransactionManager transactionManager, Kernel kernel, ClassLoader classLoader) throws NamingException {
-        Context moduleContext = EnterpriseNamingContext.livenReferences(moduleJndi, transactionManager, kernel, classLoader, "comp/");
-        Context compContext = EnterpriseNamingContext.livenReferences(componentContext, transactionManager, kernel, classLoader, "comp/");
-        Set<Context> contexts = new LinkedHashSet<Context>(4);
-        contexts.add(compContext);
-        contexts.add(moduleContext);
-        contexts.add(applicationJndi.getApplicationContext());
-        contexts.add(applicationJndi.getGlobalContext());
-        return EnterpriseNamingContext.createEnterpriseNamingContext(contexts);
-    }
-
     public CoreDeploymentInfo getDeploymentInfo() {
         return deploymentInfo.get();
     }
@@ -189,10 +184,6 @@ public class EjbDeployment implements EJ
         return runAs;
     }
 
-    public Context getComponentContext() {
-        return componentContext;
-    }
-
     public Set<String> getUnshareableResources() {
         return unshareableResources;
     }
@@ -295,11 +286,11 @@ public class EjbDeployment implements EJ
 
     protected EjbDeployment initialize(CoreDeploymentInfo deploymentInfo) {
         try {
-//            javaCompSubContext = (Context) deploymentInfo.getJndiEnc().lookup("java:comp");
-//            if (componentContext != null) {
-//                javaCompSubContext.bind("geronimo", componentContext);
-//            }
-            ((ImmutableFederatedContext) componentContext).federateContext(deploymentInfo.getJndiEnc());
+            ImmutableFederatedContext federatedContext = (ImmutableFederatedContext) ((DeepBindableContext.ContextWrapper)deploymentInfo.getJndiEnc()).getRootContext();
+            federatedContext.federateContext(componentContext);
+            federatedContext.federateContext(moduleContext);
+            federatedContext.federateContext(applicationContext);
+            federatedContext.federateContext(globalContext);
             deploymentInfo.set(EjbDeployment.class, this);
 
             this.deploymentInfo.set(deploymentInfo);

Modified: geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/GeronimoThreadContextListener.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/GeronimoThreadContextListener.java?rev=947211&r1=947210&r2=947211&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/GeronimoThreadContextListener.java (original)
+++ geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/GeronimoThreadContextListener.java Fri May 21 22:57:09 2010
@@ -113,7 +113,7 @@ public class GeronimoThreadContextListen
         }
 
         // Get the jndi context
-        Context jndiContext = ejbDeployment.getComponentContext();
+        Context jndiContext = deploymentInfo.getJndiEnc();
         geronimoCallContext.oldJndiContext = RootContext.getComponentContext();
         // Set the jndi context into Geronimo's root context
         RootContext.setComponentContext(jndiContext);

Modified: geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/XBeanJndiFactory.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/XBeanJndiFactory.java?rev=947211&r1=947210&r2=947211&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/XBeanJndiFactory.java (original)
+++ geronimo/server/trunk/plugins/openejb/geronimo-openejb/src/main/java/org/apache/geronimo/openejb/XBeanJndiFactory.java Fri May 21 22:57:09 2010
@@ -20,12 +20,15 @@
 
 package org.apache.geronimo.openejb;
 
+import java.util.Collections;
+import java.util.HashSet;
 import java.util.Map;
 
 import javax.naming.Context;
 import javax.naming.NamingException;
 import org.apache.openejb.SystemException;
 import org.apache.openejb.core.JndiFactory;
+import org.apache.xbean.naming.context.ImmutableFederatedContext;
 
 /**
  * @version $Rev$ $Date$
@@ -42,7 +45,8 @@ public class XBeanJndiFactory implements
     public Context createComponentContext(Map<String, Object> bindings) throws SystemException {
         try {
             DeepBindableContext context = new DeepBindableContext("", false, true, true, false);
-            return context.newContextWrapper();
+            Context rootContext = new ImmutableFederatedContext("", Collections.<Context>singleton(context));
+            return context.newContextWrapper(rootContext);
         } catch (NamingException e) {
             throw new IllegalStateException(e);
         }