Author: rmannibucau
Date: Sun May 13 20:21:24 2012
New Revision: 1337979
URL: http://svn.apache.org/viewvc?rev=1337979&view=rev
Log:
TOMEE-189 for ejb injections adding a new one when the target is loaded from
the webapp, this way 2 webapps in an ear should be able to get the 'same'
injection
Modified:
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/TomcatWebAppBuilder.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java?rev=1337979&r1=1337978&r2=1337979&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
Sun May 13 20:21:24 2012
@@ -684,9 +684,9 @@ public class TomcatWebAppBuilder impleme
injections.addAll(appContext.getInjections());
if (!contextInfo.appInfo.webAppAlone) {
- updateInjections(injections, classLoader);
+ updateInjections(injections, classLoader, false);
for (BeanContext bean : appContext.getBeanContexts()) { //
TODO: how if the same class in multiple webapps?
- updateInjections(bean.getInjections(), classLoader);
+ updateInjections(bean.getInjections(), classLoader,
true);
}
}
injections.addAll(new
InjectionBuilder(classLoader).buildInjections(webAppInfo.jndiEnc));
@@ -735,14 +735,19 @@ public class TomcatWebAppBuilder impleme
}
}
- private static void updateInjections(Collection<Injection> injections,
ClassLoader classLoader) {
+ private static void updateInjections(Collection<Injection> injections,
ClassLoader classLoader, boolean keepInjection) {
final Iterator<Injection> it = injections.iterator();
while (it.hasNext()) { // update not loaded injections for classloader
issues or remove them
final Injection injection = it.next();
if (injection.getTarget() == null) {
try {
final Class<?> target =
classLoader.loadClass(injection.getClassname());
- injection.setTarget(target);
+ if (keepInjection) {
+ final Injection added = new
Injection(injection.getJndiName(), injection.getName(), target);
+ injections.add(added);
+ } else {
+ injection.setTarget(target);
+ }
} catch (ClassNotFoundException cnfe) {
it.remove();
}