org.glassfish.jersey.server

## Class ResourceConfig

- java.lang.Object
- - jakarta.ws.rs.core.Application
  - - org.glassfish.jersey.server.ResourceConfig

All Implemented Interfaces:
  jakarta.ws.rs.core.Configurable<ResourceConfig>, jakarta.ws.rs.core.Configuration, ExtendedConfig, ServerConfig

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

The resource configuration for configuring a web application.

Author:
  Paul Sandoz, Martin Matula, Michal Gajdos, Marek Potociar

### Constructor Summary

Constructors
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.

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`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(jakarta.ws.rs.core.Application application)` Returns a `ResourceConfig` instance for the supplied application.
`static ResourceConfig` `forApplicationClass(Class<? extends jakarta.ws.rs.core.Application> applicationClass)` Returns a `ResourceConfig` instance wrapping the application of the supplied class.
`static ResourceConfig` `forApplicationClass(Class<? extends jakarta.ws.rs.core.Application> applicationClass, Set<Class<?>> defaultClasses)` Returns a `ResourceConfig` instance wrapping the application of the supplied class.
`jakarta.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.
`jakarta.ws.rs.RuntimeType` `getRuntimeType()`
`Set<Object>` `getSingletons()`
`boolean` `isEnabled(Class<? extends jakarta.ws.rs.core.Feature> featureClass)`
`boolean` `isEnabled(jakarta.ws.rs.core.Feature feature)`
`boolean` `isProperty(String name)`
`boolean` `isRegistered(Class<?> componentClass)`
`boolean` `isRegistered(Object component)`
`ResourceConfig` `packages(boolean recursive, ClassLoader classLoader, String... packages)` Adds array of package names which will be used to scan for components.
`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, `Jersey 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 `Jersey 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 createAndInitialize a defensive copy from.

### Method Detail

#### forApplication

    public static ResourceConfig forApplication(jakarta.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 jakarta.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 jakarta.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, old values of existing properties will be replaced by 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 `jakarta.ws.rs.core.Configurable<ResourceConfig>`

#### register

    public ResourceConfig register(Class<?> componentClass)

Specified by:
  `register` in interface `jakarta.ws.rs.core.Configurable<ResourceConfig>`

#### register

    public ResourceConfig register(Class<?> componentClass,
                                   int bindingPriority)

Specified by:
  `register` in interface `jakarta.ws.rs.core.Configurable<ResourceConfig>`

#### register

    public ResourceConfig register(Class<?> componentClass,
                                   Class<?>... contracts)

Specified by:
  `register` in interface `jakarta.ws.rs.core.Configurable<ResourceConfig>`

#### register

    public ResourceConfig register(Class<?> componentClass,
                                   Map<Class<?>,Integer> contracts)

Specified by:
  `register` in interface `jakarta.ws.rs.core.Configurable<ResourceConfig>`

#### register

    public ResourceConfig register(Object component)

Specified by:
  `register` in interface `jakarta.ws.rs.core.Configurable<ResourceConfig>`

#### register

    public ResourceConfig register(Object component,
                                   int bindingPriority)

Specified by:
  `register` in interface `jakarta.ws.rs.core.Configurable<ResourceConfig>`

#### register

    public ResourceConfig register(Object component,
                                   Class<?>... contracts)

Specified by:
  `register` in interface `jakarta.ws.rs.core.Configurable<ResourceConfig>`

#### register

    public ResourceConfig register(Object component,
                                   Map<Class<?>,Integer> contracts)

Specified by:
  `register` in interface `jakarta.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 `InjectionManager` 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 `binder` classes is note supported. 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 `InjectionManager` 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 `binder` classes is note supported. 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 `Jersey Binder` instances (singletons) in the `ResourceConfig`.

Note that registered binders and JAX-RS features are used to initialize and configure the Jersey runtime `InjectionManager` 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, `Jersey Binder` instances (singletons) in the `ResourceConfig`.

Note that registered binders and JAX-RS features are used to initialize and configure the Jersey runtime `InjectionManager` 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.

Package scanning ignores inheritance and therefore `Path` annotation on parent classes and interfaces will be ignored.

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.

Package scanning ignores an inheritance and therefore `Path` annotation on parent classes and interfaces will be ignored.

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...)`

#### packages

    public final ResourceConfig packages(boolean recursive,
                                         ClassLoader classLoader,
                                         String... packages)

Adds array of package names which will be used to scan for components.

Package scanning ignores an inheritance and therefore `Path` annotation on parent classes and interfaces will be ignored.

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`).
  `classLoader` - defines the classloader used for scanning the packages and loading the classes.
  `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 `jakarta.ws.rs.core.Configurable<ResourceConfig>`

#### getProperties

    public final Map<String,Object> getProperties()

Specified by:
  `getProperties` in interface `jakarta.ws.rs.core.Configuration`
Overrides:
  `getProperties` in class `jakarta.ws.rs.core.Application`

#### getProperty

    public final Object getProperty(String name)

Specified by:
  `getProperty` in interface `jakarta.ws.rs.core.Configuration`

#### getPropertyNames

    public Collection<String> getPropertyNames()

Specified by:
  `getPropertyNames` in interface `jakarta.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 `jakarta.ws.rs.core.Configuration`
Overrides:
  `getClasses` in class `jakarta.ws.rs.core.Application`

#### getInstances

    public final Set<Object> getInstances()

Specified by:
  `getInstances` in interface `jakarta.ws.rs.core.Configuration`

#### getSingletons

    public final Set<Object> getSingletons()

Overrides:
  `getSingletons` in class `jakarta.ws.rs.core.Application`

#### getRuntimeType

    public jakarta.ws.rs.RuntimeType getRuntimeType()

Specified by:
  `getRuntimeType` in interface `jakarta.ws.rs.core.Configuration`

#### isEnabled

    public boolean isEnabled(jakarta.ws.rs.core.Feature feature)

Specified by:
  `isEnabled` in interface `jakarta.ws.rs.core.Configuration`

#### isEnabled

    public boolean isEnabled(Class<? extends jakarta.ws.rs.core.Feature> featureClass)

Specified by:
  `isEnabled` in interface `jakarta.ws.rs.core.Configuration`

#### isRegistered

    public boolean isRegistered(Object component)

Specified by:
  `isRegistered` in interface `jakarta.ws.rs.core.Configuration`

#### isRegistered

    public boolean isRegistered(Class<?> componentClass)

Specified by:
  `isRegistered` in interface `jakarta.ws.rs.core.Configuration`

#### getContracts

    public Map<Class<?>,Integer> getContracts(Class<?> componentClass)

Specified by:
  `getContracts` in interface `jakarta.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 jakarta.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)`