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%2FAbstractImmutableNormalizedNode.java;h=708f9225c2f29c640db725b4550b2d5386d2a6cf;hb=3b083642b160edb491ff2f1ee5c052586d0f650a;hp=ceb20124c81f709faf28cf6c647fac50be52e464;hpb=baf52912531d7e673bfe8aa633223e5d5f797d02;p=yangtools.git diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/nodes/AbstractImmutableNormalizedNode.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/nodes/AbstractImmutableNormalizedNode.java index ceb20124c8..708f9225c2 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/nodes/AbstractImmutableNormalizedNode.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/nodes/AbstractImmutableNormalizedNode.java @@ -13,66 +13,87 @@ import org.opendaylight.yangtools.yang.data.api.CompositeNode; import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; +import com.google.common.base.Objects; +import com.google.common.base.Objects.ToStringHelper; import com.google.common.base.Preconditions; public abstract class AbstractImmutableNormalizedNode implements NormalizedNode, Immutable { - protected final K nodeIdentifier; - protected V value; + private final K nodeIdentifier; + private final V value; - protected AbstractImmutableNormalizedNode(K nodeIdentifier, V value) { + protected AbstractImmutableNormalizedNode(final K nodeIdentifier, final V value) { this.nodeIdentifier = Preconditions.checkNotNull(nodeIdentifier, "nodeIdentifier"); this.value = Preconditions.checkNotNull(value, "value"); } @Override - public QName getNodeType() { + public final QName getNodeType() { return getIdentifier().getNodeType(); } @Override - public K getIdentifier() { + public final K getIdentifier() { return nodeIdentifier; } @Override - public CompositeNode getParent() { + public final CompositeNode getParent() { throw new UnsupportedOperationException("Deprecated"); } @Override - public QName getKey() { + public final QName getKey() { return getNodeType(); } @Override - public V getValue() { + public final V getValue() { return value; } @Override - public V setValue(V value) { + public final V setValue(final V value) { throw new UnsupportedOperationException("Immutable"); } @Override - public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof AbstractImmutableNormalizedNode)) return false; + public final String toString() { + return addToStringAttributes(Objects.toStringHelper(this)).toString(); + } - AbstractImmutableNormalizedNode that = (AbstractImmutableNormalizedNode) o; + protected ToStringHelper addToStringAttributes(final ToStringHelper toStringHelper) { + return toStringHelper.add("nodeIdentifier", nodeIdentifier).add("value", getValue()); + } - if (!nodeIdentifier.equals(that.nodeIdentifier)) return false; - if (!value.equals(that.value)) return false; + protected abstract boolean valueEquals(AbstractImmutableNormalizedNode other); + protected abstract int valueHashCode(); - return true; + @Override + public final boolean equals(final Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (this.getClass() != obj.getClass()) { + return false; + } + + final AbstractImmutableNormalizedNode other = (AbstractImmutableNormalizedNode)obj; + if (!nodeIdentifier.equals(other.nodeIdentifier)) { + return false; + } + + return valueEquals(other); } @Override - public int hashCode() { + public final int hashCode() { int result = nodeIdentifier.hashCode(); - result = 31 * result + value.hashCode(); + result = 31 * result + valueHashCode(); return result; } }