You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jd...@apache.org on 2009/12/22 17:29:10 UTC

svn commit: r893222 - in /wicket/trunk/wicket/src: main/java/org/apache/wicket/util/convert/ConverterLocator.java main/java/org/apache/wicket/util/lang/PropertyResolver.java test/java/org/apache/wicket/util/lang/PropertyResolverTest.java

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);
+		}
+	}
 }