org.deephacks.tools4j.config.spi.package-info Maven / Gradle / Ivy
/**
* This package contains service provider interfaces (SPI) that enable applications to
* replace, extend and customize different configuration aspects such as storage, caching behaviour,
* runtime environment and so forth.
*
* Each SPI deals with a very specific concern within the architecture and service providers are
* free to implement any of them. A key design goal for each SPI is to be decoupled from other SPI to
* enable providers to create modular implementations that are orthogonal and cohesive with
* respect to other SPI. This enables interaction between unforseen combinations of service providers.
*
* Provider services are registered and automatically bound to core functionality when
* the application is started/loaded. It is the responsibility of the core to glue/mediate communication
* between different providers. The mechanism used is the standard {@link java.util.ServiceLoader}
* at the moment, but other lookup/registrations (OSGi, CDI SPI extensions, JNDI etc) are envisioned.
*
* A Test Compability Kit (TCK) is available for providers to verify that their
* implementation behaves correctly.
*
*
* Each SPI have a default implementation that will be used if no other is provided.
*
*
*
* The following SPIs are available at the moment:
*
* - {@link org.deephacks.tools4j.config.spi.BeanManager}
* - {@link org.deephacks.tools4j.config.spi.SchemaManager}
* - {@link org.deephacks.tools4j.config.spi.ValidationManager}
* - {@link org.deephacks.tools4j.support.conversion.Converter}
* This interface takes care of converting configuration property types to-and-from String
* (which is the format for storing property values).
*
*
*
*
* The following SPIs are envisioned in the future:
*
* - SessionManager
* Doing configuration changes in the context of a session that can commit and validate (or rollback) atomically.
* - CachingManager
* Implements a cache policy of runtime instances, such as eviction, memory size, storage, passivation etc.
* - NotificationManager
* Provide applications with notification guarantees, making them aware of changes made to their configuration
* in case an adjusting actions needs to be taken within their runtime environment.
*
*
* Usage
*
* TODO:
*/
package org.deephacks.tools4j.config.spi;
;