TAMAYA-310: Fixed events emit for changes.
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/bcede48d Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/tree/bcede48d Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/diff/bcede48d Branch: refs/heads/master Commit: bcede48d2e8ec5d41172fb9e44e19fb5bae8136f Parents: 6bd7d1d Author: anatole <anat...@apache.org> Authored: Sun Sep 24 21:34:40 2017 +0200 Committer: anatole <anat...@apache.org> Committed: Sun Sep 24 21:34:40 2017 +0200 ---------------------------------------------------------------------- .../events/ConfigurationChangeBuilder.java | 26 +++++++++----------- .../internal/DefaultConfigChangeObserver.java | 15 +++++------ 2 files changed, 18 insertions(+), 23 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/bcede48d/modules/events/src/main/java/org/apache/tamaya/events/ConfigurationChangeBuilder.java ---------------------------------------------------------------------- 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 @@ public final class ConfigurationChangeBuilder { 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 @@ public final class ConfigurationChangeBuilder { 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(); } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/bcede48d/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 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 @@ public class DefaultConfigChangeObserver { 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() {