X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=inline;f=yang%2Fyang-data-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fdata%2Fimpl%2Fschema%2Fnodes%2FAbstractImmutableDataContainerNode.java;h=cd43988642ea28a89e688afea014c298fba41928;hb=30b223a20b7a10ddab42115eee15d7552477f752;hp=7954d56344bc1b729e9bad31c82b2e089c84a550;hpb=baf52912531d7e673bfe8aa633223e5d5f797d02;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 7954d56344..cd43988642 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,36 +7,54 @@ */ package org.opendaylight.yangtools.yang.data.impl.schema.nodes; +import com.google.common.base.Optional; + +import java.util.Collections; import java.util.Map; -import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; +import org.opendaylight.yangtools.concepts.Immutable; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; import org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode; -import com.google.common.base.Optional; - -public abstract class AbstractImmutableDataContainerNode - extends AbstractImmutableNormalizedNode>> - implements DataContainerNode { +public abstract class AbstractImmutableDataContainerNode extends AbstractImmutableNormalizedNode>> +implements Immutable, DataContainerNode { - protected Map> children; + protected final Map> children; + private final Map> publicChildren; - public AbstractImmutableDataContainerNode(Map> children, K nodeIdentifier) { - super(nodeIdentifier, children.values()); + public AbstractImmutableDataContainerNode( + final Map> children, final K nodeIdentifier) { + super(nodeIdentifier); this.children = children; + this.publicChildren = Collections.unmodifiableMap(children); + } + + @Override + public final Optional> getChild(final PathArgument child) { + return Optional.> fromNullable(children.get(child)); } @Override - public Optional> getChild(InstanceIdentifier.PathArgument child) { - return Optional.>fromNullable(children.get(child)); + public final Iterable> getValue() { + return publicChildren.values(); } @Override - public String toString() { - final StringBuffer sb = new StringBuffer("ImmutableContainerNode{"); - sb.append("nodeIdentifier=").append(nodeIdentifier); - sb.append(", children=").append(children); - sb.append('}'); - return sb.toString(); + protected int valueHashCode() { + return children.hashCode(); + } + + public final Map> getChildren() { + return publicChildren; + } + + @Override + protected boolean valueEquals(final AbstractImmutableNormalizedNode other) { + if (!(other instanceof AbstractImmutableDataContainerNode)) { + return false; + } + + return children.equals(((AbstractImmutableDataContainerNode)other).children); } }