X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=data%2Fyang-data-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fdata%2Fapi%2FStackedYangInstanceIdentifier.java;h=b2cc4497da9eb7d41d6be587c1d022706f8a0964;hb=a872c7d8cd93c104430f8065c1aa0b69d03e7f3e;hp=955ef2543eebe13c6682b91c4bc85d20b537a15d;hpb=9728fe497bcb7349f7e6ef9d3d984202d7ac07e7;p=yangtools.git diff --git a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/StackedYangInstanceIdentifier.java b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/StackedYangInstanceIdentifier.java index 955ef2543e..b2cc4497da 100644 --- a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/StackedYangInstanceIdentifier.java +++ b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/StackedYangInstanceIdentifier.java @@ -9,6 +9,7 @@ package org.opendaylight.yangtools.yang.data.api; import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Verify.verify; +import static com.google.common.base.Verify.verifyNotNull; import static java.util.Objects.requireNonNull; import com.google.common.collect.Iterables; @@ -22,6 +23,7 @@ import java.security.PrivilegedAction; import java.util.ArrayList; import java.util.List; import org.eclipse.jdt.annotation.NonNull; +import org.opendaylight.yangtools.util.HashCodeBuilder; final class StackedYangInstanceIdentifier extends YangInstanceIdentifier implements Cloneable { private static final long serialVersionUID = 1L; @@ -49,9 +51,7 @@ final class StackedYangInstanceIdentifier extends YangInstanceIdentifier impleme private transient volatile StackedPathArguments pathArguments; private transient volatile StackedReversePathArguments reversePathArguments; - StackedYangInstanceIdentifier(final YangInstanceIdentifier parent, final PathArgument pathArgument, - final int hash) { - super(hash); + StackedYangInstanceIdentifier(final YangInstanceIdentifier parent, final PathArgument pathArgument) { this.parent = requireNonNull(parent); this.pathArgument = requireNonNull(pathArgument); } @@ -101,7 +101,7 @@ final class StackedYangInstanceIdentifier extends YangInstanceIdentifier impleme final int toWalk = ourDepth - depth; YangInstanceIdentifier result = this; for (int i = 0; i < toWalk; ++i) { - result = result.getParent(); + result = verifyNotNull(result.getParent()); } return result; @@ -125,8 +125,7 @@ final class StackedYangInstanceIdentifier extends YangInstanceIdentifier impleme current = stacked.getParent(); } while (current.tryPathArguments() == null); - ret = new StackedPathArguments(current, Lists.reverse(stack)); - pathArguments = ret; + pathArguments = ret = new StackedPathArguments(current, Lists.reverse(stack)); } return ret; @@ -163,6 +162,11 @@ final class StackedYangInstanceIdentifier extends YangInstanceIdentifier impleme return YangInstanceIdentifier.create(Iterables.skip(getPathArguments(), skipFromRoot)); } + @Override + int computeHashCode() { + return HashCodeBuilder.nextHashCode(parent.hashCode(), pathArgument); + } + @Override boolean pathArgumentsEqual(final YangInstanceIdentifier other) { if (other instanceof StackedYangInstanceIdentifier) { @@ -190,7 +194,7 @@ final class StackedYangInstanceIdentifier extends YangInstanceIdentifier impleme if (parent instanceof FixedYangInstanceIdentifier) { p = (FixedYangInstanceIdentifier) parent; } else { - p = FixedYangInstanceIdentifier.create(parent.getPathArguments(), parent.hashCode()); + p = FixedYangInstanceIdentifier.of(parent.getPathArguments()); } outputStream.writeObject(p); }