30
30
*
31
31
* @author Rossen Stoyanchev
32
32
* @since 6.2
33
- *
34
33
* @see <a href="https://www.rfc-editor.org/info/rfc3986">RFC 3986</a>
35
34
*/
36
35
abstract class RfcUriParser {
@@ -78,10 +77,10 @@ private static void fail(InternalParser parser, String message) {
78
77
* @param query the query, if present
79
78
* @param fragment the fragment, if present
80
79
*/
81
- record UriRecord (@ Nullable String scheme , boolean isOpaque ,
82
- @ Nullable String user , @ Nullable String host , @ Nullable String port ,
83
- @ Nullable String path , @ Nullable String query , @ Nullable String fragment ) {
84
-
80
+ record UriRecord (
81
+ @ Nullable String scheme , boolean isOpaque ,
82
+ @ Nullable String user , @ Nullable String host , @ Nullable String port ,
83
+ @ Nullable String path , @ Nullable String query , @ Nullable String fragment ) {
85
84
}
86
85
87
86
@@ -130,6 +129,7 @@ public void handleEnd(InternalParser parser) {
130
129
}
131
130
},
132
131
132
+
133
133
HOST_OR_PATH {
134
134
135
135
@ Override
@@ -158,6 +158,7 @@ public void handleEnd(InternalParser parser) {
158
158
}
159
159
},
160
160
161
+
161
162
SCHEME_OR_PATH {
162
163
163
164
@ Override
@@ -188,6 +189,7 @@ public void handleEnd(InternalParser parser) {
188
189
}
189
190
},
190
191
192
+
191
193
HOST {
192
194
193
195
@ Override
@@ -229,6 +231,7 @@ public void handleEnd(InternalParser parser) {
229
231
}
230
232
},
231
233
234
+
232
235
IPV6 {
233
236
234
237
@ Override
@@ -259,6 +262,7 @@ public void handleEnd(InternalParser parser) {
259
262
}
260
263
},
261
264
265
+
262
266
PORT {
263
267
264
268
@ Override
@@ -291,6 +295,7 @@ public void handleEnd(InternalParser parser) {
291
295
}
292
296
},
293
297
298
+
294
299
PATH {
295
300
296
301
@ Override
@@ -319,6 +324,7 @@ public void handleEnd(InternalParser parser) {
319
324
}
320
325
},
321
326
327
+
322
328
QUERY {
323
329
324
330
@ Override
@@ -334,7 +340,9 @@ public void handleEnd(InternalParser parser) {
334
340
}
335
341
},
336
342
343
+
337
344
FRAGMENT {
345
+
338
346
@ Override
339
347
public void handleNext (InternalParser parser , char c , int i ) {
340
348
}
@@ -345,6 +353,7 @@ public void handleEnd(InternalParser parser) {
345
353
}
346
354
},
347
355
356
+
348
357
WILDCARD {
349
358
350
359
@ Override
@@ -358,6 +367,7 @@ public void handleEnd(InternalParser parser) {
358
367
}
359
368
};
360
369
370
+
361
371
/**
362
372
* Method to handle each character from the input string.
363
373
* @param parser provides access to parsing state, and helper methods
@@ -422,6 +432,7 @@ public InternalParser(String uri) {
422
432
this .uri = uri ;
423
433
}
424
434
435
+
425
436
// Check internal state
426
437
427
438
public boolean hasScheme () {
@@ -444,6 +455,7 @@ public boolean isAtStartOfComponent() {
444
455
return (this .index == this .componentIndex );
445
456
}
446
457
458
+
447
459
// Top-level parse loop, iterate over chars and delegate to states
448
460
449
461
public UriRecord parse () {
@@ -468,6 +480,7 @@ public char charAtIndex() {
468
480
return this .uri .charAt (this .index );
469
481
}
470
482
483
+
471
484
// Transitions and index updates
472
485
473
486
public void advanceTo (State state ) {
@@ -493,6 +506,7 @@ public void index(int index) {
493
506
this .index = index ;
494
507
}
495
508
509
+
496
510
// Component capture
497
511
498
512
public InternalParser resolveIfOpaque () {
@@ -586,6 +600,7 @@ public InternalParser markPercentEncoding() {
586
600
return this ;
587
601
}
588
602
603
+
589
604
// Encoding and curly bracket handling
590
605
591
606
/**
@@ -636,6 +651,7 @@ else if (c == '}') {
636
651
return (this .openCurlyBracketCount > 0 );
637
652
}
638
653
654
+
639
655
@ Override
640
656
public String toString () {
641
657
return "[State=" + this .state + ", index=" + this .index + ", componentIndex=" + this .componentIndex +
0 commit comments