From 79cf19ffe84a599814c29c6a42cbf4c0028b4337 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 8 Sep 2014 19:11:54 +0200 Subject: [PATCH] BUG-650: squash maps to Collections.emptyMap() If possible, we do not retain mutable maps, but rather short-cut to emptyMap(). This should help us a bit when traversing empty elements. Change-Id: Iff7eccfcc99c451d11f87cf466c7f09bde63ee10 Signed-off-by: Robert Varga --- .../store/impl/ResolveDataChangeState.java | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/opendaylight/md-sal/sal-inmemory-datastore/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/ResolveDataChangeState.java b/opendaylight/md-sal/sal-inmemory-datastore/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/ResolveDataChangeState.java index 828e4e30a1..858087e2df 100644 --- a/opendaylight/md-sal/sal-inmemory-datastore/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/ResolveDataChangeState.java +++ b/opendaylight/md-sal/sal-inmemory-datastore/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/ResolveDataChangeState.java @@ -51,9 +51,9 @@ final class ResolveDataChangeState { private final YangInstanceIdentifier nodeId; private final Collection nodes; - private final Map, Builder> subBuilders = new HashMap<>(); - private final Map, Builder> oneBuilders = new HashMap<>(); - private final Map, Builder> baseBuilders = new HashMap<>(); + private final Map, Builder> subBuilders; + private final Map, Builder> oneBuilders; + private final Map, Builder> baseBuilders; private ResolveDataChangeState(final YangInstanceIdentifier nodeId, final Iterable inheritedSub, final Collection inheritedOne, @@ -66,22 +66,36 @@ final class ResolveDataChangeState { /* * Collect the nodes which need to be propagated from us to the child. */ + final Map, Builder> sub = new HashMap<>(); + final Map, Builder> one = new HashMap<>(); + final Map, Builder> base = new HashMap<>(); for (Node n : nodes) { for (DataChangeListenerRegistration l : n.getListeners()) { final Builder b = DOMImmutableDataChangeEvent.builder(DataChangeScope.BASE); switch (l.getScope()) { case BASE: - baseBuilders.put(l, b); + base.put(l, b); break; case ONE: - oneBuilders.put(l, b); + one.put(l, b); break; case SUBTREE: - subBuilders.put(l, b); + sub.put(l, b); break; } } } + + baseBuilders = maybeEmpty(base); + oneBuilders = maybeEmpty(one); + subBuilders = maybeEmpty(sub); + } + + private static Map maybeEmpty(final Map map) { + if (map.isEmpty()) { + return Collections.emptyMap(); + } + return map; } /** -- 2.36.6