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


Reply via email to