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/03/15 01:43:09 UTC

[1/2] incubator-tamaya git commit: Fixed javadoc issues, updated documentation.

Repository: incubator-tamaya
Updated Branches:
  refs/heads/master 9b7fed40c -> f9adf5930


Fixed javadoc issues, updated documentation.


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

Branch: refs/heads/master
Commit: f9adf5930b587dc9f8444142612b8404c9023838
Parents: 38b4a96
Author: anatole <an...@apache.org>
Authored: Tue Mar 15 01:39:17 2016 +0100
Committer: anatole <an...@apache.org>
Committed: Tue Mar 15 01:42:50 2016 +0100

----------------------------------------------------------------------
 .../mutableconfig/MutableConfiguration.java     |   1 -
 .../MutableConfigurationProvider.java           |  16 +-
 .../DefaultMutableConfigurationSpi.java         |   2 +-
 .../asciidoc/extensions/mod_mutable_config.adoc | 203 +++++++++++++------
 4 files changed, 153 insertions(+), 69 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/f9adf593/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/MutableConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/MutableConfiguration.java b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/MutableConfiguration.java
index ac0b10d..a0cb471 100644
--- a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/MutableConfiguration.java
+++ b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/MutableConfiguration.java
@@ -221,5 +221,4 @@ public interface MutableConfiguration extends Configuration {
      */
     MutableConfiguration remove(String... keys);
 
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/f9adf593/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/MutableConfigurationProvider.java
----------------------------------------------------------------------
diff --git a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/MutableConfigurationProvider.java b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/MutableConfigurationProvider.java
index 4afa9cb..878dd0e 100644
--- a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/MutableConfigurationProvider.java
+++ b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/MutableConfigurationProvider.java
@@ -20,6 +20,7 @@ package org.apache.tamaya.mutableconfig;
 
 import org.apache.tamaya.ConfigException;
 import org.apache.tamaya.Configuration;
+import org.apache.tamaya.ConfigurationProvider;
 import org.apache.tamaya.mutableconfig.spi.MutableConfigurationProviderSpi;
 import org.apache.tamaya.mutableconfig.spi.MutablePropertySource;
 import org.apache.tamaya.spi.PropertySource;
@@ -65,8 +66,21 @@ public final class MutableConfigurationProvider {
     private MutableConfigurationProvider(){}
 
     /**
+     * Creates a new {@link MutableConfiguration} for the given default configuration, using all
+     * {@link MutablePropertySource} instances found in its context and {@code autoCommit = false}.
+     *
+     * @return a new MutableConfiguration instance
+     */
+    public static MutableConfiguration getMutableConfiguration(){
+        return mutableConfigurationProviderSpi.createMutableConfiguration(
+                ConfigurationProvider.getConfiguration());
+    }
+
+
+    /**
      * Creates a new {@link MutableConfiguration} for the given configuration, using all
-     * {@link MutablePropertySource} instances found in its context and {@code autoCommit = true}.
+     * {@link MutablePropertySource} instances found in its context and {@code autoCommit = false}.
+     *
      *
      * @param configuration the configuration to use to write the changes/config.
      * @return a new MutableConfiguration instance

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/f9adf593/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/internal/DefaultMutableConfigurationSpi.java
----------------------------------------------------------------------
diff --git a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/internal/DefaultMutableConfigurationSpi.java b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/internal/DefaultMutableConfigurationSpi.java
index 178e21f..af52024 100644
--- a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/internal/DefaultMutableConfigurationSpi.java
+++ b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/internal/DefaultMutableConfigurationSpi.java
@@ -27,7 +27,7 @@ import org.apache.tamaya.mutableconfig.spi.MutableConfigurationProviderSpi;
  * SPI implementation that creates instances of {@link DefaultMutableConfiguration}, hereby for
  * each instance of {@link Configuration} a new instance has to be returned.
  */
-public class DefaultMutableConfigurationSpi implements MutableConfigurationProviderSpi{
+public class DefaultMutableConfigurationSpi implements MutableConfigurationProviderSpi {
 
     @Override
     public MutableConfiguration createMutableConfiguration(Configuration configuration) {

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/f9adf593/src/site/asciidoc/extensions/mod_mutable_config.adoc
----------------------------------------------------------------------
diff --git a/src/site/asciidoc/extensions/mod_mutable_config.adoc b/src/site/asciidoc/extensions/mod_mutable_config.adoc
index a4c1d60..cbe0e8d 100644
--- a/src/site/asciidoc/extensions/mod_mutable_config.adoc
+++ b/src/site/asciidoc/extensions/mod_mutable_config.adoc
@@ -47,9 +47,9 @@ toc::[]
 == Tamaya Mutable Configuration (Extension Module)
 === Overview
 
-Tamaya Configuration by default is read-only, which covers must of the use cases. But there are many legit use cases
-where configuration should be written back to some backend systems or the local file system. This module defines the API
-to be used, whereas multiple mutable backends can register their mechanism to write configuration properties.
+Tamaya Configuration by default is read-only, which covers must of the use cases. But there are many legit scenarios
+where configuration should be written back to some backend systems or the local file system. This module adds this
+functionality.
 
 === Compatibility
 
@@ -70,58 +70,138 @@ To benefit from configuration mutability support you only must add the correspon
 
 === Core Architecture
 
-The core of the module is the +MutableConfigQuery+ singleton, which is a +ConfigQuery+ that creates a new
-+Mutableonfiguration+ based on a +Configuration+ and a set of target backend +URIs+. If not sure you can call
-+getSupportedURIInfo()+ to see, which kind of URI's are  currently supported.
-On top of this API you also must have the correponding implementations installed that provide the backend logic needed
-to write the changes back. This module by default supports writing back to properties and xml-properties files only.
-As an example how to write configuration entries back refer to the following snippets:
+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
+a UUID that identifes a change.
+Backends for writing changes applied are of type +MutablePropertySource+, similarly extending the +PropertySource+
+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:
 
 [source,java]
-.Accessing and updating a mutable configuration backed by etcd
+.Accessing and changing a configuration
 --------------------------------------------
-MutableConfiguration config = Configuration.EMPTY.query(
-    MutableConfigurationQuery.of("file:/home/etcd/backup-config.properties");
-
+MutableConfiguration config = MutableConfigurationProvider.createMutableConfiguration();
 config.set("newKey", "newValue")
       .set("anotherKey", "updatedValue")
       .remove("valueNotValid")
       .commit();
 --------------------------------------------
 
+In the above scenario we use the overall system's configuration as the backend to be used.
+We can also pass any +Configuration+ to render it into a mutable instance, e.g.
+
 [source,java]
-.Accessing and updating a mutable configuration backed by a properties file
+.Explicitly passing the backing configuration
 --------------------------------------------
-MutableConfiguration config = Configuration.EMPTY.query(
-    MutableConfigurationQuery.of("file:/home/user/.backup-config.properties");
-
-config.set("newKey", "newValue")
-      .set("anotherKey", "updatedValue")
-      .remove("valueNotValid")
-      .commit();
+Configuration config = ...;
+MutableConfiguration config =
+    MutableConfigurationProvider.createMutableConfiguration(config);
 --------------------------------------------
 
-Both snippets above will contain values only
+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:
+
+[source, java]
+---------------------------------------------
+public final class MutableConfigurationProvider {
+
+    private MutableConfigurationProvider(){}
+
+    public static MutableConfiguration getMutableConfiguration();
+    public static MutableConfiguration getMutableConfiguration(Configuration configuration);
+
+    [...]
+}
+---------------------------------------------
+
+Hereby +MutableConfiguration+ is defined as follows:
+
+[source, java]
+---------------------------------------------
+public interface MutableConfiguration extends Configuration {
+
+    UUID startTransaction();
+    void commitTransaction();
+    void rollbackTransaction();
+    UUID getTransactionId();
+    boolean getAutoCommit();
+    void setAutoCommit(boolean autoCommit);
+
+    void setChangePropagationPolicy(ChangePropagationPolicy changePropagationPolicy);
+    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);
+    MutableConfiguration remove(String... keys);
+
+}
+---------------------------------------------
+
 
-* added or updated (uncommitted)
-* already existing in the configuration bakend, but not removed (uncommitted).
+==== Targeting the right MutablePropertySources
 
-This is the case because we provide an EMPTY configuration as a starting point. We can also combine this feature with
-the current +Configuration+, which then will make the effevtive configuration values visible as well:
+A +Configuration+ may have multiple +MutablePropertySource+ 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
+  on a more significant instance not be written/removed on less significant property source instances?
+* Should a change be applied only to a specific mutable property source, regardless its position in the
+  processing chain?
+
+Therefore a +ChangePropagationPolicy+ can be set on a +MutableConfiguration+ instance, which allows to control
+this aspect:
 
 [source,java]
-.Creating a mutable configuration based on the current config
+.Explicitly passing the backing configuration
 --------------------------------------------
-MutableConfiguration config = ConfigurationProvider.getConfiguration().query(
-    MutableConfigurationQuery.of("file:/home/user/.backup-config.properties");
+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);
 
-config.set("newKey", "newValue")
-      .set("anotherKey", "updatedValue")
-      .remove("valueNotValid")
-      .commit();
+}
 --------------------------------------------
 
-Please be aware that the effective effect of your changes to the overall configuration, cannot
+By default, changes are applied to all registered +MutablePropertySources+ similarly.
+
+
+Also the +MutableConfigurationProvider+ provides access to the most commonly used change propagation policies:
+
+[source, java]
+---------------------------------------------
+public final class MutableConfigurationProvider {
+
+    private MutableConfigurationProvider(){}
+
+    public static MutableConfiguration getMutableConfiguration();
+    public static MutableConfiguration getMutableConfiguration(Configuration configuration);
+
+    public static ChangePropagationPolicy getApplyAllChangePolicy();
+    public static ChangePropagationPolicy getApplyMostSignificantOnlyChangePolicy();
+    public static ChangePropagationPolicy getApplySelectiveChangePolicy(String... propertySourceNames);
+    public static ChangePropagationPolicy getApplyNonePolicy();
+}
+---------------------------------------------
+
+
+==== 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:
 
 . is the corresponding configuration resource configured as part of the current system's configuration?
@@ -133,7 +213,7 @@ be easily predicted, since it depends on several aspects:
 . 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 configuration may be read-only, which
+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:
@@ -141,26 +221,17 @@ is writable at all or can be removed or updated:
 [source,java]
 .Checking for mutability
 --------------------------------------------
-MutableConfiguration config = Configuration.EMPTY.query(
-    MutableConfigurationQuery.of("file:/home/etcd/backup-config.properties");
+MutableConfiguration config = MutableConfigurationProvider.createMutableConfiguration();
 
 if(config,isWritable("mycluster.shared.appKey")){
-    config.set("newKey", "newValue")
-          .remove("valueNotValid")
-          .commit();
-}else{
-    config.rollback();
+    config.set("newKey", "newValue");
+}
+if(config,isRemovable("mycluster.myapp.myKey")){
+    config.remove("mycluster.myapp.myKey");
 }
+config.commit();
 --------------------------------------------
 
-Finally since the creation if a +MutableConfiguration+ based on an empty configuration instance is so common, it is
-possible to directlky create one:
-
-[source,java]
-.Checking for mutability
---------------------------------------------
-MutableConfiguration config = MutableConfigurationQuery.createMutableConfiguration("file:/home/etcd/backup-config.properties");
---------------------------------------------
 
 === Configuration Changes
 
@@ -172,37 +243,37 @@ several ways, e.g. by:
 * The SPI implementing the +MutableConfigurationBackendSpi+ may inform/update any affected +PropertySource,
   PropertySourceProvider+ instances about the changes applied.
 
-=== Supported Backends modules
+
+=== Supported Backends
 
 Multiple backends are supported. E.g. the _etcd_ integration module of Tamaya also registers
-corresponding SPI implementations/backends. By default the module itself ships
-the following backends:
+corresponding SPI implementations/backends. By default this module comes with
+the following +MutablePropertySource+ implementations:
 
-* +.properties+ resources, e.g. files or resources located on a web server, following the +java.util.Properties+
+* +MutablePropertySource+ resources, targeting local .properties files, following the +java.util.Properties+
   format.
-* +.xml+ resources, e.g. files or resources located on a web server, following the +java.util.Properties+ XML format.
+* +MutableXmlPropertySource+ resources, targeting local .xml property files, following the +java.util.Properties+
+  XML format.
 
 
 === SPIs
 
-The module defines only one single SPI +MutableConfigurationBackendProviderSpi+, that must be implemented. It
-defines a fabric method +MutableConfigurationBackendSpi getBackend(URI)+ used by the +MutableConfigurationQuery+
-accessor:
+The module defines +MutableConfigurationProviderSpi+, that is used as a delegate by the +MutableConfigurationProvider+
+singleton accessor:
 
 [source,java]
-.SPI: MutableConfigurationBackendProviderSpi
+.SPI: MutableConfigurationProviderSpi
 --------------------------------------------------
-public interface MutableConfigurationBackendProviderSpi {
-    MutableConfigurationBackendSpi getBackend(URI backendURI);
+public interface MutableConfigurationProviderSpi {
+   MutableConfiguration createMutableConfiguration(Configuration configuration);
 }
 --------------------------------------------------
 
-Implementations are registered with the current +ServiceContext+, be default as with
- +java.util.ServiceLoader+.
+Implementations are registered with the current +ServiceContext+, by default as a
+ +java.util.ServiceLoader+ service.
 
 
 As convenience the following base classes are provided:
 
-* +org.apache.tamaya.mutableconfig.spi.AbstractMutableConfiguration+ simplifying implementation of +MutableConfiguration+.
-* +org.apache.tamaya.mutableconfig.spi.AbstractMutableConfigurationBackendSpi+ simplifying the implementation of
-  +MutableConfigurationBackendSpi+.
\ No newline at end of file
+* +org.apache.tamaya.mutableconfig.propertysource.AbstractMutablePropertySource+ simplifying implementation of
+  +MutablePropertySource+.


[2/2] incubator-tamaya git commit: Fixed javadocs issues.

Posted by an...@apache.org.
Fixed javadocs issues.


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

Branch: refs/heads/master
Commit: 38b4a967b6bcae9f00e1b58663b7b61b1dd348a4
Parents: 9b7fed4
Author: anatole <an...@apache.org>
Authored: Tue Mar 15 00:52:20 2016 +0100
Committer: anatole <an...@apache.org>
Committed: Tue Mar 15 01:42:50 2016 +0100

----------------------------------------------------------------------
 .../tamaya/consul/ConsulPropertySource.java     |   4 +-
 .../apache/tamaya/etcd/EtcdPropertySource.java  |   4 +-
 .../mutableconfig/MutableConfiguration.java     |   6 +-
 .../MutableConfigurationProvider.java           |   3 +
 .../AbstractMutablePropertySource.java          |  23 +--
 .../propertysources/ConfigChangeContext.java    | 152 +++++++++++++++++++
 .../MutablePropertiesPropertySource.java        |   9 +-
 .../MutableXmlPropertiesPropertySource.java     |   9 +-
 .../propertysources/TransactionContext.java     | 152 -------------------
 .../spi/MutablePropertySource.java              |   8 +
 .../PropertiesFileConfigBackendTest.java        |  10 --
 11 files changed, 190 insertions(+), 190 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/38b4a967/modules/integration/consul/src/main/java/org/apache/tamaya/consul/ConsulPropertySource.java
----------------------------------------------------------------------
diff --git a/modules/integration/consul/src/main/java/org/apache/tamaya/consul/ConsulPropertySource.java b/modules/integration/consul/src/main/java/org/apache/tamaya/consul/ConsulPropertySource.java
index b4227a8..9b61840 100644
--- a/modules/integration/consul/src/main/java/org/apache/tamaya/consul/ConsulPropertySource.java
+++ b/modules/integration/consul/src/main/java/org/apache/tamaya/consul/ConsulPropertySource.java
@@ -24,7 +24,7 @@ import com.orbitz.consul.Consul;
 import com.orbitz.consul.KeyValueClient;
 import com.orbitz.consul.model.kv.Value;
 import org.apache.tamaya.mutableconfig.propertysources.AbstractMutablePropertySource;
-import org.apache.tamaya.mutableconfig.propertysources.TransactionContext;
+import org.apache.tamaya.mutableconfig.propertysources.ConfigChangeContext;
 import org.apache.tamaya.spi.PropertyValue;
 import org.apache.tamaya.spi.PropertyValueBuilder;
 
@@ -165,7 +165,7 @@ public class ConsulPropertySource extends AbstractMutablePropertySource {
     }
 
     @Override
-    protected void commitInternal(TransactionContext context) {
+    protected void commitInternal(ConfigChangeContext context) {
         for(HostAndPort hostAndPort: ConsulBackends.getConsulBackends()){
             try{
                 Consul consul = Consul.builder().withHostAndPort(hostAndPort).build();

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/38b4a967/modules/integration/etcd/src/main/java/org/apache/tamaya/etcd/EtcdPropertySource.java
----------------------------------------------------------------------
diff --git a/modules/integration/etcd/src/main/java/org/apache/tamaya/etcd/EtcdPropertySource.java b/modules/integration/etcd/src/main/java/org/apache/tamaya/etcd/EtcdPropertySource.java
index 9434f65..f84fd0d 100644
--- a/modules/integration/etcd/src/main/java/org/apache/tamaya/etcd/EtcdPropertySource.java
+++ b/modules/integration/etcd/src/main/java/org/apache/tamaya/etcd/EtcdPropertySource.java
@@ -19,7 +19,7 @@
 package org.apache.tamaya.etcd;
 
 import org.apache.tamaya.mutableconfig.propertysources.AbstractMutablePropertySource;
-import org.apache.tamaya.mutableconfig.propertysources.TransactionContext;
+import org.apache.tamaya.mutableconfig.propertysources.ConfigChangeContext;
 import org.apache.tamaya.spi.PropertyValue;
 import org.apache.tamaya.spi.PropertyValueBuilder;
 
@@ -167,7 +167,7 @@ public class EtcdPropertySource extends AbstractMutablePropertySource{
     }
 
     @Override
-    protected void commitInternal(TransactionContext context) {
+    protected void commitInternal(ConfigChangeContext context) {
         for(EtcdAccessor accessor: EtcdBackends.getEtcdBackends()){
             try{
                 for(String k: context.getRemovedProperties()){

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/38b4a967/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/MutableConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/MutableConfiguration.java b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/MutableConfiguration.java
index 4108928..ac0b10d 100644
--- a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/MutableConfiguration.java
+++ b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/MutableConfiguration.java
@@ -123,7 +123,7 @@ public interface MutableConfiguration extends Configuration {
      * Identifies the configuration backends that supports writing the given key(s).
      * @param keyExpression the key to be checked for write access (including creation), not null. Here this could also
      *                      be a regular expression, such "as a.b.c.*".
-     * @return @return the property sources identified, in order of their occurrence/priority (most significant first).
+     * @return the property sources identified, in order of their occurrence/priority (most significant first).
      */
     List<MutablePropertySource> getPropertySourcesThatCanWrite(String keyExpression);
 
@@ -142,7 +142,7 @@ public interface MutableConfiguration extends Configuration {
      * Identifies the configuration backend that know the given key(s) and support removing it/them.
      * @param keyExpression the key to be checked for write access (including creation), not null. Here this could also
      *                      be a regular expression, such "as a.b.c.*".
-     * @return @return the property sources identified, in order of their occurrence/priority (most significant first).
+     * @return the property sources identified, in order of their occurrence/priority (most significant first).
      */
     List<MutablePropertySource> getPropertySourcesThatCanRemove(String keyExpression);
 
@@ -161,7 +161,7 @@ public interface MutableConfiguration extends Configuration {
      * Identifies the configuration backend that know the given key(s).
      * @param keyExpression the key to be checked for write access (including creation), not null. Here this could also
      *                      be a regular expression, such "as a.b.c.*".
-     * @return @return the property sources identified, in order of their occurrence/priority (most significant first).
+     * @return the property sources identified, in order of their occurrence/priority (most significant first).
      */
     List<MutablePropertySource> getPropertySourcesThatKnow(String keyExpression);
 

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/38b4a967/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/MutableConfigurationProvider.java
----------------------------------------------------------------------
diff --git a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/MutableConfigurationProvider.java b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/MutableConfigurationProvider.java
index 67e971f..4afa9cb 100644
--- a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/MutableConfigurationProvider.java
+++ b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/MutableConfigurationProvider.java
@@ -86,6 +86,7 @@ public final class MutableConfigurationProvider {
     /**
      * This propagation policy writes changes only once to the most significant property source, where a change is
      * applicable.
+     * @return a corresponding {@link ChangePropagationPolicy} implementation, never null.
      */
     public static ChangePropagationPolicy getApplyMostSignificantOnlyChangePolicy(){
         return MOST_SIGNIFICANT_ONLY_POLICY;
@@ -95,6 +96,7 @@ public final class MutableConfigurationProvider {
      * This propagation policy writes changes only once to the most significant property source, where a change is
      * applicable.
      * @param propertySourceNames the names of the mutable property sources to be considered for writing any changes to.
+     * @return a corresponding {@link ChangePropagationPolicy} implementation, never null.
      */
     public static ChangePropagationPolicy getApplySelectiveChangePolicy(String... propertySourceNames){
         return new SelectiveChangeApplyPolicy(propertySourceNames);
@@ -103,6 +105,7 @@ public final class MutableConfigurationProvider {
     /**
      * This propagation policy writes changes only once to the most significant property source, where a change is
      * applicable.
+     * @return a corresponding {@link ChangePropagationPolicy} implementation, never null.
      */
     public static ChangePropagationPolicy getApplyNonePolicy(){
         return NONE_POLICY;

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/38b4a967/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/propertysources/AbstractMutablePropertySource.java
----------------------------------------------------------------------
diff --git a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/propertysources/AbstractMutablePropertySource.java b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/propertysources/AbstractMutablePropertySource.java
index e74e9e8..7931019 100644
--- a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/propertysources/AbstractMutablePropertySource.java
+++ b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/propertysources/AbstractMutablePropertySource.java
@@ -38,7 +38,7 @@ public abstract class AbstractMutablePropertySource extends BasePropertySource
     /**
      * Map with the curren transactions, identified by transactionId.
      */
-    protected final Map<UUID, TransactionContext> transactions = new ConcurrentHashMap<>();
+    protected final Map<UUID, ConfigChangeContext> transactions = new ConcurrentHashMap<>();
 
     /**
      * Constructor udsing zero' as default ordinal.
@@ -61,7 +61,7 @@ public abstract class AbstractMutablePropertySource extends BasePropertySource
      * @return the removed property keys, never null.
      */
     protected final Set<String> getRemovedProperties(UUID transactionId) {
-        TransactionContext ctx = this.transactions.get(transactionId);
+        ConfigChangeContext ctx = this.transactions.get(transactionId);
         if(ctx!=null) {
             return ctx.getRemovedProperties();
         }
@@ -74,7 +74,7 @@ public abstract class AbstractMutablePropertySource extends BasePropertySource
      * @return the added property keys, never null.
      */
     protected final Map<String,String> getAddedProperties(UUID transactionId) {
-        TransactionContext ctx = this.transactions.get(transactionId);
+        ConfigChangeContext ctx = this.transactions.get(transactionId);
         if(ctx!=null) {
             return ctx.getAddedProperties();
         }
@@ -93,7 +93,7 @@ public abstract class AbstractMutablePropertySource extends BasePropertySource
 
     @Override
     public final MutablePropertySource put(UUID transactionId, String key, String value) {
-        TransactionContext ctx = this.transactions.get(transactionId);
+        ConfigChangeContext ctx = this.transactions.get(transactionId);
         if(ctx==null) {
             throw new IllegalStateException("No such transaction: " + transactionId);
         }
@@ -103,7 +103,7 @@ public abstract class AbstractMutablePropertySource extends BasePropertySource
 
     @Override
     public final MutablePropertySource putAll(UUID transactionId, Map<String, String> properties) {
-        TransactionContext ctx = this.transactions.get(transactionId);
+        ConfigChangeContext ctx = this.transactions.get(transactionId);
         if(ctx==null) {
             throw new IllegalStateException("No such transaction: " + transactionId);
         }
@@ -113,7 +113,7 @@ public abstract class AbstractMutablePropertySource extends BasePropertySource
 
     @Override
     public final MutablePropertySource remove(UUID transactionId, String... keys) {
-        TransactionContext ctx = this.transactions.get(transactionId);
+        ConfigChangeContext ctx = this.transactions.get(transactionId);
         if(ctx==null) {
             throw new IllegalStateException("No such transaction: " + transactionId);
         }
@@ -123,7 +123,7 @@ public abstract class AbstractMutablePropertySource extends BasePropertySource
 
     @Override
     public final MutablePropertySource remove(UUID transactionId, Collection<String> keys) {
-        TransactionContext ctx = this.transactions.get(transactionId);
+        ConfigChangeContext ctx = this.transactions.get(transactionId);
         if(ctx==null) {
             throw new IllegalStateException("No such transaction: " + transactionId);
         }
@@ -133,15 +133,15 @@ public abstract class AbstractMutablePropertySource extends BasePropertySource
 
     @Override
     public final void startTransaction(UUID transactionId) {
-        TransactionContext ctx = this.transactions.get(transactionId);
+        ConfigChangeContext ctx = this.transactions.get(transactionId);
         if(ctx==null) {
-            this.transactions.put(transactionId, new TransactionContext(transactionId));
+            this.transactions.put(transactionId, new ConfigChangeContext(transactionId));
         }
     }
 
     @Override
     public final void commitTransaction(UUID transactionId) {
-        TransactionContext ctx = this.transactions.remove(transactionId);
+        ConfigChangeContext ctx = this.transactions.remove(transactionId);
         if(ctx==null) {
             throw new IllegalStateException("No such transaction: " + transactionId);
         }
@@ -152,8 +152,9 @@ public abstract class AbstractMutablePropertySource extends BasePropertySource
     /**
      * Commit of the changes to the current property source. This is the last chance to get changes written back to the
      * property source. On return the transactional context will be removed.
+     * @param context The configuration change to be committed/applied.
      */
-    protected abstract void commitInternal(TransactionContext context);
+    protected abstract void commitInternal(ConfigChangeContext context);
 
     @Override
     public final void rollbackTransaction(UUID transactionId) {

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/38b4a967/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/propertysources/ConfigChangeContext.java
----------------------------------------------------------------------
diff --git a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/propertysources/ConfigChangeContext.java b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/propertysources/ConfigChangeContext.java
new file mode 100644
index 0000000..8551cad
--- /dev/null
+++ b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/propertysources/ConfigChangeContext.java
@@ -0,0 +1,152 @@
+/*
+ * 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.
+ */
+package org.apache.tamaya.mutableconfig.propertysources;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.UUID;
+
+/**
+ * Transactional context used for managing configuration changes within an {@link AbstractMutablePropertySource}.
+ */
+public final class ConfigChangeContext {
+    /**
+     * The transaction id.
+     */
+    private UUID transactionId;
+    /**
+     * The starting point.
+     */
+    private long startedAt = System.currentTimeMillis();
+    /**
+     * The Properties.
+     */
+    private final Map<String,String> addedProperties = new HashMap<>();
+    /**
+     * The Removed.
+     */
+    private final Set<String> removedProperties = new HashSet<>();
+
+    /**
+     * Creates a new instance bound to the given transaction.
+     * @param transactionID the transaction ID, not null.
+     */
+    public ConfigChangeContext(UUID transactionID){
+        this.transactionId = Objects.requireNonNull(transactionID);
+    }
+
+    /**
+     * Get the corresppnding transaction ID of this instance.
+     * @return the transaction ID, never null.
+     */
+    public UUID getTransactionID(){
+        return transactionId;
+    }
+
+    /**
+     * Timestamp in UTC millis, when this transaction (context) was created.
+     * @return the timestamp in millis.
+     */
+    public long getStartedAt(){
+        return startedAt;
+    }
+
+    /**
+     * Get an unmodifiable key/value map of properties added or updated.
+     * @return an unmodifiable key/value map of properties added or updated, never null.
+     */
+    public Map<String,String> getAddedProperties(){
+        return Collections.unmodifiableMap(addedProperties);
+    }
+
+    /**
+     * Get an unmodifiable key set of properties removed.
+     * @return an unmodifiable key set of properties removed, never null.
+     */
+    public Set<String> getRemovedProperties(){
+        return Collections.unmodifiableSet(removedProperties);
+    }
+
+    /**
+     * Adds/updates a new key/value pair.
+     * @param key the key, not null.
+     * @param value the value, not null.
+     */
+    public void put(String key, String value) {
+        this.addedProperties.put(key, value);
+    }
+
+    /**
+     * Add/updated multiple key/values.
+     * @param properties the keys and values to be added/updated, not null.
+     */
+    public void putAll(Map<String, String> properties) {
+        this.addedProperties.putAll(properties);
+    }
+
+    /**
+     * Remove all the given keys, ir present.
+     * @param keys the keys to be removed, not null.
+     */
+    public void removeAll(Collection<String> keys) {
+        this.removedProperties.addAll(keys);
+    }
+
+    /**
+     * Allows easily to check if no additions/changes an no removals are present in the current transaction.
+     * @return true, if not actions have to be committed.
+     */
+    public boolean isEmpty() {
+        return this.addedProperties.isEmpty() && this.removedProperties.isEmpty();
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (!(o instanceof ConfigChangeContext)) {
+            return false;
+        }
+        ConfigChangeContext that = (ConfigChangeContext) o;
+        return transactionId.equals(that.transactionId);
+
+    }
+
+    @Override
+    public int hashCode() {
+        return transactionId.hashCode();
+    }
+
+    @Override
+    public String toString() {
+        return "TransactionContext{" +
+                "addedProperties=" + addedProperties +
+                ", transactionId=" + transactionId +
+                ", startedAt=" + startedAt +
+                ", removedProperties=" + removedProperties +
+                '}';
+    }
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/38b4a967/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/propertysources/MutablePropertiesPropertySource.java
----------------------------------------------------------------------
diff --git a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/propertysources/MutablePropertiesPropertySource.java b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/propertysources/MutablePropertiesPropertySource.java
index d713578..a4105c7 100644
--- a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/propertysources/MutablePropertiesPropertySource.java
+++ b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/propertysources/MutablePropertiesPropertySource.java
@@ -78,6 +78,8 @@ public class MutablePropertiesPropertySource extends AbstractMutablePropertySour
      * Creates a new Properties based PropertySource based on the given URL.
      *
      * @param propertiesLocation the URL encoded location, not null.
+     * @param defaultOrdinal the default ordinal to be used, when no ordinal is provided with the property
+     *                       source's properties.
      */
     public MutablePropertiesPropertySource(File propertiesLocation, int defaultOrdinal) {
         super(defaultOrdinal);
@@ -130,16 +132,13 @@ public class MutablePropertiesPropertySource extends AbstractMutablePropertySour
     /**
      * loads the Properties from the given URL
      *
-     * @return loaded {@link Properties}
      * @throws IllegalStateException in case of an error while reading properties-file
      */
     private void load() {
         try (InputStream stream = new FileInputStream(file)) {
             Map<String, String> properties = new HashMap<>();
             Properties props = new Properties();
-            if (stream != null) {
-                props.load(stream);
-            }
+            props.load(stream);
             for (String key : props.stringPropertyNames()) {
                 properties.put(key, props.getProperty(key));
             }
@@ -152,7 +151,7 @@ public class MutablePropertiesPropertySource extends AbstractMutablePropertySour
     }
 
     @Override
-    protected void commitInternal(TransactionContext context) {
+    protected void commitInternal(ConfigChangeContext context) {
         if(context.isEmpty()){
             LOG.info("Nothing to commit for transaction: " + context.getTransactionID());
             return;

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/38b4a967/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/propertysources/MutableXmlPropertiesPropertySource.java
----------------------------------------------------------------------
diff --git a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/propertysources/MutableXmlPropertiesPropertySource.java b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/propertysources/MutableXmlPropertiesPropertySource.java
index 1e0d6da..9049340 100644
--- a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/propertysources/MutableXmlPropertiesPropertySource.java
+++ b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/propertysources/MutableXmlPropertiesPropertySource.java
@@ -78,6 +78,8 @@ public class MutableXmlPropertiesPropertySource extends AbstractMutablePropertyS
      * Creates a new Properties based PropertySource based on the given URL.
      *
      * @param propertiesLocation the URL encoded location, not null.
+     * @param defaultOrdinal the default ordinal to be used, when no ordinal is provided with the property
+     *                       source's properties.
      */
     public MutableXmlPropertiesPropertySource(File propertiesLocation, int defaultOrdinal) {
         super(defaultOrdinal);
@@ -130,16 +132,13 @@ public class MutableXmlPropertiesPropertySource extends AbstractMutablePropertyS
     /**
      * loads the Properties from the given URL
      *
-     * @return loaded {@link Properties}
      * @throws IllegalStateException in case of an error while reading properties-file
      */
     private void load() {
         try (InputStream stream = new FileInputStream(file)) {
             Map<String, String> properties = new HashMap<>();
             Properties props = new Properties();
-            if (stream != null) {
-                props.loadFromXML(stream);
-            }
+            props.loadFromXML(stream);
             for (String key : props.stringPropertyNames()) {
                 properties.put(key, props.getProperty(key));
             }
@@ -153,7 +152,7 @@ public class MutableXmlPropertiesPropertySource extends AbstractMutablePropertyS
     }
 
     @Override
-    protected void commitInternal(TransactionContext context) {
+    protected void commitInternal(ConfigChangeContext context) {
         if(context.isEmpty()){
             LOG.info("Nothing to commit for transaction: " + context.getTransactionID());
             return;

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/38b4a967/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/propertysources/TransactionContext.java
----------------------------------------------------------------------
diff --git a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/propertysources/TransactionContext.java b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/propertysources/TransactionContext.java
deleted file mode 100644
index b8604f6..0000000
--- a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/propertysources/TransactionContext.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * 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.
- */
-package org.apache.tamaya.mutableconfig.propertysources;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
-import java.util.UUID;
-
-/**
- * Transactional context used for managing configuration changes within an {@link AbstractMutablePropertySource}.
- */
-public final class TransactionContext{
-    /**
-     * The transaction id.
-     */
-    private UUID transactionId;
-    /**
-     * The starting point.
-     */
-    private long startedAt = System.currentTimeMillis();
-    /**
-     * The Properties.
-     */
-    private final Map<String,String> addedProperties = new HashMap<>();
-    /**
-     * The Removed.
-     */
-    private final Set<String> removedProperties = new HashSet<>();
-
-    /**
-     * Creates a new instance bound to the given transaction.
-     * @param transactionID the transaction ID, not null.
-     */
-    public TransactionContext(UUID transactionID){
-        this.transactionId = Objects.requireNonNull(transactionID);
-    }
-
-    /**
-     * Get the corresppnding transaction ID of this instance.
-     * @return the transaction ID, never null.
-     */
-    public UUID getTransactionID(){
-        return transactionId;
-    }
-
-    /**
-     * Timestamp in UTC millis, when this transaction (context) was created.
-     * @return the timestamp in millis.
-     */
-    public long getStartedAt(){
-        return startedAt;
-    }
-
-    /**
-     * Get an unmodifiable key/value map of properties added or updated.
-     * @return an unmodifiable key/value map of properties added or updated, never null.
-     */
-    public Map<String,String> getAddedProperties(){
-        return Collections.unmodifiableMap(addedProperties);
-    }
-
-    /**
-     * Get an unmodifiable key set of properties removed.
-     * @return an unmodifiable key set of properties removed, never null.
-     */
-    public Set<String> getRemovedProperties(){
-        return Collections.unmodifiableSet(removedProperties);
-    }
-
-    /**
-     * Adds/updates a new key/value pair.
-     * @param key the key, not null.
-     * @param value the value, not null.
-     */
-    public void put(String key, String value) {
-        this.addedProperties.put(key, value);
-    }
-
-    /**
-     * Add/updated multiple key/values.
-     * @param properties the keys and values to be added/updated, not null.
-     */
-    public void putAll(Map<String, String> properties) {
-        this.addedProperties.putAll(properties);
-    }
-
-    /**
-     * Remove all the given keys, ir present.
-     * @param keys the keys to be removed, not null.
-     */
-    public void removeAll(Collection<String> keys) {
-        this.removedProperties.addAll(keys);
-    }
-
-    /**
-     * Allows easily to check if no additions/changes an no removals are present in the current transaction.
-     * @return true, if not actions have to be committed.
-     */
-    public boolean isEmpty() {
-        return this.addedProperties.isEmpty() && this.removedProperties.isEmpty();
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (!(o instanceof TransactionContext)) {
-            return false;
-        }
-        TransactionContext that = (TransactionContext) o;
-        return transactionId.equals(that.transactionId);
-
-    }
-
-    @Override
-    public int hashCode() {
-        return transactionId.hashCode();
-    }
-
-    @Override
-    public String toString() {
-        return "TransactionContext{" +
-                "addedProperties=" + addedProperties +
-                ", transactionId=" + transactionId +
-                ", startedAt=" + startedAt +
-                ", removedProperties=" + removedProperties +
-                '}';
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/38b4a967/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/spi/MutablePropertySource.java
----------------------------------------------------------------------
diff --git a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/spi/MutablePropertySource.java b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/spi/MutablePropertySource.java
index 2888638..0872735 100644
--- a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/spi/MutablePropertySource.java
+++ b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/spi/MutablePropertySource.java
@@ -55,6 +55,8 @@ public interface MutablePropertySource extends PropertySource {
      *
      * @param key   the property's key, not null.
      * @param value the property's value, not null.
+     * @param transactionId the transactionId used to isolate the change, not null.
+     * @return this instance for optional chaining of operations, nrvrt null.
      * @throws org.apache.tamaya.ConfigException if the key/value cannot be added, or the request is read-only.
      */
     MutablePropertySource put(UUID transactionId, String key, String value);
@@ -68,7 +70,9 @@ public interface MutablePropertySource extends PropertySource {
      * collected and returned as part of the ConfigException payload. Nevertheless the operation should in that case
      * remove all entries as far as possible and abort the writing operation.
      *
+     * @param transactionId the transactionId used to isolate the change, not null.
      * @param properties the properties tobe written, not null.
+     * @return this instance for optional chaining of operations, nrvrt null.
      * @throws org.apache.tamaya.ConfigException if any of the given properties could not be written, or the request is read-only.
      */
     MutablePropertySource putAll(UUID transactionId, Map<String, String> properties);
@@ -81,7 +85,9 @@ public interface MutablePropertySource extends PropertySource {
      * collected and returned as part of the ConfigException payload. Nevertheless the operation should in that case
      * remove all entries as far as possible and abort the writing operation.
      *
+     * @param transactionId the transactionId used to isolate the change, not null.
      * @param keys the property's keys to be removedProperties, not null.
+     * @return this instance for optional chaining of operations, nrvrt null.
      * @throws org.apache.tamaya.ConfigException if any of the given keys could not be removedProperties, or the request is read-only.
      */
     MutablePropertySource remove(UUID transactionId, Collection<String> keys);
@@ -94,7 +100,9 @@ public interface MutablePropertySource extends PropertySource {
      * collected and returned as part of the ConfigException payload. Nevertheless the operation should in that case
      * remove all entries as far as possible and abort the writing operation.
      *
+     * @param transactionId the transactionId used to isolate the change, not null.
      * @param keys the property's keys to be removedProperties, not null.
+     * @return this instance for optional chaining of operations, nrvrt null.
      * @throws org.apache.tamaya.ConfigException if any of the given keys could not be removedProperties, or the request is read-only.
      */
     MutablePropertySource remove(UUID transactionId, String... keys);

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/38b4a967/modules/mutable-config/src/test/java/org/apache/tamaya/mutableconfig/internal/PropertiesFileConfigBackendTest.java
----------------------------------------------------------------------
diff --git a/modules/mutable-config/src/test/java/org/apache/tamaya/mutableconfig/internal/PropertiesFileConfigBackendTest.java b/modules/mutable-config/src/test/java/org/apache/tamaya/mutableconfig/internal/PropertiesFileConfigBackendTest.java
index e2c0dee..e6c79f5 100644
--- a/modules/mutable-config/src/test/java/org/apache/tamaya/mutableconfig/internal/PropertiesFileConfigBackendTest.java
+++ b/modules/mutable-config/src/test/java/org/apache/tamaya/mutableconfig/internal/PropertiesFileConfigBackendTest.java
@@ -18,18 +18,8 @@
  */
 package org.apache.tamaya.mutableconfig.internal;
 
-import org.apache.tamaya.ConfigurationProvider;
-import org.apache.tamaya.mutableconfig.MutableConfiguration;
-import org.apache.tamaya.mutableconfig.MutableConfigurationProvider;
 import org.apache.tamaya.mutableconfig.propertysources.MutablePropertiesPropertySource;
-import org.junit.Test;
 
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-
-import static org.junit.Assert.*;
 
 /**
  * Tests for {@link MutablePropertiesPropertySource}.