You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2014/02/18 11:01:57 UTC
[13/17] git commit: WICKET-5505 DefaultPropertyResolver does not
respect JavaBean conventions
WICKET-5505 DefaultPropertyResolver does not respect JavaBean conventions
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/6cceff44
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/6cceff44
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/6cceff44
Branch: refs/heads/sandbox/component-queueing-2
Commit: 6cceff44098a0183f0c9f632af93b3205db4ac22
Parents: a69e7ed
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Tue Feb 18 10:42:42 2014 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Tue Feb 18 10:42:42 2014 +0200
----------------------------------------------------------------------
.../validation/DefaultPropertyResolver.java | 20 +++++++++++++--
.../validation/DefaultPropertyResolverTest.java | 27 ++++++++++++++++++++
2 files changed, 45 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/6cceff44/wicket-bean-validation/src/main/java/org/apache/wicket/bean/validation/DefaultPropertyResolver.java
----------------------------------------------------------------------
diff --git a/wicket-bean-validation/src/main/java/org/apache/wicket/bean/validation/DefaultPropertyResolver.java b/wicket-bean-validation/src/main/java/org/apache/wicket/bean/validation/DefaultPropertyResolver.java
index 91eb1a3..442bca2 100644
--- a/wicket-bean-validation/src/main/java/org/apache/wicket/bean/validation/DefaultPropertyResolver.java
+++ b/wicket-bean-validation/src/main/java/org/apache/wicket/bean/validation/DefaultPropertyResolver.java
@@ -3,6 +3,7 @@ package org.apache.wicket.bean.validation;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
+import org.apache.wicket.WicketRuntimeException;
import org.apache.wicket.markup.html.form.FormComponent;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.IPropertyReflectionAwareModel;
@@ -50,11 +51,26 @@ public class DefaultPropertyResolver implements IPropertyResolver
return new Property(field.getDeclaringClass(), field.getName());
}
+ String name;
Method getter = delegate.getPropertyGetter();
if (getter != null)
{
- String name = getter.getName().substring(3, 4).toLowerCase() +
- getter.getName().substring(4);
+ String methodName = getter.getName();
+ if (methodName.startsWith("get"))
+ {
+ name = methodName.substring(3, 4).toLowerCase() +
+ methodName.substring(4);
+ }
+ else if (methodName.startsWith("is"))
+ {
+ name = methodName.substring(2, 3).toLowerCase() +
+ methodName.substring(3);
+ }
+ else
+ {
+ throw new WicketRuntimeException("Invalid name for a getter method: '"
+ + methodName + "'. It must start either with 'get' or 'is'.");
+ }
return new Property(getter.getDeclaringClass(), name);
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/6cceff44/wicket-bean-validation/src/test/java/org/apache/wicket/bean/validation/DefaultPropertyResolverTest.java
----------------------------------------------------------------------
diff --git a/wicket-bean-validation/src/test/java/org/apache/wicket/bean/validation/DefaultPropertyResolverTest.java b/wicket-bean-validation/src/test/java/org/apache/wicket/bean/validation/DefaultPropertyResolverTest.java
index fe4653f..07bbe65 100644
--- a/wicket-bean-validation/src/test/java/org/apache/wicket/bean/validation/DefaultPropertyResolverTest.java
+++ b/wicket-bean-validation/src/test/java/org/apache/wicket/bean/validation/DefaultPropertyResolverTest.java
@@ -53,6 +53,22 @@ public class DefaultPropertyResolverTest
assertThat(property.getOwner().getName(), is(Bean1.class.getName()));
}
+ /**
+ * https://issues.apache.org/jira/browse/WICKET-5505
+ */
+ @Test
+ public void booleanHasFieldAndGetter()
+ {
+ DefaultPropertyResolver resolver = new DefaultPropertyResolver();
+
+ TextField<?> component = new TextField<>("id", new PropertyModel<BooleanBean>(new BooleanBean(),
+ "foo"));
+ Property property = resolver.resolveProperty(component);
+ assertThat(property, not(nullValue()));
+ assertThat(property.getName(), is("foo"));
+ assertThat(property.getOwner().getName(), is(BooleanBean.class.getName()));
+ }
+
@Test
public void hasOnlyField()
{
@@ -93,4 +109,15 @@ public class DefaultPropertyResolverTest
}
}
+ /**
+ * WICKET-5505
+ */
+ public static class BooleanBean
+ {
+ public boolean isFoo()
+ {
+ return false;
+ }
+ }
+
}