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(-)
----------------------------------------------------------------------