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 <[email protected]> Authored: Sun Nov 18 22:17:15 2018 +0100 Committer: Anatole Tresch <[email protected]> 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); + } }
