You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2014/09/21 15:14:49 UTC

svn commit: r1626580 - /tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatResourceFactory.java

Author: rmannibucau
Date: Sun Sep 21 13:14:49 2014
New Revision: 1626580

URL: http://svn.apache.org/r1626580
Log:
TOMEE-1356 better TomcatResourceFactory impl - case where no factory is provided

Modified:
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatResourceFactory.java

Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatResourceFactory.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatResourceFactory.java?rev=1626580&r1=1626579&r2=1626580&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatResourceFactory.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatResourceFactory.java Sun Sep 21 13:14:49 2014
@@ -22,8 +22,10 @@ import org.apache.openejb.util.LogCatego
 import org.apache.openejb.util.Logger;
 
 import javax.naming.CompositeName;
+import javax.naming.InvalidNameException;
 import javax.naming.NamingException;
 import javax.naming.Reference;
+import javax.naming.spi.NamingManager;
 import javax.naming.spi.ObjectFactory;
 
 public class TomcatResourceFactory {
@@ -33,9 +35,14 @@ public class TomcatResourceFactory {
     private String appName;
     private String factory;
     private Reference reference;
+    private CompositeName name;
 
     public void setJndiName(final String jndiName) {
-        this.jndiName = jndiName;
+        try {
+            name = new CompositeName(jndiName);
+        } catch (final InvalidNameException e) {
+            throw new IllegalArgumentException(e);
+        }
     }
 
     public void setAppName(final String appName) {
@@ -70,9 +77,13 @@ public class TomcatResourceFactory {
                 if (instance instanceof ObjectFactory) {
                     // not really used as expected but it matches a bit more than before
                     // context is null since it can't be used at this moment (see TomcatWebAppBuilder lifecycle)
-                    return ((ObjectFactory) instance).getObjectInstance(reference, new CompositeName(jndiName), null, null);
+                    return ((ObjectFactory) instance).getObjectInstance(reference, name, null, null);
                 }
             }
+            if (reference != null) {
+                return NamingManager.getObjectInstance(reference, name, null, null);
+            }
+            throw new IllegalStateException("nothing to create the resource " + jndiName);
         } catch (final Exception e) {
             LOGGER.error("Can't create resource " + jndiName, e);
         } finally {