You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jc...@apache.org on 2007/12/19 10:49:39 UTC

svn commit: r605492 - in /wicket/trunk/jdk-1.4/wicket/src: main/java/org/apache/wicket/util/lang/ test/java/org/apache/wicket/util/lang/

Author: jcompagner
Date: Wed Dec 19 01:49:35 2007
New Revision: 605492

URL: http://svn.apache.org/viewvc?rev=605492&view=rev
Log:
fix for maurice, only visible in java5 and covariant return types. Then the setter can sometimes not be found if the getter has a different return type then the super getter method.

Modified:
    wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java
    wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/lang/Person.java
    wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/lang/Person2.java
    wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/lang/PropertyResolverTest.java

Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java?rev=605492&r1=605491&r2=605492&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java (original)
+++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java Wed Dec 19 01:49:35 2007
@@ -1123,6 +1123,25 @@
 				}
 				return method;
 			}
+			catch (NoSuchMethodException e)
+			{
+				Method[] methods = clz.getMethods();
+				for (int i = 0; i < methods.length; i++)
+				{
+					if (methods[i].getName().equals(name))
+					{
+						Class[] parameterTypes = methods[i].getParameterTypes();
+						if (parameterTypes.length == 1)
+						{
+							if (parameterTypes[0].isAssignableFrom(getMethod.getReturnType()))
+							{
+								return methods[i];
+							}
+						}
+					}
+				}
+				log.debug("Cannot find setter corresponding to " + getMethod, e);
+			}
 			catch (Exception e)
 			{
 				log.debug("Cannot find setter corresponding to " + getMethod, e);

Modified: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/lang/Person.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/lang/Person.java?rev=605492&r1=605491&r2=605492&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/lang/Person.java (original)
+++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/lang/Person.java Wed Dec 19 01:49:35 2007
@@ -26,7 +26,7 @@
  */
 public class Person
 {
-	private String name;
+	private CharSequence name;
 
 	private Address address;
 
@@ -48,15 +48,15 @@
 	/**
 	 * @return The name
 	 */
-	public String getName()
+	public CharSequence getName()
 	{
-		return this.name;
+		return name;
 	}
 
 	/**
 	 * @param name
 	 */
-	public void setName(String name)
+	public void setName(CharSequence name)
 	{
 		this.name = name;
 	}
@@ -66,7 +66,7 @@
 	 */
 	public Address getAddress()
 	{
-		return this.address;
+		return address;
 	}
 
 	/**
@@ -82,7 +82,7 @@
 	 */
 	public List getAddressList()
 	{
-		return this.addressList;
+		return addressList;
 	}
 
 	/**
@@ -124,7 +124,7 @@
 	 */
 	public Map getAddressMap()
 	{
-		return this.addressMap;
+		return addressMap;
 	}
 
 	/**
@@ -140,7 +140,7 @@
 	 */
 	public Country getCountry()
 	{
-		return this.country;
+		return country;
 	}
 
 	/**
@@ -156,7 +156,7 @@
 	 */
 	public Address[] getAddressArray()
 	{
-		return this.addressArray;
+		return addressArray;
 	}
 
 	/**

Modified: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/lang/Person2.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/lang/Person2.java?rev=605492&r1=605491&r2=605492&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/lang/Person2.java (original)
+++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/lang/Person2.java Wed Dec 19 01:49:35 2007
@@ -22,4 +22,9 @@
 public class Person2 extends Person
 {
 
+// TODO ENABLE THIS IN WICKET 1.4 (Java5)
+// public String getName()
+// {
+// return (String)super.getName();
+// }
 }

Modified: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/lang/PropertyResolverTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/lang/PropertyResolverTest.java?rev=605492&r1=605491&r2=605492&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/lang/PropertyResolverTest.java (original)
+++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/lang/PropertyResolverTest.java Wed Dec 19 01:49:35 2007
@@ -221,8 +221,7 @@
 		assertNotNull(hm.get("address.test"));
 		PropertyResolver.setValue("addressMap[address.test].street", person, "wicket-street",
 			CONVERTER);
-		String street = (String)PropertyResolver
-			.getValue("addressMap[address.test].street", person);
+		String street = (String)PropertyResolver.getValue("addressMap[address.test].street", person);
 		assertEquals(street, "wicket-street");
 	}
 
@@ -320,7 +319,7 @@
 	/**
 	 * @throws Exception
 	 */
-	public void testArraytSizeLookup() throws Exception
+	public void testArraySizeLookup() throws Exception
 	{
 		person.setAddressArray(new Address[] { new Address(), new Address() });
 		Object size = PropertyResolver.getValue("addressArray.length", person);
@@ -479,6 +478,24 @@
 		person.setAddressArray(new Address[] { new Address(), new Address() });
 		method = PropertyResolver.getPropertySetter("addressArray[0].number", person);
 		assertEquals(method.getName(), "setNumber");
+	}
+
+	/**
+	 * @throws Exception
+	 */
+	public void testOverriddenGetter() throws Exception
+	{
+		Person2 person = new Person2();
+		person.setName("foo");
+
+		String name = (String)PropertyResolver.getValue("name", person);
+		assertEquals("foo", name);
+
+		PropertyResolver.setValue("name", person, "bar", CONVERTER);
+
+		name = (String)PropertyResolver.getValue("name", person);
+		assertEquals("bar", name);
+
 	}
 
 	/**