X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=data%2Fyang-data-tree-ri%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fdata%2Ftree%2Fimpl%2FAbstractDataTreeTip.java;h=64384421e4d7228f2770a921d30602c949b0c64a;hb=HEAD;hp=b02a349d7f0edc9dcb320d977481505124569bbd;hpb=9d19eece0115e5666f1c23abadbbf560bb70096e;p=yangtools.git diff --git a/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/AbstractDataTreeTip.java b/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/AbstractDataTreeTip.java index b02a349d7f..64384421e4 100644 --- a/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/AbstractDataTreeTip.java +++ b/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/AbstractDataTreeTip.java @@ -7,17 +7,13 @@ */ package org.opendaylight.yangtools.yang.data.tree.impl; -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkState; - -import java.util.Optional; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.spi.tree.TreeNode; import org.opendaylight.yangtools.yang.data.tree.api.DataTreeCandidateTip; import org.opendaylight.yangtools.yang.data.tree.api.DataTreeModification; import org.opendaylight.yangtools.yang.data.tree.api.DataTreeTip; import org.opendaylight.yangtools.yang.data.tree.api.DataValidationFailedException; +import org.opendaylight.yangtools.yang.data.tree.impl.node.TreeNode; abstract class AbstractDataTreeTip implements DataTreeTip { /** @@ -31,33 +27,36 @@ abstract class AbstractDataTreeTip implements DataTreeTip { @Override public final void validate(final DataTreeModification modification) throws DataValidationFailedException { - final InMemoryDataTreeModification m = checkedCast(modification); - checkArgument(m.isSealed(), "Attempted to verify unsealed modification %s", m); - - m.getStrategy().checkApplicable(new ModificationPath(getRootPath()), m.getRootModification(), - Optional.of(getTipRoot()), m.getVersion()); + final var m = accessMod(modification, "validate"); + m.getStrategy().checkApplicable(new ModificationPath(getRootPath()), m.getRootModification(), getTipRoot(), + m.getVersion()); } @Override public final DataTreeCandidateTip prepare(final DataTreeModification modification) { - final InMemoryDataTreeModification m = checkedCast(modification); - checkArgument(m.isSealed(), "Attempted to prepare unsealed modification %s", m); - - final ModifiedNode root = m.getRootModification(); + final var m = accessMod(modification, "prepare"); + final var root = m.getRootModification(); - final TreeNode currentRoot = getTipRoot(); + final var currentRoot = getTipRoot(); if (root.getOperation() == LogicalOperation.NONE) { - return new NoopDataTreeCandidate(YangInstanceIdentifier.empty(), root, currentRoot); + return new NoopDataTreeCandidate(YangInstanceIdentifier.of(), root, currentRoot); } - final Optional newRoot = m.getStrategy().apply(m.getRootModification(), - Optional.of(currentRoot), m.getVersion()); - checkState(newRoot.isPresent(), "Apply strategy failed to produce root node for modification %s", modification); - return new InMemoryDataTreeCandidate(YangInstanceIdentifier.empty(), root, currentRoot, newRoot.get()); + final var newRoot = m.getStrategy().apply(m.getRootModification(), currentRoot, m.getVersion()); + if (newRoot == null) { + throw new IllegalStateException("Apply strategy failed to produce root node for modification " + + modification); + } + return new InMemoryDataTreeCandidate(YangInstanceIdentifier.of(), root, currentRoot, newRoot); } - private static InMemoryDataTreeModification checkedCast(final DataTreeModification mod) { - checkArgument(mod instanceof InMemoryDataTreeModification, "Invalid modification class %s", mod.getClass()); - return (InMemoryDataTreeModification)mod; + private static @NonNull InMemoryDataTreeModification accessMod(final DataTreeModification mod, final String op) { + if (mod instanceof InMemoryDataTreeModification inMemoryMod) { + if (inMemoryMod.isSealed()) { + return inMemoryMod; + } + throw new IllegalArgumentException("Attempted to " + op + " unsealed modification " + inMemoryMod); + } + throw new IllegalArgumentException("Invalid modification " + mod.getClass()); } }