You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by iv...@apache.org on 2010/01/19 01:30:31 UTC
svn commit: r900621 -
/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/request/target/coding/MixedParamUrlCodingStrategy.java
Author: ivaynberg
Date: Tue Jan 19 00:30:31 2010
New Revision: 900621
URL: http://svn.apache.org/viewvc?rev=900621&view=rev
Log:
WICKET-2685
Issue: WICKET-2685
Modified:
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/request/target/coding/MixedParamUrlCodingStrategy.java
Modified: wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/request/target/coding/MixedParamUrlCodingStrategy.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/request/target/coding/MixedParamUrlCodingStrategy.java?rev=900621&r1=900620&r2=900621&view=diff
==============================================================================
--- wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/request/target/coding/MixedParamUrlCodingStrategy.java (original)
+++ wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/request/target/coding/MixedParamUrlCodingStrategy.java Tue Jan 19 00:30:31 2010
@@ -20,17 +20,17 @@
import java.util.Map;
import java.util.Set;
-import org.apache.wicket.PageParameters;
-import org.apache.wicket.RequestCycle;
+import javax.servlet.http.HttpServletRequest;
+
import org.apache.wicket.Page;
import org.apache.wicket.PageMap;
+import org.apache.wicket.PageParameters;
+import org.apache.wicket.RequestCycle;
import org.apache.wicket.protocol.http.WebRequest;
import org.apache.wicket.util.string.AppendingStringBuffer;
import org.apache.wicket.util.value.ValueMap;
-import org.slf4j.LoggerFactory;
import org.slf4j.Logger;
-
-import javax.servlet.http.HttpServletRequest;
+import org.slf4j.LoggerFactory;
/**
* Url coding strategy for bookmarkable pages that encodes a set of given parameters in the url's
@@ -52,10 +52,10 @@
*/
public class MixedParamUrlCodingStrategy extends BookmarkablePageRequestTargetUrlCodingStrategy
{
- private static Logger logger = LoggerFactory.getLogger(MixedParamUrlCodingStrategy.class);
+ private static Logger logger = LoggerFactory.getLogger(MixedParamUrlCodingStrategy.class);
- private final String[] parameterNames;
- private boolean ignoreUndeclaredParameters = true;
+ private final String[] parameterNames;
+ private boolean ignoreUndeclaredParameters = true;
/**
* Construct.
@@ -95,17 +95,18 @@
this.parameterNames = parameterNames;
}
- /**
- * @param ignoreUndeclaredParameters true to ignore undeclared parameters in
- * the URL (still logged), false to throw an exception when this
- * happens (default is true)
- * @return this
- */
- public MixedParamUrlCodingStrategy setIgnoreUndeclaredParameters(boolean ignoreUndeclaredParameters)
- {
- this.ignoreUndeclaredParameters = ignoreUndeclaredParameters;
- return this;
- }
+ /**
+ * @param ignoreUndeclaredParameters
+ * true to ignore undeclared parameters in the URL (still logged), false to throw an
+ * exception when this happens (default is true)
+ * @return this
+ */
+ public MixedParamUrlCodingStrategy setIgnoreUndeclaredParameters(
+ boolean ignoreUndeclaredParameters)
+ {
+ this.ignoreUndeclaredParameters = ignoreUndeclaredParameters;
+ return this;
+ }
/**
* @see org.apache.wicket.request.target.coding.AbstractRequestTargetUrlCodingStrategy#appendParameters(org.apache.wicket.util.string.AppendingStringBuffer,
@@ -135,7 +136,8 @@
{
String parameterName = parameterNames[i];
final Object param = parameters.get(parameterName);
- String value = param instanceof String[] ? ((String[])param)[0] : (String)param;
+ String value = param instanceof String[] ? ((String[])param)[0] : ((param == null)
+ ? null : param.toString());
if (value == null)
{
value = "";
@@ -156,7 +158,8 @@
{
url.append(first ? '?' : '&');
final Object param = parameters.get(parameterName);
- String value = param instanceof String[] ? ((String[])param)[0] : String.valueOf(param);
+ String value = param instanceof String[] ? ((String[])param)[0]
+ : String.valueOf(param);
url.append(urlEncodeQueryComponent(parameterName)).append("=").append(
urlEncodeQueryComponent(value));
first = false;
@@ -185,29 +188,37 @@
String[] pathParts = urlPath.split("/");
if (pathParts.length > parameterNames.length)
{
- // Some known causes of this situation:
- // - user edits the URL manually
- // - a javascript requests resources relative to the current page instead of to the web context
- String msg = String.format("Found more URL path parts then expected, these will be ignored. Url: '%s', mountpath: '%s', urlPath: '%s', expected %d parameters was %d", getRequestUrl(), getMountPath(), urlPath, parameterNames.length, pathParts.length);
- if (ignoreUndeclaredParameters) {
- logger.info(msg);
- } else {
- throw new IllegalArgumentException(msg);
- }
+ // Some known causes of this situation:
+ // - user edits the URL manually
+ // - a javascript requests resources relative to the current page instead of to the
+ // web context
+ String msg = String.format(
+ "Found more URL path parts then expected, these will be ignored. Url: '%s', mountpath: '%s', urlPath: '%s', expected %d parameters was %d",
+ getRequestUrl(), getMountPath(), urlPath, parameterNames.length,
+ pathParts.length);
+ if (ignoreUndeclaredParameters)
+ {
+ logger.info(msg);
+ }
+ else
+ {
+ throw new IllegalArgumentException(msg);
+ }
}
- int actualParameterCount = Math.min(pathParts.length, parameterNames.length);
- for (int i = 0; i < actualParameterCount; i++) {
- params.put(parameterNames[i], urlDecodePathComponent(pathParts[i]));
- }
+ int actualParameterCount = Math.min(pathParts.length, parameterNames.length);
+ for (int i = 0; i < actualParameterCount; i++)
+ {
+ params.put(parameterNames[i], urlDecodePathComponent(pathParts[i]));
+ }
}
return params;
}
- private String getRequestUrl()
- {
- HttpServletRequest request = ((WebRequest) RequestCycle.get().getRequest()).getHttpServletRequest();
- return request.getRequestURL().toString();
- }
+ private String getRequestUrl()
+ {
+ HttpServletRequest request = ((WebRequest)RequestCycle.get().getRequest()).getHttpServletRequest();
+ return request.getRequestURL().toString();
+ }
}
\ No newline at end of file