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); } }