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:16:29 UTC
svn commit: r1343394 -
/tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java
Author: markt
Date: Mon May 28 21:16:29 2012
New Revision: 1343394
URL: http://svn.apache.org/viewvc?rev=1343394&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/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java
Modified: tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java?rev=1343394&r1=1343393&r2=1343394&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java Mon May 28 21:16:29 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) {
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org