Class URIUtils


  • public class URIUtils
    extends java.lang.Object
    A collection of utilities for URIs, to workaround bugs within the class or for ease-of-use features.
    Since:
    4.0
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  URIUtils.UriFlag
      Flags that control how URI is being rewritten.
    • Method Summary

      All Methods Static Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      static java.net.URI createURI​(java.lang.String scheme, java.lang.String host, int port, java.lang.String path, java.lang.String query, java.lang.String fragment)
      Deprecated.
      (4.2) use URIBuilder.
      static HttpHost extractHost​(java.net.URI uri)
      Extracts target host from the given URI.
      static java.net.URI normalizeSyntax​(java.net.URI uri)
      Removes dot segments according to RFC 3986, section 5.2.4 and Syntax-Based Normalization according to RFC 3986, section 6.2.2.
      static java.net.URI resolve​(java.net.URI baseURI, java.lang.String reference)
      Resolves a URI reference against a base URI.
      static java.net.URI resolve​(java.net.URI baseURI, java.net.URI reference)
      Resolves a URI reference against a base URI.
      static java.net.URI resolve​(java.net.URI originalURI, HttpHost target, java.util.List<java.net.URI> redirects)
      Derives the interpreted (absolute) URI that was used to generate the last request.
      static java.net.URI rewriteURI​(java.net.URI uri)
      A convenience method that creates a new URI whose scheme, host, port, path, query are taken from the existing URI, dropping any fragment or user-information.
      static java.net.URI rewriteURI​(java.net.URI uri, HttpHost target)
      A convenience method for rewriteURI(URI, HttpHost, EnumSet) that always keeps the fragment.
      static java.net.URI rewriteURI​(java.net.URI uri, HttpHost target, boolean dropFragment)
      Deprecated.
      static java.net.URI rewriteURI​(java.net.URI uri, HttpHost target, java.util.EnumSet<URIUtils.UriFlag> flags)
      A convenience method for creating a new URI whose scheme, host and port are taken from the target host, but whose path, query and fragment are taken from the existing URI.
      static java.net.URI rewriteURIForRoute​(java.net.URI uri, RouteInfo route)
      A convenience method that optionally converts the original URI either to a relative or an absolute form as required by the specified route.
      static java.net.URI rewriteURIForRoute​(java.net.URI uri, RouteInfo route, boolean normalizeUri)
      A convenience method that optionally converts the original URI either to a relative or an absolute form as required by the specified route.
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • createURI

        @Deprecated
        public static java.net.URI createURI​(java.lang.String scheme,
                                             java.lang.String host,
                                             int port,
                                             java.lang.String path,
                                             java.lang.String query,
                                             java.lang.String fragment)
                                      throws java.net.URISyntaxException
        Deprecated.
        (4.2) use URIBuilder.
        Constructs a URI using all the parameters. This should be used instead of URI(String, String, String, int, String, String, String) or any of the other URI multi-argument URI constructors.
        Parameters:
        scheme - Scheme name
        host - Host name
        port - Port number
        path - Path
        query - Query
        fragment - Fragment
        Throws:
        java.net.URISyntaxException - If both a scheme and a path are given but the path is relative, if the URI string constructed from the given components violates RFC 2396, or if the authority component of the string is present but cannot be parsed as a server-based authority
      • rewriteURI

        @Deprecated
        public static java.net.URI rewriteURI​(java.net.URI uri,
                                              HttpHost target,
                                              boolean dropFragment)
                                       throws java.net.URISyntaxException
        Deprecated.
        A convenience method for creating a new URI whose scheme, host and port are taken from the target host, but whose path, query and fragment are taken from the existing URI. The fragment is only used if dropFragment is false. The path is set to "/" if not explicitly specified.
        Parameters:
        uri - Contains the path, query and fragment to use.
        target - Contains the scheme, host and port to use.
        dropFragment - True if the fragment should not be copied.
        Throws:
        java.net.URISyntaxException - If the resulting URI is invalid.
      • rewriteURI

        public static java.net.URI rewriteURI​(java.net.URI uri,
                                              HttpHost target,
                                              java.util.EnumSet<URIUtils.UriFlag> flags)
                                       throws java.net.URISyntaxException
        A convenience method for creating a new URI whose scheme, host and port are taken from the target host, but whose path, query and fragment are taken from the existing URI. What exactly is used and how is driven by the passed in flags. The path is set to "/" if not explicitly specified.
        Parameters:
        uri - Contains the path, query and fragment to use.
        target - Contains the scheme, host and port to use.
        flags - True if the fragment should not be copied.
        Throws:
        java.net.URISyntaxException - If the resulting URI is invalid.
        Since:
        4.5.8
      • rewriteURI

        public static java.net.URI rewriteURI​(java.net.URI uri,
                                              HttpHost target)
                                       throws java.net.URISyntaxException
        A convenience method for rewriteURI(URI, HttpHost, EnumSet) that always keeps the fragment.
        Throws:
        java.net.URISyntaxException
      • rewriteURI

        public static java.net.URI rewriteURI​(java.net.URI uri)
                                       throws java.net.URISyntaxException
        A convenience method that creates a new URI whose scheme, host, port, path, query are taken from the existing URI, dropping any fragment or user-information. The path is set to "/" if not explicitly specified. The existing URI is returned unmodified if it has no fragment or user-information and has a path.
        Parameters:
        uri - original URI.
        Throws:
        java.net.URISyntaxException - If the resulting URI is invalid.
      • rewriteURIForRoute

        public static java.net.URI rewriteURIForRoute​(java.net.URI uri,
                                                      RouteInfo route)
                                               throws java.net.URISyntaxException
        A convenience method that optionally converts the original URI either to a relative or an absolute form as required by the specified route.
        Parameters:
        uri - original URI.
        Throws:
        java.net.URISyntaxException - If the resulting URI is invalid.
        Since:
        4.4
      • rewriteURIForRoute

        public static java.net.URI rewriteURIForRoute​(java.net.URI uri,
                                                      RouteInfo route,
                                                      boolean normalizeUri)
                                               throws java.net.URISyntaxException
        A convenience method that optionally converts the original URI either to a relative or an absolute form as required by the specified route.
        Parameters:
        uri - original URI.
        Throws:
        java.net.URISyntaxException - If the resulting URI is invalid.
        Since:
        4.5.8
      • resolve

        public static java.net.URI resolve​(java.net.URI baseURI,
                                           java.lang.String reference)
        Resolves a URI reference against a base URI. Work-around for bug in java.net.URI (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4708535)
        Parameters:
        baseURI - the base URI
        reference - the URI reference
        Returns:
        the resulting URI
      • resolve

        public static java.net.URI resolve​(java.net.URI baseURI,
                                           java.net.URI reference)
        Resolves a URI reference against a base URI. Work-around for bugs in java.net.URI (e.g. http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4708535)
        Parameters:
        baseURI - the base URI
        reference - the URI reference
        Returns:
        the resulting URI
      • normalizeSyntax

        public static java.net.URI normalizeSyntax​(java.net.URI uri)
                                            throws java.net.URISyntaxException
        Removes dot segments according to RFC 3986, section 5.2.4 and Syntax-Based Normalization according to RFC 3986, section 6.2.2.
        Parameters:
        uri - the original URI
        Returns:
        the URI without dot segments
        Throws:
        java.net.URISyntaxException
        Since:
        4.5
      • extractHost

        public static HttpHost extractHost​(java.net.URI uri)
        Extracts target host from the given URI.
        Parameters:
        uri -
        Returns:
        the target host if the URI is absolute or null if the URI is relative or does not contain a valid host name.
        Since:
        4.1
      • resolve

        public static java.net.URI resolve​(java.net.URI originalURI,
                                           HttpHost target,
                                           java.util.List<java.net.URI> redirects)
                                    throws java.net.URISyntaxException
        Derives the interpreted (absolute) URI that was used to generate the last request. This is done by extracting the request-uri and target origin for the last request and scanning all the redirect locations for the last fragment identifier, then combining the result into a URI.
        Parameters:
        originalURI - original request before any redirects
        target - if the last URI is relative, it is resolved against this target, or null if not available.
        redirects - collection of redirect locations since the original request or null if not available.
        Returns:
        interpreted (absolute) URI
        Throws:
        java.net.URISyntaxException