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()