public class CommonConfig extends Object implements FeatureContext, ExtendedConfig
Configuration
implementation for
server and client.Constructor and Description |
---|
CommonConfig(CommonConfig config)
Copy constructor.
|
CommonConfig(RuntimeType type,
Predicate<ContractProvider> registrationStrategy)
Create a new
RuntimeConfig instance. |
Modifier and Type | Method and Description |
---|---|
CommonConfig |
addProperties(Map<String,?> properties)
Add properties to
ResourceConfig . |
void |
configureAutoDiscoverableProviders(InjectionManager injectionManager,
Collection<AutoDiscoverable> autoDiscoverables,
boolean forcedOnly)
Configure
auto-discoverables in the injection manager. |
void |
configureMetaProviders(InjectionManager injectionManager,
ManagedObjectsFinalizer finalizer)
Configure binders in the injection manager and enable JAX-RS features.
|
boolean |
equals(Object o) |
Set<Class<?>> |
getClasses()
Get the immutable set of registered JAX-RS component (such as provider, root resource or
feature )
classes to be instantiated, injected and utilized in the scope of the configurable instance. |
ComponentBag |
getComponentBag()
Returns a
ComponentBag instance associated with the configuration. |
ExtendedConfig |
getConfiguration()
Get a live view of an internal configuration state of this configurable instance.
|
Map<Class<?>,Integer> |
getContracts(Class<?> componentClass)
Get the extension contract registration information for a component of a given class.
|
Set<Object> |
getInstances()
Get the immutable set of registered JAX-RS component (such as provider or
feature ) instances to be
utilized by the configurable instance. |
protected Inflector<ContractProvider.Builder,ContractProvider> |
getModelEnhancer(Class<?> componentClass)
An extension point that provides a way how to define a custom enhancement/update
operation of a contract provider model registration being produced for a given
component class.
|
Map<String,Object> |
getProperties()
Get the immutable bag of configuration properties.
|
Object |
getProperty(String name)
Get the value for the property with a given name.
|
Collection<String> |
getPropertyNames()
Returns an immutable
collection containing the property names available within the
context of the current configuration instance. |
RuntimeType |
getRuntimeType()
Get the runtime type of this configuration context.
|
int |
hashCode() |
boolean |
isEnabled(Class<? extends Feature> featureClass)
Check if a
feature instance of featureClass class has been previously enabled in the runtime
configuration context. |
boolean |
isEnabled(Feature feature)
Check if a particular
feature instance has been previously enabled in the runtime configuration
context. |
boolean |
isProperty(String name)
Get the value of the property with a given name converted to
boolean . |
boolean |
isRegistered(Class<?> componentClass)
Check if a JAX-RS component of the supplied
componentClass class has been previously registered in the
runtime configuration context. |
boolean |
isRegistered(Object component)
Check if a particular JAX-RS
component instance (such as providers or features ) has been
previously registered in the runtime configuration context. |
CommonConfig |
loadFrom(Configuration config)
Load the internal configuration state from an externally provided configuration state.
|
CommonConfig |
property(String name,
Object value)
Set the new configuration property, if already set, the existing value of the property will be updated.
|
CommonConfig |
register(Class<?> componentClass)
Register a class of a custom JAX-RS component (such as an extension provider or a
feature meta-provider) to be instantiated and used in the scope of this configurable context. |
CommonConfig |
register(Class<?> componentClass,
Class<?>... contracts)
Register a class of a custom JAX-RS component (such as an extension provider or a
feature meta-provider) to be instantiated and used in the scope of this configurable context. |
CommonConfig |
register(Class<?> componentClass,
int bindingPriority)
Register a class of a custom JAX-RS component (such as an extension provider or a
feature meta-provider) to be instantiated and used in the scope of this configurable context. |
CommonConfig |
register(Class<?> componentClass,
Map<Class<?>,Integer> contracts)
Register a class of a custom JAX-RS component (such as an extension provider or a
feature meta-provider) to be instantiated and used in the scope of this configurable context. |
CommonConfig |
register(Object component)
Register an instance of a custom JAX-RS component (such as an extension provider or a
feature meta-provider) to be instantiated and used in the scope of this configurable context. |
CommonConfig |
register(Object component,
Class<?>... contracts)
Register an instance of a custom JAX-RS component (such as an extension provider or a
feature meta-provider) to be instantiated and used in the scope of this configurable context. |
CommonConfig |
register(Object component,
int bindingPriority)
Register an instance of a custom JAX-RS component (such as an extension provider or a
feature meta-provider) to be instantiated and used in the scope of this configurable context. |
CommonConfig |
register(Object component,
Map<Class<?>,Integer> contracts)
Register an instance of a custom JAX-RS component (such as an extension provider or a
feature meta-provider) to be instantiated and used in the scope of this configurable context. |
CommonConfig |
setProperties(Map<String,?> properties)
Set the configured properties to the provided map of properties.
|
public CommonConfig(RuntimeType type, Predicate<ContractProvider> registrationStrategy)
RuntimeConfig
instance.
The constructor provides a way for defining a contract
provider model
registration strategy. Once a registration model is built
for a newly registered contract, the provided registration strategy filter is
consulted whether the model should be registered or not.
Clients can use the method to cancel any contract provider model registration that does not meet the criteria of a given configuration context, such as a model that does not have any recognized contracts associated with it.
type
- configuration runtime type.registrationStrategy
- function driving the decision (based on the introspected
contract provider model
) whether
or not should the component class registration continue
towards a successful completion.public CommonConfig(CommonConfig config)
config
- configurable to copy class properties from.public ExtendedConfig getConfiguration()
Configurable
Configurable
instance will be reflected in the returned
Configuration
instance.
The returned Configuration
instance and the collection data it provides are not thread-safe wrt. modification
made using methods on the parent configurable object.
getConfiguration
in interface Configurable<FeatureContext>
public RuntimeType getRuntimeType()
Configuration
getRuntimeType
in interface Configuration
public Map<String,Object> getProperties()
Configuration
getProperties
in interface Configuration
public Object getProperty(String name)
Configuration
getProperty
in interface Configuration
name
- property name.null
if the property with such name is not
configured.public boolean isProperty(String name)
ExtendedConfig
boolean
.
Returns false
if the value is not convertible.isProperty
in interface ExtendedConfig
name
- property name.boolean
property value or false
if the property is not
convertible.public Collection<String> getPropertyNames()
Configuration
collection
containing the property names available within the
context of the current configuration instance.
Use the Configuration.getProperty(java.lang.String)
method with a property name to get the value of a property.
getPropertyNames
in interface Configuration
collection
of property names.Configuration.getProperty(java.lang.String)
public boolean isEnabled(Class<? extends Feature> featureClass)
Configuration
feature
instance of featureClass
class has been previously enabled in the runtime
configuration context.
Method returns true
in case any instance of the featureClass
class is already present among the
features previously successfully enabled in the configuration context.
isEnabled
in interface Configuration
featureClass
- a feature class to test for.true
if a feature of a given class has been previously enabled in this configuration context,
false
otherwise.public boolean isEnabled(Feature feature)
Configuration
feature
instance has been previously enabled in the runtime configuration
context.
Method returns true
only in case an instance equal to the feature
instance is already present among
the features previously successfully enabled in the configuration context.
isEnabled
in interface Configuration
feature
- a feature instance to test for.true
if the feature instance has been previously enabled in this configuration context, false
otherwise.public boolean isRegistered(Object component)
Configuration
component
instance (such as providers or features
) has been
previously registered in the runtime configuration context.
Method returns true
only in case an instance equal to the component
instance is already present among
the components previously registered in the configuration context.
isRegistered
in interface Configuration
component
- a component instance to test for.true
if the component instance has been previously registered in this configuration context,
false
otherwise.Configuration.isEnabled(Feature)
public boolean isRegistered(Class<?> componentClass)
Configuration
componentClass
class has been previously registered in the
runtime configuration context.
Method returns true
in case a component of the supplied componentClass
class is already present among
the previously registered component classes or instances in the configuration context.
isRegistered
in interface Configuration
componentClass
- a component class to test for.true
if a component of a given class has been previously registered in this configuration context,
false
otherwise.Configuration.isEnabled(Class)
public Map<Class<?>,Integer> getContracts(Class<?> componentClass)
Configuration
Map
.
Method does not return null
.getContracts
in interface Configuration
componentClass
- a component class for which to get contracts.public Set<Class<?>> getClasses()
Configuration
feature
)
classes to be instantiated, injected and utilized in the scope of the configurable instance. In contrast to
Application.getClasses()
this method returns a complete runtime view and therefore also includes
auto-discovered components.
For each component type, there can be only a single class-based or instance-based registration present in the configuration context at any given time.
getClasses
in interface Configuration
null
.Configuration.getInstances()
public Set<Object> getInstances()
Configuration
feature
) instances to be
utilized by the configurable instance. Fields and properties of returned instances are injected with their declared
dependencies (see Context
) by the runtime prior to use.
For each component type, there can be only a single class-based or instance-based registration present in the configuration context at any given time.
getInstances
in interface Configuration
null
.Configuration.getClasses()
public final ComponentBag getComponentBag()
ComponentBag
instance associated with the configuration.protected Inflector<ContractProvider.Builder,ContractProvider> getModelEnhancer(Class<?> componentClass)
Derived implementations may use this method to e.g. filter out all contracts not applicable in the given configuration context or change the model scope. The returned set of filtered contracts is then used for the actual provider registration.
componentClass
- class of the component being registered.public CommonConfig setProperties(Map<String,?> properties)
properties
- new map of properties to be set.public CommonConfig addProperties(Map<String,?> properties)
ResourceConfig
.
If any of the added properties exists already, he values of the existing
properties will be replaced with new values.properties
- properties to add.public CommonConfig property(String name, Object value)
Configurable
null
value into a property effectively removes the property from the property bag.property
in interface Configurable<FeatureContext>
name
- property name.value
- (new) property value. null
value removes the property with the given name.public CommonConfig register(Class<?> componentClass)
Configurable
feature
meta-provider) to be instantiated and used in the scope of this configurable context.
Implementations SHOULD warn about and ignore registrations that do not conform to the requirements of supported
JAX-RS component types in the given configurable context. Any subsequent registration attempts for a component type,
for which a class or instance-based registration already exists in the system MUST be rejected by the JAX-RS
implementation and a warning SHOULD be raised to inform the user about the rejected registration.
The registered JAX-RS component class is registered as a contract provider of all the recognized JAX-RS or
implementation-specific extension contracts including meta-provider contracts, such as Feature
or
DynamicFeature
.
As opposed to component instances registered via Configurable.register(Object)
method, the lifecycle of components
registered using this class-based register(...)
method is fully managed by the JAX-RS implementation or any
underlying IoC container supported by the implementation.
register
in interface Configurable<FeatureContext>
componentClass
- JAX-RS component class to be configured in the scope of this configurable context.public CommonConfig register(Class<?> componentClass, int bindingPriority)
Configurable
feature
meta-provider) to be instantiated and used in the scope of this configurable context.
This registration method provides the same functionality as Configurable.register(Class)
except that any priority
specified on the registered JAX-RS component class via jakarta.annotation.Priority
annotation is overridden
with the supplied priority
value.
Note that in case the priority is not applicable to a particular provider contract implemented by the class of the
registered component, the supplied priority
value will be ignored for that contract.
register
in interface Configurable<FeatureContext>
componentClass
- JAX-RS component class to be configured in the scope of this configurable context.bindingPriority
- the overriding priority for the registered component and all the provider contracts the component
implements.public CommonConfig register(Class<?> componentClass, Class<?>... contracts)
Configurable
feature
meta-provider) to be instantiated and used in the scope of this configurable context.
This registration method provides the same functionality as Configurable.register(Class)
except the JAX-RS component
class is only registered as a provider of the listed extension provider or meta-provider contracts
. All
explicitly enumerated contract types must represent a class or an interface implemented or extended by the registered
component. Contracts that are not assignable from
the registered component
class MUST be ignored and implementations SHOULD raise a warning to inform users about the ignored contract(s).
register
in interface Configurable<FeatureContext>
componentClass
- JAX-RS component class to be configured in the scope of this configurable context.contracts
- 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 null
collection of contracts via this method and SHOULD raise a warning about such event.public CommonConfig register(Class<?> componentClass, Map<Class<?>,Integer> contracts)
Configurable
feature
meta-provider) to be instantiated and used in the scope of this configurable context.
This registration method provides same functionality as Configurable.register(Class, Class[])
except that any priority
specified on the registered JAX-RS component class via jakarta.annotation.Priority
annotation is overridden for
each extension provider contract type separately with an integer priority value specified as a value in the supplied
map of [contract type, priority] pairs.
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
in interface Configurable<FeatureContext>
componentClass
- JAX-RS component class to be configured in the scope of this configurable context.contracts
- 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 assignable from
the registered component class MUST be ignored and implementations SHOULD raise a warning to inform
users about the ignored contract(s).public CommonConfig register(Object component)
Configurable
feature
meta-provider) to be instantiated and used in the scope of this configurable context.
Implementations SHOULD warn about and ignore registrations that do not conform to the requirements of supported
JAX-RS component types in the given configurable context. Any subsequent registration attempts for a component type,
for which a class or instance-based registration already exists in the system MUST be rejected by the JAX-RS
implementation and a warning SHOULD be raised to inform the user about the rejected registration.
The registered JAX-RS component is registered as a contract provider of all the recognized JAX-RS or
implementation-specific extension contracts including meta-provider contracts, such as Feature
or
DynamicFeature
.
As opposed to components registered via Configurable.register(Class)
method, the lifecycle of providers registered using
this instance-based register(...)
is not managed by JAX-RS runtime. The same registered component instance is
used during the whole lifespan of the configurable context. Fields and properties of all registered JAX-RS component
instances are injected with their declared dependencies (see Context
) by the JAX-RS runtime prior to use.
register
in interface Configurable<FeatureContext>
component
- JAX-RS component instance to be configured in the scope of this configurable context.public CommonConfig register(Object component, int bindingPriority)
Configurable
feature
meta-provider) to be instantiated and used in the scope of this configurable context.
This registration method provides the same functionality as Configurable.register(Object)
except that any priority
specified on the registered JAX-RS component class via jakarta.annotation.Priority
annotation is overridden
with the supplied priority
value.
Note that in case the priority is not applicable to a particular provider contract implemented by the class of the
registered component, the supplied priority
value will be ignored for that contract.
register
in interface Configurable<FeatureContext>
component
- JAX-RS component instance to be configured in the scope of this configurable context.bindingPriority
- the overriding priority for the registered component and all the provider contracts the component
implements.public CommonConfig register(Object component, Class<?>... contracts)
Configurable
feature
meta-provider) to be instantiated and used in the scope of this configurable context.
This registration method provides the same functionality as Configurable.register(Object)
except the JAX-RS component
class is only registered as a provider of the listed extension provider or meta-provider contracts
. All
explicitly enumerated contract types must represent a class or an interface implemented or extended by the registered
component. Contracts that are not assignable from
the registered component
class MUST be ignored and implementations SHOULD raise a warning to inform users about the ignored contract(s).
register
in interface Configurable<FeatureContext>
component
- JAX-RS component instance to be configured in the scope of this configurable context.contracts
- 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 null
collection of contracts via this method and SHOULD raise a warning about such event.public CommonConfig register(Object component, Map<Class<?>,Integer> contracts)
Configurable
feature
meta-provider) to be instantiated and used in the scope of this configurable context.
This registration method provides same functionality as Configurable.register(Object, Class[])
except that any priority
specified on the registered JAX-RS component class via jakarta.annotation.Priority
annotation is overridden for
each extension provider contract type separately with an integer priority value specified as a value in the supplied
map of [contract type, priority] pairs.
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
in interface Configurable<FeatureContext>
component
- JAX-RS component instance to be configured in the scope of this configurable context.contracts
- 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 assignable from
the registered component class MUST be ignored and implementations SHOULD raise a warning to inform
users about the ignored contract(s).public CommonConfig loadFrom(Configuration config)
config
- external configuration state to replace the configuration of this configurable instance.public void configureAutoDiscoverableProviders(InjectionManager injectionManager, Collection<AutoDiscoverable> autoDiscoverables, boolean forcedOnly)
auto-discoverables
in the injection manager.injectionManager
- injection manager in which the auto-discoverables should be configured.autoDiscoverables
- list of registered auto discoverable components.forcedOnly
- defines whether all or only forced auto-discoverables should be configured.public void configureMetaProviders(InjectionManager injectionManager, ManagedObjectsFinalizer finalizer)
injectionManager
- injection manager in which the binders and features should be configured.Copyright © 2007-2024, Oracle and/or its affiliates. All Rights Reserved. Use is subject to license terms.