Author: rmannibucau Date: Mon Sep 22 17:12:48 2014 New Revision: 1626843 URL: http://svn.apache.org/r1626843 Log: TOMEE-1356 better TomcatResourceFactory impl - case where no factory
Modified: tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatResourceFactory.java Modified: tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatResourceFactory.java URL: http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatResourceFactory.java?rev=1626843&r1=1626842&r2=1626843&view=diff ============================================================================== --- tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatResourceFactory.java (original) +++ tomee/tomee/branches/tomee-1.7.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatResourceFactory.java Mon Sep 22 17:12:48 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 {