Package org.jboss.resteasy.spi

## Class ResteasyUriBuilder

- java.lang.Object
- - javax.ws.rs.core.UriBuilder
  - - org.jboss.resteasy.spi.ResteasyUriBuilder

- Direct Known Subclasses:
    `ResteasyUriBuilderImpl`

      public abstract class ResteasyUriBuilder
      extends javax.ws.rs.core.UriBuilder

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static Pattern` | `hierarchicalUri` |
    `static Pattern` | `opaqueUri` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `ResteasyUriBuilder()` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `abstract javax.ws.rs.core.UriBuilder` | `clientQueryParam​(String name, Object... values)` | Called by ClientRequest.getUri() to add a query parameter for `@QueryParam` parameters.
    `abstract javax.ws.rs.core.UriBuilder` | `clone()` |
    `static boolean` | `compare​(String s1, String s2)` |
    `static ResteasyUriBuilder` | `fromTemplate​(String uriTemplate)` | You may put path parameters anywhere within the uriTemplate except port.
    `abstract String` | `getFragment()` |
    `abstract String` | `getHost()` |
    `abstract String` | `getPath()` |
    `abstract List<String>` | `getPathParamNamesInDeclarationOrder()` | Return a unique order list of path params.
    `abstract int` | `getPort()` |
    `abstract String` | `getQuery()` |
    `abstract String` | `getScheme()` |
    `abstract String` | `getUserInfo()` |
    `static URI` | `relativize​(URI from, URI to)` |
    `abstract javax.ws.rs.core.UriBuilder` | `substitutePathParam​(String name, Object value, boolean isEncoded)` | Only replace path params in path of URI.
    `abstract javax.ws.rs.core.UriBuilder` | `uriFromCharSequence​(CharSequence uriTemplate)` |
    `abstract javax.ws.rs.core.UriBuilder` | `uriTemplate​(CharSequence uriTemplate)` | You may put path parameters anywhere within the uriTemplate except port.

    - ### Methods inherited from class javax.ws.rs.core.UriBuilder

      `build, build, buildFromEncoded, buildFromEncodedMap, buildFromMap, buildFromMap, fragment, fromLink, fromMethod, fromPath, fromResource, fromUri, fromUri, host, matrixParam, newInstance, path, path, path, path, port, queryParam, replaceMatrix, replaceMatrixParam, replacePath, replaceQuery, replaceQueryParam, resolveTemplate, resolveTemplate, resolveTemplateFromEncoded, resolveTemplates, resolveTemplates, resolveTemplatesFromEncoded, scheme, schemeSpecificPart, segment, toTemplate, uri, uri, userInfo`

    - ### Methods inherited from class java.lang.Object

      `equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### opaqueUri

          public static final Pattern opaqueUri

    - #### hierarchicalUri

          public static final Pattern hierarchicalUri

  - ### Constructor Detail

    - #### ResteasyUriBuilder

          public ResteasyUriBuilder()

  - ### Method Detail

    - #### clone

          public abstract javax.ws.rs.core.UriBuilder clone()

      Specified by:
        `clone` in class `javax.ws.rs.core.UriBuilder`

    - #### compare

          public static boolean compare​(String s1,
                                        String s2)

    - #### relativize

          public static URI relativize​(URI from,
                                       URI to)

    - #### fromTemplate

          public static ResteasyUriBuilder fromTemplate​(String uriTemplate)

      You may put path parameters anywhere within the uriTemplate except port.
      Parameters:
        `uriTemplate` - uri template
      Returns:
        uri builder

    - #### uriTemplate

          public abstract javax.ws.rs.core.UriBuilder uriTemplate​(CharSequence uriTemplate)

      You may put path parameters anywhere within the uriTemplate except port.
      Parameters:
        `uriTemplate` - uri template
      Returns:
        uri builder

    - #### uriFromCharSequence

          public abstract javax.ws.rs.core.UriBuilder uriFromCharSequence​(CharSequence uriTemplate)
                                                                   throws IllegalArgumentException

      Throws:
        `IllegalArgumentException`

    - #### substitutePathParam

          public abstract javax.ws.rs.core.UriBuilder substitutePathParam​(String name,
                                                                          Object value,
                                                                          boolean isEncoded)

      Only replace path params in path of URI. This changes state of URIBuilder.
      Parameters:
        `name` - parameter name
        `value` - parameter value
        `isEncoded` - encoded flag
      Returns:
        uri builder

    - #### getPathParamNamesInDeclarationOrder

          public abstract List<String> getPathParamNamesInDeclarationOrder()

      Return a unique order list of path params.
      Returns:
        list of path parameters

    - #### clientQueryParam

          public abstract javax.ws.rs.core.UriBuilder clientQueryParam​(String name,
                                                                       Object... values)
                                                                throws IllegalArgumentException

      Called by ClientRequest.getUri() to add a query parameter for `@QueryParam` parameters. We do not use UriBuilder.queryParam() because
      - queryParam() supports URI template processing and this method must always encode braces (for parameter substitution is not possible for `@QueryParam` parameters).
      - queryParam() supports "contextual URI encoding" (i.e., it does not encode `%` characters that are followed by two hex characters). The JavaDoc for `@QueryParam.value()` explicitly states that the value is specified in decoded format and that "any percent encoded literals within the value will not be decoded and will instead be treated as literal text". This means that it is an explicit bug to perform contextual URI encoding of this method's name parameter; hence, we must always encode said parameter. This method also foregoes contextual URI encoding on this method's values parameter because it represents arbitrary data passed to a `QueryParam` parameter of a client proxy (since the client proxy is nothing more than a transport layer, it should not be "interpreting" such data; instead, it should faithfully transmit this data over the wire).
      Parameters:
        `name` - the name of the query parameter.
        `values` - the value(s) of the query parameter.
      Returns:
        Returns this instance to allow call chaining.
      Throws:
        `IllegalArgumentException`

    - #### getHost

          public abstract String getHost()

    - #### getScheme

          public abstract String getScheme()

    - #### getPort

          public abstract int getPort()

    - #### getUserInfo

          public abstract String getUserInfo()

    - #### getPath

          public abstract String getPath()

    - #### getQuery

          public abstract String getQuery()

    - #### getFragment

          public abstract String getFragment()