From d49ac5a3f5512614b3b0c2c5c25ae5f940f47dec Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Tue, 20 Sep 2016 02:59:00 +0200 Subject: [PATCH] Make sure we optimize DOMDataTreeIdentifier DOMDataTreeIdentifier inside a shard is heavily reused. Do not trust the user to give us an optimized YangInstanceIdentifier but try optimizing it. Change-Id: I8a73b21562393a5f9100359d5ffaf3e2af057b6e Signed-off-by: Robert Varga (cherry picked from commit 7488878f65eef4396e5985f2228fbbad2f05d536) --- .../mdsal/dom/api/DOMDataTreeIdentifier.java | 9 ++++++++- .../dom/store/inmemory/InMemoryDOMDataTreeShard.java | 4 ++-- .../store/inmemory/ModificationContextNodeBuilder.java | 8 +++----- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMDataTreeIdentifier.java b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMDataTreeIdentifier.java index c61722c5b4..2d4b4f9498 100644 --- a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMDataTreeIdentifier.java +++ b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMDataTreeIdentifier.java @@ -24,8 +24,10 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgum * A unique identifier for a particular subtree. It is composed of the logical * data store type and the instance identifier of the root node. */ -public final class DOMDataTreeIdentifier implements Immutable, Path, Serializable, Comparable { +public final class DOMDataTreeIdentifier implements Immutable, Path, Serializable, + Comparable { private static final long serialVersionUID = 1L; + private final YangInstanceIdentifier rootIdentifier; private final LogicalDatastoreType datastoreType; @@ -57,6 +59,11 @@ public final class DOMDataTreeIdentifier implements Immutable, Path { @@ -32,10 +31,9 @@ abstract class ModificationContextNodeBuilder builtChildren = - new HashMap(boundaryChildren); - for (Entry interiorNode : interiorChildren.entrySet()) { - WriteableModificationNode builded = interiorNode.getValue().build(); + final Map builtChildren = new HashMap<>(boundaryChildren); + for (InteriorNodeBuilder interiorNode : interiorChildren.values()) { + WriteableModificationNode builded = interiorNode.build(); builtChildren.put(builded.getIdentifier(), builded); } -- 2.36.6