Package javax.ws.rs.ext
Class RuntimeDelegate
- java.lang.Object
-
- 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
Nested Classes Modifier and Type Class Description 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 typeT
.
-
Field Summary
Fields Modifier and Type Field Description private static java.lang.String
JAXRS_DEFAULT_RUNTIME_DELEGATE
static java.lang.String
JAXRS_RUNTIME_DELEGATE_PROPERTY
private static RuntimeDelegate
rd
private static java.lang.reflect.ReflectPermission
rp
-
Constructor Summary
Constructors Modifier Constructor Description protected
RuntimeDelegate()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description 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 aResponse.ResponseBuilder
.abstract UriBuilder
createUriBuilder()
Create a new instance of aUriBuilder
.abstract Variant.VariantListBuilder
createVariantListBuilder()
Create a new instance of aVariant.VariantListBuilder
.private static RuntimeDelegate
findDelegate()
Obtain a RuntimeDelegate instance using the method described ingetInstance()
.static RuntimeDelegate
getInstance()
Obtain a RuntimeDelegate instance.static void
setInstance(RuntimeDelegate rd)
Set the runtime delegate that will be used by JAX-RS classes.
-
-
-
Field Detail
-
JAXRS_RUNTIME_DELEGATE_PROPERTY
public static final java.lang.String JAXRS_RUNTIME_DELEGATE_PROPERTY
- See Also:
- Constant Field Values
-
JAXRS_DEFAULT_RUNTIME_DELEGATE
private static final java.lang.String JAXRS_DEFAULT_RUNTIME_DELEGATE
- See Also:
- Constant Field Values
-
rp
private static java.lang.reflect.ReflectPermission rp
-
rd
private static volatile RuntimeDelegate rd
-
-
Method Detail
-
getInstance
public static RuntimeDelegate getInstance()
Obtain a RuntimeDelegate instance. If an instance had not already been created and set viasetInstance(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 isjavax.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
-
If a resource with the name of
-
findDelegate
private static RuntimeDelegate findDelegate()
Obtain a RuntimeDelegate instance using the method described ingetInstance()
.- 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 togetInstance()
then an implementation will be sought as described ingetInstance()
.- 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 aUriBuilder
.- Returns:
- new UriBuilder instance
- See Also:
UriBuilder
-
createResponseBuilder
public abstract Response.ResponseBuilder createResponseBuilder()
Create a new instance of aResponse.ResponseBuilder
.- Returns:
- new ResponseBuilder instance
- See Also:
Response.ResponseBuilder
-
createVariantListBuilder
public abstract Variant.VariantListBuilder createVariantListBuilder()
Create a new instance of aVariant.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 configurationendpointType
- 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
andjava.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
-
-