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);
}