From 39936df1e00600e14a89a5b82f161fdf048565fb Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 3 Oct 2022 10:36:24 +0200 Subject: [PATCH] Clean up TerminalDataTreeCandidateNode This class is supposed to be final and we should be mapping Optionals instead of explicit isPreset/get calls. Change-Id: Id30df72c8afe95c64dafe17a34f06eef01569535 Signed-off-by: Robert Varga --- .../spi/TerminalDataTreeCandidateNode.java | 76 ++++++++----------- 1 file changed, 32 insertions(+), 44 deletions(-) diff --git a/data/yang-data-tree-spi/src/main/java/org/opendaylight/yangtools/yang/data/tree/spi/TerminalDataTreeCandidateNode.java b/data/yang-data-tree-spi/src/main/java/org/opendaylight/yangtools/yang/data/tree/spi/TerminalDataTreeCandidateNode.java index d16587cc6a..7561f5cd9b 100644 --- a/data/yang-data-tree-spi/src/main/java/org/opendaylight/yangtools/yang/data/tree/spi/TerminalDataTreeCandidateNode.java +++ b/data/yang-data-tree-spi/src/main/java/org/opendaylight/yangtools/yang/data/tree/spi/TerminalDataTreeCandidateNode.java @@ -8,7 +8,6 @@ package org.opendaylight.yangtools.yang.data.tree.spi; import static java.util.Objects.requireNonNull; -import static org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import java.util.Collection; import java.util.Collections; @@ -16,10 +15,12 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Optional; import org.eclipse.jdt.annotation.NonNull; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.tree.api.DataTreeCandidateNode; import org.opendaylight.yangtools.yang.data.tree.api.ModificationType; +// Non-final for mocking class TerminalDataTreeCandidateNode implements DataTreeCandidateNode { private ModificationType modificationType; private final PathArgument identifier; @@ -28,18 +29,18 @@ class TerminalDataTreeCandidateNode implements DataTreeCandidateNode { private final HashMap childNodes = new HashMap<>(); private TerminalDataTreeCandidateNode parentNode; - TerminalDataTreeCandidateNode(PathArgument identifier, NormalizedNode data, - TerminalDataTreeCandidateNode parentNode) { + TerminalDataTreeCandidateNode(final PathArgument identifier, final NormalizedNode data, + final TerminalDataTreeCandidateNode parentNode) { this(identifier, data); this.parentNode = requireNonNull(parentNode); } - TerminalDataTreeCandidateNode(PathArgument identifier, NormalizedNode data) { + TerminalDataTreeCandidateNode(final PathArgument identifier, final NormalizedNode data) { this(identifier, ModificationType.UNMODIFIED, data, data); } - TerminalDataTreeCandidateNode(PathArgument identifier, ModificationType modificationType, - NormalizedNode before, NormalizedNode after) { + TerminalDataTreeCandidateNode(final PathArgument identifier, final ModificationType modificationType, + final NormalizedNode before, final NormalizedNode after) { this.modificationType = modificationType; this.identifier = identifier; this.before = before; @@ -57,8 +58,7 @@ class TerminalDataTreeCandidateNode implements DataTreeCandidateNode { } @Override - public Optional getModifiedChild( - PathArgument childIdentifier) { + public Optional getModifiedChild(final PathArgument childIdentifier) { return Optional.ofNullable(childNodes.get(identifier)); } @@ -72,7 +72,7 @@ class TerminalDataTreeCandidateNode implements DataTreeCandidateNode { return Optional.ofNullable(after); } - @NonNull Optional getDataAfter(PathArgument id) { + @NonNull Optional getDataAfter(final PathArgument id) { return getNode(id).flatMap(TerminalDataTreeCandidateNode::getDataAfter); } @@ -81,56 +81,46 @@ class TerminalDataTreeCandidateNode implements DataTreeCandidateNode { return Optional.ofNullable(before); } - @NonNull Optional getDataBefore(PathArgument id) { - Optional node = getNode(id); - if (node.isPresent()) { - return node.get().getDataBefore(); - } - return Optional.empty(); + @NonNull Optional getDataBefore(final PathArgument id) { + return getNode(id).flatMap(TerminalDataTreeCandidateNode::getDataBefore); } - void setAfter(NormalizedNode after) { + void setAfter(final NormalizedNode after) { this.after = after; } - void addChildNode(TerminalDataTreeCandidateNode node) { + void addChildNode(final TerminalDataTreeCandidateNode node) { childNodes.put(node.getIdentifier(), node); } - void setModification(PathArgument id, ModificationType modification) { - Optional node = getNode(id); - if (node.isEmpty()) { - throw new IllegalArgumentException("No node with " + id + " id was found"); - } - node.get().setModification(modification); + void setModification(final PathArgument id, final ModificationType modification) { + getNode(id) + .orElseThrow(() -> new IllegalArgumentException("No node with " + id + " id was found")) + .setModification(modification); } - private void setModification(ModificationType modification) { - this.modificationType = modification; + private void setModification(final ModificationType modification) { + modificationType = modification; } - ModificationType getModification(PathArgument id) { - Optional node = getNode(id); - return (node.isEmpty() ? ModificationType.UNMODIFIED : node.get().getModificationType()); + ModificationType getModification(final PathArgument id) { + return getNode(id).map(TerminalDataTreeCandidateNode::getModificationType).orElse(ModificationType.UNMODIFIED); } - void deleteNode(PathArgument id) { - if (id == null) { + void deleteNode(final PathArgument id) { + if (id != null) { + getNode(id).orElseThrow(() -> new IllegalArgumentException("No node with " + id + " id was found")) + .parentNode.deleteChild(id); + } else { modificationType = ModificationType.UNMODIFIED; - return; - } - Optional node = getNode(id); - if (node.isEmpty()) { - throw new IllegalArgumentException("No node with " + id + " id was found"); } - node.get().parentNode.deleteChild(id); } - private void deleteChild(PathArgument id) { + private void deleteChild(final PathArgument id) { childNodes.remove(id); } - @NonNull Optional getNode(PathArgument id) { + @NonNull Optional getNode(final PathArgument id) { if (id == null) { return Optional.of(this); } @@ -143,12 +133,11 @@ class TerminalDataTreeCandidateNode implements DataTreeCandidateNode { return findNode(id); } - void setData(PathArgument id, NormalizedNode node) { - TerminalDataTreeCandidateNode terminalDataTreeCandidateNode = getNode(id).get(); - terminalDataTreeCandidateNode.setAfter(node); + void setData(final PathArgument id, final NormalizedNode node) { + getNode(id).orElseThrow().setAfter(node); } - private @NonNull Optional findNode(PathArgument id) { + private @NonNull Optional findNode(final PathArgument id) { Collection> nodes = new HashSet<>(); childNodes.forEach((childIdentifier, childNode) -> { nodes.add(childNode.childNodes); @@ -157,8 +146,7 @@ class TerminalDataTreeCandidateNode implements DataTreeCandidateNode { } private @NonNull Optional findNode( - Collection> nodes, - PathArgument id) { + final Collection> nodes, final PathArgument id) { if (nodes.isEmpty()) { return Optional.empty(); } -- 2.36.6