You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by pe...@apache.org on 2017/02/13 05:16:03 UTC
[1/2] wicket git commit: WICKET-6313 simplified
IPropertyExpressionResolver,
keeping one CachingPropertyLocator per OGNLPropertyExpressionResolver instance,
javadoc
Repository: wicket
Updated Branches:
refs/heads/WICKET-6318-configurable-property-expression-resolver 3a6db1bf7 -> fa0f12624
WICKET-6313 simplified IPropertyExpressionResolver, keeping one CachingPropertyLocator per OGNLPropertyExpressionResolver instance, javadoc
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/ede069b9
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/ede069b9
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/ede069b9
Branch: refs/heads/WICKET-6318-configurable-property-expression-resolver
Commit: ede069b9b9617eb96b1705ab3515cc5ebe530279
Parents: 3a6db1b
Author: Pedro Henrique Oliveira dos Santos <pe...@apache.org>
Authored: Mon Feb 13 03:13:53 2017 -0200
Committer: Pedro Henrique Oliveira dos Santos <pe...@apache.org>
Committed: Mon Feb 13 03:13:53 2017 -0200
----------------------------------------------------------------------
.../util/lang/IPropertyExpressionResolver.java | 31 +++++++++-
.../core/util/lang/IPropertyResolver.java | 8 +++
.../lang/OGNLPropertyExpressionResolver.java | 63 +++++++-------------
.../wicket/core/util/lang/PropertyResolver.java | 12 ++--
.../util/parser/PropertyExpressionResolver.java | 13 +---
.../OGNLPropertyExpressionResolverTest.java | 14 ++---
6 files changed, 76 insertions(+), 65 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/ede069b9/wicket-core/src/main/java/org/apache/wicket/core/util/lang/IPropertyExpressionResolver.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/util/lang/IPropertyExpressionResolver.java b/wicket-core/src/main/java/org/apache/wicket/core/util/lang/IPropertyExpressionResolver.java
index 18c8141..4574be2 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/util/lang/IPropertyExpressionResolver.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/util/lang/IPropertyExpressionResolver.java
@@ -1,12 +1,37 @@
package org.apache.wicket.core.util.lang;
+import org.apache.wicket.core.util.reflection.ObjectWithGetAndSet;
+
+/**
+ * Resolves property expression to workable {@link ObjectWithGetAndSet}
+ *
+ * @author pedro
+ */
public interface IPropertyExpressionResolver
{
- <T> T getValue(String expression, T object);
-
- <T> Class<T> getPropertyClass(String expression, Object object, Class<?> targetClass);
+ /**
+ * @param expression
+ * @param object
+ * Optional, but will enable the resolver to find subclasses in polymorphic types
+ * @param clz
+ * @return {@link ObjectWithGetAndSet}
+ */
+ ObjectWithGetAndSet resolve(String expression, Object object, Class<? extends Object> clz);
+ /**
+ * Creates a new value to each null property in the way to the expressed property. So the
+ * property expression: "attr1.attr2.attr3" would have "attr1" and "attr2" tested for null, in
+ * which case they would get new constructed values to guarantee a place to set the new value at
+ * "attr3"
+ *
+ * @param expression
+ * @param object
+ * @param value
+ * @param prc
+ */
+ // TODO find a better name, multiple values are being setting here
+ // TODO if possible, to move to PropertyExpression
void setValue(String expression, Object object, Object value, PropertyResolverConverter prc);
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/ede069b9/wicket-core/src/main/java/org/apache/wicket/core/util/lang/IPropertyResolver.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/util/lang/IPropertyResolver.java b/wicket-core/src/main/java/org/apache/wicket/core/util/lang/IPropertyResolver.java
index e72a29e..65b7cdb 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/util/lang/IPropertyResolver.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/util/lang/IPropertyResolver.java
@@ -2,6 +2,14 @@ package org.apache.wicket.core.util.lang;
import org.apache.wicket.core.util.reflection.IGetAndSet;
+/**
+ * Resolves a property string to an {@link IGetAndSet}.
+ *
+ * @see {@link IPropertyExpressionResolver} Property expression are resolved by
+ * {@link IPropertyExpressionResolver} implementations instead
+ *
+ * @author pedro
+ */
public interface IPropertyResolver
{
http://git-wip-us.apache.org/repos/asf/wicket/blob/ede069b9/wicket-core/src/main/java/org/apache/wicket/core/util/lang/OGNLPropertyExpressionResolver.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/util/lang/OGNLPropertyExpressionResolver.java b/wicket-core/src/main/java/org/apache/wicket/core/util/lang/OGNLPropertyExpressionResolver.java
index 76f5814..085adb3 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/util/lang/OGNLPropertyExpressionResolver.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/util/lang/OGNLPropertyExpressionResolver.java
@@ -26,8 +26,6 @@ import org.apache.wicket.core.util.reflection.CachingPropertyLocator;
import org.apache.wicket.core.util.reflection.IGetAndSet;
import org.apache.wicket.core.util.reflection.ObjectWithGetAndSet;
import org.apache.wicket.util.string.Strings;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* This class parses expressions to lookup or set a value on the object that is given. <br/>
@@ -65,15 +63,11 @@ import org.slf4j.LoggerFactory;
public class OGNLPropertyExpressionResolver implements IPropertyExpressionResolver
{
-
- /** Log. */
- private static final Logger log = LoggerFactory.getLogger(PropertyResolver.class);
-
private final static int RETURN_NULL = 0;
private final static int CREATE_NEW_VALUE = 1;
private final static int RESOLVE_CLASS = 2;
- private static IPropertyResolver locator = new CachingPropertyLocator( new DefaultPropertyLocator());
+ private IPropertyResolver locator = new CachingPropertyLocator( new DefaultPropertyLocator());
/**
@@ -86,14 +80,9 @@ public class OGNLPropertyExpressionResolver implements IPropertyExpressionResolv
* The object which is evaluated.
* @return The value that is evaluated. Null something in the expression evaluated to null.
*/
- @Override
- public Object getValue(final String expression, final Object object)
+ //TODO remove, only being used in tests
+ public Object getValue(final String expression, final Object object)
{
- if (expression == null || expression.equals("") || object == null)
- {
- return object;
- }
-
ObjectWithGetAndSet objectWithGetAndSet = getObjectWithGetAndSet(expression, object,
RETURN_NULL);
if (objectWithGetAndSet == null)
@@ -152,27 +141,6 @@ public class OGNLPropertyExpressionResolver implements IPropertyExpressionResolv
}
/**
- * @param <T>
- * @param expression
- * @param clz
- * @return class of the target Class property expression
- * @throws WicketRuntimeException
- * if class cannot be resolved
- */
- @Override
- @SuppressWarnings("unchecked")
- public <T> Class<T> getPropertyClass(final String expression, Object object, final Class<?> clz)
- {
- ObjectWithGetAndSet objectWithGetAndSet = getObjectWithGetAndSet(expression, object,
- RESOLVE_CLASS, clz);
- if (objectWithGetAndSet == null)
- {
- throw new WicketRuntimeException("No Class returned for expression: " + expression
- + " for getting the target class of: " + clz);
- }
- return (Class<T>)objectWithGetAndSet.getTargetClass();
- }
-
/**
* @param expression
* @param object
@@ -180,7 +148,7 @@ public class OGNLPropertyExpressionResolver implements IPropertyExpressionResolv
* @throws WicketRuntimeException
* if there is no such field
*/
- public static Field getPropertyField(final String expression, final Object object)
+ public Field getPropertyField(final String expression, final Object object)
{
ObjectWithGetAndSet objectWithGetAndSet = getObjectWithGetAndSet(expression, object,
RESOLVE_CLASS);
@@ -199,7 +167,7 @@ public class OGNLPropertyExpressionResolver implements IPropertyExpressionResolv
* @throws WicketRuntimeException
* if there is no getter method
*/
- public static Method getPropertyGetter(final String expression, final Object object)
+ public Method getPropertyGetter(final String expression, final Object object)
{
ObjectWithGetAndSet objectWithGetAndSet = getObjectWithGetAndSet(expression, object,
RESOLVE_CLASS);
@@ -218,7 +186,7 @@ public class OGNLPropertyExpressionResolver implements IPropertyExpressionResolv
* @throws WicketRuntimeException
* if there is no setter method
*/
- public static Method getPropertySetter(final String expression, final Object object)
+ public Method getPropertySetter(final String expression, final Object object)
{
ObjectWithGetAndSet objectWithGetAndSet = getObjectWithGetAndSet(expression, object,
RESOLVE_CLASS);
@@ -230,6 +198,19 @@ public class OGNLPropertyExpressionResolver implements IPropertyExpressionResolv
return objectWithGetAndSet.getSetter();
}
+ @Override
+ public ObjectWithGetAndSet resolve(String expression, Object object, Class<? extends Object> clz)
+ {
+ ObjectWithGetAndSet objectWithGetAndSet = getObjectWithGetAndSet(expression, object,
+ RESOLVE_CLASS, clz);
+ if (objectWithGetAndSet == null)
+ {
+ throw new WicketRuntimeException("Null object returned for expression: " + expression
+ + " for getting the target class of: " + clz);
+ }
+ return objectWithGetAndSet;
+ }
+
/**
* Just delegating the call to the original getObjectAndGetSetter passing the object type as
* parameter.
@@ -239,7 +220,7 @@ public class OGNLPropertyExpressionResolver implements IPropertyExpressionResolv
* @param tryToCreateNull
* @return {@link ObjectWithGetAndSet}
*/
- private static ObjectWithGetAndSet getObjectWithGetAndSet(final String expression,
+ private ObjectWithGetAndSet getObjectWithGetAndSet(final String expression,
final Object object, int tryToCreateNull)
{
return getObjectWithGetAndSet(expression, object, tryToCreateNull, object.getClass());
@@ -260,7 +241,7 @@ public class OGNLPropertyExpressionResolver implements IPropertyExpressionResolv
* @return final getAndSet and the target to apply it on, or {@code null} if expression results
* in an intermediate null
*/
- private static ObjectWithGetAndSet getObjectWithGetAndSet(final String expression,
+ private ObjectWithGetAndSet getObjectWithGetAndSet(final String expression,
final Object object, final int tryToCreateNull, Class<?> clz)
{
String expressionBracketsSeperated = Strings.replaceAll(expression, "[", ".[").toString();
@@ -376,7 +357,7 @@ public class OGNLPropertyExpressionResolver implements IPropertyExpressionResolv
return -1;
}
- private static IGetAndSet getGetAndSet(String exp, final Class<?> clz)
+ private IGetAndSet getGetAndSet(String exp, final Class<?> clz)
{
IGetAndSet getAndSet = locator.get(clz, exp);
http://git-wip-us.apache.org/repos/asf/wicket/blob/ede069b9/wicket-core/src/main/java/org/apache/wicket/core/util/lang/PropertyResolver.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/util/lang/PropertyResolver.java b/wicket-core/src/main/java/org/apache/wicket/core/util/lang/PropertyResolver.java
index ad4063f..b7f87dc 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/util/lang/PropertyResolver.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/util/lang/PropertyResolver.java
@@ -27,15 +27,19 @@ public final class PropertyResolver
public static <T> T getValue(String expression, T object)
{
- return Application.get().getApplicationSettings().getPropertyExpressionResolver()
- .getValue(expression, object);
+ if (expression == null || expression.equals("") || object == null)
+ {
+ return object;
+ }
+ IPropertyExpressionResolver propertyExpressionResolver = Application.get().getApplicationSettings().getPropertyExpressionResolver();
+ return (T)propertyExpressionResolver.resolve(expression, object, object.getClass()).getValue();
}
public static <T> Class<T> getPropertyClass(String expression, Object object,
Class<?> targetClass)
{
- return Application.get().getApplicationSettings().getPropertyExpressionResolver()
- .getPropertyClass(expression, object, targetClass);
+ IPropertyExpressionResolver propertyExpressionResolver = Application.get().getApplicationSettings().getPropertyExpressionResolver();
+ return (Class<T>)propertyExpressionResolver.resolve(expression, object, targetClass).getTargetClass();
}
public static void setValue(String expression, Object object, Object value,
http://git-wip-us.apache.org/repos/asf/wicket/blob/ede069b9/wicket-core/src/main/java/org/apache/wicket/core/util/parser/PropertyExpressionResolver.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/util/parser/PropertyExpressionResolver.java b/wicket-core/src/main/java/org/apache/wicket/core/util/parser/PropertyExpressionResolver.java
index 22049d2..fd976aa 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/util/parser/PropertyExpressionResolver.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/util/parser/PropertyExpressionResolver.java
@@ -2,27 +2,20 @@ package org.apache.wicket.core.util.parser;
import org.apache.wicket.core.util.lang.IPropertyExpressionResolver;
import org.apache.wicket.core.util.lang.PropertyResolverConverter;
+import org.apache.wicket.core.util.reflection.ObjectWithGetAndSet;
public class PropertyExpressionResolver implements IPropertyExpressionResolver
{
-
@Override
- public <T> T getValue(String expression, T object)
+ public ObjectWithGetAndSet resolve(String expression, Object object, Class<? extends Object> clz)
{
return null;
}
@Override
- public <T> Class<T> getPropertyClass(String expression, Object object, Class<?> targetClass)
+ public void setValue(String expression, Object object, Object value, PropertyResolverConverter prc)
{
- return null;
- }
- @Override
- public void setValue(String expression, Object object, Object value,
- PropertyResolverConverter prc)
- {
-
}
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/ede069b9/wicket-core/src/test/java/org/apache/wicket/util/lang/OGNLPropertyExpressionResolverTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/util/lang/OGNLPropertyExpressionResolverTest.java b/wicket-core/src/test/java/org/apache/wicket/util/lang/OGNLPropertyExpressionResolverTest.java
index f371496..6168142 100644
--- a/wicket-core/src/test/java/org/apache/wicket/util/lang/OGNLPropertyExpressionResolverTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/util/lang/OGNLPropertyExpressionResolverTest.java
@@ -457,20 +457,20 @@ public class OGNLPropertyExpressionResolverTest extends WicketTestCase
{
Address address = new Address();
- Class<?> clazz = ognlResolver.getPropertyClass("number", address, address.getClass());
+ Class<?> clazz = ognlResolver.resolve("number", address, address.getClass()).getTargetClass();
assertEquals(int.class, clazz);
Person person = new Person();
person.setAddress(new Address());
- clazz = ognlResolver.getPropertyClass("address.number", person, person.getClass());
+ clazz = ognlResolver.resolve("address.number", person, person.getClass()).getTargetClass();
assertEquals(int.class, clazz);
person.setAddressArray(new Address[] { new Address(), new Address() });
- clazz = ognlResolver.getPropertyClass("addressArray[0]", person, person.getClass());
+ clazz = ognlResolver.resolve("addressArray[0]", person, person.getClass()).getTargetClass();
assertEquals(Address.class, clazz);
- clazz = ognlResolver.getPropertyClass("addressArray[0].number", person, person.getClass());
+ clazz = ognlResolver.resolve("addressArray[0].number", person, person.getClass()).getTargetClass();
assertEquals(int.class, clazz);
}
@@ -605,10 +605,10 @@ public class OGNLPropertyExpressionResolverTest extends WicketTestCase
{
Person person = new Person();
assertEquals(String.class,
- ognlResolver.getPropertyClass("country.name", person, person.getClass()));
+ ognlResolver.resolve("country.name", person, person.getClass()).getTargetClass());
try
{
- ognlResolver.getPropertyClass("country.subCountry.name", person, person.getClass());
+ ognlResolver.resolve("country.subCountry.name", person, person.getClass()).getTargetClass();
fail("country.subCountry shouldnt be found");
}
catch (Exception e)
@@ -616,7 +616,7 @@ public class OGNLPropertyExpressionResolverTest extends WicketTestCase
}
person.setCountry(new Country2("test", new Country("test")));
- ognlResolver.getPropertyClass("country.subCountry.name", person, person.getClass());
+ ognlResolver.resolve("country.subCountry.name", person, person.getClass()).getTargetClass();
}
/**
[2/2] wicket git commit: WICKET-6313 updating wicket-bean-validation
project to use the new property resolution api
Posted by pe...@apache.org.
WICKET-6313 updating wicket-bean-validation project to use the new property resolution api
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/fa0f1262
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/fa0f1262
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/fa0f1262
Branch: refs/heads/WICKET-6318-configurable-property-expression-resolver
Commit: fa0f12624c97e99a37f2fbe0f9b8e41215bedb1f
Parents: ede069b
Author: Pedro Henrique Oliveira dos Santos <pe...@apache.org>
Authored: Mon Feb 13 03:15:44 2017 -0200
Committer: Pedro Henrique Oliveira dos Santos <pe...@apache.org>
Committed: Mon Feb 13 03:15:44 2017 -0200
----------------------------------------------------------------------
.../validation/DefaultPropertyResolver.java | 26 ++++++++----
.../bean/validation/IPropertyResolver.java | 1 -
.../bean/validation/PropertyValidator.java | 2 +-
.../validation/ValidationModelResolver.java | 8 ++--
.../validation/ValidationModelResolverTest.java | 44 --------------------
5 files changed, 23 insertions(+), 58 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/fa0f1262/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 527a24f..174598a 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
@@ -1,13 +1,16 @@
package org.apache.wicket.bean.validation;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+
+import org.apache.wicket.Application;
import org.apache.wicket.WicketRuntimeException;
+import org.apache.wicket.core.util.lang.IPropertyExpressionResolver;
+import org.apache.wicket.core.util.reflection.ObjectWithGetAndSet;
import org.apache.wicket.markup.html.form.FormComponent;
-import org.apache.wicket.model.IPropertyReflectionAwareModel;
+import org.apache.wicket.model.AbstractPropertyModel;
import org.apache.wicket.model.PropertyModel;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-
/**
* Default property resolver. This resolver supports common Wicket models like the
* {@link PropertyModel}, and other implementations of {@link IPropertyReflectionAwareModel}
@@ -21,16 +24,23 @@ public class DefaultPropertyResolver implements IPropertyResolver
@Override
public Property resolveProperty(FormComponent<?> component)
{
- IPropertyReflectionAwareModel<?> delegate = ValidationModelResolver.resolvePropertyModelFrom(component);
+ AbstractPropertyModel<?> delegate = ValidationModelResolver.resolvePropertyModelFrom(component);
if (delegate == null)
{
return null;
}
+ Object target = delegate.getInnermostModelOrObject();
+ if(target == null)
+ return null;
- String name;
- Method getter = delegate.getPropertyGetter();
+ String expression = delegate.getPropertyExpression();
+ IPropertyExpressionResolver propertyExpressionResolver = Application.get().getApplicationSettings().getPropertyExpressionResolver();
+ ObjectWithGetAndSet objectWithGetAndSet = propertyExpressionResolver.resolve(expression, target, target.getClass());
+
+ Method getter = objectWithGetAndSet.getGetter();
if (getter != null)
{
+ String name;
String methodName = getter.getName();
if (methodName.startsWith("get"))
{
@@ -50,7 +60,7 @@ public class DefaultPropertyResolver implements IPropertyResolver
return new Property(getter.getDeclaringClass(), name);
}
- Field field = delegate.getPropertyField();
+ Field field = objectWithGetAndSet.getField();
if (field != null)
{
return new Property(field.getDeclaringClass(), field.getName());
http://git-wip-us.apache.org/repos/asf/wicket/blob/fa0f1262/wicket-bean-validation/src/main/java/org/apache/wicket/bean/validation/IPropertyResolver.java
----------------------------------------------------------------------
diff --git a/wicket-bean-validation/src/main/java/org/apache/wicket/bean/validation/IPropertyResolver.java b/wicket-bean-validation/src/main/java/org/apache/wicket/bean/validation/IPropertyResolver.java
index dabe39f..c761527 100644
--- a/wicket-bean-validation/src/main/java/org/apache/wicket/bean/validation/IPropertyResolver.java
+++ b/wicket-bean-validation/src/main/java/org/apache/wicket/bean/validation/IPropertyResolver.java
@@ -1,7 +1,6 @@
package org.apache.wicket.bean.validation;
import org.apache.wicket.markup.html.form.FormComponent;
-import org.apache.wicket.model.IPropertyReflectionAwareModel;
/**
* Resolves the property to be validated for the given form component. Implementations, incuding the
http://git-wip-us.apache.org/repos/asf/wicket/blob/fa0f1262/wicket-bean-validation/src/main/java/org/apache/wicket/bean/validation/PropertyValidator.java
----------------------------------------------------------------------
diff --git a/wicket-bean-validation/src/main/java/org/apache/wicket/bean/validation/PropertyValidator.java b/wicket-bean-validation/src/main/java/org/apache/wicket/bean/validation/PropertyValidator.java
index 862a69b..1dc3cea 100644
--- a/wicket-bean-validation/src/main/java/org/apache/wicket/bean/validation/PropertyValidator.java
+++ b/wicket-bean-validation/src/main/java/org/apache/wicket/bean/validation/PropertyValidator.java
@@ -100,7 +100,7 @@ public class PropertyValidator<T> extends Behavior implements IValidator<T>
String baseMessage = "Could not resolve Bean Property from component: " + component
+ ". (Hints:) Possible causes are a typo in the PropertyExpression, a null reference or a model that does not work in combination with a "
+ IPropertyResolver.class.getSimpleName() + ".";
- IModel<?> model = ValidationModelResolver.resolvePropertyModelFrom(component);
+ IModel<?> model = component.getInnermostModel();
if (model != null) {
baseMessage += " Model : " + model;
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/fa0f1262/wicket-bean-validation/src/main/java/org/apache/wicket/bean/validation/ValidationModelResolver.java
----------------------------------------------------------------------
diff --git a/wicket-bean-validation/src/main/java/org/apache/wicket/bean/validation/ValidationModelResolver.java b/wicket-bean-validation/src/main/java/org/apache/wicket/bean/validation/ValidationModelResolver.java
index cb8cfcd..a452776 100644
--- a/wicket-bean-validation/src/main/java/org/apache/wicket/bean/validation/ValidationModelResolver.java
+++ b/wicket-bean-validation/src/main/java/org/apache/wicket/bean/validation/ValidationModelResolver.java
@@ -1,8 +1,8 @@
package org.apache.wicket.bean.validation;
import org.apache.wicket.markup.html.form.FormComponent;
+import org.apache.wicket.model.AbstractPropertyModel;
import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.IPropertyReflectionAwareModel;
import org.apache.wicket.model.IWrapModel;
/**
@@ -19,7 +19,7 @@ final class ValidationModelResolver
*
* @return property-aware model, extracted from supplied component or <code>null</code>
*/
- public static IPropertyReflectionAwareModel<?> resolvePropertyModelFrom(FormComponent<?> component)
+ public static AbstractPropertyModel<?> resolvePropertyModelFrom(FormComponent<?> component)
{
IModel<?> model = component.getModel();
while (true)
@@ -28,9 +28,9 @@ final class ValidationModelResolver
{
return null;
}
- if (model instanceof IPropertyReflectionAwareModel)
+ if (model instanceof AbstractPropertyModel)
{
- return (IPropertyReflectionAwareModel<?>) model;
+ return (AbstractPropertyModel<?>) model;
}
if (model instanceof IWrapModel<?>)
{
http://git-wip-us.apache.org/repos/asf/wicket/blob/fa0f1262/wicket-bean-validation/src/test/java/org/apache/wicket/bean/validation/ValidationModelResolverTest.java
----------------------------------------------------------------------
diff --git a/wicket-bean-validation/src/test/java/org/apache/wicket/bean/validation/ValidationModelResolverTest.java b/wicket-bean-validation/src/test/java/org/apache/wicket/bean/validation/ValidationModelResolverTest.java
deleted file mode 100644
index cefb2e9..0000000
--- a/wicket-bean-validation/src/test/java/org/apache/wicket/bean/validation/ValidationModelResolverTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package org.apache.wicket.bean.validation;
-
-import org.apache.wicket.markup.html.form.TextField;
-import org.apache.wicket.model.IPropertyReflectionAwareModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.util.tester.WicketTesterScope;
-import org.junit.Assert;
-import org.junit.Rule;
-import org.junit.Test;
-
-/**
- * @author alexander.v.morozov
- */
-public class ValidationModelResolverTest
-{
-
- @Rule
- public WicketTesterScope scope = new WicketTesterScope();
-
- @Test
- public void noModelBoundToComponent()
- {
- TextField<String> textField = new TextField<String>("field");
- Assert.assertNull(ValidationModelResolver.resolvePropertyModelFrom(textField));
- }
-
- @Test
- public void simpleModelBoundToComponent()
- {
- TextField<String> textField = new TextField<String>("text", new Model<String>());
- Assert.assertNull(ValidationModelResolver.resolvePropertyModelFrom(textField));
- }
-
- @Test
- public void propertyModelBoundToComponent()
- {
- TextField<String> textField = new TextField<String>("text", new PropertyModel<String>(new TestValidatableBean(), "text"));
- IPropertyReflectionAwareModel<?> model = ValidationModelResolver.resolvePropertyModelFrom(textField);
- Assert.assertNotNull(model);
- Assert.assertEquals("text", model.getPropertyField().getName());
- }
-
-}
\ No newline at end of file