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 2018/04/22 17:01:10 UTC

[1/2] incubator-tamaya-extensions git commit: Fixed some license refs. Renamed some artifacts for better compliance with JSR.

Repository: incubator-tamaya-extensions
Updated Branches:
  refs/heads/configjsr ddfdbbb93 -> 2abb7a772


Fixed some license refs.
Renamed some artifacts for better compliance with JSR.

Signed-off-by: Anatole Tresch <an...@apache.org>


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

Branch: refs/heads/configjsr
Commit: 319f435c3d830f701d731033995ff81dbebe3443
Parents: ddfdbbb
Author: Anatole Tresch <an...@apache.org>
Authored: Sun Apr 22 18:24:04 2018 +0200
Committer: Anatole Tresch <an...@apache.org>
Committed: Sun Apr 22 18:24:04 2018 +0200

----------------------------------------------------------------------
 .../tamaya/functions/FunctionalConfig.java      | 130 +++++++++++
 .../tamaya/mutableconfig/MutableConfig.java     | 126 +++++++++++
 .../mutableconfig/MutableConfigProvider.java    | 216 +++++++++++++++++++
 .../mutableconfig/MutableConfiguration.java     | 126 -----------
 .../MutableConfigurationProvider.java           | 216 -------------------
 .../internal/DefaultMutableConfiguration.java   |  14 +-
 .../DefaultMutableConfigurationSpi.java         |  10 +-
 .../spi/MutableConfigProviderSpi.java           |  44 ++++
 .../spi/MutableConfigurationProviderSpi.java    |  43 ----
 ...a.mutableconfig.spi.MutableConfigProviderSpi |  19 ++
 ...leconfig.spi.MutableConfigurationProviderSpi |  19 --
 .../MutableConfigProviderTest.java              |  85 ++++++++
 .../tamaya/mutableconfig/MutableConfigTest.java | 186 ++++++++++++++++
 .../MutableConfigurationProviderTest.java       |  85 --------
 .../mutableconfig/MutableConfigurationTest.java | 186 ----------------
 15 files changed, 818 insertions(+), 687 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/319f435c/modules/functions/src/main/java/org/apache/tamaya/functions/FunctionalConfig.java
----------------------------------------------------------------------
diff --git a/modules/functions/src/main/java/org/apache/tamaya/functions/FunctionalConfig.java b/modules/functions/src/main/java/org/apache/tamaya/functions/FunctionalConfig.java
new file mode 100644
index 0000000..0f36ed8
--- /dev/null
+++ b/modules/functions/src/main/java/org/apache/tamaya/functions/FunctionalConfig.java
@@ -0,0 +1,130 @@
+/*
+ * 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.functions;
+
+import org.apache.tamaya.base.ConfigContext;
+import org.apache.tamaya.base.ConfigContextSupplier;
+import org.apache.tamaya.base.TamayaConfigBuilder;
+
+import javax.config.Config;
+import javax.config.ConfigValue;
+import javax.config.spi.ConfigSource;
+import java.util.Optional;
+import java.util.Set;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.function.UnaryOperator;
+
+
+/**
+ * Config interface with functional extension points.
+ */
+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){
+        if(config instanceof  FunctionalConfig){
+            // Adapt it only once...
+            return (FunctionalConfig)config;
+        }
+        return new FunctionalConfig() {
+            @Override
+            public ConfigContext getConfigContext() {
+                return ConfigContext.from(config);
+            }
+
+            @Override
+            public <T> T getValue(String key, Class<T> type) {
+                return config.getValue(key, type);
+            }
+
+            @Override
+            public <T> Optional<T> getOptionalValue(String key, Class<T> type) {
+                return config.getOptionalValue(key, type);
+            }
+
+            @Override
+            public ConfigValue<String> access(String key) {
+                return config.access(key);
+            }
+
+            @Override
+            public Iterable<String> getPropertyNames() {
+                return config.getPropertyNames();
+            }
+
+            @Override
+            public Iterable<ConfigSource> getConfigSources() {
+                return config.getConfigSources();
+            }
+
+            @Override
+            public void registerConfigChangedListener(Consumer<Set<String>> consumer) {
+                config.registerConfigChangedListener(consumer);
+            }
+
+            @Override
+            public String toString(){
+                return "Functional:"+config.toString();
+            }
+        };
+    }
+
+    /**
+     * Extension point for adjusting configuration.
+     *
+     * @param operator A configuration operator, e.g. a filter, or an adjuster
+     *                 combining configurations, never  {@code null}.
+     * @return the new adjusted configuration returned by the {@code operator}, never {@code null}.
+     */
+    default FunctionalConfig with(UnaryOperator<Config> operator){
+        return FunctionalConfig.of(operator.apply(this));
+    }
+
+    /**
+     * Query a configuration.
+     *
+     * @param <T> the type of the configuration.
+     * @param query the query, not {@code null}.
+     * @return the result returned by the {@code query}.
+     */
+    default <T> T query(Function<Config, T> query){
+        return query.apply(this);
+    }
+
+    /**
+     * Access a configuration's context.
+     * @return the configuration context, never null.
+     */
+    default ConfigContext getContext(){
+        return ConfigContext.from(this);
+    }
+
+    /**
+     * Create a new builder using this instance as it's base.
+     * @return a new builder, never null.
+     */
+    default TamayaConfigBuilder toBuilder() {
+        return TamayaConfigBuilder.create(this);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/319f435c/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/MutableConfig.java
----------------------------------------------------------------------
diff --git a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/MutableConfig.java b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/MutableConfig.java
new file mode 100644
index 0000000..29a54f9
--- /dev/null
+++ b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/MutableConfig.java
@@ -0,0 +1,126 @@
+/*
+ * 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;
+
+import org.apache.tamaya.mutableconfig.spi.MutableConfigSource;
+
+import javax.config.Config;
+import java.util.Collection;
+import java.util.Map;
+
+
+/**
+ * This interface extends the Configuration interface hereby adding methods to change configuration entries.
+ * Hereby not all configuration entries are necessarily mutable, since some entries may be read from non
+ * mutable areas of configuration. Of course, it is always possible to add a mutable shadow layer on top of all
+ * property sources to persist/control any changes applied. The exact management and storage persistence algorithm
+ * should be transparent.
+ *
+ * As a consequence clients should first check, using the corresponding methods, if entries can be added/updated or
+ * removed.
+ *
+ * This class should only used in a single threaded context, though all methods inherited from {@link Config}
+ * must be thread-safe. Methods handling configuration changes are expected to be used in a single threaded environment
+ * only. For multi-threaded us create a new instance of {@link MutableConfig} for each thread.
+ */
+public interface MutableConfig extends Config {
+
+    /**
+     * Storesd the changes. After a commit the change is not editable anymore. All changes applied will be written to
+     * the corresponding configuration backend.
+     *
+     * NOTE that changes applied must not necessarily be visible in the current {@link Config} instance,
+     * since visibility of changes also depends on the ordinals set on the {@link javax.config.spi.ConfigSource}s
+     * configured.
+     * @throws IllegalStateException if the request already has been committed or cancelled, or the commit fails.
+     */
+    void store();
+
+    /**
+     * Access the current configuration change context, built up on all the change context of the participating
+     * {@link MutableConfigSource} instances.
+     * @return the colleted changes as one single config change for the current transaction, or null, if no transaction
+     * is active.
+     */
+    ConfigChangeRequest getConfigChangeRequest();
+
+    /**
+     * Access the active {@link ChangePropagationPolicy}.This policy controls how configuration changes are written/published
+     * to the known {@link MutableConfigSource} instances of a {@link Config}.
+     * @return he active {@link ChangePropagationPolicy}, never null.
+     */
+    ChangePropagationPolicy getChangePropagationPolicy();
+
+    /**
+     * Sets a property.
+     *
+     * @param key   the property's key, not null.
+     * @param value the property's value, not null.
+     * @return the former property value, or null.
+     * @throws IllegalStateException if the key/value cannot be added, or the request is read-only.
+     */
+    MutableConfig put(String key, String value);
+
+    /**
+     * Puts all given configuration entries. This method should check that all given properties are
+     * basically removable, as defined by #isWritable. If any of the passed keys is not writable during this initial
+     * check, the operation should not perform any configuration changes and throw a
+     * {@link IllegalArgumentException}. If errors occur afterwards, when the properties are effectively
+     * written back to the backends, the errors should be 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 properties the properties tobe written, not null.
+     * @return the config change request
+     * @throws IllegalStateException if any of the given properties could not be written, or the request
+     * is read-only.
+     */
+    MutableConfig putAll(Map<String, String> properties);
+
+    /**
+     * Removes all given configuration entries. This method should check that all given properties are
+     * basically removable, as defined by #isRemovable. If any of the passed keys is not removable during this initial
+     * check, the operation should not perform any configuration changes and throw a
+     * {@link IllegalArgumentException}. If errors
+     * occur afterwards, when the properties are effectively written back to the backends, the errors should be
+     * 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 keys the property's keys to be removedProperties, not null.
+     * @return the config change request
+     * @throws IllegalStateException if any of the given keys could not be removedProperties, or the
+     * request is read-only.
+     */
+    MutableConfig remove(Collection<String> keys);
+
+    /**
+     * Removes all given configuration entries. This method should check that all given properties are
+     * basically removable, as defined by #isRemovable. If any of the passed keys is not removable during this initial
+     * check, the operation should not perform any configuration changes and throw a {@link IllegalArgumentException}. If errors
+     * occur afterwards, when the properties are effectively written back to the backends, the errors should be
+     * 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 keys the property's keys to be removedProperties, not null.
+     * @return the config change request
+     * @throws IllegalStateException if any of the given keys could not be removedProperties, or the request is read-only.
+     */
+    MutableConfig remove(String... keys);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/319f435c/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/MutableConfigProvider.java
----------------------------------------------------------------------
diff --git a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/MutableConfigProvider.java b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/MutableConfigProvider.java
new file mode 100644
index 0000000..6cf277d
--- /dev/null
+++ b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/MutableConfigProvider.java
@@ -0,0 +1,216 @@
+/*
+ * 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;
+
+import org.apache.tamaya.mutableconfig.spi.MutableConfigProviderSpi;
+import org.apache.tamaya.mutableconfig.spi.MutableConfigSource;
+import org.apache.tamaya.base.ServiceContextManager;
+
+import javax.config.Config;
+import javax.config.ConfigProvider;
+import javax.config.spi.ConfigSource;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.logging.Logger;
+
+
+/**
+ * Accessor for creating {@link MutableConfig} instances to change configuration and commit changes.
+ */
+public final class MutableConfigProvider {
+
+    private static final Logger LOG = Logger.getLogger(MutableConfigProvider.class.getName());
+    /**
+     * URIs used by this query instance to identify the backends to use for write operations.
+     */
+    private static MutableConfigProviderSpi spi(){
+            MutableConfigProviderSpi spi = ServiceContextManager.getServiceContext().getService(
+                    MutableConfigProviderSpi.class)  ;
+        if(spi==null){
+            throw new IllegalArgumentException("Failed to initialize MutableConfigurationProviderSpi - " +
+                    "mutable configuration support.");
+        }
+        return spi;
+    }
+
+
+    /** Singleton constructor. */
+    private MutableConfigProvider(){}
+
+    /**
+     * Creates a new {@link MutableConfig} for the given default configuration, using all
+     * {@link MutableConfigSource} instances found in its context and {@code autoCommit = false}.
+     *
+     * @return a new MutableConfiguration instance
+     */
+    public static MutableConfig createMutableConfig(){
+        return spi().createMutableConfig(
+                ConfigProvider.getConfig(), getApplyMostSignificantOnlyChangePolicy());
+    }
+
+    /**
+     * Creates a new {@link MutableConfig} for the given default configuration, using all
+     * {@link MutableConfigSource} instances found in its context and {@code autoCommit = false}.
+     * @param changePropgationPolicy policy that defines how a change is written back and which property
+     *                               sources are finally eligible for a write operation.
+     * @return a new MutableConfiguration instance, with the given change policy active.
+     */
+    public static MutableConfig createMutableConfig(ChangePropagationPolicy changePropgationPolicy){
+        return spi().createMutableConfig(
+                ConfigProvider.getConfig(), changePropgationPolicy);
+    }
+
+
+    /**
+     * Creates a new {@link MutableConfig} for the given configuration, using all
+     * {@link MutableConfigSource} instances found in its context and {@code MOST_SIGNIFICANT_ONLY_POLICY}
+     * configuration writing policy.
+     *
+     * @param configuration the configuration to use to write the changes/config.
+     * @return a new MutableConfiguration instance
+     */
+    public static MutableConfig createMutableConfig(Config configuration){
+        return createMutableConfig(configuration, MOST_SIGNIFICANT_ONLY_POLICY);
+    }
+
+    /**
+     * Creates a new {@link MutableConfig} for the given configuration, using all
+     * {@link MutableConfigSource} instances found in its context and {@code ALL_POLICY}
+     * configuration writing policy.
+     *
+     * @param configuration the configuration to use to write the changes/config.
+     * @param changePropagationPolicy the configuration writing policy.
+     * @return a new MutableConfiguration instance
+     */
+    public static MutableConfig createMutableConfig(Config configuration, ChangePropagationPolicy changePropagationPolicy){
+        return spi().createMutableConfig(configuration, changePropagationPolicy);
+    }
+
+    /**
+     * This propagation policy writes through all changes to all mutable property sources, where applicable.
+     * This is also the default policy.
+     * @return default all policy.
+     */
+    public static ChangePropagationPolicy getApplyAllChangePolicy(){
+        return ALL_POLICY;
+    }
+
+    /**
+     * 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;
+    }
+
+    /**
+     * 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);
+    }
+
+    /**
+     * 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;
+    }
+
+    /**
+     * This propagation policy writes through all changes to all mutable property sources, where applicable.
+     */
+    private static final ChangePropagationPolicy ALL_POLICY = (change, propertySources) -> {
+        for(ConfigSource propertySource: propertySources){
+            if(propertySource instanceof MutableConfigSource){
+                MutableConfigSource target = (MutableConfigSource)propertySource;
+                try{
+                    target.applyChange(change);
+                }catch(Exception e){
+                    LOG.warning("Failed to store changes '"+change+"' not applicable to "+target.getName()
+                    +"("+target.getClass().getName()+").");
+                }
+            }
+        }
+    };
+
+    /**
+     * This propagation policy writes changes only once to the most significant property source, where a change is
+     * applicable.
+     */
+    private static final ChangePropagationPolicy MOST_SIGNIFICANT_ONLY_POLICY = (change, propertySources) -> {
+        for(ConfigSource propertySource: propertySources){
+            if(propertySource instanceof MutableConfigSource){
+                MutableConfigSource target = (MutableConfigSource)propertySource;
+                try{
+                    target.applyChange(change);
+                }catch(Exception e){
+                    LOG.warning("Failed to store changes '"+change+"' not applicable to "+target.getName()
+                            +"("+target.getClass().getName()+").");
+                }
+                break;
+            }
+        }
+    };
+
+    /**
+     * This propagation policy writes changes only once to the most significant property source, where a change is
+     * applicable.
+     */
+    private static final ChangePropagationPolicy NONE_POLICY = (change, propertySources) -> LOG.warning("Cannot store changes '"+change+"': prohibited by change policy (read-only).");
+
+    /**
+     * This propagation policy writes through all changes to all mutable property sources, where applicable.
+     */
+    private static final class SelectiveChangeApplyPolicy implements ChangePropagationPolicy {
+
+        private Set<String> propertySourceNames = new HashSet<>();
+
+        SelectiveChangeApplyPolicy(String... propertySourceNames){
+            this.propertySourceNames.addAll(Arrays.asList(propertySourceNames));
+        }
+
+        @Override
+        public void applyChange(ConfigChangeRequest change, Iterable<ConfigSource> propertySources) {
+            for(ConfigSource propertySource: propertySources){
+                if(propertySource instanceof MutableConfigSource){
+                    if(this.propertySourceNames.contains(propertySource.getName())) {
+                        MutableConfigSource target = (MutableConfigSource) propertySource;
+                        try{
+                            target.applyChange(change);
+                        }catch(Exception e){
+                            LOG.warning("Failed to store changes '"+change+"' not applicable to "+target.getName()
+                                    +"("+target.getClass().getName()+").");
+                        }
+                        break;
+                    }
+                }
+            }
+        }
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/319f435c/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
deleted file mode 100644
index 580e283..0000000
--- a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/MutableConfiguration.java
+++ /dev/null
@@ -1,126 +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;
-
-import org.apache.tamaya.mutableconfig.spi.MutableConfigSource;
-
-import javax.config.Config;
-import java.util.Collection;
-import java.util.Map;
-
-
-/**
- * This interface extends the Configuration interface hereby adding methods to change configuration entries.
- * Hereby not all configuration entries are necessarily mutable, since some entries may be read from non
- * mutable areas of configuration. Of course, it is always possible to add a mutable shadow layer on top of all
- * property sources to persist/control any changes applied. The exact management and storage persistence algorithm
- * should be transparent.
- *
- * As a consequence clients should first check, using the corresponding methods, if entries can be added/updated or
- * removed.
- *
- * This class should only used in a single threaded context, though all methods inherited from {@link Config}
- * must be thread-safe. Methods handling configuration changes are expected to be used in a single threaded environment
- * only. For multi-threaded us create a new instance of {@link MutableConfiguration} for each thread.
- */
-public interface MutableConfiguration extends Config {
-
-    /**
-     * Storesd the changes. After a commit the change is not editable anymore. All changes applied will be written to
-     * the corresponding configuration backend.
-     *
-     * NOTE that changes applied must not necessarily be visible in the current {@link Config} instance,
-     * since visibility of changes also depends on the ordinals set on the {@link javax.config.spi.ConfigSource}s
-     * configured.
-     * @throws IllegalStateException if the request already has been committed or cancelled, or the commit fails.
-     */
-    void store();
-
-    /**
-     * Access the current configuration change context, built up on all the change context of the participating
-     * {@link MutableConfigSource} instances.
-     * @return the colleted changes as one single config change for the current transaction, or null, if no transaction
-     * is active.
-     */
-    ConfigChangeRequest getConfigChangeRequest();
-
-    /**
-     * Access the active {@link ChangePropagationPolicy}.This policy controls how configuration changes are written/published
-     * to the known {@link MutableConfigSource} instances of a {@link Config}.
-     * @return he active {@link ChangePropagationPolicy}, never null.
-     */
-    ChangePropagationPolicy getChangePropagationPolicy();
-
-    /**
-     * Sets a property.
-     *
-     * @param key   the property's key, not null.
-     * @param value the property's value, not null.
-     * @return the former property value, or null.
-     * @throws IllegalStateException if the key/value cannot be added, or the request is read-only.
-     */
-    MutableConfiguration put(String key, String value);
-
-    /**
-     * Puts all given configuration entries. This method should check that all given properties are
-     * basically removable, as defined by #isWritable. If any of the passed keys is not writable during this initial
-     * check, the operation should not perform any configuration changes and throw a
-     * {@link IllegalArgumentException}. If errors occur afterwards, when the properties are effectively
-     * written back to the backends, the errors should be 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 properties the properties tobe written, not null.
-     * @return the config change request
-     * @throws IllegalStateException if any of the given properties could not be written, or the request
-     * is read-only.
-     */
-    MutableConfiguration putAll(Map<String, String> properties);
-
-    /**
-     * Removes all given configuration entries. This method should check that all given properties are
-     * basically removable, as defined by #isRemovable. If any of the passed keys is not removable during this initial
-     * check, the operation should not perform any configuration changes and throw a
-     * {@link IllegalArgumentException}. If errors
-     * occur afterwards, when the properties are effectively written back to the backends, the errors should be
-     * 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 keys the property's keys to be removedProperties, not null.
-     * @return the config change request
-     * @throws IllegalStateException if any of the given keys could not be removedProperties, or the
-     * request is read-only.
-     */
-    MutableConfiguration remove(Collection<String> keys);
-
-    /**
-     * Removes all given configuration entries. This method should check that all given properties are
-     * basically removable, as defined by #isRemovable. If any of the passed keys is not removable during this initial
-     * check, the operation should not perform any configuration changes and throw a {@link IllegalArgumentException}. If errors
-     * occur afterwards, when the properties are effectively written back to the backends, the errors should be
-     * 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 keys the property's keys to be removedProperties, not null.
-     * @return the config change request
-     * @throws IllegalStateException if any of the given keys could not be removedProperties, or the request is read-only.
-     */
-    MutableConfiguration remove(String... keys);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/319f435c/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
deleted file mode 100644
index f5af5dc..0000000
--- a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/MutableConfigurationProvider.java
+++ /dev/null
@@ -1,216 +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;
-
-import org.apache.tamaya.mutableconfig.spi.MutableConfigurationProviderSpi;
-import org.apache.tamaya.mutableconfig.spi.MutableConfigSource;
-import org.apache.tamaya.base.ServiceContextManager;
-
-import javax.config.Config;
-import javax.config.ConfigProvider;
-import javax.config.spi.ConfigSource;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.logging.Logger;
-
-
-/**
- * Accessor for creating {@link MutableConfiguration} instances to change configuration and commit changes.
- */
-public final class MutableConfigurationProvider {
-
-    private static final Logger LOG = Logger.getLogger(MutableConfigurationProvider.class.getName());
-    /**
-     * URIs used by this query instance to identify the backends to use for write operations.
-     */
-    private static MutableConfigurationProviderSpi spi(){
-            MutableConfigurationProviderSpi spi = ServiceContextManager.getServiceContext().getService(
-                    MutableConfigurationProviderSpi.class)  ;
-        if(spi==null){
-            throw new IllegalArgumentException("Failed to initialize MutableConfigurationProviderSpi - " +
-                    "mutable configuration support.");
-        }
-        return spi;
-    }
-
-
-    /** Singleton constructor. */
-    private MutableConfigurationProvider(){}
-
-    /**
-     * Creates a new {@link MutableConfiguration} for the given default configuration, using all
-     * {@link MutableConfigSource} instances found in its context and {@code autoCommit = false}.
-     *
-     * @return a new MutableConfiguration instance
-     */
-    public static MutableConfiguration createMutableConfiguration(){
-        return spi().createMutableConfiguration(
-                ConfigProvider.getConfig(), getApplyMostSignificantOnlyChangePolicy());
-    }
-
-    /**
-     * Creates a new {@link MutableConfiguration} for the given default configuration, using all
-     * {@link MutableConfigSource} instances found in its context and {@code autoCommit = false}.
-     * @param changePropgationPolicy policy that defines how a change is written back and which property
-     *                               sources are finally eligible for a write operation.
-     * @return a new MutableConfiguration instance, with the given change policy active.
-     */
-    public static MutableConfiguration createMutableConfiguration(ChangePropagationPolicy changePropgationPolicy){
-        return spi().createMutableConfiguration(
-                ConfigProvider.getConfig(), changePropgationPolicy);
-    }
-
-
-    /**
-     * Creates a new {@link MutableConfiguration} for the given configuration, using all
-     * {@link MutableConfigSource} instances found in its context and {@code MOST_SIGNIFICANT_ONLY_POLICY}
-     * configuration writing policy.
-     *
-     * @param configuration the configuration to use to write the changes/config.
-     * @return a new MutableConfiguration instance
-     */
-    public static MutableConfiguration createMutableConfiguration(Config configuration){
-        return createMutableConfiguration(configuration, MOST_SIGNIFICANT_ONLY_POLICY);
-    }
-
-    /**
-     * Creates a new {@link MutableConfiguration} for the given configuration, using all
-     * {@link MutableConfigSource} instances found in its context and {@code ALL_POLICY}
-     * configuration writing policy.
-     *
-     * @param configuration the configuration to use to write the changes/config.
-     * @param changePropagationPolicy the configuration writing policy.
-     * @return a new MutableConfiguration instance
-     */
-    public static MutableConfiguration createMutableConfiguration(Config configuration, ChangePropagationPolicy changePropagationPolicy){
-        return spi().createMutableConfiguration(configuration, changePropagationPolicy);
-    }
-
-    /**
-     * This propagation policy writes through all changes to all mutable property sources, where applicable.
-     * This is also the default policy.
-     * @return default all policy.
-     */
-    public static ChangePropagationPolicy getApplyAllChangePolicy(){
-        return ALL_POLICY;
-    }
-
-    /**
-     * 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;
-    }
-
-    /**
-     * 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);
-    }
-
-    /**
-     * 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;
-    }
-
-    /**
-     * This propagation policy writes through all changes to all mutable property sources, where applicable.
-     */
-    private static final ChangePropagationPolicy ALL_POLICY = (change, propertySources) -> {
-        for(ConfigSource propertySource: propertySources){
-            if(propertySource instanceof MutableConfigSource){
-                MutableConfigSource target = (MutableConfigSource)propertySource;
-                try{
-                    target.applyChange(change);
-                }catch(Exception e){
-                    LOG.warning("Failed to store changes '"+change+"' not applicable to "+target.getName()
-                    +"("+target.getClass().getName()+").");
-                }
-            }
-        }
-    };
-
-    /**
-     * This propagation policy writes changes only once to the most significant property source, where a change is
-     * applicable.
-     */
-    private static final ChangePropagationPolicy MOST_SIGNIFICANT_ONLY_POLICY = (change, propertySources) -> {
-        for(ConfigSource propertySource: propertySources){
-            if(propertySource instanceof MutableConfigSource){
-                MutableConfigSource target = (MutableConfigSource)propertySource;
-                try{
-                    target.applyChange(change);
-                }catch(Exception e){
-                    LOG.warning("Failed to store changes '"+change+"' not applicable to "+target.getName()
-                            +"("+target.getClass().getName()+").");
-                }
-                break;
-            }
-        }
-    };
-
-    /**
-     * This propagation policy writes changes only once to the most significant property source, where a change is
-     * applicable.
-     */
-    private static final ChangePropagationPolicy NONE_POLICY = (change, propertySources) -> LOG.warning("Cannot store changes '"+change+"': prohibited by change policy (read-only).");
-
-    /**
-     * This propagation policy writes through all changes to all mutable property sources, where applicable.
-     */
-    private static final class SelectiveChangeApplyPolicy implements ChangePropagationPolicy {
-
-        private Set<String> propertySourceNames = new HashSet<>();
-
-        SelectiveChangeApplyPolicy(String... propertySourceNames){
-            this.propertySourceNames.addAll(Arrays.asList(propertySourceNames));
-        }
-
-        @Override
-        public void applyChange(ConfigChangeRequest change, Iterable<ConfigSource> propertySources) {
-            for(ConfigSource propertySource: propertySources){
-                if(propertySource instanceof MutableConfigSource){
-                    if(this.propertySourceNames.contains(propertySource.getName())) {
-                        MutableConfigSource target = (MutableConfigSource) propertySource;
-                        try{
-                            target.applyChange(change);
-                        }catch(Exception e){
-                            LOG.warning("Failed to store changes '"+change+"' not applicable to "+target.getName()
-                                    +"("+target.getClass().getName()+").");
-                        }
-                        break;
-                    }
-                }
-            }
-        }
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/319f435c/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/internal/DefaultMutableConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/internal/DefaultMutableConfiguration.java b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/internal/DefaultMutableConfiguration.java
index 7d331aa..d8d137d 100644
--- a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/internal/DefaultMutableConfiguration.java
+++ b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/internal/DefaultMutableConfiguration.java
@@ -19,7 +19,7 @@
 package org.apache.tamaya.mutableconfig.internal;
 
 import org.apache.tamaya.mutableconfig.ChangePropagationPolicy;
-import org.apache.tamaya.mutableconfig.MutableConfiguration;
+import org.apache.tamaya.mutableconfig.MutableConfig;
 import org.apache.tamaya.mutableconfig.ConfigChangeRequest;
 import org.apache.tamaya.mutableconfig.spi.MutableConfigSource;
 import org.osgi.service.component.annotations.Component;
@@ -31,10 +31,10 @@ import java.util.logging.Logger;
 
 
 /**
- * Default implementation of a {@link MutableConfiguration}.
+ * Default implementation of a {@link MutableConfig}.
  */
 @Component
-public class DefaultMutableConfiguration implements MutableConfiguration {
+public class DefaultMutableConfiguration implements MutableConfig {
     private static final Logger LOG = Logger.getLogger(DefaultMutableConfiguration.class.getName());
     private ConfigChangeRequest changeRequest = new ConfigChangeRequest(UUID.randomUUID().toString());
     private final Config config;
@@ -67,19 +67,19 @@ public class DefaultMutableConfiguration implements MutableConfiguration {
 
 
     @Override
-    public MutableConfiguration put(String key, String value) {
+    public MutableConfig put(String key, String value) {
         changeRequest.put(key, value);
         return this;
     }
 
     @Override
-    public MutableConfiguration putAll(Map<String, String> properties) {
+    public MutableConfig putAll(Map<String, String> properties) {
         changeRequest.putAll(properties);
         return this;
     }
 
     @Override
-    public MutableConfiguration remove(String... keys) {
+    public MutableConfig remove(String... keys) {
         changeRequest.removeAll(Arrays.asList(keys));
         return this;
     }
@@ -91,7 +91,7 @@ public class DefaultMutableConfiguration implements MutableConfiguration {
     }
 
     @Override
-    public MutableConfiguration remove(Collection<String> keys) {
+    public MutableConfig remove(Collection<String> keys) {
         for(MutableConfigSource target:getMutablePropertySources()) {
             changeRequest.removeAll(keys);
         }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/319f435c/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 6d7f57b..d21366a 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
@@ -19,8 +19,8 @@
 package org.apache.tamaya.mutableconfig.internal;
 
 import org.apache.tamaya.mutableconfig.ChangePropagationPolicy;
-import org.apache.tamaya.mutableconfig.MutableConfiguration;
-import org.apache.tamaya.mutableconfig.spi.MutableConfigurationProviderSpi;
+import org.apache.tamaya.mutableconfig.MutableConfig;
+import org.apache.tamaya.mutableconfig.spi.MutableConfigProviderSpi;
 import org.osgi.service.component.annotations.Component;
 
 import javax.config.Config;
@@ -31,11 +31,11 @@ import javax.config.Config;
  * each instance of {@link Config} a new instance has to be returned.
  */
 @Component
-public class DefaultMutableConfigurationSpi implements MutableConfigurationProviderSpi {
+public class DefaultMutableConfigurationSpi implements MutableConfigProviderSpi {
 
     @Override
-    public MutableConfiguration createMutableConfiguration(Config configuration,
-                                                    ChangePropagationPolicy propagationPolicy){
+    public MutableConfig createMutableConfig(Config configuration,
+                                             ChangePropagationPolicy propagationPolicy){
         return new DefaultMutableConfiguration(configuration, propagationPolicy);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/319f435c/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/spi/MutableConfigProviderSpi.java
----------------------------------------------------------------------
diff --git a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/spi/MutableConfigProviderSpi.java b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/spi/MutableConfigProviderSpi.java
new file mode 100644
index 0000000..c3755a5
--- /dev/null
+++ b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/spi/MutableConfigProviderSpi.java
@@ -0,0 +1,44 @@
+/*
+ * 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.spi;
+
+import org.apache.tamaya.mutableconfig.ChangePropagationPolicy;
+import org.apache.tamaya.mutableconfig.MutableConfig;
+import org.apache.tamaya.mutableconfig.MutableConfigProvider;
+
+import javax.config.Config;
+
+
+/**
+ * Provider SPI used by {@link MutableConfigProvider}. Providers may override
+ * other providers registering with a higher {@link javax.annotation.Priority} value annotated.
+ */
+public interface MutableConfigProviderSpi {
+
+   /**
+    * Creates a new {@link MutableConfig} with {@code autoCommit = false} as default.
+    *
+    * @param configuration the configuration, not null.
+    * @param propagationPolicy policy that defines how changes are published to the property
+    *                          sources.
+    * @return a new mutable configuration instance.
+    */
+   MutableConfig createMutableConfig(Config configuration,
+                                     ChangePropagationPolicy propagationPolicy);
+}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/319f435c/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/spi/MutableConfigurationProviderSpi.java
----------------------------------------------------------------------
diff --git a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/spi/MutableConfigurationProviderSpi.java b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/spi/MutableConfigurationProviderSpi.java
deleted file mode 100644
index bd1eca0..0000000
--- a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/spi/MutableConfigurationProviderSpi.java
+++ /dev/null
@@ -1,43 +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.spi;
-
-import org.apache.tamaya.mutableconfig.ChangePropagationPolicy;
-import org.apache.tamaya.mutableconfig.MutableConfiguration;
-
-import javax.config.Config;
-
-
-/**
- * Provider SPI used by {@link org.apache.tamaya.mutableconfig.MutableConfigurationProvider}. Providers may override
- * other providers registering with a higher {@link javax.annotation.Priority} value annotated.
- */
-public interface MutableConfigurationProviderSpi {
-
-   /**
-    * Creates a new {@link MutableConfiguration} with {@code autoCommit = false} as default.
-    *
-    * @param configuration the configuration, not null.
-    * @param propagationPolicy policy that defines how changes are published to the property
-    *                          sources.
-    * @return a new mutable configuration instance.
-    */
-   MutableConfiguration createMutableConfiguration(Config configuration,
-                                                   ChangePropagationPolicy propagationPolicy);
-}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/319f435c/modules/mutable-config/src/main/resources/META-INF/services/org.apache.tamaya.mutableconfig.spi.MutableConfigProviderSpi
----------------------------------------------------------------------
diff --git a/modules/mutable-config/src/main/resources/META-INF/services/org.apache.tamaya.mutableconfig.spi.MutableConfigProviderSpi b/modules/mutable-config/src/main/resources/META-INF/services/org.apache.tamaya.mutableconfig.spi.MutableConfigProviderSpi
new file mode 100644
index 0000000..eb366fc
--- /dev/null
+++ b/modules/mutable-config/src/main/resources/META-INF/services/org.apache.tamaya.mutableconfig.spi.MutableConfigProviderSpi
@@ -0,0 +1,19 @@
+#
+# 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 current 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.
+#
+org.apache.tamaya.mutableconfig.internal.DefaultMutableConfigurationSpi
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/319f435c/modules/mutable-config/src/main/resources/META-INF/services/org.apache.tamaya.mutableconfig.spi.MutableConfigurationProviderSpi
----------------------------------------------------------------------
diff --git a/modules/mutable-config/src/main/resources/META-INF/services/org.apache.tamaya.mutableconfig.spi.MutableConfigurationProviderSpi b/modules/mutable-config/src/main/resources/META-INF/services/org.apache.tamaya.mutableconfig.spi.MutableConfigurationProviderSpi
deleted file mode 100644
index eb366fc..0000000
--- a/modules/mutable-config/src/main/resources/META-INF/services/org.apache.tamaya.mutableconfig.spi.MutableConfigurationProviderSpi
+++ /dev/null
@@ -1,19 +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 current 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.
-#
-org.apache.tamaya.mutableconfig.internal.DefaultMutableConfigurationSpi
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/319f435c/modules/mutable-config/src/test/java/org/apache/tamaya/mutableconfig/MutableConfigProviderTest.java
----------------------------------------------------------------------
diff --git a/modules/mutable-config/src/test/java/org/apache/tamaya/mutableconfig/MutableConfigProviderTest.java b/modules/mutable-config/src/test/java/org/apache/tamaya/mutableconfig/MutableConfigProviderTest.java
new file mode 100644
index 0000000..fbbe1ab
--- /dev/null
+++ b/modules/mutable-config/src/test/java/org/apache/tamaya/mutableconfig/MutableConfigProviderTest.java
@@ -0,0 +1,85 @@
+/*
+ * 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;
+
+import org.junit.Test;
+
+import javax.config.ConfigProvider;
+
+import static org.junit.Assert.*;
+
+/**
+ * Created by atsticks on 26.08.16.
+ */
+public class MutableConfigProviderTest {
+    @Test
+    public void createMutableConfiguration() throws Exception {
+        assertNotNull(MutableConfigProvider.createMutableConfig());
+    }
+
+    @Test
+    public void createMutableConfiguration1() throws Exception {
+        MutableConfig cfg = MutableConfigProvider
+                .createMutableConfig(ConfigProvider.getConfig());
+        assertNotNull(cfg);
+        assertEquals(cfg.getChangePropagationPolicy(),
+                MutableConfigProvider.getApplyMostSignificantOnlyChangePolicy());
+    }
+
+    @Test
+    public void createMutableConfiguration2() throws Exception {
+        ChangePropagationPolicy policy = MutableConfigProvider.getApplySelectiveChangePolicy("blabla");
+        MutableConfig cfg = MutableConfigProvider
+                .createMutableConfig(ConfigProvider.getConfig(),
+                        policy);
+        assertNotNull(cfg);
+        assertEquals(cfg.getChangePropagationPolicy(), policy);
+    }
+
+    @Test
+    public void createMutableConfiguration3() throws Exception {
+        ChangePropagationPolicy policy = MutableConfigProvider.getApplySelectiveChangePolicy("gugus");
+        MutableConfig cfg = MutableConfigProvider
+                .createMutableConfig(policy);
+        assertNotNull(cfg);
+        assertEquals(cfg.getChangePropagationPolicy(), policy);
+    }
+
+    @Test
+    public void getApplyAllChangePolicy() throws Exception {
+        assertNotNull(MutableConfigProvider.getApplyAllChangePolicy());
+    }
+
+    @Test
+    public void getApplyMostSignificantOnlyChangePolicy() throws Exception {
+        assertNotNull(MutableConfigProvider.getApplyMostSignificantOnlyChangePolicy());
+    }
+
+    @Test
+    public void getApplySelectiveChangePolicy() throws Exception {
+        assertNotNull(MutableConfigProvider.getApplySelectiveChangePolicy());
+    }
+
+    @Test
+    public void getApplyNonePolicy() throws Exception {
+        assertNotNull(MutableConfigProvider.getApplyNonePolicy());
+    }
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/319f435c/modules/mutable-config/src/test/java/org/apache/tamaya/mutableconfig/MutableConfigTest.java
----------------------------------------------------------------------
diff --git a/modules/mutable-config/src/test/java/org/apache/tamaya/mutableconfig/MutableConfigTest.java b/modules/mutable-config/src/test/java/org/apache/tamaya/mutableconfig/MutableConfigTest.java
new file mode 100644
index 0000000..cde0e6f
--- /dev/null
+++ b/modules/mutable-config/src/test/java/org/apache/tamaya/mutableconfig/MutableConfigTest.java
@@ -0,0 +1,186 @@
+/*
+ * 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;
+
+import org.apache.tamaya.mutableconfig.internal.WritablePropertiesSource;
+import org.apache.tamaya.mutableconfig.internal.WritableXmlPropertiesSource;
+import org.junit.Test;
+
+import javax.config.ConfigProvider;
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+import static org.junit.Assert.*;
+
+/**
+ * Tests for {@link MutableConfig}.
+ */
+public class MutableConfigTest {
+
+    /**
+     * Test create change request.
+     *
+     * @throws Exception the exception
+     */
+    @Test
+    public void testCreateMutableConfiguration() throws Exception {
+        File f = File.createTempFile("ConfigChangeRequest",".properties");
+        MutableConfig cfg1 = MutableConfigProvider.createMutableConfig(
+                ConfigProvider.getConfig(),
+                MutableConfigProvider.getApplyAllChangePolicy());
+        assertNotNull(cfg1);
+        assertNotNull(cfg1.getConfigChangeRequest());
+        MutableConfig cfg2 = MutableConfigProvider.createMutableConfig(
+                ConfigProvider.getConfig());
+        assertNotNull(cfg2);
+        assertNotNull(cfg2.getConfigChangeRequest());
+        assertTrue(cfg1!=cfg2);
+        assertTrue(cfg1.getConfigChangeRequest()!=cfg2.getConfigChangeRequest());
+    }
+
+    /**
+     * Test null create change request.
+     *
+     * @throws Exception the exception
+     */
+    @Test(expected=NullPointerException.class)
+    public void testNullCreateMutableConfiguration1() throws Exception {
+        MutableConfigProvider.createMutableConfig(
+                (javax.config.Config) null);
+    }
+
+    /**
+     * Test null create change request.
+     *
+     * @throws Exception the exception
+     */
+    @Test(expected=NullPointerException.class)
+    public void testNullCreateMutableConfiguration2() throws Exception {
+        MutableConfigProvider.createMutableConfig(
+                (ChangePropagationPolicy) null);
+    }
+
+    /**
+     * Test read write properties with rollback.
+     *
+     * @throws IOException the io exception
+     */
+    @Test
+    public void testReadWriteProperties_WithCancel() throws IOException {
+        WritablePropertiesSource.target.delete();
+        MutableConfig mutConfig = MutableConfigProvider.createMutableConfig(
+                ConfigProvider.getConfig()
+        );
+        mutConfig.put("key1", "value1");
+        Map<String,String> cm = new HashMap<>();
+        cm.put("key2", "value2");
+        cm.put("key3", "value3");
+    }
+
+    /**
+     * Test read write properties with commit.
+     *
+     * @throws IOException the io exception
+     */
+    @Test
+    public void testReadWriteProperties_WithCommit() throws IOException {
+        WritablePropertiesSource.target.delete();
+        MutableConfig mutConfig = MutableConfigProvider.createMutableConfig(
+                ConfigProvider.getConfig()
+        );
+        mutConfig.put("key1", "value1");
+        Map<String,String> cm = new HashMap<>();
+        cm.put("key2", "value2");
+        cm.put("key3", "value3");
+        mutConfig.putAll(cm);
+        mutConfig.store();
+        assertTrue(WritablePropertiesSource.target.exists());
+        MutableConfig mmutConfig2 = MutableConfigProvider.createMutableConfig(
+                ConfigProvider.getConfig()
+        );
+        mmutConfig2.remove("foo");
+        mmutConfig2.remove("key3");
+        mmutConfig2.put("key1", "value1.2");
+        mmutConfig2.put("key4", "value4");
+        mmutConfig2.store();
+        Properties props = new Properties();
+        props.load(WritablePropertiesSource.target.toURL().openStream());
+        assertEquals(3, props.size());
+        assertEquals("value1.2", props.getProperty("key1"));
+        assertEquals("value2", props.getProperty("key2"));
+        assertEquals("value4", props.getProperty("key4"));
+    }
+
+    /**
+     * Test read write xml properties with commit.
+     *
+     * @throws IOException the io exception
+     */
+    @Test
+    public void testReadWriteXmlProperties_WithCommit() throws IOException {
+        WritableXmlPropertiesSource.target.delete();
+        MutableConfig cfg = MutableConfigProvider.createMutableConfig(
+                ConfigProvider.getConfig(), MutableConfigProvider.getApplyAllChangePolicy());
+        cfg.put("key1", "value1");
+        Map<String,String> cm = new HashMap<>();
+        cm.put("key2", "value2");
+        cm.put("key3", "value3");
+        cfg.putAll(cm);
+        cfg.store();
+        assertTrue(WritableXmlPropertiesSource.target.exists());
+        MutableConfig cfg2 = MutableConfigProvider.createMutableConfig(
+                ConfigProvider.getConfig());
+        assertTrue(cfg != cfg2);
+        cfg2.remove("foo");
+        cfg2.remove("key3");
+        cfg2.put("key1", "value1.2");
+        cfg2.put("key4", "value4");
+        cfg2.store();
+        Properties props = new Properties();
+        props.loadFromXML( WritableXmlPropertiesSource.target.toURL().openStream());
+        assertEquals(3, props.size());
+        assertEquals("value1", props.getProperty("key1"));
+        assertEquals("value2", props.getProperty("key2"));
+    }
+
+    /**
+     * Test read write xml properties with commit.
+     *
+     * @throws IOException the io exception
+     */
+    @Test
+    public void testWriteWithNoChangePolicy() throws IOException {
+        WritableXmlPropertiesSource.target.delete();
+        MutableConfig cfg = MutableConfigProvider.createMutableConfig(
+                ConfigProvider.getConfig(),
+                MutableConfigProvider.getApplyNonePolicy());
+        cfg.put("key1", "value1");
+        Map<String,String> cm = new HashMap<>();
+        cm.put("key2", "value2");
+        cm.put("key3", "value3");
+        cfg.putAll(cm);
+        cfg.store();
+        assertFalse(WritableXmlPropertiesSource.target.exists());
+    }
+
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/319f435c/modules/mutable-config/src/test/java/org/apache/tamaya/mutableconfig/MutableConfigurationProviderTest.java
----------------------------------------------------------------------
diff --git a/modules/mutable-config/src/test/java/org/apache/tamaya/mutableconfig/MutableConfigurationProviderTest.java b/modules/mutable-config/src/test/java/org/apache/tamaya/mutableconfig/MutableConfigurationProviderTest.java
deleted file mode 100644
index a7adbff..0000000
--- a/modules/mutable-config/src/test/java/org/apache/tamaya/mutableconfig/MutableConfigurationProviderTest.java
+++ /dev/null
@@ -1,85 +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;
-
-import org.junit.Test;
-
-import javax.config.ConfigProvider;
-
-import static org.junit.Assert.*;
-
-/**
- * Created by atsticks on 26.08.16.
- */
-public class MutableConfigurationProviderTest {
-    @Test
-    public void createMutableConfiguration() throws Exception {
-        assertNotNull(MutableConfigurationProvider.createMutableConfiguration());
-    }
-
-    @Test
-    public void createMutableConfiguration1() throws Exception {
-        MutableConfiguration cfg = MutableConfigurationProvider
-                .createMutableConfiguration(ConfigProvider.getConfig());
-        assertNotNull(cfg);
-        assertEquals(cfg.getChangePropagationPolicy(),
-                MutableConfigurationProvider.getApplyMostSignificantOnlyChangePolicy());
-    }
-
-    @Test
-    public void createMutableConfiguration2() throws Exception {
-        ChangePropagationPolicy policy = MutableConfigurationProvider.getApplySelectiveChangePolicy("blabla");
-        MutableConfiguration cfg = MutableConfigurationProvider
-                .createMutableConfiguration(ConfigProvider.getConfig(),
-                        policy);
-        assertNotNull(cfg);
-        assertEquals(cfg.getChangePropagationPolicy(), policy);
-    }
-
-    @Test
-    public void createMutableConfiguration3() throws Exception {
-        ChangePropagationPolicy policy = MutableConfigurationProvider.getApplySelectiveChangePolicy("gugus");
-        MutableConfiguration cfg = MutableConfigurationProvider
-                .createMutableConfiguration(policy);
-        assertNotNull(cfg);
-        assertEquals(cfg.getChangePropagationPolicy(), policy);
-    }
-
-    @Test
-    public void getApplyAllChangePolicy() throws Exception {
-        assertNotNull(MutableConfigurationProvider.getApplyAllChangePolicy());
-    }
-
-    @Test
-    public void getApplyMostSignificantOnlyChangePolicy() throws Exception {
-        assertNotNull(MutableConfigurationProvider.getApplyMostSignificantOnlyChangePolicy());
-    }
-
-    @Test
-    public void getApplySelectiveChangePolicy() throws Exception {
-        assertNotNull(MutableConfigurationProvider.getApplySelectiveChangePolicy());
-    }
-
-    @Test
-    public void getApplyNonePolicy() throws Exception {
-        assertNotNull(MutableConfigurationProvider.getApplyNonePolicy());
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/319f435c/modules/mutable-config/src/test/java/org/apache/tamaya/mutableconfig/MutableConfigurationTest.java
----------------------------------------------------------------------
diff --git a/modules/mutable-config/src/test/java/org/apache/tamaya/mutableconfig/MutableConfigurationTest.java b/modules/mutable-config/src/test/java/org/apache/tamaya/mutableconfig/MutableConfigurationTest.java
deleted file mode 100644
index dae8478..0000000
--- a/modules/mutable-config/src/test/java/org/apache/tamaya/mutableconfig/MutableConfigurationTest.java
+++ /dev/null
@@ -1,186 +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;
-
-import org.apache.tamaya.mutableconfig.internal.WritablePropertiesSource;
-import org.apache.tamaya.mutableconfig.internal.WritableXmlPropertiesSource;
-import org.junit.Test;
-
-import javax.config.ConfigProvider;
-import java.io.File;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-
-import static org.junit.Assert.*;
-
-/**
- * Tests for {@link MutableConfiguration}.
- */
-public class MutableConfigurationTest {
-
-    /**
-     * Test create change request.
-     *
-     * @throws Exception the exception
-     */
-    @Test
-    public void testCreateMutableConfiguration() throws Exception {
-        File f = File.createTempFile("ConfigChangeRequest",".properties");
-        MutableConfiguration cfg1 = MutableConfigurationProvider.createMutableConfiguration(
-                ConfigProvider.getConfig(),
-                MutableConfigurationProvider.getApplyAllChangePolicy());
-        assertNotNull(cfg1);
-        assertNotNull(cfg1.getConfigChangeRequest());
-        MutableConfiguration cfg2 = MutableConfigurationProvider.createMutableConfiguration(
-                ConfigProvider.getConfig());
-        assertNotNull(cfg2);
-        assertNotNull(cfg2.getConfigChangeRequest());
-        assertTrue(cfg1!=cfg2);
-        assertTrue(cfg1.getConfigChangeRequest()!=cfg2.getConfigChangeRequest());
-    }
-
-    /**
-     * Test null create change request.
-     *
-     * @throws Exception the exception
-     */
-    @Test(expected=NullPointerException.class)
-    public void testNullCreateMutableConfiguration1() throws Exception {
-        MutableConfigurationProvider.createMutableConfiguration(
-                (javax.config.Config) null);
-    }
-
-    /**
-     * Test null create change request.
-     *
-     * @throws Exception the exception
-     */
-    @Test(expected=NullPointerException.class)
-    public void testNullCreateMutableConfiguration2() throws Exception {
-        MutableConfigurationProvider.createMutableConfiguration(
-                (ChangePropagationPolicy) null);
-    }
-
-    /**
-     * Test read write properties with rollback.
-     *
-     * @throws IOException the io exception
-     */
-    @Test
-    public void testReadWriteProperties_WithCancel() throws IOException {
-        WritablePropertiesSource.target.delete();
-        MutableConfiguration mutConfig = MutableConfigurationProvider.createMutableConfiguration(
-                ConfigProvider.getConfig()
-        );
-        mutConfig.put("key1", "value1");
-        Map<String,String> cm = new HashMap<>();
-        cm.put("key2", "value2");
-        cm.put("key3", "value3");
-    }
-
-    /**
-     * Test read write properties with commit.
-     *
-     * @throws IOException the io exception
-     */
-    @Test
-    public void testReadWriteProperties_WithCommit() throws IOException {
-        WritablePropertiesSource.target.delete();
-        MutableConfiguration mutConfig = MutableConfigurationProvider.createMutableConfiguration(
-                ConfigProvider.getConfig()
-        );
-        mutConfig.put("key1", "value1");
-        Map<String,String> cm = new HashMap<>();
-        cm.put("key2", "value2");
-        cm.put("key3", "value3");
-        mutConfig.putAll(cm);
-        mutConfig.store();
-        assertTrue(WritablePropertiesSource.target.exists());
-        MutableConfiguration mmutConfig2 = MutableConfigurationProvider.createMutableConfiguration(
-                ConfigProvider.getConfig()
-        );
-        mmutConfig2.remove("foo");
-        mmutConfig2.remove("key3");
-        mmutConfig2.put("key1", "value1.2");
-        mmutConfig2.put("key4", "value4");
-        mmutConfig2.store();
-        Properties props = new Properties();
-        props.load(WritablePropertiesSource.target.toURL().openStream());
-        assertEquals(3, props.size());
-        assertEquals("value1.2", props.getProperty("key1"));
-        assertEquals("value2", props.getProperty("key2"));
-        assertEquals("value4", props.getProperty("key4"));
-    }
-
-    /**
-     * Test read write xml properties with commit.
-     *
-     * @throws IOException the io exception
-     */
-    @Test
-    public void testReadWriteXmlProperties_WithCommit() throws IOException {
-        WritableXmlPropertiesSource.target.delete();
-        MutableConfiguration cfg = MutableConfigurationProvider.createMutableConfiguration(
-                ConfigProvider.getConfig(), MutableConfigurationProvider.getApplyAllChangePolicy());
-        cfg.put("key1", "value1");
-        Map<String,String> cm = new HashMap<>();
-        cm.put("key2", "value2");
-        cm.put("key3", "value3");
-        cfg.putAll(cm);
-        cfg.store();
-        assertTrue(WritableXmlPropertiesSource.target.exists());
-        MutableConfiguration cfg2 = MutableConfigurationProvider.createMutableConfiguration(
-                ConfigProvider.getConfig());
-        assertTrue(cfg != cfg2);
-        cfg2.remove("foo");
-        cfg2.remove("key3");
-        cfg2.put("key1", "value1.2");
-        cfg2.put("key4", "value4");
-        cfg2.store();
-        Properties props = new Properties();
-        props.loadFromXML( WritableXmlPropertiesSource.target.toURL().openStream());
-        assertEquals(3, props.size());
-        assertEquals("value1", props.getProperty("key1"));
-        assertEquals("value2", props.getProperty("key2"));
-    }
-
-    /**
-     * Test read write xml properties with commit.
-     *
-     * @throws IOException the io exception
-     */
-    @Test
-    public void testWriteWithNoChangePolicy() throws IOException {
-        WritableXmlPropertiesSource.target.delete();
-        MutableConfiguration cfg = MutableConfigurationProvider.createMutableConfiguration(
-                ConfigProvider.getConfig(),
-                MutableConfigurationProvider.getApplyNonePolicy());
-        cfg.put("key1", "value1");
-        Map<String,String> cm = new HashMap<>();
-        cm.put("key2", "value2");
-        cm.put("key3", "value3");
-        cfg.putAll(cm);
-        cfg.store();
-        assertFalse(WritableXmlPropertiesSource.target.exists());
-    }
-
-
-}
\ No newline at end of file


[2/2] incubator-tamaya-extensions git commit: Fixed compile issue.

Posted by an...@apache.org.
Fixed compile issue.

Signed-off-by: Anatole Tresch <an...@apache.org>


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

Branch: refs/heads/configjsr
Commit: 2abb7a772772ef7af993f470efa6bad4c2dbbf4c
Parents: 319f435
Author: Anatole Tresch <an...@apache.org>
Authored: Sun Apr 22 19:00:58 2018 +0200
Committer: Anatole Tresch <an...@apache.org>
Committed: Sun Apr 22 19:00:58 2018 +0200

----------------------------------------------------------------------
 .../internal/DefaultMutableConfig.java          | 148 +++++++++++++++++++
 .../internal/DefaultMutableConfiguration.java   | 128 ----------------
 .../DefaultMutableConfigurationSpi.java         |   4 +-
 3 files changed, 150 insertions(+), 130 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/2abb7a77/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/internal/DefaultMutableConfig.java
----------------------------------------------------------------------
diff --git a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/internal/DefaultMutableConfig.java b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/internal/DefaultMutableConfig.java
new file mode 100644
index 0000000..4af5103
--- /dev/null
+++ b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/internal/DefaultMutableConfig.java
@@ -0,0 +1,148 @@
+/*
+ * 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.internal;
+
+import org.apache.tamaya.base.ConfigContext;
+import org.apache.tamaya.base.ConfigContextSupplier;
+import org.apache.tamaya.base.DefaultConfigValue;
+import org.apache.tamaya.mutableconfig.ChangePropagationPolicy;
+import org.apache.tamaya.mutableconfig.MutableConfig;
+import org.apache.tamaya.mutableconfig.ConfigChangeRequest;
+import org.apache.tamaya.mutableconfig.spi.MutableConfigSource;
+import org.osgi.service.component.annotations.Component;
+
+import javax.config.Config;
+import javax.config.ConfigValue;
+import javax.config.spi.ConfigSource;
+import java.util.*;
+import java.util.function.Consumer;
+import java.util.logging.Logger;
+
+
+/**
+ * Default implementation of a {@link MutableConfig}.
+ */
+@Component
+public class DefaultMutableConfig implements MutableConfig, ConfigContextSupplier {
+    private static final Logger LOG = Logger.getLogger(DefaultMutableConfig.class.getName());
+    private ConfigChangeRequest changeRequest = new ConfigChangeRequest(UUID.randomUUID().toString());
+    private final Config config;
+    private ChangePropagationPolicy changePropagationPolicy;
+
+    public DefaultMutableConfig(Config config, ChangePropagationPolicy changePropagationPolicy){
+        this.config = Objects.requireNonNull(config);
+        this.changePropagationPolicy = Objects.requireNonNull(changePropagationPolicy);
+    }
+
+    @Override
+    public ConfigValue<String> access(String key) {
+        return new DefaultConfigValue(this, this, key, String.class);
+    }
+
+    @Override
+    public void registerConfigChangedListener(Consumer<Set<String>> consumer) {
+        throw new UnsupportedOperationException("Not yet implemented.");
+    }
+
+    @Override
+    public ConfigContext getConfigContext() {
+        return ConfigContext.from(config);
+    }
+
+    @Override
+    public ChangePropagationPolicy getChangePropagationPolicy(){
+        return changePropagationPolicy;
+    }
+
+    @Override
+    public ConfigChangeRequest getConfigChangeRequest(){
+        return changeRequest;
+    }
+
+    protected List<MutableConfigSource> getMutablePropertySources() {
+        List<MutableConfigSource> result = new ArrayList<>();
+        for(ConfigSource propertySource:this.config.getConfigSources()) {
+            if(propertySource instanceof MutableConfigSource){
+                result.add((MutableConfigSource)propertySource);
+            }
+        }
+        return result;
+    }
+
+
+    @Override
+    public MutableConfig put(String key, String value) {
+        changeRequest.put(key, value);
+        return this;
+    }
+
+    @Override
+    public MutableConfig putAll(Map<String, String> properties) {
+        changeRequest.putAll(properties);
+        return this;
+    }
+
+    @Override
+    public MutableConfig remove(String... keys) {
+        changeRequest.removeAll(Arrays.asList(keys));
+        return this;
+    }
+
+
+    @Override
+    public void store() {
+        this.changePropagationPolicy.applyChange(changeRequest, config.getConfigSources());
+    }
+
+    @Override
+    public MutableConfig remove(Collection<String> keys) {
+        for(MutableConfigSource target:getMutablePropertySources()) {
+            changeRequest.removeAll(keys);
+        }
+        return this;
+    }
+
+    @Override
+    public <T> T getValue(String key, Class<T> type) {
+        return this.config.getValue(key, type);
+    }
+
+    @Override
+    public <T> Optional<T> getOptionalValue(String key, Class<T> type) {
+        return this.config.getOptionalValue(key,type);
+    }
+
+    @Override
+    public Iterable<String> getPropertyNames() {
+        return this.config.getPropertyNames();
+    }
+
+    @Override
+    public Iterable<ConfigSource> getConfigSources() {
+        return this.config.getConfigSources();
+    }
+
+    @Override
+    public String toString() {
+        return "DefaultMutableConfiguration{" +
+                "config=" + config +
+                '}';
+    }
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/2abb7a77/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/internal/DefaultMutableConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/internal/DefaultMutableConfiguration.java b/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/internal/DefaultMutableConfiguration.java
deleted file mode 100644
index d8d137d..0000000
--- a/modules/mutable-config/src/main/java/org/apache/tamaya/mutableconfig/internal/DefaultMutableConfiguration.java
+++ /dev/null
@@ -1,128 +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.internal;
-
-import org.apache.tamaya.mutableconfig.ChangePropagationPolicy;
-import org.apache.tamaya.mutableconfig.MutableConfig;
-import org.apache.tamaya.mutableconfig.ConfigChangeRequest;
-import org.apache.tamaya.mutableconfig.spi.MutableConfigSource;
-import org.osgi.service.component.annotations.Component;
-
-import javax.config.Config;
-import javax.config.spi.ConfigSource;
-import java.util.*;
-import java.util.logging.Logger;
-
-
-/**
- * Default implementation of a {@link MutableConfig}.
- */
-@Component
-public class DefaultMutableConfiguration implements MutableConfig {
-    private static final Logger LOG = Logger.getLogger(DefaultMutableConfiguration.class.getName());
-    private ConfigChangeRequest changeRequest = new ConfigChangeRequest(UUID.randomUUID().toString());
-    private final Config config;
-    private ChangePropagationPolicy changePropagationPolicy;
-
-    public DefaultMutableConfiguration(Config config, ChangePropagationPolicy changePropagationPolicy){
-        this.config = Objects.requireNonNull(config);
-        this.changePropagationPolicy = Objects.requireNonNull(changePropagationPolicy);
-    }
-
-    @Override
-    public ChangePropagationPolicy getChangePropagationPolicy(){
-        return changePropagationPolicy;
-    }
-
-    @Override
-    public ConfigChangeRequest getConfigChangeRequest(){
-        return changeRequest;
-    }
-
-    protected List<MutableConfigSource> getMutablePropertySources() {
-        List<MutableConfigSource> result = new ArrayList<>();
-        for(ConfigSource propertySource:this.config.getConfigSources()) {
-            if(propertySource instanceof MutableConfigSource){
-                result.add((MutableConfigSource)propertySource);
-            }
-        }
-        return result;
-    }
-
-
-    @Override
-    public MutableConfig put(String key, String value) {
-        changeRequest.put(key, value);
-        return this;
-    }
-
-    @Override
-    public MutableConfig putAll(Map<String, String> properties) {
-        changeRequest.putAll(properties);
-        return this;
-    }
-
-    @Override
-    public MutableConfig remove(String... keys) {
-        changeRequest.removeAll(Arrays.asList(keys));
-        return this;
-    }
-
-
-    @Override
-    public void store() {
-        this.changePropagationPolicy.applyChange(changeRequest, config.getConfigSources());
-    }
-
-    @Override
-    public MutableConfig remove(Collection<String> keys) {
-        for(MutableConfigSource target:getMutablePropertySources()) {
-            changeRequest.removeAll(keys);
-        }
-        return this;
-    }
-
-    @Override
-    public <T> T getValue(String key, Class<T> type) {
-        return this.config.getValue(key, type);
-    }
-
-    @Override
-    public <T> Optional<T> getOptionalValue(String key, Class<T> type) {
-        return this.config.getOptionalValue(key,type);
-    }
-
-    @Override
-    public Iterable<String> getPropertyNames() {
-        return this.config.getPropertyNames();
-    }
-
-    @Override
-    public Iterable<ConfigSource> getConfigSources() {
-        return this.config.getConfigSources();
-    }
-
-    @Override
-    public String toString() {
-        return "DefaultMutableConfiguration{" +
-                "config=" + config +
-                '}';
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/2abb7a77/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 d21366a..52813f1 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 javax.config.Config;
 
 
 /**
- * SPI implementation that creates instances of {@link DefaultMutableConfiguration}, hereby for
+ * SPI implementation that creates instances of {@link DefaultMutableConfig}, hereby for
  * each instance of {@link Config} a new instance has to be returned.
  */
 @Component
@@ -36,6 +36,6 @@ public class DefaultMutableConfigurationSpi implements MutableConfigProviderSpi
     @Override
     public MutableConfig createMutableConfig(Config configuration,
                                              ChangePropagationPolicy propagationPolicy){
-        return new DefaultMutableConfiguration(configuration, propagationPolicy);
+        return new DefaultMutableConfig(configuration, propagationPolicy);
     }
 }