# Apache Tamaya — Extension: Classloader Isolation Support

## Tamaya SPI Support (Extension Module)

### Overview

The Tamaya SPI support module provides a few helpful base classes that can be used to implement some of the often used SPI parts in Tamaya:

- BasePropertySource provides an abstract base class for implementation of your own PropertySources.

- DefaultConfiguration provides you with a simple implementation of the Configuration interface based on a ConfigurationContext provided. This is also very useful for mocking configuration during test execution, but not only constraint to that use case.

- DefaultConfigurationContext provides you with a working implementation of the ConfigurationContext.

- EnumConverter is a converter implementation that can automatically select the currect enumeration values based on a configured entry.

- MapPropertySource implements a static property source based on java.util.Map.

- PriorityServiceComparator compares arbitrary services based on their @Priority annotations (also handling the case, where no such annotation is present).

- PropertiesResourcePropertySource is an implementation of a PropertySource based on a Properties instance, lodable from any URL. + PropertyConverterManager is a service class very useful, when implementing instances of ConfigurationContext. It manages registered instances of PropertyConverter and provides easy to use type conversion logic. + PropertyFiltering provides another helpful class that manages PropertyFilter instances and provides an easy to use high level API. + PropertySourceComparator provides an implementation that compares PropertySources based on their getOrdinal() values and their class names.

### Compatibility

The module is based on Java 7, so it will not run on Java 7 and beyond.

### Installation

To benefit from Tamaya CDI integration you only must add the corresponding dependency to your module:

    <dependency>
      <groupId>org.apache.tamaya.ext</groupId>
      <artifactId>tamaya-spisupport</artifactId>
      <version>{tamayaVersion}</version>
    </dependency>

The component will not register any components but only providing portable base classes for some common SPI implementation tasks. It only depends on the API, so it should be safely reusable also with other implementations of the Tamaya API similarly.