TAMAYA-310: Fixed events emit for changes.
diff --git a/modules/events/src/main/java/org/apache/tamaya/events/ConfigurationChangeBuilder.java b/modules/events/src/main/java/org/apache/tamaya/events/ConfigurationChangeBuilder.java
index 651a80d..7379e72 100644
--- a/modules/events/src/main/java/org/apache/tamaya/events/ConfigurationChangeBuilder.java
+++ b/modules/events/src/main/java/org/apache/tamaya/events/ConfigurationChangeBuilder.java
@@ -103,12 +103,10 @@
String key = en.getKey();
String previousValue = en.getValue();
String currentValue = current.get(en.getKey());
-
- if (currentValue == null) {
- PropertyChangeEvent event = new PropertyChangeEvent(previous, key, previousValue, null);
- events.put(key, event);
- } else if (!Objects.equals(current, previous)) {
- PropertyChangeEvent event = new PropertyChangeEvent(previous, key, currentValue, previousValue);
+ if(Objects.equals(currentValue, previousValue)){
+ continue;
+ }else {
+ PropertyChangeEvent event = new PropertyChangeEvent(previous, key, previousValue, currentValue);
events.put(key, event);
}
}
@@ -117,16 +115,16 @@
String key = en.getKey();
String previousValue = previous.get(en.getKey());
String currentValue = en.getValue();
-
- if (previousValue == null) {
- PropertyChangeEvent event = new PropertyChangeEvent(current, key, null, currentValue);
- events.put(key, event);
- } else if (!(Objects.equals(previousValue, currentValue) && events.containsKey(key))) {
- PropertyChangeEvent event = new PropertyChangeEvent(current, en.getKey(), previousValue, en.getValue());
- events.put(key, event);
+ if(Objects.equals(currentValue, previousValue)){
+ continue;
+ }else{
+ if (previousValue == null) {
+ PropertyChangeEvent event = new PropertyChangeEvent(current, key, null, currentValue);
+ events.put(key, event);
+ }
+ // the other cases were already covered by the previous loop.
}
}
-
return events.values();
}
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 9d4169c..51951de 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
@@ -64,20 +64,17 @@
FrozenConfiguration frozenConfig = FrozenConfiguration.of(ConfigurationProvider.getConfiguration());
ConfigurationChange changes;
- if (getLastConfig() == null) {
- changes = ConfigurationChangeBuilder.of().putAll(frozenConfig.getProperties())
- .build();
- } else {
+ if (getLastConfig() != null) {
changes = ConfigurationChangeBuilder.of(getLastConfig()).addChanges(frozenConfig)
.build();
+ if(!changes.isEmpty()) {
+ LOG.info("Identified configuration changes, publishing changes:\n" + changes);
+ ConfigEventManager.fireEvent(changes);
+ }
}
-
setLastConfig(frozenConfig);
- if(!changes.isEmpty()) {
- LOG.info("Identified configuration changes, publishing changes:\n" + changes);
- ConfigEventManager.fireEvent(changes);
- }
+
}
protected FrozenConfiguration getLastConfig() {