Author: jcompagner
Date: Tue Mar 17 09:54:11 2009
New Revision: 755171

URL: http://svn.apache.org/viewvc?rev=755171&view=rev
Log:
property resolver support for private fields with only a getter

Modified:
    
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java
    
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/lang/Person.java
    
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/lang/PropertyResolverTest.java

Modified: 
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java?rev=755171&r1=755170&r2=755171&view=diff
==============================================================================
--- 
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java
 (original)
+++ 
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java
 Tue Mar 17 09:54:11 2009
@@ -1070,9 +1070,16 @@
                public final void setValue(final Object object, final Object 
value,
                        PropertyResolverConverter converter)
                {
+                       Class type = null;
                        if (setMethod != null)
+                               type = getMethod.getReturnType();
+                       else if (field != null)
+                               type = field.getType();
+
+                       Object converted = null;
+                       if (type != null)
                        {
-                               Object converted = converter.convert(value, 
getMethod.getReturnType());
+                               converted = converter.convert(value, 
getMethod.getReturnType());
                                if (converted == null)
                                {
                                        if (value != null)
@@ -1088,6 +1095,10 @@
                                                                
getMethod.getReturnType() + " for setting it on " + object);
                                        }
                                }
+                       }
+
+                       if (setMethod != null)
+                       {
                                try
                                {
                                        setMethod.invoke(object, new Object[] { 
converted });
@@ -1103,6 +1114,18 @@
                                                " on object: " + object, ex);
                                }
                        }
+                       else if (field != null)
+                       {
+                               try
+                               {
+                                       field.set(object, converted);
+                               }
+                               catch (Exception ex)
+                               {
+                                       throw new WicketRuntimeException("Error 
setting field: " + field +
+                                               " on object: " + object, ex);
+                               }
+                       }
                        else
                        {
                                throw new WicketRuntimeException("no set method 
defined for value: " + value +

Modified: 
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/lang/Person.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/lang/Person.java?rev=755171&r1=755170&r2=755171&view=diff
==============================================================================
--- 
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/lang/Person.java
 (original)
+++ 
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/lang/Person.java
 Tue Mar 17 09:54:11 2009
@@ -45,6 +45,27 @@
 
        private int age;
 
+
+       private int onlyGetterPrimitive;
+
+       private String onlyGetterString;
+
+       /**
+        * @return test
+        */
+       public int getOnlyGetterPrimitive()
+       {
+               return onlyGetterPrimitive;
+       }
+
+       /**
+        * @return test
+        */
+       public String getOnlyGetterString()
+       {
+               return onlyGetterString;
+       }
+
        /**
         * @return The name
         */

Modified: 
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/lang/PropertyResolverTest.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/lang/PropertyResolverTest.java?rev=755171&r1=755170&r2=755171&view=diff
==============================================================================
--- 
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/lang/PropertyResolverTest.java
 (original)
+++ 
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/lang/PropertyResolverTest.java
 Tue Mar 17 09:54:11 2009
@@ -456,6 +456,34 @@
        }
 
        /**
+        * @throws Exception
+        */
+       public void testOnlyPrimitiveGetter() throws Exception
+       {
+               Person person = new Person();
+
+               PropertyResolver.setValue("onlyGetterPrimitive", person, new 
Integer(1), CONVERTER);
+
+               assertEquals(person.getOnlyGetterPrimitive(), 1);
+               assertEquals(PropertyResolver.getValue("onlyGetterPrimitive", 
person), new Integer(1));
+
+       }
+
+       /**
+        * @throws Exception
+        */
+       public void testOnlyStringGetter() throws Exception
+       {
+               Person person = new Person();
+
+               PropertyResolver.setValue("onlyGetterString", person, 
"onlygetter", CONVERTER);
+
+               assertEquals(person.getOnlyGetterString(), "onlygetter");
+               assertEquals(PropertyResolver.getValue("onlyGetterString", 
person), "onlygetter");
+
+       }
+
+       /**
         * 
         */
        public void testGetTargetSetter()


Reply via email to