org.glassfish.jersey.server
Class ResourceConfig

java.lang.Object
  extended by javax.ws.rs.core.Application
      extended by org.glassfish.jersey.server.ResourceConfig
All Implemented Interfaces:
javax.ws.rs.core.Configurable<ResourceConfig>, javax.ws.rs.core.Configuration, ExtendedConfig, ServerConfig

public class ResourceConfig
extends javax.ws.rs.core.Application
implements javax.ws.rs.core.Configurable<ResourceConfig>, ServerConfig

The resource configuration for configuring a web application.

Author:
Paul Sandoz, Martin Matula (martin.matula at oracle.com), Michal Gajdos (michal.gajdos at oracle.com), Marek Potociar (marek.potociar at oracle.com)

Constructor Summary
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.
 
Method Summary
 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(javax.ws.rs.core.Application application)
          Returns a ResourceConfig instance for the supplied application.
static ResourceConfig forApplicationClass(Class<? extends javax.ws.rs.core.Application> applicationClass)
          Returns a ResourceConfig instance wrapping the application of the supplied class.
static ResourceConfig forApplicationClass(Class<? extends javax.ws.rs.core.Application> applicationClass, Set<Class<?>> defaultClasses)
          Returns a ResourceConfig instance wrapping the application of the supplied class.
 javax.ws.rs.core.Application getApplication()
          Returns JAX-RS application corresponding with this ResourceConfig.
 String getApplicationName()
          Get the name of the Jersey application.
 Set<Class<?>> getClasses()
           
 ClassLoader getClassLoader()
          Get resource and provider class loader.
 ServerConfig getConfiguration()
           
 Map<Class<?>,Integer> getContracts(Class<?> componentClass)
           
 Set<Object> getInstances()
           
 Map<String,Object> getProperties()
           
 Object getProperty(String name)
           
 Collection<String> getPropertyNames()
           
 Set<Resource> getResources()
          Get programmatically modeled resources.
 javax.ws.rs.RuntimeType getRuntimeType()
           
 Set<Object> getSingletons()
           
 boolean isEnabled(Class<? extends javax.ws.rs.core.Feature> featureClass)
           
 boolean isEnabled(javax.ws.rs.core.Feature feature)
           
 boolean isProperty(String name)
           
 boolean isRegistered(Class<?> componentClass)
           
 boolean isRegistered(Object component)
           
 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)
           
 ResourceConfig register(Class<?> componentClass)
           
 ResourceConfig register(Class<?> componentClass, Class<?>... contracts)
           
 ResourceConfig register(Class<?> componentClass, int bindingPriority)
           
 ResourceConfig register(Class<?> componentClass, Map<Class<?>,Integer> contracts)
           
 ResourceConfig register(Object component)
           
 ResourceConfig register(Object component, Class<?>... contracts)
           
 ResourceConfig register(Object component, int bindingPriority)
           
 ResourceConfig register(Object component, Map<Class<?>,Integer> contracts)
           
 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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ResourceConfig

public ResourceConfig()
Create a new resource configuration without any custom properties or resource and provider classes.


ResourceConfig

public ResourceConfig(Set<Class<?>> classes)
Create a new resource configuration initialized with a given set of resource/provider classes.

Parameters:
classes - application-specific resource and/or provider classes.

ResourceConfig

public ResourceConfig(Class<?>... classes)
Create a new resource configuration initialized with a given set of resource/provider classes.

Parameters:
classes - application-specific resource and/or provider classes.

ResourceConfig

public ResourceConfig(ResourceConfig original)
Create a defensive resource configuration copy initialized with a given ResourceConfig.

Parameters:
original - resource configuration to create a defensive copy from.
Method Detail

forApplication

public static ResourceConfig forApplication(javax.ws.rs.core.Application application)
Returns a 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.

Parameters:
application - Application to provide the ResourceConfig instance for.
Returns:
ResourceConfig instance for the supplied application.

forApplicationClass

public static ResourceConfig forApplicationClass(Class<? extends javax.ws.rs.core.Application> applicationClass)
Returns a ResourceConfig instance wrapping the application of the supplied class.

Parameters:
applicationClass - Class representing a JAX-RS application.
Returns:
ResourceConfig wrapping the JAX-RS application defined by the supplied class.

forApplicationClass

public static ResourceConfig forApplicationClass(Class<? extends javax.ws.rs.core.Application> applicationClass,
                                                 Set<Class<?>> defaultClasses)
Returns a 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.

Parameters:
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.
Returns:
ResourceConfig wrapping the JAX-RS application defined by the supplied class.

addProperties

public final ResourceConfig addProperties(Map<String,Object> properties)
Add properties to ResourceConfig.

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 resource configuration instance.

setProperties

public ResourceConfig setProperties(Map<String,?> properties)
Set new configuration properties replacing all previously set properties.

Parameters:
properties - new set of configuration properties. The content of the map will replace any existing properties set on the configuration instance.
Returns:
the updated configuration instance.

property

public ResourceConfig property(String name,
                               Object value)
Specified by:
property in interface javax.ws.rs.core.Configurable<ResourceConfig>

register

public ResourceConfig register(Class<?> componentClass)
Specified by:
register in interface javax.ws.rs.core.Configurable<ResourceConfig>

register

public ResourceConfig register(Class<?> componentClass,
                               int bindingPriority)
Specified by:
register in interface javax.ws.rs.core.Configurable<ResourceConfig>

register

public ResourceConfig register(Class<?> componentClass,
                               Class<?>... contracts)
Specified by:
register in interface javax.ws.rs.core.Configurable<ResourceConfig>

register

public ResourceConfig register(Class<?> componentClass,
                               Map<Class<?>,Integer> contracts)
Specified by:
register in interface javax.ws.rs.core.Configurable<ResourceConfig>

register

public ResourceConfig register(Object component)
Specified by:
register in interface javax.ws.rs.core.Configurable<ResourceConfig>

register

public ResourceConfig register(Object component,
                               int bindingPriority)
Specified by:
register in interface javax.ws.rs.core.Configurable<ResourceConfig>

register

public ResourceConfig register(Object component,
                               Class<?>... contracts)
Specified by:
register in interface javax.ws.rs.core.Configurable<ResourceConfig>

register

public ResourceConfig register(Object component,
                               Map<Class<?>,Integer> contracts)
Specified by:
register in interface javax.ws.rs.core.Configurable<ResourceConfig>

registerClasses

public final ResourceConfig registerClasses(Set<Class<?>> classes)
Register annotated JAX-RS resource, JAX-RS or Jersey contract provider or JAX-RS feature in the 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.

Parameters:
classes - classes to register.
Returns:
updated resource configuration instance.

registerClasses

public final ResourceConfig registerClasses(Class<?>... classes)
Register annotated JAX-RS resource, JAX-RS or Jersey contract provider or JAX-RS feature in the 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.

Parameters:
classes - classes to register.
Returns:
updated resource configuration instance.

registerInstances

public final 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.

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.

Parameters:
instances - instances to register.
Returns:
updated resource configuration instance.

registerInstances

public final 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.

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.

Parameters:
instances - instances to register.
Returns:
updated resource configuration instance.

registerResources

public final ResourceConfig registerResources(Resource... resources)
Register new programmatic resource models in the ResourceConfig.

Parameters:
resources - resource models to register.
Returns:
updated resource configuration instance.

registerResources

public final ResourceConfig registerResources(Set<Resource> resources)
Register new resource models in the ResourceConfig.

Parameters:
resources - resource models to register.
Returns:
updated resource configuration instance.

registerFinder

public final ResourceConfig registerFinder(ResourceFinder resourceFinder)
Add a ResourceFinder to ResourceConfig.

Parameters:
resourceFinder - ResourceFinder
Returns:
updated resource configuration instance.

setApplicationName

public final ResourceConfig setApplicationName(String applicationName)
Set the name of the application. The name is an arbitrary user defined name which is used to distinguish between Jersey applications in the case that more applications are deployed on the same runtime (container). The name can be used for example for purposes of monitoring by JMX when name identifies to which application deployed MBeans belong to. The name should be unique in the runtime.

Parameters:
applicationName - Unique application name.
Returns:
updated resource configuration instance.

setClassLoader

public final ResourceConfig setClassLoader(ClassLoader classLoader)
Set ClassLoader which will be used for resource discovery.

Parameters:
classLoader - provided ClassLoader.
Returns:
updated resource configuration instance.

packages

public final ResourceConfig packages(String... packages)
Adds array of package names which will be used to scan for components.

Packages will be scanned recursively, including all nested packages.

Parameters:
packages - array of package names.
Returns:
updated resource configuration instance.
See Also:
packages(boolean, String...)

packages

public final ResourceConfig packages(boolean recursive,
                                     String... packages)
Adds array of package names which will be used to scan for components.

Parameters:
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.
Returns:
updated resource configuration instance.
See Also:
packages(String...)

files

public final ResourceConfig files(String... files)
Adds array of file and directory names to scan for components.

Any directories in the list will be scanned recursively, including their sub-directories.

Parameters:
files - array of file and directory names.
Returns:
updated resource configuration instance.

files

public final ResourceConfig files(boolean recursive,
                                  String... files)
Adds array of file and directory names to scan for components.

Parameters:
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.
Returns:
updated resource configuration instance.

getConfiguration

public final ServerConfig getConfiguration()
Specified by:
getConfiguration in interface javax.ws.rs.core.Configurable<ResourceConfig>

getProperties

public final Map<String,Object> getProperties()
Specified by:
getProperties in interface javax.ws.rs.core.Configuration
Overrides:
getProperties in class javax.ws.rs.core.Application

getProperty

public final Object getProperty(String name)
Specified by:
getProperty in interface javax.ws.rs.core.Configuration

getPropertyNames

public Collection<String> getPropertyNames()
Specified by:
getPropertyNames in interface javax.ws.rs.core.Configuration

isProperty

public final boolean isProperty(String name)
Specified by:
isProperty in interface ExtendedConfig

getClasses

public final Set<Class<?>> getClasses()
Specified by:
getClasses in interface javax.ws.rs.core.Configuration
Overrides:
getClasses in class javax.ws.rs.core.Application

getInstances

public final Set<Object> getInstances()
Specified by:
getInstances in interface javax.ws.rs.core.Configuration

getSingletons

public final Set<Object> getSingletons()
Overrides:
getSingletons in class javax.ws.rs.core.Application

getRuntimeType

public javax.ws.rs.RuntimeType getRuntimeType()
Specified by:
getRuntimeType in interface javax.ws.rs.core.Configuration

isEnabled

public boolean isEnabled(javax.ws.rs.core.Feature feature)
Specified by:
isEnabled in interface javax.ws.rs.core.Configuration

isEnabled

public boolean isEnabled(Class<? extends javax.ws.rs.core.Feature> featureClass)
Specified by:
isEnabled in interface javax.ws.rs.core.Configuration

isRegistered

public boolean isRegistered(Object component)
Specified by:
isRegistered in interface javax.ws.rs.core.Configuration

isRegistered

public boolean isRegistered(Class<?> componentClass)
Specified by:
isRegistered in interface javax.ws.rs.core.Configuration

getContracts

public Map<Class<?>,Integer> getContracts(Class<?> componentClass)
Specified by:
getContracts in interface javax.ws.rs.core.Configuration

getResources

public final Set<Resource> getResources()
Description copied from interface: ServerConfig
Get programmatically modeled resources.

Specified by:
getResources in interface ServerConfig
Returns:
programmatically modeled resources.

getClassLoader

public final ClassLoader getClassLoader()
Get resource and provider class loader.

Returns:
class loader to be used when looking up the resource classes and providers.

getApplication

public final javax.ws.rs.core.Application getApplication()
Returns JAX-RS application corresponding with this ResourceConfig.

Returns:
JAX-RS application corresponding with this ResourceConfig.

getApplicationName

public String getApplicationName()
Get the name of the Jersey application.

Returns:
Name of the application.
See Also:
setApplicationName(String)


Copyright © 2007-2013, Oracle and/or its affiliates. All Rights Reserved. Use is subject to license terms.