public class UriComponent
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
private static class |
UriComponent.PathSegmentImpl |
static class |
UriComponent.Type
The URI component type.
|
Modifier and Type | Field and Description |
---|---|
private static boolean[][] |
ENCODING_TABLES |
private static char[] |
HEX_DIGITS |
private static int[] |
HEX_TABLE |
private static java.lang.String[] |
SCHEME |
private static java.lang.String[] |
SUB_DELIMS |
private static java.lang.String[] |
UNRESERVED |
private static java.nio.charset.Charset |
UTF_8_CHARSET |
Modifier | Constructor and Description |
---|---|
private |
UriComponent() |
Modifier and Type | Method and Description |
---|---|
private static java.lang.String |
_encode(java.lang.String s,
UriComponent.Type t,
boolean template,
boolean contextualEncode) |
private static int |
_valid(java.lang.String s,
UriComponent.Type t,
boolean template) |
private static void |
appendPercentEncodedOctet(java.lang.StringBuilder sb,
int b) |
private static void |
appendUTF8EncodedCharacter(java.lang.StringBuilder sb,
int codePoint) |
static java.lang.String |
contextualEncode(java.lang.String s,
UriComponent.Type t)
Contextually encodes the characters of string that are either non-ASCII
characters or are ASCII characters that must be percent-encoded using the
UTF-8 encoding.
|
static java.lang.String |
contextualEncode(java.lang.String s,
UriComponent.Type t,
boolean template)
Contextually encodes the characters of string that are either non-ASCII
characters or are ASCII characters that must be percent-encoded using the
UTF-8 encoding.
|
private static java.lang.String |
decode(java.lang.String s,
int n) |
static java.lang.String |
decode(java.lang.String s,
UriComponent.Type t)
Decodes characters of a string that are percent-encoded octets using
UTF-8 decoding (if needed).
|
private static int |
decodeHex(char c) |
private static int |
decodeHex(java.lang.String s,
int i) |
private static java.lang.String |
decodeHost(java.lang.String s,
int n) |
static javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> |
decodeMatrix(java.lang.String pathSegment,
boolean decode)
Decode the matrix component of a URI path segment.
|
private static void |
decodeMatrixParam(javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> params,
java.lang.String param,
boolean decode) |
private static int |
decodeOctets(int i,
java.nio.ByteBuffer bb,
java.lang.StringBuilder sb)
Decodes octets to characters using the UTF-8 decoding and appends
the characters to a StringBuffer.
|
static java.util.List<javax.ws.rs.core.PathSegment> |
decodePath(java.lang.String path,
boolean decode)
Decode the path component of a URI as path segments.
|
static java.util.List<javax.ws.rs.core.PathSegment> |
decodePath(java.net.URI u,
boolean decode)
Decode the path component of a URI as path segments.
|
static void |
decodePathSegment(java.util.List<javax.ws.rs.core.PathSegment> segments,
java.lang.String segment,
boolean decode)
Decode the path segment and add it to the list of path segments.
|
private static java.nio.ByteBuffer |
decodePercentEncodedOctets(java.lang.String s,
int i,
java.nio.ByteBuffer bb)
Decode a continuous sequence of percent encoded octets.
|
static javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> |
decodeQuery(java.lang.String q,
boolean decode)
Decode the query component of a URI.
|
static javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> |
decodeQuery(java.lang.String q,
boolean decodeNames,
boolean decodeValues)
Decode the query component of a URI.
|
static javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> |
decodeQuery(java.net.URI u,
boolean decode)
Decode the query component of a URI.
|
private static void |
decodeQueryParam(javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> params,
java.lang.String param,
boolean decodeNames,
boolean decodeValues) |
private static java.lang.String |
decodeQueryParam(java.lang.String s,
int n) |
static java.lang.String |
encode(java.lang.String s,
UriComponent.Type t)
Encodes the characters of string that are either non-ASCII characters
or are ASCII characters that must be percent-encoded using the
UTF-8 encoding.
|
static java.lang.String |
encode(java.lang.String s,
UriComponent.Type t,
boolean template)
Encodes the characters of string that are either non-ASCII characters
or are ASCII characters that must be percent-encoded using the
UTF-8 encoding.
|
static java.lang.String |
encodeTemplateNames(java.lang.String s)
Encodes a string with template parameters names present, specifically the
characters '{' and '}' will be percent-encoded.
|
static java.lang.String |
fullRelativeUri(java.net.URI uri)
Return the
Request-Uri representation as defined by HTTP spec. |
private static boolean[] |
initEncodingTable(java.util.List<java.lang.String> allowed) |
private static boolean[][] |
initEncodingTables() |
private static int[] |
initHexTable() |
static boolean |
isHexCharacter(char c)
Checks whether the character
c is hexadecimal character. |
static boolean |
valid(java.lang.String s,
UriComponent.Type t)
Validates the legal characters of a percent-encoded string that
represents a URI component type.
|
static boolean |
valid(java.lang.String s,
UriComponent.Type t,
boolean template)
Validates the legal characters of a percent-encoded string that
represents a URI component type.
|
static void |
validate(java.lang.String s,
UriComponent.Type t)
Validates the legal characters of a percent-encoded string that
represents a URI component type.
|
static void |
validate(java.lang.String s,
UriComponent.Type t,
boolean template)
Validates the legal characters of a percent-encoded string that
represents a URI component type.
|
private static final char[] HEX_DIGITS
private static final java.lang.String[] SCHEME
private static final java.lang.String[] UNRESERVED
private static final java.lang.String[] SUB_DELIMS
private static final boolean[][] ENCODING_TABLES
private static final java.nio.charset.Charset UTF_8_CHARSET
private static final int[] HEX_TABLE
public static void validate(java.lang.String s, UriComponent.Type t)
s
- the encoded string.t
- the URI component type identifying the legal characters.java.lang.IllegalArgumentException
- if the encoded string contains illegal
characters.public static void validate(java.lang.String s, UriComponent.Type t, boolean template)
s
- the encoded string.t
- the URI component type identifying the legal characters.template
- true if the encoded string contains URI template variablesjava.lang.IllegalArgumentException
- if the encoded string contains illegal
characters.public static boolean valid(java.lang.String s, UriComponent.Type t)
s
- the encoded string.t
- the URI component type identifying the legal characters.public static boolean valid(java.lang.String s, UriComponent.Type t, boolean template)
s
- the encoded string.t
- the URI component type identifying the legal characters.template
- true if the encoded string contains URI template variablesprivate static int _valid(java.lang.String s, UriComponent.Type t, boolean template)
public static java.lang.String contextualEncode(java.lang.String s, UriComponent.Type t)
s
- the string to be encoded.t
- the URI component type identifying the ASCII characters that
must be percent-encoded.public static java.lang.String contextualEncode(java.lang.String s, UriComponent.Type t, boolean template)
s
- the string to be encoded.t
- the URI component type identifying the ASCII characters that
must be percent-encoded.template
- true if the encoded string contains URI template variablespublic static java.lang.String encode(java.lang.String s, UriComponent.Type t)
s
- the string to be encoded.t
- the URI component type identifying the ASCII characters that
must be percent-encoded.public static java.lang.String encode(java.lang.String s, UriComponent.Type t, boolean template)
s
- the string to be encoded.t
- the URI component type identifying the ASCII characters that
must be percent-encoded.template
- true if the encoded string contains URI template variablespublic static java.lang.String encodeTemplateNames(java.lang.String s)
s
- the string with zero or more template parameters namesprivate static java.lang.String _encode(java.lang.String s, UriComponent.Type t, boolean template, boolean contextualEncode)
private static void appendPercentEncodedOctet(java.lang.StringBuilder sb, int b)
private static void appendUTF8EncodedCharacter(java.lang.StringBuilder sb, int codePoint)
private static boolean[][] initEncodingTables()
private static boolean[] initEncodingTable(java.util.List<java.lang.String> allowed)
public static java.lang.String decode(java.lang.String s, UriComponent.Type t)
s
- the string to be decoded.t
- the URI component type, may be null.java.lang.IllegalArgumentException
- if a malformed percent-encoded octet is
detectedpublic static javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> decodeQuery(java.net.URI u, boolean decode)
Query parameter names in the returned map are always decoded. Decoding of query parameter
values can be controlled using the decode
parameter flag.
u
- the URI.decode
- true
if the returned query parameter values of the query component
should be in decoded form.public static javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> decodeQuery(java.lang.String q, boolean decode)
Query parameter names in the returned map are always decoded. Decoding of query parameter
values can be controlled using the decode
parameter flag.
q
- the query component in encoded form.decode
- true
if the returned query parameter values of the query component
should be in decoded form.public static javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> decodeQuery(java.lang.String q, boolean decodeNames, boolean decodeValues)
Decoding of query parameter names and values can be controlled using the decodeNames
and decodeValues
parameter flags.
q
- the query component in encoded form.decodeNames
- true
if the returned query parameter names of the query component
should be in decoded form.decodeValues
- true
if the returned query parameter values of the query component
should be in decoded form.private static void decodeQueryParam(javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> params, java.lang.String param, boolean decodeNames, boolean decodeValues)
public static java.util.List<javax.ws.rs.core.PathSegment> decodePath(java.net.URI u, boolean decode)
u
- the URI. If the path component is an absolute path component
then the leading '/' is ignored and is not considered a delimiator
of a path segment.decode
- true if the path segments of the path component
should be in decoded form.public static java.util.List<javax.ws.rs.core.PathSegment> decodePath(java.lang.String path, boolean decode)
Any '/' character in the path is considered to be a deliminator between two path segments. Thus if the path is '/' then the path segment list will contain two empty path segments. If the path is "//" then the path segment list will contain three empty path segments. If the path is "/a/" the path segment list will consist of the following path segments in order: "", "a" and "".
path
- the path component in encoded form.decode
- true if the path segments of the path component
should be in decoded form.public static void decodePathSegment(java.util.List<javax.ws.rs.core.PathSegment> segments, java.lang.String segment, boolean decode)
segments
- mutable list of path segments.segment
- path segment to be decoded.decode
- true
if the path segment should be in a decoded form.public static javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> decodeMatrix(java.lang.String pathSegment, boolean decode)
pathSegment
- the path segment component in encoded form.decode
- true if the matrix parameters of the path segment component
should be in decoded form.private static void decodeMatrixParam(javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> params, java.lang.String param, boolean decode)
private static java.lang.String decode(java.lang.String s, int n)
private static java.lang.String decodeQueryParam(java.lang.String s, int n)
private static java.lang.String decodeHost(java.lang.String s, int n)
private static java.nio.ByteBuffer decodePercentEncodedOctets(java.lang.String s, int i, java.nio.ByteBuffer bb)
private static int decodeOctets(int i, java.nio.ByteBuffer bb, java.lang.StringBuilder sb)
private static int decodeHex(java.lang.String s, int i)
private static int[] initHexTable()
private static int decodeHex(char c)
public static boolean isHexCharacter(char c)
c
is hexadecimal character.c
- Any characterc
is a hexadecimal character (e.g. 0, 5, a, A, f, ...)public static java.lang.String fullRelativeUri(java.net.URI uri)
Request-Uri
representation as defined by HTTP spec. For example:
<Method> <Request-URI> HTTP/<Version> (e.g. GET /auth;foo=bar/hello?foo=bar HTTP/1.1)
uri
- uri to obtain Request-Uri
from.Request-Uri
representation or null
if uri
is not provided.