Apache Tamaya -- Extension Modules
==================================
:name: Tamaya
:rootpackage: org.apache.tamaya
:title: Apache Tamaya Extension Modules
:revnumber: {tamayaVersion}
:revremark: Incubator
:revdate: March 2015
:longversion: {revnumber} ({revremark}) {revdate}
:authorinitials: ATR
:author: Anatole Tresch
:email: <anatole@apache.org>
:source-highlighter: coderay
:website: http://tamaya.incubator.apache.org/
:toc:
:toc-placement: manual
:encoding: UTF-8
:numbered:
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied.  See the License for the
// specific language governing permissions and limitations
// under the License.
toc::[]

== Mature Extensions

Mature extensions have a stable API and SPI, similar to the API and Implementations provided.

[width="100%",frame="1",options="header",grid="all"]
|=======
|_Artifact_                                 |_Description_                                |_Links_
|                                           | N/A: currently no extensions have reached that maturity level.  | -
|=======


== Draft Extensions

Extensions in _draft state_ are tested well and normally should have rather stable APIs. Nevertheless API changes may
still occurr, but we try to prevent such changes if possible.

NOTE All extensions, despite the _tamaya-builder_ module, currently run on Java 7 as well as on Java 8.

[width="100%",frame="1",options="header",grid="all"]
|=======
|_Artifact_                                 |_Description_                                |_Links_
|+org.apache.tamaya.ext:tamaya-builder+       |Provides a fluent-style builder for configurations   | link:mod_builder.html[Documentation]
|+org.apache.tamaya.ext:tamaya-resources+     |Provides ant-style resource path resolution  |link:mod_resources.html[Documentation]
|+org.apache.tamaya.ext:tamaya-resolver+      |Provides placeholder and dynamic resolution functionality for configuration values.  |link:mod_resolver.html[Documentation]
|+org.apache.tamaya.ext:tamaya-events+        |Provides support for publishing configuration changes  |link:mod_events.html[Documentation]
|+org.apache.tamaya.ext:tamaya-formats+       |Provides an abstract model for configuration formats   |link:mod_formats.html[Documentation]
|+org.apache.tamaya.ext:tamaya-injection+     |Provides configuration injection services and congiruation template support.  |link:mod_injection.html[Documentation]
|+org.apache.tamaya.ext:tamaya-json+          |Provides format support for JSON based configuration.  |link:mode_json.html[Documentation]
|=======


== Extensions in Experimental Stage

Extensions in _experimental mode_ may still be under discussions. API changes may still happen, so use them
very carefully and especially give us feedback, so we can improve them before progressing to _draft_ state.

[width="100%",frame="1",options="header",grid="all"]
|=======
|_Artifact_                                 |_Description_                                |_Links_
|+org.apache.tamaya.ext:tamaya-jodatime+    |Provides support for JodaTime.   | link:mod_jodatime.html[Documentation]
|=======
