Author: ivaynberg
Date: Sat Sep 24 00:23:58 2011
New Revision: 1175079
URL: http://svn.apache.org/viewvc?rev=1175079&view=rev
Log:
WICKET-4079 added 1.4.x-compatible page parameters encoder
Added:
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/UrlPathPageParametersEncoder.java
(with props)
Added:
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/UrlPathPageParametersEncoder.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/UrlPathPageParametersEncoder.java?rev=1175079&view=auto
==============================================================================
---
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/UrlPathPageParametersEncoder.java
(added)
+++
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/UrlPathPageParametersEncoder.java
Sat Sep 24 00:23:58 2011
@@ -0,0 +1,61 @@
+package org.apache.wicket.request.mapper.parameter;
+
+import java.util.Iterator;
+
+import org.apache.wicket.request.Request;
+import org.apache.wicket.request.Url;
+import org.apache.wicket.util.lang.Args;
+
+
+/**
+ * Encodes page parameters into url path fragments instead of the query string
like the default
+ * {@link PageParametersEncoder}. The parameters are encoded in the following
format:
+ * {@code /param1Name/param1Value/param2Name/param2Value}.
+ * <p>
+ * This used to be the default way of encoding page parameters in 1.4.x
applications. Newer 1.5.x+
+ * applications use the query string, by default. This class faciliates
backwards compatibility and
+ * migrations of 1.4.x application to 1.5.x+ codebase.
+ * <p>
+ * Example usage:
+ * {@code mount(new MountedMapper("/myPage", MyPage.class, new
HybridPageParametersEncoder()); }
+ *
+ * @author Chris Colman
+ * @authour Luniv (on Stack Overflow)
+ * @author ivaynberg
+ */
+public class UrlPathPageParametersEncoder implements IPageParametersEncoder
+{
+
+ public Url encodePageParameters(PageParameters params)
+ {
+ Args.notNull(params, "params");
+ Args.isTrue(params.getIndexedCount() == 0,
+ "This encoder does not support indexed page parameters.
Specified parameters: %s",
+ params);
+
+ Url url = new Url();
+
+ for (PageParameters.NamedPair pair : params.getAllNamed())
+ {
+ url.getSegments().add(pair.getKey());
+ url.getSegments().add(pair.getValue());
+ }
+
+ return url;
+ }
+
+ public PageParameters decodePageParameters(Request request)
+ {
+ PageParameters params = new PageParameters();
+
+ for (Iterator<String> segment =
request.getUrl().getSegments().iterator(); segment.hasNext();)
+ {
+ String key = segment.next();
+ String value = segment.next();
+
+ params.add(key, value);
+ }
+
+ return params.isEmpty() ? null : params;
+ }
+}
Propchange:
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/UrlPathPageParametersEncoder.java
------------------------------------------------------------------------------
svn:mime-type = text/plain