You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2016/06/01 06:07:14 UTC

svn commit: r1746394 - in /commons/proper/beanutils/trunk/src: main/java/org/apache/commons/beanutils/FluentPropertyBeanIntrospector.java test/java/org/apache/commons/beanutils/FluentPropertyBeanIntrospectorTestCase.java

Author: ggregory
Date: Wed Jun  1 06:07:14 2016
New Revision: 1746394

URL: http://svn.apache.org/viewvc?rev=1746394&view=rev
Log:
[BEANUTILS-474] FluentPropertyBeanIntrospector does not use the same naming algorithm as DefaultBeanIntrospector.

Modified:
    commons/proper/beanutils/trunk/src/main/java/org/apache/commons/beanutils/FluentPropertyBeanIntrospector.java
    commons/proper/beanutils/trunk/src/test/java/org/apache/commons/beanutils/FluentPropertyBeanIntrospectorTestCase.java

Modified: commons/proper/beanutils/trunk/src/main/java/org/apache/commons/beanutils/FluentPropertyBeanIntrospector.java
URL: http://svn.apache.org/viewvc/commons/proper/beanutils/trunk/src/main/java/org/apache/commons/beanutils/FluentPropertyBeanIntrospector.java?rev=1746394&r1=1746393&r2=1746394&view=diff
==============================================================================
--- commons/proper/beanutils/trunk/src/main/java/org/apache/commons/beanutils/FluentPropertyBeanIntrospector.java (original)
+++ commons/proper/beanutils/trunk/src/main/java/org/apache/commons/beanutils/FluentPropertyBeanIntrospector.java Wed Jun  1 06:07:14 2016
@@ -17,6 +17,7 @@
 package org.apache.commons.beanutils;
 
 import java.beans.IntrospectionException;
+import java.beans.Introspector;
 import java.beans.PropertyDescriptor;
 import java.lang.reflect.Method;
 import java.util.Locale;
@@ -159,8 +160,7 @@ public class FluentPropertyBeanIntrospec
     private String propertyName(final Method m) {
         final String methodName = m.getName().substring(
                 getWriteMethodPrefix().length());
-        return (methodName.length() > 1) ? Character.toLowerCase(methodName
-                .charAt(0)) + methodName.substring(1) : methodName
+        return (methodName.length() > 1) ? Introspector.decapitalize(methodName) : methodName
                 .toLowerCase(Locale.ENGLISH);
     }
 

Modified: commons/proper/beanutils/trunk/src/test/java/org/apache/commons/beanutils/FluentPropertyBeanIntrospectorTestCase.java
URL: http://svn.apache.org/viewvc/commons/proper/beanutils/trunk/src/test/java/org/apache/commons/beanutils/FluentPropertyBeanIntrospectorTestCase.java?rev=1746394&r1=1746393&r2=1746394&view=diff
==============================================================================
--- commons/proper/beanutils/trunk/src/test/java/org/apache/commons/beanutils/FluentPropertyBeanIntrospectorTestCase.java (original)
+++ commons/proper/beanutils/trunk/src/test/java/org/apache/commons/beanutils/FluentPropertyBeanIntrospectorTestCase.java Wed Jun  1 06:07:14 2016
@@ -18,6 +18,7 @@ package org.apache.commons.beanutils;
 
 import java.beans.IntrospectionException;
 import java.beans.PropertyDescriptor;
+import java.net.URI;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -93,4 +94,36 @@ public class FluentPropertyBeanIntrospec
         assertNotNull("No write method for fluentGetProperty",
                 pd.getWriteMethod());
     }
+
+    public void testIntrospectionCaps() throws Exception {
+	    final PropertyUtilsBean pu = new PropertyUtilsBean();
+
+        final FluentPropertyBeanIntrospector introspector = new FluentPropertyBeanIntrospector();
+
+	    pu.addBeanIntrospector(introspector);
+
+	    final Map<String, PropertyDescriptor> props = createDescriptorMap(
+			pu.getPropertyDescriptors(CapsBean.class));
+
+	    PropertyDescriptor aDescriptor = fetchDescriptor(props, "URI");
+
+	    assertNotNull("missing property", aDescriptor);
+
+	    assertNotNull("No read method for uri", aDescriptor.getReadMethod());
+	    assertNotNull("No write method for uri", aDescriptor.getWriteMethod());
+
+	    assertNull("Should not find mis-capitalized property", props.get("uRI"));
+    }
+
+	public static final class CapsBean {
+		private URI mURI;
+
+		public URI getURI() {
+			return mURI;
+		}
+
+		public void setURI(final URI theURI) {
+			mURI = theURI;
+		}
+	}
 }