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 2015/01/19 15:19:39 UTC
[1/2] wicket git commit: WICKET-5811 Fix issue with infinite loop in
PropertyValidator#createUnresolvablePropertyMessage(FormComponent<>) in case
or trivial model (new Model<>(...));
Repository: wicket
Updated Branches:
refs/heads/wicket-6.x 4e39ebdb3 -> 074f06a9e
WICKET-5811 Fix issue with infinite loop in PropertyValidator#createUnresolvablePropertyMessage(FormComponent<>) in case or trivial model (new Model<>(...));
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/5fe26827
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/5fe26827
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/5fe26827
Branch: refs/heads/wicket-6.x
Commit: 5fe26827a24f4e4eb1a64a96aa0df8f8558b84e7
Parents: 160c0f6
Author: Alexander Morozov <al...@gmail.com>
Authored: Mon Jan 19 17:00:12 2015 +0600
Committer: Alexander Morozov <al...@gmail.com>
Committed: Mon Jan 19 17:17:45 2015 +0600
----------------------------------------------------------------------
.../validation/DefaultPropertyResolver.java | 30 ++----------
.../bean/validation/PropertyValidator.java | 20 +-------
.../validation/ValidationModelResolver.java | 50 ++++++++++++++++++++
.../src/test/java/log4j.properties | 18 +++++++
.../bean/validation/TestValidatableBean.java | 25 ++++++++++
.../validation/ValidationModelResolverTest.java | 44 +++++++++++++++++
6 files changed, 142 insertions(+), 45 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/5fe26827/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 08311ac..ab8a11a 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,15 +1,13 @@
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;
-import org.apache.wicket.model.IWrapModel;
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}
@@ -23,27 +21,7 @@ public class DefaultPropertyResolver implements IPropertyResolver
@Override
public Property resolveProperty(FormComponent<?> component)
{
- IModel<?> model = component.getModel();
-
- while (true)
- {
- if (model == null)
- {
- return null;
- }
- if (model instanceof IPropertyReflectionAwareModel)
- {
- break;
- }
- if (model instanceof IWrapModel<?>)
- {
- model = ((IWrapModel<?>)model).getWrappedModel();
- continue;
- }
- return null;
- }
-
- IPropertyReflectionAwareModel<?> delegate = (IPropertyReflectionAwareModel<?>)model;
+ IPropertyReflectionAwareModel<?> delegate = ValidationModelResolver.resolvePropertyModelFrom(component);
String name;
Method getter = delegate.getPropertyGetter();
http://git-wip-us.apache.org/repos/asf/wicket/blob/5fe26827/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 17aa38f..5fcde2d 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
@@ -103,25 +103,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 = component.getModel();
- // Code sadly copied over from DefaultPropertyResolver
- while (true)
- {
- if (model == null)
- {
- break;
- }
- if (model instanceof IPropertyReflectionAwareModel)
- {
- break;
- }
- if (model instanceof IWrapModel<?>)
- {
- model = ((IWrapModel<?>)model).getWrappedModel();
- continue;
- }
- }
+ IModel<?> model = ValidationModelResolver.resolvePropertyModelFrom(component);
if (model != null) {
baseMessage += " Model : " + model;
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/5fe26827/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
new file mode 100644
index 0000000..cb8cfcd
--- /dev/null
+++ b/wicket-bean-validation/src/main/java/org/apache/wicket/bean/validation/ValidationModelResolver.java
@@ -0,0 +1,50 @@
+package org.apache.wicket.bean.validation;
+
+import org.apache.wicket.markup.html.form.FormComponent;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.IPropertyReflectionAwareModel;
+import org.apache.wicket.model.IWrapModel;
+
+/**
+ * @author alexander.v.morozov
+ */
+final class ValidationModelResolver
+{
+
+ /**
+ * Lookup for property-aware model, attached to certain form component.
+ *
+ * @param component
+ * form component
+ *
+ * @return property-aware model, extracted from supplied component or <code>null</code>
+ */
+ public static IPropertyReflectionAwareModel<?> resolvePropertyModelFrom(FormComponent<?> component)
+ {
+ IModel<?> model = component.getModel();
+ while (true)
+ {
+ if (model == null)
+ {
+ return null;
+ }
+ if (model instanceof IPropertyReflectionAwareModel)
+ {
+ return (IPropertyReflectionAwareModel<?>) model;
+ }
+ if (model instanceof IWrapModel<?>)
+ {
+ model = ((IWrapModel<?>)model).getWrappedModel();
+ continue;
+ }
+ break; // not model found
+ }
+ return null;
+ }
+
+ private ValidationModelResolver()
+ {
+ // nop
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/wicket/blob/5fe26827/wicket-bean-validation/src/test/java/log4j.properties
----------------------------------------------------------------------
diff --git a/wicket-bean-validation/src/test/java/log4j.properties b/wicket-bean-validation/src/test/java/log4j.properties
new file mode 100644
index 0000000..76a9aff
--- /dev/null
+++ b/wicket-bean-validation/src/test/java/log4j.properties
@@ -0,0 +1,18 @@
+log4j.debug=false
+
+log4j.rootLogger=INFO,Stdout
+
+# please keep this setting FATAL to avoid questions from users
+# why there are stacktraces in the test output. You can turn it
+# down if you need to when testing, but don't check it in. (eelco)
+
+# changing back to ERROR. Looks like in some cases the log4j.properties
+# in wicket gets picked which results in not printing the exceptions
+# and that can be a bit dangerous (matej)
+log4j.logger.org.apache.wicket=ERROR
+#log4j.logger.org.apache.wicket.resource=FATAL
+#log4j.logger.org.apache.wicket.Localizer=FATAL
+
+log4j.appender.Stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.Stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.Stdout.layout.conversionPattern=%-5p - %-26.26c{1} - %m\n
http://git-wip-us.apache.org/repos/asf/wicket/blob/5fe26827/wicket-bean-validation/src/test/java/org/apache/wicket/bean/validation/TestValidatableBean.java
----------------------------------------------------------------------
diff --git a/wicket-bean-validation/src/test/java/org/apache/wicket/bean/validation/TestValidatableBean.java b/wicket-bean-validation/src/test/java/org/apache/wicket/bean/validation/TestValidatableBean.java
new file mode 100644
index 0000000..e33c7b9
--- /dev/null
+++ b/wicket-bean-validation/src/test/java/org/apache/wicket/bean/validation/TestValidatableBean.java
@@ -0,0 +1,25 @@
+package org.apache.wicket.bean.validation;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * @author alexander.v.morozov
+ */
+public class TestValidatableBean implements Serializable
+{
+
+ @NotNull
+ private String text;
+
+ public String getText()
+ {
+ return text;
+ }
+
+ public void setText(String text)
+ {
+ this.text = text;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/wicket/blob/5fe26827/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
new file mode 100644
index 0000000..cefb2e9
--- /dev/null
+++ b/wicket-bean-validation/src/test/java/org/apache/wicket/bean/validation/ValidationModelResolverTest.java
@@ -0,0 +1,44 @@
+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
[2/2] wicket git commit: Merge branch 'wicket-6.x' of
https://github.com/shuraa/wicket into pr-84-wicket-6.x
Posted by mg...@apache.org.
Merge branch 'wicket-6.x' of https://github.com/shuraa/wicket into pr-84-wicket-6.x
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/074f06a9
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/074f06a9
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/074f06a9
Branch: refs/heads/wicket-6.x
Commit: 074f06a9e96a25abb7b8b61c599b7cad11e0d55b
Parents: 4e39ebd 5fe2682
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Mon Jan 19 16:17:01 2015 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Mon Jan 19 16:17:01 2015 +0200
----------------------------------------------------------------------
.../validation/DefaultPropertyResolver.java | 30 ++----------
.../bean/validation/PropertyValidator.java | 20 +-------
.../validation/ValidationModelResolver.java | 50 ++++++++++++++++++++
.../src/test/java/log4j.properties | 18 +++++++
.../bean/validation/TestValidatableBean.java | 25 ++++++++++
.../validation/ValidationModelResolverTest.java | 44 +++++++++++++++++
6 files changed, 142 insertions(+), 45 deletions(-)
----------------------------------------------------------------------