X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-data-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fdata%2Fimpl%2Fschema%2Fnodes%2FAbstractImmutableDataContainerNode.java;h=6b5e0d7e5124eb8ee661fa9f8119a624252f7daf;hb=fafcc5241055d299246d7c20bf7188b2197fb8c5;hp=aad07e89e2f8b227dff950234840f5ef34667462;hpb=a6ea70c09b13489918c387d54cde8f1095721acc;p=yangtools.git diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/nodes/AbstractImmutableDataContainerNode.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/nodes/AbstractImmutableDataContainerNode.java index aad07e89e2..6b5e0d7e51 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/nodes/AbstractImmutableDataContainerNode.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/nodes/AbstractImmutableDataContainerNode.java @@ -7,10 +7,9 @@ */ package org.opendaylight.yangtools.yang.data.impl.schema.nodes; -import com.google.common.base.Optional; import java.util.Collection; import java.util.Map; -import org.opendaylight.yangtools.concepts.Immutable; +import java.util.Optional; import org.opendaylight.yangtools.util.ImmutableOffsetMap; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; @@ -18,11 +17,10 @@ import org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode; public abstract class AbstractImmutableDataContainerNode extends AbstractImmutableNormalizedNode>> - implements Immutable, DataContainerNode { - private final Map> children; + implements DataContainerNode { + private final Map children; - public AbstractImmutableDataContainerNode( - final Map> children, final K nodeIdentifier) { + protected AbstractImmutableDataContainerNode(final Map children, final K nodeIdentifier) { super(nodeIdentifier); this.children = ImmutableOffsetMap.unorderedCopyOf(children); @@ -30,12 +28,17 @@ public abstract class AbstractImmutableDataContainerNode @Override public final Optional> getChild(final PathArgument child) { - return Optional.fromNullable(children.get(child)); + return Optional.ofNullable(LazyLeafOperations.getChild(children, child)); } @Override public final Collection> getValue() { - return children.values(); + return new LazyValues(children); + } + + @Override + public final int size() { + return children.size(); } @Override @@ -47,13 +50,12 @@ public abstract class AbstractImmutableDataContainerNode * DO NOT USE THIS METHOD. * *

- * This is an implementation-internal API and no outside users should use it. If you do, - * you are asking for trouble, as the returned object is not guaranteed to conform to - * java.util.Map interface. + * This is an implementation-internal API and no outside users should use it. If you do, you are asking for trouble, + * as the returned object is not guaranteed to conform to java.util.Map interface, nor is its contents well-defined. * * @return An unmodifiable view if this node's children. */ - public final Map> getChildren() { + public final Map getChildren() { return children; } @@ -61,6 +63,5 @@ public abstract class AbstractImmutableDataContainerNode protected boolean valueEquals(final AbstractImmutableNormalizedNode other) { return other instanceof AbstractImmutableDataContainerNode && children.equals( ((AbstractImmutableDataContainerNode) other).children); - } }