Author: jdonnerstag
Date: Tue Feb 17 12:56:04 2009
New Revision: 745030
URL: http://svn.apache.org/viewvc?rev=745030&view=rev
Log:
fixed wicket-2061: interceptContinuationURL with umlauts not encoded
fixed MockHttpServletRequest as well, which didn't properly support it neither.
Added:
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/A.html
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/A.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/B.html
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/B.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/HomePage.html
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/HomePage.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/RequestEncodingTest.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/WicketApplication.java
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/PageMap.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketURLDecoder.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketURLEncoder.java
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/PageMap.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/PageMap.java?rev=745030&r1=745029&r2=745030&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/PageMap.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/PageMap.java Tue Feb 17
12:56:04 2009
@@ -22,9 +22,12 @@
import java.util.List;
import org.apache.wicket.protocol.http.WebRequest;
+import org.apache.wicket.protocol.http.WicketURLEncoder;
import org.apache.wicket.request.target.basic.RedirectRequestTarget;
import org.apache.wicket.session.pagemap.IPageMapEntry;
import org.apache.wicket.util.lang.Objects;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* FIXME javadoc
@@ -34,6 +37,9 @@
*/
public abstract class PageMap implements IClusterable, IPageMap
{
+ /** Log. */
+ private static final Logger log =
LoggerFactory.getLogger(PageMap.class);
+
/**
* Visitor interface for visiting entries in this map
*
@@ -269,7 +275,10 @@
}
else
{
+ // wicket-2061: getURL() returns a properly
<b>decoded</b> URL. But we need is a
+ // properly <b>encoded</b> URL.
interceptContinuationURL = "/" +
cycle.getRequest().getURL();
+ interceptContinuationURL =
WicketURLEncoder.FULL_PATH_INSTANCE.encode(interceptContinuationURL);
}
// Page map is dirty
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java?rev=745030&r1=745029&r2=745030&view=diff
==============================================================================
---
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java
(original)
+++
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java
Tue Feb 17 12:56:04 2009
@@ -1117,7 +1117,7 @@
*/
public void setPath(final String path)
{
- this.path = path;
+ this.path = WicketURLDecoder.PATH_INSTANCE.decode(path);
}
/**
@@ -1145,11 +1145,11 @@
int index = url.indexOf("?");
if (index == -1)
{
- path = url;
+ setPath(url);
}
else
{
- path = url.substring(0, index);
+ setPath(url.substring(0, index));
String queryString = url.substring(index + 1);
Map<String, String[]> params = new HashMap<String,
String[]>();
@@ -1340,7 +1340,7 @@
// We need to absolutize the redirect URL as we are not as
smart as a web-browser
// (WICKET-702)
url = redirect;
- if (url.charAt(0) != '/')
+ if ((url.length() == 0) || (url.charAt(0) != '/'))
{
url = getContextPath() + getServletPath() + "/" +
redirect;
}
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketURLDecoder.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketURLDecoder.java?rev=745030&r1=745029&r2=745030&view=diff
==============================================================================
---
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketURLDecoder.java
(original)
+++
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketURLDecoder.java
Tue Feb 17 12:56:04 2009
@@ -25,9 +25,10 @@
/**
* Adapted from java.net.URLDecoder, but defines instances for query string
decoding versus URL path
- * component decoding. <p/> The difference is important because a space is
encoded as a + in a query
- * string, but this is a valid value in a path component (and is therefore not
decode back to a
- * space).
+ * component decoding.
+ * <p/>
+ * The difference is important because a space is encoded as a + in a query
string, but this is a
+ * valid value in a path component (and is therefore not decode back to a
space).
*
* @author Doug Donohoe
* @see java.net.URLDecoder
@@ -40,14 +41,16 @@
private final boolean decodePlus;
/**
- * Encoder used to decode name or value components of a query
string.<br/><br/>
+ * Encoder used to decode name or value components of a query
string.<br/>
+ * <br/>
*
* For example:
http://org.acme/notthis/northis/oreventhis?buthis=isokay&asis=thispart
*/
public static final WicketURLDecoder QUERY_INSTANCE = new
WicketURLDecoder(true);
/**
- * Encoder used to decode components of a path.<br/><br/>
+ * Encoder used to decode components of a path.<br/>
+ * <br/>
*
* For example: http://org.acme/foo/thispart/orthispart?butnot=thispart
*/
@@ -56,8 +59,8 @@
/**
* Create decoder
*
- * @param decodePlus -
- * whether to decode + to space
+ * @param decodePlus
+ * - whether to decode + to space
*/
private WicketURLDecoder(boolean decodePlus)
{
@@ -98,6 +101,11 @@
*/
public String decode(String s, String enc)
{
+ if (s == null)
+ {
+ return null;
+ }
+
boolean needToChange = false;
int numChars = s.length();
StringBuffer sb = new StringBuffer(numChars > 500 ? numChars /
2 : numChars);
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketURLEncoder.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketURLEncoder.java?rev=745030&r1=745029&r2=745030&view=diff
==============================================================================
---
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketURLEncoder.java
(original)
+++
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WicketURLEncoder.java
Tue Feb 17 12:56:04 2009
@@ -30,9 +30,10 @@
/**
* Adapted from java.net.URLEncoder, but defines instances for query string
encoding versus URL path
- * component encoding. <p/> The difference is important because a space is
encoded as a + in a query
- * string, but this is a valid value in a path component (and is therefore not
decode back to a
- * space).
+ * component encoding.
+ * <p/>
+ * The difference is important because a space is encoded as a + in a query
string, but this is a
+ * valid value in a path component (and is therefore not decode back to a
space).
*
* @author Doug Donohoe
* @see java.net.URLEncoder
@@ -49,40 +50,63 @@
/**
* query type
*/
- QUERY, /**
+ QUERY,
+ /**
* path type
*/
- PATH;
+ PATH,
+ /**
+ * full path type
+ */
+ FULL_PATH;
}
// list of what not to decode
protected BitSet dontNeedEncoding;
+ // E.g. "?" for FULL_PATH encoding when querystring has already been
encoded.
+ private final char stopChar;
+
// used in decoding
protected static final int caseDiff = ('a' - 'A');
/**
- * Encoder used to encode name or value components of a query
string.<br/><br/>
+ * Encoder used to encode name or value components of a query
string.<br/>
+ * <br/>
*
* For example:
http://org.acme/notthis/northis/oreventhis?buthis=isokay&asis=thispart
*/
- public static final WicketURLEncoder QUERY_INSTANCE = new
WicketURLEncoder(Type.QUERY);
+ public static final WicketURLEncoder QUERY_INSTANCE = new
WicketURLEncoder(Type.QUERY, '\0');
/**
- * Encoder used to encode components of a path.<br/><br/>
+ * Encoder used to encode components of a path.<br/>
+ * <br/>
*
* For example: http://org.acme/foo/thispart/orthispart?butnot=thispart
*/
- public static final WicketURLEncoder PATH_INSTANCE = new
WicketURLEncoder(Type.PATH);
+ public static final WicketURLEncoder PATH_INSTANCE = new
WicketURLEncoder(Type.PATH, '\0');
+
+ /**
+ * Encoder used to encode all path segments. Querystring will be
excluded.<br/>
+ * <br/>
+ *
+ * For example: http://org.acme/foo/thispart/orthispart?butnot=thispart
+ */
+ public static final WicketURLEncoder FULL_PATH_INSTANCE = new
WicketURLEncoder(Type.FULL_PATH,
+ '?');
/**
* Allow subclass to call constructor.
*
* @param type
* encoder type
+ * @param stopChar
+ * stop encoding when stopChar found
*/
- protected WicketURLEncoder(Type type)
+ protected WicketURLEncoder(Type type, char stopChar)
{
+ this.stopChar = stopChar;
+
/*
* This note from java.net.URLEncoder
==================================
*
@@ -125,10 +149,10 @@
* sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" /
"," / ";" / "=" // -- PATH
* COMPONENT -- //
*
- * path = (see RFC for all variations) path-abempty = *( "/"
segment ) segment = *pchar
- * pchar = unreserved / pct-encoded / sub-delims / ":" / "@" //
-- QUERY COMPONENT -- //
+ * path = (see RFC for all variations) path-abempty =( "/"
segment ) segment =pchar pchar =
+ * unreserved / pct-encoded / sub-delims / ":" / "@" // --
QUERY COMPONENT -- //
*
- * query = *( pchar / "/" / "?" )
+ * query =( pchar / "/" / "?" )
*/
// unreserved
@@ -174,9 +198,9 @@
// this code consistent with java.net.URLEncoder version
case QUERY :
dontNeedEncoding.set(' '); /*
- * encoding a space to a + is done in the
encode()
- * method
- */
+
* encoding a space to a + is done in the encode()
+
* method
+
*/
dontNeedEncoding.set('/'); // to allow direct
passing of URL in query
dontNeedEncoding.set('?'); // to allow direct
passing of URL in query
break;
@@ -190,6 +214,18 @@
dontNeedEncoding.set('=');
dontNeedEncoding.set('+');
break;
+
+ // same as path, but '/' will not be encoded
+ case FULL_PATH :
+ // encode ' ' with a % instead of + in path
portion
+
+ // path component sub-delim values we do not
need to escape
+ dontNeedEncoding.set('&');
+ dontNeedEncoding.set('=');
+ dontNeedEncoding.set('+');
+
+ dontNeedEncoding.set('/');
+ break;
}
}
@@ -233,7 +269,9 @@
CharArrayWriter charArrayWriter = new CharArrayWriter();
if (enc == null)
+ {
throw new NullPointerException("charsetName");
+ }
try
{
@@ -248,11 +286,18 @@
throw new WicketRuntimeException(new
UnsupportedEncodingException(enc));
}
+ boolean stopEncoding = false;
for (int i = 0; i < s.length();)
{
int c = s.charAt(i);
+
+ if ((stopEncoding == false) && (c == stopChar))
+ {
+ stopEncoding = true;
+ }
+
// System.out.println("Examining character: " + c);
- if (dontNeedEncoding.get(c))
+ if ((stopEncoding == true) || dontNeedEncoding.get(c))
{
if (c == ' ')
{
Added:
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/A.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/A.html?rev=745030&view=auto
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/A.html
(added)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/A.html
Tue Feb 17 12:56:04 2009
@@ -0,0 +1,15 @@
+<html>
+ <head>
+ <title>encodingtest</title>
+ </head>
+ <body>
+ <p>
+ The file is correct if sent as query parameter, as part of the
path it is wrong:
+ </p>
+
+ <h1 wicket:id="file">FILE</h1>
+
+ <a href="/">Try again ...</a>
+ </body>
+</html>
+
Added:
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/A.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/A.java?rev=745030&view=auto
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/A.java
(added)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/A.java
Tue Feb 17 12:56:04 2009
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.redirect.encodingtest;
+
+import org.apache.wicket.PageParameters;
+import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.protocol.http.WebApplication;
+
+/**
+ * Homepage
+ */
+public class A extends WebPage
+{
+ private static final long serialVersionUID = 1L;
+
+ private final String file;
+
+ /**
+ * Construct.
+ *
+ * @param parameters
+ */
+ public A(final PageParameters parameters)
+ {
+ ((WicketApplication)WebApplication.get()).intercept();
+
+ file = parameters.getString("file");
+
+ add(new Label("file", file));
+ }
+
+ /**
+ *
+ * @return interceptContinuationURL
+ */
+ public String getFileParameter()
+ {
+ return file;
+ }
+}
Added:
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/B.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/B.html?rev=745030&view=auto
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/B.html
(added)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/B.html
Tue Feb 17 12:56:04 2009
@@ -0,0 +1,11 @@
+<html>
+ <head>
+ <title>encodingtest</title>
+ </head>
+ <body>
+ <p wicket:id="interceptContinuationURL">interceptContinuationURL</p>
+
+ <a wicket:id="link">Continue to original destination</a>
+ </body>
+</html>
+
Added:
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/B.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/B.java?rev=745030&view=auto
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/B.java
(added)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/B.java
Tue Feb 17 12:56:04 2009
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.redirect.encodingtest;
+
+import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.link.Link;
+import org.apache.wicket.model.PropertyModel;
+
+/**
+ * Homepage
+ */
+public class B extends WebPage
+{
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Construct.
+ */
+ public B()
+ {
+ add(new Label("interceptContinuationURL", new
PropertyModel<String>(getPageMap(),
+ "interceptContinuationURL")));
+
+ add(new Link<Void>("link")
+ {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick()
+ {
+ continueToOriginalDestination();
+ }
+ });
+ }
+
+ /**
+ *
+ * @return interceptContinuationURL
+ */
+ public String getInterceptContinuationURL()
+ {
+ return
get("interceptContinuationURL").getDefaultModelObjectAsString();
+ }
+}
Added:
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/HomePage.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/HomePage.html?rev=745030&view=auto
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/HomePage.html
(added)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/HomePage.html
Tue Feb 17 12:56:04 2009
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<html>
+ <head>
+ <title>encodingtest</title>
+ </head>
+ <body>
+ <ul>
+ <li>
+ <a
href="/Aparameter?file=umlaut-%C3%A4-%C3%B6-%C3%BC">A with file
"umlaut-ä-ö-ü" as query parameter</a>
+ </li>
+ <li>
+ <a href="/Apath/umlaut-%C3%A4-%C3%B6-%C3%BC">A
with file "umlaut-ä-ö-ü" in path</a>
+ </li>
+ </ul>
+ </body>
+</html>
+
Added:
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/HomePage.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/HomePage.java?rev=745030&view=auto
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/HomePage.java
(added)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/HomePage.java
Tue Feb 17 12:56:04 2009
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.redirect.encodingtest;
+
+import org.apache.wicket.PageParameters;
+import org.apache.wicket.markup.html.WebPage;
+
+/**
+ * Homepage
+ */
+public class HomePage extends WebPage
+{
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Construct.
+ *
+ * @param parameters
+ */
+ public HomePage(final PageParameters parameters)
+ {
+ }
+}
Added:
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/RequestEncodingTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/RequestEncodingTest.java?rev=745030&view=auto
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/RequestEncodingTest.java
(added)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/RequestEncodingTest.java
Tue Feb 17 12:56:04 2009
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.redirect.encodingtest;
+
+import org.apache.wicket.PageParameters;
+import org.apache.wicket.WicketTestCase;
+import org.apache.wicket.request.target.coding.MixedParamUrlCodingStrategy;
+import org.apache.wicket.util.tester.WicketTester;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ *
+ */
+public class RequestEncodingTest extends WicketTestCase
+{
+ /** Log. */
+ private static final Logger log =
LoggerFactory.getLogger(RequestEncodingTest.class);
+
+ private WicketApplication application;
+
+ /**
+ * @see org.apache.wicket.WicketTestCase#setUp()
+ */
+ @Override
+ protected void setUp() throws Exception
+ {
+ application = new WicketApplication();
+ tester = new WicketTester(application);
+ tester.startPage(HomePage.class);
+ tester.assertRenderedPage(HomePage.class);
+ // String document = tester.getServletResponse().getDocument();
+ }
+
+ /**
+ *
+ */
+ public void testDefault()
+ {
+ tester.startPage(A.class, new
PageParameters("file=umlaut-ä-ö-ü"));
+ tester.assertRenderedPage(B.class);
+
+ String url2 =
((B)tester.getLastRenderedPage()).getInterceptContinuationURL();
+ assertTrue(url2.contains("umlaut-%C3%A4-%C3%B6-%C3%BC"));
+
+ tester.clickLink("link");
+ tester.assertRenderedPage(A.class);
+
+ String file =
((A)tester.getLastRenderedPage()).getFileParameter();
+ assertEquals("umlaut-ä-ö-ü", file);
+
+ String document = tester.getServletResponse().getDocument();
+ assertTrue(document.contains("ä-ö-ü"));
+ }
+
+ /**
+ *
+ */
+ public void testUmlautsInQueryParameter()
+ {
+ application.mount(new MixedParamUrlCodingStrategy("Apath",
A.class, new String[] { "file" }));
+ testDefault();
+ }
+
+ /**
+ *
+ */
+ public void testUmlautsInRequestUri()
+ {
+ application.mountBookmarkablePage("Aparameter", A.class);
+ testDefault();
+ }
+}
Added:
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/WicketApplication.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/WicketApplication.java?rev=745030&view=auto
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/WicketApplication.java
(added)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/redirect/encodingtest/WicketApplication.java
Tue Feb 17 12:56:04 2009
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.redirect.encodingtest;
+
+import org.apache.wicket.Page;
+import org.apache.wicket.RestartResponseAtInterceptPageException;
+import org.apache.wicket.protocol.http.WebApplication;
+
+/**
+ * Application object for your web application. If you want to run this
application without
+ * deploying, run the Start class.
+ *
+ * @see wicket.myproject.Start#main(String[])
+ */
+public class WicketApplication extends WebApplication
+{
+ private boolean showIntercept = false;
+
+ /**
+ * Constructor
+ */
+ public WicketApplication()
+ {
+ }
+
+ /**
+ * @see wicket.Application#getHomePage()
+ */
+ @Override
+ public Class<? extends Page> getHomePage()
+ {
+ return HomePage.class;
+ }
+
+ /**
+ *
+ */
+ public void intercept()
+ {
+ showIntercept = !showIntercept;
+ if (showIntercept)
+ {
+ throw new
RestartResponseAtInterceptPageException(B.class);
+ }
+ }
+}