X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-binding-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fbinding%2Fimpl%2FLegacyDataChangeEvent.java;h=ce1ff450c979775e2546d8c2463580abc7b57d5e;hp=8cb4a70f9c2054495b965244436955e1eb67d3f3;hb=de3e413b633b7555ae8f3fe2ec163dbb7dda5da8;hpb=e27d63bdcfbfb0c1078a9c3e5aabf59ae7e2315f diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/LegacyDataChangeEvent.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/LegacyDataChangeEvent.java index 8cb4a70f9c..ce1ff450c9 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/LegacyDataChangeEvent.java +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/LegacyDataChangeEvent.java @@ -8,6 +8,7 @@ package org.opendaylight.controller.md.sal.binding.impl; import java.util.Collections; +import java.util.HashMap; import java.util.Map; import java.util.Set; @@ -96,6 +97,7 @@ public abstract class LegacyDataChangeEvent implements private final static class OperationalChangeEvent extends LegacyDataChangeEvent { private final AsyncDataChangeEvent, DataObject> delegate; + private Map, DataObject> updatedCache; public OperationalChangeEvent(final AsyncDataChangeEvent, DataObject> change) { this.delegate = change; @@ -128,7 +130,15 @@ public abstract class LegacyDataChangeEvent implements @Override public Map, DataObject> getUpdatedOperationalData() { - return delegate.getUpdatedData(); + if(updatedCache == null) { + Map, DataObject> created = delegate.getCreatedData(); + Map, DataObject> updated = delegate.getUpdatedData(); + HashMap, DataObject> updatedComposite = new HashMap<>(created.size() + updated.size()); + updatedComposite.putAll(created); + updatedComposite.putAll(updated); + updatedCache = Collections.unmodifiableMap(updatedComposite); + } + return updatedCache; } @Override @@ -142,6 +152,7 @@ public abstract class LegacyDataChangeEvent implements private final static class ConfigurationChangeEvent extends LegacyDataChangeEvent { private final AsyncDataChangeEvent, DataObject> delegate; + private Map, DataObject> updatedCache; public ConfigurationChangeEvent(final AsyncDataChangeEvent, DataObject> change) { this.delegate = change; @@ -174,7 +185,15 @@ public abstract class LegacyDataChangeEvent implements @Override public Map, DataObject> getUpdatedConfigurationData() { - return delegate.getUpdatedData(); + if(updatedCache == null) { + Map, DataObject> created = delegate.getCreatedData(); + Map, DataObject> updated = delegate.getUpdatedData(); + HashMap, DataObject> updatedComposite = new HashMap<>(created.size() + updated.size()); + updatedComposite.putAll(created); + updatedComposite.putAll(updated); + updatedCache = Collections.unmodifiableMap(updatedComposite); + } + return updatedCache; } @Override