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;
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;
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);
}
final int toWalk = ourDepth - depth;
YangInstanceIdentifier result = this;
for (int i = 0; i < toWalk; ++i) {
- result = result.getParent();
+ result = verifyNotNull(result.getParent());
}
return result;
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;
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) {
if (parent instanceof FixedYangInstanceIdentifier) {
p = (FixedYangInstanceIdentifier) parent;
} else {
- p = FixedYangInstanceIdentifier.create(parent.getPathArguments(), parent.hashCode());
+ p = FixedYangInstanceIdentifier.of(parent.getPathArguments());
}
outputStream.writeObject(p);
}