public class ResourceConfig extends Application implements Configurable<ResourceConfig>, ServerConfig
Constructor and Description |
---|
ResourceConfig()
Create a new resource configuration without any custom properties or
resource and provider classes.
|
ResourceConfig(Class<?>... classes)
Create a new resource configuration initialized with a given set of
resource/provider classes.
|
ResourceConfig(ResourceConfig original)
Create a defensive resource configuration copy initialized with a given
ResourceConfig . |
ResourceConfig(Set<Class<?>> classes)
Create a new resource configuration initialized with a given set of
resource/provider classes.
|
Modifier and Type | Method and Description |
---|---|
ResourceConfig |
addProperties(Map<String,Object> properties)
Add properties to
ResourceConfig . |
ResourceConfig |
files(boolean recursive,
String... files)
Adds array of file and directory names to scan for components.
|
ResourceConfig |
files(String... files)
Adds array of file and directory names to scan for components.
|
static ResourceConfig |
forApplication(Application application)
Returns a
ResourceConfig instance for the supplied application. |
static ResourceConfig |
forApplicationClass(Class<? extends Application> applicationClass)
Returns a
ResourceConfig instance wrapping the application of the supplied class. |
static ResourceConfig |
forApplicationClass(Class<? extends Application> applicationClass,
Set<Class<?>> defaultClasses)
Returns a
ResourceConfig instance wrapping the application of the supplied class. |
Application |
getApplication()
Returns JAX-RS application corresponding with this ResourceConfig.
|
String |
getApplicationName()
Get the name of the Jersey application.
|
Set<Class<?>> |
getClasses()
Get a set of root resource, provider and
feature classes. |
ClassLoader |
getClassLoader()
Get resource and provider class loader.
|
ServerConfig |
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. |
Map<String,Object> |
getProperties()
Get a map of custom application-wide 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. |
Set<Resource> |
getResources()
Get programmatically modeled resources.
|
RuntimeType |
getRuntimeType()
Get the runtime type of this configuration context.
|
Set<Object> |
getSingletons()
Get a set of root resource, provider and
feature instances. |
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. |
ResourceConfig |
packages(boolean recursive,
String... packages)
Adds array of package names which will be used to scan for components.
|
ResourceConfig |
packages(String... packages)
Adds array of package names which will be used to scan for components.
|
ResourceConfig |
property(String name,
Object value)
Set the new configuration property, if already set, the existing value of
the property will be updated.
|
ResourceConfig |
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. |
ResourceConfig |
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. |
ResourceConfig |
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. |
ResourceConfig |
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. |
ResourceConfig |
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. |
ResourceConfig |
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. |
ResourceConfig |
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. |
ResourceConfig |
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. |
ResourceConfig |
registerClasses(Class<?>... classes)
Register annotated JAX-RS resource, JAX-RS or Jersey contract provider or JAX-RS feature
in the
ResourceConfig . |
ResourceConfig |
registerClasses(Set<Class<?>> classes)
Register annotated JAX-RS resource, JAX-RS or Jersey contract provider or JAX-RS feature
in the
ResourceConfig . |
ResourceConfig |
registerFinder(ResourceFinder resourceFinder)
Add a
ResourceFinder to ResourceConfig . |
ResourceConfig |
registerInstances(Object... instances)
Register annotated JAX-RS resource, JAX-RS or Jersey contract provider, JAX-RS feature
or
HK2 binder instances (singletons) in the ResourceConfig . |
ResourceConfig |
registerInstances(Set<Object> instances)
Register annotated JAX-RS resource, JAX-RS or Jersey contract provider, JAX-RS feature
or
HK2 binder instances (singletons) in the ResourceConfig . |
ResourceConfig |
registerResources(Resource... resources)
Register new programmatic resource models in the
ResourceConfig . |
ResourceConfig |
registerResources(Set<Resource> resources)
Register new resource models in the
ResourceConfig . |
ResourceConfig |
setApplicationName(String applicationName)
Set the name of the application.
|
ResourceConfig |
setClassLoader(ClassLoader classLoader)
Set
ClassLoader which will be used for resource discovery. |
ResourceConfig |
setProperties(Map<String,?> properties)
Set new configuration properties replacing all previously set properties.
|
public ResourceConfig()
public ResourceConfig(Set<Class<?>> classes)
classes
- application-specific resource and/or provider classes.public ResourceConfig(Class<?>... classes)
classes
- application-specific resource and/or provider classes.public ResourceConfig(ResourceConfig original)
ResourceConfig
.original
- resource configuration to create a defensive copy from.public static ResourceConfig forApplication(Application application)
ResourceConfig
instance for the supplied application.
If the application is an instance of ResourceConfig
the method returns defensive copy of the resource config.
Otherwise it creates a new ResourceConfig
from the application.application
- Application to provide the ResourceConfig
instance for.public static ResourceConfig forApplicationClass(Class<? extends Application> applicationClass)
ResourceConfig
instance wrapping the application of the supplied class.applicationClass
- Class representing a JAX-RS application.public static ResourceConfig forApplicationClass(Class<? extends Application> applicationClass, Set<Class<?>> defaultClasses)
ResourceConfig
instance wrapping the application of the supplied class.
This method provides an option of supplying the set of classes that should be returned from getClasses()
method if the application defined by the supplied application class returns empty sets from
Application.getClasses()
and Application.getSingletons()
methods.applicationClass
- Class representing a JAX-RS application.defaultClasses
- Default set of classes that should be returned from getClasses()
if the underlying
application does not provide any classes and singletons.public final ResourceConfig addProperties(Map<String,Object> 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 ResourceConfig setProperties(Map<String,?> properties)
properties
- new set of configuration properties. The content of
the map will replace any existing properties set on the configuration
instance.public ResourceConfig property(String name, Object value)
Configurable
null
value into a property
effectively removes the property from the property bag.property
in interface Configurable<ResourceConfig>
name
- property name.value
- (new) property value. null
value removes the property
with the given name.public ResourceConfig 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<ResourceConfig>
componentClass
- JAX-RS component class to be configured in the scope of this
configurable context.public ResourceConfig 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
javax.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<ResourceConfig>
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 ResourceConfig 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<ResourceConfig>
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 ResourceConfig 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
javax.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<ResourceConfig>
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 ResourceConfig 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<ResourceConfig>
component
- JAX-RS component instance to be configured in the scope of this
configurable context.public ResourceConfig 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
javax.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<ResourceConfig>
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 ResourceConfig 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<ResourceConfig>
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 ResourceConfig 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
javax.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<ResourceConfig>
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 final ResourceConfig registerClasses(Set<Class<?>> classes)
ResourceConfig
.
Note that registered JAX-RS features are used to initialize and configure
the Jersey runtime ServiceLocator
instance during application deployment, but are
otherwise ignored by server-side runtime, unless they implement also another contract
recognized by Jersey runtime.
Also note that registration of HK2 binder
classes is note supported. HK2 binders
must be registered as instances
.
classes
- classes to register.public final ResourceConfig registerClasses(Class<?>... classes)
ResourceConfig
.
Note that registered JAX-RS features are used to initialize and configure
the Jersey runtime ServiceLocator
instance during application deployment, but are
otherwise ignored by server-side runtime, unless they implement also another contract
recognized by Jersey runtime.
Also note that registration of HK2 binder
classes is note supported. HK2 binders
must be registered as instances
.
classes
- classes to register.public final ResourceConfig registerInstances(Set<Object> instances)
HK2 binder
instances (singletons) in the ResourceConfig
.
Note that registered HK2 binders and JAX-RS features are used to initialize and configure
the Jersey runtime ServiceLocator
instance during application deployment, but are
otherwise ignored by server-side runtime, unless they implement also another contract
recognized by Jersey runtime.
instances
- instances to register.public final ResourceConfig registerInstances(Object... instances)
HK2 binder
instances (singletons) in the ResourceConfig
.
Note that registered HK2 binders and JAX-RS features are used to initialize and configure
the Jersey runtime ServiceLocator
instance during application deployment, but are
otherwise ignored by server-side runtime, unless they implement also another contract
recognized by Jersey runtime.
instances
- instances to register.public final ResourceConfig registerResources(Resource... resources)
ResourceConfig
.resources
- resource models to register.public final ResourceConfig registerResources(Set<Resource> resources)
ResourceConfig
.resources
- resource models to register.public final ResourceConfig registerFinder(ResourceFinder resourceFinder)
ResourceFinder
to ResourceConfig
.resourceFinder
- ResourceFinder
public final ResourceConfig setApplicationName(String applicationName)
applicationName
- Unique application name.public final ResourceConfig setClassLoader(ClassLoader classLoader)
ClassLoader
which will be used for resource discovery.classLoader
- provided ClassLoader
.public final ResourceConfig packages(String... packages)
Path
annotation
on parent classes and interfaces will be ignored.
Packages will be scanned recursively, including all nested packages.packages
- array of package names.packages(boolean, String...)
public final ResourceConfig packages(boolean recursive, String... packages)
Path
annotation
on parent classes and interfaces will be ignored.
recursive
- defines whether any nested packages in the collection of specified
package names should be recursively scanned (value of true
)
as part of the package scanning or not (value of false
).packages
- array of package names.packages(String...)
public final ResourceConfig files(String... files)
files
- array of file and directory names.public final ResourceConfig files(boolean recursive, String... files)
recursive
- defines whether any sub-directories of the directories specified
in the collection of file names should be recursively scanned (value of true
)
as part of the file scanning or not (value of false
).files
- array of file and directory names.public final ServerConfig 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<ResourceConfig>
public final Map<String,Object> getProperties()
Application
The returned properties are reflected in the application configuration
passed to the server-side features or injected into server-side JAX-RS components.
The set of returned properties may be further extended or customized at deployment time
using container-specific features and deployment descriptors. For example, in a Servlet-based
deployment scenario, web application's <context-param>
and Servlet <init-param>
values may be used to extend or override values of the properties programmatically returned
by this method.
The default implementation returns an empty set.
getProperties
in interface Configuration
getProperties
in class Application
null
is equivalent to returning an empty set.public final Object getProperty(String name)
Configuration
getProperty
in interface Configuration
name
- property name.null
if the property with such name is not configured.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 final 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 final Set<Class<?>> getClasses()
Application
feature
classes.
The default life-cycle for resource class instances is per-request. The default
life-cycle for providers (registered directly or via a feature) is singleton.
Implementations should warn about and ignore classes that do not
conform to the requirements of root resource or provider/feature classes.
Implementations should warn about and ignore classes for which
Application.getSingletons()
returns an instance. Implementations MUST
NOT modify the returned set.
The default implementation returns an empty set.
getClasses
in interface Configuration
getClasses
in class Application
null
is equivalent to returning an empty set.Configuration.getInstances()
public final 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 Set<Object> getSingletons()
Application
feature
instances.
Fields and properties of returned instances are injected with their declared
dependencies (see Context
) by the runtime prior to use.
Implementations should warn about and ignore classes that do not conform to the requirements of root resource or provider classes. Implementations should flag an error if the returned set includes more than one instance of the same class. Implementations MUST NOT modify the returned set.
The default implementation returns an empty set.
getSingletons
in class Application
null
is equivalent to returning an empty set.public RuntimeType getRuntimeType()
Configuration
getRuntimeType
in interface Configuration
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 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 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
public final Set<Resource> getResources()
ServerConfig
getResources
in interface ServerConfig
public final ClassLoader getClassLoader()
public final Application getApplication()
public String getApplicationName()
setApplicationName(String)
Copyright © 2007-2015, Oracle and/or its affiliates. All Rights Reserved. Use is subject to license terms.