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/08/11 15:20:04 UTC

git commit: WICKET-5669 Mark page parameters with a flag where they have been read from

Repository: wicket
Updated Branches:
  refs/heads/5539-named-parameters-type e8773fb18 -> 76433a762


WICKET-5669 Mark page parameters with a flag where they have been read from


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/76433a76
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/76433a76
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/76433a76

Branch: refs/heads/5539-named-parameters-type
Commit: 76433a76288cf3ac336676c81c400a556f6dc5a3
Parents: e8773fb
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Mon Aug 11 15:19:23 2014 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Mon Aug 11 15:19:23 2014 +0200

----------------------------------------------------------------------
 .../PageExpirationRecoveryTest.java             |   5 +-
 .../mapper/parameter/INamedParameters.java      |   4 +-
 .../mapper/parameter/PageParameters.java        |  19 ++-
 .../mapper/parameter/PageParametersTest.java    | 134 +++++++++++++++++++
 4 files changed, 155 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/76433a76/wicket-core/src/test/java/org/apache/wicket/page/expirationrecovery/PageExpirationRecoveryTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/page/expirationrecovery/PageExpirationRecoveryTest.java b/wicket-core/src/test/java/org/apache/wicket/page/expirationrecovery/PageExpirationRecoveryTest.java
index b3322c6..11c077a 100644
--- a/wicket-core/src/test/java/org/apache/wicket/page/expirationrecovery/PageExpirationRecoveryTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/page/expirationrecovery/PageExpirationRecoveryTest.java
@@ -16,6 +16,9 @@
  */
 package org.apache.wicket.page.expirationrecovery;
 
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.is;
+
 import org.apache.wicket.WicketTestCase;
 import org.apache.wicket.protocol.http.PageExpiredException;
 import org.apache.wicket.request.mapper.parameter.INamedParameters;
@@ -130,7 +133,7 @@ public class PageExpirationRecoveryTest extends WicketTestCase
 		pageSettings.setRecreateMountedPagesAfterExpiry(true);
 
 		ExpirationRecoveryPage page = tester.startPage(ExpirationRecoveryPage.class, parameters);
-		assertEquals(parameters, page.getPageParameters());
+		assertThat(parameters, is(equalTo(page.getPageParameters())));
 
 
 		tester.getSession().invalidateNow();

http://git-wip-us.apache.org/repos/asf/wicket/blob/76433a76/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/INamedParameters.java
----------------------------------------------------------------------
diff --git a/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/INamedParameters.java b/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/INamedParameters.java
index 288cd7c..45b4c6c 100644
--- a/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/INamedParameters.java
+++ b/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/INamedParameters.java
@@ -32,7 +32,7 @@ import org.apache.wicket.util.string.StringValue;
 public interface INamedParameters
 {
 	/**
-	 * A hint where the parameter is read from.
+	 * A hint where the parameter is read/parsed from.
 	 */
 	enum Type
 	{
@@ -113,7 +113,6 @@ public interface INamedParameters
 
 			if (key != null ? !key.equals(namedPair.key) : namedPair.key != null) return false;
 			if (value != null ? !value.equals(namedPair.value) : namedPair.value != null) return false;
-			if (type != null ? !type.equals(namedPair.type) : namedPair.type != null) return false;
 
 			return true;
 		}
@@ -123,7 +122,6 @@ public interface INamedParameters
 		{
 			int result = key != null ? key.hashCode() : 0;
 			result = 31 * result + (value != null ? value.hashCode() : 0);
-			result = result + type.hashCode();
 			return result;
 		}
 	}

http://git-wip-us.apache.org/repos/asf/wicket/blob/76433a76/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParameters.java
----------------------------------------------------------------------
diff --git a/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParameters.java b/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParameters.java
index 357e91a..df74439 100644
--- a/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParameters.java
+++ b/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParameters.java
@@ -199,7 +199,6 @@ public class PageParameters implements IClusterable, IIndexedParameters, INamedP
 		return namedParameters != null ? Collections.unmodifiableList(namedParameters) : Collections.<NamedPair>emptyList();
 	}
 
-
 	@Override
 	public List<NamedPair> getAllNamedByType(Type type)
 	{
@@ -274,11 +273,15 @@ public class PageParameters implements IClusterable, IIndexedParameters, INamedP
 		return this;
 	}
 
+	public PageParameters add(final String name, final Object value)
+	{
+		return add(name, value, Type.MANUAL);
+	}
+
 	@Override
 	public PageParameters add(final String name, final Object value, Type type)
 	{
-		add(name, value, -1, Type.MANUAL);
-		return this;
+		return add(name, value, -1, type);
 	}
 
 	@Override
@@ -318,6 +321,11 @@ public class PageParameters implements IClusterable, IIndexedParameters, INamedP
 		return this;
 	}
 
+	public PageParameters set(final String name, final Object value, final int index)
+	{
+		return set(name, value, index, Type.MANUAL);
+	}
+
 	@Override
 	public PageParameters set(final String name, final Object value, final int index, Type type)
 	{
@@ -330,6 +338,11 @@ public class PageParameters implements IClusterable, IIndexedParameters, INamedP
 		return this;
 	}
 
+	public PageParameters set(final String name, final Object value)
+	{
+		return set(name, value, Type.MANUAL);
+	}
+
 	@Override
 	public PageParameters set(final String name, final Object value, Type type)
 	{

http://git-wip-us.apache.org/repos/asf/wicket/blob/76433a76/wicket-request/src/test/java/org/apache/wicket/request/mapper/parameter/PageParametersTest.java
----------------------------------------------------------------------
diff --git a/wicket-request/src/test/java/org/apache/wicket/request/mapper/parameter/PageParametersTest.java b/wicket-request/src/test/java/org/apache/wicket/request/mapper/parameter/PageParametersTest.java
index c5abbdf..155ecbe 100644
--- a/wicket-request/src/test/java/org/apache/wicket/request/mapper/parameter/PageParametersTest.java
+++ b/wicket-request/src/test/java/org/apache/wicket/request/mapper/parameter/PageParametersTest.java
@@ -16,6 +16,9 @@
  */
 package org.apache.wicket.request.mapper.parameter;
 
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.is;
+
 import java.util.List;
 
 import org.apache.wicket.util.string.StringValue;
@@ -178,4 +181,135 @@ public class PageParametersTest extends Assert
 		assertEquals("both1-r", left.getValues("both").get(0).toString());
 		assertEquals("both2-r", left.getValues("both").get(1).toString());
 	}
+
+	/**
+	 * https://issues.apache.org/jira/browse/WICKET-5669
+	 */
+	@Test
+	public void parameterTypes()
+	{
+		PageParameters p = new PageParameters()
+				.add("pathName1", "pathValue1", INamedParameters.Type.PATH)
+				.add("pathName1", "pathValue1.1", INamedParameters.Type.PATH)
+				.add("pathName2", "pathValue2", INamedParameters.Type.PATH)
+				.add("queryName1", "queryValue1", INamedParameters.Type.QUERY_STRING)
+				.add("queryName1", "queryValue1.1", INamedParameters.Type.QUERY_STRING)
+				.add("queryName2", "queryValue2", INamedParameters.Type.QUERY_STRING)
+				.add("manualName1", "manualValue1", INamedParameters.Type.MANUAL)
+				.add("manualName1", "manualValue1.1", INamedParameters.Type.MANUAL)
+				.add("manualName2", "manualValue2", INamedParameters.Type.MANUAL);
+
+		{
+			// PATH
+			assertThat(p.getAllNamedByType(INamedParameters.Type.PATH).size(), is(3));
+
+			List<StringValue> pathName1Values = p.getValues("pathName1");
+			assertThat(pathName1Values.size(), is(2));
+			assertThat(pathName1Values.get(0).toString(), is("pathValue1"));
+			assertThat(pathName1Values.get(1).toString(), is("pathValue1.1"));
+
+			List<StringValue> pathName2Values = p.getValues("pathName2");
+			assertThat(pathName2Values.size(), is(1));
+			assertThat(pathName2Values.get(0).toString(), is("pathValue2"));
+		}
+
+		{
+			// QUERY STRING
+			assertThat(p.getAllNamedByType(INamedParameters.Type.QUERY_STRING).size(), is(3));
+
+			List<StringValue> queryName1Values = p.getValues("queryName1");
+			assertThat(queryName1Values.size(), is(2));
+			assertThat(queryName1Values.get(0).toString(), is("queryValue1"));
+			assertThat(queryName1Values.get(1).toString(), is("queryValue1.1"));
+
+			List<StringValue> queryName2Values = p.getValues("queryName2");
+			assertThat(queryName2Values.size(), is(1));
+			assertThat(queryName2Values.get(0).toString(), is("queryValue2"));
+		}
+
+		{
+			// MANUAL
+			assertThat(p.getAllNamedByType(INamedParameters.Type.MANUAL).size(), is(3));
+
+			List<StringValue> manualName1Values = p.getValues("manualName1");
+			assertThat(manualName1Values.size(), is(2));
+			assertThat(manualName1Values.get(0).toString(), is("manualValue1"));
+			assertThat(manualName1Values.get(1).toString(), is("manualValue1.1"));
+
+			List<StringValue> manualName2Values = p.getValues("manualName2");
+			assertThat(manualName2Values.size(), is(1));
+			assertThat(manualName2Values.get(0).toString(), is("manualValue2"));
+		}
+	}
+
+	/**
+	 * https://issues.apache.org/jira/browse/WICKET-5669
+	 */
+	@Test
+	public void addWithoutTypeIsManual()
+	{
+		PageParameters p = new PageParameters();
+		p.add("name", "value");
+		assertThat(p.getAllNamed().get(0).getType(), is(INamedParameters.Type.MANUAL));
+	}
+
+	/**
+	 * https://issues.apache.org/jira/browse/WICKET-5669
+	 */
+	@Test
+	public void setWithoutTypeIsManual()
+	{
+		PageParameters p = new PageParameters();
+		p.set("name", "value");
+		assertThat(p.getAllNamed().get(0).getType(), is(INamedParameters.Type.MANUAL));
+	}
+
+	/**
+	 * https://issues.apache.org/jira/browse/WICKET-5669
+	 */
+	@Test
+	public void setWithIndexWithoutTypeIsManual()
+	{
+		PageParameters p = new PageParameters();
+		p.set("name", "value", 3);
+		assertThat(p.getAllNamed().get(0).getType(), is(INamedParameters.Type.MANUAL));
+	}
+
+	/**
+	 * NamedPairs equality should not depend on the type
+	 *
+	 * https://issues.apache.org/jira/browse/WICKET-5669
+	 */
+	@Test
+	public void equality()
+	{
+		PageParameters p1 = new PageParameters()
+				.add("a", "b", INamedParameters.Type.MANUAL)
+				.set("c", "d", INamedParameters.Type.MANUAL);
+
+		PageParameters p2 = new PageParameters()
+				.set("a", "b", INamedParameters.Type.QUERY_STRING)
+				.add("c", "d", INamedParameters.Type.PATH);
+
+		assertThat(p1, is(equalTo(p2)));
+	}
+
+	/**
+	 * NamedPairs hashCode should not depend on the type
+	 *
+	 * https://issues.apache.org/jira/browse/WICKET-5669
+	 */
+	@Test
+	public void hashcode()
+	{
+		PageParameters p1 = new PageParameters()
+				.add("a", "b", INamedParameters.Type.MANUAL)
+				.set("c", "d", INamedParameters.Type.MANUAL);
+
+		PageParameters p2 = new PageParameters()
+				.set("a", "b", INamedParameters.Type.QUERY_STRING)
+				.add("c", "d", INamedParameters.Type.PATH);
+
+		assertThat(p1.hashCode(), is(equalTo(p2.hashCode())));
+	}
 }