Author: mgrigorov
Date: Mon Jul 18 09:24:58 2011
New Revision: 1147797
URL: http://svn.apache.org/viewvc?rev=1147797&view=rev
Log:
WICKET-3906 PageParameters#set not follow INamedParameters#set behavior
Modified:
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/INamedParameters.java
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParameters.java
wicket/trunk/wicket-request/src/test/java/org/apache/wicket/request/mapper/parameter/PageParametersTest.java
Modified:
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/INamedParameters.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/INamedParameters.java?rev=1147797&r1=1147796&r2=1147797&view=diff
==============================================================================
---
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/INamedParameters.java
(original)
+++
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/INamedParameters.java
Mon Jul 18 09:24:58 2011
@@ -60,6 +60,15 @@ public interface INamedParameters
List<NamedPair> getAllNamed();
/**
+ * Returns the position of a named parameter.
+ *
+ * @param name
+ * the name of the parameter to look for
+ * @return the position of the parameter. {@code -1} if there is no
parameter with that name.
+ */
+ int getPosition(String name);
+
+ /**
* Removes named parameter with given name.
*
* @param name
Modified:
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParameters.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParameters.java?rev=1147797&r1=1147796&r2=1147797&view=diff
==============================================================================
---
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParameters.java
(original)
+++
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParameters.java
Mon Jul 18 09:24:58 2011
@@ -369,6 +369,27 @@ public class PageParameters implements I
}
/**
+ * @see
org.apache.wicket.request.mapper.parameter.INamedParameters#getPosition(String)
+ */
+ public int getPosition(final String name)
+ {
+ int index = -1;
+ if (namedParameters != null)
+ {
+ for (int i = 0; i < namedParameters.size(); i++)
+ {
+ Entry entry = namedParameters.get(i);
+ if (entry.key.equals(name))
+ {
+ index = i;
+ break;
+ }
+ }
+ }
+ return index;
+ }
+
+ /**
* @see
org.apache.wicket.request.mapper.parameter.INamedParameters#remove(java.lang.String)
*/
public PageParameters remove(final String name)
@@ -429,7 +450,7 @@ public class PageParameters implements I
entry.key = name;
entry.value = val;
- if (index < 0)
+ if (index < 0 || index > namedParameters.size())
{
namedParameters.add(entry);
}
Modified:
wicket/trunk/wicket-request/src/test/java/org/apache/wicket/request/mapper/parameter/PageParametersTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-request/src/test/java/org/apache/wicket/request/mapper/parameter/PageParametersTest.java?rev=1147797&r1=1147796&r2=1147797&view=diff
==============================================================================
---
wicket/trunk/wicket-request/src/test/java/org/apache/wicket/request/mapper/parameter/PageParametersTest.java
(original)
+++
wicket/trunk/wicket-request/src/test/java/org/apache/wicket/request/mapper/parameter/PageParametersTest.java
Mon Jul 18 09:24:58 2011
@@ -19,12 +19,13 @@ package org.apache.wicket.request.mapper
import java.util.List;
import org.apache.wicket.util.string.StringValue;
+import org.junit.Assert;
import org.junit.Test;
/**
* Tests for {@link PageParameters}
*/
-public class PageParametersTest
+public class PageParametersTest extends Assert
{
/**
@@ -60,4 +61,28 @@ public class PageParametersTest
}
}
}
+
+ /**
+ * https://issues.apache.org/jira/browse/WICKET-3906
+ */
+ @Test
+ public void getPosition()
+ {
+ PageParameters parameters = new PageParameters();
+ parameters.set("named1", "value1", 3);
+ assertEquals(
+ "Adding a parameter at position out of the size of the
list will just append it", 0,
+ parameters.getPosition("named1"));
+
+ parameters.set("named2", "value2", 0);
+ assertEquals(0, parameters.getPosition("named2"));
+ assertEquals("'named1' should be moved back", 1,
parameters.getPosition("named1"));
+
+
+ parameters.set("named3", "value3", -100);
+ assertEquals(0, parameters.getPosition("named2"));
+ assertEquals(1, parameters.getPosition("named1"));
+ assertEquals("Adding a parameter with negative position will
just append it.", 2,
+ parameters.getPosition("named3"));
+ }
}