javax.ws.rs.ext
Class RuntimeDelegate

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

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:

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