You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by ga...@apache.org on 2010/08/17 19:10:02 UTC

svn commit: r986399 - in /openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic: Assembler.java EnterpriseBeanBuilder.java JndiEncBuilder.java

Author: gawor
Date: Tue Aug 17 17:10:02 2010
New Revision: 986399

URL: http://svn.apache.org/viewvc?rev=986399&view=rev
Log:
OPENEJB-1331: Ensure global, app, module jndi contexts are non-empty: bind app/AppName and module/ModuleName if available otherwise add a dummy object

Modified:
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=986399&r1=986398&r2=986399&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java Tue Aug 17 17:10:02 2010
@@ -480,8 +480,8 @@ public class Assembler extends Assembler
         InjectionBuilder injectionBuilder = new InjectionBuilder(classLoader);
         List<Injection> appInjections = injectionBuilder.buildInjections(appInfo.globalJndiEnc);
         appInjections.addAll(injectionBuilder.buildInjections(appInfo.appJndiEnc));
-        Context globalJndiContext = new JndiEncBuilder(appInfo.globalJndiEnc, appInjections, null, classLoader).build(false);
-        Context appJndiContext = new JndiEncBuilder(appInfo.appJndiEnc, appInjections, null, classLoader).build(false);
+        Context globalJndiContext = new JndiEncBuilder(appInfo.globalJndiEnc, appInjections, null, classLoader).build(JndiEncBuilder.JndiScope.global);
+        Context appJndiContext = new JndiEncBuilder(appInfo.appJndiEnc, appInjections, null, classLoader).build(JndiEncBuilder.JndiScope.app);
 
         try {
             // Generate the cmp2/cmp1 concrete subclasses
@@ -650,7 +650,7 @@ public class Assembler extends Assembler
 
                 }
                 jndiEncBuilder.setUseCrossClassLoaderRef(false);
-                Context context = (Context) jndiEncBuilder.build(true);
+                Context context = (Context) jndiEncBuilder.build(JndiEncBuilder.JndiScope.comp);
 
                 containerSystem.getJNDIContext().bind("openejb/client/" + clientInfo.moduleId, context);
                 if (clientInfo.codebase != null) {

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java?rev=986399&r1=986398&r2=986399&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java Tue Aug 17 17:10:02 2010
@@ -138,7 +138,7 @@ class EnterpriseBeanBuilder {
 
         // build the enc
         JndiEncBuilder jndiEncBuilder = new JndiEncBuilder(bean.jndiEnc, injections, transactionType, moduleContext.getId(), moduleContext.getClassLoader());
-        Context compJndiContext = jndiEncBuilder.build(true);
+        Context compJndiContext = jndiEncBuilder.build(JndiEncBuilder.JndiScope.comp);
         bind(compJndiContext, "module", moduleContext.getModuleJndiContext());
         bind(compJndiContext, "app", moduleContext.getAppContext().getAppJndiContext());
         bind(compJndiContext, "global", moduleContext.getAppContext().getGlobalJndiContext());

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java?rev=986399&r1=986398&r2=986399&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/JndiEncBuilder.java Tue Aug 17 17:10:02 2010
@@ -78,6 +78,13 @@ import java.io.Serializable;
 public class JndiEncBuilder {
     public static final Logger logger = Logger.getInstance(LogCategory.OPENEJB_STARTUP, JndiEncBuilder.class.getPackage().getName());
 
+    public static enum JndiScope {
+        comp,
+        module,
+        app,
+        global,
+    }
+    
     private final boolean beanManagedTransactions;
     private final JndiEncInfo jndiEnc;
     private final URI moduleUri;
@@ -120,24 +127,35 @@ public class JndiEncBuilder {
         this.client = client;
     }
 
-    public Context build(boolean isComp) throws OpenEJBException {
+    public Context build(JndiScope type) throws OpenEJBException {
         JndiFactory jndiFactory = SystemInstance.get().getComponent(JndiFactory.class);
 
-        if (SystemInstance.get().hasProperty("openejb.geronimo")){
+        if (SystemInstance.get().hasProperty("openejb.geronimo")) {
             return jndiFactory.createComponentContext(new HashMap());
         }
 
         Map<String, Object> bindings = buildMap();
-        if (isComp) {
+        switch(type) {
+        case comp:
             addSpecialCompBindings(bindings);
+            break;
+        case module:
+            addSpecialModuleBindings(bindings);
+            break;
+        case app:
+            addSpecialAppBindings(bindings);
+            break;
+        case global:
+            addSpecialGlobalBindings(bindings);
+            break;          
         }
 
         return jndiFactory.createComponentContext(bindings);
     }
-
+    
     public Map<String, Object> buildMap() throws OpenEJBException {
         Map<String, Object> bindings = new HashMap<String, Object>();
-
+        
         // get JtaEntityManagerRegistry
         JtaEntityManagerRegistry jtaEntityManagerRegistry = SystemInstance.get().getComponent(JtaEntityManagerRegistry.class);
 
@@ -426,6 +444,33 @@ public class JndiEncBuilder {
         }
     }
 
+    private void addSpecialModuleBindings(Map<String, Object> bindings) {
+        if (moduleUri != null) {
+            bindings.put("module/ModuleName", moduleUri.toString());
+        }
+        // ensure the bindings will be non-empty
+        if (bindings.isEmpty()) {
+            bindings.put("module/dummy", "dummy");
+        }
+    }
+    
+    private void addSpecialAppBindings(Map<String, Object> bindings) {
+        if (moduleUri != null) {
+            bindings.put("app/AppName", moduleUri.toString());
+        }
+        // ensure the bindings will be non-empty
+        if (bindings.isEmpty()) {
+            bindings.put("app/dummy", "dummy");
+        }
+    }
+    
+    private void addSpecialGlobalBindings(Map<String, Object> bindings) {
+        // ensure the bindings will be non-empty
+        if (bindings.isEmpty()) {
+            bindings.put("global/dummy", "dummy");
+        }
+    }
+    
     public static boolean bindingExists(Context context, Name contextName) {
         try {
             return context.lookup(contextName) != null;