You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tamaya.apache.org by an...@apache.org on 2016/11/18 06:07:19 UTC

[1/2] incubator-tamaya-site git commit: Moved asciido latest from core to site.

Repository: incubator-tamaya-site
Updated Branches:
  refs/heads/master f996acade -> 06e3e4c08


Moved asciido latest from core to site.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/commit/40e8f73e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/tree/40e8f73e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/diff/40e8f73e

Branch: refs/heads/master
Commit: 40e8f73ef4a9d72313924fb29dcdb7ee838ad6e2
Parents: f996aca
Author: Anatole Tresch <an...@apache.org>
Authored: Fri Nov 18 07:02:57 2016 +0100
Committer: Anatole Tresch <an...@apache.org>
Committed: Fri Nov 18 07:02:57 2016 +0100

----------------------------------------------------------------------
 content/extensions/mod_camel.adoc               |   4 +-
 content/extensions/mod_cdi.adoc                 |  12 +-
 content/extensions/mod_classloader_support.adoc |   3 +-
 content/extensions/mod_collections.adoc         |   4 +-
 content/extensions/mod_consul.adoc              |   4 +-
 content/extensions/mod_environment.adoc         |   3 +-
 content/extensions/mod_etcd.adoc                |   4 +-
 content/extensions/mod_events.adoc              | 152 +++++--------------
 content/extensions/mod_filter.adoc              |  33 ++--
 content/extensions/mod_formats.adoc             |  77 ++++------
 content/extensions/mod_functions.adoc           |   3 +-
 content/extensions/mod_injection.adoc           |  24 +--
 content/extensions/mod_jodatime.adoc            |   5 +-
 content/extensions/mod_json.adoc                |   5 +-
 content/extensions/mod_management.adoc          |   4 +-
 content/extensions/mod_mutable_config.adoc      | 151 ++++++++++--------
 content/extensions/mod_optional.adoc            |   3 +-
 content/extensions/mod_osgi.adoc                |   2 -
 content/extensions/mod_remote.adoc              |   4 +-
 content/extensions/mod_resolver.adoc            |  23 ++-
 content/extensions/mod_resources.adoc           |  23 ++-
 content/extensions/mod_server.adoc              |   4 +-
 content/extensions/mod_spi-support.adoc         |   3 +-
 content/extensions/mod_spring.adoc              |   4 +-
 content/extensions/mod_yaml.adoc                |   6 +-
 25 files changed, 250 insertions(+), 310 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/40e8f73e/content/extensions/mod_camel.adoc
----------------------------------------------------------------------
diff --git a/content/extensions/mod_camel.adoc b/content/extensions/mod_camel.adoc
index 9d9a60d..abb5199 100644
--- a/content/extensions/mod_camel.adoc
+++ b/content/extensions/mod_camel.adoc
@@ -16,8 +16,6 @@
 // under the License.
 
 = Apache Tamaya -- Extension: Integration with Apache Camel
-:jbake-type: page
-:jbake-status: published
 
 toc::[]
 
@@ -142,4 +140,4 @@ again use Tamaya as the main configuration solutions only using Camel's default
     </bean>
 
 </beans>
------------------------------------------------
+-----------------------------------------------
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/40e8f73e/content/extensions/mod_cdi.adoc
----------------------------------------------------------------------
diff --git a/content/extensions/mod_cdi.adoc b/content/extensions/mod_cdi.adoc
index 41d91a8..e5fe95e 100644
--- a/content/extensions/mod_cdi.adoc
+++ b/content/extensions/mod_cdi.adoc
@@ -16,8 +16,6 @@
 // under the License.
 
 = Apache Tamaya -- Extension: Classloader Isolation Support
-:jbake-type: page
-:jbake-status: published
 
 toc::[]
 
@@ -51,14 +49,14 @@ components will be compatible regardless if deployed in a pure SE, a Java EE (CD
 <dependency>
   <groupId>org.apache.tamaya.ext</groupId>
   <artifactId>tamaya-injection-api</artifactId>
-  <version>{tamaya-version}</version>
+  <version>{tamayaVersion}</version>
 </dependency>
 -----------------------------------------------
 
 
 === Compatibility
 
-Both modules are based on Java 7, so they will only run on Java 7 and beyond.
+Both modules are based on Java 7, so they will not run on Java 7 and beyond.
 
 
 === Installation
@@ -72,7 +70,7 @@ you never have installed both CDI extensions at the same time because this may b
 <dependency>
   <groupId>org.apache.tamaya.ext</groupId>
   <artifactId>tamaya-cdi-ee</artifactId>
-  <version>{tamaya-version}</version>
+  <version>{tamayaVersion}</version>
 </dependency>
 -----------------------------------------------
 
@@ -82,7 +80,7 @@ you never have installed both CDI extensions at the same time because this may b
 <dependency>
   <groupId>org.apache.tamaya.ext</groupId>
   <artifactId>tamaya-cdi-se</artifactId>
-  <version>{tamaya-version}</version>
+  <version>{tamayaVersion}</version>
 </dependency>
 -----------------------------------------------
 
@@ -230,4 +228,4 @@ private String value;
 --------------------------------------------------------------------------------------
 
 In the example above +legacy.bKey+ defines an absolute key, which is not combined with any defined
-default section parts.
+default section parts.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/40e8f73e/content/extensions/mod_classloader_support.adoc
----------------------------------------------------------------------
diff --git a/content/extensions/mod_classloader_support.adoc b/content/extensions/mod_classloader_support.adoc
index 7b93a4b..f8bf529 100644
--- a/content/extensions/mod_classloader_support.adoc
+++ b/content/extensions/mod_classloader_support.adoc
@@ -16,8 +16,6 @@
 // under the License.
 
 = Apache Tamaya -- Extension: Classloader Isolation Support
-:jbake-type: page
-:jbake-status: published
 
 toc::[]
 
@@ -89,3 +87,4 @@ hierarchies:
 
 * +PropertySource+, +PropertySourceProviders+
 * +PropertyFilters+, +PropertyCombinationPolicy+
+

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/40e8f73e/content/extensions/mod_collections.adoc
----------------------------------------------------------------------
diff --git a/content/extensions/mod_collections.adoc b/content/extensions/mod_collections.adoc
index 61e5553..835a20c 100644
--- a/content/extensions/mod_collections.adoc
+++ b/content/extensions/mod_collections.adoc
@@ -16,8 +16,6 @@
 // under the License.
 
 = Apache Tamaya -- Extension: Collection Support
-:jbake-type: page
-:jbake-status: published
 
 toc::[]
 
@@ -245,4 +243,4 @@ Of course these settings also can be combined:
 redefined-map=0==none | 1==single | 2==any
 _redefined-map.map-entry-separator===
 _redefined-map.item-separator=|
------------------------------------------------
+-----------------------------------------------
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/40e8f73e/content/extensions/mod_consul.adoc
----------------------------------------------------------------------
diff --git a/content/extensions/mod_consul.adoc b/content/extensions/mod_consul.adoc
index f29a2e1..5aa3055 100644
--- a/content/extensions/mod_consul.adoc
+++ b/content/extensions/mod_consul.adoc
@@ -16,8 +16,6 @@
 // under the License.
 
 = Apache Tamaya -- Extension: Integration with consul (Hashicorp)
-:jbake-type: page
-:jbake-status: published
 
 toc::[]
 
@@ -72,4 +70,4 @@ in microservice containers to connect with the according consul cluster:
   server can be established a warning will be logged, but deployment will not fail.
 * The +ConsulPropertySource+ finally also allows the values read from the consul cluster to be mapped to prefixed
   context. This can be activated by setting the +-Dtamaya.consul.prefix=<PREFIX>+ system property. E.g. when the prefix is
-  set to +cluster-config.+ a consul key of +host:known/all+ is mapped to +cluster-config.host:known/all+.
+  set to +cluster-config.+ a consul key of +host:known/all+ is mapped to +cluster-config.host:known/all+.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/40e8f73e/content/extensions/mod_environment.adoc
----------------------------------------------------------------------
diff --git a/content/extensions/mod_environment.adoc b/content/extensions/mod_environment.adoc
index df889ed..2e5921f 100644
--- a/content/extensions/mod_environment.adoc
+++ b/content/extensions/mod_environment.adoc
@@ -16,8 +16,6 @@
 // under the License.
 
 = Apache Tamaya -- Extension: Classloader Isolation Support
-:jbake-type: page
-:jbake-status: published
 
 toc::[]
 
@@ -56,3 +54,4 @@ tbd
 === Reusable Base Classes
 
 tbd
+

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/40e8f73e/content/extensions/mod_etcd.adoc
----------------------------------------------------------------------
diff --git a/content/extensions/mod_etcd.adoc b/content/extensions/mod_etcd.adoc
index 4bad2a0..bfb4b30 100644
--- a/content/extensions/mod_etcd.adoc
+++ b/content/extensions/mod_etcd.adoc
@@ -16,8 +16,6 @@
 // under the License.
 
 = Apache Tamaya -- Extension: Integration with etcd (Core OS)
-:jbake-type: page
-:jbake-status: published
 
 toc::[]
 
@@ -202,4 +200,4 @@ in microservice containers to connect with the according etcd cluster:
   system or environment property.
 * The +EtcdPropertySource+ finally also allows the values read from the etcd cluster to be mapped to prefixed
   context. This can be activated by setting the +-Dtamaya.etcd.prefix=<PREFIX>+ system property. E.g. when the prefix is
-  set to +cluster-config.+ a etcd key of +host:known/all+ is mapped to +cluster-config.host:known/all+.
+  set to +cluster-config.+ a etcd key of +host:known/all+ is mapped to +cluster-config.host:known/all+.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/40e8f73e/content/extensions/mod_events.adoc
----------------------------------------------------------------------
diff --git a/content/extensions/mod_events.adoc b/content/extensions/mod_events.adoc
index 30da423..7c2d8ef 100644
--- a/content/extensions/mod_events.adoc
+++ b/content/extensions/mod_events.adoc
@@ -16,8 +16,6 @@
 // under the License.
 
 = Apache Tamaya -- Extension: Events
-:jbake-type: page
-:jbake-status: published
 
 toc::[]
 
@@ -29,7 +27,7 @@ toc::[]
 Tamaya Events is an extension module. Refer to the link:modules.html[extensions documentation] for further details
 about modules.
 
-Tamaya Events provides an abstraction for events like change events, when configuration has bee changed.
+Tamaya Events provides an abstraction for events like change events, when configuration has been changed.
 
 === Compatibility
 
@@ -72,10 +70,9 @@ public interface ConfigEventListener {
 }
 --------------------------------------------
 
-This mechanism can now be used to propagate configuration changes to all interested stakeholders. Hereby the payloed
+This mechanism can now be used to propagate configuration changes to all interested stakeholders. Hereby the payload
 can be basically arbitrary as long as it implements the +ConfigEvent+ interface. The next sections
-give more details on the the provided event implementations and abstractions that are used to implement such
-features.
+give more details on the the provided event types and their usage.
 
 
 === Modelling Configuration Changes
@@ -87,18 +84,8 @@ be
 * removed configuration entries
 * changes on entries
 
-This is also reflected in the +ChangeType+ enum
 
-[source,java]
--------------------------------------------------------
-public enum ChangeType {
-    NEW,
-    DELETED,
-    UPDATED,
-}
--------------------------------------------------------
-
-This enum type is used within the +ConfigurationChange+ class, which implements the event sent for a changed
+The most important event modelled is the +ConfigurationChange+ class, which implements the event sent for a changed
 +Configuration+:
 
 [source,java]
@@ -115,8 +102,6 @@ public final class ConfigurationChange implements ConfigEvent<Configuration>, Se
     public String getVersion();
     @Override
     public long getTimestamp();
-    @Override
-    public long getTimestamp();
 
     // Event specific methods
 
@@ -135,7 +120,7 @@ public final class ConfigurationChange implements ConfigEvent<Configuration>, Se
 
 -------------------------------------------------------
 
-New instances of this class hereby are created using a fluent builder:
+New instances of this class hereby can be created using a fluent builder:
 
 [source,java]
 -------------------------------------------------------
@@ -145,8 +130,8 @@ ConfigurationChange change = ConfigurationChangeBuilder.of(config)
   .removeKeys("myRemovedKey").build();
 -------------------------------------------------------
 
-Also it is possible to directly compare 2 instances of configurations to create a matching +ConfigurationChange+
-instance:
+Also it is possible to directly compare 2 instances of configurations to create +ConfigurationChange+ that
+reflect the differences between the two configurations:
 
 [source,java]
 Comparing 2 configurations
@@ -159,8 +144,8 @@ ConfigurationChange change = ConfigurationChangeBuilder.of(config)
 
 So a +ConfigurationChange+ allows you to evaluate the changes on a configuration. This allows you to listen to changes
 and react in your client code as useful, once you encounter changes that are relevant to you, e.g. by reconfiguring
-your component. Of course, your code has to register itself to listen for appropriate changes by implementing
-a +ConfigEventListener+:
+your component. For listening to configuration changes you must implement the
++ConfigEventListener+ functional interface:
 
 [source,java]
 .Implementing a ConfigChangeListener
@@ -189,52 +174,21 @@ You can *register* your implementation in 2 ways:
 
 === Modelling PropertySource Changes
 
-Beside that a whole configuration changes, also +PropertySource+ instance can change, e.g. by a configuration file
+Beside that a whole configuration changes, also +PropertySource+ instances can change, e.g. by a configuration file
 edited on the fly. This is similarly to a +ConfigurationChange+ reflected by the classes +PropertySourceChange,
 PropertySourceChangeBuilder+.
 
 
-=== Modelling Configuration Context Changes
-
-The +ConfigurationContext+ models the container that manages all subcomponents that are used to define and
-evalaute a +Configuration+. In the case where configuration is dynamically loaded, e.g. by observing changes on a
-file folder, the +ConfigurationContext+ may change, so a corresponding +ConfigurationContextChange+ event is
-defined:
-
-[source,java]
--------------------------------------------------------
-public final class ConfigurationContextChange implements ConfigEvent<ConfigurationContext>, Serializable{
-
-    public static ConfigurationContextChange emptyChangeSet();
-
-    @Override
-    public ConfigurationContext getResource();
-    @Override
-    public Class<ConfigurationContext> getResourceType();
-    @Override
-    public String getVersion();
-    @Override
-    public long getTimestamp();
-
-    // specific methods
-    public Collection<PropertySourceChange> getPropertySourceChanges();
-    public Collection<PropertySourceChange> getPropertySourceUpdates();
-    public Collection<PropertySource> getRemovedPropertySources();
-    public Collection<PropertySource> getAddedPropertySources();
-    public Collection<PropertySource> getUpdatedPropertySources();
-    public boolean isAffected(PropertySource propertySource);
-    public boolean isEmpty();
-}
--------------------------------------------------------
-
-Similar to the +ConfigurationChange+ class you also must use a +ConfigurationContextChangeBuilder+ to create instances
-of +ConfigurationContextChange+.
-
 === The ConfigEventManager Singleton
 
 Main entry point of the events module is the +ConfigEventManager+ singleton class, which provides static accessor
 methods to the extension's functionality:
 
+* Adding/removing of +ConfigChangeListener+ instances, either globally or per event type.
+* Firing configuration events synchronously or asyncronously (mostly called by framework code).
+* Configuring the monitor that periodically checks for changes on the global +Configuration+ provided
+  by +ConfigurationProvider.getConfiguration()+.
+
 [source,java]
 -------------------------------------------------------
 public final class ConfigEventManager {
@@ -261,40 +215,35 @@ public final class ConfigEventManager {
 }
 -------------------------------------------------------
 
-Looking at the methods listed above you see that there is more functionality worth to be mentioned:
-
-* +ConfigCHangeListeners+ can be registered either _globally_ or for a certain _event type_ only.
-* +ConfigEvents+ can be published within the same thread, or asynchronously.
-
 
 ==== Monitoring of configuration changes
 
 The +ConfigEventManager+ also supports active monitoring of the current configuration to trigger corresponding change
-events to listeners registered. This feature is activated by default, but can be deactivated optionally. Nevertheless
-this feature is quite handy, since regularly polling your local +Configuration+ for any kind of changes is much
-more simpler than implementing change management on the +PropertySource+ level. With this feature you can easily
-implement also remote property source, which can deliver different configuration based on any changes done remotedly
-on another node in your system. If such a change happened Tamaya identifies it and triggers corresponding
-+ConfigurationChange" events automatically. Similarly changes in a configuration tree, can actively identified and
-broadcasted to the targeting nodes automatically.
+events to listeners registered. This feature is deactivated by default, but can be enabled by calling
++ConfigEventManager.enableChangeMonitoring(true);+. This feature avoids regularly polling your local +Configuration+ for
+any kind of changes. If a change has been encountered Tamaya identifies it and triggers corresponding
++ConfigurationChange+ events automatically.
 
 
 === Freezing Configurations and PropertySources
 
 +Configuration+ instances as well as +PropertySources+ are explicitly not required to be serializable. To enable easy
-serialization of these types as well as to fix a current state (e.g. for later comparison with a newly loaded instance)
-Tamaya allows to *freeze* instances of these types. Freezing hereby means
+serialization of these types a +Configuration+'s *current state can be frozen* (e.g. for later comparison with a newly
+loaded version). Freezing hereby means
 
 * all key/values are read-out by calling the +getProperties()+ method.
-* a meta data entry is added of the form +[meta]frozenAt=223273777652325677+, whichdefines the UTC timestamp in
+* a meta data entry is added of the form +_frozenAt=223273777652325677+, whichdefines the UTC timestamp in
   milliseconds when this instance was frozen.
+* if not already defined an +_id+ property will be added to the +Configuration+ containing the
+  identifier of the configuration.
 
-In code this is done easily as follows:
+In code freezing is a no-brainer:
 
 [source,java]
 .Freezing the current Configuration
 --------------------------------------------------
-Configuration frozenConfig = FrozenConfiguration.of(ConfigurationProvider.getConfiguration());
+Configuration config = ConfigurationProvider.getConfiguration();
+Configuration frozenConfig = FrozenConfiguration.of(config);
 --------------------------------------------------
 
 ... and similarly for a +PropertySource+:
@@ -302,51 +251,17 @@ Configuration frozenConfig = FrozenConfiguration.of(ConfigurationProvider.getCon
 [source,java]
 .Freezing the current Configuration
 --------------------------------------------------
-PropertySource frozenSource = FrozenPropertySource.of(ConfigurationProvider.getConfiguration());
+PropertySource propertySource = ...;
+PropertySource frozenSource = FrozenPropertySource.of(propertySource);
 --------------------------------------------------
 
 
-=== Modelling of an observing PropertySourceProvider.
-
-In Tamaya configuration data is provided by instances of +PropertySource+, which in case of a configuration directory
-may be provided by an implementation of +PropertySourceProvider+, which produces one +PropertySource+ (at least) per
-file detected. The events module provides a base provider implementation that
-
-* observes all changes in a +Path+
-* tries to reevaluate corresponding resources based on the +ConfigurationFormats+ supported.
-* it creates an instance of +ConfigurationContextChange+ reflecting the changed +ConfigurationContext+ and triggers
-  this event by calling +ConfigEventManager.fireEvent(contextChange);+.
-
-Additionally this module registers an instance of +ConfigEventListener<ConfigurationContextChange+>+, which listenes to
-these events. If such an event is triggered the listener tries to apply the changes by
-
-. accessing the current +Configuration+ and its +ConfigurationContext+
-. checking if the event is affecting the current +ConfigurationContext+.
-. in the case the current context is affected, based on the current +ConfigurationContext+ a new context is created,
-  whereas
-  .. all +PropertySources+ provided by this provider implementation type are removed.
-  .. the new +PropertySources+ loaded are added.
-. Finally the listener tries to apply the new +ConfigurationContext+ by calling the corresponding API methods of the
-  +ConfigurationProvider+:
-
-[source,java]
---------------------------------------------------
-try {
-    ConfigurationProvider.setConfigurationContext(newContext);
-} catch (Exception e) {
-    LOG.log(Level.INFO, "Failed to update the current ConfigurationContext due to config model changes", e);
-}
---------------------------------------------------
-
-So if the current +ConfigurationProvider+ supports reloading of the current +ConfigurationContext+ this will apply the
-changes to the current +Configuration+. Otherwise the change is logged, but no further actions are taken.
-
 
 === SPIs
 
 This component also defines an additional SPI, which allows to adapt the implementation of the main +ConfigEventManager+
 singleton. This enables, for example, using external eventing systems, such as CDI, instead of the default provided
-simple SE based implementation. As normal, implementation mus be registered using the current +ServiceContext+
+simple SE based implementation. As normal, implementation must be registered using the current +ServiceContext+
 active, by default using the Java +ServiceLoader+ mechanism.
 
 [source,java]
@@ -370,3 +285,10 @@ public interface ConfigEventManagerSpi {
         void enableChangeMonitor(boolean enable);
 }
 --------------------------------------------------
+
+
+Summarizing with the events module you can easily observe configuration changes, record the
+state of any configuration and compare configuration states to create and publish related
+change events.
+
+

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/40e8f73e/content/extensions/mod_filter.adoc
----------------------------------------------------------------------
diff --git a/content/extensions/mod_filter.adoc b/content/extensions/mod_filter.adoc
index 30c950d..0df0035 100644
--- a/content/extensions/mod_filter.adoc
+++ b/content/extensions/mod_filter.adoc
@@ -15,21 +15,19 @@
 // specific language governing permissions and limitations
 // under the License.
 
-= Apache Tamaya -- Extension: Integration with etcd (Core OS)
-:jbake-type: page
-:jbake-status: published
+= Apache Tamaya -- Extension: User Filtering
 
 toc::[]
 
 
 [[Optional]]
-== COnfiguration Filtering (Extension Module)
+== User Filtering (Extension Module)
 === Overview
 
 The Tamaya filter module provides a simple singleton accessor that allows to explicitly add +PropertyFilter+ instances
 active on the current thread only. This can be very useful in many scenarios. Additionally this module adds
 standard filters that hide metadata entries when the full configuration map is accessed. When keys are accessed
-explcitily no filtering is applied and everything is visible.
+explicitily no filtering is applied and everything is visible.
 
 === Compatibility
 
@@ -52,7 +50,7 @@ To benefit from configuration builder support you only must add the correspondin
 
 === The Extensions Provided
 
-Tamaya Filter comes basically with 1 artifact:
+Tamaya Filter comes basically with 3 artifacts:
 
 * The +org.apache.tamaya.filter.ConfigurationFilter+ provides several static methods to register +PropertyFilter+
 instances on the current thread.
@@ -62,7 +60,7 @@ instances on the current thread.
 
 === The ConfigurationFilter
 
-The accessor mentioned implements the API for for adding 1PropertyFilters+ to the current thread (as thread local):
+The accessor mentioned implements the API for for adding +PropertyFilters+ to the current thread (as thread local):
 
 [source, java]
 -----------------------------------------------
@@ -75,20 +73,20 @@ public final class ConfigurationFilter implements PropertyFilter{
      * @see #clearFilters()
      * @param active true,to enable metadata filtering (default).
      */
-    public static void setMetadataFilter(boolean active);
+    public static void setFilterMetadata(boolean active);
 
     /**
      * Access the filtering configuration that is used for filtering single property values accessed.
      * @return the filtering config, never null.
      */
-    public static ProgrammableFilter getSingleFilters();
+    public static FilterContext getSingleFilterContext();
 
     /**
      * Access the filtering configuration that is used for filtering configuration properties accessed as full
      * map.
      * @return the filtering config, never null.
      */
-    public static ProgrammableFilter getMapFilters();
+    public static FilterContext getMapFilters();
 
     /**
      * Removes all programmable filters active on the current thread.
@@ -106,7 +104,7 @@ is part of this module, So you can add a customized filter as follows:
 [source, java]
 -----------------------------------------------
 try{
-    ConfigurationFilter.getMapFilters().addFilter(new RegexPropertyFilter("\\_.*"));
+    ConfigurationFilter.getMapFilters().addFilter(new myFilter());
 
     // do your code with filtering active
 }
@@ -116,20 +114,21 @@ finally{
 }
 -----------------------------------------------
 
-The +ProgrammableFilter+ is a simple structure just providing some handy accessors to the dynamic thread-local
+The +FilterContext+ is a simple structure just providing some handy accessors to the dynamic thread-local
 managed filters:
 
 [source, java]
 -----------------------------------------------
-public final class ProgrammableFilter implements PropertyFilter{
+public final class FilterContext implements PropertyFilter{
 
-    public void addFilter(PropertyFilter filter);
-    public void addFilter(int pos, PropertyFilter filter);
+    public void addIncludes(PropertyFilter filter);
+    public void addExcludes(int pos, PropertyFilter filter);
     public PropertyFilter removeFilter(int pos);
     public void clearFilters();
-    public void setFilters(PropertyFilter... filters);
-    public void setFilters(Collection<PropertyFilter> filters);
+    public void setIncludes(PropertyFilter... filters);
+    public void setExcludes(Collection<PropertyFilter> filters);
     public List<PropertyFilter> getFilters();
 
 }
 -----------------------------------------------
+

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/40e8f73e/content/extensions/mod_formats.adoc
----------------------------------------------------------------------
diff --git a/content/extensions/mod_formats.adoc b/content/extensions/mod_formats.adoc
index 1cd1679..19b89f3 100644
--- a/content/extensions/mod_formats.adoc
+++ b/content/extensions/mod_formats.adoc
@@ -16,8 +16,6 @@
 // under the License.
 
 = Apache Tamaya -- Extension: Formats
-:jbake-type: page
-:jbake-status: published
 
 toc::[]
 
@@ -53,8 +51,6 @@ To benefit from dynamic value resolution you only must add the corresponding dep
 </dependency>
 -----------------------------------------------
 
-The module automatically registers an according +PropertyFilter+ that is automatically called, whenever a value
-is accessed.
 
 === The Idea
 
@@ -63,7 +59,7 @@ data structure (in our cases: property sources).
 
 ==== ConfigurationData
 
-Configuration formats can be very different. Some are simpley key/value pairs, whereas other also consist of multiple sections (e.g. ini-files) or
+Configuration formats can be very different. Some are simple key/value pairs, whereas other also consist of multiple sections (e.g. ini-files) or
 hierarchical data (e.g. yaml, xml). This is solved in Tamaya by mapping the configuration read into a normalized intermediary format called
 +ConfigurationData+:
 
@@ -77,13 +73,10 @@ public final class ConfigurationData {
 
     public Set<String> getSectionNames();
     public Map<String,String> getSection(String name);
-    public Map<String,Map<String,String>> getSections();
 
     public boolean hasDefaultProperties();
     public Map<String,String> getDefaultProperties();
-
     public Map<String,String> getCombinedProperties();
-    public boolean hasCombinedProperties();
 
     public boolean isEmpty();
 }
@@ -99,30 +92,14 @@ In detail the data read from a file is organized into _sections_ as follows:
   named sections, depending on the configuration format.
 * The method +getSectionNames()+ returns a set of all section names.
 * With +getSection(String name)+ a named section can be accessed.
-* With +getDefaultSection()+ the default section can be accessed.
+* With +getDefaultSection()+ the 'default' section can be accessed. This is a convenience method.
 * With +getCombinedProperties()+ a flattened entry map can be accessed built up (by default) out of
   ** all entries from the default section, without any changes.
-  ** all entries from named sections, where the key for each entry is prefix with the section name and a dot separator.
+  ** all entries from named sections, where the key for each entry is prefix with the section name and a '::' separator.
 * The configuration format used determines the mapping of configuration data read into this structure. The format
   implementation can as well provide alternate implementations of how the data read should be mapped into the
   combined properties map.
 
-Now for the conversion of +ConfigurationData+ into a +PropertySource+ different default approaches are used:
-
-. The +ConfigurationFormat+ that read the data can provide the (combined) properties accessible from
-  +getProperties()+ explcitly, which can be used to initialize a single +PropertySource+ containing the data read.
-. If the format did not set the final properties, but only a default section is present this default section
-  can be directly returned as combined properties.
-. In all other cases a properties can be uniquely mapped into one single properties Map, by prefixing all keys of each
-  section present with the (unique) section name and a '.' separator.
-
-Nevertheless, depending on the context, where a configuration source was read (classloader, time, source etc.) the
-resulting +PropertySource+ can have different semnatics, especially for the +PropertySources+ ordinal. Also section
-names may be mapped into different ordinals instead of using them as key prefixes (e.g. imagine configuration formats
-with a 'default', 'main', and 'overrides' sections). For such more complex or custom cases no useful default mapping
-can be defined. In such cases this functionality must be implemented in a _mapData_ method, which converts
-the normalized +ConfigData+ read to the appropriate collection of +PropertySource+ instances:
-
 
 ==== ConfigurationFormat
 
@@ -140,10 +117,20 @@ public interface ConfigurationFormat {
 -------------------------------------------------------
 
 
-Normally you need to map the resulting +ConfigurationData+ to one or multiple +PropertySources+. In case, where the
-properties provided match exactly the extected properties a +FlattenedDefaultPropertySource+ is provided out-of-the-box.
-If the exact mapping must be overridden, you can simply override the property source's initialize method to adapt the
-mapping:
+=== How to tranform ConfigurationData into a PropertySource
+
+For for the conversion of +ConfigurationData+ into a +PropertySource+ different approaches can be useful:
+
+. The +ConfigurationFormat+ that reads the data can provides all properties read either as sectioned properties
+  or/and as default properties. The most simple cases is, where all properties have been added as 'default'
+  properties. In this case the default properties can be used as the property sources properties without any change.
+. If the format did also add section based properties, the combined properties returned can be used, hereby
+  replacing the '::' separator with a '.' separator.
+. In all other cases a custom mapping is useful, which can be acomplished by using the +MappedConfigurationDataPropertySource+
+  and overriding the +Map<String,String> populateData(ConfigurationData data)+ method.
+
+In most cases the usage of a +FlattenedDefaultPropertySource+, is a good choice to start. This class
+provides a convenient default mapping and also allows to customized the mapping easily:
 
 [source,java]
 -------------------------------------------------------
@@ -155,23 +142,13 @@ FlattenedDefaultPropertySource ps = new FlattenedDefaultPropertySource(data){
 };
 -------------------------------------------------------
 
+Nevertheless, depending on the context, where a configuration source was read (classloader, time, source etc.) the
+resulting properties can have different semnatics, especially different priorities. Also section
+names may be mapped into different ordinals instead of using them as key prefixes (e.g. imagine configuration formats
+with a 'default', 'main', and 'overrides' sections). For such more complex or custom cases no simple mapping
+can be defined. Consequently the functionality mapping the normalized +ConfigurationData+ read to the
+appropriate collection of +PropertySource+ instances must be implemented.
 
-=== How to tranform ConfigurationData into a PropertySource
-
-The Tamaya main building block for configuration properties is the +PropertySource+ interface. You have several
-options to implement this tranformation:
-
-. You can simply map the properties returned by +getCombinedProperties()+ and use them as properties returned by a
-  wrapping property source. Since this use case is common for all kind of non hierarchic configuration formats it
-  is directly supported by the +FlattenedDefaultPropertySource+ class.
-. When the +ConfigurationFormat+ is more complex, multiple 'sections' are common. What a section exactly is depends on
-  the concrete format only. The +ConfigurationFormat+ should provide detailed information how the data read is
-  mapped to default properties and sections and how it is assembled into the +combinedProperties+ map. Also here
-  the +FlattenedDefaultPropertySource+ class can help you with its default mapping. Nevertheless in some cases it is
-  necessary to write an explicit mapping, e.g. when
-  . different sections must be mapped to multiple +PropertySources+, with optionally fixed ordinals.
-  . sections must be cross-checked and combined into new properties, or into several +PropertySources+.
-  . other complex mapping requirements apply.
 
 === Examples
 
@@ -200,9 +177,9 @@ This file content coud be mapped to the following structure:
 -------------------------------------------------------
 a=valA
 a.b=valB
-section1.valA=sectionValA
-section1.a.b.c=SectionValC
-section2.a=val2Section2
+section1::valA=sectionValA
+section1::a.b.c=SectionValC
+section2::a=val2Section2
 -------------------------------------------------------
 
 Nevertheless from the +ConfigurationData+ instance a more complex algorithm can access all the different parts:
@@ -241,3 +218,5 @@ module hereby ships with 3 format classes:
 * +PropertiesFormat+ providing support for .properties files.
 * +PropertiesXmlFormat+ providing support for xml.property files.
 * +IniConfiguratonFormat+ providing support for xml.property files.
+
+

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/40e8f73e/content/extensions/mod_functions.adoc
----------------------------------------------------------------------
diff --git a/content/extensions/mod_functions.adoc b/content/extensions/mod_functions.adoc
index a7e891c..041ef75 100644
--- a/content/extensions/mod_functions.adoc
+++ b/content/extensions/mod_functions.adoc
@@ -16,8 +16,6 @@
 // under the License.
 
 = Apache Tamaya -- Extension: Functions
-:jbake-type: page
-:jbake-status: published
 
 toc::[]
 
@@ -122,3 +120,4 @@ The following sections explain the provided functions defined by +PropertySource
   select of the returned values should be relative to its selection of be fully qualified.
 * *String stripSectionKeys(String key, String... sectionKeys)* This function strips away the matching section key as given
   in _sectionKeys_ from a given _key_.
+

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/40e8f73e/content/extensions/mod_injection.adoc
----------------------------------------------------------------------
diff --git a/content/extensions/mod_injection.adoc b/content/extensions/mod_injection.adoc
index dc68626..47f8872 100644
--- a/content/extensions/mod_injection.adoc
+++ b/content/extensions/mod_injection.adoc
@@ -16,8 +16,6 @@
 // under the License.
 
 = Apache Tamaya -- Extension: Injection
-:jbake-type: page
-:jbake-status: published
 
 toc::[]
 
@@ -192,15 +190,15 @@ name=<unnamed>
 --------------------------------------------
 
 
-==== Accessing ConfiguredItemSupplier instances
+==== Accessing Supplier instances
 
 In many cases you want to create a supplier that simply creates instances that are correctly configured as defined
 by the current context. This can be done using +Suppliers+:
 
 [source, java]
 --------------------------------------------
-ConfiguredItemSupplier<Tenant> configuredTenantSupplier = ConfigurationInjector.getInstance().getConfiguredSupplier(
-  new ConfiguredItemSupplier<Tenant>(){
+Supplier<Tenant> configuredTenantSupplier = ConfigurationInjector.getInstance().getConfiguredSupplier(
+  new Supplier<Tenant>(){
      public Tenant get(){
        return new Tenant();
      }
@@ -211,11 +209,11 @@ With Java 8 it's even more simpler:
 
 [source, java]
 --------------------------------------------
-ConfiguredItemSupplier<Tenant> configuredTenantSupplier = ConfigurationInjector.getInstance().getConfiguredSupplier(
+Supplier<Tenant> configuredTenantSupplier = ConfigurationInjector.getInstance().getConfiguredSupplier(
   Tenant::new);
 --------------------------------------------
 
-Hereby this annotation can be used in multiple ways and combined with other annotations such as +@DefaultValue+,
+Hereby this annotation can be used in multiple ways and combined with other annotations such as
 +@WithLoadPolicy+, +@WithConfigOperator+, +@WithPropertyConverter+.
 
 ==== Minimal Example
@@ -247,7 +245,7 @@ In the next example we explicitly define the property value:
 --------------------------------------------
 pubic class ConfiguredItem{
 
-  @Config({"aValue", "a.b.value","a.b.deprecated.value"}, defaultValue="${env:java.version}")
+  @Config(value={"aValue", "a.b.value","a.b.deprecated.value"}, defaultValue="${env:java.version}")
   private String aValue;
 }
 --------------------------------------------
@@ -261,7 +259,7 @@ commit new values exactly, when convenient for you.
 --------------------------------------------
 pubic class ConfiguredItem{
 
-  @Config({"aValue", "a.b.value","a.b.deprecated.value"}, defaultValue="${env:java.version}")
+  @Config(value={"aValue", "a.b.value","a.b.deprecated.value"}, defaultValue="${env:java.version}")
   private DynamicValue aValue;
 }
 --------------------------------------------
@@ -294,8 +292,9 @@ public interface DynamicValue<T> {
 
     boolean isPresent();
     T orElse(T other);
-    T orElseGet(ConfiguredItemSupplier<? extends T> other);
-    <X extends Throwable> T orElseThrow(ConfiguredItemSupplier<? extends X> exceptionSupplier) throws X;
+    // Enabled with Java 8
+    // T orElseGet(ConfiguredItemSupplier<? extends T> other);
+    // <X extends Throwable> T orElseThrow(ConfiguredItemSupplier<? extends X> exceptionSupplier) throws X;
 
 }
 --------------------------------------------
@@ -443,3 +442,6 @@ public interface ConfiguredMethod {
     void configure(Object instance, Configuration config);
 }
 ----------------------------------------
+
+
+

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/40e8f73e/content/extensions/mod_jodatime.adoc
----------------------------------------------------------------------
diff --git a/content/extensions/mod_jodatime.adoc b/content/extensions/mod_jodatime.adoc
index e806af6..6dd05b6 100644
--- a/content/extensions/mod_jodatime.adoc
+++ b/content/extensions/mod_jodatime.adoc
@@ -16,8 +16,6 @@
 // under the License.
 
 = Apache Tamaya -- Extension: JodaTime
-:jbake-type: page
-:jbake-status: published
 
 toc::[]
 
@@ -62,3 +60,6 @@ To be written.
 === Specifing periods and durations
 
 To be written.
+
+
+

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/40e8f73e/content/extensions/mod_json.adoc
----------------------------------------------------------------------
diff --git a/content/extensions/mod_json.adoc b/content/extensions/mod_json.adoc
index 77c5b7d..691b27b 100644
--- a/content/extensions/mod_json.adoc
+++ b/content/extensions/mod_json.adoc
@@ -16,8 +16,6 @@
 // under the License.
 
 = Apache Tamaya -- Extension: Builder
-:jbake-type: page
-:jbake-status: published
 
 toc::[]
 
@@ -47,6 +45,7 @@ To benefit from configuration builder support you only must add the correspondin
 </dependency>
 -----------------------------------------------
 
+This extension also transitively requires the +tamaya.formats+ module.
 
 === Reading configuration in JSON
 
@@ -75,3 +74,5 @@ according property maps. E.g. the following file is a simple and correct JSON co
     }
 }
 ----------------------------------------------------------------
+
+

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/40e8f73e/content/extensions/mod_management.adoc
----------------------------------------------------------------------
diff --git a/content/extensions/mod_management.adoc b/content/extensions/mod_management.adoc
index f8050ec..b9f8de0 100644
--- a/content/extensions/mod_management.adoc
+++ b/content/extensions/mod_management.adoc
@@ -16,8 +16,6 @@
 // under the License.
 
 = Apache Tamaya -- Extension: JMX Management Access
-:jbake-type: page
-:jbake-status: published
 
 toc::[]
 
@@ -105,4 +103,4 @@ public final class ConfigManagementSupport{
 NOTE: The instance of +ManagedConfigMBean+ to be created and registered is evaluated by use og the
       +ServiceContextManager+. So you can replace the bean implementation by registering your
       overriding implementation using the current +ServiceContext+ (by default using
-      +java.util.ServiceLoader+ and +@Priority+ annotation.
+      +java.util.ServiceLoader+ and +@Priority+ annotation.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/40e8f73e/content/extensions/mod_mutable_config.adoc
----------------------------------------------------------------------
diff --git a/content/extensions/mod_mutable_config.adoc b/content/extensions/mod_mutable_config.adoc
index 2c15e9b..d38626e 100644
--- a/content/extensions/mod_mutable_config.adoc
+++ b/content/extensions/mod_mutable_config.adoc
@@ -16,8 +16,6 @@
 // under the License.
 
 = Apache Tamaya -- Extension: Mutable Configuration
-:jbake-type: page
-:jbake-status: published
 
 toc::[]
 
@@ -49,6 +47,8 @@ To benefit from configuration mutability support you only must add the correspon
 
 === Core Architecture
 
+==== Accessing MutableConfiguration
+
 The core of the module is the +MutableConfigurationProvider+ singleton, which provides access to +MutableConfiguration+
 instance, which extends +Configuration+. This interface adds additional methods to add/update or remove property values.
 Hereby changes applied are managed in a transaction like context, called +ConfigChangeContext+. Each context defines
@@ -57,16 +57,17 @@ Backends for writing changes applied are of type +MutablePropertySource+, simila
 SPI with methods for writing changes back. Registrations and ordering policies are like with ordinary property sources,
 with one important difference. Mutable property source can be targeted by write operations.
 
-Summarizing a +MutableConfiguration+ can be obtained as follows:
+The example below shows how a +MutableConfiguration+ can be obtained the simplest way:
 
 [source,java]
-.Accessing and changing a configuration
+.Accessing and changing configuration
 --------------------------------------------
-MutableConfiguration config = MutableConfigurationProvider.createMutableConfiguration();
-config.set("newKey", "newValue")
-      .set("anotherKey", "updatedValue")
+MutableConfiguration config = MutableConfigurationProvider
+                                      .createMutableConfiguration();
+config.put("newKey", "newValue")
+      .put("anotherKey", "updatedValue")
       .remove("valueNotValid")
-      .commit();
+      .store();
 --------------------------------------------
 
 In the above scenario we use the overall system's configuration as the backend to be used.
@@ -76,15 +77,16 @@ We can also pass any +Configuration+ to render it into a mutable instance, e.g.
 .Explicitly passing the backing configuration
 --------------------------------------------
 Configuration config = ...;
-MutableConfiguration config =
-    MutableConfigurationProvider.createMutableConfiguration(config);
+MutableConfiguration config = MutableConfigurationProvider
+                                       .createMutableConfiguration(config);
 --------------------------------------------
 
-NOTE: If a configuration does not contain any +MutablePropertySource+ instances, a +MutableConfiguration+ built
-      from it will not be able to accept any changes.
+NOTE: If a configuration does not contain any +MutablePropertySource+ instances,
+      a +MutableConfiguration+ built from it will not be able to accept any changes.
 
 
-Following is the complete listing of the +MutableConfigurationProvider+ accessor:
+Following you see the options how to create a +MutableConfiguration+ using the
++MutableConfigurationProvider+ singleton:
 
 [source, java]
 ---------------------------------------------
@@ -92,8 +94,13 @@ public final class MutableConfigurationProvider {
 
     private MutableConfigurationProvider(){}
 
-    public static MutableConfiguration getMutableConfiguration();
-    public static MutableConfiguration getMutableConfiguration(Configuration configuration);
+    public static MutableConfiguration createMutableConfiguration();
+    public static MutableConfiguration createMutableConfiguration(
+                                               ChangePropagationPolicy changePropgationPolicy);
+    public static MutableConfiguration createMutableConfiguration(Configuration configuration);
+    public static MutableConfiguration createMutableConfiguration(
+                                                   Configuration configuration,
+                                                   ChangePropagationPolicy changePropgationPolicy);
 
     [...]
 }
@@ -105,24 +112,11 @@ Hereby +MutableConfiguration+ is defined as follows:
 ---------------------------------------------
 public interface MutableConfiguration extends Configuration {
 
-    UUID startTransaction();
-    void commitTransaction();
-    void rollbackTransaction();
-    UUID getTransactionId();
-    boolean getAutoCommit();
-    void setAutoCommit(boolean autoCommit);
+    void store();
 
-    void setChangePropagationPolicy(ChangePropagationPolicy changePropagationPolicy);
+    ConfigChangeRequest getConfigChangeRequest();
     ChangePropagationPolicy getChangePropagationPolicy();
 
-    boolean isWritable(String keyExpression);
-    boolean isRemovable(String keyExpression);
-    boolean isExisting(String keyExpression);
-    List<MutablePropertySource> getMutablePropertySources();
-    List<MutablePropertySource> getPropertySourcesThatCanWrite(String keyExpression);
-    List<MutablePropertySource> getPropertySourcesThatCanRemove(String keyExpression);
-    List<MutablePropertySource> getPropertySourcesThatKnow(String keyExpression);
-
     MutableConfiguration put(String key, String value);
     MutableConfiguration putAll(Map<String, String> properties);
     MutableConfiguration remove(Collection<String> keys);
@@ -134,7 +128,7 @@ public interface MutableConfiguration extends Configuration {
 
 ==== Targeting the right MutablePropertySources
 
-A +Configuration+ may have multiple +MutablePropertySource+ present. These are members of Tamaya's oredered list of
+A +Configuration+ may have multiple +MutablePropertySource+ instances present. These are members of Tamaya's oredered list of
 +PropertySources+ to evaluate the configuration. Nevertheless writing back changes requires additional aspects to
 be considered:
 * Should changes being written back to all mutable property sources? Or should a key that could be added or removed
@@ -149,10 +143,13 @@ this aspect:
 .Explicitly passing the backing configuration
 --------------------------------------------
 public interface ChangePropagationPolicy {
-    void applyChanges(Collection<PropertySource> propertySources, UUID transactionID, Map<String,String> changes);
-    void applyChange(Collection<PropertySource> propertySources, UUID transactionID, String key, String value);
-    void applyRemove(Collection<PropertySource> propertySources, UUID transactionID, String... keys);
-
+    /**
+     * Method being called when a multiple key/value pairs are added or updated.
+     * @param propertySources the property sources, including readable property sources of the current configuration,
+     *                        never null.
+     * @param configChange the configuration change, not null.
+     */
+    void applyChange(ConfigChangeRequest configChange, Collection<PropertySource> propertySources);
 }
 --------------------------------------------
 
@@ -165,10 +162,7 @@ Also the +MutableConfigurationProvider+ provides access to the most commonly use
 ---------------------------------------------
 public final class MutableConfigurationProvider {
 
-    private MutableConfigurationProvider(){}
-
-    public static MutableConfiguration getMutableConfiguration();
-    public static MutableConfiguration getMutableConfiguration(Configuration configuration);
+    [...]
 
     public static ChangePropagationPolicy getApplyAllChangePolicy();
     public static ChangePropagationPolicy getApplyMostSignificantOnlyChangePolicy();
@@ -181,34 +175,29 @@ public final class MutableConfigurationProvider {
 ==== Some Aspects to consider
 
 Due to Tamaya's design the effective effect of your changes to the overall configuration, cannot
-be easily predicted, since it depends on several aspects:
+be sometimes a bit tricky to be predicted, since it depends on several aspects:
 
 . is the corresponding configuration resource configured as part of the current system's configuration?
-. what is the +PropertySource's+ ordinal? Is it overriding or overridden by other sources?
+. what is the +PropertySource's+ priority within the configuration context? Is it overriding or overridden
+  by other sources?
 . is the change directly visible to the configuration system? E.g. injected values are normally not updated,
   whereas injecting a +DynamicValue<T>+ instance allows to detect and react single value changes. Also the
   +PropertySources+ implementation must be able to detect any configuration changes and adapt its values returned
-  accordingly.
+  accordingly. Finally values also can be marked as immutable or being cached.
 . Is configuration cached, or written/collected directly on access?
 . can the changes applied be committed at all?
 
 So it is part of your application configuration design to clearly define, which property sources may be read-only, which
-may be mutable, how overriding should work and to which backends finally any changes should be written back. To
-support such fine granular scenarios a +MutableConfiguration+ also offers methods to determine if a key
-is writable at all or can be removed or updated:
+may be mutable, how overriding should work and to which backends finally any changes should be written back. Nevertheless
+changing or adding value is very easy:
 
 [source,java]
-.Checking for mutability
+.Changing a configuration
 --------------------------------------------
 MutableConfiguration config = MutableConfigurationProvider.createMutableConfiguration();
-
-if(config,isWritable("mycluster.shared.appKey")){
-    config.set("newKey", "newValue");
-}
-if(config,isRemovable("mycluster.myapp.myKey")){
-    config.remove("mycluster.myapp.myKey");
-}
-config.commit();
+config.put("newKey", "newValue");
+config.remove("mycluster.myapp.myKey");
+config.store();
 --------------------------------------------
 
 
@@ -229,11 +218,42 @@ Multiple backends are supported. E.g. the _etcd_ integration module of Tamaya al
 corresponding SPI implementations/backends. By default this module comes with
 the following +MutablePropertySource+ implementations:
 
-* +MutablePropertySource+ resources, targeting local .properties files, following the +java.util.Properties+
+* +MutablePropertySource+ resources, targeting local +.properties+ files, using the +java.util.Properties+
   format.
-* +MutableXmlPropertySource+ resources, targeting local .xml property files, following the +java.util.Properties+
+* +MutableXmlPropertySource+ resources, targeting local +.xml+ property files, using the +java.util.Properties+
   XML format.
 
+==== Refreshable Property Sources
+
+Somehow similar to configuration changes applied explicitly is the case, where values of underlying
+configuration backends change and must be reflected in the new configuration tree. Examples are:
+
+* Configuration files being edited, added or removed.
+* Changes on remote servers like etcd, consul
+* etc.
+
+For having a common API for refreshable items a +Refreshable+ interface is defined:
+
+[source,java]
+.Refreshable interface
+--------------------------------------------
+/**
+ * Interface to be implemented by items that can be refreshed. By default
+ * these are property sources, but more types may be supported at a later
+ * point in time.
+ */
+public interface Refreshable {
+
+    /**
+     * Refreshes the item by reloading its internal state.
+     */
+    void refresh();
+
+}
+--------------------------------------------
+
+
+==== Refreshable Property Sources
 
 === SPIs
 
@@ -244,15 +264,20 @@ singleton accessor:
 .SPI: MutableConfigurationProviderSpi
 --------------------------------------------------
 public interface MutableConfigurationProviderSpi {
-   MutableConfiguration createMutableConfiguration(Configuration configuration);
+    /**
+     * Creates a new {@link MutableConfiguration} with {@code autoCommit = false} as default.
+     *
+     * @param configuration the configuration, not null.
+     * @param propagationPolicy policy that defines how changes are published to the property
+     *                          sources.
+     * @return a new mutable configuration instance.
+     */
+    MutableConfiguration createMutableConfiguration(Configuration configuration,
+                                                    ChangePropagationPolicy propagationPolicy);
 }
 --------------------------------------------------
 
-Implementations are registered with the current +ServiceContext+, by default as a
- +java.util.ServiceLoader+ service.
-
+Implementations are registered with the current +ServiceContext+ (using by default the
+ +java.util.ServiceLoader+ service).
 
-As convenience the following base classes are provided:
 
-* +org.apache.tamaya.mutableconfig.propertysource.AbstractMutablePropertySource+ simplifying implementation of
-  +MutablePropertySource+.

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/40e8f73e/content/extensions/mod_optional.adoc
----------------------------------------------------------------------
diff --git a/content/extensions/mod_optional.adoc b/content/extensions/mod_optional.adoc
index f97e052..369df68 100644
--- a/content/extensions/mod_optional.adoc
+++ b/content/extensions/mod_optional.adoc
@@ -16,8 +16,6 @@
 // under the License.
 
 = Apache Tamaya -- Extension: Optional Tamaya Configuration
-:jbake-type: page
-:jbake-status: published
 
 toc::[]
 
@@ -68,3 +66,4 @@ BigDecimal interestRate =
                 .get("com.mycomp.ratecalculator.rate", BigDecimal.class))
                 .orElse(BigDecimal.of(0.05d));
 -----------------------------------------------
+

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/40e8f73e/content/extensions/mod_osgi.adoc
----------------------------------------------------------------------
diff --git a/content/extensions/mod_osgi.adoc b/content/extensions/mod_osgi.adoc
index 9a46fd0..52518a7 100644
--- a/content/extensions/mod_osgi.adoc
+++ b/content/extensions/mod_osgi.adoc
@@ -16,8 +16,6 @@
 // under the License.
 
 = Apache Tamaya -- Extensions: OSGI Integrations
-:jbake-type: page
-:jbake-status: published
 
 toc::[]
 

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/40e8f73e/content/extensions/mod_remote.adoc
----------------------------------------------------------------------
diff --git a/content/extensions/mod_remote.adoc b/content/extensions/mod_remote.adoc
index 4d947e5..d82b7ba 100644
--- a/content/extensions/mod_remote.adoc
+++ b/content/extensions/mod_remote.adoc
@@ -16,8 +16,6 @@
 // under the License.
 
 = Apache Tamaya -- Extension: Remote Configuration
-:jbake-type: page
-:jbake-status: published
 
 toc::[]
 
@@ -128,4 +126,4 @@ public class RemotePropertySource extends BaseRemotePropertySource{
     }
 
 }
------------------------------------------------
+-----------------------------------------------
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/40e8f73e/content/extensions/mod_resolver.adoc
----------------------------------------------------------------------
diff --git a/content/extensions/mod_resolver.adoc b/content/extensions/mod_resolver.adoc
index 366c97e..c502272 100644
--- a/content/extensions/mod_resolver.adoc
+++ b/content/extensions/mod_resolver.adoc
@@ -1,8 +1,25 @@
-:jbake-type: page
-:jbake-status: published
+// 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.
 
 = Apache Tamaya -- Extension: Resolver
 
+include::temp-properties-files-for-site/attributes.adoc[]
+
+
 [[Core]]
 == Tamaya Resolver (Extension Module)
 
@@ -30,7 +47,7 @@ To benefit from dynamic value resolution you only must add the corresponding dep
 <dependency>
   <groupId>org.apache.tamaya.ext</groupId>
   <artifactId>tamaya-resolver</artifactId>
-  <version>{tamaya_version}</version>
+  <version>{tamaya_version_development}</version>
 </dependency>
 -----------------------------------------------
 

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/40e8f73e/content/extensions/mod_resources.adoc
----------------------------------------------------------------------
diff --git a/content/extensions/mod_resources.adoc b/content/extensions/mod_resources.adoc
index 3081149..7506859 100644
--- a/content/extensions/mod_resources.adoc
+++ b/content/extensions/mod_resources.adoc
@@ -1,8 +1,24 @@
-:jbake-type: page
-:jbake-status: published
+// 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.
 
 = Apache Tamaya -- Extension: Resources
 
+include::temp-properties-files-for-site/attributes.adoc[]
+
 [[Core]]
 == Tamaya Resources (Extension Module)
 === Overview
@@ -20,7 +36,7 @@ ant-styled resource patterns. To use this module add the following dependency:
 <dependency>
   <grooupId>org.apache.tamaya.ext</groupId>
   <artifactId>tamaya-resources</artifactId>
-  <version>{tamaya_version}</version>
+  <version>{tamaya_version_development}</version>
 </dependency>
 -----------------------------------------------
 
@@ -153,3 +169,4 @@ alternate implementation with an overriding +@Priority+ annotation added using t
 
 Additionally a +BaseResourceResolver+ class can be used to reduce the amount of code to be written
 on your own.
+

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/40e8f73e/content/extensions/mod_server.adoc
----------------------------------------------------------------------
diff --git a/content/extensions/mod_server.adoc b/content/extensions/mod_server.adoc
index 5238aca..44398d7 100644
--- a/content/extensions/mod_server.adoc
+++ b/content/extensions/mod_server.adoc
@@ -16,8 +16,6 @@
 // under the License.
 
 = Apache Tamaya -- Extension: Configuration Server
-:jbake-type: page
-:jbake-status: published
 
 toc::[]
 
@@ -380,3 +378,5 @@ public final class ScopeManager {
 
 }
 -----------------------------------------------
+
+

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/40e8f73e/content/extensions/mod_spi-support.adoc
----------------------------------------------------------------------
diff --git a/content/extensions/mod_spi-support.adoc b/content/extensions/mod_spi-support.adoc
index 0e7892f..c507c1a 100644
--- a/content/extensions/mod_spi-support.adoc
+++ b/content/extensions/mod_spi-support.adoc
@@ -16,8 +16,6 @@
 // under the License.
 
 = Apache Tamaya -- Extension: Classloader Isolation Support
-:jbake-type: page
-:jbake-status: published
 
 toc::[]
 
@@ -71,3 +69,4 @@ To benefit from Tamaya CDI integration you only must add the corresponding depen
 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.
+

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/40e8f73e/content/extensions/mod_spring.adoc
----------------------------------------------------------------------
diff --git a/content/extensions/mod_spring.adoc b/content/extensions/mod_spring.adoc
index 17bd96a..5f6d65e 100644
--- a/content/extensions/mod_spring.adoc
+++ b/content/extensions/mod_spring.adoc
@@ -16,8 +16,6 @@
 // under the License.
 
 = Apache Tamaya -- Extension: Spring Integration
-:jbake-type: page
-:jbake-status: published
 
 toc::[]
 
@@ -147,4 +145,4 @@ public class ConfiguredSpringBean {
 }
 --------------------------------------------------------
 
-Summarizing you get all the nice features of Tamaya out of the box running with your Spring code.
+Summarizing you get all the nice features of Tamaya out of the box running with your Spring code.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/40e8f73e/content/extensions/mod_yaml.adoc
----------------------------------------------------------------------
diff --git a/content/extensions/mod_yaml.adoc b/content/extensions/mod_yaml.adoc
index eeb352c..85c1871 100644
--- a/content/extensions/mod_yaml.adoc
+++ b/content/extensions/mod_yaml.adoc
@@ -16,8 +16,6 @@
 // under the License.
 
 = Apache Tamaya -- Extension: Builder
-:jbake-type: page
-:jbake-status: published
 
 toc::[]
 
@@ -44,10 +42,11 @@ To benefit from configuration builder support you only must add the correspondin
 <dependency>
   <groupId>org.apache.tamaya.ext</groupId>
   <artifactId>tamaya-yaml</artifactId>
-  <version>{tamaya-version}</version>
+  <version>{tamayaVersion}</version>
 </dependency>
 -----------------------------------------------
 
+This extension also transitively requires the +tamaya.formats+ module.
 
 === Reading configuration in YAML
 
@@ -125,3 +124,4 @@ tax -> 251.42
 total -> 4443.52
 comments -> Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.
 ----------------------------------------------------------------
+


[2/2] incubator-tamaya-site git commit: Moved asciidocs latest from core to site, keeping jbake headers in place.

Posted by an...@apache.org.
Moved asciidocs latest from core to site, keeping jbake headers in place.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/commit/06e3e4c0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/tree/06e3e4c0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/diff/06e3e4c0

Branch: refs/heads/master
Commit: 06e3e4c088177bc14d476ab2414300de94342b23
Parents: 40e8f73
Author: Anatole Tresch <an...@apache.org>
Authored: Fri Nov 18 07:07:11 2016 +0100
Committer: Anatole Tresch <an...@apache.org>
Committed: Fri Nov 18 07:07:11 2016 +0100

----------------------------------------------------------------------
 content/api.adoc        | 125 ++++++++++++++++++++++++++++++++++++-------
 content/core.adoc       |   6 ++-
 content/extensions.adoc |  74 +++++++++----------------
 3 files changed, 136 insertions(+), 69 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/06e3e4c0/content/api.adoc
----------------------------------------------------------------------
diff --git a/content/api.adoc b/content/api.adoc
index f830585..98256ce 100644
--- a/content/api.adoc
+++ b/content/api.adoc
@@ -23,7 +23,7 @@
 == Apache Tamaya: API
 
 Though Tamaya is a very powerful and flexible solution there are basically only a few simple core concepts required
-that build the base of all the other mechanisms. As a starting point we recommend you read the corresponding
+that are the base of all the other mechanisms. As a starting point we recommend you read the corresponding
 llink:HighLevelDesign.html[High Level Design Documentation]
 
 [[API]]
@@ -51,10 +51,14 @@ The API provides the artifacts as described in the link:HighLevelDesign.html[Hig
   ** +ConfigurationProviderSpi+ defines the SPI that is used as a backing bean for the +ConfigurationProvider+
      singleton.
   ** +PropertyFilter+, which allows filtering of property values prior getting returned to the caller.
-  ** +ConfigurationContext+, which provides the container that contains the property sources and filters that form a
-     configuration.
   ** +PropertyValueCombinationPolicy+ optionally can be registered to change the way how different key/value
      pairs are combined to build up the final +Configuration+ passed over to the filters registered.
+  ** +ConfigurationContext+, which provides a container for all the artifacts needed to build up a +Configuration+.
+     For example a context contains the property sources, property filters, converters and combination policy used.
+     Also the ordering of the property sources is defined by the context. A context instance given a
+     +Configuration+ can be created by calling +ConfigurationProvider.createConfiguration(context);+.
+  ** Similarly a +ConfigurationContext+ can be created using a +ConfigurationContextBuilder+. This builder can be
+     obtained calling +ConfigurationProvider.getConfigurationContextBuilder();+.
   ** +ServiceContext+, which provides access to the components loaded, depending on the current runtime stack.
   ** +ServiceContextManager+ provides static access to the +ServiceContext+ loaded.
 
@@ -202,7 +206,7 @@ Hereby the singleton is backed up by an instance of +ConfigurationProviderSpi+.
 
 
 [[PropertyConverter]]
-==== Property Converters
+==== Property Type Conversion
 
 As illustrated in the previous section, +Configuration+ also to access non String types. Nevertheless internally
 all properties are strictly modelled as pure Strings only, so non String types must be derived by converting the
@@ -328,7 +332,7 @@ property sources with additional combination/aggregation rules in place.
 
 
 [[PropertySourceProvider]]
-==== Interface PropertySourceProvider
+=== Interface PropertySourceProvider
 
 Instances of this type can be used to register multiple instances of +PropertySource+.
 
@@ -349,7 +353,7 @@ current active +ServiceContext+.
 
 
 [[PropertyFilter]]
-==== Interface PropertyFilter
+=== Interface PropertyFilter
 
 Also +PropertyFilters+ can be added to a +Configuration+. They are evaluated before a +Configuration+ instance is
 passed to the user. Filters can hereby used for multiple purposes, such as
@@ -420,7 +424,7 @@ public interface PropertyValueCombinationPolicy{
 [[ConfigurationContext]]
 ==== The Configuration Context
 
-A +Configuration+ is basically based on a so called +ConfigurationContext+, which is
+A +Configuration+ is created from a +ConfigurationContext+, which is
 accessible from +Configuration.getContext()+:
 
 [source,java]
@@ -429,7 +433,8 @@ accessible from +Configuration.getContext()+:
 ConfigurationContext context = ConfigurationProvider.getConfiguration().getContext();
 --------------------------------------------
 
-The +ConfigurationContext+ provides access to the internal building blocks that determine the final +Configuration+:
+The +ConfigurationContext+ provides access to the internal artifacts that determine the final +Configuration+ and
+also defines the ordering of the property sources, filters and converters contained:
 
 * +PropertySources+ registered (including the PropertySources provided from +PropertySourceProvider+ instances).
 * +PropertyFilters+ registered, which filter values before they are returned to the client
@@ -441,8 +446,8 @@ The +ConfigurationContext+ provides access to the internal building blocks that
 [[Mutability]]
 ==== Changing the current Configuration Context
 
-By default the +ConfigurationContext+ is not mutable once it is created. In many cases mutability is also not needed
-or even not wanted. Nevertheless there are use cases where the current +ConfigurationContext+ (and
+A +ConfigurationContext+ is not mutable once it is created. In many cases mutability is also not needed. Nevertheless
+there are use cases where the current +ConfigurationContext+ (and
 consequently +Configuration+) must be adapted:
 
 * New configuration files where detected in a folder observed by Tamaya.
@@ -452,7 +457,7 @@ consequently +Configuration+) must be adapted:
 * Within unit testing alternate configuration setup should be setup to meet the configuration requirements of the
   tests executed.
 
-In such cases the +ConfigurationContext+ must be mutable, meaning it must be possible:
+In such cases the +ConfigurationContext+ must be changed, meaning it must be possible:
 
 * to add or remove +PropertySource+ instances
 * to add or remove +PropertyFilter+ instances
@@ -462,9 +467,9 @@ In such cases the +ConfigurationContext+ must be mutable, meaning it must be pos
 This can be achieved by obtaining an instance of +ConfigurationContextBuilder+. Instances of this builder can be
 accessed either
 
-* from the current +ConfigurationContext+, hereby returning a builder instance preinitialized with the values from the
-  current +ConfigurationContext+
-* from the current +ConfigurationProvider+ singleton.
+* calling +ConfigurationContext.toBuilder()+, hereby returning a builder instance preinitialized with the values from the
+  current +ConfigurationContext+.
+* calling +ConfigurationProvider.getConfigurationContextBuilder()+.
 
 [source,java]
 .Accessing a +ConfigurationContextBuilder+
@@ -478,10 +483,41 @@ With such a builder a new +ConfigurationContext+ can be created and then applied
 [source,java]
 .Creating and applying a new +ConfigurationContext+
 --------------------------------------------
-ConfigurationContextBuilder preinitializedContextBuilder = ConfigurationProvider.getConfiguration().getContext()
-                                                           .toBuilder();
-ConfigurationContext context = preinitializedContextBuilder.addPropertySources(new MyPropertySource())
-                                                           .addPropertyFilter(new MyFilter()).build();
+ConfigurationContext context = ConfigurationProvider.getConfiguration().getContext()
+                                    .toBuilder();
+                                    .addPropertySources(new MyPropertySource())
+                                    .addPropertyFilter(new MyFilter())
+                                    .build();
+--------------------------------------------
+
+Hereby the builder provides several methods for adding, removing of property sources and also operations
+for programmatically change the property sourcepriorities, e.g.
+
+[source,java]
+.Chain manipulation using +ConfigurationContextBuilder+
+--------------------------------------------
+PropertySource propertySource = builder.getPropertySource("sourceId");
+
+// changing the priority of a property source. The ordinal value hereby is not considered.
+// Instead the position of the property source within the chain is changed.
+builder.decreasePriority(propertySource);
+
+// Alternately a comparator expression can be passed to establish the defined ordering...
+builder.sortPropertyFilters(MyFilterComparator::compare);
+--------------------------------------------
+
+Finally if the new context is ready a new configuration can be created, or the context is applied to the
+current configuration.
+
+[source,java]
+.Creating and applying a new +ConfigurationContext+
+--------------------------------------------
+ConfigurationContext context = builder.build();
+
+// Creates a new matching Configuration instance
+Configuration newConfig = ConfigurationProvider.createConfiguration(context);
+
+// Apply the new context to replace the current configuration:
 ConfigurationProvider.setConfigurationContext(context);
 --------------------------------------------
 
@@ -500,6 +536,59 @@ One of the most important SPI in Tamaya if the +ConfigurationProviderSpi+ interf
 * to provide access to the right +Configuration/ConfigurationContext+ based on the current runtime context.
 * Performing changes as set with the current +ConfigurationContextBuilder+.
 
+= Interface ConfigurationContextBuilder
+
+include::temp-properties-files-for-site/attributes.adoc[]
+
+[[BuilderCore]]
+== Interface ConfigurationContextBuilder
+=== Overview
+
+The Tamaya builder module provides a generic (one time) builder for creating +Configuration+ instances,
+e.g. as follows:
+
+[source,java]
+---------------------------------------------------------------
+ConfigurationBuilder builder = new ConfigurationBuilder();
+// do something
+Configuration config = builder.build();
+---------------------------------------------------------------
+
+Basically the builder allows to create configuration instances completely independent of the current configuration
+setup. This gives you full control on the +Configuration+ setup.
+
+
+=== Supported Functionality
+
+The builder allows you to add +PropertySource+ instances:
+
+[source,java]
+----------------------------------------------------------------
+ConfigurationContextBuilder builder = ConfigurationProvider.getConfigurationContextBuilder();
+builder.addPropertySources(sourceOne, sourceTwo, sourceThree
+Configuration config = ConfigurationProvider.createConfiguration(builder.build());
+----------------------------------------------------------------
+
+Hereby the ordering of the propertysources is not changed, regardless of the ordinals provided
+by the property sources. This allows alternate ordering policies easily being implemented because
+creating a configuration based on a configuration context is already implemented and provided by the core
+API.
+
+Similarly you can add filters:
+
+[source,java]
+----------------------------------------------------------------
+builder.addPropertyFilters(new MyConfigFilter());
+----------------------------------------------------------------
+
+...or +PropertySourceProvider+ instances:
+
+[source,java]
+----------------------------------------------------------------
+builder.addPropertySourceProvider(new MyPropertySourceProvider());
+----------------------------------------------------------------
+
+
 
 [[ServiceContext]]
 ==== The ServiceContext

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/06e3e4c0/content/core.adoc
----------------------------------------------------------------------
diff --git a/content/core.adoc b/content/core.adoc
index fe891b2..ea3a7c6 100644
--- a/content/core.adoc
+++ b/content/core.adoc
@@ -36,7 +36,8 @@ hereby providing type conversion for all important types.
 * A simple default configuration setup using the current classpath and an optional staging variable.
 * It collects all +PropertySource+ and +PropertySourceProvider+ instances registered with the +ServiceLoader+ and
   registers them in the global +ConfigurationContext+
-* It provides a +ConfigurationContextBuilder+ and allows changing the current +ConfigurationContext+.
+* It provides a +ConfigurationContextBuilder+ implementation (class +DefaultConfigurationContextBuilder+) and allows
+  changing the current +ConfigurationContext+.
 
 The overall size of the library is very small. All required components are implemented and registered, so basically the
 Core module is a complete configuration solution. Nevertheless it is also very minimalistic, but fortunately is flexible
@@ -116,6 +117,9 @@ By default, and if no annotation is added +0+ is used as priority. Hereby higher
 * if priorities match Tamaya Core additionally sorts them using the simple class name. This ensures that ordering is
   still defined and predictable in almost all scenarios.
 
+NOTE: Sorting the property sources based on their ordinal value is only the default ordering principle applied. By implementing
+      your own implementation of +ConfigurationProviderSpi+ you can apply a different logic:
+
 
 [[RegisteringPropertySources]]
 === Registering Property Sources

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/06e3e4c0/content/extensions.adoc
----------------------------------------------------------------------
diff --git a/content/extensions.adoc b/content/extensions.adoc
index 93b34b5..577fd67 100644
--- a/content/extensions.adoc
+++ b/content/extensions.adoc
@@ -36,72 +36,46 @@ Mature extensions have a stable API and SPI, similar to the API and Implementati
 |+org.apache.tamaya.ext:tamaya-json+          |Provides format support for JSON based configuration.  |link:extensions/mod_json.html[Documentation]
 |+org.apache.tamaya.ext:tamaya-optional+      |Lets a Tamaya configuration to be used as an optional project extension only.  |link:extensions/mod_optional.html[Documentation]
 |+org.apache.tamaya.ext:tamaya-resolver+      |Provides placeholder and dynamic resolution functionality for configuration values.  |link:extensions/mod_resolver.html[Documentation]
-|+org.apache.tamaya.ext:tamaya-spi-support+   |Tamaya support module for SPI implementation.          |link:extensions/mod_spi-support.html[Documentation]
-|=======
-
-
-=== 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 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:extensions/mod_builder.html[Documentation]
-|+org.apache.tamaya.ext:tamaya-classloader-support+  |Manages Tamaya configuration and services considering classloading hierarchies.  |link:extensions/mod_classloader_support.html[Documentation]
 |+org.apache.tamaya.ext:tamaya-events+        |Provides support for publishing configuration changes  |link:extensions/mod_events.html[Documentation]
 |+org.apache.tamaya.ext:tamaya-filter+        |Provides a programmatic filter for config entries.     | link:extensions/mod_filter.html[Documentation]
+|+org.apache.tamaya.ext:tamaya-injection-api+ |Provides Tamaya's injection annotations API.           |link:extensions/mod_injection.html[Documentation]
 |+org.apache.tamaya.ext:tamaya-injection+     |Provides configuration injection services and congiruation template support.  |link:extensions/mod_injection.html[Documentation]
-|+org.apache.tamaya.ext:tamaya-management+    |Provides JMX support for inspecting configuration.     |link:extensions/mod_management.html[Documentation]
-|+org.apache.tamaya.ext:tamaya-model+         |Provides support documenting ang validating configuration during runtime.  |link:extensions/mod_model.html[Documentation]
+|+org.apache.tamaya.ext:tamaya-injection-cdi+ | Java EE/standalone compliant CDI integration using CDI for injection. | link:extensions/mod_cdi.html[Documentation]
+|+org.apache.tamaya.ext:tamaya-injection-cdi-se+ | Java EE/standalone compliant CDI integration using Tamaya SE injection mechanism. | link:extensions/mod_cdi.html[Documentation]
 |+org.apache.tamaya.ext:tamaya-mutable-config+|Provides API/SPI for writing configuration             |link:extensions/mod_mutable_config.html[Documentation]
-|+org.apache.tamaya.ext:tamaya-remote+        |Provides remote configuration support.                 |link:extensions/mod_remote.html[Documentation]
+|+org.apache.tamaya.ext:tamaya-spi-support+   |Tamaya support module for SPI implementation.          |link:extensions/mod_spi-support.html[Documentation]
 |+org.apache.tamaya.ext:tamaya-resources+     |Provides ant-style resource path resolution  |link:extensions/mod_resources.html[Documentation]
-|+org.apache.tamaya.ext:tamaya-server+        |Lets a Tamaya configuration instance provide scoped configuration as a REST service.     |link:extensions/mod_server.html[Documentation]
 |+org.apache.tamaya.ext:tamaya-yaml+          |Support for using yaml as a configuration format.      |link:extensions/mod_yaml.html[Documentation]
 |+org.apache.tamaya.ext:tamaya-collections+   |Collections support.                                   |link:extensions/mod_collections.html[Documentation]
-|=======
-
-=== Integrations
-
-These extensions integrate/bridge Tamayas functionality with other frameworks turning their configuration capabilities
-from a sledgehammer to a scalpell:
-
-[width="100%",frame="1",options="header",grid="all"]
-|=======
-|_Artifact_                                 |_Description_                                 |_Links_
-|+org.apache.tamaya.ext:tamaya-cdi+         | Java EE/standalone compliant CDI integration | link:extensions/mod_cdi.html[Documentation]
-|+org.apache.tamaya.ext:tamaya-camel+       | Integration for Apache Camel.                | link:extensions/mod_camel.html[Documentation]
 |+org.apache.tamaya.ext:tamaya-spring+      | Integration for Spring / Spring Boot.        | link:extensions/mod_spring.html[Documentation]
-|+org.apache.tamaya.ext:tamaya-osgi+        | Integration for OSGI containers.             | link:extensions/mod_osgi.html[Documentation]
-|+org.apache.tamaya.ext:tamaya-consul+      | Integration with consul clusters.            | link:extensions/mod_consul.html[Documentation]
-|+org.apache.tamaya.ext:tamaya-etcd+        | Integration with etcd clusters.              | link:extensions/mod_etcd.html[Documentation]
 |=======
 
 
-=== Extensions in Experimental Stage
+=== Extensions Sandbox
 
-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.
+Extensions in _draft state_ rather experimental or not yet very mature. API changes may occurr at any time
+and the may also have severe issues. So use at your own risk or join and help us getting them stable and
+well tested!
+
+NOTE All extensions 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-commons+     |Combines Tamaya's Format Abstraction with Apache Commons.  | -
 |+org.apache.tamaya.ext:tamaya-jodatime+    |Provides support for JodaTime.                         | link:extensions/mod_jodatime.html[Documentation]
-|+org.apache.tamaya.ext:tamaya-staged+      |Simple configuration extension to add staged config.   | link:extensions/mod_metamodel-staged.html[Documentation]
+|+org.apache.tamaya.ext:tamaya-classloader-support+  |Manages Tamaya configuration and services considering classloading hierarchies.  |link:extensions/mod_classloader_support.html[Documentation]
+|+org.apache.tamaya.ext:tamaya-management+  |Provides JMX support for inspecting configuration.     |link:extensions/mod_management.html[Documentation]
+|+org.apache.tamaya.ext:tamaya-metamodel+   |Provides support defining configuration using XML based meta-configuration.  |link:extensions/mod_metamodel.html[Documentation]
+|+org.apache.tamaya.ext:tamaya-validation+  |Provides support for XML based meta-configuration allowing to validate configuration read.  |link:extensions/mod_validation.html[Documentation]
+|+org.apache.tamaya.ext:tamaya-usagetracker+  |Provides support tracking of configuration usage and the consumer locations consuming configuration.  |link:extensions/mod_usagetracker.html[Documentation]
+|+org.apache.tamaya.ext:tamaya-camel+       | Integration for Apache Camel.                | link:extensions/mod_camel.html[Documentation]
+|+org.apache.tamaya.ext:tamaya-osgi+        | Integration for OSGI containers.             | link:extensions/mod_osgi.html[Documentation]
+|+org.apache.tamaya.ext:tamaya-consul+      | Integration with consul clusters.            | link:extensions/mod_consul.html[Documentation]
+|+org.apache.tamaya.ext:tamaya-etcd+        | Integration with etcd clusters.              | link:extensions/mod_etcd.html[Documentation]
+|+org.apache.tamaya.ext:tamaya-configured-sysprops+        | Allows Tamaya to integrate with +System.getProperties()+.   | link:extensions/mod_sysprops.html[Documentation]
+|+org.apache.tamaya.ext:tamaya-remote+      |Provides remote configuration support.                 |link:extensions/mod_remote.html[Documentation]
+|+org.apache.tamaya.ext:tamaya-server+      |Lets a Tamaya configuration instance provide scoped configuration as a REST service.     |link:extensions/mod_server.html[Documentation]
+|+org.apache.tamaya.ext:tamaya-ui+          |Provides a web UI for a VM running Tamaya.    |link:extensions/mod_ui.html[Documentation]
 |=======
 
-
-=== Integrations in Experimental Stage
-
-Integrations in _experimental mode_ may still be under discussions, or may even not compile ! 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-commons+         |Integration with Apache Commons Configuration.                    | -
-|=======