Class URISupport
URIs and parsing some HTTP URL information.-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic StringbuildQuery(List<Pair<String, String>> parameters) Builds an RFC-3968 encoded URL query component from a collection of parameters.buildQueryMap(List<Pair<String, String>> parameters) Builds a map from a collection of parameters.static StringdoURLDecode(String value) Perform URL decoding on the given string.static StringdoURLEncode(String value) Deprecated.static URICreate a file: URI from an absolute path, dealing with the Windows, non leading "/" issue.static StringgetRawQueryStringParameter(String queryString, String paramName) Get the first raw (i.e.RFC-3968 encoded) query string component with the specified parameter name.parseQueryString(String queryString) Parses a RFC-3968 encoded query string in to a set of name/value pairs.static URIsetFragment(URI prototype, String fragment) Sets the fragment of a URI.static URISets the host of a URI.static URISets the path of a URI.static URISets the port of a URI.static URISets the query of a URI.static URISets the query of a URI.static URISets the scheme of a URI.static StringtrimOrNullFragment(String fragment) Trims an RFC-3968 encoded URL fragment component.static StringtrimOrNullPath(String path) Trims an RFC-3968 encoded URL path component.static StringtrimOrNullQuery(String query) Trims an RFC-3968 encoded URL query component.
-
Constructor Details
-
URISupport
private URISupport()Constructor.
-
-
Method Details
-
setFragment
Sets the fragment of a URI.- Parameters:
prototype- prototype URI that provides information other than the fragmentfragment- fragment for the new URI- Returns:
- new URI built from the prototype URI and the given fragment
-
setHost
Sets the host of a URI.- Parameters:
prototype- prototype URI that provides information other than the hosthost- host for the new URI- Returns:
- new URI built from the prototype URI and the given host
-
setPath
Sets the path of a URI.- Parameters:
prototype- prototype URI that provides information other than the pathpath- path for the new URI- Returns:
- new URI built from the prototype URI and the given path
-
setPort
Sets the port of a URI.- Parameters:
prototype- prototype URI that provides information other than the portport- port for the new URI- Returns:
- new URI built from the prototype URI and the given port
-
setQuery
Sets the query of a URI.WARNING: If the supplied query parameter names and/or values contain '%' characters (for example because they are already Base64-encoded), then the approach of using
URIinstances to work with the URI/URL may not be appropriate. Per its documentation, theURIconstructors always encode '%' characters, which can lead to cases of double-encoding. For an alternative way of manipulating URL's seeURLBuilder.- Parameters:
prototype- prototype URI that provides information other than the queryquery- query for the new URI- Returns:
- new URI built from the prototype URI and the given query
-
setQuery
@Nonnull public static URI setQuery(@Nonnull URI prototype, @Nullable List<Pair<String, String>> parameters) Sets the query of a URI.WARNING: If the supplied query parameter names and/or values contain '%' characters (for example because they are already Base64-encoded), then the approach of using
URIinstances to work with the URI/URL may not be appropriate. Per its documentation, theURIconstructors always encode '%' characters, which can lead to cases of double-encoding. For an alternative way of manipulating URL's seeURLBuilder.Note that while the input may not contain null elements, its actual elements may themselves contain null values (the second half of the pair).
- Parameters:
prototype- prototype URI that provides information other than the queryparameters- query parameters for the new URI- Returns:
- new URI built from the prototype URI and the given query
-
setScheme
Sets the scheme of a URI.- Parameters:
prototype- prototype URI that provides information other than the schemescheme- scheme for the new URI- Returns:
- new URI built from the prototype URI and the given scheme
-
fileURIFromAbsolutePath
Create a file: URI from an absolute path, dealing with the Windows, non leading "/" issue.Windows absolute paths have a habit of starting with a "DosDeviceName" (such as
C:\absolute\pathif we blindly convert that to a file URI by prepending "file://", then we end up with a URI which has "C:" as the network segment. So if we need to have an absolute file path based URI (JAAS is the example) we call this method which hides the hideous implementation.- Parameters:
path- the absolute file path to convert- Returns:
- a suitable URI
- Throws:
URISyntaxException- if the URI contructor fails
-
buildQuery
Builds an RFC-3968 encoded URL query component from a collection of parameters.Note that while the input may not contain null elements, its actual elements may themselves contain null values (the second half of the pair).
- Parameters:
parameters- collection of parameters from which to build the URL query component- Returns:
- RFC-3968 encoded URL query or null if the parameter collection was null or empty
-
buildQueryMap
@Nonnull @NullableElements @Unmodifiable @NotLive public static Map<String,String> buildQueryMap(@Nullable @NullableElements List<Pair<String, String>> parameters) Builds a map from a collection of parameters.- Parameters:
parameters- collection of parameters from which to build the corresponding, may be null or empty- Returns:
- a non-null map of query parameter name-> value. Keys will be non-null. Values may be null.
-
getRawQueryStringParameter
@Nullable public static String getRawQueryStringParameter(@Nullable String queryString, @Nullable String paramName) Get the first raw (i.e.RFC-3968 encoded) query string component with the specified parameter name. This method assumes the common query string format of one or more 'paramName=paramValue' pairs separated by '&'. The component will be returned as a string in the form 'paramName=paramValue' (minus the quotes).- Parameters:
queryString- the URL encoded HTTP URL query stringparamName- the URL decoded name of the parameter to find- Returns:
- the found component, or null if query string or param name is null/empty or the parameter is not found
-
parseQueryString
Parses a RFC-3968 encoded query string in to a set of name/value pairs. This method assumes the common query string format of one or more 'paramName=paramValue' pairs separate by '&'. Both parameter names and values will be URL decoded. Parameters without values will be represented in the returned map as a key associated with the valuenull.- Parameters:
queryString- URL encoded query string- Returns:
- the parameters from the query string, never null
-
trimOrNullPath
Trims an RFC-3968 encoded URL path component. If the given path is null or empty then null is returned. If the given path ends with '?' then it is removed. If the given path ends with '#' then it is removed.- Parameters:
path- path to trim- Returns:
- the trimmed path or null
-
trimOrNullQuery
Trims an RFC-3968 encoded URL query component. If the given query is null or empty then null is returned. If the given query starts with '?' then it is removed. If the given query ends with '#' then it is removed.- Parameters:
query- query to trim- Returns:
- the trimmed query or null
-
trimOrNullFragment
Trims an RFC-3968 encoded URL fragment component. If the given fragment is null or empty then null is returned. If the given fragment starts with '#' then it is removed.- Parameters:
fragment- fragment to trim- Returns:
- the trimmed fragment or null
-
doURLDecode
Perform URL decoding on the given string.- Parameters:
value- the string to decode- Returns:
- the decoded string
-
doURLEncode
Deprecated.Perform URL encoding on the given string appropriate for form or query string parameters.This method is not appropriate for the encoding of data for other parts of a URL such as a path or fragment.
Consider using Guava's UrlEscapers class for any future uses for this functionality.
- Parameters:
value- the string to encode- Returns:
- the encoded string
-