Author: jcompagner
Date: Tue Jun 26 04:54:45 2007
New Revision: 550777
URL: http://svn.apache.org/viewvc?view=rev&rev=550777
Log:
WICKET-698
now for a list i do try to find a field when the rest is failing:
findMethod if expresion is () or findGetter
if method not found then look if it is an index.
if that fails then it will look for a method anyway and last it will look for
the field
For a Map this doesnt happen. You can't have fields in a map you can only target
fields through a getter in a Map or explicitly by defining map.xxx() so it will
just look up the method.
Modified:
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java
incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/lang/PropertyResolverTest.java
Modified:
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java
URL:
http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java?view=diff&rev=550777&r1=550776&r2=550777
==============================================================================
---
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java
(original)
+++
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/PropertyResolver.java
Tue Jun 26 04:54:45 2007
@@ -319,9 +319,17 @@
}
else
{
- throw new
WicketRuntimeException("The expression '" + exp
- + "' is
neither an index nor is it a method for the list "
- + clz);
+ field = findField(clz,
exp);
+ if (field != null)
+ {
+ getAndSetter =
new FieldGetAndSetter(field);
+ }
+ else
+ {
+ throw new
WicketRuntimeException("The expression '" + exp
+
+ "' is neither an index nor is it a method or field for the list "
+
+ clz);
+ }
}
}
}
@@ -586,6 +594,7 @@
public Object getValue(final Object object);
/**
+ * @param object
* @return
*/
public Class getTargetClass(final Object object);
Modified:
incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/lang/PropertyResolverTest.java
URL:
http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/lang/PropertyResolverTest.java?view=diff&rev=550777&r1=550776&r2=550777
==============================================================================
---
incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/lang/PropertyResolverTest.java
(original)
+++
incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/lang/PropertyResolverTest.java
Tue Jun 26 04:54:45 2007
@@ -23,6 +23,7 @@
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.Vector;
import junit.framework.TestCase;
@@ -449,5 +450,27 @@
person.setAddressArray(new Address[] { new Address(), new
Address() });
method =
PropertyResolver.getPropertySetter("addressArray[0].number", person);
assertEquals(method.getName(), "setNumber");
+ }
+
+ /**
+ * Used for models in testing.
+ */
+ private static class InnerVectorPOJO extends Vector
+ {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ *
+ */
+ public String testValue = "vector";
+ }
+
+ /**
+ * Tests the PropertyModel with vector.
+ */
+ public void testPropertyModel()
+ {
+ String value = (String)PropertyResolver.getValue("testValue",
new InnerVectorPOJO());
+ assertEquals("vector", value);
}
}