56
56
* @author Arjen Poutsma
57
57
* @since 6.2
58
58
*/
59
- final class UrlParser {
59
+ final class WhatWgUrlParser {
60
60
61
- private static final Log logger = LogFactory .getLog (UrlParser .class );
61
+ private static final Log logger = LogFactory .getLog (WhatWgUrlParser .class );
62
62
63
63
private static final int EOF = -1 ;
64
64
@@ -98,7 +98,7 @@ final class UrlParser {
98
98
private boolean stopMainLoop = false ;
99
99
100
100
101
- private UrlParser (
101
+ private WhatWgUrlParser (
102
102
String input , @ Nullable UrlRecord base , @ Nullable Charset encoding ,
103
103
@ Nullable Consumer <String > validationErrorHandler ) {
104
104
@@ -131,7 +131,7 @@ public static UrlRecord parse(String input, @Nullable UrlRecord base,
131
131
132
132
Assert .notNull (input , "Input must not be null" );
133
133
134
- UrlParser parser = new UrlParser (input , base , encoding , validationErrorHandler );
134
+ WhatWgUrlParser parser = new WhatWgUrlParser (input , base , encoding , validationErrorHandler );
135
135
return parser .basicUrlParser (null , null );
136
136
}
137
137
@@ -743,7 +743,7 @@ private enum State {
743
743
744
744
SCHEME_START {
745
745
@ Override
746
- public void handle (int c , UrlRecord url , UrlParser p ) {
746
+ public void handle (int c , UrlRecord url , WhatWgUrlParser p ) {
747
747
// If c is an ASCII alpha, append c, lowercased, to buffer, and set state to scheme state.
748
748
if (isAsciiAlpha (c )) {
749
749
p .append (Character .toLowerCase ((char ) c ));
@@ -770,7 +770,7 @@ else if (p.stateOverride == null) {
770
770
},
771
771
SCHEME {
772
772
@ Override
773
- public void handle (int c , UrlRecord url , UrlParser p ) {
773
+ public void handle (int c , UrlRecord url , WhatWgUrlParser p ) {
774
774
// If c is an ASCII alphanumeric, U+002B (+), U+002D (-), or U+002E (.), append c, lowercased, to buffer.
775
775
if (isAsciiAlphaNumeric (c ) || (c == '+' || c == '-' || c == '.' )) {
776
776
p .append (Character .toLowerCase ((char ) c ));
@@ -868,7 +868,7 @@ else if (p.stateOverride == null) {
868
868
},
869
869
NO_SCHEME {
870
870
@ Override
871
- public void handle (int c , UrlRecord url , UrlParser p ) {
871
+ public void handle (int c , UrlRecord url , WhatWgUrlParser p ) {
872
872
// If base is null, or base has an opaque path and c is not U+0023 (#),
873
873
// missing-scheme-non-relative-URL validation error, return failure.
874
874
if (p .base == null || p .base .path ().isOpaque () && c != '#' ) {
@@ -901,7 +901,7 @@ else if (!"file".equals(p.base.scheme())) {
901
901
},
902
902
SPECIAL_RELATIVE_OR_AUTHORITY {
903
903
@ Override
904
- public void handle (int c , UrlRecord url , UrlParser p ) {
904
+ public void handle (int c , UrlRecord url , WhatWgUrlParser p ) {
905
905
// If c is U+002F (/) and remaining starts with U+002F (/),
906
906
// then set state to special authority ignore slashes state and
907
907
// increase pointer by 1.
@@ -922,7 +922,7 @@ public void handle(int c, UrlRecord url, UrlParser p) {
922
922
},
923
923
PATH_OR_AUTHORITY {
924
924
@ Override
925
- public void handle (int c , UrlRecord url , UrlParser p ) {
925
+ public void handle (int c , UrlRecord url , WhatWgUrlParser p ) {
926
926
// If c is U+002F (/), then set state to authority state.
927
927
if (c == '/' ) {
928
928
p .setState (AUTHORITY );
@@ -936,7 +936,7 @@ public void handle(int c, UrlRecord url, UrlParser p) {
936
936
},
937
937
RELATIVE {
938
938
@ Override
939
- public void handle (int c , UrlRecord url , UrlParser p ) {
939
+ public void handle (int c , UrlRecord url , WhatWgUrlParser p ) {
940
940
// Assert: base’s scheme is not "file".
941
941
Assert .state (p .base != null && !"file" .equals (p .base .scheme ()),
942
942
"Base scheme not provided or supported" );
@@ -994,7 +994,7 @@ else if (c != EOF) {
994
994
},
995
995
RELATIVE_SLASH {
996
996
@ Override
997
- public void handle (int c , UrlRecord url , UrlParser p ) {
997
+ public void handle (int c , UrlRecord url , WhatWgUrlParser p ) {
998
998
// If url is special and c is U+002F (/) or U+005C (\), then:
999
999
if (url .isSpecial () && (c == '/' || c == '\\' )) {
1000
1000
// If c is U+005C (\), invalid-reverse-solidus validation error.
@@ -1027,7 +1027,7 @@ else if (c == '/') {
1027
1027
},
1028
1028
SPECIAL_AUTHORITY_SLASHES {
1029
1029
@ Override
1030
- public void handle (int c , UrlRecord url , UrlParser p ) {
1030
+ public void handle (int c , UrlRecord url , WhatWgUrlParser p ) {
1031
1031
// If c is U+002F (/) and remaining starts with U+002F (/),
1032
1032
// then set state to special authority ignore slashes state and
1033
1033
// increase pointer by 1.
@@ -1048,7 +1048,7 @@ public void handle(int c, UrlRecord url, UrlParser p) {
1048
1048
},
1049
1049
SPECIAL_AUTHORITY_IGNORE_SLASHES {
1050
1050
@ Override
1051
- public void handle (int c , UrlRecord url , UrlParser p ) {
1051
+ public void handle (int c , UrlRecord url , WhatWgUrlParser p ) {
1052
1052
// If c is neither U+002F (/) nor U+005C (\),
1053
1053
// then set state to authority state and decrease pointer by 1.
1054
1054
if (c != '/' && c != '\\' ) {
@@ -1065,7 +1065,7 @@ public void handle(int c, UrlRecord url, UrlParser p) {
1065
1065
},
1066
1066
AUTHORITY {
1067
1067
@ Override
1068
- public void handle (int c , UrlRecord url , UrlParser p ) {
1068
+ public void handle (int c , UrlRecord url , WhatWgUrlParser p ) {
1069
1069
// If c is U+0040 (@), then:
1070
1070
if (c == '@' ) {
1071
1071
// Invalid-credentials validation error.
@@ -1091,7 +1091,7 @@ public void handle(int c, UrlRecord url, UrlParser p) {
1091
1091
}
1092
1092
// Let encodedCodePoints be the result of running UTF-8 percent-encode codePoint
1093
1093
// using the userinfo percent-encode set.
1094
- String encodedCodePoints = p .percentEncode (codePoint , UrlParser ::userinfoPercentEncodeSet );
1094
+ String encodedCodePoints = p .percentEncode (codePoint , WhatWgUrlParser ::userinfoPercentEncodeSet );
1095
1095
// If passwordTokenSeen is true, then append encodedCodePoints to url’s password.
1096
1096
if (p .passwordTokenSeen ) {
1097
1097
if (encodedCodePoints != null ) {
@@ -1137,7 +1137,7 @@ else if ((c == EOF || c == '/' || c == '?' || c == '#') || (url.isSpecial() && c
1137
1137
},
1138
1138
HOST {
1139
1139
@ Override
1140
- public void handle (int c , UrlRecord url , UrlParser p ) {
1140
+ public void handle (int c , UrlRecord url , WhatWgUrlParser p ) {
1141
1141
// If state override is given and url’s scheme is "file",
1142
1142
// then decrease pointer by 1 and set state to file host state.
1143
1143
if (p .stateOverride != null && "file" .equals (url .scheme ())) {
@@ -1214,7 +1214,7 @@ else if (c == ']') {
1214
1214
},
1215
1215
PORT {
1216
1216
@ Override
1217
- public void handle (int c , UrlRecord url , UrlParser p ) {
1217
+ public void handle (int c , UrlRecord url , WhatWgUrlParser p ) {
1218
1218
// If c is an ASCII digit, append c to buffer.
1219
1219
if (isAsciiDigit (c )) {
1220
1220
p .append (c );
@@ -1281,7 +1281,7 @@ else if (c == EOF || c == '/' || c == '?' || c == '#' ||
1281
1281
},
1282
1282
FILE {
1283
1283
@ Override
1284
- public void handle (int c , UrlRecord url , UrlParser p ) {
1284
+ public void handle (int c , UrlRecord url , WhatWgUrlParser p ) {
1285
1285
// Set url’s scheme to "file".
1286
1286
url .scheme = "file" ;
1287
1287
// Set url’s host to the empty string.
@@ -1347,7 +1347,7 @@ else if (c != EOF) {
1347
1347
},
1348
1348
FILE_SLASH {
1349
1349
@ Override
1350
- public void handle (int c , UrlRecord url , UrlParser p ) {
1350
+ public void handle (int c , UrlRecord url , WhatWgUrlParser p ) {
1351
1351
// If c is U+002F (/) or U+005C (\), then:
1352
1352
if (c == '/' || c == '\\' ) {
1353
1353
// If c is U+005C (\), invalid-reverse-solidus validation error.
@@ -1382,7 +1382,7 @@ public void handle(int c, UrlRecord url, UrlParser p) {
1382
1382
},
1383
1383
FILE_HOST {
1384
1384
@ Override
1385
- public void handle (int c , UrlRecord url , UrlParser p ) {
1385
+ public void handle (int c , UrlRecord url , WhatWgUrlParser p ) {
1386
1386
// If c is the EOF code point, U+002F (/), U+005C (\), U+003F (?), or U+0023 (#),
1387
1387
// then decrease pointer by 1 and then:
1388
1388
if (c == EOF || c == '/' || c == '\\' || c == '?' || c == '#' ) {
@@ -1433,7 +1433,7 @@ else if (p.buffer.isEmpty()) {
1433
1433
},
1434
1434
PATH_START {
1435
1435
@ Override
1436
- public void handle (int c , UrlRecord url , UrlParser p ) {
1436
+ public void handle (int c , UrlRecord url , WhatWgUrlParser p ) {
1437
1437
// If url is special, then:
1438
1438
if (url .isSpecial ()) {
1439
1439
// If c is U+005C (\), invalid-reverse-solidus validation error.
@@ -1484,7 +1484,7 @@ else if (p.stateOverride != null && url.host() == null) {
1484
1484
},
1485
1485
PATH {
1486
1486
@ Override
1487
- public void handle (int c , UrlRecord url , UrlParser p ) {
1487
+ public void handle (int c , UrlRecord url , WhatWgUrlParser p ) {
1488
1488
// If one of the following is true:
1489
1489
// - c is the EOF code point or U+002F (/)
1490
1490
// - url is special and c is U+005C (\)
@@ -1563,7 +1563,7 @@ else if (c == '%' &&
1563
1563
}
1564
1564
}
1565
1565
// UTF-8 percent-encode c using the path percent-encode set and append the result to buffer.
1566
- String encoded = p .percentEncode (c , UrlParser ::pathPercentEncodeSet );
1566
+ String encoded = p .percentEncode (c , WhatWgUrlParser ::pathPercentEncodeSet );
1567
1567
if (encoded != null ) {
1568
1568
p .append (encoded );
1569
1569
}
@@ -1575,7 +1575,7 @@ else if (c == '%' &&
1575
1575
},
1576
1576
OPAQUE_PATH {
1577
1577
@ Override
1578
- public void handle (int c , UrlRecord url , UrlParser p ) {
1578
+ public void handle (int c , UrlRecord url , WhatWgUrlParser p ) {
1579
1579
// EXTRA: if previous state is URL Template and the buffer is empty,
1580
1580
// append buffer to url's path and empty the buffer
1581
1581
if (p .previousState == URL_TEMPLATE && !p .buffer .isEmpty ()) {
@@ -1618,7 +1618,7 @@ else if (c == '%' &&
1618
1618
// If c is not the EOF code point, UTF-8 percent-encode c using
1619
1619
// the C0 control percent-encode set and append the result to url’s path.
1620
1620
if (c != EOF ) {
1621
- String encoded = p .percentEncode (c , UrlParser ::c0ControlPercentEncodeSet );
1621
+ String encoded = p .percentEncode (c , WhatWgUrlParser ::c0ControlPercentEncodeSet );
1622
1622
if (encoded != null ) {
1623
1623
url .path .append (encoded );
1624
1624
}
@@ -1631,7 +1631,7 @@ else if (c == '%' &&
1631
1631
},
1632
1632
QUERY {
1633
1633
@ Override
1634
- public void handle (int c , UrlRecord url , UrlParser p ) {
1634
+ public void handle (int c , UrlRecord url , WhatWgUrlParser p ) {
1635
1635
// If encoding is not UTF-8 and one of the following is true:
1636
1636
// - url is not special
1637
1637
// - url’s scheme is "ws" or "wss"
@@ -1648,7 +1648,7 @@ public void handle(int c, UrlRecord url, UrlParser p) {
1648
1648
// Let queryPercentEncodeSet be the special-query percent-encode set if url is special;
1649
1649
// otherwise the query percent-encode set.
1650
1650
IntPredicate queryPercentEncodeSet = (url .isSpecial () ?
1651
- UrlParser ::specialQueryPercentEncodeSet : UrlParser ::queryPercentEncodeSet );
1651
+ WhatWgUrlParser ::specialQueryPercentEncodeSet : WhatWgUrlParser ::queryPercentEncodeSet );
1652
1652
// Percent-encode after encoding, with encoding, buffer, and queryPercentEncodeSet,
1653
1653
// and append the result to url’s query.
1654
1654
String encoded = p .percentEncode (p .buffer .toString (), queryPercentEncodeSet );
@@ -1690,7 +1690,7 @@ else if (c == '%' &&
1690
1690
},
1691
1691
FRAGMENT {
1692
1692
@ Override
1693
- public void handle (int c , UrlRecord url , UrlParser p ) {
1693
+ public void handle (int c , UrlRecord url , WhatWgUrlParser p ) {
1694
1694
// If c is not the EOF code point, then:
1695
1695
if (c != EOF ) {
1696
1696
if (p .validate ()) {
@@ -1709,7 +1709,7 @@ else if (c == '%' &&
1709
1709
}
1710
1710
// UTF-8 percent-encode c using the fragment percent-encode set and
1711
1711
// append the result to url’s fragment.
1712
- String encoded = p .percentEncode (c , UrlParser ::fragmentPercentEncodeSet );
1712
+ String encoded = p .percentEncode (c , WhatWgUrlParser ::fragmentPercentEncodeSet );
1713
1713
Assert .state (url .fragment != null , "Url's fragment should not be null" );
1714
1714
if (encoded != null ) {
1715
1715
url .fragment .append (encoded );
@@ -1722,7 +1722,7 @@ else if (c == '%' &&
1722
1722
},
1723
1723
URL_TEMPLATE {
1724
1724
@ Override
1725
- public void handle (int c , UrlRecord url , UrlParser p ) {
1725
+ public void handle (int c , UrlRecord url , WhatWgUrlParser p ) {
1726
1726
Assert .state (p .previousState != null , "No previous state set" );
1727
1727
if (c == '}' ) {
1728
1728
p .append (c );
@@ -1739,7 +1739,7 @@ else if (c == EOF) {
1739
1739
}
1740
1740
};
1741
1741
1742
- public abstract void handle (int c , UrlRecord url , UrlParser p );
1742
+ public abstract void handle (int c , UrlRecord url , WhatWgUrlParser p );
1743
1743
1744
1744
}
1745
1745
@@ -2133,7 +2133,7 @@ sealed interface Host permits Domain, EmptyHost, IpAddressHost, OpaqueHost {
2133
2133
* boolean isOpaque (default false), and then runs these steps.
2134
2134
* They return failure or a host.
2135
2135
*/
2136
- static Host parse (String input , boolean isOpaque , UrlParser p ) {
2136
+ static Host parse (String input , boolean isOpaque , WhatWgUrlParser p ) {
2137
2137
// If input starts with U+005B ([), then:
2138
2138
if (!input .isEmpty () && input .codePointAt (0 ) == '[' ) {
2139
2139
int last = input .length () - 1 ;
@@ -2303,7 +2303,7 @@ private OpaqueHost(String host) {
2303
2303
* The opaque-host parser takes a scalar value string input,
2304
2304
* and then runs these steps. They return failure or an opaque host.
2305
2305
*/
2306
- public static OpaqueHost parse (String input , UrlParser p ) {
2306
+ public static OpaqueHost parse (String input , WhatWgUrlParser p ) {
2307
2307
for (int i = 0 ; i < input .length (); i ++) {
2308
2308
int ch = input .codePointAt (i );
2309
2309
// If input contains a forbidden host code point, h
@@ -2326,7 +2326,7 @@ public static OpaqueHost parse(String input, UrlParser p) {
2326
2326
}
2327
2327
// Return the result of running UTF-8 percent-encode on input
2328
2328
// using the C0 control percent-encode set.
2329
- String encoded = p .percentEncode (input , UrlParser ::c0ControlPercentEncodeSet );
2329
+ String encoded = p .percentEncode (input , WhatWgUrlParser ::c0ControlPercentEncodeSet );
2330
2330
return new OpaqueHost (encoded );
2331
2331
}
2332
2332
@@ -2420,7 +2420,7 @@ private static String serialize(int address) {
2420
2420
return output .toString ();
2421
2421
}
2422
2422
2423
- public static Ipv4Address parse (String input , UrlParser p ) {
2423
+ public static Ipv4Address parse (String input , WhatWgUrlParser p ) {
2424
2424
// Let parts be the result of strictly splitting input on U+002E (.).
2425
2425
List <String > parts = strictSplit (input , '.' );
2426
2426
int partsSize = parts .size ();
0 commit comments