You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by sv...@apache.org on 2020/04/27 20:11:36 UTC
[wicket] 01/02: WICKET-6772 Use StandardCharsets.UTF_8 instead of
looking up charsets
This is an automated email from the ASF dual-hosted git repository.
svenmeier pushed a commit to branch wicket-8.x
in repository https://gitbox.apache.org/repos/asf/wicket.git
commit 747e4b6cee010b84982df930258d36b5310410c5
Author: Thomas Heigl <th...@gmail.com>
AuthorDate: Mon Apr 27 18:13:04 2020 +0200
WICKET-6772 Use StandardCharsets.UTF_8 instead of looking up charsets
this closes #421
---
.../org/apache/wicket/mock/MockWebRequest.java | 3 +-
.../apache/wicket/protocol/http/RequestUtils.java | 6 ++--
.../apache/wicket/ajax/AjaxRequestHandlerTest.java | 4 +--
.../core/request/mapper/AbstractMapperTest.java | 3 +-
.../request/mapper/BookmarkableMapperTest.java | 7 ++--
.../request/mapper/PageInstanceMapperTest.java | 5 +--
.../core/request/mapper/ResourceMapperTest.java | 3 +-
.../markup/parser/filter/CustomMarkupLabel.java | 3 +-
.../wicket/protocol/http/RequestUtilsTest.java | 7 ++--
.../apache/wicket/protocol/http/WicketURLTest.java | 18 ++++++-----
.../request/resource/CharSequenceResourceTest.java | 6 ++--
.../ContextRelativeResourceCachingTest.java | 3 +-
.../markup/html/repeater/tree/NestedTree.java | 4 ---
.../main/java/org/apache/wicket/request/Url.java | 18 +++++------
.../apache/wicket/request/http/WebResponse.java | 3 +-
.../apache/wicket/util/encoding/UrlDecoder.java | 37 +++++++++++-----------
.../apache/wicket/util/encoding/UrlEncoder.java | 31 +++++++++---------
.../java/org/apache/wicket/util/file/Files.java | 3 +-
.../wicket/util/encoding/UrlDecoderTest.java | 12 ++++---
.../wicket/util/encoding/UrlEncoderTest.java | 28 ++++++++--------
20 files changed, 109 insertions(+), 95 deletions(-)
diff --git a/wicket-core/src/main/java/org/apache/wicket/mock/MockWebRequest.java b/wicket-core/src/main/java/org/apache/wicket/mock/MockWebRequest.java
index ffbbd6f..00a1561 100644
--- a/wicket-core/src/main/java/org/apache/wicket/mock/MockWebRequest.java
+++ b/wicket-core/src/main/java/org/apache/wicket/mock/MockWebRequest.java
@@ -17,6 +17,7 @@
package org.apache.wicket.mock;
import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -275,7 +276,7 @@ public class MockWebRequest extends WebRequest
@Override
public Charset getCharset()
{
- return Charset.forName("UTF-8");
+ return StandardCharsets.UTF_8;
}
@Override
diff --git a/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestUtils.java b/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestUtils.java
index 49e4fd9..ccb349b 100644
--- a/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestUtils.java
+++ b/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestUtils.java
@@ -17,6 +17,7 @@
package org.apache.wicket.protocol.http;
import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import java.nio.charset.UnsupportedCharsetException;
import java.util.ArrayList;
import java.util.Arrays;
@@ -187,15 +188,16 @@ public final class RequestUtils
private static Charset getDefaultCharset()
{
String charsetName = null;
-
if (Application.exists())
{
charsetName = Application.get().getRequestCycleSettings().getResponseRequestEncoding();
}
+
if (Strings.isEmpty(charsetName))
{
- charsetName = "UTF-8";
+ return StandardCharsets.UTF_8;
}
+
return Charset.forName(charsetName);
}
diff --git a/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxRequestHandlerTest.java b/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxRequestHandlerTest.java
index 070ec1c..f48b3db 100644
--- a/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxRequestHandlerTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxRequestHandlerTest.java
@@ -18,7 +18,7 @@ package org.apache.wicket.ajax;
import java.io.IOException;
import java.lang.reflect.Constructor;
-import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -193,7 +193,7 @@ public class AjaxRequestHandlerTest extends WicketTestCase
tester.startPage(page);
// wicket-ajax-jquery encodes non ASCII id
- String encoded = UrlEncoder.QUERY_INSTANCE.encode("€uro", Charset.forName("UTF-8"));
+ String encoded = UrlEncoder.QUERY_INSTANCE.encode("€uro", StandardCharsets.UTF_8);
tester.getRequest().setHeader("Wicket-FocusedElementId", encoded);
tester.executeAjaxEvent("link", "click");
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/AbstractMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/AbstractMapperTest.java
index d2022a8..cb2d432 100644
--- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/AbstractMapperTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/AbstractMapperTest.java
@@ -17,6 +17,7 @@
package org.apache.wicket.core.request.mapper;
import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import java.util.Locale;
import org.apache.wicket.request.Request;
@@ -57,7 +58,7 @@ public abstract class AbstractMapperTest extends Assert
@Override
public Charset getCharset()
{
- return Charset.forName("UTF-8");
+ return StandardCharsets.UTF_8;
}
@Override
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/BookmarkableMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/BookmarkableMapperTest.java
index b08ca4c..8a220f7 100644
--- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/BookmarkableMapperTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/BookmarkableMapperTest.java
@@ -21,6 +21,7 @@ import static org.hamcrest.CoreMatchers.nullValue;
import static org.hamcrest.Matchers.is;
import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import java.util.Locale;
import org.apache.wicket.MockPage;
@@ -312,7 +313,7 @@ public class BookmarkableMapperTest extends AbstractMapperTest
@Override
public Charset getCharset()
{
- return Charset.forName("UTF-8");
+ return StandardCharsets.UTF_8;
}
@Override
@@ -371,7 +372,7 @@ public class BookmarkableMapperTest extends AbstractMapperTest
@Override
public Charset getCharset()
{
- return Charset.forName("UTF-8");
+ return StandardCharsets.UTF_8;
}
@Override
@@ -429,7 +430,7 @@ public class BookmarkableMapperTest extends AbstractMapperTest
@Override
public Charset getCharset()
{
- return Charset.forName("UTF-8");
+ return StandardCharsets.UTF_8;
}
@Override
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PageInstanceMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PageInstanceMapperTest.java
index 2c99a7b..2bae5da 100644
--- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PageInstanceMapperTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PageInstanceMapperTest.java
@@ -19,6 +19,7 @@ package org.apache.wicket.core.request.mapper;
import static org.hamcrest.CoreMatchers.instanceOf;
import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import java.util.Locale;
import org.apache.wicket.MockPage;
import org.apache.wicket.core.request.handler.IPageProvider;
@@ -204,7 +205,7 @@ public class PageInstanceMapperTest extends AbstractMapperTest
@Override
public Charset getCharset()
{
- return Charset.forName("UTF-8");
+ return StandardCharsets.UTF_8;
}
@Override
@@ -249,7 +250,7 @@ public class PageInstanceMapperTest extends AbstractMapperTest
@Override
public Charset getCharset()
{
- return Charset.forName("UTF-8");
+ return StandardCharsets.UTF_8;
}
@Override
diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/ResourceMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/ResourceMapperTest.java
index cc00db8..84377dd 100644
--- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/ResourceMapperTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/ResourceMapperTest.java
@@ -17,6 +17,7 @@
package org.apache.wicket.core.request.mapper;
import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Locale;
@@ -36,7 +37,7 @@ import org.junit.Test;
public class ResourceMapperTest extends WicketTestCase
{
- private static final Charset CHARSET = Charset.forName("UTF-8");
+ private static final Charset CHARSET = StandardCharsets.UTF_8;
private static final String SHARED_NAME = "test-resource";
private IRequestMapper mapper;
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/parser/filter/CustomMarkupLabel.java b/wicket-core/src/test/java/org/apache/wicket/markup/parser/filter/CustomMarkupLabel.java
index b609f12..42d3c8c 100644
--- a/wicket-core/src/test/java/org/apache/wicket/markup/parser/filter/CustomMarkupLabel.java
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/parser/filter/CustomMarkupLabel.java
@@ -17,6 +17,7 @@
package org.apache.wicket.markup.parser.filter;
import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import org.apache.wicket.Component;
import org.apache.wicket.MarkupContainer;
@@ -57,7 +58,7 @@ public class CustomMarkupLabel
{
// the markup is loaded from database in our real application
StringResourceStream res = new StringResourceStream(SAMPLE_MARKUP);
- res.setCharset(Charset.forName("UTF-8"));
+ res.setCharset(StandardCharsets.UTF_8);
return res;
}
diff --git a/wicket-core/src/test/java/org/apache/wicket/protocol/http/RequestUtilsTest.java b/wicket-core/src/test/java/org/apache/wicket/protocol/http/RequestUtilsTest.java
index 4c41951..126f5fc 100644
--- a/wicket-core/src/test/java/org/apache/wicket/protocol/http/RequestUtilsTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/protocol/http/RequestUtilsTest.java
@@ -17,6 +17,7 @@
package org.apache.wicket.protocol.http;
import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import org.apache.wicket.protocol.http.mock.MockHttpServletRequest;
import org.apache.wicket.request.mapper.parameter.PageParameters;
@@ -30,7 +31,7 @@ import org.junit.Test;
public class RequestUtilsTest extends Assert
{
- public static final Charset UTF_8_CHARSET = Charset.forName("UTF-8");
+ public static final Charset UTF_8_CHARSET = StandardCharsets.UTF_8;
/**
*
@@ -180,9 +181,9 @@ public class RequestUtilsTest extends Assert
MockHttpServletRequest request = new MockHttpServletRequest(null, null, null);
request.setCharacterEncoding("UTF-8");
- assertEquals(Charset.forName("UTF-8"), RequestUtils.getCharset(request));
+ assertEquals(StandardCharsets.UTF_8, RequestUtils.getCharset(request));
request.setCharacterEncoding("FOO");
- assertEquals(Charset.forName("UTF-8"), RequestUtils.getCharset(request));
+ assertEquals(StandardCharsets.UTF_8, RequestUtils.getCharset(request));
}
}
diff --git a/wicket-core/src/test/java/org/apache/wicket/protocol/http/WicketURLTest.java b/wicket-core/src/test/java/org/apache/wicket/protocol/http/WicketURLTest.java
index 2098ec8..64c4054 100644
--- a/wicket-core/src/test/java/org/apache/wicket/protocol/http/WicketURLTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/protocol/http/WicketURLTest.java
@@ -21,6 +21,8 @@ import org.apache.wicket.util.encoding.UrlEncoder;
import org.junit.Assert;
import org.junit.Test;
+import java.nio.charset.StandardCharsets;
+
/**
* @author Doug Donohoe
*/
@@ -32,8 +34,8 @@ public class WicketURLTest extends Assert
@Test
public void pathEncoder()
{
- assertEquals("+", UrlEncoder.PATH_INSTANCE.encode("+", "UTF-8"));
- assertEquals("%20", UrlEncoder.PATH_INSTANCE.encode(" ", "UTF-8"));
+ assertEquals("+", UrlEncoder.PATH_INSTANCE.encode("+", StandardCharsets.UTF_8));
+ assertEquals("%20", UrlEncoder.PATH_INSTANCE.encode(" ", StandardCharsets.UTF_8));
}
/**
@@ -42,8 +44,8 @@ public class WicketURLTest extends Assert
@Test
public void queryEncoder()
{
- assertEquals("+", UrlEncoder.QUERY_INSTANCE.encode(" ", "UTF-8"));
- assertEquals("%2B", UrlEncoder.QUERY_INSTANCE.encode("+", "UTF-8"));
+ assertEquals("+", UrlEncoder.QUERY_INSTANCE.encode(" ", StandardCharsets.UTF_8));
+ assertEquals("%2B", UrlEncoder.QUERY_INSTANCE.encode("+", StandardCharsets.UTF_8));
}
/**
@@ -52,8 +54,8 @@ public class WicketURLTest extends Assert
@Test
public void pathDecoder()
{
- assertEquals("+", UrlDecoder.PATH_INSTANCE.decode("+", "UTF-8"));
- assertEquals(" ", UrlDecoder.PATH_INSTANCE.decode("%20", "UTF-8"));
+ assertEquals("+", UrlDecoder.PATH_INSTANCE.decode("+", StandardCharsets.UTF_8));
+ assertEquals(" ", UrlDecoder.PATH_INSTANCE.decode("%20", StandardCharsets.UTF_8));
}
/**
@@ -62,7 +64,7 @@ public class WicketURLTest extends Assert
@Test
public void queryDecoder()
{
- assertEquals(" ", UrlDecoder.QUERY_INSTANCE.decode("+", "UTF-8"));
- assertEquals("+", UrlDecoder.QUERY_INSTANCE.decode("%2B", "UTF-8"));
+ assertEquals(" ", UrlDecoder.QUERY_INSTANCE.decode("+", StandardCharsets.UTF_8));
+ assertEquals("+", UrlDecoder.QUERY_INSTANCE.decode("%2B", StandardCharsets.UTF_8));
}
}
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/CharSequenceResourceTest.java b/wicket-core/src/test/java/org/apache/wicket/request/resource/CharSequenceResourceTest.java
index 0fdbb00..dcc7bbd 100644
--- a/wicket-core/src/test/java/org/apache/wicket/request/resource/CharSequenceResourceTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/CharSequenceResourceTest.java
@@ -18,7 +18,7 @@ package org.apache.wicket.request.resource;
import static org.hamcrest.Matchers.is;
-import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import org.junit.Assert;
import org.junit.Test;
@@ -39,7 +39,7 @@ public class CharSequenceResourceTest extends Assert
public void getLength_UTF8_whenUnicodeSymbols_thenReturnTheBytesLength() throws Exception
{
CharSequenceResource resource = new CharSequenceResource("plain/text");
- resource.setCharset(Charset.forName("UTF-8"));
+ resource.setCharset(StandardCharsets.UTF_8);
assertThat(resource.getLength("a\u1234d"), is(5L));
}
@@ -47,7 +47,7 @@ public class CharSequenceResourceTest extends Assert
public void getLength_UTF16_whenUnicodeSymbols_thenReturnTheBytesLength() throws Exception
{
CharSequenceResource resource = new CharSequenceResource("plain/text");
- resource.setCharset(Charset.forName("UTF-16"));
+ resource.setCharset(StandardCharsets.UTF_16);
assertThat(resource.getLength("a\u1234d"), is(8L));
}
}
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/resource/caching/ContextRelativeResourceCachingTest.java b/wicket-core/src/test/java/org/apache/wicket/request/resource/caching/ContextRelativeResourceCachingTest.java
index e4bfeb2..59c9dbe 100644
--- a/wicket-core/src/test/java/org/apache/wicket/request/resource/caching/ContextRelativeResourceCachingTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/request/resource/caching/ContextRelativeResourceCachingTest.java
@@ -19,6 +19,7 @@ package org.apache.wicket.request.resource.caching;
import static org.hamcrest.CoreMatchers.instanceOf;
import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import java.util.Locale;
import org.apache.wicket.request.IRequestHandler;
@@ -38,7 +39,7 @@ import org.junit.Test;
*/
public class ContextRelativeResourceCachingTest extends WicketTestCase
{
- private static final Charset CHARSET = Charset.forName("UTF-8");
+ private static final Charset CHARSET = StandardCharsets.UTF_8;
private static final String SHARED_NAME = "contextresource";
private Request createRequest(final String url)
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/NestedTree.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/NestedTree.java
index 80e9117..d2478fa 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/NestedTree.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/NestedTree.java
@@ -129,11 +129,7 @@ public abstract class NestedTree<T> extends AbstractTree<T>
/**
* Overridden to update the corresponding {@link Node} only.
-<<<<<<< HEAD
*
-=======
- *
->>>>>>> master
* @param node
* node to update
* @param target
diff --git a/wicket-request/src/main/java/org/apache/wicket/request/Url.java b/wicket-request/src/main/java/org/apache/wicket/request/Url.java
index e9d4e71..be52c5b 100755
--- a/wicket-request/src/main/java/org/apache/wicket/request/Url.java
+++ b/wicket-request/src/main/java/org/apache/wicket/request/Url.java
@@ -18,6 +18,7 @@ package org.apache.wicket.request;
import java.io.Serializable;
import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
@@ -73,8 +74,6 @@ public class Url implements Serializable
{
private static final long serialVersionUID = 1L;
- private static final String DEFAULT_CHARSET_NAME = "UTF-8";
-
private final List<String> segments;
private final List<QueryParameter> parameters;
@@ -423,13 +422,14 @@ public class Url implements Serializable
*/
public Charset getCharset()
{
- if (Strings.isEmpty(charsetName))
- {
- charsetName = DEFAULT_CHARSET_NAME;
- }
if (_charset == null)
{
- _charset = Charset.forName(charsetName);
+ if (Strings.isEmpty(charsetName))
+ {
+ _charset = StandardCharsets.UTF_8;
+ } else {
+ _charset = Charset.forName(charsetName);
+ }
}
return _charset;
}
@@ -442,7 +442,7 @@ public class Url implements Serializable
{
if (charset == null)
{
- charsetName = "UTF-8";
+ charsetName = null;
_charset = null;
}
else
@@ -994,7 +994,7 @@ public class Url implements Serializable
@Override
public String toString()
{
- return toString(Charset.forName(DEFAULT_CHARSET_NAME));
+ return toString(StandardCharsets.UTF_8);
}
/**
diff --git a/wicket-request/src/main/java/org/apache/wicket/request/http/WebResponse.java b/wicket-request/src/main/java/org/apache/wicket/request/http/WebResponse.java
index 5b508f7..2df29ef 100644
--- a/wicket-request/src/main/java/org/apache/wicket/request/http/WebResponse.java
+++ b/wicket-request/src/main/java/org/apache/wicket/request/http/WebResponse.java
@@ -17,6 +17,7 @@
package org.apache.wicket.request.http;
import java.io.IOException;
+import java.nio.charset.StandardCharsets;
import javax.servlet.http.Cookie;
@@ -175,7 +176,7 @@ public abstract class WebResponse extends Response
{
return (Strings.isEmpty(filename) ? "" : String.format(
"; filename=\"%1$s\"; filename*=UTF-8''%1$s",
- UrlEncoder.HEADER_INSTANCE.encode(filename, "UTF-8")));
+ UrlEncoder.HEADER_INSTANCE.encode(filename, StandardCharsets.UTF_8)));
}
/**
diff --git a/wicket-util/src/main/java/org/apache/wicket/util/encoding/UrlDecoder.java b/wicket-util/src/main/java/org/apache/wicket/util/encoding/UrlDecoder.java
index 2e2f969..f1ef0e2 100644
--- a/wicket-util/src/main/java/org/apache/wicket/util/encoding/UrlDecoder.java
+++ b/wicket-util/src/main/java/org/apache/wicket/util/encoding/UrlDecoder.java
@@ -18,7 +18,10 @@ package org.apache.wicket.util.encoding;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
+import java.nio.charset.IllegalCharsetNameException;
+import java.nio.charset.UnsupportedCharsetException;
+import org.apache.wicket.util.lang.Args;
import org.apache.wicket.util.string.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -75,20 +78,29 @@ public class UrlDecoder
* @return decoded string
* @see java.net.URLDecoder#decode(String, String)
*/
- public String decode(final String s, final Charset enc)
+ public String decode(final String s, final String enc)
{
- return decode(s, enc.name());
+ Args.notNull(enc, "enc");
+
+ try
+ {
+ return decode(s, Charset.forName(enc));
+ }
+ catch (IllegalCharsetNameException | UnsupportedCharsetException e)
+ {
+ throw new RuntimeException(new UnsupportedEncodingException(enc));
+ }
}
/**
* @param s
* string to decode
- * @param enc
+ * @param charset
* encoding to decode with
* @return decoded string
* @see java.net.URLDecoder#decode(String, String)
*/
- public String decode(final String s, final String enc)
+ public String decode(final String s, final Charset charset)
{
if (Strings.isEmpty(s))
{
@@ -99,11 +111,7 @@ public class UrlDecoder
StringBuilder sb = new StringBuilder(numChars > 500 ? numChars / 2 : numChars);
int i = 0;
- if (enc.length() == 0)
- {
- throw new RuntimeException(new UnsupportedEncodingException(
- "URLDecoder: empty string enc parameter"));
- }
+ Args.notNull(charset, "charset");
char c;
byte[] bytes = null;
@@ -154,14 +162,7 @@ public class UrlDecoder
break;
}
- try
- {
- sb.append(new String(bytes, 0, pos, enc));
- }
- catch (UnsupportedEncodingException e)
- {
- throw new RuntimeException(e);
- }
+ sb.append(new String(bytes, 0, pos, charset));
}
catch (NumberFormatException e)
{
@@ -183,4 +184,4 @@ public class UrlDecoder
// that way none will come through
return sb.toString().replace("\0", "NULL");
}
-}
\ No newline at end of file
+}
diff --git a/wicket-util/src/main/java/org/apache/wicket/util/encoding/UrlEncoder.java b/wicket-util/src/main/java/org/apache/wicket/util/encoding/UrlEncoder.java
index 85b18bd..dd452a6 100644
--- a/wicket-util/src/main/java/org/apache/wicket/util/encoding/UrlEncoder.java
+++ b/wicket-util/src/main/java/org/apache/wicket/util/encoding/UrlEncoder.java
@@ -226,41 +226,40 @@ public class UrlEncoder
/**
* @param s
* string to encode
- * @param charset
+ * @param charsetName
* charset to use for encoding
* @return encoded string
* @see java.net.URLEncoder#encode(String, String)
*/
- public String encode(final String s, final Charset charset)
+ public String encode(final String s, final String charsetName)
{
- return encode(s, charset.name());
+ Args.notNull(charsetName, "charsetName");
+
+ try
+ {
+ return encode(s, Charset.forName(charsetName));
+ }
+ catch (IllegalCharsetNameException | UnsupportedCharsetException e)
+ {
+ throw new RuntimeException(new UnsupportedEncodingException(charsetName));
+ }
}
/**
* @param unsafeInput
* string to encode
- * @param charsetName
+ * @param charset
* encoding to use
* @return encoded string
* @see java.net.URLEncoder#encode(String, String)
*/
- public String encode(final String unsafeInput, final String charsetName)
+ public String encode(final String unsafeInput, final Charset charset)
{
final String s = unsafeInput.replace("\0", "NULL");
StringBuilder out = new StringBuilder(s.length());
- Charset charset;
CharArrayWriter charArrayWriter = new CharArrayWriter();
- Args.notNull(charsetName, "charsetName");
-
- try
- {
- charset = Charset.forName(charsetName);
- }
- catch (IllegalCharsetNameException | UnsupportedCharsetException e)
- {
- throw new RuntimeException(new UnsupportedEncodingException(charsetName));
- }
+ Args.notNull(charset, "charset");
for (int i = 0; i < s.length();)
{
diff --git a/wicket-util/src/main/java/org/apache/wicket/util/file/Files.java b/wicket-util/src/main/java/org/apache/wicket/util/file/Files.java
index ca61c6f..431b148 100644
--- a/wicket-util/src/main/java/org/apache/wicket/util/file/Files.java
+++ b/wicket-util/src/main/java/org/apache/wicket/util/file/Files.java
@@ -24,6 +24,7 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
+import java.nio.charset.StandardCharsets;
import org.apache.wicket.util.encoding.UrlDecoder;
import org.apache.wicket.util.io.IOUtils;
@@ -364,7 +365,7 @@ public class Files
public static File getLocalFileFromUrl(URL url)
{
final URL location = Args.notNull(url, "url");
- return getLocalFileFromUrl(UrlDecoder.PATH_INSTANCE.decode(location.toExternalForm(), "UTF-8"));
+ return getLocalFileFromUrl(UrlDecoder.PATH_INSTANCE.decode(location.toExternalForm(), StandardCharsets.UTF_8));
}
/**
diff --git a/wicket-util/src/test/java/org/apache/wicket/util/encoding/UrlDecoderTest.java b/wicket-util/src/test/java/org/apache/wicket/util/encoding/UrlDecoderTest.java
index 9b01915..b599804 100644
--- a/wicket-util/src/test/java/org/apache/wicket/util/encoding/UrlDecoderTest.java
+++ b/wicket-util/src/test/java/org/apache/wicket/util/encoding/UrlDecoderTest.java
@@ -18,6 +18,8 @@ package org.apache.wicket.util.encoding;
import static org.junit.Assert.assertEquals;
+import java.nio.charset.StandardCharsets;
+
import org.junit.Test;
@SuppressWarnings("javadoc")
@@ -27,7 +29,7 @@ public class UrlDecoderTest
public void mustNotEmitNullByteForPath() throws Exception
{
String evil = "http://www.devil.com/highway/to%00hell";
- String decoded = UrlDecoder.PATH_INSTANCE.decode(evil, "UTF-8");
+ String decoded = UrlDecoder.PATH_INSTANCE.decode(evil, StandardCharsets.UTF_8);
assertEquals(-1, decoded.indexOf('\0'));
assertEquals("http://www.devil.com/highway/toNULLhell", decoded);
}
@@ -36,7 +38,7 @@ public class UrlDecoderTest
public void mustNotEmitNullByteForQuery() throws Exception
{
String evil = "http://www.devil.com/highway?destination=%00hell";
- String decoded = UrlDecoder.QUERY_INSTANCE.decode(evil, "UTF-8");
+ String decoded = UrlDecoder.QUERY_INSTANCE.decode(evil, StandardCharsets.UTF_8);
assertEquals(-1, decoded.indexOf('\0'));
assertEquals("http://www.devil.com/highway?destination=NULLhell", decoded);
}
@@ -48,15 +50,15 @@ public class UrlDecoderTest
public void badUrlEntities() throws Exception
{
String url = "http://localhost/test?a=%%%";
- String decoded = UrlDecoder.QUERY_INSTANCE.decode(url, "UTF-8");
+ String decoded = UrlDecoder.QUERY_INSTANCE.decode(url, StandardCharsets.UTF_8);
assertEquals("http://localhost/test?a=", decoded);
url = "http://localhost/test?%%%";
- decoded = UrlDecoder.QUERY_INSTANCE.decode(url, "UTF-8");
+ decoded = UrlDecoder.QUERY_INSTANCE.decode(url, StandardCharsets.UTF_8);
assertEquals("http://localhost/test?", decoded);
url = "http://localhost/test?%a=%b%";
- decoded = UrlDecoder.QUERY_INSTANCE.decode(url, "UTF-8");
+ decoded = UrlDecoder.QUERY_INSTANCE.decode(url, StandardCharsets.UTF_8);
assertEquals("http://localhost/test?a=b", decoded);
}
}
diff --git a/wicket-util/src/test/java/org/apache/wicket/util/encoding/UrlEncoderTest.java b/wicket-util/src/test/java/org/apache/wicket/util/encoding/UrlEncoderTest.java
index 1f86c05..f30c1e8 100644
--- a/wicket-util/src/test/java/org/apache/wicket/util/encoding/UrlEncoderTest.java
+++ b/wicket-util/src/test/java/org/apache/wicket/util/encoding/UrlEncoderTest.java
@@ -16,13 +16,15 @@
*/
package org.apache.wicket.util.encoding;
-import org.apache.wicket.util.crypt.CharEncoding;
-import org.apache.wicket.util.encoding.UrlEncoder;
-import org.junit.Assert;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+
+import java.nio.charset.StandardCharsets;
+
import org.junit.Test;
@SuppressWarnings("javadoc")
-public class UrlEncoderTest extends Assert
+public class UrlEncoderTest
{
// starts with ä
@@ -32,11 +34,11 @@ public class UrlEncoderTest extends Assert
public void pathUnencoded() {
String unencoded = "azAZ09.-_~!$&*+,;=:@";
- assertEquals(unencoded, UrlEncoder.PATH_INSTANCE.encode(unencoded, CharEncoding.UTF_8));
+ assertEquals(unencoded, UrlEncoder.PATH_INSTANCE.encode(unencoded, StandardCharsets.UTF_8));
for (char candidate : encodingCandidates) {
if (unencoded.indexOf(candidate) == -1) {
- assertNotEquals("" + candidate, UrlEncoder.PATH_INSTANCE.encode("" + candidate, CharEncoding.UTF_8));
+ assertNotEquals("" + candidate, UrlEncoder.PATH_INSTANCE.encode("" + candidate, StandardCharsets.UTF_8));
}
}
}
@@ -45,11 +47,11 @@ public class UrlEncoderTest extends Assert
public void queryStringUnencoded() {
String unencoded = "azAZ09.-_~!$*,:@/";
- assertEquals(unencoded, UrlEncoder.QUERY_INSTANCE.encode(unencoded, CharEncoding.UTF_8));
+ assertEquals(unencoded, UrlEncoder.QUERY_INSTANCE.encode(unencoded, StandardCharsets.UTF_8));
for (char candidate : encodingCandidates) {
if (unencoded.indexOf(candidate) == -1) {
- assertNotEquals("" + candidate, UrlEncoder.QUERY_INSTANCE.encode("" + candidate, CharEncoding.UTF_8));
+ assertNotEquals("" + candidate, UrlEncoder.QUERY_INSTANCE.encode("" + candidate, StandardCharsets.UTF_8));
}
}
}
@@ -58,11 +60,11 @@ public class UrlEncoderTest extends Assert
public void headerUnencoded() {
String unencoded = "azAZ09.-_~!$&+#^`|";
- assertEquals(unencoded, UrlEncoder.HEADER_INSTANCE.encode(unencoded, CharEncoding.UTF_8));
+ assertEquals(unencoded, UrlEncoder.HEADER_INSTANCE.encode(unencoded, StandardCharsets.UTF_8));
for (char candidate : encodingCandidates) {
if (unencoded.indexOf(candidate) == -1) {
- assertNotEquals("" + candidate, UrlEncoder.HEADER_INSTANCE.encode("" + candidate, CharEncoding.UTF_8));
+ assertNotEquals("" + candidate, UrlEncoder.HEADER_INSTANCE.encode("" + candidate, StandardCharsets.UTF_8));
}
}
}
@@ -76,7 +78,7 @@ public class UrlEncoderTest extends Assert
public void encodeApostrophe()
{
assertEquals("someone%27s%20bad%20url",
- UrlEncoder.PATH_INSTANCE.encode("someone's bad url", CharEncoding.UTF_8));
+ UrlEncoder.PATH_INSTANCE.encode("someone's bad url", StandardCharsets.UTF_8));
}
/**
@@ -88,7 +90,7 @@ public class UrlEncoderTest extends Assert
public void dontEncodeSemicolon()
{
String encoded = UrlEncoder.PATH_INSTANCE.encode("path;jsessionid=1234567890",
- CharEncoding.UTF_8);
+ StandardCharsets.UTF_8);
assertEquals("path;jsessionid=1234567890", encoded);
}
@@ -96,6 +98,6 @@ public class UrlEncoderTest extends Assert
public void dontStopOnNullByte() throws Exception
{
assertEquals("someone%27s%20badNULL%20url",
- UrlEncoder.PATH_INSTANCE.encode("someone's bad\0 url", CharEncoding.UTF_8));
+ UrlEncoder.PATH_INSTANCE.encode("someone's bad\0 url", StandardCharsets.UTF_8));
}
}