Class CommonConfig
- java.lang.Object
-
- org.glassfish.jersey.model.internal.CommonConfig
-
- All Implemented Interfaces:
Configurable<FeatureContext>,Configuration,FeatureContext,ExtendedConfig
- Direct Known Subclasses:
ImmutableCommonConfig
public class CommonConfig extends Object implements FeatureContext, ExtendedConfig
Common immutableConfigurationimplementation for server and client.- Author:
- Michal Gajdos, Marek Potociar
-
-
Constructor Summary
Constructors Constructor Description CommonConfig(RuntimeType type, Predicate<ContractProvider> registrationStrategy)Create a newRuntimeConfiginstance.CommonConfig(CommonConfig config)Copy constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description CommonConfigaddProperties(Map<String,?> properties)Add properties toResourceConfig.voidconfigureAutoDiscoverableProviders(org.glassfish.jersey.internal.inject.InjectionManager injectionManager, Collection<org.glassfish.jersey.internal.spi.AutoDiscoverable> autoDiscoverables, boolean forcedOnly)Configureauto-discoverablesin the injection manager.voidconfigureMetaProviders(org.glassfish.jersey.internal.inject.InjectionManager injectionManager, ManagedObjectsFinalizer finalizer)Configure binders in the injection manager and enable JAX-RS features.booleanequals(Object o)Set<Class<?>>getClasses()Get the immutable set of registered JAX-RS component (such as provider, root resource orfeature) classes to be instantiated, injected and utilized in the scope of the configurable instance.ComponentBaggetComponentBag()Returns aComponentBaginstance associated with the configuration.ExtendedConfiggetConfiguration()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 orfeature) 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.ObjectgetProperty(String name)Get the value for the property with a given name.Collection<String>getPropertyNames()Returns an immutablecollectioncontaining the property names available within the context of the current configuration instance.RuntimeTypegetRuntimeType()Get the runtime type of this configuration context.inthashCode()booleanisEnabled(Feature feature)Check if a particularfeatureinstance has been previously enabled in the runtime configuration context.booleanisEnabled(Class<? extends Feature> featureClass)Check if afeatureinstance offeatureClassclass has been previously enabled in the runtime configuration context.booleanisProperty(String name)Get the value of the property with a given name converted toboolean.booleanisRegistered(Class<?> componentClass)Check if a JAX-RS component of the suppliedcomponentClassclass has been previously registered in the runtime configuration context.booleanisRegistered(Object component)Check if a particular JAX-RScomponentinstance (such as providers orfeatures) has been previously registered in the runtime configuration context.CommonConfigloadFrom(Configuration config)Load the internal configuration state from an externally provided configuration state.CommonConfigproperty(String name, Object value)Set the new configuration property, if already set, the existing value of the property will be updated.CommonConfigregister(Class<?> componentClass)Register a class of a custom JAX-RS component (such as an extension provider or afeaturemeta-provider) to be instantiated and used in the scope of this configurable context.CommonConfigregister(Class<?> componentClass, int bindingPriority)Register a class of a custom JAX-RS component (such as an extension provider or afeaturemeta-provider) to be instantiated and used in the scope of this configurable context.CommonConfigregister(Class<?> componentClass, Class<?>... contracts)Register a class of a custom JAX-RS component (such as an extension provider or afeaturemeta-provider) to be instantiated and used in the scope of this configurable context.CommonConfigregister(Class<?> componentClass, Map<Class<?>,Integer> contracts)Register a class of a custom JAX-RS component (such as an extension provider or afeaturemeta-provider) to be instantiated and used in the scope of this configurable context.CommonConfigregister(Object component)Register an instance of a custom JAX-RS component (such as an extension provider or afeaturemeta-provider) to be instantiated and used in the scope of this configurable context.CommonConfigregister(Object component, int bindingPriority)Register an instance of a custom JAX-RS component (such as an extension provider or afeaturemeta-provider) to be instantiated and used in the scope of this configurable context.CommonConfigregister(Object component, Class<?>... contracts)Register an instance of a custom JAX-RS component (such as an extension provider or afeaturemeta-provider) to be instantiated and used in the scope of this configurable context.CommonConfigregister(Object component, Map<Class<?>,Integer> contracts)Register an instance of a custom JAX-RS component (such as an extension provider or afeaturemeta-provider) to be instantiated and used in the scope of this configurable context.CommonConfigsetProperties(Map<String,?> properties)Set the configured properties to the provided map of properties.-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface jakarta.ws.rs.core.Configuration
hasProperty
-
-
-
-
Constructor Detail
-
CommonConfig
public CommonConfig(RuntimeType type, Predicate<ContractProvider> registrationStrategy)
Create a newRuntimeConfiginstance.The constructor provides a way for defining a
contract provider modelregistration 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.
- Parameters:
type- configuration runtime type.registrationStrategy- function driving the decision (based on the introspectedcontract provider model) whether or not should the component class registration continue towards a successful completion.
-
CommonConfig
public CommonConfig(CommonConfig config)
Copy constructor.- Parameters:
config- configurable to copy class properties from.
-
-
Method Detail
-
getConfiguration
public ExtendedConfig getConfiguration()
Description copied from interface:ConfigurableGet a live view of an internal configuration state of this configurable instance. Any changes made using methods of thisConfigurableinstance will be reflected in the returnedConfigurationinstance.The returned
Configurationinstance and the collection data it provides are not thread-safe wrt. modification made using methods on the parent configurable object.- Specified by:
getConfigurationin interfaceConfigurable<FeatureContext>- Returns:
- configuration live view of the internal configuration state.
-
getRuntimeType
public RuntimeType getRuntimeType()
Description copied from interface:ConfigurationGet the runtime type of this configuration context.- Specified by:
getRuntimeTypein interfaceConfiguration- Returns:
- configuration context runtime type.
-
getProperties
public Map<String,Object> getProperties()
Description copied from interface:ConfigurationGet the immutable bag of configuration properties.- Specified by:
getPropertiesin interfaceConfiguration- Returns:
- the immutable view of configuration properties.
-
getProperty
public Object getProperty(String name)
Description copied from interface:ConfigurationGet the value for the property with a given name.- Specified by:
getPropertyin interfaceConfiguration- Parameters:
name- property name.- Returns:
- the property value for the specified property name or
nullif the property with such name is not configured.
-
isProperty
public boolean isProperty(String name)
Description copied from interface:ExtendedConfigGet the value of the property with a given name converted toboolean. Returnsfalseif the value is not convertible.- Specified by:
isPropertyin interfaceExtendedConfig- Parameters:
name- property name.- Returns:
booleanproperty value orfalseif the property is not convertible.
-
getPropertyNames
public Collection<String> getPropertyNames()
Description copied from interface:ConfigurationReturns an immutablecollectioncontaining 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.- Specified by:
getPropertyNamesin interfaceConfiguration- Returns:
- an immutable
collectionof property names. - See Also:
Configuration.getProperty(java.lang.String)
-
isEnabled
public boolean isEnabled(Class<? extends Feature> featureClass)
Description copied from interface:ConfigurationCheck if afeatureinstance offeatureClassclass has been previously enabled in the runtime configuration context.Method returns
truein case any instance of thefeatureClassclass is already present among the features previously successfully enabled in the configuration context.- Specified by:
isEnabledin interfaceConfiguration- Parameters:
featureClass- a feature class to test for.- Returns:
trueif a feature of a given class has been previously enabled in this configuration context,falseotherwise.
-
isEnabled
public boolean isEnabled(Feature feature)
Description copied from interface:ConfigurationCheck if a particularfeatureinstance has been previously enabled in the runtime configuration context.Method returns
trueonly in case an instance equal to thefeatureinstance is already present among the features previously successfully enabled in the configuration context.- Specified by:
isEnabledin interfaceConfiguration- Parameters:
feature- a feature instance to test for.- Returns:
trueif the feature instance has been previously enabled in this configuration context,falseotherwise.
-
isRegistered
public boolean isRegistered(Object component)
Description copied from interface:ConfigurationCheck if a particular JAX-RScomponentinstance (such as providers orfeatures) has been previously registered in the runtime configuration context.Method returns
trueonly in case an instance equal to thecomponentinstance is already present among the components previously registered in the configuration context.- Specified by:
isRegisteredin interfaceConfiguration- Parameters:
component- a component instance to test for.- Returns:
trueif the component instance has been previously registered in this configuration context,falseotherwise.- See Also:
Configuration.isEnabled(Feature)
-
isRegistered
public boolean isRegistered(Class<?> componentClass)
Description copied from interface:ConfigurationCheck if a JAX-RS component of the suppliedcomponentClassclass has been previously registered in the runtime configuration context.Method returns
truein case a component of the suppliedcomponentClassclass is already present among the previously registered component classes or instances in the configuration context.- Specified by:
isRegisteredin interfaceConfiguration- Parameters:
componentClass- a component class to test for.- Returns:
trueif a component of a given class has been previously registered in this configuration context,falseotherwise.- See Also:
Configuration.isEnabled(Class)
-
getContracts
public Map<Class<?>,Integer> getContracts(Class<?> componentClass)
Description copied from interface:ConfigurationGet the extension contract registration information for a component of a given class. For component classes that are not configured in this configuration context the method returns an emptyMap. Method does not returnnull.- Specified by:
getContractsin interfaceConfiguration- Parameters:
componentClass- a component class for which to get contracts.- Returns:
- map of extension contracts and their priorities for which the component class is registered. May return an empty map in case the component has not been registered for any extension contract supported by the implementation.
-
getClasses
public Set<Class<?>> getClasses()
Description copied from interface:ConfigurationGet the immutable set of registered JAX-RS component (such as provider, root resource orfeature) classes to be instantiated, injected and utilized in the scope of the configurable instance. In contrast toApplication.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.
- Specified by:
getClassesin interfaceConfiguration- Returns:
- the immutable set of registered JAX-RS component classes. The returned value may be empty but will never be
null. - See Also:
Configuration.getInstances()
-
getInstances
public Set<Object> getInstances()
Description copied from interface:ConfigurationGet the immutable set of registered JAX-RS component (such as provider orfeature) instances to be utilized by the configurable instance. Fields and properties of returned instances are injected with their declared dependencies (seeContext) 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.
- Specified by:
getInstancesin interfaceConfiguration- Returns:
- the immutable set of registered JAX-RS component instances. The returned value may be empty but will never be
null. - See Also:
Configuration.getClasses()
-
getComponentBag
public final ComponentBag getComponentBag()
Returns aComponentBaginstance associated with the configuration.- Returns:
- a non-null component bag instance.
-
getModelEnhancer
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. Default implementation return an enhancer just builds the model.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.
- Parameters:
componentClass- class of the component being registered.- Returns:
- filter for the contracts that being registered for a given component class.
-
setProperties
public CommonConfig setProperties(Map<String,?> properties)
Set the configured properties to the provided map of properties.- Parameters:
properties- new map of properties to be set.- Returns:
- updated configuration instance.
-
addProperties
public CommonConfig addProperties(Map<String,?> properties)
Add properties toResourceConfig. If any of the added properties exists already, he values of the existing properties will be replaced with new values.- Parameters:
properties- properties to add.- Returns:
- updated configuration instance.
-
property
public CommonConfig property(String name, Object value)
Description copied from interface:ConfigurableSet the new configuration property, if already set, the existing value of the property will be updated. Setting anullvalue into a property effectively removes the property from the property bag.- Specified by:
propertyin interfaceConfigurable<FeatureContext>- Parameters:
name- property name.value- (new) property value.nullvalue removes the property with the given name.- Returns:
- the updated configurable instance.
-
register
public CommonConfig register(Class<?> componentClass)
Description copied from interface:ConfigurableRegister a class of a custom JAX-RS component (such as an extension provider or afeaturemeta-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 asFeatureorDynamicFeature.As opposed to component instances registered via
Configurable.register(Object)method, the lifecycle of components registered using this class-basedregister(...)method is fully managed by the JAX-RS implementation or any underlying IoC container supported by the implementation.- Specified by:
registerin interfaceConfigurable<FeatureContext>- Parameters:
componentClass- JAX-RS component class to be configured in the scope of this configurable context.- Returns:
- the updated configurable context.
-
register
public CommonConfig register(Class<?> componentClass, int bindingPriority)
Description copied from interface:ConfigurableRegister a class of a custom JAX-RS component (such as an extension provider or afeaturemeta-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 viajakarta.annotation.Priorityannotation is overridden with the suppliedpriorityvalue.Note that in case the priority is not applicable to a particular provider contract implemented by the class of the registered component, the supplied
priorityvalue will be ignored for that contract.- Specified by:
registerin interfaceConfigurable<FeatureContext>- Parameters:
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.- Returns:
- the updated configurable context.
-
register
public CommonConfig register(Class<?> componentClass, Class<?>... contracts)
Description copied from interface:ConfigurableRegister a class of a custom JAX-RS component (such as an extension provider or afeaturemeta-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-providercontracts. All explicitly enumerated contract types must represent a class or an interface implemented or extended by the registered component. Contracts that are notassignable fromthe registered component class MUST be ignored and implementations SHOULD raise a warning to inform users about the ignored contract(s).- Specified by:
registerin interfaceConfigurable<FeatureContext>- Parameters:
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 ornullcollection of contracts via this method and SHOULD raise a warning about such event.- Returns:
- the updated configurable context.
-
register
public CommonConfig register(Class<?> componentClass, Map<Class<?>,Integer> contracts)
Description copied from interface:ConfigurableRegister a class of a custom JAX-RS component (such as an extension provider or afeaturemeta-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 viajakarta.annotation.Priorityannotation 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.
- Specified by:
registerin interfaceConfigurable<FeatureContext>- Parameters:
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 notassignable fromthe registered component class MUST be ignored and implementations SHOULD raise a warning to inform users about the ignored contract(s).- Returns:
- the updated configurable context.
-
register
public CommonConfig register(Object component)
Description copied from interface:ConfigurableRegister an instance of a custom JAX-RS component (such as an extension provider or afeaturemeta-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 asFeatureorDynamicFeature.As opposed to components registered via
Configurable.register(Class)method, the lifecycle of providers registered using this instance-basedregister(...)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 (seeContext) by the JAX-RS runtime prior to use.- Specified by:
registerin interfaceConfigurable<FeatureContext>- Parameters:
component- JAX-RS component instance to be configured in the scope of this configurable context.- Returns:
- the updated configurable context.
-
register
public CommonConfig register(Object component, int bindingPriority)
Description copied from interface:ConfigurableRegister an instance of a custom JAX-RS component (such as an extension provider or afeaturemeta-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 viajakarta.annotation.Priorityannotation is overridden with the suppliedpriorityvalue.Note that in case the priority is not applicable to a particular provider contract implemented by the class of the registered component, the supplied
priorityvalue will be ignored for that contract.- Specified by:
registerin interfaceConfigurable<FeatureContext>- Parameters:
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.- Returns:
- the updated configurable context.
-
register
public CommonConfig register(Object component, Class<?>... contracts)
Description copied from interface:ConfigurableRegister an instance of a custom JAX-RS component (such as an extension provider or afeaturemeta-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-providercontracts. All explicitly enumerated contract types must represent a class or an interface implemented or extended by the registered component. Contracts that are notassignable fromthe registered component class MUST be ignored and implementations SHOULD raise a warning to inform users about the ignored contract(s).- Specified by:
registerin interfaceConfigurable<FeatureContext>- Parameters:
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 ornullcollection of contracts via this method and SHOULD raise a warning about such event.- Returns:
- the updated configurable context.
-
register
public CommonConfig register(Object component, Map<Class<?>,Integer> contracts)
Description copied from interface:ConfigurableRegister an instance of a custom JAX-RS component (such as an extension provider or afeaturemeta-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 viajakarta.annotation.Priorityannotation 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.
- Specified by:
registerin interfaceConfigurable<FeatureContext>- Parameters:
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 notassignable fromthe registered component class MUST be ignored and implementations SHOULD raise a warning to inform users about the ignored contract(s).- Returns:
- the updated configurable context.
-
loadFrom
public CommonConfig loadFrom(Configuration config)
Load the internal configuration state from an externally provided configuration state. Calling this method effectively replaces existing configuration state of the instance with the state represented by the externally provided configuration. If the features, auto-discoverables of given config has been already configured then this method will make sure to not configure them for the second time.- Parameters:
config- external configuration state to replace the configuration of this configurable instance.- Returns:
- the updated common configuration instance.
-
configureAutoDiscoverableProviders
public void configureAutoDiscoverableProviders(org.glassfish.jersey.internal.inject.InjectionManager injectionManager, Collection<org.glassfish.jersey.internal.spi.AutoDiscoverable> autoDiscoverables, boolean forcedOnly)Configureauto-discoverablesin the injection manager.- Parameters:
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.
-
configureMetaProviders
public void configureMetaProviders(org.glassfish.jersey.internal.inject.InjectionManager injectionManager, ManagedObjectsFinalizer finalizer)Configure binders in the injection manager and enable JAX-RS features.- Parameters:
injectionManager- injection manager in which the binders and features should be configured.
-
-