Author: jbq
Date: Sat Apr 14 15:56:13 2007
New Revision: 528888
URL: http://svn.apache.org/viewvc?view=rev&rev=528888
Log:
WICKET-469: URIRequestTargetUrlCodingStrategy: Request coding strategy that uses
a simple URI
Added:
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/basic/URIRequestTargetUrlCodingStrategy.java
(with props)
Added:
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/basic/URIRequestTargetUrlCodingStrategy.java
URL:
http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/basic/URIRequestTargetUrlCodingStrategy.java?view=auto&rev=528888
==============================================================================
---
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/basic/URIRequestTargetUrlCodingStrategy.java
(added)
+++
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/basic/URIRequestTargetUrlCodingStrategy.java
Sat Apr 14 15:56:13 2007
@@ -0,0 +1,195 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.request.target.basic;
+
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.apache.wicket.IRequestTarget;
+import org.apache.wicket.PageParameters;
+import org.apache.wicket.request.RequestParameters;
+import
org.apache.wicket.request.target.coding.AbstractRequestTargetUrlCodingStrategy;
+import org.apache.wicket.util.string.AppendingStringBuffer;
+import org.apache.wicket.util.string.Strings;
+import org.apache.wicket.util.value.ValueMap;
+
+/**
+ * Request coding strategy that uses a simple URI by putting the remaining path
+ * in the <tt>uri</tt> page parameter. Override the decode() method to return
+ * the appropriate request target, calling getURI(requestParameters) to get
+ * requested uri. Note that this request coding strategy takes other page
+ * parameters from the query string directly, it does not use hierarchical path
+ * for parameters.
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Jean-Baptiste Quenot</a>
+ */
+public class URIRequestTargetUrlCodingStrategy extends
AbstractRequestTargetUrlCodingStrategy
+{
+ protected static final String URI = "uri";
+
+ /**
+ * @see
AbstractRequestTargetUrlCodingStrategy#AbstractRequestTargetUrlCodingStrategy(String)
+ */
+ public URIRequestTargetUrlCodingStrategy(String mountPath)
+ {
+ super(mountPath);
+ }
+
+ /**
+ * Get the remaining path after mount point.
+ *
+ * @param requestParameters
+ * request parameters provided to the decode() method
+ * @return the URI
+ */
+ public PageParameters decodeParameters(RequestParameters
requestParameters)
+ {
+ final String parametersFragment =
requestParameters.getPath().substring(
+ getMountPath().length());
+ return new PageParameters(decodeParameters(parametersFragment,
requestParameters
+ .getParameters()));
+ }
+
+ /**
+ * Does nothing
+ *
+ * @see
wicket.request.target.coding.IRequestTargetUrlCodingStrategy#decode(wicket.request.RequestParameters)
+ */
+ public IRequestTarget decode(RequestParameters requestParameters)
+ {
+ return null;
+ }
+
+ /**
+ * Does nothing
+ *
+ * @see
wicket.request.target.coding.IRequestTargetUrlCodingStrategy#encode(wicket.IRequestTarget)
+ */
+ public CharSequence encode(IRequestTarget requestTarget)
+ {
+ return null;
+ }
+
+ /**
+ * Does nothing
+ *
+ * @see
wicket.request.target.coding.IRequestTargetUrlCodingStrategy#matches(wicket.IRequestTarget)
+ */
+ public boolean matches(IRequestTarget requestTarget)
+ {
+ return false;
+ }
+
+ /**
+ * Gets the encoded URL for the request target. Typically, the result
will
+ * be prepended with a protocol specific prefix. In a servlet
environment,
+ * the prefix concatenates the context path and the servlet path, for
+ * example "mywebapp/myservlet".
+ *
+ * @param url
+ * the relative reference URL
+ * @param parameters
+ * parameter names mapped to parameter values
+ */
+ protected void appendParameters(AppendingStringBuffer url, Map
parameters)
+ {
+
+ if (parameters != null && parameters.size() > 0)
+ {
+ boolean firstParam = true;
+ Iterator entries = parameters.entrySet().iterator();
+
+ while (entries.hasNext())
+ {
+ Map.Entry entry = (Entry)entries.next();
+
+ if (entry.getValue() != null)
+ {
+ String escapedValue =
urlEncode(entry.getValue().toString());
+
+ if (!Strings.isEmpty(escapedValue))
+ {
+ if (entry.getKey().equals(URI))
+ {
+
url.append("/").append(escapedValue);
+ }
+ else
+ {
+ if (firstParam)
+ {
+
url.append("?"); /* Begin query string. */
+ firstParam =
false;
+ }
+ else
+ {
+ /*
+ * Separate new
key=value(s) pair from previous
+ * pair with an
ampersand.
+ */
+ url.append("&");
+ }
+
+ /* Append key=value(s)
pair. */
+
url.append(entry.getKey());
+ url.append("=");
+
url.append(escapedValue);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Decodes parameters object from the provided url fragment
+ *
+ * @param urlFragment
+ * fragment of the url after the decoded path and before the
+ * query string
+ * @param urlParameters
+ * query string parameters
+ * @return Parameters created from the url fragment and query string
+ */
+ protected ValueMap decodeParameters(String urlFragment, Map
urlParameters)
+ {
+ // Hack off any leading slash
+ if (urlFragment.startsWith("/"))
+ {
+ urlFragment = urlFragment.substring(1);
+ }
+
+ if (urlFragment.length() == 0)
+ {
+ return new ValueMap();
+ }
+
+ ValueMap parameters = new ValueMap();
+ parameters.add(URI, urlFragment);
+
+ if (urlParameters != null)
+ {
+ parameters.putAll(urlParameters);
+ }
+
+ return parameters;
+ }
+
+ protected String getURI(RequestParameters requestParameters) {
+ return decodeParameters(requestParameters).getString(URI);
+ }
+}
Propchange:
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/basic/URIRequestTargetUrlCodingStrategy.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/basic/URIRequestTargetUrlCodingStrategy.java
------------------------------------------------------------------------------
svn:keywords = Id