http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/1c033714/content/documentation-new/extensions/mod_collections.adoc
----------------------------------------------------------------------
diff --cc content/documentation-new/extensions/mod_collections.adoc
index 93cc4be,93cc4be..0000000
deleted file mode 100644,100644
--- a/content/documentation-new/extensions/mod_collections.adoc
+++ /dev/null
@@@ -1,245 -1,245 +1,0 @@@
--:jbake-type: page
--:jbake-status: published
--
--= Apache Tamaya - Extension: Collection Support
--
--toc::[]
--
--[[Collections]]
--== Tamaya Collections Support (Extension Module)
--
--Tamaya _Collections_ is an extension module. Refer to the 
link:../extensions.html[extensions documentation] for further details.
--
--
--=== What functionality this module provides ?
--
--All configuration in Tamaya is expressed as simple key, value pairs. 
Nevertheless this concept allows similarly
--the modelling of collection typed values such as lists, sets, maps or simple 
collections of things. The Tamaya
--Collections extension adds this functionality to the Tamaya eco-system.
--
--
--=== Compatibility
--
--The module is based on Java 8, so it will not run on Java 8 and beyond.
--
--
--=== Installation
--
--To use Tamaya collection support you only must add the corresponding 
dependency to your module:
--
--[source, xml]
-------------------------------------------------
--<dependency>
--  <groupId>org.apache.tamaya.ext</groupId>
--  <artifactId>tamaya-collections</artifactId>
--  <version>{tamaya_version}</version>
--</dependency>
-------------------------------------------------
--
--
--=== Overview
--
--Tamaya Collections adds +PropertyConverter+ implementations that are able to 
access configuration data
--as _lists, maps_ or _sets_. By default this works out of the box as easy as 
accessing any other type of
--configuration data, e.g.
--
--[source, java]
-------------------------------------------------
--Configuration config = ConfigurationProvider.getConfiguration();
--
--// Without any content specification, a list of String is returned.
--List<String> simpleList = config.get("my.list.config.entry", List.class);
--
--// Using a TypeLiteral allows to use every convertible sub type supported by 
the system.
--List<Integer> intList = config.get("my.list.config.entry", new 
TypeLiteral<List<Integer>>(){});
-------------------------------------------------
--
--Configuration in that case, by default, is a simple comma-separated list of 
entries, e.g.
--
--[source, properties]
-------------------------------------------------
--my.list.config.entry=1,34454,23,344545,3445
-------------------------------------------------
--
--Additionally the module allows adding additional meta-entries, which allows 
to tweak some of the
--inner-workings, e.g.
--
--* using your own +PropertyConverter+ implementation for parsing entries.
--* specifying a custom separator to split the items (default is {{','}}.
--* specifying a custom separator to split key/value pairs when parsing map 
entries.
--* specifying the implementation type of the collection item to be returned.
--* specifying the implementation type of the collection to be returned.
--
--
--=== Supported Types
--
--This module currently supports the following types:
--
--* +java.util.Collection+
--* +java.util.List+
--* +java.util.ArrayList+
--* +java.util.LinkedList+
--* +java.util.Set+
--* +java.util.SortedSet+
--* +java.util.TreeSet+
--* +java.util.HashSet+
--* +java.util.Map+
--* +java.util.SortedMap+
--* +java.util.HashMap+
--* +java.util.TreeMap+
--
--Hereby the collection type is determined by the parameter type accessed, e.g.
--+config.get("mylist", ArrayList.class)+ will always return an +ArrayList+
--as result.
--
--NOTE: This means that depending on your use case you can access different
--collection types based on the same configuration values, as long as their is
--a +PropertyConverter+ that can convert the _raw configuration value_ to the
--required target type.
--
--
--==== Configuring the target implementation type
--
--Tamaya Collections allows you to configure the _default_ target collection 
type by adding the
--following meta-configuration entry (shown for the +mylist+ entry). Hereby the 
package part
--+java.util.+ can be ommitted:
--
--[ source, properties]
-------------------------------------------------
--mylist=a,b,c
--_mylist.collection-type=LinkedList
-------------------------------------------------
--
--When calling +config.get("mylist", ArrayList.class)+ this parameter does not 
have any effect,
--so you will still get an +ArrayList+ as a result. However when you call 
+config.get("mylist",
--List.class)+ you will get a +LinkedList+ as implementation type.
--
--This mechanism similarly applies to all kind of collections, so you can use 
it similarly to define the implementation
--type returned when accessing +List+, +Map+ or +Collection+.
--
--
--=== Collecting Configuration Entries instead of Overriding
--
--By default Tamaya applies always an overriding +CombinationPolicy+, where 
only the configuration entry for
--the most significant configuration entry is used. In case of collections (and 
maybe also other use cases),
--overriding is not always the mechanism of choice. E.g. when you want to have 
all entries added to your
--configuration to be *combined* to a new entry containing all values provided 
by any property sources.
--
--Therefore _Tamaya Collections_ also provides a more sophistiated 
+CombinationPolicy+ (automatically configured)
--that allows to adapt the way how configuration entries are combined. All you 
must do is declaring
--the mechanism to be applied by an according _meta-configuration_ parameter, 
e.g. for +my.list+ your config may
--look as follows:
--
--[source, properties]
-------------------------------------------------
--# from PropertSource 1
--my.list=1,2,3
--
--# from PropertSource 2, with higher precedence
--my.list=4,5,6
--
--# without any additional meta-info these entries would be combined to
--my.list=4,5,6
-------------------------------------------------
--
--With Tamaya Collections you can now configure the combination policy as 
follows:
--
--[source, properties]
-------------------------------------------------
--# use one of the default policies: override / collect
--_my.list.combination-policy=collect
--
--# or use your own custom CombinationPolicy to combine the values
--_my.list.combination-policy=com.mycomp.app.MyCombincationPolicy
-------------------------------------------------
--
--So declaring the +collect+ policy the resulting raw output of the entry looks 
as follows:
--
--[source, properties]
-------------------------------------------------
--# result when applying the collect policy:
--my.list=1,2,3,4,5,6
-------------------------------------------------
--
--The customizable policy mechanism of Tamaya Collections also honors the 
+item-separator+ meta-configuration
--parameter explained later in this document.
--
--
--=== Format of Collection Configuration
--
--By default collections are modelled as simple String values, that are 
tokenized into individual parts using a
--defined +item-separator+ (by default +','+). So a given configuration entry 
of +1,2,3+ is mapped to +"1","2","3".
--If the target context type is something different than String the smae 
conversion logic is used as when mapping
--configuration parameters directly to non-String target types (implemented as 
+PropertyConverter+ classes, manahed
--within the current +ConfigurationContext+. The procedure is identical for all 
collection types, including +Map+ types,
--with the difference that each token in the list is parsed once more for 
separating it into a +key+ and a +value+.
--The default separator for map entries hereby is +"::"+. Map keys, as of now, 
are always of type +String+, whereas
--for values the same logic is applied as for non-map collection types.
--
--[source, properties]
-------------------------------------------------
--# a list, using the default format
--list=1,2,3,4,5,6
--
--# a map, using the default format
--map=a::b, c::d
-------------------------------------------------
--
--
--==== Trimming of entries
--
--By default all tokens parsed are trimmed _before_ adding them to the final 
collection. In case of map entries this is
--also the case for key/value entries. So the following configuration results 
in the identical values for
--+list1,list2+ and +map1,map2+:
--
--[source, properties]
-------------------------------------------------
--# a list, using the default format
--list1=1,2,3,4,5,6
--list2=1, 2, 3, 4, 5, 6
--
--# a map, using the default format
--map1=a::b, c::d
--map2=a :: b, c :: d
-------------------------------------------------
--
--Nevertheless truncation can be controlled by the usage of brackets, e.g. the 
last list or map entry will have a single
--space character as value:
--
--[source, properties]
-------------------------------------------------
--# a list, with a ' ' value at the end
--list3=1, 2, 3, 4, 5, [ ]
--
--# a map, with a ' ' value for key '0'
--map3=1 :: a, 2 :: b, 0::[ ]
-------------------------------------------------
--
--Hereby +\[+ escapes the sequence.
--
--
--==== Customizing the format
--
--The item and entry separators (by default +','+ and +"::"+) can be customized 
by setting corresponding meta-data
--entries as follows, resulting in the same values as in the prevoius listing:
--
--[source, properties]
-------------------------------------------------
--# a list, with a ' ' value at the end
--list3=1__2__3__ 4__ 5__[ ]
--_list3.item-separator=__
--
--# a map, with a ' ' value for key '0'
--map3=1->a, 2->b, 0->[ ]
--_map3.map-entry-separator=->
-------------------------------------------------
--
--Of course these settings also can be combined:
--
--[source, properties]
-------------------------------------------------
--# a reformatted map
--redefined-map=0==none | 1==single | 2==any
--_redefined-map.map-entry-separator===
--_redefined-map.item-separator=|
-------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/1c033714/content/documentation-new/extensions/mod_consul.adoc
----------------------------------------------------------------------
diff --cc content/documentation-new/extensions/mod_consul.adoc
index 96c0b98,96c0b98..0000000
deleted file mode 100644,100644
--- a/content/documentation-new/extensions/mod_consul.adoc
+++ /dev/null
@@@ -1,66 -1,66 +1,0 @@@
--:jbake-type: page
--:jbake-status: published
--
--= Apache Tamaya - Extension: Integration with consul (Hashicorp)
--
--toc::[]
--
--
--[[Consul]]
--== Integration with consul (Extension Module)
--
--Tamaya _Consul_ is an extension module. Refer to the 
link:../extensions.html[extensions documentation] for further details.
--
--=== What functionality this module provides ?
--
--Tamaya _Consul_ provides different artifacts which allows use of
--link:http://www.consul.io[Consul from Hashicorp] as configuration backend. 
Basically the
--module supports read-only integration (as a +ConsulonfigSource+ as well
--as a writing configuration changes back (based on Tamaya's 
+MutableConfiguration+ API
--defined by the link:mod_mutable_config.html[tamaya-mutable-config] extension 
module.
--
--
--=== Compatibility
--
--The module is based on Java 8, so it will not run on Java 8 and beyond.
--
--
--=== Installation
--
--To use _tamaya-consul_ you only must add the corresponding dependency to your 
module:
--
--[source, xml]
-------------------------------------------------
--<dependency>
--  <groupId>org.apache.tamaya.ext</groupId>
--  <artifactId>tamaya-consul</artifactId>
--  <version>{tamaya_version}</version>
--</dependency>
-------------------------------------------------
--
--
--=== The Extensions Provided
--
--Consul integration comes basically with 2 artifacts:
--
--* The +org.apache.tamaya.etcd.ConsulConfigSource+ is a +ConfigSource+ with a 
default
--  ordinal of 100 and the name 'consul', which is automatically registered.
--* If the +tamaya-mutable-config+ module is loaded it is possible to write 
property values back into the consul cluster,
--  by accessing a +MutableConfiguration+ using the URI +config:consul+.
--
--Access of consul key/value pairs is through the normal Tamaya API.
--
--
--=== The ConsulConfigSource
--
--The +ConsulConfigSource+ is automatically registered and allows the consul 
servers to be used to be configured. This
--enables to use e.g. in Docker environments the docker environment 
configuration mechanisms to configure Tamaya running
--in microservice containers to connect with the according consul cluster:
--
--* The config source reads the +tamaya.consul.urls+ system and environment 
property to evaluate possible consul servers
--  (comma separated), which can be connected to. On failure the API just 
performs a Round-Robin through the list of
--  configured servers. Without any configuration +http://127.0.0.1:2400+ is 
used. If no connection to any consul
--  server can be established a warning will be logged, but deployment will not 
fail.
--* The +ConsulConfigSource+ 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`.

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/1c033714/content/documentation-new/extensions/mod_etcd.adoc
----------------------------------------------------------------------
diff --cc content/documentation-new/extensions/mod_etcd.adoc
index dac6ab7,dac6ab7..0000000
deleted file mode 100644,100644
--- a/content/documentation-new/extensions/mod_etcd.adoc
+++ /dev/null
@@@ -1,192 -1,192 +1,0 @@@
--:jbake-type: page
--:jbake-status: published
--
--= Apache Tamaya - Extension: Integration with etcd (Core OS)
--
--toc::[]
--
--
--[[Etcd]]
--== Integration with etcd (Extension Module)
--Tamaya _Etcd_ is an extension module. Refer to the 
link:../extensions.html[extensions documentation] for further details.
--
--=== What functionality this module provides ?
--
--Tamaya _Etcd_ provides different artifacts which allows using 
link:https://github.com/coreos/etcd[etcd] as a
--configuration backend. Basically the module adds a read-only property source 
(+EtcdConfigSource+). If
--the _tamaya-mutable-config_ extension is loaded it is alos possible to write 
configuration
--changes to _etcd_ using +MutableConfiguration+.
--
--
--=== Compatibility
--
--The module is based on Java 8, so it will not run on Java 8 and beyond.
--
--
--=== Installation
--
--To use _etcd_ as a configuration backend you only must add the corresponding 
dependency to
--your module:
--
--[source, xml]
-------------------------------------------------
--<dependency>
--  <groupId>org.apache.tamaya.ext</groupId>
--  <artifactId>tamaya-etcd</artifactId>
--  <version>{tamaya_version}</version>
--</dependency>
-------------------------------------------------
--
--
--=== The Extensions Provided
--
--Tamaya's _etcd_ integration provides basically the following artifacts:
--
--* The +org.apache.tamaya.etcd.EtcdAccessor+ can be configured with a an url 
targeting an etcd server's REST endpoint
--  root. The accessor basically provides a simple Java API for communicating 
with the _etcd_ server. The
--  accessor hereby allows reading of single properties, or whole subtrees. 
Also the basic non
--  atomic write methods are implemented.
--* The +org.apache.tamaya.etcd.EtcdConfigSource+ is a +ConfigSource+ with a 
default ordinal of 100 and the name
--  'etcd', which is automatically registered.
--* If the +tamaya-mutable-config+ module is loaded it is possible to write 
property values back into the etcd cluster,
--  by accessing a +MutableConfiguration+ using the URI +config:etcd+.
--
--=== The EtcdAccessor
--
--The accessor implements the basic read and write API for communicating with 
an _etcd_ server.
--Hereby the accessor also provides _etcd_ specific data such as +createdIndex, 
modifiedIndex, ttl+ in the +Map+
--returned. Hereby the concept of _etcd_ is used where keys starting with an 
'_' represent meta-configuration
--that will be hidden from the overall properties map, being only 
directly/explicitly accessible:
--
--[source, java]
-------------------------------------------------
--public class EtcdAccessor {
--
--    /**
--     * Creates a new instance with the basic access url.
--     * @param server server url, e.g. {@code http://127.0.0.1:4001}.
--     * @throws MalformedURLException
--     */
--    public EtcdAccessor(String server) throws MalformedURLException;
--
--    /**
--     * Get the etcd server version.
--     * @return the etcd server version, never null.
--     */
--    public String getVersion();
--
--    /**
--     * Ask etcd for s aingle key, value pair. Hereby the response returned 
from etcd:
--     * <pre>
--     *     key=value
--     *     _key.source=[etcd]http://127.0.0.1:4001
--     *     _key.createdIndex=12
--     *     _key.modifiedIndex=34    // optional
--     *     _key.ttl=300             // optional
--     *     _key.expiration=...      // optional
--     * </pre>
--     * @param key the requested key
--     * @return the mapped result, including meta-entries.
--     */
--    public Map<String,String> get(String key);
--
--    /**
--     * Creates/updates an entry in etcd without any ttl set.
--     * The response is as follows:
--     * <pre>
--     *     key=value
--     *     _key.source=[etcd]http://127.0.0.1:4001
--     *     _key.createdIndex=12
--     *     _key.modifiedIndex=34             // optional
--     *     _key.prevNode.createdIndex=12     // optional
--     *     _key.prevNode.modifiedIndex=34    // optional
--     * </pre>
--     * @param key the property key, not null
--     * @param value the value to be set
--     * @return the result map as described above.
--     */
--    public Map<String,String> set(String key, String value);
--
--    /**
--     * Creates/updates an entry in etcd. The response is as follows:
--     * <pre>
--     *     key=value
--     *     _key.source=[etcd]http://127.0.0.1:4001
--     *     _key.createdIndex=12
--     *     _key.modifiedIndex=34             // optional
--     *     _key.ttl=300                      // optional
--     *     _key.expiry=...                   // optional
--     *     _key.prevNode.createdIndex=12     // optional
--     *     _key.prevNode.modifiedIndex=34    // optional
--     *     _key.prevNode.ttl=300             // optional
--     *     _key.prevNode.expiration=...      // optional
--     * </pre>
--     * @param key the property key, not null
--     * @param value the value to be set
--     * @param ttlSeconds the ttl in seconds (optional)
--     * @return the result map as described above.
--     */
--    public Map<String,String> set(String key, String value, Integer 
ttlSeconds);
--
--
--    /**
--     * Deletes a given key. The response is as follows:
--     * <pre>
--     *     _key.source=[etcd]http://127.0.0.1:4001
--     *     _key.createdIndex=12
--     *     _key.modifiedIndex=34
--     *     _key.ttl=300                       // optional
--     *     _key.expiry=...                    // optional
--     *     _key.prevNode.createdIndex=12      // optional
--     *     _key.prevNode.modifiedIndex=34     // optional
--     *     _key.prevNode.ttl=300              // optional
--     *     _key.prevNode.expiration=...       // optional
--     *     _key.prevNode.value=...            // optional
--     * </pre>
--     * @param key the key to be deleted.
--     * @return the response mpas as described above.
--     */
--    public Map<String,String> delete(String key);
--
--
--    /**
--     * Access regular Tamaya properties map as follows:
--     * <pre>
--     *    key1=myvalue
--     *     _key1.source=[etcd]http://127.0.0.1:4001
--     *     _key1.createdIndex=12
--     *     _key1.modifiedIndex=34          // optional
--     *     _key1.ttl=300                   // optional
--     *     _key1.expiration=...            // optional
--     *
--     *      key2=myvaluexxx
--     *     _key2.source=[etcd]http://127.0.0.1:4001
--     *     _key2.createdIndex=12
--     *
--     *      key3=val3
--     *     _key3.source=[etcd]http://127.0.0.1:4001
--     *     _key3.createdIndex=12
--     *     _key3.modifiedIndex=2
--     * </pre>
--     */
--    public Map<String,String> getProperties(String directory, boolean 
recursive);
--
--}
-------------------------------------------------
--
--
--=== The EtcdConfigSource
--
--The +EtcdConfigSource+ is automatically registered and allows to configure 
the _etcd_ servers to be used. This
--enables to use e.g. in Docker environments the docker environment 
configuration mechanisms to configure Tamaya running
--in microservice containers to connect with the according etcd cluster:
--
--* The property source reads the +tamaya.etcd.server.urls+ system and 
environment property to evaluate possible etcd servers
--  (comma separated), which can be connected to. On error the API just 
performs a Round-Robin through the list of
--  configured servers. Without any configuration +http://127.0.0.1:4001+ is 
used. If no connection to any etcd
--  server can be established a warning will be logged, but deployment will not 
fail.
--* Additionally also the accessor allows to configure the socket/connection 
timeouts by setting
--  +tamaya.etcd.timeout+ in seconds either as system or environment property.
--* The +EtcdConfigSource+ 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`.

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/1c033714/content/documentation-new/extensions/mod_events.adoc
----------------------------------------------------------------------
diff --cc content/documentation-new/extensions/mod_events.adoc
index 9061d13,9061d13..0000000
deleted file mode 100644,100644
--- a/content/documentation-new/extensions/mod_events.adoc
+++ /dev/null
@@@ -1,308 -1,308 +1,0 @@@
--:jbake-type: page
--:jbake-status: published
--
--= Apache Tamaya - Extension: Events
--
--toc::[]
--
--
--[[Events]]
--== Tamaya Events (Extension Module)
--
--Tamaya _Events_ is an extension module. Refer to the 
link:../extensions.html[extensions documentation] for further details.
--
--=== What functionality this module provides ?
--
--Tamaya _Events_ provides a mechanism to publish and subscribe to 
+ConfigEvent<T>+ instances.
--This module implements +ConfigChange+ or +ConfigSourceChange+ as possible 
payloads, but
--the module itself is not constraint to this payload types.
--These payload types describe detected changes of key/values of a +Config+ or 
a +ConfigSource+.
--The extension also provides a _Singleton accessor_ which allows to 
register/unregister
--listeners for changes and the period, when configuration should be scanned for
--any changes.
--
--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.
--
--=== Compatibility
--
--The module is based on Java 8, so it can be used with Java 8 and beyond.
--
--=== Installation
--
--To benefit from configuration event support you only must add the 
corresponding dependency to your module:
--
--[source, xml]
-------------------------------------------------
--<dependency>
--  <groupId>org.apache.tamaya.ext</groupId>
--  <artifactId>tamaya-events</artifactId>
--  <version>{tamaya_version}</version>
--</dependency>
-------------------------------------------------
--
--
--=== Core Architecture
--
--The core of the module are the +ConfigEventListener+ and the +ConfigEvent+ 
interfaces,
--which defines an abstraction for event handling and observation:
--
--[source,java]
--.ConfigEvent
----------------------------------------------
--public interface ConfigEvent<T> {
--
--    Class<T> getResourceType();
--    T getResource();
--    String getVersion();
--    long getTimestamp();
--}
--
--@FunctionalInterface
--public interface ConfigEventListener {
--
--    void onConfigEvent(ConfigEvent<?> event);
--
--}
----------------------------------------------
--
--Hereby the payload _T_ can be basically of an arbitrary type as long as
--it implements the +ConfigEvent+ interface. The next sections
--give more details on the the event types provided by this extension
--and their usage.
--
--Also the technology to be used for publishing these event types is adaptable.
--In SE the module uses a simple in-memory implementation based on the
--Google _Guava_ library. But users can replace this mechanism as needed. For
--more details refer to the SPI section later in this guide.
--
--
--=== 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 {
--
--    private ConfigEventManager() {}
--
--    public static void addListener(ConfigEventListener l);
--    public static <T extends ConfigEvent> void 
addListener(ConfigEventListener l, Class<T> eventType);
--    public static void removeListener(ConfigEventListener l);
--    public static <T extends ConfigEvent> void 
removeListener(ConfigEventListener l, Class<T> eventType);
--    public static <T extends ConfigEvent>
--        Collection<? extends ConfigEventListener> getListeners();
--    public static <T extends ConfigEvent>
--        Collection<? extends ConfigEventListener> getListeners(Class<T> type);
--
--    public static <T> void fireEvent(ConfigEvent<?> event);
--    public static <T> void fireEventAsynch(ConfigEvent<?> event);
--
--    public static void enableChangeMonitoring(boolean enable);
--    public static boolean isChangeMonitoring();
--    public long getChangeMonitoringPeriod();
--    public void setChangeMonitoringPeriod(long millis);
--
--}
---------------------------------------------------------
--
--
--=== Modelling configuration changes as events
--
--This module provides a serializable and thread-safe abstraction modelling a
--configuration change, which is anything of the following
--
--* additional, _new_ configuration entries
--* _removed_ configuration entries
--* _changes_ on existing entries
--
--
--A collection of changes
--
--* on a +Config+ is modelled by the +ConfigChange+ class
--* on a +ConfigSource+ is modelled by the +ConfigSourceChange+ class
--
--
--==== Configuration Changes
--
--A set of changes on a +Config+ is described by a +ConfigChange+
--as follows:
--
--[source,java]
---------------------------------------------------------
--public final class ConfigChange implements ConfigEvent<Config>, Serializable{
--
--    public static ConfigChange emptyChangeSet(Config configuration);
--
--    @Override
--    public Config getResource();
--    @Override
--    public Class<Config> getResourceType();
--    @Override
--    public String getVersion();
--    @Override
--    public long getTimestamp();
--
--    // Event specific methods
--
--    public Collection<PropertyChangeEvent> getChanges();
--    public int getRemovedSize();
--    public int getAddedSize();
--    public int getUpdatedSize();
--
--    public boolean isKeyAffected(String key);
--    public boolean isRemoved(String key);
--    public boolean isAdded(String key);
--    public boolean isUpdated(String key);
--    public boolean containsKey(String key);
--    public boolean isEmpty();
--}
--
---------------------------------------------------------
--
--New instances of +ConfignChange+ hereby can be created using a
--fluent +ConfigChangeBuilder+:
--
--[source,java]
---------------------------------------------------------
--Config config = ...;
--ConfigChange change = ConfigChangeBuilder.of(config)
--  .addChange("MyKey", "newValue")
--  .removeKeys("myRemovedKey").build();
---------------------------------------------------------
--
--Also it is possible to directly compare 2 instances of +Config+,
--which results in a +ConfigChange+ that
--reflects the differences between the two configurations passed:
--
--[source,java]
--Comparing 2 configurations
---------------------------------------------------------
--Config config = ...;
--Config changedConfig = ...;
--ConfigChange change = ConfigChangeBuilder.of(config)
--  .addChanges(changedConfig).build();
---------------------------------------------------------
--
--So a +ConfigChange+ describes all the changes detected on a +Config+.
--This allows you to publish instances of this class as events to all registered
--listeners (observer pattern).
--For listening to +ConfigChange+ events you must implement the
--+ConfigEventListener+ functional interface:
--
--[source,java]
--.Implementing a ConfigChangeListener
---------------------------------------------------------
--public final class MyConfigChangeListener implements 
ConfigEventListener<ConfigChange>{
--
--  private Config config = ConfigProvider.getConfig();
--
--  public void onConfigEvent(ConfigEvent<?> event){
--     if(event.getResourceType()==Config.class){
--         if(event.getConfiguration()==config){
--           // do something
--         }
--     }
--  }
--
--}
---------------------------------------------------------
--
--You can *register* your implementation as illustrated below:
--
--. Manually by calling +ConfigEventManager.addListener(new 
MyConfigChangeListener())+
--. Automatically by registering your listener using the +ServiceLoader+ under
--  +META-INF/services/org.apache.tamaya.events.ConfigEventListener+
--
--Registering programmatically also allows you to define additional constraint,
--to filter out all kind of events you are not interested in.
--
--NOTE: By default detection of configuration changes is not enabled. To enable 
it, call
--+ConfigEventManager.enableChangeMonitoring(true)+.
--
--
--=== ConfigSource Changes
--
--Beside that a whole +Config+ changes, also a +ConfigSource+ can change,
--e.g. by a configuration file edited on the fly. This is similarly to a
--+ConfigChange+ reflected by the classes +ConfigSourceChange,
--ConfigSourceChangeBuilder+.
--
--
--==== Monitoring of configuration changes
--
--The +ConfigEventManager+ supports *active monitoring of the current 
configuration* to trigger corresponding change
--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 +Config+ for
--any kind of changes. If a change has been encountered Tamaya identifies it 
and triggers corresponding
--+ConfigChange+ events automatically.
--
--
--=== Freezing Configs and ConfigSources
--
--+Config+ instances as well as +ConfigSources+ are explicitly not required to 
be serializable. To enable easy
--serialization of these types a +Config+'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 +_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 +Config+ 
containing the
--  identifier of the configuration.
--
--In code freezing is a no-brainer:
--
--[source,java]
--.Freezing the current Config
----------------------------------------------------
--Config config = ConfigProvider.getConfig();
--Config frozenConfig = FrozenConfig.of(config);
----------------------------------------------------
--
--... and similarly for a +ConfigSource+:
--
--[source,java]
--.Freezing a ConfigSource
----------------------------------------------------
--ConfigSource configSource = ...;
--ConfigSource frozenSource = FrozenConfigSource.of(configSource);
----------------------------------------------------
--
--
--
--=== SPIs
--
--This component also defines SPIs, 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. By default implementations must be registered 
using the current +ServiceContext+
--active (by default using the Java +ServiceLoader+ mechanism).
--
--[source,java]
--.SPI: ConfigEventSpi
----------------------------------------------------
--public interface ConfigEventManagerSpi {
--
--        <T> void addListener(ConfigEventListener l);
--        <T extends ConfigEvent> void addListener(ConfigEventListener l, 
Class<T> eventType);
--        void removeListener(ConfigEventListener l);
--        <T extends ConfigEvent> void removeListener(ConfigEventListener l, 
Class<T> eventType);
--        Collection<? extends ConfigEventListener> getListeners();
--        Collection<? extends ConfigEventListener> getListeners(Class<? 
extends ConfigEvent> eventType);
--
--        void fireEvent(ConfigEvent<?> event);
--        void fireEventAsynch(ConfigEvent<?> event);
--
--        long getChangeMonitoringPeriod();
--        void setChangeMonitoringPeriod(long millis);
--        boolean isChangeMonitorActive();
--        void enableChangeMonitor(boolean enable);
--}
----------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/1c033714/content/documentation-new/extensions/mod_features.adoc
----------------------------------------------------------------------
diff --cc content/documentation-new/extensions/mod_features.adoc
index 454cf48,454cf48..0000000
deleted file mode 100644,100644
--- a/content/documentation-new/extensions/mod_features.adoc
+++ /dev/null
@@@ -1,87 -1,87 +1,0 @@@
--:jbake-type: page
--:jbake-status: published
--
--= Apache Tamaya - Extension: Features Check
--
--toc::[]
--
--
--[[Features]]
--== Tamaya Features Check (Extension Module)
--Tamaya _Features_ is an extension module. Refer to the 
link:../extensions.html[extensions documentation] for further details.
--
--=== What functionality this module provides ?
--
--Tamaya _Features_ provides a simple +Features+ singleton that allows to check
--which Tamaya Extensions are currently on the classpath.
--
--=== Compatibility
--
--The module is based on Java 8, so it will not run on Java 8 and beyond.
--
--
--=== Installation
--
--To use Tamaya _Features_ you only must add the corresponding dependency to
--your module:
--
--[source, xml]
-------------------------------------------------
--<dependency>
--  <groupId>org.apache.tamaya.ext</groupId>
--  <artifactId>tamaya-features</artifactId>
--  <version>{tamaya_version}</version>
--</dependency>
-------------------------------------------------
--
--
--=== The Functionality Provided
--
--Main artifact is the +Features+ singleton, which provides various static 
methods
--to check, which Tamaya extensions are currently loaded.
--
--[source, java]
-------------------------------------------------
--public final class Features {
--
--    private Features(){}
--
--    public static boolean eventsAvailable();
--    public static boolean formatsAvailable();
--    public static boolean tamayaCoreAvailable();
--    public static boolean injectionAvailable();
--    public static boolean injectionCDIAvailable();
--    public static boolean mutableConfigAvailable();
--    public static boolean optionalAvailable();
--    public static boolean resolverAvailable();
--    public static boolean resourcesAvailable();
--    public static boolean spiSupportAvailable();
--    public static boolean filterSupportAvailable();
--    public static boolean springAvailable();
--    public static boolean jndiAvailable();
--
--    public static boolean extSpringCoreAvailable();
--    public static boolean extJndiAvailable();
--    public static boolean extOSGIAvailable();
--
--    public static boolean checkClassIsLoadable(String classname);
--}
-------------------------------------------------
--
--* +eventsAvailable();+ checks for the link:mod_events.html[_tamaya_events_] 
module.
--* +formatsAvailable();+ checks for the 
link:mod_formats.html[_tamaya_formats_] module.
--* +tamayaCoreAvailable();+ checks if the link:core.html[_Tamaya core_] 
implementation is loaded.
--* +injectionAvailable();+ checks for the 
link:mod_injection.html[_tamaya_injection_] SE module.
--* +injectionCDIAvailable();+ checks for the link:mod_cdi.html[_tamaya CDI_] 
modules.
--* +mutableConfigAvailable();+ checks for the 
link:mod_mutableconfig.html[_tamaya_mutableconfig_] module.
--* +optionalAvailable();+ checks for the 
link:mod_optional.html[_tamaya_optional_] module.
--* +resolverAvailable();+ checks for the 
link:mod_resolver.html[_tamaya_resolver_] module.
--* +resourcesAvailable();+ checks for the 
link:mod_reources.html[_tamaya_resources_] module.
--* +spiSupportAvailable();+ checks for the 
link:mod_spisupport.html[_tamaya_spisupport_] module.
--* +filterSupportAvailable();+ checks for the 
link:mod_filter.html[_tamaya_filter_] module.
--* +springAvailable();+ checks for the link:mod_spring.html[_tamaya_spring_] 
module.
--* +jndiAvailable();+ checks for the link:mod_jndi.html[_tamaya_jndi_] module.
--* +extJndiAvailable();+ checks if creation of a new `InitialContext` is 
successful.
--* +extSpringCoreAvailable();+ checks if Spring Core is on the classpath.
--* +extOSGIAvailable();+ checks the OSGI framework is on the classpath.
--* Finally +checkClassIsLoaded(String)+ tries to load a class. If it fails, 
`false` is returned.

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/1c033714/content/documentation-new/extensions/mod_filter.adoc
----------------------------------------------------------------------
diff --cc content/documentation-new/extensions/mod_filter.adoc
index 8de64d8,8de64d8..0000000
deleted file mode 100644,100644
--- a/content/documentation-new/extensions/mod_filter.adoc
+++ /dev/null
@@@ -1,117 -1,117 +1,0 @@@
--:jbake-type: page
--:jbake-status: published
--
--= Apache Tamaya - Extension: User Filtering
--
--toc::[]
--
--
--[[Filter]]
--== User Filtering (Extension Module)
--
--Tamaya _Filter_ is an extension module. Refer to the 
link:../extensions.html[extensions documentation] for further details.
--
--
--=== What functionality this module provides ?
--
--Tamaya _Filter_ provides a simple singleton accessor that allows to 
explicitly add +Filter+ instances
--active on the current thread only. This can be very useful in many scenarios, 
especially within
--Java EE web filters or similar. Additionally this module adds
--standard filters that hide metadata entries when the full configuration map 
is accessed. When keys are accessed
--explicitily no filtering is applied and everything is visible.
--
--=== Compatibility
--
--The module is based on Java 8, so it will not run on Java 8 and beyond.
--
--
--=== Installation
--
--To benefit from filter support you only must add the corresponding dependency 
to your module:
--
--[source, xml]
-------------------------------------------------
--<dependency>
--  <groupId>org.apache.tamaya.ext</groupId>
--  <artifactId>tamaya-filter</artifactId>
--  <version>{tamaya_version}</version>
--</dependency>
-------------------------------------------------
--
--
--=== The Extensions Provided
--
--Tamaya Filter comes basically with 3 artifacts:
--
--* The +org.apache.tamaya.filter.ConfigurationFilter+ provides several static 
methods to register +Filter+
--instances on the current thread:
--
--[source, java]
-------------------------------------------------
--public final class ConfigurationFilter implements Filter{
--
--    ...
--
--    /**
--     * Seactivates metadata filtering also on global map access for this 
thread.
--     * @see #clearFilters()
--     * @param active true,to enable metadata filtering (default).
--     */
--    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 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 FilterContext getMapFilters();
--
--    /**
--     * Removes all programmable filters active on the current thread.
--     */
--    public static void clearFilters();
--
--    ...
--
--}
-------------------------------------------------
--
--For using regular expression when filtering configuration keys a 
corresponding implementation of a +PropertyFilter+
--is part of this module, So you can add a customized filter as follows:
--
--[source, java]
-------------------------------------------------
--try {
--    ConfigurationFilter.getMapFilters().addFilter(new myFilter());
--
--    // do your code with filtering active
--}
--finally {
--    // cleanup
--    ConfigurationFilter.clearFilters();
--}
-------------------------------------------------
--
--
--The +FilterChain+ is a simple compound structure combining multiple filters 
into one new (chained) filter:
--
--[source, java]
-------------------------------------------------
--public final class FilterChain implements Filter {
--
--    public void addFilter(Filter filter);
--    public void addFilter(int pos, Filter filter);
--    public Filter removeFilter(int pos);
--    public void clearFilters();
--    public void setFilters(Filter... filters);
--    public void setFilters(Collection<Filter> filters);
--    public List<Filter> getFilters();
--
--}
-------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/1c033714/content/documentation-new/extensions/mod_formats.adoc
----------------------------------------------------------------------
diff --cc content/documentation-new/extensions/mod_formats.adoc
index fa7b1a5,fa7b1a5..0000000
deleted file mode 100644,100644
--- a/content/documentation-new/extensions/mod_formats.adoc
+++ /dev/null
@@@ -1,290 -1,290 +1,0 @@@
--:jbake-type: page
--:jbake-status: published
--
--= Apache Tamaya - Extension: Formats
--
--toc::[]
--
--
--[[Formats]]
--== Tamaya Formats (Extension Module)
--
--Tamaya _Formats_ is an extension module. Refer to the 
link:../extensions.html[extensions documentation] for further details.
--
--
--=== What functionality this module provides ?
--
--Tamaya _Formats_ provides an abstraction for configuration formats provding 
the following benefits:
--
--* Parsing of resources in can be implemented separately from interpreting the 
different aspects/parts parsed. As an
--  example a file format can define different sections. Depending on the 
company specific semantics of the sections
--  a different set of +ConfigSource+ instances must be created.
--* Similarly the configuration abstraction can also be used as an interface 
for integrating Tamaya with alternate
--  frameworks that provide logic for reading configuration files, such as 
Apache commons.configuration.
--
--=== Compatibility
--
--The module is based on Java 7, so it can be used with Java 7 and beyond.
--
--=== Installation
--
--To use the formats module you only must add the corresponding dependency to 
your module:
--
--[source, xml]
-------------------------------------------------
--<dependency>
--  <groupId>org.apache.tamaya.ext</groupId>
--  <artifactId>tamaya-formats</artifactId>
--  <version>{tamaya_version}</version>
--</dependency>
-------------------------------------------------
--
--
--=== Basic Concept
--
--Formats should be reusable, meaning you should have to write a format parser 
only once and then be able to map the data read into whatever
--data structure (in our cases: property sources). So it is useful to separate 
concerns into
--
--* an arbitrary configuration format (textual or binary)
--* a parser (+ConfigurationFormat+) that transfers a given format into an 
intermediate
--  representation (+ConfigurationData+).
--* an optional customization, implemented by a _factory method pattern_ to 
adapt the mapping of +ConfigurationData+ read
--  to a collection of +ConfigSources+ (they can have different ordinal 
semantics).
--
--
--==== ConfigurationData
--
--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+:
--
--[source,java]
--.ConfigurationData
---------------------------------------------------------
--public final class ConfigurationData {
--
--    public ConfigurationFormat getFormat();
--    public String getResource();
--
--    public Set<String> getSectionNames();
--    public Map<String,String> getSection(String name);
--
--    public boolean hasDefaultProperties();
--    public Map<String,String> getDefaultProperties();
--    public Map<String,String> getCombinedProperties();
--
--    public boolean isEmpty();
--}
---------------------------------------------------------
--
--In detail the data read from a file is organized into _sections_ as follows:
--
--* with +getResource()+ and +getFormat()+ the underlying resource and the 
format that read this data can be accessed.
--* properties can be owned by
--  ** named sections
--  ** an (unnamed) default section
--* each section section contains a map of properties. Hereby the same key can 
be part of the default section and multiple
--  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. 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 '::' 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.
--
--
--==== ConfigurationFormat
--
--A ConfigurationFormat is basically an abstraction that reads a configuration 
resource (modelled by an InputStream) and
--creates a corresponding +ConfigurationData+ instance.
--
--[source,java]
---------------------------------------------------------
--public interface ConfigurationFormat {
--
--    String getName();
--    boolean accepts(URL url);
--    ConfigurationData readConfiguration(String resource, InputStream 
inputStream);
--}
---------------------------------------------------------
--
--=== Creating a default ConfigSource for a ConfigurationFormat
--
--The module defines a singleton +ConfigurationFormats+ which provides
--an easy to use API for creating +ConfigurationData+ and +ConfigSources+
--using abstract +ConfigurationFormat+ implementations:
--
--[source,java]
---------------------------------------------------------
--public final class ConfigurationFormats {
--
--    public static List<ConfigurationFormat> getFormats();
--    public static List<ConfigurationFormat> getFormats(String... formatNames);
--    public static List<ConfigurationFormat> getFormats(final URL url);
--
--    public static ConfigurationData readConfigurationData(final URL url)
--    throws IOException;
--    public static ConfigurationData readConfigurationData(URL url, 
ConfigurationFormat... formats)
--    throws IOException;
--    public static ConfigurationData readConfigurationData(URL url, 
Collection<ConfigurationFormat> formats)
--    throws IOException;
--    public static Collection<ConfigurationData> 
readConfigurationData(Collection<URL> urls, ConfigurationFormat... formats);
--    public static Collection<ConfigurationData> 
readConfigurationData(Collection<URL> urls, Collection<ConfigurationFormat> 
formats);
--    public static ConfigurationData readConfigurationData(String resource, 
InputStream inputStream,
--                                                          
ConfigurationFormat... formats)
--    throws IOException;
--    public static ConfigurationData readConfigurationData(String resource, 
InputStream inputStream,
--                                                          
Collection<ConfigurationFormat> formats)
--    throws IOException;
--
--    public static ConfigSource createConfigSource(URL url, 
ConfigurationFormat... formats)
--    throws IOException;
--    public static ConfigSource createConfigSource(URL url, 
Collection<ConfigurationFormat> formats)
--    throws IOException;
--    public static ConfigSource createConfigSource(String resource, 
InputStream inputStream,
--                                                      ConfigurationFormat... 
formats);
--    public static ConfigSource createConfigSource(String resource, 
InputStream inputStream,
--                                                       
Collection<ConfigurationFormat> formats);
--}
---------------------------------------------------------
--
--* +getFormats()+ returns all registered formats.
--* +getFormats(String...)+ allows to access all formats with a given name.
--* +getFormats(URL url)+ allows to access all formats that declare that can 
optionally read an input from
--  a given `URL`.
--* +readConfigurationData(...)+ reads data from an input and creates a 
corresponding +ConfigurationData+,
--  either trying all known formats that declare its compatibility with the 
given input or the formats
--  passed explicitly.
--* +createConfigSource(...)+ allows to create a +ConfigSource+ reading a given 
input and the formats
--  to be used or known. Hereby a default property mapping is applied.
--
--So creating a +ConfigSource+ from a resource is basically a one liner:
--
--[source,java]
---------------------------------------------------------
--URL url = ...;
--ConfigSource configSource = ConfigurationFormats.createConfigSource(url);
--
--// constraining the formats to be used (assumption: json and yaml extensions 
are loaded)
--ConfigSource configSource = ConfigurationFormats.createConfigSource(
--                                    url,
--                                    ConfigurationFormats.getFormats("json", 
"yaml"));
---------------------------------------------------------
--
--
--=== Customize how ConfigurationData maps to ConfigSource
--
--For for the conversion of +ConfigurationData+ into a +ConfigSource+ 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 +MappedConfigurationDataConfigSource+
--  and overriding the +Map<String,String> populateData(ConfigurationData 
data)+ method.
--
--In most cases the usage of a +MappedConfigurationDataConfigSource+, is a good 
choice to start. This class
--provides a convenient default mapping and also allows to customized the 
mapping easily:
--
--[source,java]
---------------------------------------------------------
--ConfigurationData data = ...;
--MappedConfigurationDataConfigSource ps =
--  new MappedConfigurationDataConfigSource(data){
--    protected Map<String, String> populateData(ConfigurationData 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 +ConfigSource+ instances must be implemented.
--
--For this scenario the +BaseFormatConfigSourceProvider+ can be used, defining 
the following mapping
--function that mus be implemented:
--
--[source,java]
---------------------------------------------------------
--/**
-- * Method to create a {@link org.apache.tamaya.spi.ConfigSource} based on the 
given entries read.
-- *
-- * @param data the configuration data, not null.
-- * @return the {@link org.apache.tamaya.spi.ConfigSource} instance ready to 
be registered.
-- */
--protected abstract Collection<ConfigSource> 
getConfigSources(ConfigurationData data);
---------------------------------------------------------
--
--When using Java 8 these mappings can be asily passed as parameters to the 
+createConfigSource+
--methods.
--
--
--=== Predefined formats
--
--The _formats_ module ships with 3 predefined formats:
--
--* `.ini` files, commonly known from Microsoft based systems, registered as 
`ini`.
--* `.properties` files, as defined by `java.util.Properties`, registered as 
`properties`.
--* `.xml` properties files, as defined by `java.util.Properties`, registered 
as `xml-properties`.
--
--
--==== ini Config File Mapping
--
--This module implements the ini file format with the class
--+org.apache.tamaya.format.formats.IniConfigurationFormat+.
--
--The default mapping is bext illustrated by a small example, so consider the
--following `.ini` file:
--
--[source,listing]
---------------------------------------------------------
--a=valA
--a.b=valB
--
--[section1]
--aa=sectionValA
--aa.b.c=SectionValC
--
--[section2]
--a=val2Section2
---------------------------------------------------------
--
--This file content by default is mapped to the following Tamaya properties:
--
--[source,listing]
---------------------------------------------------------
--a=valA
--a.b=valB
--section1::valA=sectionValA
--section1::a.b.c=SectionValC
--section2::a=val2Section2
---------------------------------------------------------
--
--Summarizing
--
--* entries without a section are mapped to the _default_ section.
--* entries with a section are mapped to a corresponding section, hereby 
everything between
--  the brackets is used as section name (trimmed).
--* section names are separated using a double colon (`::`).
--
--+ConfigurationData+ allows to access all the different parts:
--
--* the _default_ properties (a, a.b)
--* the section +section1+, with properties +aa, aa.b.c+
--* the section +section2+, with properties +a+
--
--
--==== XML Property and ordinary Property Files
--
--This module also ships with +ConfigurationFormat+ implementations that reuse 
the parsing
--functionality provided with +java.util.Properties+:
--
--* `org.apache.tamaya.format.formats.PropertiesFormat` uses 
`Properties.read(InputStream)`.
--* `org.apache.tamaya.format.formats.PropertiesXmlFormat` uses 
`Properties.readFromXml(InputStream)`.

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/1c033714/content/documentation-new/extensions/mod_functions.adoc
----------------------------------------------------------------------
diff --cc content/documentation-new/extensions/mod_functions.adoc
index bd52219,bd52219..0000000
deleted file mode 100644,100644
--- a/content/documentation-new/extensions/mod_functions.adoc
+++ /dev/null
@@@ -1,136 -1,136 +1,0 @@@
--:jbake-type: page
--:jbake-status: published
--
--= Apache Tamaya - Extension: Functions
--
--toc::[]
--
--[[Functions]]
--== Tamaya Functions (Extension Module)
--
--Tamaya _Functions_ is an extension module. Refer to the 
link:../extensions.html[extensions documentation] for further details.
--
--
--=== What functionality this module provides ?
--
--Tamaya _Functions_ provides several functional extensions using the 
+UnaryOperator<Config>,Function<Config, T>+ extension
--points. Most functional extension are accessible from the 
+ConfigurationFunctions+ singleton. Since the JSR API
--does not provide any functional extension points it is recommended to adapt 
the +Config+ instance into .+FunctionalConfig+.
--Then, when importing the functional methods statically they can very easily 
applied, e.g.
--
--[source,java]
---------------------------------------------------------------------
--import static org.apache.tamaya.functions.ConfigurationFunctions.*;
--
--FunctionalConfig fc = FunctionalConfig.of(ConfigProvider.getConfig());
--Set<String> sections = fc.with(areas("a", false).with(transitiveAreas());
---------------------------------------------------------------------
--
--The expression above returns all fully qualified section names that are child 
sections of the root section 'a'.
--So given the entries +a.b.entry1, a.b.entry2, a.a.entry3, a.b.c.entry4+ the 
reult would be +a, a.a, a.b, a.b.c+.
--
--=== Compatibility
--
--The module is based on Java 8, so it can be used with Java 8 and beyond.
--
--=== Installation
--
--For using the functionality shown in this document you only must add the 
corresponding dependency to your module:
--
--[source, xml]
-------------------------------------------------
--<dependency>
--  <groupId>org.apache.tamaya.ext</groupId>
--  <artifactId>tamaya-functions</artifactId>
--  <version>{tamaya_version}</version>
--</dependency>
-------------------------------------------------
--
--
--=== FunctionalConfig
--
--The +FunctionalConfig+ actually adds the functional extension points +with+ 
and +query+ to .+Config+ instance, which
--allow to chain expressions as seen in the introductionary snippet:
--
--[source, java]
-------------------------------------------------
--public interface FunctionalConfig extends Config, ConfigContextSupplier {
--
--    /**
--     * Enriches a {@link Config} instance with functional access points.
--     * @param config the config, not null
--     * @return a functional config instance.
--     */
--    static FunctionalConfig of(Config config){
--        ...
--    }
--
--    default FunctionalConfig with(UnaryOperator<Config> operator);
--    default <T> T query(Function<Config, T> query);
--}
-------------------------------------------------
--
--
--=== The Provided Functions
--
--==== Functions on +ConfigurationFunctions+
--
--The following sections explain the provided functions defined by 
+ConfigurationFunctions+ singleton.
--
--* *UnaryOperator<Config> filter(PropertyMatcher matcher)* creates a 
+UnaryOperator<Config>+ that creates a +Configuration+
--  containing only keys that are selected by the given _matcher predicate_. 
The +PropertyMatcher+ hereby allows to evaluate not only
--  the _key_, but also the _value_.
--* *UnaryOperator<Config> map(KeyMapper keyMapper)* creates a 
+UnaryOperator<Config>+ that maps the keys as defined
--  by the given _keyMapper_.
--* *UnaryOperator<Config> section(String section)* creates  a 
+UnaryOperator<Config>+ that creates a +Configuration+ containing only
--  entries that are direct or indirect members of the given section.
--* *UnaryOperator<Config> section(String areaKey, boolean stripKeys)* creates  
a +UnaryOperator<Config>+ that creates a +Configuration+
--  containing only entries that are direct or indirect members of the given 
section. Hereby _stripKeys_ allows to determine
--  if the returned entries should be relative to the search criteria 
{{stripKeys=true}} or absolute keys.
--* *isKeyInSection(String section, String sectionKey)* allows to easily 
determine if a given _key_ is a direct or indirect member
--  of a given section.
--* *boolean isKeyInSections(String key, String... sectionKeys)* allows to 
easily determine if one key of given
--  _key_ is a direct or indirect member of at least one of the given 
_sectionKeys_.
--* *Function<Config,Set<String>> sections()* allows to query all the contained 
fully qualified section names (the ones that
--  also have parameters present).
--* *Function<Config,Set<String>> transitiveSections()* allows to query all the 
contained fully qualified section names,
--  including the transitive closure of sections.
--* *Function<Config,Set<String>> sections(final Predicate<String> predicate)* 
allows to query all the contained fully
--  qualified section names that are selected by the given _predicate_.
--* *Function<Config,Set<String>> sections(final Predicate<String> predicate)* 
allows to query all the contained fully
--  qualified section names that are selected by the given _predicate_, 
including the transitive closure of sections
--  identified.
--* *UnaryOperator<Config> sectionsRecursive(String... sectionKeys)* provides a 
+UnaryOperator<Config>+ that filters all sections identified
--  by the given _sectionKeys_ and its child sections.
--* *UnaryOperator<Config> sectionRecursive(final boolean stripKeys, final 
String... sectionKeys)* provides a +UnaryOperator<Config>+
--  that filters all sections identified by the given _sectionKeys_ and its 
child sections. _stripKeys_ allows to
--  determine if the resulting configuration should be relative to the selected 
areas ({{stripKeys=true}}) or
--  absolute (filtering only).
--* *Function<Config,String> jsonInfo()* returns a query that converts a 
+Configuration+ into a JSON formatted +String+
--  representation.
--
--
--==== Functions on +ConfigSourceFunctions+
--
--The following sections explain the provided functions defined by 
+ConfigSourceFunctions+ singleton.
--
--* *ConfigSource addMetaData(ConfigSource propertySource, Map<String,String> 
metaData)* Creates a new +ConfigSource+
--  with the given metadata added.
--* *boolean isKeyInSection(String key, String sectionKey)* Checks if the given 
_key_ is a direct or indirect member of
--  one of the given _sectionKey_.
--* *boolean isKeyInSections(String key, String... sectionKeys)* Checks if the 
given _key_ is a direct or indirect member of
--   one of one of the given _sectionKeys_.
--* *Set<String> sections(Map<String, String> properties)* Extracts the 
sections from the given properties.
--* *Set<String> transitiveSections(Map<String, String> properties)* Extracts 
the transitive sections from the given
--  properties.
--* *Set<String> sections(Map<String, String> properties, final 
Predicate<String> predicate)* Extracts the sections
--  from the given properties, also filtering with the given predicate.
--* *Set<String> transitiveSections(Map<String, String> properties, 
Predicate<String> predicate)* Extracts the transitive
--  sections from the given properties, also filtering with the given predicate.
--* *Map<String,String> sectionsRecursive(Map<String, String> properties, 
String... sectionKeys)* Creates w +ConfigSource+
--  only containing the sections that a direct or indirect children of the 
given _sectionKeys_.
--* *Map<String,String> sectionRecursive(Map<String, String> properties, 
boolean stripKeys, String... sectionKeys)* Creates w +ConfigSource+
--  only containing the sections that a direct or indirect children of the 
given _sectionKeys_. With _stripKeys_ one can
--  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/1c033714/content/documentation-new/extensions/mod_hazelcast.adoc
----------------------------------------------------------------------
diff --cc content/documentation-new/extensions/mod_hazelcast.adoc
index e17aad6,e17aad6..0000000
deleted file mode 100644,100644
--- a/content/documentation-new/extensions/mod_hazelcast.adoc
+++ /dev/null
@@@ -1,118 -1,118 +1,0 @@@
--:jbake-type: page
--:jbake-status: published
--
--= Apache Tamaya - Extension: Integration with Hazelcast
--
--toc::[]
--
--
--[[Consul]]
--== Integration with Hazelcast (Extension Module)
--
--Tamaya _Hazelcast_ is an extension module. Refer to the 
link:../extensions.html[extensions documentation] for further details.
--
--
--=== What functionality this module provides ?
--
--Tamaya _Hazelcast_ provides a property source which uses
--link:http://www.hazelcast.org[Hazelcast] as configuration backend. Hereby the
--module supports read-only integration (as a +HazelcastConfigSource+ as well
--as a writing configuration changes back (based on Tamaya's 
+MutableConfiguration+ API
--defined by the link:mod_mutable_config.html[tamaya-mutable-config] extension 
module.
--
--
--=== Compatibility
--
--The module is based on Java 8, so it will not run on Java 8 and beyond.
--
--
--=== Installation
--
--To use _tamaya-hazelcast_ you only must add the corresponding dependency to 
your module:
--
--[source, xml]
-------------------------------------------------
--<dependency>
--  <groupId>org.apache.tamaya.ext</groupId>
--  <artifactId>tamaya-hazelcast</artifactId>
--  <version>{tamaya_version}</version>
--</dependency>
-------------------------------------------------
--
--
--=== The Extensions Provided
--
--Hazelcast integration comes basically with 2 artifacts:
--
--* The +org.apache.tamaya.hazelcast.HazelcastConfigSource+ is a 
+ConfigSource+. The property source is not automatically
--  registered. Either register it using the _ServiceLoader_ yourself or 
implement
--  and register a corresponding `ConfigSourceProvider`.
--* If the +tamaya-mutable-config+ module is loaded it is possible to write 
property values back into the consul cluster,
--  by accessing a +MutableConfiguration+ using the URI +config:hazelcast+.
--
--Access of consul key/value pairs is through the normal Tamaya API.
--
--
--=== The HazelcastConfigSource
--
--The +HazelcastConfigSource+ is not automatically registered and provides 
different options how to integrate
--Tamaya with Hazelcast.
--
--[source, java]
-------------------------------------------------
--/**
-- * Creates a new instance, hereby using {@code "Hazelcast"} as property 
source name and
-- * a default hazelcast backend created by calling {@link 
Hazelcast#newHazelcastInstance()}.
-- */
--public HazelcastConfigSource();
--
--/**
-- * Creates a new instance, hereby using {@code "Hazelcast"} as property 
source name and the
-- * given hazelcast instance.
-- * @param hazelcastInstance the hazelcast instance, not null.
-- */
--public HazelcastConfigSource(HazelcastInstance hazelcastInstance);
--
--/**
-- * Creates a new instance, hereby using the given property source name and
-- * a default hazelcast backend created by calling {@link 
Hazelcast#newHazelcastInstance()}.
-- * @param name the property source name, not null.
-- */
--public HazelcastConfigSource(String name);
--
--/**
-- * Creates a new instance, hereby using the given property source name and
-- * a creating a new hazelcast backend using the given Hazelcast {@link 
Config}.
-- * @param config the hazelcast config, not null.
-- * @param name the property source name, not null.
-- */
--public HazelcastConfigSource(String name, Config config);
--
--/**
-- * Creates a new instance, hereby using the given property source name and the
-- * hazelcast instance.
-- * @param name
-- * @param hazelcastInstance
-- */
--public HazelcastConfigSource(String name, HazelcastInstance 
hazelcastInstance);
-------------------------------------------------
--
--To use hazelcast as a configuration backend, you simply create the 
corresponding Hazelcast instance
--and use it to initialize the Tamaya property source. Given that a hazelcast 
backedn configuration
--can be easily created asillustrated below:
--
--[source, java]
-------------------------------------------------
--// define config settings
--HazelcastInstance hazelcastInstance = Hazelcast.newInstance(hazelcastConfig);
--HazelcastConfigSource cs = new HazelcastConfigSource(hazelcastInstance);
--cs.setName("myHazelcast-config");
--cs.setOrdinal(2000);
--// Build your own configuration
--ConfigBuilder b = ConfigProviderResolver.getInstance().getBuilder();
--b.addDiscoveredConverters().addDefaultSources().addDiscoveredSources();
--// Add the hazelcast property source (as most significant)
--b.awithSource(cs);
--// build and use the configuration
--Config config = b.build();
-------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/1c033714/content/documentation-new/extensions/mod_injection.adoc
----------------------------------------------------------------------
diff --cc content/documentation-new/extensions/mod_injection.adoc
index 831e098,831e098..0000000
deleted file mode 100644,100644
--- a/content/documentation-new/extensions/mod_injection.adoc
+++ /dev/null
@@@ -1,481 -1,481 +1,0 @@@
--:jbake-type: page
--:jbake-status: published
--
--= Apache Tamaya - Extension: Injection
--
--toc::[]
--
--
--[[Injection]]
--== Tamaya Injection (Extension Module)
--
--Tamaya _Injection_ is an extension module. Refer to the 
link:../extensions.html[extensions documentation] for further details.
--
--=== What functionality this module provides ?
--
--Tamaya _Injection_ provides functionality for injecting configured values 
into beans, or creating configuration
--template instances.
--
--Inversion of Control (aka IoC/Hollywood Principle) has proven to be very 
useful and effective in avoiding boilerplate
--code. In Java there are different frameworks available that all provide IoC 
mechanisms. Unfortunately IoC is not a
--built-in language feature. So for a portable solution that works also in Java 
SE Tamaya itself has to provide the
--according injection services. This module adds this functionality to Tamaya.
--
--=== Compatibility
--
--The module is based on Java 8, so it can be used with Java 8 and beyond.
--
--=== Installation
--
--The basic injection API is defined by the configuration JSRßs API. 
Nevertheless Tamaya's adds some
--useful extensions. These extensions are deployed as optional API artifact:
--
--[source, xml]
-------------------------------------------------
--<dependency>
--  <groupId>org.apache.tamaya.ext</groupId>
--  <artifactId>tamaya-injection-api</artifactId>
--  <version>{tamaya_version}</version>
--</dependency>
-------------------------------------------------
--
--To use injection with Java SE you must add the corresponding dependency to 
your module:
--
--[source, xml]
-------------------------------------------------
--<dependency>
--  <groupId>org.apache.tamaya.ext</groupId>
--  <artifactId>tamaya-injection</artifactId>
--  <version>{tamaya_version}</version>
--</dependency>
-------------------------------------------------
--
--Similarly there are other injection implementations available, targetig 
platforms such as
--
--* link:mod_spring.html[Spring, Spring Boot]
--* link:mod_CDI.html[Java EE/CDI]
--
--
--=== Core Concepts
--
--Basically you annotate fields or methods in your beans with +@ConfigProperty+ 
to enable configuration injection. Tamaya
--additionally defines further annotations that allo you to define additional 
aspects such as default values, custom
--converters etc. The following example illustrates the basic functionality:
--code snippet:
--
--[source,java]
--.Annotated Example Class
----------------------------------------------
--package foo.bar;
--
--public class ConfiguredClass {
--
--    // resolved by default, using property name, class and package name: 
foo.bar.ConfiguredClass.testProperty
--    private String testProperty;
--
--    // Trying to resolve mutiple keys, with a default value, if none could be 
resolved
--    @ConfigProperty(key="a.b.c.key1", defaultValue="The current 
\\${JAVA_HOME} env property is ${env:JAVA_HOME}.")
--    @ConfigFaööbackKeys({"a.b.legacyKey",area1.key2"})
--    String value1;
--
--    // Typical case
--    @ConfigProperty(key="a.b.c.key2")
--    private int value2;
--
--    // resolved by default as foo.bar.ConfiguredClass.accessUrl
--    // Using a (default) String -> URL converter
--    @ConfigProperty(defaultValue="http://127.0.0.1:8080/res/api/v1/info.json";)
--    private URL accessUrl;
--
--    // Config injection disabled for this property
--    @NoConfig
--    private Integer int1;
--
--    // Overriding the String -> BigDecimal converter with a custom 
implementation.
--    @ConfigProperty(key="BD")
--    @WithConverter(MyBigDecimalRoundingAdapter.class)
--    private BigDecimal bigNumber;
--
--    ...
--}
----------------------------------------------
--
--
--When configuring data or configuration classes it is also possible to 
auto-inject the fields identified. For activating
--this feature a class must be annotated with +@ConfigAutoDetect+:
--
--[source, java]
--.An autoinjected bean class
----------------------------------------------
--package a.b;
--
--@ConfigAutoDetect
--public final class Tenant {
--  private int id;
--  private String name;
--  private String description;
--  @NoConfig // prevents auto detection for this field
--  private String id2;
--
--  public int getId(){
--    return id;
--  }
--  public String getName(){
--    return name;
--  }
--  public String getDescription(){
--    return description;
--  }
--}
----------------------------------------------
--
--These examples do not show all possibilities provided. Configuring instance 
of these
--class using Tamaya is very simple: Just pass the instance to Tamaya to let
--Tamaya inject the configuration:
--
--[source,java]
--.Configuring the +ConfiguredClass+ Instance
----------------------------------------------
--ConfiguredClass classInstance = new ConfiguredClass();
--ConfigurationInjector.configure(configuredClass);
--
--Tenant tenant = new Tenant();
--ConfigurationInjector.configure(tenant);
----------------------------------------------
--
--NOTE: Configuration injection works similarly, when used with other 
integration modules, e.g. when Tamaya is used
--with CDI, Spring or within an OSGI container. For further details refer also 
to the corresponding integration module's
--documentation.
--
--
--==== The ConfigurationInjector
--
--The +ConfigurationInjector+ interface provides methods that allow any kind of 
instances to be configured
--by passing the instances to +T 
ConfigurationInjector.getInstance().configure(T);+. The classes passed
--hereby must not be annotated with +@ConfigProperty+ for being configurable.
--
--
--==== 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]
----------------------------------------------
--Supplier<Tenant> configuredTenantSupplier = 
ConfigurationInjector.getInstance().getConfiguredSupplier(
--  new Supplier<Tenant>(){
--     public Tenant get(){
--       return new Tenant();
--     }
--});
----------------------------------------------
--
--With Java 8 it's even more simple:
--
--[source, java]
----------------------------------------------
--Supplier<Tenant> configuredTenantSupplier = 
ConfigurationInjector.getInstance().getConfiguredSupplier(
--  Tenant::new);
----------------------------------------------
--
--Hereby this annotation can be used in multiple ways and combined with other 
annotations such as
--+@WithLoadPolicy+, +@WithConverter+.
--
--
--==== Minimal Example
--
--To illustrate the mechanism below the most simple variant of a configured 
class is given:
--
--[source,java]
--.Most simple configured class
----------------------------------------------
--pubic class ConfiguredItem{
--  @Config
--  private String aValue;
--}
----------------------------------------------
--
--When this class is configured, e.g. by passing it to 
+ConfigurationInjector.getInstance().configure(Object)+,
--the following is happening:
--
--* The current valid +Config+ is evaluated by calling +Config cfg = 
ConfigProvider.getConfig();+
--* The current property value (String) is evaluated by calling 
+cfg.getValue("aValue", Type.class);+
--  for each possible key (mutliple keys are possible).
--* if not successful, an error is thrown
--* On success, since no type conversion is involved, the value is injected.
--
--
--=== The Annotations in detail
--
--==== Using `@ConfigProperty`
--
--This is the main JSR annotation targeting a field in a class for 
configuration injection.
--
--
--===== Evaluating of _configuration keys_
--
--By default Tamaya tries to determine configuration for each property of an 
instance
--passed, using the following resolution policy:
--
--* Given a class +a.b.MyClass+ and a field +myField+ it would try to look up 
the
--  following keys:
--
--[source, listing]
----------------------------------------------
--a.b.MyClass.myField
--a.b.MyClass.my-field
--MyClass.myField
--MyClass.my-field
--myField
--my-field
----------------------------------------------
--
--
--This behaviour can be adapted, e.g. by using the `@ConfigDefaultSections` 
annotation on the
--declaring type:
--
----------------------------------------------
--@ConfigDefaultSections("a.b.c", "deprecated")
--pubic class MyClass{
--  @ConfigProperty
--  private String myField;
--}
----------------------------------------------
--
--This will result in a modified lookup chain as illustrated below:
--
--[source, listing]
----------------------------------------------
--a.b.c.myField
--a.b.c.my-field
--deprecated.myField
--deprecated.my-field
----------------------------------------------
--
--This helps to reduce redundancy when referring to you configuration keys. 
Additionally
--it is also possible to define absolute key entries, e.g.
--
----------------------------------------------
--@ConfigDefaultSections("a.b.c")
--pubic class MyClass{
--  @ConfigProperty("myField" /* relative */)
--  @ConfigFallbackKeys("[absolute.key]")
--  private String myField;
--}
----------------------------------------------
--
--This will result in a lookup chain as illustrated below:
--
--[source, listing]
----------------------------------------------
--a.b.c.myField
--absolute.key # default sections are ignored
----------------------------------------------
--
--
--===== Using defaults
--
--In the next example we explicitly define the _default_ property value:
--[source,java]
----------------------------------------------
--pubic class ConfiguredItem{
--
--  @ConfigProperty(key="aValue", defaultValue="${env:java.version}")
--  @ConfigFallbackKeys({"a.b.value","a.b.deprecated.value"})
--  private String aValue;
--}
----------------------------------------------
--
--
--==== Automatically inject all items using `@ConfigAutoInject`
--
--Using `@ConfigAutoDetect` allows you to automatically select all properties 
found for
--configuration injection:
--
--[source,java]
----------------------------------------------
--@ConfigAutoDetect
--pubic class ConfiguredItem{
--
--  private transient int sum;
--
--  private String a;
--  private String b;
--  Private String c;
--}
----------------------------------------------
--
--Adding the `@NoConfig` annotation prevents a field or method to be 
auto-detected from
--configuration. This is especially useful, if a type is annotated as 
@ConfigAutoDetect with auto-confiuration
--turned on as follows:
--
--[source,java]
----------------------------------------------
--@NoConfig
--private transient int sum;
----------------------------------------------
--
--In this case the fields +a,b,c+ are configured, whereas the field +sum+ is 
ignored regarding
--configuration.
--
--
--==== Adding custom property converters using `@WithConverter`
--
--The @WithConverter annotation allows you to define a class of type 
+Converter+, to be applied
--on a property configured to convert the String value to the expected injected 
type. This can be used for
--various use cases, e.g. adding custom formats, config models, decryption.
--
--[source,java]
----------------------------------------------
--
--pubic class ConfiguredItem{
--
--  @WithConverter(MyPropertyConverter.class)
--  @ConfigProperty
--  private String a;
--
--}
----------------------------------------------
--
--
--==== Inject a `DynamicValue`
--
--Within this example we evaluate a dynamic value. This mechanism allows you to 
listen for configuration changes and to
--commit new values exactly, when convenient for you.
--
--[source,java]
----------------------------------------------
--pubic class ConfiguredItem{
--
--  @ConfigProperty(key="aValue", defaultValue="${env:java.version}")
--  private DynamicValue aValue;
--}
----------------------------------------------
--
--The +DynamicValue+ provides you the following functionality:
--
--[source,java]
----------------------------------------------
--public interface DynamicValue<T> {
--
--    T get();
--    T getNewValue();
--    T evaluateValue();
--    T commitAndGet();
--    void commit();
--    void discard();
--    boolean updateValue();
--
--    void setUpdatePolicy(UpdatePolicy updatePolicy);
--    UpdatePolicy getUpdatePolicy();
--    void addListener(PropertyChangeListener l);
--    void removeListener(PropertyChangeListener l);
--
--    boolean isPresent();
--    T orElse(T other);
--    // Enabled with Java 8
--    // T orElseGet(ConfiguredItemSupplier<? extends T> other);
--    // <X extends Throwable> T orElseThrow(ConfiguredItemSupplier<? extends 
X> exceptionSupplier) throws X;
--
--}
--
--public enum UpdatePolicy{
--    IMMEDIATE,
--    EXPLCIT,
--    NEVER,
--    LOG_AND_DISCARD
--}
----------------------------------------------
--
--//Summarizing +DynamicValue+ looks somehow similar to the new +Optional+ 
class added with Java 8. It provides
--//a wrapper class around a configured instance. Additionally this class 
provides functionality that gives
--//active control, to manage a configured value based on a ++LoadingPolicy+:
--//
--//* +IMMEDEATE+ means that when the configuration system detects a change on 
the underlying value, the new value
--//  is automatically applied without any further notice.
--//* +EXPLICIT+ means that a new configuration value is signalled by setting 
the +newValue+ property. if +getNewValue()+
--//  returns a non null value, the new value can be applied by calling 
+commit()+. You can always access the newest value,
--//  hereby implicitly applying it, by accessing it via +commitAndGet()+. Also 
it is possible ti ignore a change by calling
--//  +discard()+.
--//* +NEVER+ means the configured value is evaluated once and never updated. 
All changes are silently discarded.
--//* +LOG_AND_DISCARD+ similar to +NEVER+, but changes are logged before they 
are discarded.
--
--Summarizing a +DynamicValue+ allows you
--
--* to reload actively updates of configured values.
--* update implicitly or explicitly all changes on the value.
--* add listeners that observe changes of a certain value.
--
--Dynamic values also allow on-the-fly reevaluation of the value by calling 
+evaluateValue()+. Hereby the value of the
--instance is not changed.
--
--
--===== The LoadPolicy enum
--
--The +LoadPolicy+ enum defines different configuration loading behaviour
--to be applied:
--
--[source,java]
----------------------------------------------
--@Deprecated
--public enum LoadPolicy {
--    /**
--     * The configuration keys is evaluated once, when the owning component is 
loaded/configured, but never updated later.
--     */
--    INITIAL,
--    /**
--     * The configuration keys is evaluated exactly once on its first 
access/use lazily, but never updated later.
--     * @see DynamicValue#get()
--     * @see DynamicValue#commitAndGet()
--     */
--    LAZY,
--    /**
--     * The configuration value is evaluated every time it is accessed.
--     */
--    ALWAYS
--}
----------------------------------------------
--
--This enum type currently is used only internally, so avoid using it as of
--now in your code is recommended.
--
--
--=== Configuration Events
--
--Similar to CDI Tamaya publishes Configuration events, when instances were 
configured. It depends on the effective
--event backend in use, if and how events are published:
--
--* when you have the CDI extension active events are published using the 
default CDI event mechanism.
--* in all other scenarios events are delegated to the +tamaya-events+ module, 
if available,
--* if no event delegation is available no events are published.
--
--The event published is very simple:
--
--[source,java]
----------------------------------------------
--public interface ConfiguredType {
--    Class getType();
--    String getName();
--    Collection<ConfiguredField> getConfiguredFields();
--    Collection<ConfiguredMethod> getConfiguredMethods();
--    void configure(Object instance, Configuration config);
--}
--
--public interface ConfiguredField {
--    Class<?> getType();
--    Collection<String> getConfiguredKeys();
--    String getName();
--    String getSignature();
--    Field getAnnotatedField();
--    void configure(Object instance, Configuration config);
--}
--
--public interface ConfiguredMethod {
--    Collection<String> getConfiguredKeys();
--    Class<?>[] getParameterTypes();
--    Method getAnnotatedMethod();
--    String getName();
--    String getSignature();
--    void configure(Object instance, Configuration config);
--}
------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-site/blob/1c033714/content/documentation-new/extensions/mod_jndi.adoc
----------------------------------------------------------------------
diff --cc content/documentation-new/extensions/mod_jndi.adoc
index a167e9e,a167e9e..0000000
deleted file mode 100644,100644
--- a/content/documentation-new/extensions/mod_jndi.adoc
+++ /dev/null
@@@ -1,68 -1,68 +1,0 @@@
--:jbake-type: page
--:jbake-status: published
--
--= Apache Tamaya - Extension: Integration with JNDI
--
--toc::[]
--
--
--[[JNDI]]
--== Integration with JNDI (Extension Module)
--Tamaya _JNDI_ is an extension module. Refer to the 
link:../extensions.html[extensions documentation] for further details.
--
--=== What functionality this module provides ?
--
--Tamaya _JNDI_ provides a simple +ConfigySource+ that reads values from a
--JNDI context.
--
--
--=== Compatibility
--
--The module is based on Java 8, so it will not run on Java 8 and beyond.
--
--
--=== Installation
--
--To use _jndi_ as a configuration backend you only must add the corresponding 
dependency to
--your module:
--
--[source, xml]
-------------------------------------------------
--<dependency>
--  <groupId>org.apache.tamaya.ext</groupId>
--  <artifactId>tamaya-jndi</artifactId>
--  <version>{tamaya_version}</version>
--</dependency>
-------------------------------------------------
--
--
--=== The Functionality Provided
--
--Main artifact is the +JNDIConfigSource+ class, which implements a
--property source based on a JNDI context:
--
--[source, java]
-------------------------------------------------
--public class JNDIPropertySource extends BasePropertySource {
--
--    public JNDIPropertySource(String name, Context context);
--    public JNDIPropertySource(String name) throws NamingException;
--    public JNDIPropertySource() throws NamingException;
--
--    public void setScannable(boolean scannable);
--
--    [...]
--}
-------------------------------------------------
--
--By default the property source is _non scannable_, so a call the 
`getProperties()`
--will return an empty map instance. After calling `setScannable(true);` a call 
to
--`getProperties()` will return a String representation of the JNDI tree. Hereby
--leaves of the tree are converted using `String.valueOf(leaveObject)`.
--
--This module automatically registers an instance of +JNDIConfigSource+ with a
--default ordinal of +200+.
--
--You can extend this class or manually instantiate it, e.g. as part of a
--+ConfigSourceProvider+. If no `Context` is passed explicitly, a new
--+InitialContext+ is created, without any environment parameters set.


Reply via email to