Author: rmannibucau
Date: Mon Sep  5 13:34:42 2011
New Revision: 1165280

URL: http://svn.apache.org/viewvc?rev=1165280&view=rev
Log:
trying to lookup with module name if resource lookup fails

Modified:
    
openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/common/AbstractObjectFactory.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IntraVmJndiReference.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/Strings.java

Modified: 
openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/common/AbstractObjectFactory.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/common/AbstractObjectFactory.java?rev=1165280&r1=1165279&r2=1165280&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/common/AbstractObjectFactory.java
 (original)
+++ 
openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-common/src/main/java/org/apache/openejb/tomcat/common/AbstractObjectFactory.java
 Mon Sep  5 13:34:42 2011
@@ -19,17 +19,21 @@ package org.apache.openejb.tomcat.common
 
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.spi.ContainerSystem;
-import static org.apache.openejb.tomcat.common.NamingUtil.JNDI_NAME;
-import static org.apache.openejb.tomcat.common.NamingUtil.JNDI_PROVIDER_ID;
-import static org.apache.openejb.tomcat.common.NamingUtil.getProperty;
+import org.apache.openejb.util.Strings;
 
 import javax.naming.Context;
+import javax.naming.InitialContext;
 import javax.naming.Name;
+import javax.naming.NameNotFoundException;
 import javax.naming.NamingException;
 import javax.naming.Reference;
 import javax.naming.spi.ObjectFactory;
 import java.util.Hashtable;
 
+import static org.apache.openejb.tomcat.common.NamingUtil.JNDI_NAME;
+import static org.apache.openejb.tomcat.common.NamingUtil.JNDI_PROVIDER_ID;
+import static org.apache.openejb.tomcat.common.NamingUtil.getProperty;
+
 public abstract class AbstractObjectFactory implements ObjectFactory {
     public Object getObjectInstance(Object object, Name name, Context context, 
Hashtable environment) throws Exception {
         Reference ref = (Reference) object;
@@ -44,7 +48,16 @@ public abstract class AbstractObjectFact
         }
 
         // look up the reference
-        Object value = lookup(jndiProviderId, jndiName);
+        Object value;
+        try {
+            value = lookup(jndiProviderId, jndiName);
+        } catch (NameNotFoundException nnfe) { // EE.5.18: try using 
java:module/<shortName> prefix
+            try {
+                value = new InitialContext().lookup("java:module/" + 
Strings.lastPart(ref.getClassName(), '.'));
+            } catch (NameNotFoundException ignored) { // throw the previous 
exception
+                throw nnfe;
+            }
+        }
         return value;
     }
 

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IntraVmJndiReference.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IntraVmJndiReference.java?rev=1165280&r1=1165279&r2=1165280&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IntraVmJndiReference.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/IntraVmJndiReference.java
 Mon Sep  5 13:34:42 2011
@@ -16,10 +16,12 @@
  */
 package org.apache.openejb.core.ivm.naming;
 
+import javax.naming.NameNotFoundException;
 import javax.naming.NamingException;
 
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.spi.ContainerSystem;
+import org.apache.openejb.util.Strings;
 
 public class IntraVmJndiReference extends Reference {
 
@@ -37,6 +39,8 @@ public class IntraVmJndiReference extend
         ContainerSystem containerSystem = 
SystemInstance.get().getComponent(ContainerSystem.class);
         try {
             return containerSystem.getJNDIContext().lookup(jndiName);
+        } catch (NameNotFoundException e) { // EE.5.18: try using 
java:module/<shortName> prefix
+            return containerSystem.getJNDIContext().lookup("java:module/" + 
Strings.lastPart(getClassName(), '.'));
         } catch (NamingException e) {
             throw (NamingException)new NamingException("could not look up " + 
jndiName).initCause(e);
         }

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/Strings.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/Strings.java?rev=1165280&r1=1165279&r2=1165280&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/Strings.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/util/Strings.java
 Mon Sep  5 13:34:42 2011
@@ -92,4 +92,12 @@ public class Strings {
             return stringToCheckForNull;
         }
     }
+
+    public static String lastPart(String className, char sep) {
+        int idx = className.lastIndexOf(sep);
+        if (idx >= 0) {
+            return className.substring(idx + 1, className.length());
+        }
+        return className;
+    }
 }


Reply via email to