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%2FInMemoryDataTreeModification.java;h=6607027197e2c9238143f829a47bbdc231582ed0;hb=HEAD;hp=56f426fd4a92dbd07ce2a476aeda90ca330769ec;hpb=c73686880bb5000f1995bc527efa28d80520bc1c;p=yangtools.git diff --git a/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/InMemoryDataTreeModification.java b/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/InMemoryDataTreeModification.java index 56f426fd4a..d01b15c0b3 100644 --- a/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/InMemoryDataTreeModification.java +++ b/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/InMemoryDataTreeModification.java @@ -11,9 +11,11 @@ import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkState; import static java.util.Objects.requireNonNull; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.lang.invoke.MethodHandles; import java.lang.invoke.VarHandle; import java.util.Optional; +import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; @@ -25,12 +27,10 @@ import org.opendaylight.yangtools.yang.data.tree.api.SchemaValidationFailedExcep import org.opendaylight.yangtools.yang.data.tree.impl.node.TreeNode; import org.opendaylight.yangtools.yang.data.tree.impl.node.Version; import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; -import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextProvider; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -final class InMemoryDataTreeModification extends AbstractCursorAware implements CursorAwareDataTreeModification, - EffectiveModelContextProvider { +final class InMemoryDataTreeModification extends AbstractCursorAware implements CursorAwareDataTreeModification { private static final Logger LOG = LoggerFactory.getLogger(InMemoryDataTreeModification.class); private static final byte STATE_OPEN = 0; @@ -54,6 +54,7 @@ final class InMemoryDataTreeModification extends AbstractCursorAware implements // All access needs to go through STATE @SuppressWarnings("unused") + @SuppressFBWarnings(value = "UUF_UNUSED_FIELD", justification = "https://github.com/spotbugs/spotbugs/issues/2749") private volatile byte state; InMemoryDataTreeModification(final InMemoryDataTreeSnapshot snapshot, @@ -71,7 +72,7 @@ final class InMemoryDataTreeModification extends AbstractCursorAware implements * node in modification and in data tree (if successfully * committed) will be same and will not change. */ - version = snapshot.getRootNode().getSubtreeVersion().next(); + version = snapshot.getRootNode().subtreeVersion().next(); } ModifiedNode getRootModification() { @@ -87,8 +88,8 @@ final class InMemoryDataTreeModification extends AbstractCursorAware implements } @Override - public EffectiveModelContext getEffectiveModelContext() { - return snapshot.getEffectiveModelContext(); + public EffectiveModelContext modelContext() { + return snapshot.modelContext(); } @Override @@ -126,20 +127,14 @@ final class InMemoryDataTreeModification extends AbstractCursorAware implements final var terminalPath = terminal.getKey(); final var result = resolveSnapshot(terminalPath, terminal.getValue()); - if (result.isPresent()) { - final var data = result.orElseThrow().getData(); - return NormalizedNodes.findNode(terminalPath, data, path); - } - - return Optional.empty(); + return result == null ? Optional.empty() : NormalizedNodes.findNode(terminalPath, result.data(), path); } @SuppressWarnings("checkstyle:illegalCatch") - private Optional resolveSnapshot(final YangInstanceIdentifier path, - final ModifiedNode modification) { + private @Nullable TreeNode resolveSnapshot(final YangInstanceIdentifier path, final ModifiedNode modification) { final var potentialSnapshot = modification.getSnapshot(); if (potentialSnapshot != null) { - return potentialSnapshot; + return potentialSnapshot.orElse(null); } try { @@ -213,11 +208,11 @@ final class InMemoryDataTreeModification extends AbstractCursorAware implements * have same version each time this method is called. */ final var originalSnapshotRoot = snapshot.getRootNode(); - return new InMemoryDataTreeSnapshot(snapshot.getEffectiveModelContext(), - getStrategy().apply(rootNode, originalSnapshotRoot, version) - .orElseThrow(() -> new IllegalStateException( - "Data tree root is not present, possibly removed by previous modification")), strategyTree) - .newModification(); + final var newRoot = getStrategy().apply(rootNode, originalSnapshotRoot, version); + if (newRoot == null) { + throw new IllegalStateException("Data tree root is not present, possibly removed by previous modification"); + } + return new InMemoryDataTreeSnapshot(snapshot.modelContext(), newRoot, strategyTree).newModification(); } Version getVersion() {