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 16:29:53 UTC
[wicket] branch master updated: 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 master
in repository https://gitbox.apache.org/repos/asf/wicket.git
The following commit(s) were added to refs/heads/master by this push:
new 7afa921 WICKET-6772 Use StandardCharsets.UTF_8 instead of looking up charsets
7afa921 is described below
commit 7afa9211b6efe88beec0a9b9a38639cd48f0ca72
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 | 3 +-
.../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 | 5 +--
.../ContextRelativeResourceCachingTest.java | 3 +-
.../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 | 20 ++++++------
19 files changed, 105 insertions(+), 85 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 2641300..b84758a 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.sql.Time;
import java.time.Instant;
import java.util.ArrayList;
@@ -276,7 +277,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 e3fdc5d..1074966 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
@@ -24,6 +24,7 @@ import static org.junit.jupiter.api.Assertions.fail;
import java.io.IOException;
import java.lang.reflect.Constructor;
import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import java.time.Instant;
import java.util.Map;
import java.util.regex.Matcher;
@@ -200,7 +201,7 @@ 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 5e68178..35491d4 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
@@ -19,6 +19,7 @@ package org.apache.wicket.core.request.mapper;
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import java.util.Locale;
import org.apache.wicket.request.Request;
@@ -58,7 +59,7 @@ abstract class 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/BookmarkableMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/BookmarkableMapperTest.java
index 0482352..2ceb57d 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
@@ -24,6 +24,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import java.util.Locale;
import org.apache.wicket.MockPage;
@@ -315,7 +316,7 @@ class BookmarkableMapperTest extends AbstractMapperTest
@Override
public Charset getCharset()
{
- return Charset.forName("UTF-8");
+ return StandardCharsets.UTF_8;
}
@Override
@@ -373,7 +374,7 @@ class BookmarkableMapperTest extends AbstractMapperTest
@Override
public Charset getCharset()
{
- return Charset.forName("UTF-8");
+ return StandardCharsets.UTF_8;
}
@Override
@@ -430,7 +431,7 @@ 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 e2281c8..5f720bc 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
@@ -22,6 +22,7 @@ import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import java.util.Locale;
import org.apache.wicket.MockPage;
@@ -210,7 +211,7 @@ class PageInstanceMapperTest extends AbstractMapperTest
@Override
public Charset getCharset()
{
- return Charset.forName("UTF-8");
+ return StandardCharsets.UTF_8;
}
@Override
@@ -255,7 +256,7 @@ 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 a31c508..4077ee2 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
@@ -21,6 +21,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Locale;
@@ -40,7 +41,7 @@ import org.junit.jupiter.api.Test;
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 508e200..cf74884 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 @@ 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 80da4ed..4ff4456 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
@@ -19,6 +19,7 @@ package org.apache.wicket.protocol.http;
import static org.junit.jupiter.api.Assertions.assertEquals;
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;
@@ -31,7 +32,7 @@ import org.junit.jupiter.api.Test;
class RequestUtilsTest
{
- private static final Charset UTF_8_CHARSET = Charset.forName("UTF-8");
+ private static final Charset UTF_8_CHARSET = StandardCharsets.UTF_8;
/**
*
@@ -181,9 +182,9 @@ class RequestUtilsTest
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 52e3158..0ad9541 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
@@ -22,6 +22,8 @@ import org.apache.wicket.util.encoding.UrlDecoder;
import org.apache.wicket.util.encoding.UrlEncoder;
import org.junit.jupiter.api.Test;
+import java.nio.charset.StandardCharsets;
+
/**
* @author Doug Donohoe
*/
@@ -33,8 +35,8 @@ class WicketURLTest
@Test
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));
}
/**
@@ -43,8 +45,8 @@ class WicketURLTest
@Test
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));
}
/**
@@ -53,8 +55,8 @@ class WicketURLTest
@Test
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));
}
/**
@@ -63,7 +65,7 @@ class WicketURLTest
@Test
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 ef3239a..340597d 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
@@ -19,6 +19,7 @@ package org.apache.wicket.request.resource;
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import org.junit.jupiter.api.Test;
@@ -38,7 +39,7 @@ class CharSequenceResourceTest
void getLength_UTF8_whenUnicodeSymbols_thenReturnTheBytesLength() throws Exception
{
CharSequenceResource resource = new CharSequenceResource("plain/text");
- resource.setCharset(Charset.forName("UTF-8"));
+ resource.setCharset(StandardCharsets.UTF_8);
assertEquals(Long.valueOf(5L), resource.getLength("a\u1234d"));
}
@@ -46,7 +47,7 @@ class CharSequenceResourceTest
void getLength_UTF16_whenUnicodeSymbols_thenReturnTheBytesLength() throws Exception
{
CharSequenceResource resource = new CharSequenceResource("plain/text");
- resource.setCharset(Charset.forName("UTF-16"));
+ resource.setCharset(StandardCharsets.UTF_16);
assertEquals(Long.valueOf(8L), resource.getLength("a\u1234d"));
}
}
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 3aeac68..8e9544e 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
@@ -21,6 +21,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
import java.util.Locale;
import org.apache.wicket.request.IRequestHandler;
@@ -40,7 +41,7 @@ import org.junit.jupiter.api.Test;
*/
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-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 89a1b3e..fd4133c 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 java.time.Duration;
import java.time.Instant;
import javax.servlet.http.Cookie;
@@ -182,7 +183,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 0f23cdf..7e2b340 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 4a24f3f..be8d71d 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 11bfccd..e8ba616 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 java.time.Instant;
import org.apache.wicket.util.encoding.UrlDecoder;
import org.apache.wicket.util.io.IOUtils;
@@ -363,7 +364,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 2db3f52..40ee8af 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 org.junit.jupiter.api.Test;
+import java.nio.charset.StandardCharsets;
+
import static org.junit.jupiter.api.Assertions.assertEquals;
@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 965256e..646f2e3 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
@@ -19,6 +19,8 @@ package org.apache.wicket.util.encoding;
import org.apache.wicket.util.crypt.CharEncoding;
import org.junit.jupiter.api.Test;
+import java.nio.charset.StandardCharsets;
+
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
@@ -33,11 +35,11 @@ public class UrlEncoderTest
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));
}
}
}
@@ -46,11 +48,11 @@ public class UrlEncoderTest
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));
}
}
}
@@ -59,11 +61,11 @@ public class UrlEncoderTest
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));
}
}
}
@@ -77,7 +79,7 @@ public class UrlEncoderTest
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));
}
/**
@@ -89,7 +91,7 @@ public class UrlEncoderTest
public void dontEncodeSemicolon()
{
String encoded = UrlEncoder.PATH_INSTANCE.encode("path;jsessionid=1234567890",
- CharEncoding.UTF_8);
+ StandardCharsets.UTF_8);
assertEquals("path;jsessionid=1234567890", encoded);
}
@@ -97,6 +99,6 @@ public class UrlEncoderTest
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));
}
}