## javax.ws.rs.ext
Class RuntimeDelegate

    java.lang.Object
      javax.ws.rs.ext.RuntimeDelegate

Direct Known Subclasses:
  AbstractRuntimeDelegate

    public abstract class RuntimeDelegate

extends java.lang.Object

Implementations of JAX-RS provide a concrete subclass of RuntimeDelegate and various JAX-RS API methods defer to methods of RuntimeDelegate for their functionality. Regular users of JAX-RS are not expected to use this class directly and overriding an implementation of this class with a user supplied subclass may cause unexpected behavior.

Nested Class Summary
`static interface` | `RuntimeDelegate.HeaderDelegate<T>` Defines the contract for a delegate that is responsible for converting between the String form of a HTTP header and the corresponding JAX-RS type `T`.

Field Summary
`static java.lang.String` | `JAXRS_RUNTIME_DELEGATE_PROPERTY`

Constructor Summary
`protected` | `RuntimeDelegate()`

Method Summary

`abstract

`<T> T`

`

`createEndpoint(Application application, java.lang.Class<T> endpointType)`
Create a configured instance of the supplied endpoint type.

`abstract

`<T> RuntimeDelegate.HeaderDelegate<T>`

`

`createHeaderDelegate(java.lang.Class<T> type)`
Obtain an instance of a HeaderDelegate for the supplied class.

`abstract Response.ResponseBuilder` | `createResponseBuilder()` Create a new instance of a `Response.ResponseBuilder`.
`abstract UriBuilder` | `createUriBuilder()` Create a new instance of a `UriBuilder`.
`abstract Variant.VariantListBuilder` | `createVariantListBuilder()` Create a new instance of a `Variant.VariantListBuilder`.
`static RuntimeDelegate` | `getInstance()` Obtain a RuntimeDelegate instance.
`static void` | `setInstance(RuntimeDelegate rd)` Set the runtime delegate that will be used by JAX-RS classes.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### JAXRS_RUNTIME_DELEGATE_PROPERTY

    public static final java.lang.String JAXRS_RUNTIME_DELEGATE_PROPERTY

See Also:
  Constant Field Values

Constructor Detail

### RuntimeDelegate

    protected RuntimeDelegate()

Method Detail

### getInstance

    public static RuntimeDelegate getInstance()

  Obtain a RuntimeDelegate instance. If an instance had not already been created and set via `setInstance(javax.ws.rs.ext.RuntimeDelegate)`, the first invocation will create an instance which will then be cached for future use.

  The algorithm used to locate the RuntimeDelegate subclass to use consists of the following steps:

  - If a resource with the name of `META-INF/services/javax.ws.rs.ext.RuntimeDelegate` exists, then its first line, if present, is used as the UTF-8 encoded name of the implementation class.
  - If the $java.home/lib/jaxrs.properties file exists and it is readable by the `java.util.Properties.load(InputStream)` method and it contains an entry whose key is `javax.ws.rs.ext.RuntimeDelegate`, then the value of that entry is used as the name of the implementation class.
  - If a system property with the name `javax.ws.rs.ext.RuntimeDelegate` is defined, then its value is used as the name of the implementation class.
  - Finally, a default implementation class name is used.

  Returns:
    an instance of RuntimeDelegate

### setInstance

    public static void setInstance(RuntimeDelegate rd)
                            throws java.lang.SecurityException

  Set the runtime delegate that will be used by JAX-RS classes. If this method is not called prior to `getInstance()` then an implementation will be sought as described in `getInstance()`.

  Parameters:
    `rd` - the runtime delegate instance
  Throws:
    `java.lang.SecurityException` - if there is a security manager and the permission ReflectPermission("suppressAccessChecks") has not been granted.

### createUriBuilder

    public abstract UriBuilder createUriBuilder()

  Create a new instance of a `UriBuilder`.

  Returns:
    new UriBuilder instance
  See Also:
    `UriBuilder`

### createResponseBuilder

    public abstract Response.ResponseBuilder createResponseBuilder()

  Create a new instance of a `Response.ResponseBuilder`.

  Returns:
    new ResponseBuilder instance
  See Also:
    `Response.ResponseBuilder`

### createVariantListBuilder

    public abstract Variant.VariantListBuilder createVariantListBuilder()

  Create a new instance of a `Variant.VariantListBuilder`.

  Returns:
    new VariantListBuilder instance
  See Also:
    `Variant.VariantListBuilder`

### createEndpoint

    public abstract <T> T createEndpoint(Application application,
                                         java.lang.Class<T> endpointType)
                              throws java.lang.IllegalArgumentException,
                                     java.lang.UnsupportedOperationException

  Create a configured instance of the supplied endpoint type. How the returned endpoint instance is published is dependent on the type of endpoint.

  Parameters:
    `application` - the application configuration
    `endpointType` - the type of endpoint instance to be created.
  Returns:
    a configured instance of the requested type.
  Throws:
    `java.lang.IllegalArgumentException` - if application is null or the requested endpoint type is not supported.
    `java.lang.UnsupportedOperationException` - if the implementation supports no endpoint types.

### createHeaderDelegate

    public abstract <T> RuntimeDelegate.HeaderDelegate<T> createHeaderDelegate(java.lang.Class<T> type)

  Obtain an instance of a HeaderDelegate for the supplied class. An implementation is required to support the following values for type: `Cookie`, `CacheControl`, `EntityTag`, `NewCookie`, `MediaType` and `java.util.Date`.

  Parameters:
    `type` - the class of the header
  Returns:
    an instance of HeaderDelegate for the supplied type
  Throws:
    `java.lang.IllegalArgumentException` - if type is null

Copyright © 2017 Oracle Corporation. All Rights Reserved.