1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 package org.apache.hc.core5.net;
28
29 import java.net.URISyntaxException;
30 import java.util.BitSet;
31
32 import org.apache.hc.core5.util.Tokenizer;
33
34 final class URISupport {
35
36 private static final BitSet HOST_SEPARATORS = new BitSet(256);
37 private static final BitSet PORT_SEPARATORS = new BitSet(256);
38 private static final BitSet TERMINATORS = new BitSet(256);
39
40 static {
41 TERMINATORS.set('/');
42 TERMINATORS.set('#');
43 TERMINATORS.set('?');
44 HOST_SEPARATORS.or(TERMINATORS);
45 HOST_SEPARATORS.set('@');
46 PORT_SEPARATORS.or(TERMINATORS);
47 PORT_SEPARATORS.set(':');
48 }
49
50 static final Tokenizer.Delimiter DELIMITERS = Tokenizer.delimiters(TERMINATORS);
51 static final Tokenizer.Delimiter HOST_DELIMITERS = Tokenizer.delimiters(HOST_SEPARATORS);
52 static final Tokenizer.Delimiter IPV6_HOST_DELIMITERS = Tokenizer.delimiters(']');
53 static final Tokenizer.Delimiter PORT_DELIMITERS = Tokenizer.delimiters(PORT_SEPARATORS);
54
55 static URISyntaxException createException(
56 final CharSequence input, final Tokenizer.Cursor cursor, final String reason) {
57 return new URISyntaxException(
58 input.subSequence(cursor.getLowerBound(), cursor.getUpperBound()).toString(),
59 reason,
60 cursor.getPos());
61 }
62
63 }