From: markt Date: Wed, 8 Sep 2010 19:45:16 +0000 (+0000) Subject: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=49892 X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=84feef94509212ff1325fbb626656af2225329d0;p=tomcat7.0 Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=49892 Correct JNDI name for method resource injections Based on a patch by Gurkan Erdogdu git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@995224 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/org/apache/catalina/core/DefaultInstanceManager.java b/java/org/apache/catalina/core/DefaultInstanceManager.java index 12096b957..a7f4fa236 100644 --- a/java/org/apache/catalina/core/DefaultInstanceManager.java +++ b/java/org/apache/catalina/core/DefaultInstanceManager.java @@ -485,6 +485,7 @@ public class DefaultInstanceManager implements InstanceManager { throws NamingException, IllegalAccessException, InvocationTargetException { if (!method.getName().startsWith("set") + || method.getName().length() < 4 || method.getParameterTypes().length != 1 || !method.getReturnType().getName().equals("void")) { throw new IllegalArgumentException("Invalid method resource injection annotation"); @@ -498,7 +499,7 @@ public class DefaultInstanceManager implements InstanceManager { lookedupResource = context.lookup(name); } else { lookedupResource = context.lookup( - clazz.getName() + "/" + method.getName().substring(3)); + clazz.getName() + "/" + getName(method)); } accessibility = method.isAccessible(); @@ -506,4 +507,16 @@ public class DefaultInstanceManager implements InstanceManager { method.invoke(instance, lookedupResource); method.setAccessible(accessibility); } + + public static String getName(Method setter) { + StringBuilder name = new StringBuilder(setter.getName()); + + // remove 'set' + name.delete(0, 3); + + // lowercase first char + name.setCharAt(0, Character.toLowerCase(name.charAt(0))); + + return name.toString(); + } }