AFAIK this requires a recompile for folks upgrading from 1.5-RC7 to
1.5-RC8 (or 1.5.0 to 1.5.1). Not very handy.

The signature goes from:

    PageParameters#remove(String)
to
    PageParameters#remove(String, String[])

IMO it is better to add the varargs method, or if it isn't compatible,
add a method with signature:
    remove(String, String, String...)

Martijn

On Mon, Aug 29, 2011 at 2:48 PM,  <[email protected]> wrote:
> Author: mgrigorov
> Date: Mon Aug 29 12:48:07 2011
> New Revision: 1162772
>
> URL: http://svn.apache.org/viewvc?rev=1162772&view=rev
> Log:
> WICKET-3938 Impossible to remove particular key-value from PageParameters
>
>
> 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=1162772&r1=1162771&r2=1162772&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 Aug 29 12:48:07 2011
> @@ -72,9 +72,13 @@ public interface INamedParameters
>         * Removes named parameter with given name.
>         *
>         * @param name
> +        *            the name of the parameter to remove
> +        * @param values
> +        *            values used as criteria. The parameter will be removed 
> only if its value is equal
> +        *            to any of the criteria.
>         * @return this
>         */
> -       INamedParameters remove(final String name);
> +       INamedParameters remove(final String name, String... values);
>
>        /**
>         * Adds value to named parameter with given 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=1162772&r1=1162771&r2=1162772&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 Aug 29 12:48:07 2011
> @@ -392,7 +392,7 @@ public class PageParameters implements I
>        /**
>         * @see 
> org.apache.wicket.request.mapper.parameter.INamedParameters#remove(java.lang.String)
>         */
> -       public PageParameters remove(final String name)
> +       public PageParameters remove(final String name, final String... 
> values)
>        {
>                Args.notNull(name, "name");
>
> @@ -403,7 +403,21 @@ public class PageParameters implements I
>                                Entry e = i.next();
>                                if (e.key.equals(name))
>                                {
> -                                       i.remove();
> +                                       if (values != null && values.length > 
> 0)
> +                                       {
> +                                               for (String value : values)
> +                                               {
> +                                                       if 
> (e.value.equals(value))
> +                                                       {
> +                                                               i.remove();
> +                                                               break;
> +                                                       }
> +                                               }
> +                                       }
> +                                       else
> +                                       {
> +                                               i.remove();
> +                                       }
>                                }
>                        }
>                }
>
> 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=1162772&r1=1162771&r2=1162772&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 Aug 29 12:48:07 2011
> @@ -109,6 +109,8 @@ public class PageParametersTest extends
>
>        /**
>         * https://issues.apache.org/jira/browse/WICKET-3938
> +        *
> +        * Remove the parameter by its name
>         */
>        @Test
>        public void removeParameters()
> @@ -123,4 +125,21 @@ public class PageParametersTest extends
>                parameters.remove("named2");
>                assertTrue(parameters.isEmpty());
>        }
> +
> +       /**
> +        * https://issues.apache.org/jira/browse/WICKET-3938
> +        *
> +        * Remove the parameter by its name only if its value is equal to the 
> criteria
> +        */
> +       @Test
> +       public void removeParametersByValue()
> +       {
> +               PageParameters parameters = new 
> PageParameters().add("named1", "value1").add("named1",
> +                       "value2");
> +
> +               assertEquals(2, parameters.getAllNamed().size());
> +
> +               parameters.remove("named1", "value1");
> +               assertEquals("value2", parameters.get("named1").toString());
> +       }
>  }
>
>
>



-- 
Become a Wicket expert, learn from the best: http://wicketinaction.com

Reply via email to