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 2009/12/05 00:36:25 UTC

svn commit: r887453 - in /wicket/trunk/wicket/src: main/java/org/apache/wicket/ main/java/org/apache/wicket/markup/html/ main/java/org/apache/wicket/markup/html/form/ main/java/org/apache/wicket/ng/request/ main/java/org/apache/wicket/protocol/http/ ma...

Author: ivaynberg
Date: Fri Dec  4 23:36:24 2009
New Revision: 887453

URL: http://svn.apache.org/viewvc?rev=887453&view=rev
Log:
wip wicket-ng 

Modified:
    wicket/trunk/wicket/src/main/java/org/apache/wicket/Request.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/AjaxServerAndClientTimeFilter.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/ServerAndClientTimeFilter.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/ServerTimeFilter.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/Form.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/Url.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletResponse.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycle.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketServlet.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/request/CryptedUrlWebRequestCodingStrategy.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/request/AbstractRequestCycleProcessor.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/resource/ResourceStreamRequestTarget.java
    wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/request/UrlTest.java

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/Request.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/Request.java?rev=887453&r1=887452&r2=887453&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/Request.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/Request.java Fri Dec  4 23:36:24 2009
@@ -19,6 +19,7 @@
 import java.util.Locale;
 import java.util.Map;
 
+import org.apache.wicket.ng.request.Url;
 import org.apache.wicket.request.IRequestCodingStrategy;
 import org.apache.wicket.request.IRequestCycleProcessor;
 import org.apache.wicket.request.RequestParameters;
@@ -35,9 +36,6 @@
  */
 public abstract class Request
 {
-	/** Any Page decoded for this request */
-	private Page page;
-
 	/** the type safe request parameters object for this request. */
 	private RequestParameters requestParameters;
 
@@ -56,7 +54,7 @@
 	 *            The URL to decode
 	 * @return The decoded url
 	 */
-	public String decodeURL(final String url)
+	public Url decodeURL(final Url url)
 	{
 		return url;
 	}
@@ -67,14 +65,6 @@
 	public abstract Locale getLocale();
 
 	/**
-	 * @return Any Page for this request
-	 */
-	public Page getPage()
-	{
-		return page;
-	}
-
-	/**
 	 * Gets a given (query) parameter by name.
 	 * 
 	 * @param key
@@ -191,30 +181,7 @@
 	 * 
 	 * @return The relative request URL for local use
 	 */
-	public abstract String getURL();
-
-	/**
-	 * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT CALL IT.
-	 * 
-	 * @param page
-	 *            The Page for this request
-	 */
-	public void setPage(final Page page)
-	{
-		this.page = page;
-	}
-
-	/**
-	 * A request can say if the current request should generated a new version number. If this
-	 * returns true, then all the changes on a page that has versioning enabled is merged with the
-	 * latest version. Else it will just create a new version.
-	 * 
-	 * @return true if the version must be merged with the previous latest.
-	 */
-	public boolean mergeVersion()
-	{
-		return false;
-	}
+	public abstract Url getUrl();
 
 	/**
 	 * @see java.lang.Object#toString()
@@ -222,7 +189,7 @@
 	@Override
 	public String toString()
 	{
-		return "Request[url=" + getURL() + "]";
+		return "Request[url=" + getUrl() + "]";
 	}
 
 	/**

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/AjaxServerAndClientTimeFilter.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/AjaxServerAndClientTimeFilter.java?rev=887453&r1=887452&r2=887453&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/AjaxServerAndClientTimeFilter.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/AjaxServerAndClientTimeFilter.java Fri Dec  4 23:36:24 2009
@@ -78,7 +78,7 @@
 				"<evaluate><![CDATA[clientTimeVariable = new Date().getTime();]]></evaluate>");
 		}
 		log.info(timeTaken + "ms server time taken for request " +
-			RequestCycle.get().getRequest().getURL() + " response size: " + responseBuffer.length());
+			RequestCycle.get().getRequest().getUrl() + " response size: " + responseBuffer.length());
 		return responseBuffer;
 	}
 

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/ServerAndClientTimeFilter.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/ServerAndClientTimeFilter.java?rev=887453&r1=887452&r2=887453&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/ServerAndClientTimeFilter.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/ServerAndClientTimeFilter.java Fri Dec  4 23:36:24 2009
@@ -77,7 +77,7 @@
 				JavascriptUtils.SCRIPT_CLOSE_TAG + "\n");
 		}
 		log.info(timeTaken + "ms server time taken for request " +
-			RequestCycle.get().getRequest().getURL() + " response size: " + responseBuffer.length());
+			RequestCycle.get().getRequest().getUrl() + " response size: " + responseBuffer.length());
 		return responseBuffer;
 	}
 }
\ No newline at end of file

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/ServerTimeFilter.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/ServerTimeFilter.java?rev=887453&r1=887452&r2=887453&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/ServerTimeFilter.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/ServerTimeFilter.java Fri Dec  4 23:36:24 2009
@@ -58,7 +58,7 @@
 		}
 
 		log.info(timeTaken + "ms server time taken for request " +
-			RequestCycle.get().getRequest().getURL() + " response size: " + responseBuffer.length());
+			RequestCycle.get().getRequest().getUrl() + " response size: " + responseBuffer.length());
 		return responseBuffer;
 	}
 }
\ No newline at end of file

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/Form.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/Form.java?rev=887453&r1=887452&r2=887453&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/Form.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/form/Form.java Fri Dec  4 23:36:24 2009
@@ -39,7 +39,7 @@
 import org.apache.wicket.markup.html.form.validation.IFormValidator;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
-import org.apache.wicket.protocol.http.RequestUtils;
+import org.apache.wicket.ng.request.Url;
 import org.apache.wicket.protocol.http.WebRequest;
 import org.apache.wicket.protocol.http.WicketURLDecoder;
 import org.apache.wicket.request.IRequestCycleProcessor;
@@ -235,7 +235,7 @@
 
 		private final Request realRequest;
 
-		private final String url;
+		private final Url url;
 
 		/**
 		 * Construct.
@@ -243,13 +243,11 @@
 		 * @param realRequest
 		 * @param url
 		 */
-		public FormDispatchRequest(final Request realRequest, final String url)
+		public FormDispatchRequest(final Request realRequest, final Url url)
 		{
 			this.realRequest = realRequest;
 			this.url = realRequest.decodeURL(url);
-
-			String queryString = this.url.substring(this.url.indexOf("?") + 1);
-			RequestUtils.decodeUrlParameters(queryString, params);
+			this.url.putQueryParameters(params);
 		}
 
 		/**
@@ -316,10 +314,10 @@
 		}
 
 		/**
-		 * @see org.apache.wicket.Request#getURL()
+		 * @see org.apache.wicket.Request#getUrl()
 		 */
 		@Override
-		public String getURL()
+		public Url getUrl()
 		{
 			return url;
 		}
@@ -1157,7 +1155,7 @@
 		RequestCycle rc = RequestCycle.get();
 		IRequestCycleProcessor processor = rc.getProcessor();
 		final RequestParameters requestParameters = processor.getRequestCodingStrategy().decode(
-			new FormDispatchRequest(rc.getRequest(), url));
+			new FormDispatchRequest(rc.getRequest(), Url.parse(url)));
 		IRequestTarget rt = processor.resolve(rc, requestParameters);
 		if (rt instanceof IListenerInterfaceRequestTarget)
 		{

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/Url.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/Url.java?rev=887453&r1=887452&r2=887453&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/Url.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ng/request/Url.java Fri Dec  4 23:36:24 2009
@@ -18,8 +18,10 @@
 
 import java.io.Serializable;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 
 import org.apache.wicket.ng.protocol.http.WicketURLDecoder;
 import org.apache.wicket.ng.protocol.http.WicketURLEncoder;
@@ -70,6 +72,11 @@
 	{
 	}
 
+	public Url(String string)
+	{
+
+	}
+
 	/**
 	 * Construct.
 	 * 
@@ -120,6 +127,31 @@
 	}
 
 	/**
+	 * Populates the provided {@code params} map with query parameters
+	 * 
+	 * @deprecated the code should be using proper QuaryParameter oriented method, this is just to
+	 *             help ease migration
+	 */
+	@Deprecated
+	public void putQueryParameters(Map<String, String[]> params)
+	{
+		for (QueryParameter param : getQueryParameters())
+		{
+			String[] array = params.get(param.getName());
+			if (array == null)
+			{
+				array = new String[] { param.getValue() };
+			}
+			else
+			{
+				array = Arrays.copyOf(array, array.length + 1);
+				array[array.length - 1] = param.getValue();
+			}
+			params.put(param.getName(), array);
+		}
+	}
+
+	/**
 	 * Returns whether the URL is absolute.
 	 * 
 	 * @return <code>true</code> if URL is absolute, <code>false</code> otherwise.
@@ -534,4 +566,14 @@
 			}
 		}
 	}
+
+	public void makeAbsolute()
+	{
+		if (isAbsolute())
+		{
+			return;
+		}
+
+		segments.add(null);
+	}
 }

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletResponse.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletResponse.java?rev=887453&r1=887452&r2=887453&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletResponse.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletResponse.java Fri Dec  4 23:36:24 2009
@@ -527,7 +527,7 @@
 
 	/**
 	 * @return url
-	 * @see org.apache.wicket.Request#getURL()
+	 * @see org.apache.wicket.Request#getUrl()
 	 */
 	private String getURL()
 	{

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycle.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycle.java?rev=887453&r1=887452&r2=887453&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycle.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycle.java Fri Dec  4 23:36:24 2009
@@ -273,7 +273,7 @@
 				// we haven't done the redirect yet; record that we will be
 				// doing that now and redirect
 				session.setMetaData(BROWSER_WAS_POLLED_KEY, Boolean.TRUE);
-				String url = "/" + getRequest().getURL();
+				String url = "/" + getRequest().getUrl();
 				throw new RestartResponseException(newBrowserInfoPage(url));
 			}
 			// if we get here, the redirect already has been done; clear

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketServlet.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketServlet.java?rev=887453&r1=887452&r2=887453&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketServlet.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketServlet.java Fri Dec  4 23:36:24 2009
@@ -169,7 +169,7 @@
 		// The ServletWebRequest is created here to avoid code duplication. The getURL call doesn't
 		// depend on anything wicket specific
 		ServletWebRequest req = new ServletWebRequest(request);
-		String url = req.getURL();
+		String url = req.getUrl().toString();
 
 		// WICKET-2185: strip of query string
 		if (url.indexOf('?') != -1)

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/request/CryptedUrlWebRequestCodingStrategy.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/request/CryptedUrlWebRequestCodingStrategy.java?rev=887453&r1=887452&r2=887453&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/request/CryptedUrlWebRequestCodingStrategy.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/request/CryptedUrlWebRequestCodingStrategy.java Fri Dec  4 23:36:24 2009
@@ -26,6 +26,7 @@
 import org.apache.wicket.Request;
 import org.apache.wicket.RequestCycle;
 import org.apache.wicket.WicketRuntimeException;
+import org.apache.wicket.ng.request.Url;
 import org.apache.wicket.protocol.http.PageExpiredException;
 import org.apache.wicket.protocol.http.RequestUtils;
 import org.apache.wicket.protocol.http.WicketURLDecoder;
@@ -114,7 +115,7 @@
 	 */
 	public RequestParameters decode(final Request request)
 	{
-		String url = request.decodeURL(request.getURL());
+		String url = request.decodeURL(request.getUrl()).toString();
 		String decodedQueryParams = decodeURL(url);
 		if (decodedQueryParams != null)
 		{
@@ -395,7 +396,7 @@
 		private final Request request;
 
 		/** The new URL with the 'x' param decoded */
-		private final String url;
+		private final Url url;
 
 		/**
 		 * The new parameter map with the 'x' param removed and the 'new' one included
@@ -447,7 +448,7 @@
 			{
 				urlBuf.append(url.substring(pos2));
 			}
-			this.url = urlBuf.toString();
+			this.url = Url.parse(urlBuf.toString());
 		}
 
 		/**
@@ -562,10 +563,10 @@
 		}
 
 		/**
-		 * @see org.apache.wicket.Request#getURL()
+		 * @see org.apache.wicket.Request#getUrl()
 		 */
 		@Override
-		public String getURL()
+		public Url getUrl()
 		{
 			return url;
 		}

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java?rev=887453&r1=887452&r2=887453&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java Fri Dec  4 23:36:24 2009
@@ -23,10 +23,9 @@
 import javax.servlet.http.HttpServletRequest;
 
 import org.apache.wicket.Application;
-import org.apache.wicket.IRedirectListener;
 import org.apache.wicket.RequestContext;
-import org.apache.wicket.RequestListenerInterface;
 import org.apache.wicket.WicketRuntimeException;
+import org.apache.wicket.ng.request.Url;
 import org.apache.wicket.protocol.http.WebApplication;
 import org.apache.wicket.protocol.http.WebRequest;
 import org.apache.wicket.protocol.http.WicketURLDecoder;
@@ -63,8 +62,6 @@
 	/** Marks this request as an ajax request. */
 	private boolean ajax;
 
-	private boolean forceNewVersion = false;
-
 	/**
 	 * Protected constructor.
 	 * 
@@ -382,10 +379,10 @@
 	}
 
 	/**
-	 * @see org.apache.wicket.Request#getURL()
+	 * @see org.apache.wicket.Request#getUrl()
 	 */
 	@Override
-	public String getURL()
+	public Url getUrl()
 	{
 		/*
 		 * Servlet 2.3 specification :
@@ -419,7 +416,7 @@
 			// Remove leading '/'
 			url = url.substring(1);
 		}
-		return url;
+		return Url.parse(url);
 	}
 
 	/**
@@ -455,39 +452,6 @@
 		this.ajax = ajax;
 	}
 
-	/**
-	 * This method by default calls isAjax(), wicket ajax request do have an header set. And for all
-	 * the ajax request the versioning should be merged with the previous one. And when it sees that
-	 * the current request is a redirect to page request the version will also be merged with the
-	 * previous one because refresh in the browser or redirects to a page shouldn't generate a new
-	 * version.
-	 * 
-	 * @see org.apache.wicket.Request#mergeVersion()
-	 */
-	@Override
-	public boolean mergeVersion()
-	{
-		if (forceNewVersion == true)
-		{
-			return false;
-		}
-		else
-		{
-			RequestListenerInterface intface = getRequestParameters().getInterface();
-			return isAjax() || intface == IRedirectListener.INTERFACE;
-		}
-	}
-
-	/**
-	 * Allows to create new versions even on AJAX request. This can come handly when the AJAX
-	 * response does a real redirect.
-	 * 
-	 * @param forceNewVersion
-	 */
-	public void setForceNewVersion(boolean forceNewVersion)
-	{
-		this.forceNewVersion = forceNewVersion;
-	}
 
 	/**
 	 * @see org.apache.wicket.protocol.http.WebRequest#newMultipartWebRequest(org.apache.wicket.util.lang.Bytes)

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/AbstractRequestCycleProcessor.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/AbstractRequestCycleProcessor.java?rev=887453&r1=887452&r2=887453&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/AbstractRequestCycleProcessor.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/AbstractRequestCycleProcessor.java Fri Dec  4 23:36:24 2009
@@ -36,6 +36,7 @@
 import org.apache.wicket.markup.MarkupException;
 import org.apache.wicket.markup.html.INewBrowserWindowListener;
 import org.apache.wicket.markup.html.pages.ExceptionErrorPage;
+import org.apache.wicket.ng.request.Url;
 import org.apache.wicket.protocol.http.PageExpiredException;
 import org.apache.wicket.protocol.http.WebResponse;
 import org.apache.wicket.protocol.http.request.WebErrorCodeResponseTarget;
@@ -302,12 +303,12 @@
 		// NOTE: we NEED to put the '/' in front as otherwise some versions
 		// of application servers (e.g. Jetty 5.1.x) will fail for requests
 		// like '/mysubdir/myfile.css'
-		String url = requestCycle.getRequest().getURL();
-		if ((url.length() > 0 && url.charAt(0) != '/') || url.length() == 0)
+		Url url = new Url(requestCycle.getRequest().getUrl());
+		if (!url.isAbsolute())
 		{
-			url = '/' + url;
+			url.makeAbsolute();
 		}
-		return new WebExternalResourceRequestTarget(url);
+		return new WebExternalResourceRequestTarget(url.toString());
 	}
 
 	/**
@@ -461,9 +462,6 @@
 		// Does page exist?
 		if (page != null)
 		{
-			// Set page on request
-			requestCycle.getRequest().setPage(page);
-
 			// see whether this resolves to a component call or just the page
 			final String interfaceName = requestParameters.getInterfaceName();
 			if (interfaceName != null)

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java?rev=887453&r1=887452&r2=887453&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java Fri Dec  4 23:36:24 2009
@@ -254,7 +254,6 @@
 			if ((page != null) && page.getClass().equals(pageClassRef.get()))
 			{
 				requestParameters.setInterfaceName(IRedirectListener.INTERFACE.getName());
-				RequestCycle.get().getRequest().setPage(page);
 				return new PageRequestTarget(page);
 			}
 			else

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/resource/ResourceStreamRequestTarget.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/resource/ResourceStreamRequestTarget.java?rev=887453&r1=887452&r2=887453&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/resource/ResourceStreamRequestTarget.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/resource/ResourceStreamRequestTarget.java Fri Dec  4 23:36:24 2009
@@ -227,7 +227,9 @@
 			}
 			else
 			{
-				response.detectContentType(requestCycle, requestCycle.getRequest().getURL());
+				response.detectContentType(requestCycle, requestCycle.getRequest()
+					.getUrl()
+					.toString());
 			}
 		}
 

Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/request/UrlTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/request/UrlTest.java?rev=887453&r1=887452&r2=887453&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/request/UrlTest.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/ng/request/UrlTest.java Fri Dec  4 23:36:24 2009
@@ -18,7 +18,9 @@
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import junit.framework.TestCase;
 
@@ -49,6 +51,18 @@
 		assertEquals(list, url.getQueryParameters());
 	}
 
+	public void testPutParameters()
+	{
+		Url url = Url.parse("foo?color=green&width=50&color=red");
+		Map<String, String[]> params = new HashMap<String, String[]>();
+		url.putQueryParameters(params);
+		assertEquals(2, params.size());
+		assertEquals("50", params.get("width")[0]);
+		assertEquals(2, params.get("color").length);
+		assertEquals("green", params.get("color")[0]);
+		assertEquals("red", params.get("color")[1]);
+	}
+
 	/**
 	 * 
 	 */