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