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;