From a4a940292aa19435db2477e5e27ce00d3fcd6709 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Wed, 17 May 2023 18:17:45 +0200 Subject: [PATCH] Remove MountPointIdentifier Remove MountPointIdentifier as the last remnant of rfc8528-data-api. This forces an adjustment to yang-data-codec-binfmt, which can no longer read this PathArgument. It also allows us to seal YangInstanceIdentifier.PathArgument, not allowing any external implementations of it. JIRA: YANGTOOLS-1172 Change-Id: Ibdbb5d2eb9d63f3d0e8a95065e8124ce6818a7af Signed-off-by: Robert Varga --- artifacts/pom.xml | 5 - codec/yang-data-codec-binfmt/pom.xml | 4 - .../src/main/java/module-info.java | 1 - .../binfmt/AbstractLithiumDataInput.java | 7 ++ .../binfmt/AbstractMagnesiumDataInput.java | 16 ++-- .../binfmt/AbstractMagnesiumDataOutput.java | 7 -- .../ForwardingNormalizedNodeDataInput.java | 7 ++ .../binfmt/LegacyMountPointIdentifier.java | 3 +- .../codec/binfmt/NormalizedNodeDataInput.java | 12 ++- .../src/main/java/module-info.java | 1 - .../src/main/java/module-info.java | 2 - data/pom.xml | 1 - data/rfc8528-data-api/pom.xml | 58 ----------- .../src/main/java/module-info.java | 23 ----- .../yangtools/rfc8528/data/api/MPIv1.java | 48 ---------- .../data/api/MountPointIdentifier.java | 95 ------------------- data/rfc8528-data-util/pom.xml | 4 - .../src/main/java/module-info.java | 1 - .../yang/data/api/YangInstanceIdentifier.java | 12 +-- .../data/api/schema/NormalizedNodesTest.java | 2 +- data/yang-data-impl/pom.xml | 6 +- .../src/main/java/module-info.java | 2 - .../LeafRefContextTreeBuilderTest.java | 2 - .../data/tree/spi/DataTreeCandidatesTest.java | 13 +-- ...rmalizedNodeDataTreeCandidateNodeTest.java | 7 +- data/yang-data-util/pom.xml | 4 - .../src/main/java/module-info.java | 1 - docs/pom.xml | 4 - features/odl-yangtools-data-api/pom.xml | 4 - 29 files changed, 49 insertions(+), 303 deletions(-) delete mode 100644 data/rfc8528-data-api/pom.xml delete mode 100644 data/rfc8528-data-api/src/main/java/module-info.java delete mode 100644 data/rfc8528-data-api/src/main/java/org/opendaylight/yangtools/rfc8528/data/api/MPIv1.java delete mode 100644 data/rfc8528-data-api/src/main/java/org/opendaylight/yangtools/rfc8528/data/api/MountPointIdentifier.java diff --git a/artifacts/pom.xml b/artifacts/pom.xml index f88e14f710..73d19ea49a 100644 --- a/artifacts/pom.xml +++ b/artifacts/pom.xml @@ -254,11 +254,6 @@ 11.0.0-SNAPSHOT - - org.opendaylight.yangtools - rfc8528-data-api - 11.0.0-SNAPSHOT - org.opendaylight.yangtools rfc8528-data-util diff --git a/codec/yang-data-codec-binfmt/pom.xml b/codec/yang-data-codec-binfmt/pom.xml index bc0925c0cc..83d232f0b2 100644 --- a/codec/yang-data-codec-binfmt/pom.xml +++ b/codec/yang-data-codec-binfmt/pom.xml @@ -50,10 +50,6 @@ org.opendaylight.yangtools yang-model-api - - org.opendaylight.yangtools - rfc8528-data-api - org.opendaylight.yangtools yang-data-tree-api diff --git a/codec/yang-data-codec-binfmt/src/main/java/module-info.java b/codec/yang-data-codec-binfmt/src/main/java/module-info.java index 03b464bd44..ec77f10706 100644 --- a/codec/yang-data-codec-binfmt/src/main/java/module-info.java +++ b/codec/yang-data-codec-binfmt/src/main/java/module-info.java @@ -16,7 +16,6 @@ module org.opendaylight.yangtools.yang.data.codec.binfmt { requires transitive org.opendaylight.yangtools.yang.data.tree.spi; requires java.xml; requires org.opendaylight.yangtools.yang.data.impl; - requires org.opendaylight.yangtools.rfc8528.data.api; requires org.slf4j; // Annotations diff --git a/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/AbstractLithiumDataInput.java b/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/AbstractLithiumDataInput.java index eec7c9beef..7aacdb81b4 100644 --- a/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/AbstractLithiumDataInput.java +++ b/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/AbstractLithiumDataInput.java @@ -26,6 +26,7 @@ import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.dom.DOMSource; import org.eclipse.jdt.annotation.NonNull; +import org.opendaylight.yangtools.concepts.Either; import org.opendaylight.yangtools.util.ImmutableOffsetMapTemplate; import org.opendaylight.yangtools.yang.common.Decimal64; import org.opendaylight.yangtools.yang.common.Empty; @@ -384,4 +385,10 @@ abstract class AbstractLithiumDataInput extends AbstractNormalizedNodeDataInput default -> throw new InvalidNormalizedNodeStreamException("Unexpected PathArgument type " + type); }; } + + @Override + @Deprecated(since = "11.0.0", forRemoval = true) + public final Either readLegacyPathArgument() throws IOException { + return Either.ofFirst(readPathArgument()); + } } diff --git a/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/AbstractMagnesiumDataInput.java b/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/AbstractMagnesiumDataInput.java index d334cade1a..9213467f72 100644 --- a/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/AbstractMagnesiumDataInput.java +++ b/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/AbstractMagnesiumDataInput.java @@ -26,7 +26,7 @@ import java.util.List; import java.util.concurrent.ExecutionException; import javax.xml.transform.dom.DOMSource; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.rfc8528.data.api.MountPointIdentifier; +import org.opendaylight.yangtools.concepts.Either; import org.opendaylight.yangtools.util.xml.UntrustedXML; import org.opendaylight.yangtools.yang.common.Decimal64; import org.opendaylight.yangtools.yang.common.Empty; @@ -375,22 +375,24 @@ abstract class AbstractMagnesiumDataInput extends AbstractNormalizedNodeDataInpu } @Override - public final PathArgument readPathArgument() throws IOException { + @Deprecated(since = "11.0.0", forRemoval = true) + public final Either readLegacyPathArgument() throws IOException { final byte header = input.readByte(); return switch (header & MagnesiumPathArgument.TYPE_MASK) { - case MagnesiumPathArgument.AUGMENTATION_IDENTIFIER -> readAugmentationIdentifier(header); + case MagnesiumPathArgument.AUGMENTATION_IDENTIFIER -> Either.ofFirst(readAugmentationIdentifier(header)); case MagnesiumPathArgument.NODE_IDENTIFIER -> { verifyPathIdentifierOnly(header); - yield readNodeIdentifier(header); + yield Either.ofFirst(readNodeIdentifier(header)); } - case MagnesiumPathArgument.NODE_IDENTIFIER_WITH_PREDICATES -> readNodeIdentifierWithPredicates(header); + case MagnesiumPathArgument.NODE_IDENTIFIER_WITH_PREDICATES -> + Either.ofFirst(readNodeIdentifierWithPredicates(header)); case MagnesiumPathArgument.NODE_WITH_VALUE -> { verifyPathIdentifierOnly(header); - yield readNodeWithValue(header); + yield Either.ofFirst(readNodeWithValue(header)); } case MagnesiumPathArgument.MOUNTPOINT_IDENTIFIER -> { verifyPathIdentifierOnly(header); - yield MountPointIdentifier.create(readNodeIdentifier(header).getNodeType()); + yield Either.ofSecond(new LegacyMountPointIdentifier(readNodeIdentifier(header).getNodeType())); } default -> throw new InvalidNormalizedNodeStreamException("Unexpected PathArgument header " + header); }; diff --git a/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/AbstractMagnesiumDataOutput.java b/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/AbstractMagnesiumDataOutput.java index 41e61b5bb6..1b9210d846 100644 --- a/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/AbstractMagnesiumDataOutput.java +++ b/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/AbstractMagnesiumDataOutput.java @@ -28,7 +28,6 @@ import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.rfc8528.data.api.MountPointIdentifier; import org.opendaylight.yangtools.yang.common.Decimal64; import org.opendaylight.yangtools.yang.common.Empty; import org.opendaylight.yangtools.yang.common.QName; @@ -237,8 +236,6 @@ abstract class AbstractMagnesiumDataOutput extends AbstractNormalizedNodeDataOut writeAugmentationIdentifier(augid); } else if (pathArgument instanceof NodeWithValue niv) { writeNodeWithValue(niv); - } else if (pathArgument instanceof MountPointIdentifier mpid) { - writeMountPointIdentifier(mpid); } else { throw new IOException("Unhandled PathArgument " + pathArgument); } @@ -270,10 +267,6 @@ abstract class AbstractMagnesiumDataOutput extends AbstractNormalizedNodeDataOut writePathArgumentQName(identifier.getNodeType(), MagnesiumPathArgument.NODE_IDENTIFIER); } - private void writeMountPointIdentifier(final MountPointIdentifier identifier) throws IOException { - writePathArgumentQName(identifier.getNodeType(), MagnesiumPathArgument.MOUNTPOINT_IDENTIFIER); - } - private void writeNodeIdentifierWithPredicates(final NodeIdentifierWithPredicates identifier) throws IOException { final int size = identifier.size(); if (size < 5) { diff --git a/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/ForwardingNormalizedNodeDataInput.java b/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/ForwardingNormalizedNodeDataInput.java index 9527523b3d..779b0f6422 100644 --- a/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/ForwardingNormalizedNodeDataInput.java +++ b/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/ForwardingNormalizedNodeDataInput.java @@ -9,6 +9,7 @@ package org.opendaylight.yangtools.yang.data.codec.binfmt; import java.io.IOException; import org.eclipse.jdt.annotation.NonNull; +import org.opendaylight.yangtools.concepts.Either; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; @@ -52,6 +53,12 @@ abstract class ForwardingNormalizedNodeDataInput extends ForwardingDataInput imp return delegate().readPathArgument(); } + @Override + @Deprecated(since = "11.0.0", forRemoval = true) + public final Either readLegacyPathArgument() throws IOException { + return delegate().readLegacyPathArgument(); + } + @Override public final SchemaNodeIdentifier readSchemaNodeIdentifier() throws IOException { return delegate().readSchemaNodeIdentifier(); diff --git a/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/LegacyMountPointIdentifier.java b/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/LegacyMountPointIdentifier.java index be4fa47844..03b35baa62 100644 --- a/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/LegacyMountPointIdentifier.java +++ b/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/LegacyMountPointIdentifier.java @@ -10,11 +10,10 @@ package org.opendaylight.yangtools.yang.data.codec.binfmt; import static java.util.Objects.requireNonNull; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.rfc8528.data.api.MountPointIdentifier; import org.opendaylight.yangtools.yang.common.QName; /** - * Representation of legacy {@link MountPointIdentifier}. + * Representation of legacy {@code org.opendaylight.yangtools.rfc8528.data.api.MountPointIdentifier}. */ @Deprecated(since = "11.0.0") public record LegacyMountPointIdentifier(@NonNull QName qname) implements LegacyPathArgument { diff --git a/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/NormalizedNodeDataInput.java b/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/NormalizedNodeDataInput.java index a582723894..4ca1668a2d 100644 --- a/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/NormalizedNodeDataInput.java +++ b/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/NormalizedNodeDataInput.java @@ -79,7 +79,13 @@ public interface NormalizedNodeDataInput extends QNameAwareDataInput { * @return A PathArgument * @throws IOException if an error occurs */ - @NonNull PathArgument readPathArgument() throws IOException; + default @NonNull PathArgument readPathArgument() throws IOException { + final var legacy = readLegacyPathArgument(); + if (legacy.isFirst()) { + return legacy.getFirst(); + } + throw new IOException(legacy.getSecond() + " does not have a representation"); + } /** * Read a {@link PathArgument} or a {@link LegacyPathArgument} from the reader. @@ -88,9 +94,7 @@ public interface NormalizedNodeDataInput extends QNameAwareDataInput { * @throws IOException if an error occurs */ @Deprecated(since = "11.0.0") - default Either readLegacyPathArgument() throws IOException { - return Either.ofFirst(readPathArgument()); - } + @NonNull Either readLegacyPathArgument() throws IOException; @NonNull SchemaNodeIdentifier readSchemaNodeIdentifier() throws IOException; diff --git a/codec/yang-data-codec-gson/src/main/java/module-info.java b/codec/yang-data-codec-gson/src/main/java/module-info.java index 3d3da91d0c..9fa22b613b 100644 --- a/codec/yang-data-codec-gson/src/main/java/module-info.java +++ b/codec/yang-data-codec-gson/src/main/java/module-info.java @@ -10,7 +10,6 @@ module org.opendaylight.yangtools.yang.data.codec.gson { requires transitive com.google.gson; requires transitive org.opendaylight.yangtools.yang.data.api; - requires transitive org.opendaylight.yangtools.rfc8528.data.api; requires com.google.common; requires java.xml; diff --git a/codec/yang-data-codec-xml/src/main/java/module-info.java b/codec/yang-data-codec-xml/src/main/java/module-info.java index 50f7e74c2e..b826fdf7a5 100644 --- a/codec/yang-data-codec-xml/src/main/java/module-info.java +++ b/codec/yang-data-codec-xml/src/main/java/module-info.java @@ -11,7 +11,6 @@ module org.opendaylight.yangtools.yang.data.codec.xml { requires transitive org.opendaylight.yangtools.yang.data.api; requires transitive org.opendaylight.yangtools.yang.data.util; requires transitive org.opendaylight.yangtools.yang.model.api; - requires transitive org.opendaylight.yangtools.rfc8528.data.api; requires java.xml; requires com.google.common; @@ -21,7 +20,6 @@ module org.opendaylight.yangtools.yang.data.codec.xml { requires org.opendaylight.yangtools.yang.data.impl; requires org.opendaylight.yangtools.rfc7952.model.api; requires org.opendaylight.yangtools.rfc8528.model.api; - requires org.opendaylight.yangtools.rfc8528.data.util; requires org.slf4j; // Annotations diff --git a/data/pom.xml b/data/pom.xml index f9c4b91b84..3561ea6f20 100644 --- a/data/pom.xml +++ b/data/pom.xml @@ -40,7 +40,6 @@ yang-data-tree-ri - rfc8528-data-api rfc8528-data-util diff --git a/data/rfc8528-data-api/pom.xml b/data/rfc8528-data-api/pom.xml deleted file mode 100644 index b1a591166a..0000000000 --- a/data/rfc8528-data-api/pom.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - 4.0.0 - - org.opendaylight.yangtools - bundle-parent - 11.0.0-SNAPSHOT - ../../bundle-parent - - - rfc8528-data-api - bundle - ${project.artifactId} - RFC8528 data model extensions - - - - com.google.guava - guava - - - org.opendaylight.yangtools - concepts - - - org.opendaylight.yangtools - util - - - org.opendaylight.yangtools - yang-common - - - org.opendaylight.yangtools - yang-data-api - - - org.opendaylight.yangtools - yang-model-api - - - org.opendaylight.yangtools - yang-parser-api - - - org.opendaylight.yangtools - rfc8528-model-api - - - diff --git a/data/rfc8528-data-api/src/main/java/module-info.java b/data/rfc8528-data-api/src/main/java/module-info.java deleted file mode 100644 index 425b3dc3b3..0000000000 --- a/data/rfc8528-data-api/src/main/java/module-info.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2020 PANTHEON.tech, s.r.o. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -// 'rfc8528' in the name ends with a digit -@SuppressWarnings("module") -module org.opendaylight.yangtools.rfc8528.data.api { - exports org.opendaylight.yangtools.rfc8528.data.api; - - requires transitive org.opendaylight.yangtools.concepts; - requires transitive org.opendaylight.yangtools.yang.common; - requires transitive org.opendaylight.yangtools.yang.data.api; - requires transitive org.opendaylight.yangtools.yang.model.api; - requires transitive org.opendaylight.yangtools.yang.parser.api; - requires transitive org.opendaylight.yangtools.rfc8528.model.api; - requires org.opendaylight.yangtools.util; - - // Annotations - requires static transitive org.eclipse.jdt.annotation; -} diff --git a/data/rfc8528-data-api/src/main/java/org/opendaylight/yangtools/rfc8528/data/api/MPIv1.java b/data/rfc8528-data-api/src/main/java/org/opendaylight/yangtools/rfc8528/data/api/MPIv1.java deleted file mode 100644 index 879d1ceaf8..0000000000 --- a/data/rfc8528-data-api/src/main/java/org/opendaylight/yangtools/rfc8528/data/api/MPIv1.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 2019 PANTHEON.tech s.r.o. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.yangtools.rfc8528.data.api; - -import static java.util.Objects.requireNonNull; - -import java.io.Externalizable; -import java.io.IOException; -import java.io.ObjectInput; -import java.io.ObjectOutput; -import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.yang.common.QName; - -final class MPIv1 implements Externalizable { - @java.io.Serial - private static final long serialVersionUID = 1L; - - private QName qname; - - @SuppressWarnings("checkstyle:redundantModifier") - public MPIv1() { - // For Externalizable - } - - MPIv1(final @NonNull QName qname) { - this.qname = requireNonNull(qname); - } - - @Override - public void writeExternal(final ObjectOutput out) throws IOException { - qname.writeTo(out); - } - - @Override - public void readExternal(final ObjectInput in) throws IOException { - qname = QName.readFrom(in); - } - - @java.io.Serial - private Object readResolve() { - return MountPointIdentifier.create(qname); - } -} diff --git a/data/rfc8528-data-api/src/main/java/org/opendaylight/yangtools/rfc8528/data/api/MountPointIdentifier.java b/data/rfc8528-data-api/src/main/java/org/opendaylight/yangtools/rfc8528/data/api/MountPointIdentifier.java deleted file mode 100644 index 1c7e5cada8..0000000000 --- a/data/rfc8528-data-api/src/main/java/org/opendaylight/yangtools/rfc8528/data/api/MountPointIdentifier.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright (c) 2019 PANTHEON.tech s.r.o. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.yangtools.rfc8528.data.api; - -import com.google.common.annotations.Beta; -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.CacheLoader; -import com.google.common.cache.LoadingCache; -import java.io.DataInput; -import java.io.DataOutput; -import java.io.IOException; -import org.eclipse.jdt.annotation.NonNullByDefault; -import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.yangtools.concepts.WritableObject; -import org.opendaylight.yangtools.rfc8528.model.api.MountPointLabel; -import org.opendaylight.yangtools.util.AbstractIdentifier; -import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; - -@Beta -@NonNullByDefault -public final class MountPointIdentifier extends AbstractIdentifier - implements PathArgument, WritableObject { - @java.io.Serial - private static final long serialVersionUID = 1L; - - private static final LoadingCache CACHE = CacheBuilder.newBuilder().weakValues() - .build(new CacheLoader() { - @Override - public MountPointIdentifier load(final QName key) { - return new MountPointIdentifier(MountPointLabel.create(key)); - } - }); - - public MountPointIdentifier(final MountPointLabel label) { - super(label); - } - - public static MountPointIdentifier of(final QName qname) { - return new MountPointIdentifier(new MountPointLabel(qname)); - } - - public static MountPointIdentifier create(final QName qname) { - final MountPointIdentifier existing = CACHE.getIfPresent(qname); - return existing != null ? existing : CACHE.getUnchecked(qname.intern()); - } - - public static MountPointIdentifier readFrom(final DataInput in) throws IOException { - return create(QName.readFrom(in)); - } - - public MountPointLabel getLabel() { - return getValue(); - } - - @Override - public void writeTo(final DataOutput out) throws IOException { - getValue().writeTo(out); - } - - @java.io.Serial - private Object writeReplace() { - return new MPIv1(getLabel().qname()); - } - - @Override - @SuppressWarnings("checkstyle:parameterName") - public int compareTo(final @Nullable PathArgument o) { - if (o instanceof AugmentationIdentifier) { - // Augmentations are strictly more, in keeping of their compare - return 1; - } - if (!(o instanceof MountPointIdentifier other)) { - // TODO: Yeah, okay, this declaration is not quite right, but we are following AugmentationIdenfier's lead - return -1; - } - return getNodeType().compareTo(other.getNodeType()); - } - - @Override - public QName getNodeType() { - return getLabel().qname(); - } - - @Override - public String toRelativeString(final @Nullable PathArgument previous) { - return toString(); - } -} diff --git a/data/rfc8528-data-util/pom.xml b/data/rfc8528-data-util/pom.xml index 0335104259..adf5bb7e8f 100644 --- a/data/rfc8528-data-util/pom.xml +++ b/data/rfc8528-data-util/pom.xml @@ -54,10 +54,6 @@ org.opendaylight.yangtools yang-parser-api - - org.opendaylight.yangtools - rfc8528-data-api - org.opendaylight.yangtools rfc8528-model-api diff --git a/data/rfc8528-data-util/src/main/java/module-info.java b/data/rfc8528-data-util/src/main/java/module-info.java index f58d131212..7e512cb129 100644 --- a/data/rfc8528-data-util/src/main/java/module-info.java +++ b/data/rfc8528-data-util/src/main/java/module-info.java @@ -16,7 +16,6 @@ module org.opendaylight.yangtools.rfc8528.data.util { requires transitive org.opendaylight.yangtools.yang.model.api; requires transitive org.opendaylight.yangtools.yang.model.spi; requires transitive org.opendaylight.yangtools.yang.parser.api; - requires transitive org.opendaylight.yangtools.rfc8528.data.api; requires org.opendaylight.yangtools.rfc8528.model.api; requires org.opendaylight.yangtools.yang.common; diff --git a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/YangInstanceIdentifier.java b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/YangInstanceIdentifier.java index f691310d27..468322b1d5 100644 --- a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/YangInstanceIdentifier.java +++ b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/YangInstanceIdentifier.java @@ -21,7 +21,6 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.common.collect.Sets; -import java.io.Serial; import java.io.Serializable; import java.lang.invoke.MethodHandles; import java.lang.invoke.VarHandle; @@ -78,7 +77,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode; */ public abstract sealed class YangInstanceIdentifier implements HierarchicalIdentifier permits FixedYangInstanceIdentifier, StackedYangInstanceIdentifier { - @Serial + @java.io.Serial private static final long serialVersionUID = 4L; private static final VarHandle TO_STRING_CACHE; private static final VarHandle HASH; @@ -395,7 +394,7 @@ public abstract sealed class YangInstanceIdentifier implements HierarchicalIdent abstract int computeHashCode(); - @Serial + @java.io.Serial final Object writeReplace() { return new YIDv1(this); } @@ -454,7 +453,8 @@ public abstract sealed class YangInstanceIdentifier implements HierarchicalIdent *
  • {@link NodeWithValue} - Identifier of leaf-list entry * */ - public interface PathArgument extends Comparable, Immutable, Serializable { + public sealed interface PathArgument extends Comparable, Immutable, Serializable + permits AbstractPathArgument, AugmentationIdentifier { /** * Returns unique QName of data node as defined in YANG Schema, if available. * @@ -475,7 +475,7 @@ public abstract sealed class YangInstanceIdentifier implements HierarchicalIdent @NonNull String toRelativeString(PathArgument previous); } - private abstract static class AbstractPathArgument implements PathArgument { + private abstract static sealed class AbstractPathArgument implements PathArgument { private static final long serialVersionUID = -4546547994250849340L; private final @NonNull QName nodeType; private transient volatile int hashValue; @@ -576,7 +576,7 @@ public abstract sealed class YangInstanceIdentifier implements HierarchicalIdent * Composite path argument identifying a {@link org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode} leaf * overall data tree. */ - public abstract static class NodeIdentifierWithPredicates extends AbstractPathArgument { + public abstract static sealed class NodeIdentifierWithPredicates extends AbstractPathArgument { @Beta public static final class Singleton extends NodeIdentifierWithPredicates { private static final long serialVersionUID = 1L; diff --git a/data/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/schema/NormalizedNodesTest.java b/data/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/schema/NormalizedNodesTest.java index f1ab0fdca9..48b0ed0fa8 100644 --- a/data/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/schema/NormalizedNodesTest.java +++ b/data/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/schema/NormalizedNodesTest.java @@ -32,7 +32,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgum public class NormalizedNodesTest { @Test public void testGetDirectChild() { - final var mockedPathArgument = mock(PathArgument.class); + final var mockedPathArgument = new NodeIdentifier(QName.create("test", "test")); final var mockedLeafNode = mock(LeafNode.class); assertEquals(Optional.empty(), NormalizedNodes.getDirectChild(mockedLeafNode, mockedPathArgument)); diff --git a/data/yang-data-impl/pom.xml b/data/yang-data-impl/pom.xml index 4a5c39721d..306b3f39b8 100644 --- a/data/yang-data-impl/pom.xml +++ b/data/yang-data-impl/pom.xml @@ -78,11 +78,7 @@ org.opendaylight.yangtools - rfc8528-data-api - - - org.opendaylight.yangtools - rfc8528-data-util + rfc8528-model-api diff --git a/data/yang-data-impl/src/main/java/module-info.java b/data/yang-data-impl/src/main/java/module-info.java index 99d150471f..760411c06f 100644 --- a/data/yang-data-impl/src/main/java/module-info.java +++ b/data/yang-data-impl/src/main/java/module-info.java @@ -22,9 +22,7 @@ module org.opendaylight.yangtools.yang.data.impl { requires transitive org.opendaylight.yangtools.yang.data.util; requires transitive org.opendaylight.yangtools.yang.model.api; requires transitive org.opendaylight.yangtools.yang.model.spi; - requires transitive org.opendaylight.yangtools.rfc8528.data.api; - requires org.opendaylight.yangtools.rfc8528.data.util; requires org.opendaylight.yangtools.yang.model.util; requires org.opendaylight.yangtools.util; requires org.slf4j; diff --git a/data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/leafref/LeafRefContextTreeBuilderTest.java b/data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/leafref/LeafRefContextTreeBuilderTest.java index 469d3022fa..801c44ae14 100644 --- a/data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/leafref/LeafRefContextTreeBuilderTest.java +++ b/data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/leafref/LeafRefContextTreeBuilderTest.java @@ -26,7 +26,6 @@ import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute; -import org.opendaylight.yangtools.yang.parser.api.YangParserException; import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; @@ -210,7 +209,6 @@ public class LeafRefContextTreeBuilderTest { final IllegalStateException ise = assertThrows(IllegalStateException.class, () -> YangParserTestUtils.parseYangResourceDirectory("/leafref-context-test/incorrect-modules")); final Throwable ype = ise.getCause(); - assertThat(ype, instanceOf(YangParserException.class)); final Throwable reactor = ype.getCause(); assertThat(reactor, instanceOf(ReactorException.class)); final Throwable source = reactor.getCause(); diff --git a/data/yang-data-tree-spi/src/test/java/org/opendaylight/yangtools/yang/data/tree/spi/DataTreeCandidatesTest.java b/data/yang-data-tree-spi/src/test/java/org/opendaylight/yangtools/yang/data/tree/spi/DataTreeCandidatesTest.java index 5be065cb40..93dcf6d23b 100644 --- a/data/yang-data-tree-spi/src/test/java/org/opendaylight/yangtools/yang/data/tree/spi/DataTreeCandidatesTest.java +++ b/data/yang-data-tree-spi/src/test/java/org/opendaylight/yangtools/yang/data/tree/spi/DataTreeCandidatesTest.java @@ -28,7 +28,6 @@ import org.mockito.junit.MockitoJUnitRunner; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; -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.CursorAwareDataTreeModification; import org.opendaylight.yangtools.yang.data.tree.api.DataTreeCandidate; @@ -155,24 +154,20 @@ public class DataTreeCandidatesTest { final DataTreeCandidateNode mockedChildNode1 = mock(DataTreeCandidateNode.class); doReturn(ModificationType.DELETE).when(mockedChildNode1).getModificationType(); - final PathArgument mockedPathArgument1 = mock(PathArgument.class); - doReturn(mockedPathArgument1).when(mockedChildNode1).getIdentifier(); + doReturn(new NodeIdentifier(QName.create("test", "test1"))).when(mockedChildNode1).getIdentifier(); final DataTreeCandidateNode mockedChildNode2 = mock(DataTreeCandidateNode.class); doReturn(ModificationType.WRITE).when(mockedChildNode2).getModificationType(); final NormalizedNode mockedNormalizedNode = mock(NormalizedNode.class); doReturn(Optional.of(mockedNormalizedNode)).when(mockedChildNode2).getDataAfter(); - final PathArgument mockedPathArgument2 = mock(PathArgument.class); - doReturn(mockedPathArgument2).when(mockedChildNode2).getIdentifier(); + doReturn(new NodeIdentifier(QName.create("test", "test2"))).when(mockedChildNode2).getIdentifier(); final DataTreeCandidateNode mockedChildNode3 = mock(DataTreeCandidateNode.class); doReturn(ModificationType.SUBTREE_MODIFIED).when(mockedChildNode3).getModificationType(); final DataTreeCandidateNode mockedChildNode3ChildNode = mock(DataTreeCandidateNode.class); doReturn(ModificationType.DELETE).when(mockedChildNode3ChildNode).getModificationType(); - final PathArgument mockedPathArgument31 = mock(PathArgument.class); - final PathArgument mockedPathArgument3 = mock(PathArgument.class); - doReturn(mockedPathArgument3).when(mockedChildNode3).getIdentifier(); - doReturn(mockedPathArgument31).when(mockedChildNode3ChildNode).getIdentifier(); + doReturn(new NodeIdentifier(QName.create("test", "test3"))).when(mockedChildNode3).getIdentifier(); + doReturn(new NodeIdentifier(QName.create("test", "test4"))).when(mockedChildNode3ChildNode).getIdentifier(); doReturn(List.of(mockedChildNode3ChildNode)).when(mockedChildNode3).getChildNodes(); final List childNodes = List.of(mockedChildNode1, mockedChildNode2, mockedChildNode3); diff --git a/data/yang-data-tree-spi/src/test/java/org/opendaylight/yangtools/yang/data/tree/spi/NormalizedNodeDataTreeCandidateNodeTest.java b/data/yang-data-tree-spi/src/test/java/org/opendaylight/yangtools/yang/data/tree/spi/NormalizedNodeDataTreeCandidateNodeTest.java index d043545fc8..f40aec5d66 100644 --- a/data/yang-data-tree-spi/src/test/java/org/opendaylight/yangtools/yang/data/tree/spi/NormalizedNodeDataTreeCandidateNodeTest.java +++ b/data/yang-data-tree-spi/src/test/java/org/opendaylight/yangtools/yang/data/tree/spi/NormalizedNodeDataTreeCandidateNodeTest.java @@ -8,6 +8,7 @@ package org.opendaylight.yangtools.yang.data.tree.spi; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doCallRealMethod; @@ -19,6 +20,8 @@ import java.util.Collection; import java.util.List; import java.util.Optional; import org.junit.Test; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.schema.DistinctNodeContainer; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; @@ -32,9 +35,9 @@ public class NormalizedNodeDataTreeCandidateNodeTest { final NormalizedNodeDataTreeCandidateNode normalizedNodeDataTreeCandidateNode = new NormalizedNodeDataTreeCandidateNode(mockedNormalizedNode); - final PathArgument mockedPathArgument = mock(PathArgument.class); + final PathArgument mockedPathArgument = new NodeIdentifier(QName.create("test", "test")); doReturn(mockedPathArgument).when(mockedNormalizedNode).getIdentifier(); - assertEquals(mockedPathArgument, normalizedNodeDataTreeCandidateNode.getIdentifier()); + assertSame(mockedPathArgument, normalizedNodeDataTreeCandidateNode.getIdentifier()); final Collection childNodes = normalizedNodeDataTreeCandidateNode.getChildNodes(); assertTrue(childNodes instanceof List); diff --git a/data/yang-data-util/pom.xml b/data/yang-data-util/pom.xml index bf9706aa7e..a36fd3f5db 100644 --- a/data/yang-data-util/pom.xml +++ b/data/yang-data-util/pom.xml @@ -62,10 +62,6 @@ org.opendaylight.yangtools yang-xpath-api - - org.opendaylight.yangtools - rfc8528-data-api - diff --git a/data/yang-data-util/src/main/java/module-info.java b/data/yang-data-util/src/main/java/module-info.java index f654c3019d..23cb81d63c 100644 --- a/data/yang-data-util/src/main/java/module-info.java +++ b/data/yang-data-util/src/main/java/module-info.java @@ -17,7 +17,6 @@ module org.opendaylight.yangtools.yang.data.util { requires transitive org.opendaylight.yangtools.yang.model.spi; requires transitive org.opendaylight.yangtools.yang.model.util; requires transitive org.opendaylight.yangtools.yang.xpath.api; - requires transitive org.opendaylight.yangtools.rfc8528.data.api; requires java.xml; requires org.opendaylight.yangtools.yang.parser.api; diff --git a/docs/pom.xml b/docs/pom.xml index 5afc139db2..b6a5d4caf5 100644 --- a/docs/pom.xml +++ b/docs/pom.xml @@ -186,10 +186,6 @@ rfc8040-parser-support - - org.opendaylight.yangtools - rfc8528-data-api - org.opendaylight.yangtools rfc8528-data-util diff --git a/features/odl-yangtools-data-api/pom.xml b/features/odl-yangtools-data-api/pom.xml index 70da98e2e6..7e61b0316f 100644 --- a/features/odl-yangtools-data-api/pom.xml +++ b/features/odl-yangtools-data-api/pom.xml @@ -62,10 +62,6 @@ org.opendaylight.yangtools yang-data-util - - org.opendaylight.yangtools - rfc8528-data-api - org.opendaylight.yangtools rfc8528-data-util -- 2.36.6