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/01/03 00:09:04 UTC
[08/18] incubator-tamaya-extensions git commit: Adapted to comply
with JSR API.
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/4869d946/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
deleted file mode 100644
index e7782a0..0000000
--- a/modules/events/src/main/java/org/apache/tamaya/events/PropertySourceChange.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tamaya.events;
-
-import org.apache.tamaya.spi.PropertySource;
-
-import java.beans.PropertyChangeEvent;
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
-
-/**
- * Event that contains a set current changes that were applied or could be applied.
- * This class is immutable and thread-safe. To create instances use
- * {@link PropertySourceChangeBuilder}.
- *
- * Created by Anatole on 22.10.2014.
- */
-public final class PropertySourceChange implements ConfigEvent<PropertySource>, Serializable{
-
- private static final long serialVersionUID = 1L;
- /** The base property provider/configuration. */
- private final FrozenPropertySource propertySource;
- /** The base version, usable for optimistic locking. */
- private String version = UUID.randomUUID().toString();
- /** The timestamp of the change set in millis from the epoch. */
- private long timestamp = System.currentTimeMillis();
- /** The recorded changes. */
- private final Map<String,PropertyChangeEvent> changes = new HashMap<>();
-
- /**
- * Constructor used by {@link PropertySourceChangeBuilder}.
- * @param builder The builder used, not null.
- */
- PropertySourceChange(PropertySourceChangeBuilder builder) {
- this.propertySource = FrozenPropertySource.of(builder.source);
- for (PropertyChangeEvent c : builder.delta.values()) {
- this.changes.put(c.getPropertyName(), c);
- }
- if(builder.version!=null){
- this.version = builder.version;
- }
- if(builder.timestamp!=null){
- this.timestamp = builder.timestamp;
- }
- }
-
- @Override
- public Class<PropertySource> getResourceType() {
- return PropertySource.class;
- }
-
- /**
- * Get the underlying property provider/configuration.
- * @return the underlying property provider/configuration, or null, if the change instance was deserialized.
- */
- @Override
- public PropertySource getResource(){
- return this.propertySource;
- }
-
- /**
- * Get the base version, usable for optimistic locking.
- * @return the base version.
- */
- @Override
- public String getVersion(){
- return version;
- }
-
- /**
- * Get the timestamp in millis from the current epoch. it is expected that the timestamp and the version are unique to
- * identify a changeset.
- * @return the timestamp, when this changeset was created.
- */
- @Override
- public long getTimestamp(){
- return timestamp;
- }
-
- /**
- * Get the changes recorded.
- * @return the recorded changes, never null.
- */
- public Collection<PropertyChangeEvent> getChanges(){
- return Collections.unmodifiableCollection(this.changes.values());
- }
-
- /**
- * Access the number current removed entries.
- * @return the number current removed entries.
- */
- public int getRemovedSize() {
- int removedCount = 0;
- for (PropertyChangeEvent ev : this.changes.values()) {
- if (ev.getNewValue() == null) {
- removedCount++;
- }
- }
- return removedCount;
-// return (int) this.changes.values().stream().filter((e) -> e.getNewValue() == null).count();
- }
-
- /**
- * Access the number current added entries.
- * @return the number current added entries.
- */
- public int getAddedSize() {
- int addedCount = 0;
- for (PropertyChangeEvent ev : this.changes.values()) {
- if (ev.getOldValue() == null &&
- ev.getNewValue() != null) {
- addedCount++;
- }
- }
- return addedCount;
-// return (int) this.changes.values().stream().filter((e) -> e.getOldValue() == null).count();
- }
-
- /**
- * Access the number current updated entries.
- * @return the number current updated entries.
- */
- public int getUpdatedSize() {
- int updatedCount = 0;
- for (PropertyChangeEvent ev : this.changes.values()) {
- if (ev.getOldValue() != null && ev.getNewValue() != null) {
- updatedCount++;
- }
- }
- return updatedCount;
-// return (int) this.changes.values().stream().filter((e) -> e.getOldValue()!=null && e.getNewValue()!=null).count();
- }
-
-
- /**
- * Checks if the given key was removed.
- * @param key the target key, not null.
- * @return true, if the given key was removed.
- */
- public boolean isRemoved(String key) {
- PropertyChangeEvent change = this.changes.get(key);
- return change != null && change.getNewValue() == null;
- }
-
- /**
- * Checks if the given key was added.
- * @param key the target key, not null.
- * @return true, if the given key was added.
- */
- public boolean isAdded(String key) {
- PropertyChangeEvent change = this.changes.get(key);
- return change != null && change.getOldValue() == null;
- }
-
- /**
- * Checks if the given key was updated.
- * @param key the target key, not null.
- * @return true, if the given key was updated.
- */
- public boolean isUpdated(String key) {
- PropertyChangeEvent change = this.changes.get(key);
- return change != null && change.getOldValue() != null && change.getNewValue() != null;
- }
-
- /**
- * Checks if the given key is added, or updated AND NOT removed.
- * @param key the target key, not null.
- * @return true, if the given key was added, or updated BUT NOT removed.
- */
- public boolean isKeyAffected(String key) {
- PropertyChangeEvent change = this.changes.get(key);
- return change != null && change.getNewValue() != null;
- }
-
- /**
- * CHecks if the current change set does not contain any changes.
- * @return tru, if the change set is empty.
- */
- public boolean isEmpty(){
- return this.changes.isEmpty();
- }
-
-
- @Override
- public String toString() {
- return "PropertySourceChange{" +
- ", propertySource=" + propertySource +
- ", version='" + version + '\'' +
- ", timestamp=" + timestamp +
- '}';
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/4869d946/modules/events/src/main/java/org/apache/tamaya/events/PropertySourceChangeBuilder.java
----------------------------------------------------------------------
diff --git a/modules/events/src/main/java/org/apache/tamaya/events/PropertySourceChangeBuilder.java b/modules/events/src/main/java/org/apache/tamaya/events/PropertySourceChangeBuilder.java
deleted file mode 100644
index 1e58855..0000000
--- a/modules/events/src/main/java/org/apache/tamaya/events/PropertySourceChangeBuilder.java
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tamaya.events;
-
-import org.apache.tamaya.spi.PropertySource;
-import org.apache.tamaya.spi.PropertyValue;
-
-import java.beans.PropertyChangeEvent;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
-/**
- * Models a set current changes applied to a {@link org.apache.tamaya.spi.PropertySource}. Consumers of these events
- * can observing changes to property sources and
- * <ol>
- * <li>Check if their current configuration instance ({@link org.apache.tamaya.spi.ConfigurationContext}
- * contains the changed {@link org.apache.tamaya.spi.PropertySource} (Note: the reference tova property source is never affected by a
- * change, its only the data of the property source).</li>
- * <li>If so corresponding action may be taken, such as reevaluating the configuration values (depending on
- * the update policy) or reevaluating the complete {@link org.apache.tamaya.Configuration} to create a change
- * event on configuration level.
- * </ol>
- */
-public final class PropertySourceChangeBuilder {
- /**
- * The recorded changes.
- */
- final SortedMap<String, PropertyChangeEvent> delta = new TreeMap<>();
- /**
- * The underlying configuration/provider.
- */
- final PropertySource source;
- /**
- * The version configured, or null, for generating a default.
- */
- String version;
- /**
- * The optional timestamp in millis of this epoch.
- */
- Long timestamp;
-
- /**
- * Constructor.
- *
- * @param source the underlying configuration/provider, not null.
- */
- private PropertySourceChangeBuilder(PropertySource source) {
- this.source = Objects.requireNonNull(source);
- }
-
- /**
- * Creates a new instance of this builder.
- *
- * @param source the underlying property provider/configuration, not null.
- * @return the builder for chaining.
- */
- public static PropertySourceChangeBuilder of(PropertySource source) {
- return new PropertySourceChangeBuilder(source);
- }
-
- /**
- * Compares the two property config/configurations and creates a collection current all changes
- * that must be applied to render {@code map1} into {@code map2}.
- *
- * @param map1 the source map, not null.
- * @param map2 the target map, not null.
- * @return a collection current change events, never null.
- */
- public static Collection<PropertyChangeEvent> compare(PropertySource map1, PropertySource map2) {
- List<PropertyChangeEvent> changes = new ArrayList<>();
- for (Map.Entry<String, PropertyValue> en : map1.getProperties().entrySet()) {
- PropertyValue val = map2.get(en.getKey());
- if (val == null) {
- changes.add(new PropertyChangeEvent(map1, en.getKey(), null, en.getValue().getValue()));
- } else if (!val.equals(en.getValue())) {
- changes.add(new PropertyChangeEvent(map1, en.getKey(), val.getValue(), en.getValue().getValue()));
- }
- }
- for (Map.Entry<String, PropertyValue> en : map2.getProperties().entrySet()) {
- PropertyValue val = map1.get(en.getKey());
- if (val == null) {
- changes.add(new PropertyChangeEvent(map1, en.getKey(), en.getValue().getValue(), null));
- } else if (!val.equals(en.getValue())) {
- changes.add(new PropertyChangeEvent(map1, en.getKey(), en.getValue().getValue(), val.getValue()));
- }
- }
- return changes;
- }
-
- /*
- * Apply a version/UUID to the set being built.
- * @param version the version to apply, or null, to let the system generate a version for you.
- * @return the builder for chaining.
- */
- public PropertySourceChangeBuilder setVersion(String version) {
- this.version = version;
- return this;
- }
-
- /*
- * Apply given timestamp to the set being built.
- * @param version the version to apply, or null, to let the system generate a version for you.
- * @return the builder for chaining.
- */
- public PropertySourceChangeBuilder setTimestamp(long timestamp) {
- this.timestamp = timestamp;
- return this;
- }
-
- /**
- * This method records all changes to be applied to the base property provider/configuration to
- * achieve the given target state.
- *
- * @param newState the new target state, not null.
- * @return the builder for chaining.
- */
- public PropertySourceChangeBuilder addChanges(PropertySource newState) {
- Collection<PropertyChangeEvent> events = PropertySourceChangeBuilder.compare(newState, this.source);
- for (PropertyChangeEvent c : events) {
- this.delta.put(c.getPropertyName(), c);
- }
- return this;
- }
-
- /**
- * Get the current values, also considering any changes recorded within this change set.
- *
- * @param key the key current the entry, not null.
- * @return the keys, or null.
- */
- public String get(String key) {
- PropertyChangeEvent change = this.delta.get(key);
- if (change != null && !(change.getNewValue() == null)) {
- return (String) change.getNewValue();
- }
- return null;
- }
-
- /**
- * Marks the given key(s) fromMap the configuration/properties to be removed.
- *
- * @param key the key current the entry, not null.
- * @param otherKeys additional keys to be removed (convenience), not null.
- * @return the builder for chaining.
- */
- public PropertySourceChangeBuilder remove(String key, String... otherKeys) {
- PropertyValue oldValue = this.source.get(key);
- if (oldValue == null) {
- this.delta.remove(key);
- }
- this.delta.put(key, new PropertyChangeEvent(this.source, key, oldValue, null));
- for (String addKey : otherKeys) {
- oldValue = this.source.get(addKey);
- if (oldValue == null) {
- this.delta.remove(addKey);
- }
- this.delta.put(addKey, new PropertyChangeEvent(this.source, addKey, oldValue, null));
- }
- return this;
- }
-
- /**
- * Apply all the given values to the base configuration/properties.
- * Note that all values passed must be convertible to String, either
- * <ul>
- * <li>the registered codecs provider provides codecs for the corresponding keys, or </li>
- * <li>default codecs are present for the given type, or</li>
- * <li>the value is an instanceof String</li>
- * </ul>
- *
- * @param changes the changes to be applied, not null.
- * @return the builder for chaining.
- */
- public PropertySourceChangeBuilder putAll(Map<String, String> changes) {
- for (Map.Entry<String, PropertyValue> en : this.source.getProperties().entrySet()) {
- this.delta.put(en.getKey(), new PropertyChangeEvent(this.source, en.getKey(), null, en.getValue()));
- }
- return this;
- }
-
- /**
- * This method will create a change set that clears all entries fromMap the given base configuration/properties.
- *
- * @return the builder for chaining.
- */
- public PropertySourceChangeBuilder deleteAll() {
- this.delta.clear();
- for (Map.Entry<String, PropertyValue> en : this.source.getProperties().entrySet()) {
- this.delta.put(en.getKey(), new PropertyChangeEvent(this.source, en.getKey(), en.getValue().getValue(), null));
- }
- return this;
- }
-
- /**
- * Checks if the change set is empty, i.e. does not contain any changes.
- *
- * @return true, if the set is empty.
- */
- public boolean isEmpty() {
- return this.delta.isEmpty();
- }
-
- /**
- * Resets this change set instance. This will clear all changes done to this builder, so the
- * set will be empty.
- */
- public void reset() {
- this.delta.clear();
- }
-
-
- /**
- * Builds the corresponding change set.
- *
- * @return the new change set, never null.
- */
- public PropertySourceChange build() {
- return new PropertySourceChange(this);
- }
-
- /*
- * (non-Javadoc)
- * @see java.lang.Object#toString()
- */
- @Override
- public String toString() {
- return "PropertiesChangeBuilder [source=" + source + ", " +
- ", delta=" + delta + "]";
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/4869d946/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 51951de..0138aa7 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
@@ -18,12 +18,12 @@
*/
package org.apache.tamaya.events.internal;
-import org.apache.tamaya.ConfigurationProvider;
import org.apache.tamaya.events.ConfigEventManager;
-import org.apache.tamaya.events.ConfigurationChange;
-import org.apache.tamaya.events.ConfigurationChangeBuilder;
-import org.apache.tamaya.events.FrozenConfiguration;
+import org.apache.tamaya.events.ConfigChange;
+import org.apache.tamaya.events.ConfigChangeBuilder;
+import org.apache.tamaya.events.FrozenConfig;
+import javax.config.ConfigProvider;
import java.util.*;
import java.util.logging.Logger;
@@ -40,7 +40,7 @@ public class DefaultConfigChangeObserver {
private long checkPeriod = 2000L;
- private volatile FrozenConfiguration lastConfig;
+ private volatile FrozenConfig lastConfig;
private volatile boolean running;
@@ -61,11 +61,11 @@ public class DefaultConfigChangeObserver {
public void checkConfigurationUpdate() {
LOG.finest("Checking configuration for changes...");
- FrozenConfiguration frozenConfig = FrozenConfiguration.of(ConfigurationProvider.getConfiguration());
- ConfigurationChange changes;
+ FrozenConfig frozenConfig = FrozenConfig.of(ConfigProvider.getConfig());
+ ConfigChange changes;
if (getLastConfig() != null) {
- changes = ConfigurationChangeBuilder.of(getLastConfig()).addChanges(frozenConfig)
+ changes = ConfigChangeBuilder.of(getLastConfig()).addChanges(frozenConfig)
.build();
if(!changes.isEmpty()) {
LOG.info("Identified configuration changes, publishing changes:\n" + changes);
@@ -77,11 +77,11 @@ public class DefaultConfigChangeObserver {
}
- protected FrozenConfiguration getLastConfig() {
+ protected FrozenConfig getLastConfig() {
return lastConfig;
}
- protected void setLastConfig(FrozenConfiguration newConfiguration) {
+ protected void setLastConfig(FrozenConfig newConfiguration) {
lastConfig = newConfiguration;
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/4869d946/modules/events/src/main/java/org/apache/tamaya/events/internal/LoggingConfigListener.java
----------------------------------------------------------------------
diff --git a/modules/events/src/main/java/org/apache/tamaya/events/internal/LoggingConfigListener.java b/modules/events/src/main/java/org/apache/tamaya/events/internal/LoggingConfigListener.java
index 6483154..13b74d7 100644
--- a/modules/events/src/main/java/org/apache/tamaya/events/internal/LoggingConfigListener.java
+++ b/modules/events/src/main/java/org/apache/tamaya/events/internal/LoggingConfigListener.java
@@ -18,11 +18,11 @@
*/
package org.apache.tamaya.events.internal;
-import org.apache.tamaya.Configuration;
import org.apache.tamaya.events.ConfigEvent;
import org.apache.tamaya.events.ConfigEventListener;
import org.osgi.service.component.annotations.Component;
+import javax.config.Config;
import java.util.logging.Logger;
/**
@@ -35,7 +35,7 @@ public class LoggingConfigListener implements ConfigEventListener {
@Override
public void onConfigEvent(ConfigEvent<?> event) {
- if(event.getResourceType()== Configuration.class) {
+ if(event.getResourceType()== Config.class) {
LOG.info("Configuration changed: " + event);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/4869d946/modules/events/src/main/java/org/apache/tamaya/events/spi/ConfigEventManagerSpi.java
----------------------------------------------------------------------
diff --git a/modules/events/src/main/java/org/apache/tamaya/events/spi/ConfigEventManagerSpi.java b/modules/events/src/main/java/org/apache/tamaya/events/spi/ConfigEventManagerSpi.java
index 4c90224..c4e512a 100644
--- a/modules/events/src/main/java/org/apache/tamaya/events/spi/ConfigEventManagerSpi.java
+++ b/modules/events/src/main/java/org/apache/tamaya/events/spi/ConfigEventManagerSpi.java
@@ -18,6 +18,7 @@
*/
package org.apache.tamaya.events.spi;
+import org.apache.tamaya.events.ConfigChange;
import org.apache.tamaya.events.ConfigEvent;
import org.apache.tamaya.events.ConfigEventListener;
@@ -119,7 +120,7 @@ public interface ConfigEventManagerSpi {
* and trigger ConfigurationChange events if something is changed. This is quite handy for publishing
* configuration changes to whatever systems are interested in. Hereby the origin of a configuration change
* can be on this machine, or also remotely. For handling corresponding {@link ConfigEventListener} have
- * to be registered, e.g. listening on {@link org.apache.tamaya.events.ConfigurationChange} events.
+ * to be registered, e.g. listening on {@link ConfigChange} events.
*
* @param enable whether to enable or disable the change monitoring.
*/
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/4869d946/modules/events/src/test/java/org/apache/tamaya/events/ChangeableGlobalConfigSource.java
----------------------------------------------------------------------
diff --git a/modules/events/src/test/java/org/apache/tamaya/events/ChangeableGlobalConfigSource.java b/modules/events/src/test/java/org/apache/tamaya/events/ChangeableGlobalConfigSource.java
new file mode 100644
index 0000000..6e3ae13
--- /dev/null
+++ b/modules/events/src/test/java/org/apache/tamaya/events/ChangeableGlobalConfigSource.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tamaya.events;
+
+import org.apache.tamaya.base.configsource.BaseConfigSource;
+
+import java.util.Collections;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * PropertySource implementation that accesses properties that are statically stored.
+ */
+public class ChangeableGlobalConfigSource extends BaseConfigSource{
+
+ private static final Map<String,String> STORED_ENTRIES = new ConcurrentHashMap<>();
+
+ @Override
+ public String getName() {
+ return getClass().getSimpleName();
+ }
+
+ @Override
+ public Map<String, String> getProperties() {
+ return Collections.emptyMap();
+ }
+
+ /**
+ * Put a value (globally) into this property source.
+ * @param key the key, not null
+ * @param value the value, not null
+ * @return the entry replaced, or null.
+ */
+ public static String put(String key, String value){
+ return STORED_ENTRIES.put(key,value);
+ }
+
+ /**
+ * Put all the properties, overriding any existing ones with the same key.
+ * @param properties the properties, not null.
+ */
+ public static void putAll(Map<String,String> properties){
+ STORED_ENTRIES.putAll(properties);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/4869d946/modules/events/src/test/java/org/apache/tamaya/events/ChangeableGlobalPropertySource.java
----------------------------------------------------------------------
diff --git a/modules/events/src/test/java/org/apache/tamaya/events/ChangeableGlobalPropertySource.java b/modules/events/src/test/java/org/apache/tamaya/events/ChangeableGlobalPropertySource.java
deleted file mode 100644
index 94a0a9d..0000000
--- a/modules/events/src/test/java/org/apache/tamaya/events/ChangeableGlobalPropertySource.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tamaya.events;
-
-import org.apache.tamaya.spisupport.propertysource.BasePropertySource;
-import org.apache.tamaya.spi.PropertyValue;
-
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * PropertySource implementation that accesses properties that are statically stored.
- */
-public class ChangeableGlobalPropertySource extends BasePropertySource{
-
- private static final Map<String,String> STORED_ENTRIES = new ConcurrentHashMap<>();
-
- @Override
- public String getName() {
- return getClass().getSimpleName();
- }
-
- @Override
- public Map<String, PropertyValue> getProperties() {
- return null;
- }
-
- /**
- * Put a value (globally) into this property source.
- * @param key the key, not null
- * @param value the value, not null
- * @return the entry replaced, or null.
- */
- public static String put(String key, String value){
- return STORED_ENTRIES.put(key,value);
- }
-
- /**
- * Put all the properties, overriding any existing ones with the same key.
- * @param properties the properties, not null.
- */
- public static void putAll(Map<String,String> properties){
- STORED_ENTRIES.putAll(properties);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/4869d946/modules/events/src/test/java/org/apache/tamaya/events/ChangeableThreadLocalPropertySource.java
----------------------------------------------------------------------
diff --git a/modules/events/src/test/java/org/apache/tamaya/events/ChangeableThreadLocalPropertySource.java b/modules/events/src/test/java/org/apache/tamaya/events/ChangeableThreadLocalPropertySource.java
index f8fd413..df7425c 100644
--- a/modules/events/src/test/java/org/apache/tamaya/events/ChangeableThreadLocalPropertySource.java
+++ b/modules/events/src/test/java/org/apache/tamaya/events/ChangeableThreadLocalPropertySource.java
@@ -18,8 +18,7 @@
*/
package org.apache.tamaya.events;
-import org.apache.tamaya.spisupport.propertysource.BasePropertySource;
-import org.apache.tamaya.spi.PropertyValue;
+import org.apache.tamaya.base.configsource.BaseConfigSource;
import java.util.HashMap;
import java.util.Map;
@@ -29,7 +28,7 @@ import java.util.Map;
* PropertySource implementation that accesses properties that are stored on ThreadLocal level, e.g. good to use for
* testing..
*/
-public class ChangeableThreadLocalPropertySource extends BasePropertySource{
+public class ChangeableThreadLocalPropertySource extends BaseConfigSource{
private static final ThreadLocal<Map<String,String>> STORED_ENTRIES = new ThreadLocal<Map<String,String>>(){
protected Map<String,String> initialValue(){
@@ -43,7 +42,7 @@ public class ChangeableThreadLocalPropertySource extends BasePropertySource{
}
@Override
- public Map<String, PropertyValue> getProperties() {
+ public Map<String, String> getProperties() {
return null;
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/4869d946/modules/events/src/test/java/org/apache/tamaya/events/ConfigChangeBuilderTest.java
----------------------------------------------------------------------
diff --git a/modules/events/src/test/java/org/apache/tamaya/events/ConfigChangeBuilderTest.java b/modules/events/src/test/java/org/apache/tamaya/events/ConfigChangeBuilderTest.java
new file mode 100644
index 0000000..bd4a4f9
--- /dev/null
+++ b/modules/events/src/test/java/org/apache/tamaya/events/ConfigChangeBuilderTest.java
@@ -0,0 +1,134 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tamaya.events;
+
+import org.junit.Test;
+import org.mockito.Mockito;
+
+import javax.config.Config;
+import java.beans.PropertyChangeEvent;
+import java.util.*;
+
+import static java.util.Collections.emptySet;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.doThrow;
+
+public class ConfigChangeBuilderTest {
+
+ @Test
+ public void compareReturnAnEmptyListOfChangesForTwoEmptyConfigs() {
+ Config oc = Mockito.mock(Config.class, new MethodNotMockedAnswer());
+ Config nc = Mockito.mock(Config.class, new MethodNotMockedAnswer());
+
+ doReturn(emptySet()).when(oc).getPropertyNames();
+ doReturn(emptySet()).when(nc).getPropertyNames();
+
+ Collection<PropertyChangeEvent> diff = ConfigChangeBuilder.compare(oc, nc);
+
+ assertThat(diff).isNotNull().isEmpty();
+ }
+
+ @Test
+ public void compareReturnsAChangeEventIfThereIsANewKeyInTheNewVersionOfTheConfig() {
+ Config oc = Mockito.mock(Config.class, new MethodNotMockedAnswer());
+ Config nc = Mockito.mock(Config.class, new MethodNotMockedAnswer());
+
+ doReturn(emptySet()).when(oc).getPropertyNames();
+ doThrow(new NoSuchElementException()).when(oc).getValue("a", String.class);
+ doReturn(Optional.empty()).when(oc).getOptionalValue("a", String.class);
+
+ Map<String, String> valuesNC = new HashMap<String, String>();
+ valuesNC.put("a", "19");
+
+ doReturn(valuesNC.keySet()).when(nc).getPropertyNames();
+ doReturn(Optional.of("19")).when(nc).getOptionalValue("a", String.class);
+
+ Collection<PropertyChangeEvent> diff = ConfigChangeBuilder.compare(oc, nc);
+
+ assertThat(diff).isNotNull().isNotEmpty().hasSize(1);
+
+ PropertyChangeEvent change = diff.iterator().next();
+
+ assertThat(change).isNotNull();
+ assertThat(change.getNewValue()).isEqualTo("19");
+ assertThat(change.getOldValue()).isNull();
+ assertThat(change.getPropertyName()).isEqualTo("a");
+ }
+
+ @Test
+ public void compareReturnsAChangeEventIfAKeyHasBeenRemovedInTheNewVersionOfTheConfig() {
+ Config oc = Mockito.mock(Config.class, new MethodNotMockedAnswer());
+ Config nc = Mockito.mock(Config.class, new MethodNotMockedAnswer());
+
+ Map<String, String> valuesOC = new HashMap<String, String>();
+ valuesOC.put("a", "19");
+
+ doReturn(valuesOC.keySet()).when(oc).getPropertyNames();
+ doReturn("19").when(oc).getValue("a", String.class);
+
+ doReturn(emptySet()).when(nc).getPropertyNames();
+ doReturn(Optional.empty()).when(nc).getOptionalValue("a", String.class);
+
+ Collection<PropertyChangeEvent> diff = ConfigChangeBuilder.compare(oc, nc);
+
+ assertThat(diff).isNotNull().isNotEmpty().hasSize(1);
+
+ PropertyChangeEvent change = diff.iterator().next();
+
+ assertThat(change).isNotNull();
+ assertThat(change.getNewValue()).isNull();
+ assertThat(change.getOldValue()).isEqualTo("19");
+ assertThat(change.getPropertyName()).isEqualTo("a");
+ }
+
+ @Test
+ public void compareReturnsAChangeEventIfValueOfExistingKeyHasChanged() {
+ Config oc = Mockito.mock(Config.class, new MethodNotMockedAnswer());
+ Config nc = Mockito.mock(Config.class, new MethodNotMockedAnswer());
+
+ Map<String, String> valuesOC = new HashMap<String, String>();
+ valuesOC.put("a", "91");
+
+ doReturn(valuesOC.keySet()).when(oc).getPropertyNames();
+ doReturn(Optional.of("91")).when(oc).getOptionalValue("a", String.class);
+ doReturn("91").when(oc).getValue("a",String.class);
+ doReturn("old Config").when(oc).toString();
+
+ Map<String, String> valuesNC = new HashMap<String, String>();
+ valuesNC.put("a", "19");
+
+ doReturn(valuesNC.keySet()).when(nc).getPropertyNames();
+ doReturn(Optional.of("19")).when(nc).getOptionalValue("a",String.class);
+ doReturn("19").when(nc).getValue("a",String.class);
+ doReturn("new Config").when(nc).toString();
+
+ Collection<PropertyChangeEvent> diff = ConfigChangeBuilder.compare(oc, nc);
+
+ assertThat(diff).isNotNull().isNotEmpty().hasSize(1);
+
+ PropertyChangeEvent change = diff.iterator().next();
+
+ assertThat(change).isNotNull();
+ assertThat(change.getNewValue()).isEqualTo("19");
+ assertThat(change.getOldValue()).isEqualTo("91");
+ assertThat(change.getPropertyName()).isEqualTo("a");
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/4869d946/modules/events/src/test/java/org/apache/tamaya/events/ConfigChangeTest.java
----------------------------------------------------------------------
diff --git a/modules/events/src/test/java/org/apache/tamaya/events/ConfigChangeTest.java b/modules/events/src/test/java/org/apache/tamaya/events/ConfigChangeTest.java
new file mode 100644
index 0000000..6090576
--- /dev/null
+++ b/modules/events/src/test/java/org/apache/tamaya/events/ConfigChangeTest.java
@@ -0,0 +1,161 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tamaya.events;
+
+import org.junit.Test;
+
+import javax.config.Config;
+import javax.config.ConfigProvider;
+
+import static org.junit.Assert.*;
+
+
+/**
+ * Test class for {@link ConfigChange}.
+ */
+public class ConfigChangeTest {
+
+ @Test
+ public void testEmptyChangeSet() throws Exception {
+ ConfigChange change = ConfigChange.emptyChangeSet(ConfigProvider.getConfig());
+ assertNotNull(change);
+ assertTrue(change.getChanges().isEmpty());
+ }
+
+ @Test
+ public void testGetConfig() throws Exception {
+ Config config = ConfigProvider.getConfig();
+ ConfigChange change = ConfigChangeBuilder.of(config).build();
+ assertNotNull(change);
+ assertTrue(change.getUpdatedSize()==0);
+ assertTrue(change.getAddedSize()==0);
+ assertTrue(change.getRemovedSize()==0);
+ assertTrue(change.getChanges().size()==0);
+ for (String key : config.getPropertyNames()) {
+ if (!"[meta]frozenAt".equals(key)) {
+ if(key.contains("random.new")){ // dynamic generated value!
+ continue;
+ }
+ }
+ }
+ }
+
+ @Test
+ public void testGetVersion() throws Exception {
+ Config config = ConfigProvider.getConfig();
+ ConfigChange change = ConfigChangeBuilder.of(config).build();
+ assertNotNull(change.getVersion());
+ change = ConfigChangeBuilder.of(config).setVersion("version2").build();
+ assertEquals("version2", change.getVersion());
+ }
+
+ @Test
+ public void testGetTimestamp() throws Exception {
+ Config config = ConfigProvider.getConfig();
+ Thread.sleep(10L);
+ ConfigChange change = ConfigChangeBuilder.of(config).build();
+ assertTrue((System.currentTimeMillis() - change.getTimestamp()) > 0L);
+ change = ConfigChangeBuilder.of(config).setTimestamp(10L).build();
+ assertEquals(10L, change.getTimestamp());
+ }
+
+ @Test
+ public void testGetEvents() throws Exception {
+ Config config = ConfigProvider.getConfig();
+ ConfigChange change = ConfigChangeBuilder.of(config).removeKey("key1", "key2").build();
+ assertTrue(change.getChanges().size() == 2);
+ change = ConfigChangeBuilder.of(config).addChange("key1Added", "value1Added").build();
+ assertTrue(change.getChanges().size() == 1);
+ }
+
+ @Test
+ public void testGetRemovedSize() throws Exception {
+ Config config = ConfigProvider.getConfig();
+ ConfigChange change = ConfigChangeBuilder.of(config).removeKey("java.version", "key2").build();
+ assertTrue(change.getRemovedSize() == 2);
+ assertTrue(change.getAddedSize() == 0);
+ }
+
+ @Test
+ public void testGetAddedSize() throws Exception {
+ Config config = ConfigProvider.getConfig();
+ ConfigChange change = ConfigChangeBuilder.of(config).addChange("key1", "key2").build();
+ assertTrue(change.getAddedSize() == 1);
+ assertTrue(change.getRemovedSize() == 0);
+ }
+
+ @Test
+ public void testGetUpdatedSize() throws Exception {
+ Config config = ConfigProvider.getConfig();
+ ConfigChange change = ConfigChangeBuilder.of(config).addChange("java.version", "1.8").build();
+ assertTrue(change.getUpdatedSize() == 1);
+ }
+
+ @Test
+ public void testIsRemoved() throws Exception {
+ Config config = ConfigProvider.getConfig();
+ ConfigChange change = ConfigChangeBuilder.of(config).removeKey("java.version").build();
+ assertTrue(change.isRemoved("java.version"));
+ }
+
+ @Test
+ public void testIsAdded() throws Exception {
+ Config config = ConfigProvider.getConfig();
+ ConfigChange change = ConfigChangeBuilder.of(config).addChange("key1", "key2").build();
+ assertTrue(change.isAdded("key1"));
+ }
+
+ @Test
+ public void testIsUpdated() throws Exception {
+ Config config = ConfigProvider.getConfig();
+ ConfigChange change = ConfigChangeBuilder.of(config).addChange("java.version", "1.8").build();
+ assertTrue(change.isUpdated("java.version"));
+ }
+
+ @Test
+ public void testContainsKey() throws Exception {
+ Config config = ConfigProvider.getConfig();
+ ConfigChange change = ConfigChangeBuilder.of(config).addChange("key1", "key2").build();
+ assertTrue(change.isKeyAffected("key1"));
+ assertFalse(change.isKeyAffected("key2"));
+ change = ConfigChangeBuilder.of(config).removeKey("java.version").build();
+ assertFalse(change.isKeyAffected("java.version"));
+ assertFalse(change.isKeyAffected("key2"));
+ }
+
+ @Test
+ public void testIsEmpty() throws Exception {
+ Config config = ConfigProvider.getConfig();
+ ConfigChange change = ConfigChangeBuilder.of(config).build();
+ assertTrue(change.isEmpty());
+ }
+
+ @Test
+ public void testToString() throws Exception {
+ Config config = ConfigProvider.getConfig();
+ ConfigChange change = ConfigChangeBuilder.of(config).removeKey("java.version").build();
+ String toString =
+ change.toString();
+ assertTrue(toString.contains("timestamp"));
+ assertTrue(toString.contains("change-id"));
+ assertTrue(toString.contains("config-id"));
+ assertFalse(toString.contains("key1"));
+ assertFalse(toString.contains("key2"));
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/4869d946/modules/events/src/test/java/org/apache/tamaya/events/ConfigSourceChangeTest.java
----------------------------------------------------------------------
diff --git a/modules/events/src/test/java/org/apache/tamaya/events/ConfigSourceChangeTest.java b/modules/events/src/test/java/org/apache/tamaya/events/ConfigSourceChangeTest.java
new file mode 100644
index 0000000..30bf940
--- /dev/null
+++ b/modules/events/src/test/java/org/apache/tamaya/events/ConfigSourceChangeTest.java
@@ -0,0 +1,180 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tamaya.events;
+
+import org.apache.tamaya.base.configsource.EnvironmentConfigSource;
+import org.apache.tamaya.base.configsource.SimpleConfigSource;
+import org.apache.tamaya.base.configsource.SystemConfigSource;
+import org.junit.Test;
+
+import javax.config.spi.ConfigSource;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.junit.Assert.*;
+
+/**
+ * Tests for {@link ConfigSourceChange} and its builder.
+ */
+public class ConfigSourceChangeTest {
+
+ private static final ConfigSource myPS = new SystemConfigSource();
+
+ @Test
+ public void testGetPropertySource() throws Exception {
+ ConfigSourceChange change = ConfigSourceChangeBuilder.of(myPS).build();
+ assertEquals(change.getResource().getName(), myPS.getName());
+ }
+
+ @Test
+ public void testGetVersion() throws Exception {
+ ConfigSourceChange change = ConfigSourceChangeBuilder.of(myPS)
+ .setVersion("myVersion1").build();
+ assertEquals(change.getVersion(), "myVersion1");
+ }
+
+ @Test
+ public void testGetTimestamp() throws Exception {
+ ConfigSourceChange change = ConfigSourceChangeBuilder.of(myPS)
+ .setTimestamp(111L).build();
+ assertEquals(change.getTimestamp(), 111L);
+ }
+
+ @Test
+ public void testGetEvents() throws Exception {
+ ConfigSourceChange change = ConfigSourceChangeBuilder.of(myPS)
+ .addChanges(
+ new EnvironmentConfigSource()
+ ).build();
+ assertTrue(change.getChanges().size()>0);
+ }
+
+ @Test
+ public void testGetRemovedSize() throws Exception {
+ ConfigSourceChange change = ConfigSourceChangeBuilder.of(myPS)
+ .addChanges(
+ new EnvironmentConfigSource()
+ ).build();
+ assertTrue(change.getRemovedSize()>0);
+ }
+
+ @Test
+ public void testGetAddedSize() throws Exception {
+ ConfigSourceChange change = ConfigSourceChangeBuilder.of(myPS)
+ .addChanges(
+ new EnvironmentConfigSource()
+ ).build();
+ assertTrue(change.getAddedSize()>0);
+ }
+
+ @Test
+ public void testGetUpdatedSize() throws Exception {
+ ConfigSourceChange change = ConfigSourceChangeBuilder.of(myPS)
+ .addChanges(
+ new EnvironmentConfigSource()
+ ).build();
+ assertTrue(change.getUpdatedSize()==0);
+ }
+
+ @Test
+ public void testIsRemoved() throws Exception {
+ Map<String, String> testData = new HashMap<>();
+ testData.put("key1", "value1");
+ testData.put("key2", "value2");
+ SimpleConfigSource ps1 = new SimpleConfigSource("test", testData);
+ testData = new HashMap<>();
+ testData.put("key1", "value2");
+ testData.put("key3", "value3");
+ SimpleConfigSource ps2 = new SimpleConfigSource("test", testData);
+ ConfigSourceChange change = ConfigSourceChangeBuilder.of(ps1)
+ .addChanges(
+ ps2
+ ).build();
+ assertFalse(change.isRemoved("key1"));
+ assertTrue(change.isRemoved("key2"));
+ assertFalse(change.isRemoved("key3"));
+ }
+
+ @Test
+ public void testIsAdded() throws Exception {
+ Map<String, String> testData = new HashMap<>();
+ testData.put("key1", "value1");
+ testData.put("key2", "value2");
+ ConfigSource ps1 = new SimpleConfigSource("test", testData);
+ testData = new HashMap<>();
+ testData.put("key1", "value2");
+ testData.put("key3", "value3");
+ ConfigSource ps2 = new SimpleConfigSource("test", testData);
+ ConfigSourceChange change = ConfigSourceChangeBuilder.of(ps1)
+ .addChanges(
+ ps2
+ ).build();
+ assertTrue(change.isAdded("key3"));
+ assertFalse(change.isAdded("key2"));
+ assertFalse(change.isAdded("key1"));
+ }
+
+ @Test
+ public void testIsUpdated() throws Exception {
+ Map<String, String> testData = new HashMap<>();
+ testData.put("key1", "value1");
+ testData.put("key2", "value2");
+ SimpleConfigSource ps1 = new SimpleConfigSource("test", testData);
+ testData = new HashMap<>();
+ testData.put("key1", "value2");
+ testData.put("key3", "value3");
+ SimpleConfigSource ps2 = new SimpleConfigSource("test", testData);
+ ConfigSourceChange change = ConfigSourceChangeBuilder.of(ps1)
+ .addChanges(
+ ps2
+ ).build();
+ assertTrue(change.isUpdated("key1"));
+ assertFalse(change.isUpdated("key2"));
+ assertFalse(change.isUpdated("key3"));
+ }
+
+ @Test
+ public void testContainsKey() throws Exception {
+ ConfigSourceChange change = ConfigSourceChangeBuilder.of(new EnvironmentConfigSource())
+ .addChanges(
+ myPS
+ ).build();
+ assertTrue(change.isKeyAffected("java.version"));
+ }
+
+ @Test
+ public void testIsEmpty() throws Exception {
+ ConfigSourceChange change = ConfigSourceChangeBuilder.of(new EnvironmentConfigSource())
+ .build();
+ assertTrue(change.isEmpty());
+ change = ConfigSourceChangeBuilder.of(new EnvironmentConfigSource())
+ .addChanges(
+ myPS
+ ).build();
+ assertFalse(change.isEmpty());
+ }
+
+ @Test
+ public void testToString() throws Exception {
+ ConfigSourceChange change = ConfigSourceChangeBuilder.of(myPS).build();
+ String toString = change.toString();
+ assertNotNull(toString);
+ assertTrue(toString.contains(myPS.getName()));
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/4869d946/modules/events/src/test/java/org/apache/tamaya/events/ConfigurationChangeBuilderTest.java
----------------------------------------------------------------------
diff --git a/modules/events/src/test/java/org/apache/tamaya/events/ConfigurationChangeBuilderTest.java b/modules/events/src/test/java/org/apache/tamaya/events/ConfigurationChangeBuilderTest.java
deleted file mode 100644
index d0ee77a..0000000
--- a/modules/events/src/test/java/org/apache/tamaya/events/ConfigurationChangeBuilderTest.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tamaya.events;
-
-import org.apache.tamaya.Configuration;
-import org.junit.Test;
-import org.mockito.Mockito;
-
-import java.beans.PropertyChangeEvent;
-import java.util.*;
-
-import static java.util.Collections.emptyMap;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.doReturn;
-
-public class ConfigurationChangeBuilderTest {
-
- @Test
- public void compareReturnAnEmptyListOfChangesForTwoEmptyConfigurations() {
- Configuration oc = Mockito.mock(Configuration.class, new MethodNotMockedAnswer());
- Configuration nc = Mockito.mock(Configuration.class, new MethodNotMockedAnswer());
-
- doReturn(emptyMap()).when(oc).getProperties();
- doReturn(emptyMap()).when(nc).getProperties();
-
- Collection<PropertyChangeEvent> diff = ConfigurationChangeBuilder.compare(oc, nc);
-
- assertThat(diff).isNotNull().isEmpty();
- }
-
- @Test
- public void compareReturnsAChangeEventIfThereIsANewKeyInTheNewVersionOfTheConfiguration() {
- Configuration oc = Mockito.mock(Configuration.class, new MethodNotMockedAnswer());
- Configuration nc = Mockito.mock(Configuration.class, new MethodNotMockedAnswer());
-
- doReturn(emptyMap()).when(oc).getProperties();
- doReturn(null).when(oc).get(eq("a"));
-
- Map<String, String> valuesNC = new HashMap<String, String>();
- valuesNC.put("a", "19");
-
- doReturn(valuesNC).when(nc).getProperties();
- doReturn("19").when(nc).get(eq("a"));
-
- Collection<PropertyChangeEvent> diff = ConfigurationChangeBuilder.compare(oc, nc);
-
- assertThat(diff).isNotNull().isNotEmpty().hasSize(1);
-
- PropertyChangeEvent change = diff.iterator().next();
-
- assertThat(change).isNotNull();
- assertThat(change.getNewValue()).isEqualTo("19");
- assertThat(change.getOldValue()).isNull();
- assertThat(change.getPropertyName()).isEqualTo("a");
- }
-
- @Test
- public void compareReturnsAChangeEventIfAKeyHasBeenRemovedInTheNewVersionOfTheConfiguration() {
- Configuration oc = Mockito.mock(Configuration.class, new MethodNotMockedAnswer());
- Configuration nc = Mockito.mock(Configuration.class, new MethodNotMockedAnswer());
-
- Map<String, String> valuesOC = new HashMap<String, String>();
- valuesOC.put("a", "19");
-
- doReturn(valuesOC).when(oc).getProperties();
- doReturn("19").when(oc).get(eq("a"));
-
- doReturn(emptyMap()).when(nc).getProperties();
- doReturn(null).when(nc).get(eq("a"));
-
- Collection<PropertyChangeEvent> diff = ConfigurationChangeBuilder.compare(oc, nc);
-
- assertThat(diff).isNotNull().isNotEmpty().hasSize(1);
-
- PropertyChangeEvent change = diff.iterator().next();
-
- assertThat(change).isNotNull();
- assertThat(change.getNewValue()).isNull();
- assertThat(change.getOldValue()).isEqualTo("19");
- assertThat(change.getPropertyName()).isEqualTo("a");
- }
-
- @Test
- public void compareReturnsAChangeEventIfValueOfExistingKeyHasChanged() {
- Configuration oc = Mockito.mock(Configuration.class, new MethodNotMockedAnswer());
- Configuration nc = Mockito.mock(Configuration.class, new MethodNotMockedAnswer());
-
- Map<String, String> valuesOC = new HashMap<String, String>();
- valuesOC.put("a", "91");
-
- doReturn(valuesOC).when(oc).getProperties();
- doReturn("91").when(oc).get(eq("a"));
- doReturn("old configuration").when(oc).toString();
-
- Map<String, String> valuesNC = new HashMap<String, String>();
- valuesNC.put("a", "19");
-
- doReturn(valuesNC).when(nc).getProperties();
- doReturn("19").when(nc).get(eq("a"));
- doReturn("new configuration").when(nc).toString();
-
- Collection<PropertyChangeEvent> diff = ConfigurationChangeBuilder.compare(oc, nc);
-
- assertThat(diff).isNotNull().isNotEmpty().hasSize(1);
-
- PropertyChangeEvent change = diff.iterator().next();
-
- assertThat(change).isNotNull();
- assertThat(change.getNewValue()).isEqualTo("19");
- assertThat(change.getOldValue()).isEqualTo("91");
- assertThat(change.getPropertyName()).isEqualTo("a");
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/4869d946/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
deleted file mode 100644
index 60f40c2..0000000
--- a/modules/events/src/test/java/org/apache/tamaya/events/ConfigurationChangeTest.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tamaya.events;
-
-import org.apache.tamaya.Configuration;
-import org.apache.tamaya.ConfigurationProvider;
-import org.junit.Test;
-
-import java.util.Map;
-
-import static org.junit.Assert.*;
-import static org.assertj.core.api.Assertions.*;
-/**
- * Test class for {@link ConfigurationChange}.
- */
-public class ConfigurationChangeTest {
-
- @Test
- public void testEmptyChangeSet() throws Exception {
- ConfigurationChange change = ConfigurationChange.emptyChangeSet(ConfigurationProvider.getConfiguration());
- assertThat(change).isNotNull();
- assertThat(change.getChanges()).isEmpty();
- }
-
- @Test
- public void testGetConfiguration() throws Exception {
- Configuration config = ConfigurationProvider.getConfiguration();
- ConfigurationChange change = ConfigurationChangeBuilder.of(config).build();
- assertNotNull(change);
- assertTrue(change.getUpdatedSize()==0);
- assertTrue(change.getAddedSize()==0);
- assertTrue(change.getRemovedSize()==0);
- assertTrue(change.getChanges().size()==0);
- for (Map.Entry<String, String> en : config.getProperties().entrySet()) {
- if (!"[meta]frozenAt".equals(en.getKey())) {
- if(en.getKey().contains("random.new")){ // dynamic generated value!
- continue;
- }
- assertEquals("Error for " + en.getKey(), en.getValue(), change.getResource().get(en.getKey()));
- }
- }
- }
-
- @Test
- public void testGetVersion() throws Exception {
- Configuration config = ConfigurationProvider.getConfiguration();
- ConfigurationChange change = ConfigurationChangeBuilder.of(config).build();
- assertNotNull(change.getVersion());
- change = ConfigurationChangeBuilder.of(config).setVersion("version2").build();
- assertEquals("version2", change.getVersion());
- }
-
- @Test
- public void testGetTimestamp() throws Exception {
- Configuration config = ConfigurationProvider.getConfiguration();
- Thread.sleep(10L);
- ConfigurationChange change = ConfigurationChangeBuilder.of(config).build();
- assertTrue((System.currentTimeMillis() - change.getTimestamp()) > 0L);
- change = ConfigurationChangeBuilder.of(config).setTimestamp(10L).build();
- assertEquals(10L, change.getTimestamp());
- }
-
- @Test
- public void testGetEvents() throws Exception {
- Configuration config = ConfigurationProvider.getConfiguration();
- ConfigurationChange change = ConfigurationChangeBuilder.of(config).removeKey("key1", "key2").build();
- assertTrue(change.getChanges().size() == 2);
- change = ConfigurationChangeBuilder.of(config).addChange("key1Added", "value1Added").build();
- assertTrue(change.getChanges().size() == 1);
- }
-
- @Test
- public void testGetRemovedSize() throws Exception {
- Configuration config = ConfigurationProvider.getConfiguration();
- ConfigurationChange change = ConfigurationChangeBuilder.of(config).removeKey("java.version", "key2").build();
- assertTrue(change.getRemovedSize() == 2);
- assertTrue(change.getAddedSize() == 0);
- }
-
- @Test
- public void testGetAddedSize() throws Exception {
- Configuration config = ConfigurationProvider.getConfiguration();
- ConfigurationChange change = ConfigurationChangeBuilder.of(config).addChange("key1", "key2").build();
- assertTrue(change.getAddedSize() == 1);
- assertTrue(change.getRemovedSize() == 0);
- }
-
- @Test
- public void testGetUpdatedSize() throws Exception {
- Configuration config = ConfigurationProvider.getConfiguration();
- ConfigurationChange change = ConfigurationChangeBuilder.of(config).addChange("java.version", "1.8").build();
- assertTrue(change.getUpdatedSize() == 1);
- }
-
- @Test
- public void testIsRemoved() throws Exception {
- Configuration config = ConfigurationProvider.getConfiguration();
- ConfigurationChange change = ConfigurationChangeBuilder.of(config).removeKey("java.version").build();
- assertTrue(change.isRemoved("java.version"));
- }
-
- @Test
- public void testIsAdded() throws Exception {
- Configuration config = ConfigurationProvider.getConfiguration();
- ConfigurationChange change = ConfigurationChangeBuilder.of(config).addChange("key1", "key2").build();
- assertTrue(change.isAdded("key1"));
- }
-
- @Test
- public void testIsUpdated() throws Exception {
- Configuration config = ConfigurationProvider.getConfiguration();
- ConfigurationChange change = ConfigurationChangeBuilder.of(config).addChange("java.version", "1.8").build();
- assertTrue(change.isUpdated("java.version"));
- }
-
- @Test
- public void testContainsKey() throws Exception {
- Configuration config = ConfigurationProvider.getConfiguration();
- ConfigurationChange change = ConfigurationChangeBuilder.of(config).addChange("key1", "key2").build();
- assertTrue(change.isKeyAffected("key1"));
- assertFalse(change.isKeyAffected("key2"));
- change = ConfigurationChangeBuilder.of(config).removeKey("java.version").build();
- assertFalse(change.isKeyAffected("java.version"));
- assertFalse(change.isKeyAffected("key2"));
- }
-
- @Test
- public void testIsEmpty() throws Exception {
- Configuration config = ConfigurationProvider.getConfiguration();
- ConfigurationChange change = ConfigurationChangeBuilder.of(config).build();
- assertTrue(change.isEmpty());
- }
-
- @Test
- public void testToString() throws Exception {
- Configuration config = ConfigurationProvider.getConfiguration();
- ConfigurationChange change = ConfigurationChangeBuilder.of(config).removeKey("java.version").build();
- String toString =
- change.toString();
- assertTrue(toString.contains("timestamp"));
- assertTrue(toString.contains("change-id"));
- assertTrue(toString.contains("configuration-id"));
- assertFalse(toString.contains("key1"));
- assertFalse(toString.contains("key2"));
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/4869d946/modules/events/src/test/java/org/apache/tamaya/events/FrozenConfigSourceTest.java
----------------------------------------------------------------------
diff --git a/modules/events/src/test/java/org/apache/tamaya/events/FrozenConfigSourceTest.java b/modules/events/src/test/java/org/apache/tamaya/events/FrozenConfigSourceTest.java
new file mode 100644
index 0000000..8e06ece
--- /dev/null
+++ b/modules/events/src/test/java/org/apache/tamaya/events/FrozenConfigSourceTest.java
@@ -0,0 +1,108 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tamaya.events;
+
+import org.apache.tamaya.base.configsource.ConfigSourceComparator;
+import org.apache.tamaya.base.configsource.SystemConfigSource;
+import org.junit.Test;
+
+import javax.config.spi.ConfigSource;
+import java.util.Map;
+
+import static org.junit.Assert.*;
+
+/**
+ * Tests for {@link FrozenConfigSource}.
+ */
+public class FrozenConfigSourceTest {
+
+ private static final ConfigSource myPS = new SystemConfigSource();
+
+ @Test
+ public void testOf() throws Exception {
+ ConfigSource ps = FrozenConfigSource.of(myPS);
+ assertNotNull(ps);
+ }
+
+ @Test
+ public void testGetName() throws Exception {
+ ConfigSource ps = FrozenConfigSource.of(myPS);
+ String name = ps.getName();
+ assertNotNull(name);
+ assertEquals(name, ps.getName());
+ }
+
+ @Test
+ public void testGetOrdinal() throws Exception {
+ ConfigSource ps = FrozenConfigSource.of(myPS);
+ assertEquals(ConfigSourceComparator.getOrdinal(myPS),
+ ConfigSourceComparator.getOrdinal(ps));
+ }
+
+ @Test
+ public void testGet() throws Exception {
+ ConfigSource ps = FrozenConfigSource.of(myPS);
+ assertNotNull(ps);
+ for (Map.Entry<String, String> e : myPS.getProperties().entrySet()) {
+ assertEquals(ps.getValue(e.getKey()), e.getValue());
+ }
+ }
+
+ @Test
+ public void testGetProperties() throws Exception {
+ ConfigSource ps = FrozenConfigSource.of(myPS);
+ assertNotNull(ps);
+ assertNotNull(ps.getProperties());
+ assertFalse(ps.getProperties().isEmpty());
+ }
+
+ @Test
+ public void testEquals() throws Exception {
+ ConfigSource ps1 = FrozenConfigSource.of(myPS);
+ ConfigSource ps2 = FrozenConfigSource.of(myPS);
+ assertEquals(ps1.getName(), ps2.getName());
+ assertEquals(ps1.getProperties().size(), ps2.getProperties().size());
+ }
+
+ @Test
+ public void testHashCode() throws Exception {
+ boolean alwaysDifferent = true;
+ for(int i=0;i<10;i++){
+ ConfigSource ps1 = FrozenConfigSource.of(myPS);
+ ConfigSource ps2 = FrozenConfigSource.of(myPS);
+ // sometimes not same, because frozenAt in ms maybe different
+ if(ps1.hashCode()==ps2.hashCode()){
+ alwaysDifferent=false;
+ break;
+ }
+ }
+ if(alwaysDifferent){
+ fail("HashCode should be same if frozenAt is in the same ms...");
+ }
+ }
+
+ @Test
+ public void testToString() throws Exception {
+ ConfigSource ps = FrozenConfigSource.of(myPS);
+ String toString = ps.toString();
+ assertNotNull(toString);
+ assertTrue(toString.contains("FrozenPropertySource"));
+ assertTrue(toString.contains(myPS.getName()));
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/4869d946/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 264d99a..03e9b7c 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
@@ -18,10 +18,11 @@
*/
package org.apache.tamaya.events;
-import org.apache.tamaya.Configuration;
import org.junit.Test;
import org.mockito.Mockito;
+import javax.config.Config;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@@ -32,11 +33,11 @@ public class FrozenConfigurationTest {
@Test
public void getFrozenAtReturnsTheCorrectTimestamp() {
- Configuration source = Mockito.mock(Configuration.class);
-
+ Config source = Mockito.mock(Config.class);
+ doReturn(Collections.emptySet()).when(source).getPropertyNames();
long poiStart = System.nanoTime();
- FrozenConfiguration fc = FrozenConfiguration.of(source);
+ FrozenConfig fc = FrozenConfig.of(source);
long poiEnd = System.nanoTime();
@@ -47,9 +48,9 @@ public class FrozenConfigurationTest {
@Test
public void idMustBeNotNull() {
- Configuration source = Mockito.mock(Configuration.class);
-
- FrozenConfiguration fc = FrozenConfiguration.of(source);
+ Config source = Mockito.mock(Config.class);
+ doReturn(Collections.emptySet()).when(source).getPropertyNames();
+ FrozenConfig fc = FrozenConfig.of(source);
assertThat(fc.getId()).isNotNull();
}
@@ -62,11 +63,11 @@ public class FrozenConfigurationTest {
Map<String, String> properties = new HashMap<>();
properties.put("key", "value");
- Configuration configuration = Mockito.mock(Configuration.class);
- doReturn(properties).when(configuration).getProperties();
+ Config configuration = Mockito.mock(Config.class);
+ doReturn(properties.keySet()).when(configuration).getPropertyNames();
- FrozenConfiguration fcA = FrozenConfiguration.of(configuration);
- FrozenConfiguration fcB = FrozenConfiguration.of(configuration);
+ FrozenConfig fcA = FrozenConfig.of(configuration);
+ FrozenConfig fcB = FrozenConfig.of(configuration);
assertThat(fcA.getId()).isNotEqualTo(fcB.getId());
assertThat(fcA).isNotEqualTo(fcB);
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/4869d946/modules/events/src/test/java/org/apache/tamaya/events/FrozenPropertySourceTest.java
----------------------------------------------------------------------
diff --git a/modules/events/src/test/java/org/apache/tamaya/events/FrozenPropertySourceTest.java b/modules/events/src/test/java/org/apache/tamaya/events/FrozenPropertySourceTest.java
deleted file mode 100644
index cdc70b8..0000000
--- a/modules/events/src/test/java/org/apache/tamaya/events/FrozenPropertySourceTest.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tamaya.events;
-
-import org.apache.tamaya.spisupport.propertysource.SystemPropertySource;
-import org.apache.tamaya.spi.PropertySource;
-import org.apache.tamaya.spi.PropertyValue;
-import org.apache.tamaya.spisupport.PropertySourceComparator;
-import org.junit.Test;
-
-import java.util.Map;
-
-import static org.junit.Assert.*;
-
-/**
- * Tests for {@link org.apache.tamaya.events.FrozenPropertySource}.
- */
-public class FrozenPropertySourceTest {
-
- private static final PropertySource myPS = new SystemPropertySource();
-
- @Test
- public void testOf() throws Exception {
- PropertySource ps = FrozenPropertySource.of(myPS);
- assertNotNull(ps);
- }
-
- @Test
- public void testGetName() throws Exception {
- PropertySource ps = FrozenPropertySource.of(myPS);
- String name = ps.getName();
- assertNotNull(name);
- assertEquals(name, ps.getName());
- }
-
- @Test
- public void testGetOrdinal() throws Exception {
- PropertySource ps = FrozenPropertySource.of(myPS);
- assertEquals(PropertySourceComparator.getOrdinal(myPS),
- PropertySourceComparator.getOrdinal(ps));
- }
-
- @Test
- public void testGet() throws Exception {
- PropertySource ps = FrozenPropertySource.of(myPS);
- assertNotNull(ps);
- for (Map.Entry<String, PropertyValue> e : myPS.getProperties().entrySet()) {
- assertEquals(ps.get(e.getKey()).getValue(), e.getValue().getValue());
- }
- }
-
- @Test
- public void testGetProperties() throws Exception {
- PropertySource ps = FrozenPropertySource.of(myPS);
- assertNotNull(ps);
- assertNotNull(ps.getProperties());
- assertFalse(ps.getProperties().isEmpty());
- }
-
- @Test
- public void testEquals() throws Exception {
- PropertySource ps1 = FrozenPropertySource.of(myPS);
- PropertySource ps2 = FrozenPropertySource.of(myPS);
- assertEquals(ps1.getName(), ps2.getName());
- assertEquals(ps1.getProperties().size(), ps2.getProperties().size());
- }
-
- @Test
- public void testHashCode() throws Exception {
- boolean alwaysDifferent = true;
- for(int i=0;i<10;i++){
- PropertySource ps1 = FrozenPropertySource.of(myPS);
- PropertySource ps2 = FrozenPropertySource.of(myPS);
- // sometimes not same, because frozenAt in ms maybe different
- if(ps1.hashCode()==ps2.hashCode()){
- alwaysDifferent=false;
- break;
- }
- }
- if(alwaysDifferent){
- fail("HashCode should be same if frozenAt is in the same ms...");
- }
- }
-
- @Test
- public void testToString() throws Exception {
- PropertySource ps = FrozenPropertySource.of(myPS);
- String toString = ps.toString();
- assertNotNull(toString);
- assertTrue(toString.contains("FrozenPropertySource"));
- assertTrue(toString.contains(myPS.getName()));
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/4869d946/modules/events/src/test/java/org/apache/tamaya/events/ObservedConfigTest.java
----------------------------------------------------------------------
diff --git a/modules/events/src/test/java/org/apache/tamaya/events/ObservedConfigTest.java b/modules/events/src/test/java/org/apache/tamaya/events/ObservedConfigTest.java
index da749c3..3d81fd1 100644
--- a/modules/events/src/test/java/org/apache/tamaya/events/ObservedConfigTest.java
+++ b/modules/events/src/test/java/org/apache/tamaya/events/ObservedConfigTest.java
@@ -40,8 +40,8 @@ public class ObservedConfigTest {
}
ConfigEvent<?> event = MyConfigObserver.event;
if(event!=null) {
- assertTrue(event instanceof ConfigurationChange);
- ConfigurationChange cChange = (ConfigurationChange) event;
+ assertTrue(event instanceof ConfigChange);
+ ConfigChange cChange = (ConfigChange) event;
if(cChange.isAdded("random.new")){
MyConfigObserver.event=null;
}else {
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/4869d946/modules/events/src/test/java/org/apache/tamaya/events/PropertySourceChangeTest.java
----------------------------------------------------------------------
diff --git a/modules/events/src/test/java/org/apache/tamaya/events/PropertySourceChangeTest.java b/modules/events/src/test/java/org/apache/tamaya/events/PropertySourceChangeTest.java
deleted file mode 100644
index a1a9200..0000000
--- a/modules/events/src/test/java/org/apache/tamaya/events/PropertySourceChangeTest.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tamaya.events;
-
-import org.apache.tamaya.spisupport.propertysource.EnvironmentPropertySource;
-import org.apache.tamaya.spisupport.propertysource.SimplePropertySource;
-import org.apache.tamaya.spisupport.propertysource.SystemPropertySource;
-import org.apache.tamaya.spi.PropertySource;
-import org.junit.Test;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.junit.Assert.*;
-
-/**
- * Tests for {@link PropertySourceChange} and its builder.
- */
-public class PropertySourceChangeTest {
-
- private static final PropertySource myPS = new SystemPropertySource();
-
- @Test
- public void testGetPropertySource() throws Exception {
- PropertySourceChange change = PropertySourceChangeBuilder.of(myPS).build();
- assertEquals(change.getResource().getName(), myPS.getName());
- }
-
- @Test
- public void testGetVersion() throws Exception {
- PropertySourceChange change = PropertySourceChangeBuilder.of(myPS)
- .setVersion("myVersion1").build();
- assertEquals(change.getVersion(), "myVersion1");
- }
-
- @Test
- public void testGetTimestamp() throws Exception {
- PropertySourceChange change = PropertySourceChangeBuilder.of(myPS)
- .setTimestamp(111L).build();
- assertEquals(change.getTimestamp(), 111L);
- }
-
- @Test
- public void testGetEvents() throws Exception {
- PropertySourceChange change = PropertySourceChangeBuilder.of(myPS)
- .addChanges(
- new EnvironmentPropertySource()
- ).build();
- assertTrue(change.getChanges().size()>0);
- }
-
- @Test
- public void testGetRemovedSize() throws Exception {
- PropertySourceChange change = PropertySourceChangeBuilder.of(myPS)
- .addChanges(
- new EnvironmentPropertySource()
- ).build();
- assertTrue(change.getRemovedSize()>0);
- }
-
- @Test
- public void testGetAddedSize() throws Exception {
- PropertySourceChange change = PropertySourceChangeBuilder.of(myPS)
- .addChanges(
- new EnvironmentPropertySource()
- ).build();
- assertTrue(change.getAddedSize()>0);
- }
-
- @Test
- public void testGetUpdatedSize() throws Exception {
- PropertySourceChange change = PropertySourceChangeBuilder.of(myPS)
- .addChanges(
- new EnvironmentPropertySource()
- ).build();
- assertTrue(change.getUpdatedSize()==0);
- }
-
- @Test
- public void testIsRemoved() throws Exception {
- Map<String, String> testData = new HashMap<>();
- testData.put("key1", "value1");
- testData.put("key2", "value2");
- PropertySource ps1 = new SimplePropertySource("test", testData);
- testData = new HashMap<>();
- testData.put("key1", "value2");
- testData.put("key3", "value3");
- PropertySource ps2 = new SimplePropertySource("test", testData);
- PropertySourceChange change = PropertySourceChangeBuilder.of(ps1)
- .addChanges(
- ps2
- ).build();
- assertFalse(change.isRemoved("key1"));
- assertTrue(change.isRemoved("key2"));
- assertFalse(change.isRemoved("key3"));
- }
-
- @Test
- public void testIsAdded() throws Exception {
- Map<String, String> testData = new HashMap<>();
- testData.put("key1", "value1");
- testData.put("key2", "value2");
- PropertySource ps1 = new SimplePropertySource("test", testData);
- testData = new HashMap<>();
- testData.put("key1", "value2");
- testData.put("key3", "value3");
- PropertySource ps2 = new SimplePropertySource("test", testData);
- PropertySourceChange change = PropertySourceChangeBuilder.of(ps1)
- .addChanges(
- ps2
- ).build();
- assertTrue(change.isAdded("key3"));
- assertFalse(change.isAdded("key2"));
- assertFalse(change.isAdded("key1"));
- }
-
- @Test
- public void testIsUpdated() throws Exception {
- Map<String, String> testData = new HashMap<>();
- testData.put("key1", "value1");
- testData.put("key2", "value2");
- PropertySource ps1 = new SimplePropertySource("test", testData);
- testData = new HashMap<>();
- testData.put("key1", "value2");
- testData.put("key3", "value3");
- PropertySource ps2 = new SimplePropertySource("test", testData);
- PropertySourceChange change = PropertySourceChangeBuilder.of(ps1)
- .addChanges(
- ps2
- ).build();
- assertTrue(change.isUpdated("key1"));
- assertFalse(change.isUpdated("key2"));
- assertFalse(change.isUpdated("key3"));
- }
-
- @Test
- public void testContainsKey() throws Exception {
- PropertySourceChange change = PropertySourceChangeBuilder.of(new EnvironmentPropertySource())
- .addChanges(
- myPS
- ).build();
- assertTrue(change.isKeyAffected("java.version"));
- }
-
- @Test
- public void testIsEmpty() throws Exception {
- PropertySourceChange change = PropertySourceChangeBuilder.of(new EnvironmentPropertySource())
- .build();
- assertTrue(change.isEmpty());
- change = PropertySourceChangeBuilder.of(new EnvironmentPropertySource())
- .addChanges(
- myPS
- ).build();
- assertFalse(change.isEmpty());
- }
-
- @Test
- public void testToString() throws Exception {
- PropertySourceChange change = PropertySourceChangeBuilder.of(myPS).build();
- String toString = change.toString();
- assertNotNull(toString);
- assertTrue(toString.contains(myPS.getName()));
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/4869d946/modules/events/src/test/java/org/apache/tamaya/events/RandomConfigSource.java
----------------------------------------------------------------------
diff --git a/modules/events/src/test/java/org/apache/tamaya/events/RandomConfigSource.java b/modules/events/src/test/java/org/apache/tamaya/events/RandomConfigSource.java
new file mode 100644
index 0000000..8019037
--- /dev/null
+++ b/modules/events/src/test/java/org/apache/tamaya/events/RandomConfigSource.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tamaya.events;
+
+import javax.config.spi.ConfigSource;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * PropertySource that provides a random entry, different on each access!
+ */
+public class RandomConfigSource implements ConfigSource{
+
+ private Map<String, String> data = new HashMap<>();
+
+ @Override
+ public int getOrdinal() {
+ return 0;
+ }
+
+ @Override
+ public String getName() {
+ return "random";
+ }
+
+ @Override
+ public String getValue(String key) {
+ if(key.equals("random.new")){
+ return String.valueOf(Math.random());
+ }
+ return data.get(key);
+ }
+
+ @Override
+ public Map<String, String> getProperties() {
+ synchronized(data) {
+ data.put("random.new", String.valueOf(Math.random()));
+ data.put("_random.new.timestamp", String.valueOf(System.currentTimeMillis()));
+ return new HashMap<>(data);
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/4869d946/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
deleted file mode 100644
index 4faa1b5..0000000
--- a/modules/events/src/test/java/org/apache/tamaya/events/RandomPropertySource.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tamaya.events;
-
-import org.apache.tamaya.spi.PropertySource;
-import org.apache.tamaya.spi.PropertyValue;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * PropertySource that provides a random entry, different on each access!
- */
-public class RandomPropertySource implements PropertySource{
-
- private Map<String, PropertyValue> data = new HashMap<>();
-
- @Override
- public int getOrdinal() {
- return 0;
- }
-
- @Override
- public String getName() {
- return "random";
- }
-
- @Override
- public PropertyValue get(String key) {
- if(key.equals("random.new")){
- return PropertyValue.of(key, String.valueOf(Math.random()),getName());
- }
- return null;
- }
-
- @Override
- public Map<String, PropertyValue> getProperties() {
- synchronized(data) {
- data.put("random.new", PropertyValue.builder("random.new", String.valueOf(Math.random()), getName())
- .addMetaEntry("_random.new.timestamp", String.valueOf(System.currentTimeMillis())).build());
- return new HashMap<>(data);
- }
- }
-
- @Override
- public boolean isScannable() {
- return true;
- }
-}