diff --git a/src/java.base/share/classes/java/net/URLDecoder.java b/src/java.base/share/classes/java/net/URLDecoder.java index 8a67e8b06cd..ff2250fadf5 100644 --- a/src/java.base/share/classes/java/net/URLDecoder.java +++ b/src/java.base/share/classes/java/net/URLDecoder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2023, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,8 @@ package java.net; +import jdk.internal.util.StaticProperty; + import java.io.*; import java.nio.charset.Charset; import java.nio.charset.IllegalCharsetNameException; @@ -89,7 +91,7 @@ public class URLDecoder { private URLDecoder() {} // The default charset - static String dfltEncName = URLEncoder.dfltEncName; + private static final String DEFAULT_ENCODING_NAME = StaticProperty.fileEncoding(); /** * Decodes a {@code x-www-form-urlencoded} string. @@ -108,7 +110,7 @@ public class URLDecoder { String str = null; try { - str = decode(s, dfltEncName); + str = decode(s, DEFAULT_ENCODING_NAME); } catch (UnsupportedEncodingException e) { // The system should always have the default charset } diff --git a/src/java.base/share/classes/java/net/URLEncoder.java b/src/java.base/share/classes/java/net/URLEncoder.java index b48c90c5285..3c143dbd5b3 100644 --- a/src/java.base/share/classes/java/net/URLEncoder.java +++ b/src/java.base/share/classes/java/net/URLEncoder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1995, 2023, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -77,9 +77,9 @@ import jdk.internal.util.StaticProperty; * @since 1.0 */ public class URLEncoder { - static BitSet dontNeedEncoding; - static final int caseDiff = ('a' - 'A'); - static String dfltEncName; + private static final BitSet DONT_NEED_ENCODING; + private static final int CASE_DIFF = ('a' - 'A'); + private static final String DEFAULT_ENCODING_NAME; static { @@ -119,25 +119,19 @@ public class URLEncoder { * */ - dontNeedEncoding = new BitSet(256); - int i; - for (i = 'a'; i <= 'z'; i++) { - dontNeedEncoding.set(i); - } - for (i = 'A'; i <= 'Z'; i++) { - dontNeedEncoding.set(i); - } - for (i = '0'; i <= '9'; i++) { - dontNeedEncoding.set(i); - } - dontNeedEncoding.set(' '); /* encoding a space to a + is done - * in the encode() method */ - dontNeedEncoding.set('-'); - dontNeedEncoding.set('_'); - dontNeedEncoding.set('.'); - dontNeedEncoding.set('*'); + DONT_NEED_ENCODING = new BitSet(128); - dfltEncName = StaticProperty.fileEncoding(); + DONT_NEED_ENCODING.set('a', 'z' + 1); + DONT_NEED_ENCODING.set('A', 'Z' + 1); + DONT_NEED_ENCODING.set('0', '9' + 1); + DONT_NEED_ENCODING.set(' '); /* encoding a space to a + is done + * in the encode() method */ + DONT_NEED_ENCODING.set('-'); + DONT_NEED_ENCODING.set('_'); + DONT_NEED_ENCODING.set('.'); + DONT_NEED_ENCODING.set('*'); + + DEFAULT_ENCODING_NAME = StaticProperty.fileEncoding(); } /** @@ -162,7 +156,7 @@ public class URLEncoder { String str = null; try { - str = encode(s, dfltEncName); + str = encode(s, DEFAULT_ENCODING_NAME); } catch (UnsupportedEncodingException e) { // The system should always have the default charset } @@ -230,7 +224,7 @@ public class URLEncoder { for (int i = 0; i < s.length();) { int c = s.charAt(i); //System.out.println("Examining character: " + c); - if (dontNeedEncoding.get(c)) { + if (DONT_NEED_ENCODING.get(c)) { if (c == ' ') { c = '+'; needToChange = true; @@ -273,7 +267,7 @@ public class URLEncoder { } } i++; - } while (i < s.length() && !dontNeedEncoding.get((c = s.charAt(i)))); + } while (i < s.length() && !DONT_NEED_ENCODING.get((c = s.charAt(i)))); charArrayWriter.flush(); String str = charArrayWriter.toString(); @@ -284,12 +278,12 @@ public class URLEncoder { // converting to use uppercase letter as part of // the hex value if ch is a letter. if (Character.isLetter(ch)) { - ch -= caseDiff; + ch -= CASE_DIFF; } out.append(ch); ch = Character.forDigit(b & 0xF, 16); if (Character.isLetter(ch)) { - ch -= caseDiff; + ch -= CASE_DIFF; } out.append(ch); }