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/11/18 21:20:38 UTC
[20/20] incubator-tamaya-extensions git commit: TAMAYA-354 Support
atomic configuration, similar to config JSR.
TAMAYA-354 Support atomic configuration, similar to config JSR.
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/e190b34f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/tree/e190b34f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/diff/e190b34f
Branch: refs/heads/master
Commit: e190b34f24fc45f16c14442db81ae8f6c72d34dc
Parents: 9f38f77
Author: Anatole Tresch <at...@gmail.com>
Authored: Sun Nov 18 22:17:15 2018 +0100
Committer: Anatole Tresch <at...@gmail.com>
Committed: Sun Nov 18 22:17:15 2018 +0100
----------------------------------------------------------------------
.../consul/AbstractConsulPropertySource.java | 6 +
.../tamaya/consul/ConsulPropertySource.java | 2 +
.../tamaya/etcd/AbstractEtcdPropertySource.java | 6 +
.../tamaya/events/ConfigurationChange.java | 9 +-
.../tamaya/events/FrozenConfiguration.java | 189 ++++++++-----------
.../tamaya/events/FrozenPropertySource.java | 82 ++++----
.../tamaya/events/PropertySourceChange.java | 5 +-
.../internal/DefaultConfigChangeObserver.java | 9 +-
.../tamaya/events/ConfigurationChangeTest.java | 5 +-
.../tamaya/events/FrozenConfigurationTest.java | 24 +--
.../tamaya/events/RandomPropertySource.java | 8 +-
.../apache/tamaya/events/TestConfigView.java | 26 +--
.../ObservingPropertySourceProvider.java | 2 +-
.../DefaultConfigChangeObserverTest.java | 6 +-
.../tamaya/functions/CombinedConfiguration.java | 7 +
.../functions/ConfigWrappingPropertySource.java | 5 -
.../tamaya/functions/EnrichedConfiguration.java | 19 +-
.../tamaya/functions/FilteredConfiguration.java | 7 +
.../tamaya/functions/MappedConfiguration.java | 7 +
.../functions/PropertySourceFunctions.java | 5 -
.../functions/CombinedConfigurationTest.java | 6 +-
.../functions/EnrichedConfigurationTest.java | 4 +-
.../functions/MappedConfigurationTest.java | 2 +-
.../tamaya/microprofile/MicroprofileConfig.java | 2 +-
.../microprofile/TamayaConfiguration.java | 11 ++
25 files changed, 208 insertions(+), 246 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/e190b34f/modules/consul/src/main/java/org/apache/tamaya/consul/AbstractConsulPropertySource.java
----------------------------------------------------------------------
diff --git a/modules/consul/src/main/java/org/apache/tamaya/consul/AbstractConsulPropertySource.java b/modules/consul/src/main/java/org/apache/tamaya/consul/AbstractConsulPropertySource.java
index f07fb68..e5a91b7 100644
--- a/modules/consul/src/main/java/org/apache/tamaya/consul/AbstractConsulPropertySource.java
+++ b/modules/consul/src/main/java/org/apache/tamaya/consul/AbstractConsulPropertySource.java
@@ -25,6 +25,7 @@ import com.orbitz.consul.KeyValueClient;
import com.orbitz.consul.model.kv.Value;
import org.apache.tamaya.mutableconfig.ConfigChangeRequest;
import org.apache.tamaya.mutableconfig.spi.MutablePropertySource;
+import org.apache.tamaya.spi.ChangeSupport;
import org.apache.tamaya.spi.PropertyValue;
import org.apache.tamaya.spisupport.propertysource.BasePropertySource;
@@ -206,6 +207,11 @@ implements MutablePropertySource{
}
@Override
+ public ChangeSupport getChangeSupport(){
+ return ChangeSupport.UNSUPPORTED;
+ }
+
+ @Override
public void applyChange(ConfigChangeRequest configChange) {
for(HostAndPort hostAndPort: this.consulBackends){
try{
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/e190b34f/modules/consul/src/main/java/org/apache/tamaya/consul/ConsulPropertySource.java
----------------------------------------------------------------------
diff --git a/modules/consul/src/main/java/org/apache/tamaya/consul/ConsulPropertySource.java b/modules/consul/src/main/java/org/apache/tamaya/consul/ConsulPropertySource.java
index ce92a95..84612b3 100644
--- a/modules/consul/src/main/java/org/apache/tamaya/consul/ConsulPropertySource.java
+++ b/modules/consul/src/main/java/org/apache/tamaya/consul/ConsulPropertySource.java
@@ -25,6 +25,7 @@ import com.orbitz.consul.KeyValueClient;
import com.orbitz.consul.model.kv.Value;
import org.apache.tamaya.mutableconfig.ConfigChangeRequest;
import org.apache.tamaya.mutableconfig.spi.MutablePropertySource;
+import org.apache.tamaya.spi.ChangeSupport;
import org.apache.tamaya.spi.PropertyValue;
import org.apache.tamaya.spisupport.propertysource.BasePropertySource;
@@ -63,4 +64,5 @@ public class ConsulPropertySource extends AbstractConsulPropertySource{
setServer(Arrays.asList(backends));
}
+
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/e190b34f/modules/etcd/src/main/java/org/apache/tamaya/etcd/AbstractEtcdPropertySource.java
----------------------------------------------------------------------
diff --git a/modules/etcd/src/main/java/org/apache/tamaya/etcd/AbstractEtcdPropertySource.java b/modules/etcd/src/main/java/org/apache/tamaya/etcd/AbstractEtcdPropertySource.java
index 3388b8e..6213d8e 100644
--- a/modules/etcd/src/main/java/org/apache/tamaya/etcd/AbstractEtcdPropertySource.java
+++ b/modules/etcd/src/main/java/org/apache/tamaya/etcd/AbstractEtcdPropertySource.java
@@ -20,6 +20,7 @@ package org.apache.tamaya.etcd;
import org.apache.tamaya.mutableconfig.ConfigChangeRequest;
import org.apache.tamaya.mutableconfig.spi.MutablePropertySource;
+import org.apache.tamaya.spi.ChangeSupport;
import org.apache.tamaya.spi.PropertyValue;
import org.apache.tamaya.spisupport.propertysource.BasePropertySource;
@@ -182,6 +183,11 @@ public abstract class AbstractEtcdPropertySource extends BasePropertySource
return configMap;
}
+ @Override
+ public ChangeSupport getChangeSupport(){
+ return ChangeSupport.SUPPORTED;
+ }
+
private Map<String, PropertyValue> mapPrefix(Map<String, String> props) {
Map<String, PropertyValue> values = new HashMap<>();
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/e190b34f/modules/events/src/main/java/org/apache/tamaya/events/ConfigurationChange.java
----------------------------------------------------------------------
diff --git a/modules/events/src/main/java/org/apache/tamaya/events/ConfigurationChange.java b/modules/events/src/main/java/org/apache/tamaya/events/ConfigurationChange.java
index 0ec7e1e..3daaa10 100644
--- a/modules/events/src/main/java/org/apache/tamaya/events/ConfigurationChange.java
+++ b/modules/events/src/main/java/org/apache/tamaya/events/ConfigurationChange.java
@@ -19,6 +19,7 @@
package org.apache.tamaya.events;
import org.apache.tamaya.Configuration;
+import org.apache.tamaya.ConfigurationSnapshot;
import java.beans.PropertyChangeEvent;
import java.io.Serializable;
@@ -39,7 +40,7 @@ public final class ConfigurationChange implements ConfigEvent<Configuration>, Se
private static final long serialVersionUID = 1L;
/** The base property provider/configuration. */
- private final FrozenConfiguration configuration;
+ private final ConfigurationSnapshot snapshot;
/** The base version, usable for optimistic locking. */
private String version = UUID.randomUUID().toString();
/** The timestamp of the change setCurrent in millis from the epoch. */
@@ -61,7 +62,7 @@ public final class ConfigurationChange implements ConfigEvent<Configuration>, Se
* @param builder The builder used, not null.
*/
ConfigurationChange(ConfigurationChangeBuilder builder) {
- this.configuration = FrozenConfiguration.of(builder.source);
+ this.snapshot = builder.source.getSnapshot();
for(PropertyChangeEvent ev:builder.delta.values()){
this.changes.put(ev.getPropertyName(), ev);
}
@@ -84,7 +85,7 @@ public final class ConfigurationChange implements ConfigEvent<Configuration>, Se
*/
@Override
public Configuration getResource(){
- return this.configuration;
+ return this.snapshot;
}
/**
@@ -219,7 +220,7 @@ public final class ConfigurationChange implements ConfigEvent<Configuration>, Se
@Override
public String toString() {
return "ConfigurationChange{" +
- "\n configuration-id = " + configuration.getOrDefault("_id", "-") +
+ "\n snapshot-id = " + snapshot.getOrDefault("_id", "-") +
"\n change-id = " + version +
"\n timestamp = " + timestamp +
"\n added = " + this.getAddedSize() +
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/e190b34f/modules/events/src/main/java/org/apache/tamaya/events/FrozenConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/events/src/main/java/org/apache/tamaya/events/FrozenConfiguration.java b/modules/events/src/main/java/org/apache/tamaya/events/FrozenConfiguration.java
index f53bc1c..81183b1 100644
--- a/modules/events/src/main/java/org/apache/tamaya/events/FrozenConfiguration.java
+++ b/modules/events/src/main/java/org/apache/tamaya/events/FrozenConfiguration.java
@@ -18,44 +18,50 @@
*/
package org.apache.tamaya.events;
-import org.apache.tamaya.ConfigException;
-import org.apache.tamaya.ConfigOperator;
-import org.apache.tamaya.ConfigQuery;
import org.apache.tamaya.Configuration;
+import org.apache.tamaya.ConfigurationSnapshot;
import org.apache.tamaya.TypeLiteral;
-import org.apache.tamaya.functions.ConfigurationFunctions;
-import org.apache.tamaya.spi.ConfigurationContext;
-import org.apache.tamaya.spi.ConversionContext;
-import org.apache.tamaya.spi.PropertyConverter;
+import org.apache.tamaya.spi.*;
+import org.apache.tamaya.spisupport.*;
import java.io.Serializable;
import java.util.*;
-import java.util.logging.Level;
-import java.util.logging.Logger;
/**
* /**
* Configuration implementation that stores all current values of a given (possibly dynamic, contextual and non server
* capable instance) and is fully serializable. Note that hereby only the scannable key/createValue pairs are considered.
+ * @deprecated Use {@link DefaultConfigurationSnapshot}
*/
+@Deprecated
public final class FrozenConfiguration implements Configuration, Serializable {
- private static final long serialVersionUID = -6373137316556444171L;
+ private static final long serialVersionUID = -6373137316556444172L;
/**
* The properties frozen.
*/
- private Map<String, String> properties = new HashMap<>();
- private long frozenAt = System.nanoTime();
+ private ConfigurationSnapshot snapshot;
+
private UUID id = UUID.randomUUID();
/**
* Constructor.
*
- * @param config The base configuration.
+ * @param snapshot The snapshot.
+ */
+ private FrozenConfiguration(ConfigurationSnapshot snapshot) {
+ this.snapshot = snapshot;
+ }
+
+
+ /**
+ * Creates a new FrozenConfiguration instance based on the current Configuration.
+ *
+ * @return the frozen Configuration.
+ * @see Configuration#current()
*/
- private FrozenConfiguration(Configuration config) {
- this.properties.putAll(config.getProperties());
- this.properties = Collections.unmodifiableMap(this.properties);
+ public static FrozenConfiguration ofCurrent(String... keys) {
+ return new FrozenConfiguration(Configuration.current().getSnapshot(Arrays.asList(keys)));
}
/**
@@ -64,106 +70,93 @@ public final class FrozenConfiguration implements Configuration, Serializable {
* @param config the configuration to be frozen, not null.
* @return the frozen Configuration.
*/
- public static FrozenConfiguration of(Configuration config) {
- if (config instanceof FrozenConfiguration) {
- return (FrozenConfiguration) config;
- }
- return new FrozenConfiguration(config);
+ public static FrozenConfiguration of(Configuration config, String... keys) {
+ return new FrozenConfiguration(config.getSnapshot(Arrays.asList(keys)));
+ }
+
+ /**
+ * Creates a new FrozenConfiguration instance based on a Configuration given.
+ *
+ * @param config the configuration to be frozen, not null.
+ * @return the frozen Configuration.
+ */
+ public static FrozenConfiguration of(Configuration config, Set<String> keys) {
+ return new FrozenConfiguration(config.getSnapshot(keys));
+ }
+
+ /**
+ * Get the evaluated keys of this frozen coinfiguration.
+ * @return the keys, not null.
+ */
+ public Set<String> getKeys() {
+ return snapshot.getKeys();
}
@Override
public String get(String key) {
- return this.properties.get(key);
+ return this.snapshot.get(key);
}
@Override
public String getOrDefault(String key, String defaultValue) {
- String val = get(key);
- if(val==null){
- return defaultValue;
- }
- return val;
+ return this.snapshot.getOrDefault(key, defaultValue);
}
@Override
public <T> T getOrDefault(String key, Class<T> type, T defaultValue) {
- T val = get(key, type);
- if(val==null){
- return defaultValue;
- }
- return val;
+ return this.snapshot.getOrDefault(key, type, defaultValue);
}
@SuppressWarnings("unchecked")
@Override
public <T> T get(String key, Class<T> type) {
- return (T) get(key, TypeLiteral.of(type));
+ return snapshot.get(key, type);
}
- /**
- * Accesses the current String createValue for the given key and tries to convert it
- * using the {@link org.apache.tamaya.spi.PropertyConverter} instances provided by the current
- * {@link org.apache.tamaya.spi.ConfigurationContext}.
- *
- * @param key the property's absolute, or relative path, e.g. @code
- * a/b/c/d.myProperty}.
- * @param type The target type required, not null.
- * @param <T> the createValue type
- * @return the converted createValue, never null.
- */
@Override
public <T> T get(String key, TypeLiteral<T> type) {
- String value = get(key);
- if (value != null) {
- List<PropertyConverter<T>> converters = getContext()
- .getPropertyConverters(type);
- ConversionContext context = new ConversionContext.Builder(this, key,type).build();
- for (PropertyConverter<T> converter : converters) {
- try {
- T t = converter.convert(value, context);
- if (t != null) {
- return t;
- }
- } catch (Exception e) {
- Logger.getLogger(getClass().getName())
- .log(Level.FINEST, "PropertyConverter: " + converter + " failed to convert createValue: " + value,
- e);
- }
- }
- throw new ConfigException("Unparseable config createValue for type: " + type.getRawType().getName() + ": " + key
- + ", supported formats: " + context.getSupportedFormats());
- }
-
- return null;
+ return snapshot.get(key, type);
}
@Override
public <T> T getOrDefault(String key, TypeLiteral<T> type, T defaultValue) {
- T val = get(key, type);
- if(val==null){
- return defaultValue;
- }
- return val;
+ return snapshot.getOrDefault(key, type, defaultValue);
}
@Override
public Map<String, String> getProperties() {
- return properties;
+ return snapshot.getProperties();
}
@Override
- public Configuration with(ConfigOperator operator) {
- return operator.operate(this);
+ public ConfigurationContext getContext() {
+ return snapshot.getContext();
}
@Override
- public <T> T query(ConfigQuery<T> query) {
- return query.query(this);
+ public ConfigurationSnapshot getSnapshot(Iterable<String> keys) {
+ return this.snapshot.getSnapshot(keys);
}
- @Override
- public ConfigurationContext getContext() {
- return ConfigurationFunctions.emptyConfigurationContext();
+ /**
+ * <p>Returns the moment in time when this frozen configuration has been created.</p>
+ *
+ * <p>The time is taken from {@linkplain System#currentTimeMillis()}</p>
+ *
+ * @see System#currentTimeMillis()
+ * @return the moment in time when this configuration has been created
+ */
+ public long getFrozenAt() {
+ return snapshot.getTimestamp();
+ }
+
+ /**
+ * <p>Returns the unique id of this frozen configuration.</p>
+ *
+ * @return the unique id of this frozen configuration, never {@code null}
+ */
+ public UUID getId() {
+ return id;
}
@Override
@@ -177,50 +170,18 @@ public final class FrozenConfiguration implements Configuration, Serializable {
FrozenConfiguration that = (FrozenConfiguration) o;
- if (frozenAt != that.frozenAt) {
- return false;
- }
- if (properties != null ? !properties.equals(that.properties) : that.properties != null) {
- return false;
- }
- return id != null ? id.equals(that.id) : that.id == null;
+ return Objects.equals(id, that.id);
}
@Override
public int hashCode() {
- int result = properties != null ? properties.hashCode() : 0;
- result = 31 * result + (int) (frozenAt ^ (frozenAt >>> 32));
- result = 31 * result + (id != null ? id.hashCode() : 0);
- return result;
+ return Objects.hash(snapshot);
}
@Override
public String toString() {
return "FrozenConfiguration{" +
- "id=" + getId() + "," +
- "frozenAt=" + getFrozenAt() + "," +
- "properties=" + properties +
+ "snapshot=" + snapshot + "," +
'}';
}
-
- /**
- * <p>Returns the moment in time when this frozen configuration has been created.</p>
- *
- * <p>The time is taken from {@linkplain System#currentTimeMillis()}</p>
- *
- * @see System#currentTimeMillis()
- * @return the moment in time when this configuration has been created
- */
- public long getFrozenAt() {
- return frozenAt;
- }
-
- /**
- * <p>Returns the unique id of this frozen configuration.</p>
- *
- * @return the unique id of this frozen configuration, never {@code null}
- */
- public UUID getId() {
- return id;
- }
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/e190b34f/modules/events/src/main/java/org/apache/tamaya/events/FrozenPropertySource.java
----------------------------------------------------------------------
diff --git a/modules/events/src/main/java/org/apache/tamaya/events/FrozenPropertySource.java b/modules/events/src/main/java/org/apache/tamaya/events/FrozenPropertySource.java
index 65da582..f5a3086 100644
--- a/modules/events/src/main/java/org/apache/tamaya/events/FrozenPropertySource.java
+++ b/modules/events/src/main/java/org/apache/tamaya/events/FrozenPropertySource.java
@@ -20,66 +20,65 @@ package org.apache.tamaya.events;
import org.apache.tamaya.spi.PropertySource;
import org.apache.tamaya.spi.PropertyValue;
-import org.apache.tamaya.spisupport.PropertySourceComparator;
+import org.apache.tamaya.spisupport.DefaultPropertySourceSnapshot;
import java.io.Serializable;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
/**
* PropertySource implementation that stores all current values of a given (possibly dynamic, contextual and non server
* capable instance) and is fully serializable. Note that hereby only the scannable key/createValue pairs are considered.
+ * @deprecated
*/
+@Deprecated
public final class FrozenPropertySource implements PropertySource, Serializable {
- private static final long serialVersionUID = -6373137316556444171L;
- /**
- * The ordinal.
- */
- private final int ordinal;
- /**
- * The properties read.
- */
- private Map<String, PropertyValue> properties = new HashMap<>();
- /**
- * The PropertySource's name.
- */
- private final String name;
+ private static final long serialVersionUID = -6373137316556444172L;
- private long frozenAt = System.currentTimeMillis();
+ private DefaultPropertySourceSnapshot snapshot;
/**
* Constructor.
*
- * @param propertySource The base PropertySource.
+ * @param snapshot The base snapshot.
*/
- private FrozenPropertySource(PropertySource propertySource) {
- this.properties.putAll(propertySource.getProperties());
- this.properties = Collections.unmodifiableMap(this.properties);
- this.ordinal = PropertySourceComparator.getOrdinal(propertySource);
- this.name = propertySource.getName();
+ private FrozenPropertySource(DefaultPropertySourceSnapshot snapshot) {
+ this.snapshot = snapshot;
}
/**
- * Creates a new FrozenPropertySource instance based on a PropertySource given.
+ * Creates a new FrozenPropertySource instance based on a PropertySource and the target key set given. This method
+ * uses all keys available in the property map.
*
* @param propertySource the property source to be frozen, not null.
* @return the frozen property source.
*/
public static FrozenPropertySource of(PropertySource propertySource) {
- if (propertySource instanceof FrozenPropertySource) {
- return (FrozenPropertySource) propertySource;
- }
- return new FrozenPropertySource(propertySource);
+ return new FrozenPropertySource(DefaultPropertySourceSnapshot.of(propertySource));
+ }
+
+ /**
+ * Creates a new FrozenPropertySource instance based on a PropertySource and the target key set given.
+ *
+ * @param propertySource the property source to be frozen, not null.
+ * @param keys the keys to be evaluated for the snapshot. Only these keys will be contained in the resulting
+ * snapshot.
+ * @return the frozen property source.
+ */
+ public static FrozenPropertySource of(PropertySource propertySource, Iterable<String> keys) {
+ return new FrozenPropertySource(DefaultPropertySourceSnapshot.of(propertySource, keys));
+ }
+
+ public Set<String> getKeys() {
+ return snapshot.getKeys();
}
@Override
public String getName() {
- return this.name;
+ return this.snapshot.getName();
}
public int getOrdinal() {
- return this.ordinal;
+ return this.snapshot.getOrdinal();
}
/**
@@ -87,22 +86,17 @@ public final class FrozenPropertySource implements PropertySource, Serializable
* @return the creation timestamp
*/
public long getFrozenAt(){
- return frozenAt;
+ return snapshot.getFrozenAt();
}
@Override
public PropertyValue get(String key) {
- return this.properties.get(key);
+ return snapshot.get(key);
}
@Override
public Map<String, PropertyValue> getProperties() {
- return properties;
- }
-
- @Override
- public boolean isScannable() {
- return true;
+ return snapshot.getProperties();
}
@Override
@@ -114,22 +108,18 @@ public final class FrozenPropertySource implements PropertySource, Serializable
return false;
}
FrozenPropertySource that = (FrozenPropertySource) o;
- return ordinal == that.ordinal && properties.equals(that.properties);
+ return Objects.equals(snapshot, that.snapshot);
}
@Override
public int hashCode() {
- int result = ordinal;
- result = 31 * result + properties.hashCode();
- return result;
+ return snapshot.hashCode();
}
@Override
public String toString() {
return "FrozenPropertySource{" +
- "name=" + name +
- ", ordinal=" + ordinal +
- ", properties=" + properties +
+ "snapshot=" + snapshot +
'}';
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/e190b34f/modules/events/src/main/java/org/apache/tamaya/events/PropertySourceChange.java
----------------------------------------------------------------------
diff --git a/modules/events/src/main/java/org/apache/tamaya/events/PropertySourceChange.java b/modules/events/src/main/java/org/apache/tamaya/events/PropertySourceChange.java
index d256713..d7804f1 100644
--- a/modules/events/src/main/java/org/apache/tamaya/events/PropertySourceChange.java
+++ b/modules/events/src/main/java/org/apache/tamaya/events/PropertySourceChange.java
@@ -19,6 +19,7 @@
package org.apache.tamaya.events;
import org.apache.tamaya.spi.PropertySource;
+import org.apache.tamaya.spisupport.DefaultPropertySourceSnapshot;
import java.beans.PropertyChangeEvent;
import java.io.Serializable;
@@ -39,7 +40,7 @@ public final class PropertySourceChange implements ConfigEvent<PropertySource>,
private static final long serialVersionUID = 1L;
/** The base property provider/configuration. */
- private final FrozenPropertySource propertySource;
+ private final DefaultPropertySourceSnapshot propertySource;
/** The base version, usable for optimistic locking. */
private String version = UUID.randomUUID().toString();
/** The timestamp of the change setCurrent in millis from the epoch. */
@@ -52,7 +53,7 @@ public final class PropertySourceChange implements ConfigEvent<PropertySource>,
* @param builder The builder used, not null.
*/
PropertySourceChange(PropertySourceChangeBuilder builder) {
- this.propertySource = FrozenPropertySource.of(builder.source);
+ this.propertySource = new DefaultPropertySourceSnapshot(builder.source);
for (PropertyChangeEvent c : builder.delta.values()) {
this.changes.put(c.getPropertyName(), c);
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/e190b34f/modules/events/src/main/java/org/apache/tamaya/events/internal/DefaultConfigChangeObserver.java
----------------------------------------------------------------------
diff --git a/modules/events/src/main/java/org/apache/tamaya/events/internal/DefaultConfigChangeObserver.java b/modules/events/src/main/java/org/apache/tamaya/events/internal/DefaultConfigChangeObserver.java
index ebfa356..b6aa9cd 100644
--- a/modules/events/src/main/java/org/apache/tamaya/events/internal/DefaultConfigChangeObserver.java
+++ b/modules/events/src/main/java/org/apache/tamaya/events/internal/DefaultConfigChangeObserver.java
@@ -19,6 +19,7 @@
package org.apache.tamaya.events.internal;
import org.apache.tamaya.Configuration;
+import org.apache.tamaya.ConfigurationSnapshot;
import org.apache.tamaya.events.ConfigEventManager;
import org.apache.tamaya.events.ConfigurationChange;
import org.apache.tamaya.events.ConfigurationChangeBuilder;
@@ -40,7 +41,7 @@ public class DefaultConfigChangeObserver {
private long checkPeriod = 2000L;
- private volatile FrozenConfiguration lastConfig;
+ private volatile ConfigurationSnapshot lastConfig;
private volatile boolean running;
@@ -64,7 +65,7 @@ public class DefaultConfigChangeObserver {
public void checkConfigurationUpdate() {
LOG.finest("Checking configuration for changes...");
- FrozenConfiguration frozenConfig = FrozenConfiguration.of(Configuration.current(classLoader));
+ ConfigurationSnapshot frozenConfig = Configuration.current(classLoader).getSnapshot();
ConfigurationChange changes;
if (getLastConfig() != null) {
@@ -78,11 +79,11 @@ public class DefaultConfigChangeObserver {
setLastConfig(frozenConfig);
}
- protected FrozenConfiguration getLastConfig() {
+ protected ConfigurationSnapshot getLastConfig() {
return lastConfig;
}
- protected void setLastConfig(FrozenConfiguration newConfiguration) {
+ protected void setLastConfig(ConfigurationSnapshot newConfiguration) {
lastConfig = newConfiguration;
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/e190b34f/modules/events/src/test/java/org/apache/tamaya/events/ConfigurationChangeTest.java
----------------------------------------------------------------------
diff --git a/modules/events/src/test/java/org/apache/tamaya/events/ConfigurationChangeTest.java b/modules/events/src/test/java/org/apache/tamaya/events/ConfigurationChangeTest.java
index fd7fb0b..203f058 100644
--- a/modules/events/src/test/java/org/apache/tamaya/events/ConfigurationChangeTest.java
+++ b/modules/events/src/test/java/org/apache/tamaya/events/ConfigurationChangeTest.java
@@ -19,7 +19,6 @@
package org.apache.tamaya.events;
import org.apache.tamaya.Configuration;
-import org.apache.tamaya.ConfigurationProvider;
import org.junit.Test;
import java.util.Map;
@@ -48,7 +47,7 @@ public class ConfigurationChangeTest {
assertTrue(change.getRemovedSize()==0);
assertTrue(change.getChanges().size()==0);
for (Map.Entry<String, String> en : config.getProperties().entrySet()) {
- if (!"[getMeta]frozenAt".equals(en.getKey())) {
+ if (!"[meta]frozenAt".equals(en.getKey())) {
if(en.getKey().contains("random.new")){ // dynamic generated createValue!
continue;
}
@@ -156,7 +155,7 @@ public class ConfigurationChangeTest {
change.toString();
assertTrue(toString.contains("timestamp"));
assertTrue(toString.contains("change-id"));
- assertTrue(toString.contains("configuration-id"));
+ assertTrue(toString.contains("snapshot-id"));
assertFalse(toString.contains("key1"));
assertFalse(toString.contains("key2"));
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/e190b34f/modules/events/src/test/java/org/apache/tamaya/events/FrozenConfigurationTest.java
----------------------------------------------------------------------
diff --git a/modules/events/src/test/java/org/apache/tamaya/events/FrozenConfigurationTest.java b/modules/events/src/test/java/org/apache/tamaya/events/FrozenConfigurationTest.java
index 3ad8f12..568350a 100644
--- a/modules/events/src/test/java/org/apache/tamaya/events/FrozenConfigurationTest.java
+++ b/modules/events/src/test/java/org/apache/tamaya/events/FrozenConfigurationTest.java
@@ -19,9 +19,14 @@
package org.apache.tamaya.events;
import org.apache.tamaya.Configuration;
+import org.apache.tamaya.ConfigurationSnapshot;
+import org.apache.tamaya.spi.ConfigurationContext;
+import org.junit.Ignore;
import org.junit.Test;
import org.mockito.Mockito;
+import org.omg.CORBA.Any;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@@ -31,24 +36,12 @@ import static org.mockito.Mockito.doReturn;
public class FrozenConfigurationTest {
@Test
- public void getFrozenAtReturnsTheCorrectTimestamp() {
- Configuration source = Mockito.mock(Configuration.class);
-
- long poiStart = System.nanoTime();
-
- FrozenConfiguration fc = FrozenConfiguration.of(source);
-
- long poiEnd = System.nanoTime();
-
- assertThat(fc.getFrozenAt()).isGreaterThan(poiStart)
- .isLessThan(poiEnd);
- }
-
-
- @Test
public void idMustBeNotNull() {
Configuration source = Mockito.mock(Configuration.class);
+ Mockito.when(source.getContext()).thenReturn(ConfigurationContext.EMPTY);
+ Mockito.when(source.getProperties()).thenReturn(Collections.emptyMap());
+
FrozenConfiguration fc = FrozenConfiguration.of(source);
assertThat(fc.getId()).isNotNull();
@@ -63,6 +56,7 @@ public class FrozenConfigurationTest {
properties.put("key", "createValue");
Configuration configuration = Mockito.mock(Configuration.class);
+ Mockito.when(configuration.getContext()).thenReturn(ConfigurationContext.EMPTY);
doReturn(properties).when(configuration).getProperties();
FrozenConfiguration fcA = FrozenConfiguration.of(configuration);
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/e190b34f/modules/events/src/test/java/org/apache/tamaya/events/RandomPropertySource.java
----------------------------------------------------------------------
diff --git a/modules/events/src/test/java/org/apache/tamaya/events/RandomPropertySource.java b/modules/events/src/test/java/org/apache/tamaya/events/RandomPropertySource.java
index 36bcaaa..6b77d07 100644
--- a/modules/events/src/test/java/org/apache/tamaya/events/RandomPropertySource.java
+++ b/modules/events/src/test/java/org/apache/tamaya/events/RandomPropertySource.java
@@ -44,7 +44,7 @@ public class RandomPropertySource implements PropertySource{
@Override
public PropertyValue get(String key) {
if(key.equals("random.new")){
- return PropertyValue.of(key, String.valueOf(Math.random()),getName());
+ return PropertyValue.createValue(key, String.valueOf(Math.random()));
}
return null;
}
@@ -52,14 +52,10 @@ public class RandomPropertySource implements PropertySource{
@Override
public Map<String, PropertyValue> getProperties() {
synchronized(data) {
- data.put("random.new", PropertyValue.of("random.new", String.valueOf(Math.random()), getName())
+ data.put("random.new", PropertyValue.createValue("random.new", String.valueOf(Math.random()))
.setMeta("_random.new.timestamp", String.valueOf(System.currentTimeMillis())));
return new HashMap<>(data);
}
}
- @Override
- public boolean isScannable() {
- return true;
- }
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/e190b34f/modules/events/src/test/java/org/apache/tamaya/events/TestConfigView.java
----------------------------------------------------------------------
diff --git a/modules/events/src/test/java/org/apache/tamaya/events/TestConfigView.java b/modules/events/src/test/java/org/apache/tamaya/events/TestConfigView.java
index 0e9c340..8019796 100644
--- a/modules/events/src/test/java/org/apache/tamaya/events/TestConfigView.java
+++ b/modules/events/src/test/java/org/apache/tamaya/events/TestConfigView.java
@@ -18,11 +18,7 @@
*/
package org.apache.tamaya.events;
-import org.apache.tamaya.ConfigException;
-import org.apache.tamaya.ConfigOperator;
-import org.apache.tamaya.ConfigQuery;
-import org.apache.tamaya.Configuration;
-import org.apache.tamaya.TypeLiteral;
+import org.apache.tamaya.*;
import org.apache.tamaya.spi.ConfigurationContext;
import org.apache.tamaya.spi.ConversionContext;
import org.apache.tamaya.spi.PropertyConverter;
@@ -30,24 +26,25 @@ import org.apache.tamaya.spi.PropertyConverter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.function.UnaryOperator;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* Created by Anatole on 24.03.2015.
*/
-public class TestConfigView implements ConfigOperator{
+public class TestConfigView implements UnaryOperator<Configuration> {
private static final TestConfigView INSTANCE = new TestConfigView();
private TestConfigView(){}
- public static ConfigOperator of(){
+ public static TestConfigView of(){
return INSTANCE;
}
@Override
- public Configuration operate(final Configuration config) {
+ public Configuration apply(final Configuration config) {
return new Configuration() {
@Override
public Map<String, String> getProperties() {
@@ -58,26 +55,19 @@ public class TestConfigView implements ConfigOperator{
}
}
return result;
-// return config.getProperties().entrySet().stream().filter(e -> e.getKey().startsWith("test")).collect(
-// Collectors.toMap(en -> en.getKey(), en -> en.getProperty()));
}
@Override
- public Configuration with(ConfigOperator operator) {
- return null;
+ public ConfigurationContext getContext() {
+ return config.getContext();
}
@Override
- public <T> T query(ConfigQuery<T> query) {
+ public ConfigurationSnapshot getSnapshot(Iterable<String> keys) {
return null;
}
@Override
- public ConfigurationContext getContext() {
- return config.getContext();
- }
-
- @Override
public String get(String key) {
return getProperties().get(key);
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/e190b34f/modules/events/src/test/java/org/apache/tamaya/events/folderobserver/ObservingPropertySourceProvider.java
----------------------------------------------------------------------
diff --git a/modules/events/src/test/java/org/apache/tamaya/events/folderobserver/ObservingPropertySourceProvider.java b/modules/events/src/test/java/org/apache/tamaya/events/folderobserver/ObservingPropertySourceProvider.java
index 8cb4d8d..c1393ad 100644
--- a/modules/events/src/test/java/org/apache/tamaya/events/folderobserver/ObservingPropertySourceProvider.java
+++ b/modules/events/src/test/java/org/apache/tamaya/events/folderobserver/ObservingPropertySourceProvider.java
@@ -137,7 +137,7 @@ public class ObservingPropertySourceProvider implements PropertySourceProvider,
final Map<String,PropertyValue> result = new HashMap<>();
for(final Map.Entry<Object,Object> en:props.entrySet()){
String key = String.valueOf(en.getKey());
- result.put(key, PropertyValue.of(key, String.valueOf(en.getValue()), file.toString()));
+ result.put(key, PropertyValue.createValue(key, String.valueOf(en.getValue())).setMeta("source", file.toString()));
}
return result;
} catch (final Exception e) {
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/e190b34f/modules/events/src/test/java/org/apache/tamaya/events/internal/DefaultConfigChangeObserverTest.java
----------------------------------------------------------------------
diff --git a/modules/events/src/test/java/org/apache/tamaya/events/internal/DefaultConfigChangeObserverTest.java b/modules/events/src/test/java/org/apache/tamaya/events/internal/DefaultConfigChangeObserverTest.java
index 4aab1b8..b5d7f69 100644
--- a/modules/events/src/test/java/org/apache/tamaya/events/internal/DefaultConfigChangeObserverTest.java
+++ b/modules/events/src/test/java/org/apache/tamaya/events/internal/DefaultConfigChangeObserverTest.java
@@ -18,7 +18,7 @@
*/
package org.apache.tamaya.events.internal;
-import org.apache.tamaya.events.FrozenConfiguration;
+import org.apache.tamaya.ConfigurationSnapshot;
import org.apache.tamaya.spi.ServiceContextManager;
import org.junit.Test;
@@ -74,9 +74,9 @@ public class DefaultConfigChangeObserverTest {
observer.checkConfigurationUpdate();
- FrozenConfiguration config1 = observer.getLastConfig();
+ ConfigurationSnapshot config1 = observer.getLastConfig();
observer.checkConfigurationUpdate();
- FrozenConfiguration config2 = observer.getLastConfig();
+ ConfigurationSnapshot config2 = observer.getLastConfig();
assertThat(config1).describedAs("After the firt check last configuration must be setCurrent.")
.isNotEqualTo(config2);
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/e190b34f/modules/functions/src/main/java/org/apache/tamaya/functions/CombinedConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/functions/src/main/java/org/apache/tamaya/functions/CombinedConfiguration.java b/modules/functions/src/main/java/org/apache/tamaya/functions/CombinedConfiguration.java
index 28fed46..16e6825 100644
--- a/modules/functions/src/main/java/org/apache/tamaya/functions/CombinedConfiguration.java
+++ b/modules/functions/src/main/java/org/apache/tamaya/functions/CombinedConfiguration.java
@@ -19,8 +19,10 @@
package org.apache.tamaya.functions;
import org.apache.tamaya.Configuration;
+import org.apache.tamaya.ConfigurationSnapshot;
import org.apache.tamaya.TypeLiteral;
import org.apache.tamaya.spi.ConfigurationContext;
+import org.apache.tamaya.spisupport.DefaultConfigurationSnapshot;
import java.util.*;
@@ -150,6 +152,11 @@ class CombinedConfiguration implements Configuration{
}
@Override
+ public ConfigurationSnapshot getSnapshot(Iterable<String> keys) {
+ return new DefaultConfigurationSnapshot(this, keys);
+ }
+
+ @Override
public String toString() {
return "CombinedConfiguration{" +
"name='" + name + '\'' +
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/e190b34f/modules/functions/src/main/java/org/apache/tamaya/functions/ConfigWrappingPropertySource.java
----------------------------------------------------------------------
diff --git a/modules/functions/src/main/java/org/apache/tamaya/functions/ConfigWrappingPropertySource.java b/modules/functions/src/main/java/org/apache/tamaya/functions/ConfigWrappingPropertySource.java
index dbad205..17c2ffb 100644
--- a/modules/functions/src/main/java/org/apache/tamaya/functions/ConfigWrappingPropertySource.java
+++ b/modules/functions/src/main/java/org/apache/tamaya/functions/ConfigWrappingPropertySource.java
@@ -73,11 +73,6 @@ final class ConfigWrappingPropertySource implements PropertySource {
}
@Override
- public boolean isScannable() {
- return true;
- }
-
- @Override
public String toString(){
return "ConfigWrappingPropertySource(name="+name+", ordinal="+ordinal+", config="+config+")";
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/e190b34f/modules/functions/src/main/java/org/apache/tamaya/functions/EnrichedConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/functions/src/main/java/org/apache/tamaya/functions/EnrichedConfiguration.java b/modules/functions/src/main/java/org/apache/tamaya/functions/EnrichedConfiguration.java
index 2b6aac1..ace5dec 100644
--- a/modules/functions/src/main/java/org/apache/tamaya/functions/EnrichedConfiguration.java
+++ b/modules/functions/src/main/java/org/apache/tamaya/functions/EnrichedConfiguration.java
@@ -18,11 +18,9 @@
*/
package org.apache.tamaya.functions;
-import org.apache.tamaya.ConfigOperator;
-import org.apache.tamaya.ConfigQuery;
-import org.apache.tamaya.Configuration;
-import org.apache.tamaya.TypeLiteral;
+import org.apache.tamaya.*;
import org.apache.tamaya.spi.ConfigurationContext;
+import org.apache.tamaya.spisupport.DefaultConfigurationSnapshot;
import java.util.HashMap;
import java.util.Map;
@@ -155,18 +153,13 @@ class EnrichedConfiguration implements Configuration {
}
@Override
- public Configuration with(ConfigOperator operator) {
- return operator.operate(this);
- }
-
- @Override
- public <T> T query(ConfigQuery<T> query) {
- return query.query(this);
+ public ConfigurationContext getContext() {
+ return baseConfiguration.getContext();
}
@Override
- public ConfigurationContext getContext() {
- return baseConfiguration.getContext();
+ public ConfigurationSnapshot getSnapshot(Iterable<String> keys) {
+ return new DefaultConfigurationSnapshot(this, keys);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/e190b34f/modules/functions/src/main/java/org/apache/tamaya/functions/FilteredConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/functions/src/main/java/org/apache/tamaya/functions/FilteredConfiguration.java b/modules/functions/src/main/java/org/apache/tamaya/functions/FilteredConfiguration.java
index 2f441dc..bf6401e 100644
--- a/modules/functions/src/main/java/org/apache/tamaya/functions/FilteredConfiguration.java
+++ b/modules/functions/src/main/java/org/apache/tamaya/functions/FilteredConfiguration.java
@@ -19,8 +19,10 @@
package org.apache.tamaya.functions;
import org.apache.tamaya.Configuration;
+import org.apache.tamaya.ConfigurationSnapshot;
import org.apache.tamaya.TypeLiteral;
import org.apache.tamaya.spi.ConfigurationContext;
+import org.apache.tamaya.spisupport.DefaultConfigurationSnapshot;
import java.util.HashMap;
import java.util.Map;
@@ -104,6 +106,11 @@ class FilteredConfiguration implements Configuration {
}
@Override
+ public ConfigurationSnapshot getSnapshot(Iterable<String> keys) {
+ return new DefaultConfigurationSnapshot(this, keys);
+ }
+
+ @Override
public String toString() {
return "FilteredConfiguration{" +
"baseConfiguration=" + baseConfiguration +
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/e190b34f/modules/functions/src/main/java/org/apache/tamaya/functions/MappedConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/functions/src/main/java/org/apache/tamaya/functions/MappedConfiguration.java b/modules/functions/src/main/java/org/apache/tamaya/functions/MappedConfiguration.java
index 49125ed..71b73a1 100644
--- a/modules/functions/src/main/java/org/apache/tamaya/functions/MappedConfiguration.java
+++ b/modules/functions/src/main/java/org/apache/tamaya/functions/MappedConfiguration.java
@@ -19,8 +19,10 @@
package org.apache.tamaya.functions;
import org.apache.tamaya.Configuration;
+import org.apache.tamaya.ConfigurationSnapshot;
import org.apache.tamaya.TypeLiteral;
import org.apache.tamaya.spi.ConfigurationContext;
+import org.apache.tamaya.spisupport.DefaultConfigurationSnapshot;
import java.util.HashMap;
import java.util.Map;
@@ -113,6 +115,11 @@ class MappedConfiguration implements Configuration {
}
@Override
+ public ConfigurationSnapshot getSnapshot(Iterable<String> keys) {
+ return new DefaultConfigurationSnapshot(this, keys);
+ }
+
+ @Override
public String toString() {
return "FilteredConfiguration{" +
"baseConfiguration=" + baseConfiguration +
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/e190b34f/modules/functions/src/main/java/org/apache/tamaya/functions/PropertySourceFunctions.java
----------------------------------------------------------------------
diff --git a/modules/functions/src/main/java/org/apache/tamaya/functions/PropertySourceFunctions.java b/modules/functions/src/main/java/org/apache/tamaya/functions/PropertySourceFunctions.java
index c349370..bed38f1 100644
--- a/modules/functions/src/main/java/org/apache/tamaya/functions/PropertySourceFunctions.java
+++ b/modules/functions/src/main/java/org/apache/tamaya/functions/PropertySourceFunctions.java
@@ -57,11 +57,6 @@ public final class PropertySourceFunctions {
}
@Override
- public boolean isScannable() {
- return true;
- }
-
- @Override
public String toString() {
return "PropertySource<empty>";
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/e190b34f/modules/functions/src/test/java/org/apache/tamaya/functions/CombinedConfigurationTest.java
----------------------------------------------------------------------
diff --git a/modules/functions/src/test/java/org/apache/tamaya/functions/CombinedConfigurationTest.java b/modules/functions/src/test/java/org/apache/tamaya/functions/CombinedConfigurationTest.java
index a850493..cac3e51 100644
--- a/modules/functions/src/test/java/org/apache/tamaya/functions/CombinedConfigurationTest.java
+++ b/modules/functions/src/test/java/org/apache/tamaya/functions/CombinedConfigurationTest.java
@@ -122,7 +122,7 @@ public class CombinedConfigurationTest {
assertThatThrownBy(new ThrowableAssert.ThrowingCallable() {
@Override
public void call() throws Throwable {
- cc.getOrDefault(null, "d");
+ cc.getOrDefault((String)null, "d");
}
}).isInstanceOf(NullPointerException.class)
.hasMessage("Key must be given.");
@@ -176,7 +176,7 @@ public class CombinedConfigurationTest {
assertThatThrownBy(new ThrowableAssert.ThrowingCallable() {
@Override
public void call() throws Throwable {
- cc.getOrDefault(null, TypeLiteral.of(Integer.class), 1);
+ cc.getOrDefault((String)null, TypeLiteral.of(Integer.class), 1);
}
}).isInstanceOf(NullPointerException.class)
.hasMessage("Key must be given.");
@@ -252,7 +252,7 @@ public class CombinedConfigurationTest {
assertThatThrownBy(new ThrowableAssert.ThrowingCallable() {
@Override
public void call() throws Throwable {
- cc.getOrDefault(null, Integer.class, 1);
+ cc.getOrDefault((String)null, Integer.class, 1);
}
}).isInstanceOf(NullPointerException.class)
.hasMessage("Key must be given.");
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/e190b34f/modules/functions/src/test/java/org/apache/tamaya/functions/EnrichedConfigurationTest.java
----------------------------------------------------------------------
diff --git a/modules/functions/src/test/java/org/apache/tamaya/functions/EnrichedConfigurationTest.java b/modules/functions/src/test/java/org/apache/tamaya/functions/EnrichedConfigurationTest.java
index 6c9a3ce..a66376b 100644
--- a/modules/functions/src/test/java/org/apache/tamaya/functions/EnrichedConfigurationTest.java
+++ b/modules/functions/src/test/java/org/apache/tamaya/functions/EnrichedConfigurationTest.java
@@ -53,7 +53,7 @@ public class EnrichedConfigurationTest {
assertThatThrownBy(new ThrowableAssert.ThrowingCallable() {
@Override
public void call() throws Throwable {
- sut.get(null);
+ sut.get((String)null);
}
}).isInstanceOf(NullPointerException.class)
.hasMessage("Key must be given.");
@@ -186,7 +186,7 @@ public class EnrichedConfigurationTest {
assertThatThrownBy(new ThrowableAssert.ThrowingCallable() {
@Override
public void call() throws Throwable {
- sut.getOrDefault(null, "v");
+ sut.getOrDefault((String)null, "v");
}
}).isInstanceOf(NullPointerException.class)
.hasMessage("Key must be given.");
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/e190b34f/modules/functions/src/test/java/org/apache/tamaya/functions/MappedConfigurationTest.java
----------------------------------------------------------------------
diff --git a/modules/functions/src/test/java/org/apache/tamaya/functions/MappedConfigurationTest.java b/modules/functions/src/test/java/org/apache/tamaya/functions/MappedConfigurationTest.java
index 2a470a2..02fee55 100644
--- a/modules/functions/src/test/java/org/apache/tamaya/functions/MappedConfigurationTest.java
+++ b/modules/functions/src/test/java/org/apache/tamaya/functions/MappedConfigurationTest.java
@@ -45,7 +45,7 @@ public class MappedConfigurationTest {
MappedConfiguration mc = mock(MappedConfiguration.class);
doCallRealMethod().when(mc).getOrDefault(anyString(), anyString());
- mc.getOrDefault(null, "z");
+ mc.getOrDefault((String)null, "z");
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/e190b34f/modules/microprofile/src/main/java/org/apache/tamaya/microprofile/MicroprofileConfig.java
----------------------------------------------------------------------
diff --git a/modules/microprofile/src/main/java/org/apache/tamaya/microprofile/MicroprofileConfig.java b/modules/microprofile/src/main/java/org/apache/tamaya/microprofile/MicroprofileConfig.java
index 103a8af..9ff395e 100644
--- a/modules/microprofile/src/main/java/org/apache/tamaya/microprofile/MicroprofileConfig.java
+++ b/modules/microprofile/src/main/java/org/apache/tamaya/microprofile/MicroprofileConfig.java
@@ -88,7 +88,7 @@ public class MicroprofileConfig implements Config, Serializable {
private void writeObject(ObjectOutputStream out) throws IOException{
if(!(this.delegate instanceof Serializable)){
- out.writeObject(FrozenConfiguration.of(this.delegate));
+ out.writeObject(this.delegate.getSnapshot());
}else {
out.writeObject(this.delegate);
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/e190b34f/modules/microprofile/src/main/java/org/apache/tamaya/microprofile/TamayaConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/microprofile/src/main/java/org/apache/tamaya/microprofile/TamayaConfiguration.java b/modules/microprofile/src/main/java/org/apache/tamaya/microprofile/TamayaConfiguration.java
index c16aa63..8d202cb 100644
--- a/modules/microprofile/src/main/java/org/apache/tamaya/microprofile/TamayaConfiguration.java
+++ b/modules/microprofile/src/main/java/org/apache/tamaya/microprofile/TamayaConfiguration.java
@@ -20,6 +20,7 @@ package org.apache.tamaya.microprofile;
import org.apache.tamaya.*;
import org.apache.tamaya.spi.ConfigurationContext;
+import org.apache.tamaya.spisupport.DefaultConfigurationSnapshot;
import org.eclipse.microprofile.config.Config;
import java.util.*;
@@ -80,4 +81,14 @@ public class TamayaConfiguration implements Configuration{
public ConfigurationContext getContext() {
return ConfigurationContext.EMPTY;
}
+
+ @Override
+ public ConfigurationSnapshot getSnapshot(Iterable<String> keys) {
+ return new DefaultConfigurationSnapshot(this, keys);
+ }
+
+ @Override
+ public ConfigurationSnapshot getSnapshot() {
+ return new DefaultConfigurationSnapshot(this);
+ }
}