Author: jdonnerstag
Date: Tue Dec 22 16:29:09 2009
New Revision: 893222

URL: http://svn.apache.org/viewvc?rev=893222&view=rev
Log:
fixed MethodGetAndSet.setValue uses wrong source to determine which type to 
convert to when there's no setter
Issue: WICKET-2624

Modified:
    
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/convert/ConverterLocator.java
    
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java
    
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/lang/PropertyResolverTest.java

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/convert/ConverterLocator.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/util/convert/ConverterLocator.java?rev=893222&r1=893221&r2=893222&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/convert/ConverterLocator.java
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/convert/ConverterLocator.java
 Tue Dec 22 16:29:09 2009
@@ -101,7 +101,7 @@
                                else
                                {
                                        throw new ConversionException("Could 
not convert value: " + value +
-                                               " to type: " + 
theType.getName() + "(Could not find compatible 
converter).").setSourceValue(value);
+                                               " to type: " + 
theType.getName() + ". Could not find compatible 
converter.").setSourceValue(value);
                                }
                        }
                        catch (Exception e)

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java?rev=893222&r1=893221&r2=893222&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java
 Tue Dec 22 16:29:09 2009
@@ -1094,6 +1094,9 @@
                        Class type = null;
                        if (setMethod != null)
                        {
+                               // getMethod is always there and if the value 
will be set through a setMethod then
+                               // the getMethod return type will be its type. 
Else we have to look at the
+                               // parameters if the setter but getting the 
return type is quicker
                                type = getMethod.getReturnType();
                        }
                        else if (field != null)
@@ -1104,7 +1107,7 @@
                        Object converted = null;
                        if (type != null)
                        {
-                               converted = converter.convert(value, 
getMethod.getReturnType());
+                               converted = converter.convert(value, type);
                                if (converted == null)
                                {
                                        if (value != null)

Modified: 
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/lang/PropertyResolverTest.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/util/lang/PropertyResolverTest.java?rev=893222&r1=893221&r2=893222&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/lang/PropertyResolverTest.java
 (original)
+++ 
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/lang/PropertyResolverTest.java
 Tue Dec 22 16:29:09 2009
@@ -610,4 +610,24 @@
                String value = (String)PropertyResolver.getValue("testValue", 
new InnerVectorPOJO());
                assertEquals("vector", value);
        }
+
+       /**
+        * 
+        */
+       public void testDirectFieldSetWithDifferentTypeThanGetter()
+       {
+               final DirectFieldSetWithDifferentTypeThanGetter obj = new 
DirectFieldSetWithDifferentTypeThanGetter();
+               PropertyResolver.setValue("value", obj, 1, null);
+               assertEquals(1, obj.value);
+       }
+
+       private static class DirectFieldSetWithDifferentTypeThanGetter
+       {
+               private int value;
+
+               public String getValue()
+               {
+                       return String.valueOf(value);
+               }
+       }
 }


Reply via email to