You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2012/05/28 23:22:48 UTC

svn commit: r1343396 - in /tomcat/tc7.0.x/trunk: ./ java/org/apache/catalina/core/DefaultInstanceManager.java webapps/docs/changelog.xml

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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org