X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-dom-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fdom%2Fstore%2Fimpl%2Ftree%2FStoreMetadataNode.java;h=b8ad7368b5ea6acebc126b630e1b73bcfdd75404;hb=66249d6ccc367fad055a269f561860d2d96af385;hp=d42f36fb90768757bcda5f4878f7ef985b827af4;hpb=ef6bd770f1366f84fdbc7ab19fa649953b36197b;p=controller.git diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/tree/StoreMetadataNode.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/tree/StoreMetadataNode.java index d42f36fb90..b8ad7368b5 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/tree/StoreMetadataNode.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/tree/StoreMetadataNode.java @@ -9,7 +9,8 @@ package org.opendaylight.controller.md.sal.dom.store.impl.tree; import static com.google.common.base.Preconditions.checkState; -import java.util.LinkedHashMap; +import java.util.Collections; +import java.util.HashMap; import java.util.Map; import org.opendaylight.yangtools.concepts.Identifiable; @@ -20,7 +21,6 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodeContainer; import com.google.common.base.Optional; import com.google.common.base.Preconditions; -import com.google.common.collect.Iterables; import com.google.common.primitives.UnsignedLong; public class StoreMetadataNode implements Immutable, Identifiable, StoreTreeNode { @@ -46,10 +46,24 @@ public class StoreMetadataNode implements Immutable, Identifiable, this.children = Preconditions.checkNotNull(children); } + public static StoreMetadataNode createEmpty(final NormalizedNode data) { + return new StoreMetadataNode(data, UnsignedLong.ZERO, UnsignedLong.ZERO, + Collections.emptyMap()); + } + + public StoreMetadataNode(final NormalizedNode data, final UnsignedLong nodeVersion, + final UnsignedLong subtreeVersion) { + this(data, nodeVersion, subtreeVersion, Collections.emptyMap()); + } + public static Builder builder() { return new Builder(); } + public static Builder builder(StoreMetadataNode node) { + return new Builder(node); + } + public UnsignedLong getNodeVersion() { return this.nodeVersion; } @@ -67,10 +81,6 @@ public class StoreMetadataNode implements Immutable, Identifiable, return this.data; } - public Iterable getChildren() { - return Iterables.unmodifiableIterable(children.values()); - } - @Override public Optional getChild(final PathArgument key) { return Optional.fromNullable(children.get(key)); @@ -118,11 +128,16 @@ public class StoreMetadataNode implements Immutable, Identifiable, private UnsignedLong nodeVersion; private UnsignedLong subtreeVersion; private NormalizedNode data; - private Map children = new LinkedHashMap<>(); + private Map children; private boolean dirty = false; - private Builder() {} + private Builder() { + children = new HashMap<>(); + } + public Builder(StoreMetadataNode node) { + children = new HashMap<>(node.children); + } public UnsignedLong getVersion() { return nodeVersion; @@ -146,13 +161,22 @@ public class StoreMetadataNode implements Immutable, Identifiable, public Builder add(final StoreMetadataNode node) { if (dirty) { - children = new LinkedHashMap<>(children); + children = new HashMap<>(children); dirty = false; } children.put(node.getIdentifier(), node); return this; } + public Builder remove(final PathArgument id) { + if (dirty) { + children = new HashMap<>(children); + dirty = false; + } + children.remove(id); + return this; + } + public StoreMetadataNode build() { checkState(data != null, "Data node should not be null."); checkState(subtreeVersion.compareTo(nodeVersion) >= 0, @@ -165,5 +189,4 @@ public class StoreMetadataNode implements Immutable, Identifiable, public static StoreMetadataNode createRecursively(final NormalizedNode node, final UnsignedLong version) { return createRecursively(node, version, version); } - }