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() {