Configurable context are reflected in the associated
Configuration state which is exposed via getConfiguration() method.
A configurable context can be either indirectly associated with a particular JAX-RS component
(such as application or resource method configurable context passed to a Feature
or javax.ws.rs.container.DynamicFeature meta-providers) or can be directly represented
by a concrete JAX-RS component implementing the Configurable interface
(such as javax.ws.rs.client.Client or javax.ws.rs.client.WebTarget).
As such, the exact scope of a configuration context is typically determined by a use case
scenario in which the context is accessed.
New properties can be set using the property method. Similarly, updating a value of
an existing property can be achieved using the same method. Information about the configured set of
properties is available via the underlying Configuration object. An existing property
can be removed by assigning a null value to the property.
Registered custom JAX-RS component classes and instances are important part of the contextual configuration information as these are the main factors that determine the capabilities of a configured runtime. Implementations SHOULD warn about and ignore registrations that do not conform to the requirements of supported JAX-RS components in a given configurable context.
In most cases, when registering a JAX-RS component, the simplest form of methods
(register(Class) or register(Object)) of the available registration API
is sufficient.
For example:
config.register(HtmlDocumentReader.class); config.register(new HtmlDocumentWriter(writerConfig));
In some situations a JAX-RS component class or instance may implement multiple provider contracts recognized by a JAX-RS implementation (e.g. filter, interceptor or entity provider). By default, the JAX-RS implementation MUST register the new component class or instance as a provider for all the recognized provider contracts implemented by the component class.
For example:
@Priority(ENTITY_CODER)
public class GzipInterceptor
implements ReaderInterceptor, WriterInterceptor { ... }
...
// register GzipInterceptor as a ReaderInterceptor
// as well as a WriterInterceptor
config.register(GzipInterceptor.class);
There are however situations when the default registration of a JAX-RS component to all the
recognized provider contracts is not desirable. In such cases users may use other versions of the
register(...) method to explicitly specify the collection of the provider contracts
for which the JAX-RS component should be registered and/or the priority of each registered
provider contract.
For example:
@Priority(USER)
public class ClientLoggingFilter
implements ClientRequestFilter, ClientResponseFilter { ... }
@Priority(ENTITY_CODER)
public class GzipInterceptor
implements ReaderInterceptor, WriterInterceptor { ... }
...
// register ClientLoggingFilter as a ClientResponseFilter only
config.register(ClientLoggingFilter.class, ClientResponseFilter.class);
// override the priority of registered GzipInterceptor
// and both of it's provider contracts
config.register(GzipInterceptor.class, 6500);
As a general rule, for each JAX-RS component class there can be at most one registration — class-based or instance-based — configured at any given moment. Implementations MUST reject any attempts to configure a new registration for a provider class that has been already registered in the given configurable context earlier. Implementations SHOULD also raise a warning to inform the user about the rejected component registration.
For example:
config.register(GzipInterceptor.class, WriterInterceptor.class);
config.register(GzipInterceptor.class); // Rejected by runtime.
config.register(new GzipInterceptor()); // Rejected by runtime.
config.register(GzipInterceptor.class, 6500); // Rejected by runtime.
config.register(new ClientLoggingFilter());
config.register(ClientLoggingFilter.class); // rejected by runtime.
config.register(ClientLoggingFilter.class,
ClientResponseFilter.class); // Rejected by runtime.
| Modifier and Type | Method and Description |
|---|---|
| public Configuration | Returns: configuration live view of the internal configuration state.Get a live view of an internal configuration state of this configurable instance. |
| public C | |
| public C | Returns: the updated configurable context.JAX-RS component class to be configured in the scope of this
configurable context. componentClass)Register a class of a custom JAX-RS component (such as an extension provider or
a |
| public C | Returns: the updated configurable context.JAX-RS component class to be configured in the scope of this
configurable context. componentClass, int the overriding priority for the registered component
and all the provider contracts the component implements. priority)Register a class of a custom JAX-RS component (such as an extension provider or
a |
| public C | Returns: the updated configurable context.JAX-RS component class to be configured in the scope of this
configurable context. componentClass, Class<?>... the specific extension provider or meta-provider contracts
implemented by the component for which the component should
be registered.
Implementations MUST ignore attempts to register a component
class for an empty or contracts)null collection of contracts via
this method and SHOULD raise a warning about such event.Register a class of a custom JAX-RS component (such as an extension provider or
a |
| public C | Returns: the updated configurable context.JAX-RS component class to be configured in the scope of this
configurable context. componentClass, Map<Class<?>, Integer> map of the specific extension provider and meta-provider contracts
and their associated priorities for which the JAX-RS component
is registered.
All contracts in the map must represent a class or an interface
implemented or extended by the JAX-RS component. Contracts that are
not contracts)assignable from the registered
component class MUST be ignored and implementations SHOULD raise a warning
to inform users about the ignored contract(s).Register a class of a custom JAX-RS component (such as an extension provider or
a |
| public C | Returns: the updated configurable context.JAX-RS component instance to be configured in the scope of this
configurable context. component)Register an instance of a custom JAX-RS component (such as an extension provider or
a |
| public C | Returns: the updated configurable context.JAX-RS component instance to be configured in the scope of this
configurable context. component, int the overriding priority for the registered component
and all the provider contracts the component implements. priority)Register an instance of a custom JAX-RS component (such as an extension provider or
a |
| public C | Returns: the updated configurable context.JAX-RS component instance to be configured in the scope of this
configurable context. component, Class<?>... the specific extension provider or meta-provider contracts
implemented by the component for which the component should
be registered.
Implementations MUST ignore attempts to register a component
class for an empty or contracts)null collection of contracts via
this method and SHOULD raise a warning about such event.Register an instance of a custom JAX-RS component (such as an extension provider or
a |
| public C | Returns: the updated configurable context.JAX-RS component instance to be configured in the scope of this
configurable context. component, Map<Class<?>, Integer> map of the specific extension provider and meta-provider contracts
and their associated priorities for which the JAX-RS component
is registered.
All contracts in the map must represent a class or an interface
implemented or extended by the JAX-RS component. Contracts that are
not contracts)assignable from the registered
component class MUST be ignored and implementations SHOULD raise a warning
to inform users about the ignored contract(s).Register an instance of a custom JAX-RS component (such as an extension provider or
a |
| getConfiguration | back to summary |
|---|---|
| public Configuration getConfiguration() Get a live view of an internal configuration state of this configurable instance.
Any changes made using methods of this
The returned
| |
| property | back to summary |
|---|---|
| public C property(String name, Object value) Set the new configuration property, if already set, the existing value of
the property will be updated. Setting a | |
| register | back to summary |
|---|---|
| public C register(Class<?> componentClass) Register a class of a custom JAX-RS component (such as an extension provider or
a
As opposed to component instances registered via
| |
| register | back to summary |
|---|---|
| public C register(Class<?> componentClass, int priority) Register a class of a custom JAX-RS component (such as an extension provider or
a
This registration method provides the same functionality as
Note that in case the priority is not applicable to a particular
provider contract implemented by the class of the registered component, the supplied
| |
| register | back to summary |
|---|---|
| public C register(Class<?> componentClass, Class<?>... contracts) Register a class of a custom JAX-RS component (such as an extension provider or
a
This registration method provides the same functionality as
| |
| register | back to summary |
|---|---|
| public C register(Class<?> componentClass, Map<Class<?>, Integer> contracts) Register a class of a custom JAX-RS component (such as an extension provider or
a
This registration method provides same functionality as Note that in case a priority is not applicable to a provider contract registered for the JAX-RS component, the supplied priority value is ignored for such contract.
| |
| register | back to summary |
|---|---|
| public C register(Object component) Register an instance of a custom JAX-RS component (such as an extension provider or
a
As opposed to components registered via
| |
| register | back to summary |
|---|---|
| public C register(Object component, int priority) Register an instance of a custom JAX-RS component (such as an extension provider or
a
This registration method provides the same functionality as
Note that in case the priority is not applicable to a particular
provider contract implemented by the class of the registered component, the supplied
| |
| register | back to summary |
|---|---|
| public C register(Object component, Class<?>... contracts) Register an instance of a custom JAX-RS component (such as an extension provider or
a
This registration method provides the same functionality as
| |
| register | back to summary |
|---|---|
| public C register(Object component, Map<Class<?>, Integer> contracts) Register an instance of a custom JAX-RS component (such as an extension provider or
a
This registration method provides same functionality as Note that in case a priority is not applicable to a provider contract registered for the JAX-RS component, the supplied priority value is ignored for such contract.
| |