- java.lang.Object
-
- jakarta.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.- Since:
- 1.0
-
-
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 RuntimeDelegate
cachedDelegate
static java.lang.String
JAXRS_RUNTIME_DELEGATE_PROPERTY
Name of the property identifying theRuntimeDelegate
implementation to be returned fromgetInstance()
.private static java.lang.Object
RD_LOCK
private static java.lang.reflect.ReflectPermission
suppressAccessChecksPermission
-
Constructor Summary
Constructors Modifier Constructor Description protected
RuntimeDelegate()
Allows custom implementations to extend theRuntimeDelegate
class.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract java.util.concurrent.CompletionStage<SeBootstrap.Instance>
bootstrap(Application application, SeBootstrap.Configuration configuration)
Perform startup of the application in Java SE environments.abstract java.util.concurrent.CompletionStage<SeBootstrap.Instance>
bootstrap(java.lang.Class<? extends Application> clazz, SeBootstrap.Configuration configuration)
Perform startup of the application in Java SE environments.abstract SeBootstrap.Configuration.Builder
createConfigurationBuilder()
Create a new instance of aSeBootstrap.Configuration.Builder
.abstract <T> T
createEndpoint(Application application, java.lang.Class<T> endpointType)
Create a configured instance of the supplied endpoint type.abstract EntityPart.Builder
createEntityPartBuilder(java.lang.String partName)
Create a new instance of aEntityPart.Builder
.abstract <T> RuntimeDelegate.HeaderDelegate<T>
createHeaderDelegate(java.lang.Class<T> type)
Obtain an instance of aRuntimeDelegate.HeaderDelegate
for the supplied class.abstract Link.Builder
createLinkBuilder()
Create a new instance of aLink.Builder
.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 aRuntimeDelegate
instance using the method described ingetInstance()
.static RuntimeDelegate
getInstance()
Obtain aRuntimeDelegate
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
Name of the property identifying theRuntimeDelegate
implementation to be returned fromgetInstance()
.- See Also:
- Constant Field Values
-
RD_LOCK
private static final java.lang.Object RD_LOCK
-
suppressAccessChecksPermission
private static java.lang.reflect.ReflectPermission suppressAccessChecksPermission
-
cachedDelegate
private static volatile RuntimeDelegate cachedDelegate
-
-
Method Detail
-
getInstance
public static RuntimeDelegate getInstance()
Obtain aRuntimeDelegate
instance. If an instance had not already been created and set viasetInstance(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/jakarta.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 isjakarta.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
jakarta.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 aRuntimeDelegate
instance using the method described ingetInstance()
.- Returns:
- an instance of
RuntimeDelegate
.
-
setInstance
public static void setInstance(RuntimeDelegate rd)
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.- Type Parameters:
T
- endpoint type.- 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) throws java.lang.IllegalArgumentException
Obtain an instance of aRuntimeDelegate.HeaderDelegate
for the supplied class. An implementation is required to support the following values for type:CacheControl
,Cookie
,EntityTag
,Link
,NewCookie
,MediaType
andjava.util.Date
.- Type Parameters:
T
- header type.- Parameters:
type
- the class of the header.- Returns:
- an instance of
HeaderDelegate
for the supplied type. - Throws:
java.lang.IllegalArgumentException
- if type isnull
.- See Also:
RuntimeDelegate.HeaderDelegate
-
createLinkBuilder
public abstract Link.Builder createLinkBuilder()
Create a new instance of aLink.Builder
.- Returns:
- new
Link.Builder
instance. - See Also:
Link.Builder
-
createConfigurationBuilder
public abstract SeBootstrap.Configuration.Builder createConfigurationBuilder()
Create a new instance of aSeBootstrap.Configuration.Builder
.This method is not intended to be invoked by applications. Call
SeBootstrap.Configuration.builder()
instead.- Returns:
- new
SeBootstrap.Configuration.Builder
instance. - See Also:
SeBootstrap.Configuration.Builder
-
bootstrap
public abstract java.util.concurrent.CompletionStage<SeBootstrap.Instance> bootstrap(Application application, SeBootstrap.Configuration configuration)
Perform startup of the application in Java SE environments.This method is not intended to be invoked by applications. Call
SeBootstrap.start(Application, SeBootstrap.Configuration)
instead.- Parameters:
application
- The application to start up.configuration
- The bootstrap configuration.- Returns:
CompletionStage
asynchronously producing handle of the running applicationinstance
.
-
bootstrap
public abstract java.util.concurrent.CompletionStage<SeBootstrap.Instance> bootstrap(java.lang.Class<? extends Application> clazz, SeBootstrap.Configuration configuration)
Perform startup of the application in Java SE environments.This method is not intended to be invoked by applications. Call
SeBootstrap.start(Class, SeBootstrap.Configuration)
instead.- Parameters:
clazz
- The application class to instantiate and start.configuration
- The bootstrap configuration.- Returns:
CompletionStage
asynchronously producing handle of the running applicationinstance
.
-
createEntityPartBuilder
public abstract EntityPart.Builder createEntityPartBuilder(java.lang.String partName) throws java.lang.IllegalArgumentException
Create a new instance of aEntityPart.Builder
.This method is not intended to be invoked by applications. Call
EntityPart.withName(String)
instead.- Parameters:
partName
- name for this part within the multipart body.- Returns:
- new
EntityPart.Builder
instance with specified part name - Throws:
java.lang.IllegalArgumentException
- ifpartName
isnull
.- Since:
- 3.1
-
-