Author: jdonnerstag
Date: Tue Dec 22 16:29:44 2009
New Revision: 893223
URL: http://svn.apache.org/viewvc?rev=893223&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/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/util/convert/ConverterLocator.java
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java
wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/util/lang/PropertyResolverTest.java
Modified:
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/util/convert/ConverterLocator.java
URL:
http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/util/convert/ConverterLocator.java?rev=893223&r1=893222&r2=893223&view=diff
==============================================================================
---
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/util/convert/ConverterLocator.java
(original)
+++
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/util/convert/ConverterLocator.java
Tue Dec 22 16:29:44 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/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java
URL:
http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java?rev=893223&r1=893222&r2=893223&view=diff
==============================================================================
---
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java
(original)
+++
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java
Tue Dec 22 16:29:44 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/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/util/lang/PropertyResolverTest.java
URL:
http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/util/lang/PropertyResolverTest.java?rev=893223&r1=893222&r2=893223&view=diff
==============================================================================
---
wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/util/lang/PropertyResolverTest.java
(original)
+++
wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/util/lang/PropertyResolverTest.java
Tue Dec 22 16:29:44 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);
+ }
+ }
}