MethodGetAndSet.setValue uses wrong source to determine which type to convert to when there's no setter -------------------------------------------------------------------------------------------------------
Key: WICKET-2624 URL: https://issues.apache.org/jira/browse/WICKET-2624 Project: Wicket Issue Type: Bug Components: wicket Affects Versions: 1.4.4 Reporter: Marat Radchenko Attachments: PropertyResolverTest.java MethodGetAndSet.setValue uses wrong source to determine which type to convert to when there's no setter, resulting in exceptions like this: org.apache.wicket.WicketRuntimeException: Error setting field: private int PropertyResolverTest$DirectFieldSetWithDifferentTypeThanGetter.value on object: propertyresolvertest$directfieldsetwithdifferenttypethanget...@396477d9 at org.apache.wicket.util.lang.PropertyResolver$MethodGetAndSet.setValue(PropertyResolver.java:1150) at org.apache.wicket.util.lang.PropertyResolver$ObjectAndGetSetter.setValue(PropertyResolver.java:588) at org.apache.wicket.util.lang.PropertyResolver.setValue(PropertyResolver.java:136) at PropertyResolverTest.testDirectFieldSetWithDifferentTypeThanGetter(PropertyResolverTest.java:12) Bug is located in: converted = converter.convert(value, getMethod.getReturnType()); Instead, it should read: converted = converter.convert(value, type); Testcase attached. Additional thoughts: if (setMethod != null) { type = getMethod.getReturnType(); } This is really confusing (we check setMethod presence but get type from getMethod). Luckily, this works as expected because in MethodGetAndSet.findSetter only methods with same (or superclass) type as getter are returned. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.