You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by kk...@apache.org on 2012/05/30 03:30:59 UTC
svn commit: r1344068 -
/tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java
Author: kkolinko
Date: Wed May 30 01:30:58 2012
New Revision: 1344068
URL: http://svn.apache.org/viewvc?rev=1344068&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=53322
Follow JavaBeans specification when converting setter method name into property name for resource injection.
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=1344068&r1=1344067&r2=1344068&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java Wed May 30 01:30:58 2012
@@ -19,6 +19,7 @@
package org.apache.catalina.core;
+import java.beans.Introspector;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Field;
@@ -360,7 +361,7 @@ public class DefaultInstanceManager impl
&& methodName.length() > 3
&& method.getParameterTypes().length == 1
&& method.getReturnType().getName().equals("void")) {
- String fieldName = Character.toLowerCase(methodName.charAt(3)) + methodName.substring(4);
+ String fieldName = getName(method);
if (injections.containsKey(fieldName)) {
annotations.add(new AnnotationCacheEntry(
method.getName(),
@@ -661,15 +662,9 @@ public class DefaultInstanceManager impl
}
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();
+ // Note: method signature has already been checked for correctness.
+ // The method name always starts with "set".
+ return Introspector.decapitalize(setter.getName().substring(3));
}
private static String normalize(String jndiName){
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org