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 2012/12/12 23:10:06 UTC
svn commit: r1421015 - in
/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina:
TomcatResourceFactory.java TomcatWebAppBuilder.java
Author: rmannibucau
Date: Wed Dec 12 22:10:05 2012
New Revision: 1421015
URL: http://svn.apache.org/viewvc?rev=1421015&view=rev
Log:
TOMEE-647 using Reference object as first parameter for contextresource defined in context.xml
Modified:
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatResourceFactory.java
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
Modified: openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatResourceFactory.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatResourceFactory.java?rev=1421015&r1=1421014&r2=1421015&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatResourceFactory.java (original)
+++ openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatResourceFactory.java Wed Dec 12 22:10:05 2012
@@ -18,15 +18,21 @@ package org.apache.tomee.catalina;
import org.apache.openejb.assembler.classic.WebAppBuilder;
import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.util.LogCategory;
+import org.apache.openejb.util.Logger;
import javax.naming.CompositeName;
import javax.naming.NamingException;
+import javax.naming.Reference;
import javax.naming.spi.ObjectFactory;
public class TomcatResourceFactory {
+ private static final Logger LOGGER = Logger.getInstance(LogCategory.OPENEJB, TomcatResourceFactory.class);
+
private String jndiName;
private String appName;
private String factory;
+ private Reference reference;
public void setJndiName(final String jndiName) {
this.jndiName = jndiName;
@@ -40,6 +46,10 @@ public class TomcatResourceFactory {
this.factory = factory;
}
+ public void setReference(final Reference reference) {
+ this.reference = reference;
+ }
+
public Object create() throws NamingException {
final TomcatWebAppBuilder.ContextInfo info = ((TomcatWebAppBuilder) SystemInstance.get().getComponent(WebAppBuilder.class))
.getContextInfo(appName);
@@ -60,11 +70,11 @@ 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(null, new CompositeName(jndiName), null, null);
+ return ((ObjectFactory) instance).getObjectInstance(reference, new CompositeName(jndiName), null, null);
}
}
} catch (Exception e) {
- // no-op
+ LOGGER.error("Can't create resource " + jndiName, e);
} finally {
Thread.currentThread().setContextClassLoader(loader);
}
Modified: openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java?rev=1421015&r1=1421014&r2=1421015&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java (original)
+++ openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java Wed Dec 12 22:10:05 2012
@@ -57,6 +57,7 @@ import org.apache.catalina.startup.SetNe
import org.apache.catalina.users.MemoryUserDatabase;
import org.apache.naming.ContextAccessController;
import org.apache.naming.ContextBindings;
+import org.apache.naming.ResourceRef;
import org.apache.openejb.AppContext;
import org.apache.openejb.BeanContext;
import org.apache.openejb.ClassLoaderUtil;
@@ -113,6 +114,8 @@ import javax.el.ELResolver;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
+import javax.naming.Reference;
+import javax.naming.StringRefAddr;
import javax.servlet.ServletContext;
import javax.servlet.SessionTrackingMode;
import javax.servlet.jsp.JspApplicationContext;
@@ -961,6 +964,11 @@ public class TomcatWebAppBuilder impleme
newResource.getProperties().setProperty("jndiName", newResource.getId());
newResource.getProperties().setProperty("appName", getId(standardContext));
newResource.getProperties().setProperty("factory", (String) resource.getProperty("factory"));
+
+ final Reference reference = createReference(resource);
+ if (reference != null) {
+ newResource.getProperties().put("reference", reference);
+ }
appModule.getResources().add(newResource);
}
}
@@ -1105,6 +1113,26 @@ public class TomcatWebAppBuilder impleme
}
}
+ private static Reference createReference(final ResourceBase resource) {
+ if (resource instanceof ContextResource) {
+ final ContextResource cr = (ContextResource) resource;
+ final Reference ref = new ResourceRef
+ (resource.getType(), resource.getDescription(),
+ cr.getScope(), cr.getAuth(),
+ cr.getSingleton());
+
+ final Iterator<String> params = resource.listProperties();
+ while (params.hasNext()) {
+ String paramName = params.next();
+ String paramValue = (String) resource.getProperty(paramName);
+ StringRefAddr refAddr = new StringRefAddr(paramName, paramValue);
+ ref.add(refAddr);
+ }
+ return ref;
+ }
+ return null;
+ }
+
private static void updateInjections(final Collection<Injection> injections, final ClassLoader classLoader, final boolean keepInjection) {
final Iterator<Injection> it = injections.iterator();
final List<Injection> newOnes = new ArrayList<Injection>();