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);
}
}