Author: markt Date: Mon May 28 21:22:47 2012 New Revision: 1343396 URL: http://svn.apache.org/viewvc?rev=1343396&view=rev Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=53090 Include superclasses when considering injection targets Patch provided by Borislav Kapukaranov
Modified: tomcat/tc7.0.x/trunk/ (props changed) tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Propchange: tomcat/tc7.0.x/trunk/ ------------------------------------------------------------------------------ Merged /tomcat/trunk:r1343394 Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java?rev=1343396&r1=1343395&r2=1343396&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java Mon May 28 21:22:47 2012 @@ -30,6 +30,7 @@ import java.security.PrivilegedAction; import java.security.PrivilegedActionException; import java.security.PrivilegedExceptionAction; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; @@ -142,7 +143,7 @@ public class DefaultInstanceManager impl private Object newInstance(Object instance, Class<?> clazz) throws IllegalAccessException, InvocationTargetException, NamingException { if (!ignoreAnnotations) { - Map<String, String> injections = injectionMap.get(clazz.getName()); + Map<String, String> injections = assembleInjectionsFromClassHierarchy(clazz); populateAnnotationsCache(clazz, injections); processAnnotations(instance, injections); postConstruct(instance, clazz); @@ -150,6 +151,19 @@ public class DefaultInstanceManager impl return instance; } + private Map<String, String> assembleInjectionsFromClassHierarchy(Class<?> clazz) { + Map<String, String> injections = new HashMap<String, String>(); + Map<String, String> currentInjections = null; + while (clazz != null) { + currentInjections = this.injectionMap.get(clazz.getName()); + if (currentInjections != null) { + injections.putAll(currentInjections); + } + clazz = clazz.getSuperclass(); + } + return injections; + } + @Override public void destroyInstance(Object instance) throws IllegalAccessException, InvocationTargetException { if (!ignoreAnnotations) { Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1343396&r1=1343395&r2=1343396&view=diff ============================================================================== --- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original) +++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Mon May 28 21:22:47 2012 @@ -119,6 +119,10 @@ <fix> Enable host's xmlBase attribute in ContextConfig. (kfujino) </fix> + <fix> + <bug>53090</bug>: Include superclasses when considering injection + targets. Patch provided by Borislav Kapukaranov. (markt) + </fix> </changelog> </subsection> <subsection name="Coyote"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org