This is related to JDK-8037396, where query and fragment parts were fixed.
However, the same issue persists for the scheme specific part.
Consider following code as an example:
URI uri;
uri = new URI("s", "s#s", null);
System.out.println("SSP s#s is: "+uri.getSchemeSpecificPart());
uri = new URI("s", "s[#s", null);
System.out.println("SSP s[#s is: "+uri.getSchemeSpecificPart());
It prints out:
SSP s#s is: s#s
SSP s[#s is: s[%23s
The fix is simple, I believe:
diff -r a888f40a049a src/java.base/share/classes/java/net/URI.java
--- a/src/java.base/share/classes/java/net/URI.java Thu Jul 13 17:32:51 2017 +0000
+++ b/src/java.base/share/classes/java/net/URI.java Thu Jul 20 00:49:48 2017 +0200
@@ -1213,7 +1213,7 @@
public String getSchemeSpecificPart() {
String part = decodedSchemeSpecificPart;
if (part == null) {
- decodedSchemeSpecificPart = part = decode(getRawSchemeSpecificPart());
+ decodedSchemeSpecificPart = part = decode(getRawSchemeSpecificPart(), false);
}
return part;
}
However, the same issue persists for the scheme specific part.
Consider following code as an example:
URI uri;
uri = new URI("s", "s#s", null);
System.out.println("SSP s#s is: "+uri.getSchemeSpecificPart());
uri = new URI("s", "s[#s", null);
System.out.println("SSP s[#s is: "+uri.getSchemeSpecificPart());
It prints out:
SSP s#s is: s#s
SSP s[#s is: s[%23s
The fix is simple, I believe:
diff -r a888f40a049a src/java.base/share/classes/java/net/URI.java
--- a/src/java.base/share/classes/java/net/URI.java Thu Jul 13 17:32:51 2017 +0000
+++ b/src/java.base/share/classes/java/net/URI.java Thu Jul 20 00:49:48 2017 +0200
@@ -1213,7 +1213,7 @@
public String getSchemeSpecificPart() {
String part = decodedSchemeSpecificPart;
if (part == null) {
- decodedSchemeSpecificPart = part = decode(getRawSchemeSpecificPart());
+ decodedSchemeSpecificPart = part = decode(getRawSchemeSpecificPart(), false);
}
return part;
}
- duplicates
-
JDK-8140634 URI getSchemeSpecificPart returns incorrect value
-
- Open
-