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/03/17 18:26:07 UTC

svn commit: r924375 [2/2] - in /wicket/trunk: wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/ wicket-request/ wicket-request/.settings/ wicket-request/src/ wicket-request/src/main/ wicket-request/src/main/jav...

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java?rev=924375&r1=924374&r2=924375&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java Wed Mar 17 17:26:05 2010
@@ -41,6 +41,7 @@ import org.apache.wicket.markup.parser.f
 import org.apache.wicket.markup.repeater.AbstractRepeater;
 import org.apache.wicket.protocol.http.WebRequest;
 import org.apache.wicket.protocol.http.WebResponse;
+import org.apache.wicket.request.IRequestCycle;
 import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.request.Url;
 import org.apache.wicket.request.component.IRequestablePage;
@@ -439,7 +440,7 @@ public class AjaxRequestTarget implement
 	/**
 	 * @see org.apache.wicket.request.IRequestHandler#detach(org.apache.wicket.request.cycle.RequestCycle)
 	 */
-	public void detach(final RequestCycle requestCycle)
+	public void detach(final IRequestCycle requestCycle)
 	{
 		// detach the page if it was updated
 		if (markupIdToComponent.size() > 0)
@@ -529,12 +530,14 @@ public class AjaxRequestTarget implement
 	/**
 	 * @see org.apache.wicket.request.IRequestHandler#respond(org.apache.wicket.request.cycle.RequestCycle)
 	 */
-	public final void respond(final RequestCycle requestCycle)
+	public final void respond(final IRequestCycle requestCycle)
 	{
-		Url oldBaseURL = requestCycle.getUrlRenderer().getBaseUrl();
-		Url baseURL = Url.parse(((WebRequest)requestCycle.getRequest()).getHeader("Wicket-Ajax-BaseURL"));
+		RequestCycle rc = (RequestCycle)requestCycle;
+		Url oldBaseURL = rc.getUrlRenderer().getBaseUrl();
+		WebRequest request = (WebRequest)requestCycle.getRequest();
+		Url baseURL = Url.parse(request.getHeader("Wicket-Ajax-BaseURL"), request.getCharset());
 
-		requestCycle.getUrlRenderer().setBaseUrl(baseURL);
+		rc.getUrlRenderer().setBaseUrl(baseURL);
 
 		final WebResponse response = (WebResponse)requestCycle.getResponse();
 
@@ -543,7 +546,7 @@ public class AjaxRequestTarget implement
 			// the page itself has been added to the request target, we simply issue a redirect back
 			// to the page
 			IRequestHandler handler = new RenderPageRequestHandler(new PageProvider(page));
-			final String url = requestCycle.renderUrlFor(handler).toString();
+			final String url = rc.renderUrlFor(handler).toString();
 			response.sendRedirect(url);
 			return;
 		}
@@ -604,7 +607,7 @@ public class AjaxRequestTarget implement
 
 		response.write("</ajax-response>");
 
-		requestCycle.getUrlRenderer().setBaseUrl(oldBaseURL);
+		rc.getUrlRenderer().setBaseUrl(oldBaseURL);
 	}
 
 	/**

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/AbstractHeaderContributor.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/AbstractHeaderContributor.java?rev=924375&r1=924374&r2=924375&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/AbstractHeaderContributor.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/behavior/AbstractHeaderContributor.java Wed Mar 17 17:26:05 2010
@@ -59,6 +59,7 @@ public abstract class AbstractHeaderCont
 			return location;
 		}
 
-		return RequestCycle.get().getUrlRenderer().renderUrl(Url.parse(location));
+		RequestCycle rc = RequestCycle.get();
+		return rc.getUrlRenderer().renderUrl(Url.parse(location, rc.getRequest().getCharset()));
 	}
 }

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=924375&r1=924374&r2=924375&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 Wed Mar 17 17:26:05 2010
@@ -1054,7 +1054,7 @@ public class Form<T> extends WebMarkupCo
 	 */
 	private void dispatchEvent(final Page page, final String url)
 	{
-		Url parsed = Url.parse(url);
+		Url parsed = Url.parse(url, getRequest().getCharset());
 		IRequestHandler handler = getApplication().getRootRequestMapper().mapRequest(
 			getRequest().requestWithUrl(parsed));
 
@@ -1651,7 +1651,7 @@ public class Form<T> extends WebMarkupCo
 	 */
 	private String recode(String s)
 	{
-		String un = WicketURLDecoder.QUERY_INSTANCE.decode(s);
+		String un = WicketURLDecoder.QUERY_INSTANCE.decode(s, getRequest().getCharset());
 		return Strings.escapeMarkup(un).toString();
 	}
 

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/link/DownloadLink.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/link/DownloadLink.java?rev=924375&r1=924374&r2=924375&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/link/DownloadLink.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/link/DownloadLink.java Wed Mar 17 17:26:05 2010
@@ -21,7 +21,7 @@ import java.io.File;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.protocol.http.WicketURLEncoder;
-import org.apache.wicket.request.cycle.RequestCycle;
+import org.apache.wicket.request.IRequestCycle;
 import org.apache.wicket.request.handler.resource.ResourceStreamRequestHandler;
 import org.apache.wicket.request.resource.ContentDisposition;
 import org.apache.wicket.util.resource.FileResourceStream;
@@ -142,7 +142,7 @@ public class DownloadLink extends Link<F
 				" failed to retrieve a File object from model");
 		}
 		final String fn = WicketURLEncoder.QUERY_INSTANCE.encode((fileName != null) ? fileName
-			: file.getName());
+			: file.getName(), getRequest().getCharset());
 
 
 		IResourceStream resourceStream = new FileResourceStream(
@@ -151,7 +151,7 @@ public class DownloadLink extends Link<F
 			new ResourceStreamRequestHandler(resourceStream)
 			{
 				@Override
-				public void respond(RequestCycle requestCycle)
+				public void respond(IRequestCycle requestCycle)
 				{
 					super.respond(requestCycle);
 

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/mock/MockWebRequest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/mock/MockWebRequest.java?rev=924375&r1=924374&r2=924375&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/mock/MockWebRequest.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/mock/MockWebRequest.java Wed Mar 17 17:26:05 2010
@@ -16,6 +16,7 @@
  */
 package org.apache.wicket.mock;
 
+import java.nio.charset.Charset;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -242,4 +243,10 @@ public class MockWebRequest extends WebR
 	{
 		return postRequestParameters;
 	}
+
+	@Override
+	public Charset getCharset()
+	{
+		return Charset.forName("UTF-8");
+	}
 }

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/RequestUtils.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/RequestUtils.java?rev=924375&r1=924374&r2=924375&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/RequestUtils.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/RequestUtils.java Wed Mar 17 17:26:05 2010
@@ -16,15 +16,17 @@
  */
 package org.apache.wicket.protocol.http;
 
+import java.nio.charset.Charset;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.wicket.Application;
 import org.apache.wicket.request.component.PageParameters;
+import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.util.string.Strings;
-import org.apache.wicket.util.value.ValueMap;
 
 /**
  * Wicket Http specific utilities class.
@@ -41,34 +43,6 @@ public final class RequestUtils
 	 * @param params
 	 *            parameters map to write the found key/ value pairs to
 	 */
-	public static void decodeParameters(String queryString, ValueMap params)
-	{
-		final String[] paramTuples = queryString.split("&");
-		for (int t = 0; t < paramTuples.length; t++)
-		{
-			final String[] bits = paramTuples[t].split("=");
-			if (bits.length == 2)
-			{
-				params.add(WicketURLDecoder.QUERY_INSTANCE.decode(bits[0]),
-					WicketURLDecoder.QUERY_INSTANCE.decode(bits[1]));
-			}
-			else
-			{
-				params.add(WicketURLDecoder.QUERY_INSTANCE.decode(bits[0]), "");
-			}
-		}
-	}
-
-	/**
-	 * Decode the provided queryString as a series of key/ value pairs and set them in the provided
-	 * value map.
-	 * 
-	 * @param queryString
-	 *            string to decode, uses '&' to separate parameters and '=' to separate key from
-	 *            value
-	 * @param params
-	 *            parameters map to write the found key/ value pairs to
-	 */
 	public static void decodeParameters(String queryString, PageParameters params)
 	{
 		final String[] paramTuples = queryString.split("&");
@@ -77,57 +51,60 @@ public final class RequestUtils
 			final String[] bits = paramTuples[t].split("=");
 			if (bits.length == 2)
 			{
-				params.addNamedParameter(WicketURLDecoder.QUERY_INSTANCE.decode(bits[0]),
-					WicketURLDecoder.QUERY_INSTANCE.decode(bits[1]));
+				params.addNamedParameter(WicketURLDecoder.QUERY_INSTANCE.decode(bits[0],
+					getCurrentCharset()), WicketURLDecoder.QUERY_INSTANCE.decode(bits[1],
+					getCurrentCharset()));
 			}
 			else
 			{
-				params.addNamedParameter(WicketURLDecoder.QUERY_INSTANCE.decode(bits[0]), "");
+				params.addNamedParameter(WicketURLDecoder.QUERY_INSTANCE.decode(bits[0],
+					getCurrentCharset()), "");
 			}
 		}
 	}
 
-
-	/**
-	 * decores url parameters form <code>queryString</code> into <code>parameters</code> map
-	 * 
-	 * @param queryString
-	 * @param parameters
-	 */
-	public static void decodeUrlParameters(String queryString, Map<String, String[]> parameters)
-	{
-		Map<String, List<String>> temp = new HashMap<String, List<String>>();
-		final String[] paramTuples = queryString.split("&");
-		for (int t = 0; t < paramTuples.length; t++)
-		{
-			final String[] bits = paramTuples[t].split("=");
-			final String key;
-			final String value;
-			key = WicketURLDecoder.QUERY_INSTANCE.decode(bits[0]);
-			if (bits.length == 2)
-			{
-				value = WicketURLDecoder.QUERY_INSTANCE.decode(bits[1]);
-			}
-			else
-			{
-				value = "";
-			}
-			List<String> l = temp.get(key);
-			if (l == null)
-			{
-				l = new ArrayList<String>();
-				temp.put(key, l);
-			}
-			l.add(value);
-		}
-
-		for (Map.Entry<String, List<String>> entry : temp.entrySet())
-		{
-			String s[] = new String[entry.getValue().size()];
-			entry.getValue().toArray(s);
-			parameters.put(entry.getKey(), s);
-		}
-	}
+// TODO review
+// NO LONGER USED SINCE WE HAVE URL OBJECT
+// /**
+// * decores url parameters form <code>queryString</code> into <code>parameters</code> map
+// *
+// * @param queryString
+// * @param parameters
+// */
+// public static void decodeUrlParameters(String queryString, Map<String, String[]> parameters)
+// {
+// Map<String, List<String>> temp = new HashMap<String, List<String>>();
+// final String[] paramTuples = queryString.split("&");
+// for (int t = 0; t < paramTuples.length; t++)
+// {
+// final String[] bits = paramTuples[t].split("=");
+// final String key;
+// final String value;
+// key = WicketURLDecoder.QUERY_INSTANCE.decode(bits[0]);
+// if (bits.length == 2)
+// {
+// value = WicketURLDecoder.QUERY_INSTANCE.decode(bits[1]);
+// }
+// else
+// {
+// value = "";
+// }
+// List<String> l = temp.get(key);
+// if (l == null)
+// {
+// l = new ArrayList<String>();
+// temp.put(key, l);
+// }
+// l.add(value);
+// }
+//
+// for (Map.Entry<String, List<String>> entry : temp.entrySet())
+// {
+// String s[] = new String[entry.getValue().size()];
+// entry.getValue().toArray(s);
+// parameters.put(entry.getKey(), s);
+// }
+// }
 
 	/**
 	 * Remove occurrences of ".." from the path
@@ -224,4 +201,47 @@ public final class RequestUtils
 		}
 		return result.toString();
 	}
+
+	private static Charset getDefaultCharset()
+	{
+		String charsetName = null;
+
+		Application application = Application.get();
+		if (application != null)
+		{
+			charsetName = application.getRequestCycleSettings().getResponseRequestEncoding();
+		}
+		if (Strings.isEmpty(charsetName))
+		{
+			charsetName = "UTF-8";
+		}
+		return Charset.forName(charsetName);
+	}
+
+	private static Charset getCurrentCharset()
+	{
+		return RequestCycle.get().getRequest().getCharset();
+	}
+
+	public static Charset getCharset(HttpServletRequest request)
+	{
+		String charsetName = null;
+		if (request != null)
+		{
+			charsetName = request.getCharacterEncoding();
+		}
+		if (Strings.isEmpty(charsetName))
+		{
+			Application application = Application.get();
+			if (application != null)
+			{
+				charsetName = application.getRequestCycleSettings().getResponseRequestEncoding();
+			}
+		}
+		if (Strings.isEmpty(charsetName))
+		{
+			charsetName = "UTF-8";
+		}
+		return Charset.forName(charsetName);
+	}
 }

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequest.java?rev=924375&r1=924374&r2=924375&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequest.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequest.java Wed Mar 17 17:26:05 2010
@@ -16,6 +16,7 @@
  */
 package org.apache.wicket.protocol.http;
 
+import java.nio.charset.Charset;
 import java.util.Date;
 import java.util.List;
 import java.util.Locale;
@@ -170,6 +171,12 @@ public abstract class WebRequest extends
 			{
 				return WebRequest.this.getHeaders(name);
 			}
+
+			@Override
+			public Charset getCharset()
+			{
+				return WebRequest.this.getCharset();
+			}
 		};
 	}
 

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequest.java?rev=924375&r1=924374&r2=924375&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequest.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequest.java Wed Mar 17 17:26:05 2010
@@ -24,6 +24,7 @@ import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.OutputStream;
 import java.io.UnsupportedEncodingException;
+import java.nio.charset.Charset;
 import java.security.Principal;
 import java.text.DateFormat;
 import java.text.ParseException;
@@ -153,7 +154,7 @@ public class MockHttpServletRequest impl
 
 	private String authType;
 
-	private String characterEncoding;
+	private String characterEncoding = "UTF-8";
 
 	private final ServletContext context;
 
@@ -736,12 +737,14 @@ public class MockHttpServletRequest impl
 				final String value = getParameter(name);
 				if (name != null)
 				{
-					buf.append(WicketURLEncoder.QUERY_INSTANCE.encode(name));
+					buf.append(WicketURLEncoder.QUERY_INSTANCE.encode(name,
+						Charset.forName(getCharacterEncoding())));
 				}
 				buf.append('=');
 				if (value != null)
 				{
-					buf.append(WicketURLEncoder.QUERY_INSTANCE.encode(value));
+					buf.append(WicketURLEncoder.QUERY_INSTANCE.encode(value,
+						Charset.forName(getCharacterEncoding())));
 				}
 				if (iterator.hasNext())
 				{
@@ -1199,7 +1202,8 @@ public class MockHttpServletRequest impl
 	 */
 	public void setPath(final String path)
 	{
-		this.path = WicketURLDecoder.PATH_INSTANCE.decode(path);
+		this.path = WicketURLDecoder.PATH_INSTANCE.decode(path,
+			Charset.forName(getCharacterEncoding()));
 	}
 
 	/**
@@ -1240,7 +1244,8 @@ public class MockHttpServletRequest impl
 			String queryString = url.substring(index + 1);
 
 			parameters.clear();
-			for (QueryParameter parameter : Url.parse("?" + queryString).getQueryParameters())
+			for (QueryParameter parameter : Url.parse("?" + queryString,
+				Charset.forName(getCharacterEncoding())).getQueryParameters())
 			{
 				addParameter(parameter.getName(), parameter.getValue());
 			}
@@ -1567,7 +1572,7 @@ public class MockHttpServletRequest impl
 	{
 		String url = getRequestURI();
 		url += "?" + getQueryString();
-		return Url.parse(url);
+		return Url.parse(url, Charset.forName(getCharacterEncoding()));
 	}
 
 	public MockRequestParameters getPostParameters()

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebErrorCodeResponseHandler.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebErrorCodeResponseHandler.java?rev=924375&r1=924374&r2=924375&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebErrorCodeResponseHandler.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebErrorCodeResponseHandler.java Wed Mar 17 17:26:05 2010
@@ -17,8 +17,8 @@
 package org.apache.wicket.protocol.http.request;
 
 import org.apache.wicket.protocol.http.WebResponse;
+import org.apache.wicket.request.IRequestCycle;
 import org.apache.wicket.request.IRequestHandler;
-import org.apache.wicket.request.cycle.RequestCycle;
 
 
 /**
@@ -70,7 +70,7 @@ public final class WebErrorCodeResponseH
 	 * 
 	 * @see org.apache.wicket.request.IRequestHandler#respond(org.apache.wicket.request.cycle.RequestCycle)
 	 */
-	public void respond(RequestCycle requestCycle)
+	public void respond(IRequestCycle requestCycle)
 	{
 		WebResponse webResponse = (WebResponse)requestCycle.getResponse();
 		webResponse.sendError(errorCode, message);
@@ -99,7 +99,7 @@ public final class WebErrorCodeResponseH
 	/**
 	 * @see org.apache.wicket.request.IRequestHandler#detach(org.apache.wicket.request.cycle.RequestCycle)
 	 */
-	public void detach(RequestCycle requestCycle)
+	public void detach(IRequestCycle requestCycle)
 	{
 	}
 

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebExternalResourceRequestTarget.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebExternalResourceRequestTarget.java?rev=924375&r1=924374&r2=924375&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebExternalResourceRequestTarget.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/request/WebExternalResourceRequestTarget.java Wed Mar 17 17:26:05 2010
@@ -16,7 +16,7 @@
  */
 package org.apache.wicket.protocol.http.request;
 
-import org.apache.wicket.request.cycle.RequestCycle;
+import org.apache.wicket.request.IRequestCycle;
 import org.apache.wicket.request.handler.resource.ResourceStreamRequestHandler;
 import org.apache.wicket.request.resource.ContentDisposition;
 import org.apache.wicket.util.resource.WebExternalResourceStream;
@@ -72,7 +72,7 @@ public class WebExternalResourceRequestT
 	 * @see org.apache.wicket.request.IRequestHandler#detach(org.apache.wicket.request.cycle.RequestCycle)
 	 */
 	@Override
-	public void detach(RequestCycle requestCycle)
+	public void detach(IRequestCycle requestCycle)
 	{
 	}
 

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=924375&r1=924374&r2=924375&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 Wed Mar 17 17:26:05 2010
@@ -18,6 +18,7 @@ package org.apache.wicket.protocol.http.
 
 import java.io.BufferedReader;
 import java.io.IOException;
+import java.nio.charset.Charset;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -32,6 +33,7 @@ import javax.servlet.ServletRequest;
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 
+import org.apache.wicket.protocol.http.RequestUtils;
 import org.apache.wicket.protocol.http.WebRequest;
 import org.apache.wicket.request.IRequestParameters;
 import org.apache.wicket.request.IWritableRequestParameters;
@@ -116,7 +118,7 @@ public class ServletWebRequest extends W
 			url.append(query);
 		}
 
-		return Url.parse(Strings.stripJSessionId(url.toString()));
+		return Url.parse(Strings.stripJSessionId(url.toString()), getCharset());
 	}
 
 	protected String getFilterPrefix()
@@ -200,7 +202,7 @@ public class ServletWebRequest extends W
 
 			if (!Strings.isEmpty(value))
 			{
-				final Url url = Url.parse("?" + value);
+				final Url url = Url.parse("?" + value, getCharset());
 				for (final QueryParameter q : url.getQueryParameters())
 				{
 					List<StringValue> list = postParameters.get(q.getName());
@@ -345,11 +347,17 @@ public class ServletWebRequest extends W
 	public String getPrefixToContextPath()
 	{
 		PrependingStringBuffer buffer = new PrependingStringBuffer();
-		Url filterPrefixUrl = Url.parse(filterPrefix);
+		Url filterPrefixUrl = Url.parse(filterPrefix, getCharset());
 		for (int i = 0; i < filterPrefixUrl.getSegments().size() - 1; ++i)
 		{
 			buffer.prepend("../");
 		}
 		return buffer.toString();
 	}
+
+	@Override
+	public Charset getCharset()
+	{
+		return RequestUtils.getCharset(httpServletRequest);
+	}
 }

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebResponse.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebResponse.java?rev=924375&r1=924374&r2=924375&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebResponse.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebResponse.java Wed Mar 17 17:26:05 2010
@@ -17,6 +17,7 @@
 package org.apache.wicket.protocol.http.servlet;
 
 import java.io.IOException;
+import java.nio.charset.Charset;
 
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
@@ -207,8 +208,9 @@ public class ServletWebResponse extends 
 		}
 		else
 		{
-			Url current = Url.parse(httpServletRequest.getRequestURI());
-			Url append = Url.parse(url);
+			Charset charset = Charset.forName(httpServletRequest.getCharacterEncoding());
+			Url current = Url.parse(httpServletRequest.getRequestURI(), charset);
+			Url append = Url.parse(url, charset);
 			current.concatSegments(append.getSegments());
 			Url result = new Url(current.getSegments(), append.getQueryParameters());
 			return getAbsolutePrefix() + result.toString();

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java?rev=924375&r1=924374&r2=924375&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java Wed Mar 17 17:26:05 2010
@@ -26,6 +26,7 @@ import org.apache.wicket.Session;
 import org.apache.wicket.ThreadContext;
 import org.apache.wicket.protocol.http.request.WebClientInfo;
 import org.apache.wicket.request.ClientInfo;
+import org.apache.wicket.request.IRequestCycle;
 import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.request.IRequestMapper;
 import org.apache.wicket.request.Request;
@@ -58,7 +59,7 @@ import org.slf4j.LoggerFactory;
  * @author Matej Knopp
  * @author igor.vaynberg
  */
-public class RequestCycle extends RequestHandlerStack
+public class RequestCycle extends RequestHandlerStack implements IRequestCycle
 {
 	private static final Logger log = LoggerFactory.getLogger(RequestCycle.class);
 

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/ComponentRenderingRequestHandler.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/ComponentRenderingRequestHandler.java?rev=924375&r1=924374&r2=924375&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/ComponentRenderingRequestHandler.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/ComponentRenderingRequestHandler.java Wed Mar 17 17:26:05 2010
@@ -17,8 +17,8 @@
 package org.apache.wicket.request.handler;
 
 import org.apache.wicket.Component;
+import org.apache.wicket.request.IRequestCycle;
 import org.apache.wicket.request.component.IRequestableComponent;
-import org.apache.wicket.request.cycle.RequestCycle;
 
 /**
  * Request handler that renders a component
@@ -39,12 +39,12 @@ public class ComponentRenderingRequestHa
 		return component;
 	}
 
-	public void detach(RequestCycle requestCycle)
+	public void detach(IRequestCycle requestCycle)
 	{
 		component.getPage().detach();
 	}
 
-	public void respond(RequestCycle requestCycle)
+	public void respond(IRequestCycle requestCycle)
 	{
 		component.render();
 	}

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/basic/AbortRequestHandler.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/basic/AbortRequestHandler.java?rev=924375&r1=924374&r2=924375&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/basic/AbortRequestHandler.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/basic/AbortRequestHandler.java Wed Mar 17 17:26:05 2010
@@ -16,17 +16,17 @@
  */
 package org.apache.wicket.request.handler.basic;
 
+import org.apache.wicket.request.IRequestCycle;
 import org.apache.wicket.request.IRequestHandler;
-import org.apache.wicket.request.cycle.RequestCycle;
 
 public class AbortRequestHandler implements IRequestHandler
 {
 
-	public void detach(RequestCycle requestCycle)
+	public void detach(IRequestCycle requestCycle)
 	{
 	}
 
-	public void respond(RequestCycle requestCycle)
+	public void respond(IRequestCycle requestCycle)
 	{
 		// TODO
 	}

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/basic/EmptyAjaxRequestHandler.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/basic/EmptyAjaxRequestHandler.java?rev=924375&r1=924374&r2=924375&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/basic/EmptyAjaxRequestHandler.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/basic/EmptyAjaxRequestHandler.java Wed Mar 17 17:26:05 2010
@@ -18,8 +18,8 @@ package org.apache.wicket.request.handle
 
 import org.apache.wicket.Application;
 import org.apache.wicket.protocol.http.WebResponse;
+import org.apache.wicket.request.IRequestCycle;
 import org.apache.wicket.request.IRequestHandler;
-import org.apache.wicket.request.cycle.RequestCycle;
 
 /**
  * The empty AJAX request target does output an empty AJAX response.
@@ -54,7 +54,7 @@ public final class EmptyAjaxRequestHandl
 	/**
 	 * @see org.apache.wicket.request.IRequestHandler#respond(org.apache.wicket.request.cycle.RequestCycle)
 	 */
-	public void respond(RequestCycle requestCycle)
+	public void respond(IRequestCycle requestCycle)
 	{
 		WebResponse response = (WebResponse)requestCycle.getResponse();
 		final String encoding = Application.get()
@@ -77,7 +77,7 @@ public final class EmptyAjaxRequestHandl
 	/**
 	 * @see org.apache.wicket.request.IRequestHandler#detach(org.apache.wicket.request.cycle.RequestCycle)
 	 */
-	public void detach(RequestCycle requestCycle)
+	public void detach(IRequestCycle requestCycle)
 	{
 	}
 

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/basic/EmptyRequestHandler.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/basic/EmptyRequestHandler.java?rev=924375&r1=924374&r2=924375&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/basic/EmptyRequestHandler.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/basic/EmptyRequestHandler.java Wed Mar 17 17:26:05 2010
@@ -16,8 +16,8 @@
  */
 package org.apache.wicket.request.handler.basic;
 
+import org.apache.wicket.request.IRequestCycle;
 import org.apache.wicket.request.IRequestHandler;
-import org.apache.wicket.request.cycle.RequestCycle;
 
 /**
  * The empty request target does nothing in itself but instead relies on some other source to
@@ -55,14 +55,14 @@ public final class EmptyRequestHandler i
 	 * 
 	 * @see org.apache.wicket.request.IRequestHandler#respond(org.apache.wicket.request.cycle.RequestCycle)
 	 */
-	public void respond(RequestCycle requestCycle)
+	public void respond(IRequestCycle requestCycle)
 	{
 	}
 
 	/**
 	 * @see org.apache.wicket.request.IRequestHandler#detach(org.apache.wicket.request.cycle.RequestCycle)
 	 */
-	public void detach(RequestCycle requestCycle)
+	public void detach(IRequestCycle requestCycle)
 	{
 	}
 

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/basic/RedirectRequestHandler.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/basic/RedirectRequestHandler.java?rev=924375&r1=924374&r2=924375&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/basic/RedirectRequestHandler.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/basic/RedirectRequestHandler.java Wed Mar 17 17:26:05 2010
@@ -20,6 +20,7 @@ import org.apache.wicket.RequestContext;
 import org.apache.wicket.markup.html.pages.RedirectPage;
 import org.apache.wicket.protocol.http.WebResponse;
 import org.apache.wicket.protocol.http.portlet.PortletRequestContext;
+import org.apache.wicket.request.IRequestCycle;
 import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.util.string.UrlUtils;
@@ -60,7 +61,7 @@ public class RedirectRequestHandler impl
 	/**
 	 * @see org.apache.wicket.request.IRequestHandler#detach(org.apache.wicket.request.cycle.RequestCycle)
 	 */
-	public void detach(RequestCycle requestCycle)
+	public void detach(IRequestCycle requestCycle)
 	{
 	}
 
@@ -69,7 +70,7 @@ public class RedirectRequestHandler impl
 	 * 
 	 * @see org.apache.wicket.request.IRequestHandler#respond(org.apache.wicket.request.cycle.RequestCycle)
 	 */
-	public void respond(RequestCycle requestCycle)
+	public void respond(IRequestCycle requestCycle)
 	{
 		WebResponse response = (WebResponse)requestCycle.getResponse();
 
@@ -85,7 +86,7 @@ public class RedirectRequestHandler impl
 			else
 			{
 				String location = UrlUtils.rewriteToContextRelative(redirectUrl.substring(1),
-					requestCycle);
+					(RequestCycle)requestCycle);
 
 				// IE does not understand "./" in a path, just "." is okay.
 				if (location.startsWith("./"))

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/basic/StringRequestHandler.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/basic/StringRequestHandler.java?rev=924375&r1=924374&r2=924375&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/basic/StringRequestHandler.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/basic/StringRequestHandler.java Wed Mar 17 17:26:05 2010
@@ -21,8 +21,8 @@ import java.io.IOException;
 import org.apache.wicket.Application;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.protocol.http.WebResponse;
+import org.apache.wicket.request.IRequestCycle;
 import org.apache.wicket.request.IRequestHandler;
-import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.util.string.Strings;
 
 
@@ -101,7 +101,7 @@ public class StringRequestHandler implem
 	 * 
 	 * @see org.apache.wicket.request.IRequestHandler#respond(org.apache.wicket.request.cycle.RequestCycle)
 	 */
-	public void respond(RequestCycle requestCycle)
+	public void respond(IRequestCycle requestCycle)
 	{
 		// Get servlet response to use when responding with resource
 		final WebResponse response = (WebResponse)requestCycle.getResponse();
@@ -121,7 +121,7 @@ public class StringRequestHandler implem
 	/**
 	 * @see org.apache.wicket.request.IRequestHandler#detach(org.apache.wicket.request.cycle.RequestCycle)
 	 */
-	public void detach(RequestCycle requestCycle)
+	public void detach(IRequestCycle requestCycle)
 	{
 	}
 

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/impl/BookmarkableListenerInterfaceRequestHandler.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/impl/BookmarkableListenerInterfaceRequestHandler.java?rev=924375&r1=924374&r2=924375&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/impl/BookmarkableListenerInterfaceRequestHandler.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/impl/BookmarkableListenerInterfaceRequestHandler.java Wed Mar 17 17:26:05 2010
@@ -17,10 +17,10 @@
 package org.apache.wicket.request.handler.impl;
 
 import org.apache.wicket.RequestListenerInterface;
+import org.apache.wicket.request.IRequestCycle;
 import org.apache.wicket.request.component.IRequestableComponent;
 import org.apache.wicket.request.component.IRequestablePage;
 import org.apache.wicket.request.component.PageParameters;
-import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.request.handler.IComponentRequestHandler;
 import org.apache.wicket.request.handler.IPageAndComponentProvider;
 import org.apache.wicket.request.handler.IPageRequestHandler;
@@ -111,7 +111,7 @@ public class BookmarkableListenerInterfa
 	/**
 	 * @see org.apache.org.apache.wicket.request.IRequestHandler#detach(org.apache.wicket.request.cycle.RequestCycle)
 	 */
-	public void detach(RequestCycle requestCycle)
+	public void detach(IRequestCycle requestCycle)
 	{
 		pageComponentProvider.detach();
 	}
@@ -140,7 +140,7 @@ public class BookmarkableListenerInterfa
 	/**
 	 * @see org.apache.org.apache.wicket.request.IRequestHandler#respond(org.apache.wicket.request.cycle.RequestCycle)
 	 */
-	public void respond(RequestCycle requestCycle)
+	public void respond(IRequestCycle requestCycle)
 	{
 		// nothing to do here, this handler is only used to generate URLs
 	}

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/impl/BookmarkablePageRequestHandler.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/impl/BookmarkablePageRequestHandler.java?rev=924375&r1=924374&r2=924375&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/impl/BookmarkablePageRequestHandler.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/impl/BookmarkablePageRequestHandler.java Wed Mar 17 17:26:05 2010
@@ -16,9 +16,9 @@
  */
 package org.apache.wicket.request.handler.impl;
 
+import org.apache.wicket.request.IRequestCycle;
 import org.apache.wicket.request.component.IRequestablePage;
 import org.apache.wicket.request.component.PageParameters;
-import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.request.handler.IPageClassRequestHandler;
 import org.apache.wicket.request.handler.IPageProvider;
 import org.apache.wicket.util.lang.Checks;
@@ -65,7 +65,7 @@ public class BookmarkablePageRequestHand
 	/**
 	 * @see org.apache.org.apache.wicket.request.IRequestHandler#respond(org.apache.wicket.request.cycle.RequestCycle)
 	 */
-	public void respond(RequestCycle requestCycle)
+	public void respond(IRequestCycle requestCycle)
 	{
 		// not used as BookmarkablePageRequestHandler is only used when generating URLs.
 		// However URL will never be resolved to BookmarkablePageRequestTarget
@@ -74,7 +74,7 @@ public class BookmarkablePageRequestHand
 	/**
 	 * @see org.apache.org.apache.wicket.request.IRequestHandler#detach(org.apache.wicket.request.cycle.RequestCycle)
 	 */
-	public void detach(RequestCycle requestCycle)
+	public void detach(IRequestCycle requestCycle)
 	{
 	}
 }

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/impl/BufferedResponseRequestHandler.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/impl/BufferedResponseRequestHandler.java?rev=924375&r1=924374&r2=924375&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/impl/BufferedResponseRequestHandler.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/impl/BufferedResponseRequestHandler.java Wed Mar 17 17:26:05 2010
@@ -18,8 +18,8 @@ package org.apache.wicket.request.handle
 
 import org.apache.wicket.protocol.http.BufferedWebResponse;
 import org.apache.wicket.protocol.http.WebResponse;
+import org.apache.wicket.request.IRequestCycle;
 import org.apache.wicket.request.IRequestHandler;
-import org.apache.wicket.request.cycle.RequestCycle;
 
 /**
  * Handler that renders a {@link BufferedWebResponse}.
@@ -43,14 +43,14 @@ public class BufferedResponseRequestHand
 	/**
 	 * @see org.apache.org.apache.wicket.request.IRequestHandler#detach(org.apache.wicket.request.cycle.RequestCycle)
 	 */
-	public void detach(RequestCycle requestCycle)
+	public void detach(IRequestCycle requestCycle)
 	{
 	}
 
 	/**
 	 * @see org.apache.org.apache.wicket.request.IRequestHandler#respond(org.apache.wicket.request.cycle.RequestCycle)
 	 */
-	public void respond(RequestCycle requestCycle)
+	public void respond(IRequestCycle requestCycle)
 	{
 		bufferedWebResponse.writeTo((WebResponse)requestCycle.getResponse());
 	}

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/impl/ListenerInterfaceRequestHandler.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/impl/ListenerInterfaceRequestHandler.java?rev=924375&r1=924374&r2=924375&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/impl/ListenerInterfaceRequestHandler.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/impl/ListenerInterfaceRequestHandler.java Wed Mar 17 17:26:05 2010
@@ -20,10 +20,10 @@ import org.apache.wicket.RequestListener
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.behavior.IBehavior;
 import org.apache.wicket.protocol.http.WebRequest;
+import org.apache.wicket.request.IRequestCycle;
 import org.apache.wicket.request.component.IRequestableComponent;
 import org.apache.wicket.request.component.IRequestablePage;
 import org.apache.wicket.request.component.PageParameters;
-import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.request.handler.IComponentRequestHandler;
 import org.apache.wicket.request.handler.IPageAndComponentProvider;
 import org.apache.wicket.request.handler.IPageRequestHandler;
@@ -113,7 +113,7 @@ public class ListenerInterfaceRequestHan
 	/**
 	 * @see org.apache.org.apache.wicket.request.IRequestHandler#detach(org.apache.wicket.request.cycle.RequestCycle)
 	 */
-	public void detach(RequestCycle requestCycle)
+	public void detach(IRequestCycle requestCycle)
 	{
 		pageComponentProvider.detach();
 	}
@@ -141,7 +141,7 @@ public class ListenerInterfaceRequestHan
 	/**
 	 * @see org.apache.org.apache.wicket.request.IRequestHandler#respond(org.apache.wicket.request.cycle.RequestCycle)
 	 */
-	public void respond(final RequestCycle requestCycle)
+	public void respond(final IRequestCycle requestCycle)
 	{
 		if (getComponent().getPage() == getPage())
 		{

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/impl/RenderPageRequestHandler.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/impl/RenderPageRequestHandler.java?rev=924375&r1=924374&r2=924375&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/impl/RenderPageRequestHandler.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/impl/RenderPageRequestHandler.java Wed Mar 17 17:26:05 2010
@@ -17,6 +17,7 @@
 package org.apache.wicket.request.handler.impl;
 
 import org.apache.wicket.Application;
+import org.apache.wicket.request.IRequestCycle;
 import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.request.component.IRequestablePage;
 import org.apache.wicket.request.component.PageParameters;
@@ -128,7 +129,7 @@ public class RenderPageRequestHandler im
 	/**
 	 * @see org.apache.org.apache.wicket.request.IRequestHandler#detach(org.apache.wicket.request.cycle.RequestCycle)
 	 */
-	public void detach(RequestCycle requestCycle)
+	public void detach(IRequestCycle requestCycle)
 	{
 		pageProvider.detach();
 	}
@@ -144,8 +145,8 @@ public class RenderPageRequestHandler im
 	/**
 	 * @see org.apache.org.apache.wicket.request.IRequestHandler#respond(org.apache.wicket.request.cycle.RequestCycle)
 	 */
-	public void respond(RequestCycle requestCycle)
+	public void respond(IRequestCycle requestCycle)
 	{
-		Application.get().getPageRendererProvider().get(this).respond(requestCycle);
+		Application.get().getPageRendererProvider().get(this).respond((RequestCycle)requestCycle);
 	}
 }

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/resource/ResourceReferenceRequestHandler.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/resource/ResourceReferenceRequestHandler.java?rev=924375&r1=924374&r2=924375&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/resource/ResourceReferenceRequestHandler.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/resource/ResourceReferenceRequestHandler.java Wed Mar 17 17:26:05 2010
@@ -18,9 +18,9 @@ package org.apache.wicket.request.handle
 
 import java.util.Locale;
 
+import org.apache.wicket.request.IRequestCycle;
 import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.request.component.PageParameters;
-import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.request.resource.IResource;
 import org.apache.wicket.request.resource.ResourceReference;
 import org.apache.wicket.util.lang.Checks;
@@ -80,14 +80,14 @@ public class ResourceReferenceRequestHan
 	/**
 	 * @see org.apache.org.apache.wicket.request.IRequestHandler#detach(org.apache.wicket.request.cycle.RequestCycle)
 	 */
-	public void detach(RequestCycle requestCycle)
+	public void detach(IRequestCycle requestCycle)
 	{
 	}
 
 	/**
 	 * @see org.apache.org.apache.wicket.request.IRequestHandler#respond(org.apache.wicket.request.cycle.RequestCycle)
 	 */
-	public void respond(RequestCycle requestCycle)
+	public void respond(IRequestCycle requestCycle)
 	{
 		new ResourceRequestHandler(getResourceReference().getResource(), getPageParameters()).respond(requestCycle);
 	}

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/resource/ResourceRequestHandler.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/resource/ResourceRequestHandler.java?rev=924375&r1=924374&r2=924375&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/resource/ResourceRequestHandler.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/resource/ResourceRequestHandler.java Wed Mar 17 17:26:05 2010
@@ -16,9 +16,9 @@
  */
 package org.apache.wicket.request.handler.resource;
 
+import org.apache.wicket.request.IRequestCycle;
 import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.request.component.PageParameters;
-import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.request.resource.IResource;
 import org.apache.wicket.util.lang.Checks;
 
@@ -70,7 +70,7 @@ public class ResourceRequestHandler impl
 	/**
 	 * @see org.apache.org.apache.wicket.request.IRequestHandler#respond(org.apache.wicket.request.cycle.RequestCycle)
 	 */
-	public void respond(final RequestCycle requestCycle)
+	public void respond(final IRequestCycle requestCycle)
 	{
 		IResource.Attributes a = new IResource.Attributes(requestCycle.getRequest(),
 			requestCycle.getResponse(), pageParameters);
@@ -80,7 +80,7 @@ public class ResourceRequestHandler impl
 	/**
 	 * @see org.apache.org.apache.wicket.request.IRequestHandler#detach(org.apache.wicket.request.cycle.RequestCycle)
 	 */
-	public void detach(RequestCycle requestCycle)
+	public void detach(IRequestCycle requestCycle)
 	{
 	}
 }

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/resource/ResourceStreamRequestHandler.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/resource/ResourceStreamRequestHandler.java?rev=924375&r1=924374&r2=924375&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/resource/ResourceStreamRequestHandler.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/resource/ResourceStreamRequestHandler.java Wed Mar 17 17:26:05 2010
@@ -16,8 +16,8 @@
  */
 package org.apache.wicket.request.handler.resource;
 
+import org.apache.wicket.request.IRequestCycle;
 import org.apache.wicket.request.IRequestHandler;
-import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.request.resource.ContentDisposition;
 import org.apache.wicket.request.resource.ResourceStreamResource;
 import org.apache.wicket.request.resource.IResource.Attributes;
@@ -72,7 +72,7 @@ public class ResourceStreamRequestHandle
 	/**
 	 * @see org.apache.wicket.request.IRequestHandler#detach(org.apache.wicket.request.cycle.RequestCycle)
 	 */
-	public void detach(RequestCycle requestCycle)
+	public void detach(IRequestCycle requestCycle)
 	{
 
 	}
@@ -128,7 +128,7 @@ public class ResourceStreamRequestHandle
 	 * 
 	 * @see org.apache.wicket.request.IRequestHandler#respond(org.apache.wicket.request.cycle.RequestCycle)
 	 */
-	public void respond(RequestCycle requestCycle)
+	public void respond(IRequestCycle requestCycle)
 	{
 		Attributes attributes = new Attributes(requestCycle.getRequest(),
 			requestCycle.getResponse());

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/CryptoMapper.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/CryptoMapper.java?rev=924375&r1=924374&r2=924375&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/CryptoMapper.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/CryptoMapper.java Wed Mar 17 17:26:05 2010
@@ -66,7 +66,7 @@ public class CryptoMapper implements IRe
 
 	public IRequestHandler mapRequest(Request request)
 	{
-		Url url = decryptUrl(request.getUrl());
+		Url url = decryptUrl(request, request.getUrl());
 
 		if (url == null)
 		{
@@ -90,7 +90,7 @@ public class CryptoMapper implements IRe
 		return encrypted;
 	}
 
-	private Url decryptUrl(Url encryptedUrl)
+	private Url decryptUrl(Request request, Url encryptedUrl)
 	{
 		if (encryptedUrl.getSegments().isEmpty() && encryptedUrl.getQueryParameters().isEmpty())
 		{
@@ -109,7 +109,7 @@ public class CryptoMapper implements IRe
 			String urlString = getCrypt().decryptUrlSafe(encryptedUrlString);
 			if (!Strings.isEmpty(urlString))
 			{
-				url = Url.parse(urlString);
+				url = Url.parse(urlString, request.getCharset());
 			}
 		}
 		catch (Exception e)

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java?rev=924375&r1=924374&r2=924375&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java Wed Mar 17 17:26:05 2010
@@ -20,6 +20,7 @@ import java.io.IOException;
 import java.io.Serializable;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Method;
+import java.nio.charset.Charset;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Enumeration;
@@ -504,7 +505,8 @@ public class BaseWicketTester
 						"Possible infinite redirect detected. Bailing out.");
 				}
 				++redirectCount;
-				Url newUrl = Url.parse(lastResponse.getRedirectLocation());
+				Url newUrl = Url.parse(lastResponse.getRedirectLocation(),
+					Charset.forName(request.getCharacterEncoding()));
 
 				if (newUrl.isAbsolute())
 				{
@@ -727,7 +729,8 @@ public class BaseWicketTester
 	 */
 	public void executeBehavior(final AbstractAjaxBehavior behavior)
 	{
-		Url url = Url.parse(behavior.getCallbackUrl().toString());
+		Url url = Url.parse(behavior.getCallbackUrl().toString(),
+			Charset.forName(request.getCharacterEncoding()));
 		transform(url);
 		request.setUrl(url);
 		request.addHeader("Wicket-Ajax-BaseURL", url.toString());
@@ -738,7 +741,8 @@ public class BaseWicketTester
 	public Url urlFor(AjaxLink link)
 	{
 		AbstractAjaxBehavior behavior = WicketTesterHelper.findAjaxEventBehavior(link, "onclick");
-		Url url = Url.parse(behavior.getCallbackUrl().toString());
+		Url url = Url.parse(behavior.getCallbackUrl().toString(),
+			Charset.forName(request.getCharacterEncoding()));
 		transform(url);
 		return url;
 	}
@@ -1191,7 +1195,8 @@ public class BaseWicketTester
 	public void submitForm(String path)
 	{
 		Form<?> form = (Form<?>)getComponentFromLastRenderedPage(path);
-		Url url = Url.parse(form.urlFor(IFormSubmitListener.INTERFACE).toString());
+		Url url = Url.parse(form.urlFor(IFormSubmitListener.INTERFACE).toString(),
+			Charset.forName(request.getCharacterEncoding()));
 
 		// make url absolute
 		transform(url);
@@ -1621,7 +1626,8 @@ public class BaseWicketTester
 		String failMessage = "No form attached to the submitlink.";
 		notNull(failMessage, form);
 
-		Url url = Url.parse(behavior.getCallbackUrl().toString());
+		Url url = Url.parse(behavior.getCallbackUrl().toString(),
+			Charset.forName(request.getCharacterEncoding()));
 		transform(url);
 		request.addHeader("Wicket-Ajax-BaseURL", url.toString());
 		request.addHeader("Wicket-Ajax", "Wicket-Ajax");
@@ -1766,7 +1772,7 @@ public class BaseWicketTester
 
 	public void executeUrl(String _url)
 	{
-		Url url = Url.parse(_url);
+		Url url = Url.parse(_url, Charset.forName(request.getCharacterEncoding()));
 		transform(url);
 		getRequest().setUrl(url);
 		processRequest();

Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/request/cycle/RequestHandlerStackTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/request/cycle/RequestHandlerStackTest.java?rev=924375&r1=924374&r2=924375&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/request/cycle/RequestHandlerStackTest.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/request/cycle/RequestHandlerStackTest.java Wed Mar 17 17:26:05 2010
@@ -19,9 +19,8 @@ package org.apache.wicket.request.cycle;
 import junit.framework.TestCase;
 
 import org.apache.wicket.Response;
+import org.apache.wicket.request.IRequestCycle;
 import org.apache.wicket.request.IRequestHandler;
-import org.apache.wicket.request.cycle.RequestCycle;
-import org.apache.wicket.request.cycle.RequestHandlerStack;
 
 /**
  * 
@@ -107,12 +106,12 @@ public class RequestHandlerStackTest ext
 
 		final IRequestHandler handler3 = new IRequestHandler()
 		{
-			public void respond(RequestCycle requestCycle)
+			public void respond(IRequestCycle requestCycle)
 			{
 				testFlag3 = false;
 			}
 
-			public void detach(RequestCycle requestCycle)
+			public void detach(IRequestCycle requestCycle)
 			{
 				detachedFlag3 = true;
 			}
@@ -120,7 +119,7 @@ public class RequestHandlerStackTest ext
 
 		final IRequestHandler handler2 = new IRequestHandler()
 		{
-			public void respond(RequestCycle requestCycle)
+			public void respond(IRequestCycle requestCycle)
 			{
 				testFlag2 = false;
 
@@ -130,7 +129,7 @@ public class RequestHandlerStackTest ext
 				testFlag2 = true;
 			}
 
-			public void detach(RequestCycle requestCycle)
+			public void detach(IRequestCycle requestCycle)
 			{
 				detachedFlag2 = true;
 			}
@@ -138,7 +137,7 @@ public class RequestHandlerStackTest ext
 
 		final IRequestHandler handler1 = new IRequestHandler()
 		{
-			public void respond(RequestCycle requestCycle)
+			public void respond(IRequestCycle requestCycle)
 			{
 				testFlag1 = false;
 
@@ -151,7 +150,7 @@ public class RequestHandlerStackTest ext
 				testFlag1 = true;
 			}
 
-			public void detach(RequestCycle requestCycle)
+			public void detach(IRequestCycle requestCycle)
 			{
 				detachedFlag1 = true;
 			}
@@ -184,7 +183,7 @@ public class RequestHandlerStackTest ext
 
 		final IRequestHandler handler4 = new IRequestHandler()
 		{
-			public void respond(RequestCycle requestCycle)
+			public void respond(IRequestCycle requestCycle)
 			{
 				testFlag4 = false;
 
@@ -193,7 +192,7 @@ public class RequestHandlerStackTest ext
 				stack.setResponse(newResponse());
 			}
 
-			public void detach(RequestCycle requestCycle)
+			public void detach(IRequestCycle requestCycle)
 			{
 				detachedFlag4 = true;
 			}
@@ -201,7 +200,7 @@ public class RequestHandlerStackTest ext
 
 		final IRequestHandler handler3 = new IRequestHandler()
 		{
-			public void respond(RequestCycle requestCycle)
+			public void respond(IRequestCycle requestCycle)
 			{
 				testFlag3 = false;
 				stack.setResponse(newResponse());
@@ -210,7 +209,7 @@ public class RequestHandlerStackTest ext
 				testFlag3 = true;
 			}
 
-			public void detach(RequestCycle requestCycle)
+			public void detach(IRequestCycle requestCycle)
 			{
 				detachedFlag3 = true;
 			}
@@ -218,7 +217,7 @@ public class RequestHandlerStackTest ext
 
 		final IRequestHandler handler2 = new IRequestHandler()
 		{
-			public void respond(RequestCycle requestCycle)
+			public void respond(IRequestCycle requestCycle)
 			{
 				testFlag2 = false;
 				stack.setResponse(newResponse());
@@ -227,7 +226,7 @@ public class RequestHandlerStackTest ext
 				testFlag2 = true;
 			}
 
-			public void detach(RequestCycle requestCycle)
+			public void detach(IRequestCycle requestCycle)
 			{
 				detachedFlag2 = true;
 			}
@@ -235,7 +234,7 @@ public class RequestHandlerStackTest ext
 
 		IRequestHandler handler1 = new IRequestHandler()
 		{
-			public void respond(RequestCycle requestCycle)
+			public void respond(IRequestCycle requestCycle)
 			{
 				testFlag1 = false;
 				stack.setResponse(newResponse());
@@ -245,7 +244,7 @@ public class RequestHandlerStackTest ext
 				testFlag1 = true;
 			}
 
-			public void detach(RequestCycle requestCycle)
+			public void detach(IRequestCycle requestCycle)
 			{
 				detachedFlag1 = true;
 			}
@@ -281,14 +280,14 @@ public class RequestHandlerStackTest ext
 
 		final IRequestHandler handler4 = new IRequestHandler()
 		{
-			public void respond(RequestCycle requestCycle)
+			public void respond(IRequestCycle requestCycle)
 			{
 				testFlag4 = true;
 
 				stack.setResponse(newResponse());
 			}
 
-			public void detach(RequestCycle requestCycle)
+			public void detach(IRequestCycle requestCycle)
 			{
 				detachedFlag4 = true;
 			}
@@ -296,7 +295,7 @@ public class RequestHandlerStackTest ext
 
 		final IRequestHandler handler3 = new IRequestHandler()
 		{
-			public void respond(RequestCycle requestCycle)
+			public void respond(IRequestCycle requestCycle)
 			{
 				testFlag3 = false;
 				stack.scheduleRequestHandlerAfterCurrent(handler4);
@@ -309,7 +308,7 @@ public class RequestHandlerStackTest ext
 				testFlag3 = true;
 			}
 
-			public void detach(RequestCycle requestCycle)
+			public void detach(IRequestCycle requestCycle)
 			{
 				detachedFlag3 = true;
 			}
@@ -317,7 +316,7 @@ public class RequestHandlerStackTest ext
 
 		final IRequestHandler handler2 = new IRequestHandler()
 		{
-			public void respond(RequestCycle requestCycle)
+			public void respond(IRequestCycle requestCycle)
 			{
 				testFlag2 = false;
 				stack.executeRequestHandler(handler3);
@@ -325,7 +324,7 @@ public class RequestHandlerStackTest ext
 				testFlag2 = true;
 			}
 
-			public void detach(RequestCycle requestCycle)
+			public void detach(IRequestCycle requestCycle)
 			{
 				detachedFlag2 = true;
 			}
@@ -333,7 +332,7 @@ public class RequestHandlerStackTest ext
 
 		IRequestHandler handler1 = new IRequestHandler()
 		{
-			public void respond(RequestCycle requestCycle)
+			public void respond(IRequestCycle requestCycle)
 			{
 				testFlag1 = false;
 				stack.executeRequestHandler(handler2);
@@ -342,7 +341,7 @@ public class RequestHandlerStackTest ext
 				testFlag1 = true;
 			}
 
-			public void detach(RequestCycle requestCycle)
+			public void detach(IRequestCycle requestCycle)
 			{
 				detachedFlag1 = true;
 			}

Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/AbstractMapperTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/AbstractMapperTest.java?rev=924375&r1=924374&r2=924375&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/AbstractMapperTest.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/AbstractMapperTest.java Wed Mar 17 17:26:05 2010
@@ -16,6 +16,7 @@
  */
 package org.apache.wicket.request.mapper;
 
+import java.nio.charset.Charset;
 import java.util.Locale;
 
 import junit.framework.TestCase;
@@ -62,6 +63,12 @@ public abstract class AbstractMapperTest
 			{
 				return null;
 			}
+
+			@Override
+			public Charset getCharset()
+			{
+				return Charset.forName("UTF-8");
+			}
 		};
 	}
 

Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/BasicResourceReferenceMapperTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/BasicResourceReferenceMapperTest.java?rev=924375&r1=924374&r2=924375&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/BasicResourceReferenceMapperTest.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/request/mapper/BasicResourceReferenceMapperTest.java Wed Mar 17 17:26:05 2010
@@ -22,8 +22,6 @@ import org.apache.wicket.request.IReques
 import org.apache.wicket.request.Url;
 import org.apache.wicket.request.component.PageParameters;
 import org.apache.wicket.request.handler.resource.ResourceReferenceRequestHandler;
-import org.apache.wicket.request.mapper.BasicResourceReferenceMapper;
-import org.apache.wicket.request.mapper.IMapperContext;
 
 /**
  * @author Matej Knopp

Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/util/string/StringsTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/util/string/StringsTest.java?rev=924375&r1=924374&r2=924375&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/util/string/StringsTest.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/util/string/StringsTest.java Wed Mar 17 17:26:05 2010
@@ -433,7 +433,7 @@ public final class StringsTest extends T
 		{
 			final String toString = Strings.toString((Object)e);
 			String before = Strings.beforeFirst(toString, '\n').trim();
-			assertEquals("Root cause:", before);
+			assertEquals("Message: Foo", before);
 		}
 	}