Class CommonConfig

java.lang.Object
org.glassfish.jersey.model.internal.CommonConfig
All Implemented Interfaces:
javax.ws.rs.core.Configurable<javax.ws.rs.core.FeatureContext>, javax.ws.rs.core.Configuration, javax.ws.rs.core.FeatureContext, ExtendedConfig
Direct Known Subclasses:
ImmutableCommonConfig, ResourceConfig.State, ResourceMethodConfig

public class CommonConfig extends Object implements javax.ws.rs.core.FeatureContext, ExtendedConfig
Common immutable Configuration implementation for server and client.
  • Field Details

    • LOGGER

      private static final Logger LOGGER
    • CAST_TO_BINDER

      private static final Function<Object,Binder> CAST_TO_BINDER
    • type

      private final javax.ws.rs.RuntimeType type
      Configuration runtime type.
    • properties

      private final Map<String,Object> properties
      Configuration properties collection and it's immutable views.
    • immutablePropertiesView

      private final Map<String,Object> immutablePropertiesView
    • immutablePropertyNames

      private final Collection<String> immutablePropertyNames
    • componentBag

      private final ComponentBag componentBag
      Configured providers, does not include features and binders.
    • newFeatureRegistrations

      private final List<CommonConfig.FeatureRegistration> newFeatureRegistrations
      Collection of unprocessed feature registrations.
    • enabledFeatureClasses

      private final Set<Class<? extends javax.ws.rs.core.Feature>> enabledFeatureClasses
      Collection of enabled feature classes.
    • enabledFeatures

      private final Set<javax.ws.rs.core.Feature> enabledFeatures
      Collection of enabled feature instances.
    • disableMetaProviderConfiguration

      private boolean disableMetaProviderConfiguration
      Flag determining whether the configuration of meta-providers (excl. binders) should be disabled.
  • Constructor Details

    • CommonConfig

      public CommonConfig(javax.ws.rs.RuntimeType type, Predicate<ContractProvider> registrationStrategy)
      Create a new RuntimeConfig instance.

      The constructor provides a way for defining a contract provider model registration strategy. Once a registration model is built for a newly registered contract, the provided registration strategy filter is consulted whether the model should be registered or not.

      Clients can use the method to cancel any contract provider model registration that does not meet the criteria of a given configuration context, such as a model that does not have any recognized contracts associated with it.

      Parameters:
      type - configuration runtime type.
      registrationStrategy - function driving the decision (based on the introspected contract provider model) whether or not should the component class registration continue towards a successful completion.
    • CommonConfig

      public CommonConfig(CommonConfig config)
      Copy constructor.
      Parameters:
      config - configurable to copy class properties from.
  • Method Details

    • copy

      private void copy(CommonConfig config, boolean loadComponentBag)
      Copy config properties, providers from given config to this instance.
      Parameters:
      config - configurable to copy class properties from.
      loadComponentBag - true if the component bag from config should be copied as well, false otherwise.
    • getConfiguration

      public ExtendedConfig getConfiguration()
      Specified by:
      getConfiguration in interface javax.ws.rs.core.Configurable<javax.ws.rs.core.FeatureContext>
    • getRuntimeType

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

      public Map<String,Object> getProperties()
      Specified by:
      getProperties in interface javax.ws.rs.core.Configuration
    • getProperty

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

      public boolean isProperty(String name)
      Description copied from interface: ExtendedConfig
      Get the value of the property with a given name converted to boolean. Returns false if the value is not convertible.
      Specified by:
      isProperty in interface ExtendedConfig
      Parameters:
      name - property name.
      Returns:
      boolean property value or false if the property is not convertible.
    • getPropertyNames

      public Collection<String> getPropertyNames()
      Specified by:
      getPropertyNames 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
    • isEnabled

      public boolean isEnabled(javax.ws.rs.core.Feature feature)
      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
    • getClasses

      public Set<Class<?>> getClasses()
      Specified by:
      getClasses in interface javax.ws.rs.core.Configuration
    • getInstances

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

      public final ComponentBag getComponentBag()
      Returns a ComponentBag instance 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 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 configuration instance.
    • property

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

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

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

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

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

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

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

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

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

      private void processFeatureRegistration(Object component, Class<?> componentClass)
    • loadFrom

      public CommonConfig loadFrom(javax.ws.rs.core.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.
    • asNewIdentitySet

      private Set<Class<?>> asNewIdentitySet(Class<?>... contracts)
    • checkProviderNotNull

      private void checkProviderNotNull(Object provider)
    • checkComponentClassNotNull

      private void checkComponentClassNotNull(Class<?> componentClass)
    • configureAutoDiscoverableProviders

      public void configureAutoDiscoverableProviders(InjectionManager injectionManager, Collection<AutoDiscoverable> autoDiscoverables, boolean forcedOnly)
      Configure auto-discoverables in 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(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.
    • configureBinders

      private Set<Binder> configureBinders(InjectionManager injectionManager, Set<Binder> configured)
    • getBinder

      private Collection<Binder> getBinder(Set<Binder> configured)
    • configureExternalObjects

      private void configureExternalObjects(InjectionManager injectionManager)
    • configureFeatures

      private void configureFeatures(InjectionManager injectionManager, Set<CommonConfig.FeatureRegistration> processed, List<CommonConfig.FeatureRegistration> unprocessed, ManagedObjectsFinalizer managedObjectsFinalizer)
    • resetRegistrations

      private List<CommonConfig.FeatureRegistration> resetRegistrations()
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object