From: Robert Varga Date: Thu, 27 Oct 2022 21:25:28 +0000 (+0200) Subject: Remove Augmentation{Identifier,Node} X-Git-Tag: v11.0.0~135 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=3d2579db1ac441dadf84e0ff7dab904832a87bf2;p=yangtools.git Remove Augmentation{Identifier,Node} These two are an ugly leak from binding world into yang.data.api. Purge them with fire. The only remnants are in yang-data-codec-binfmt, which now defines a LegacyAugmentationIdentifier utility to expose the legacy format to end users. JIRA: YANGTOOLS-568 Change-Id: Ib3b9182253ec7d42598b6a174a67c48191d9ed5b Signed-off-by: Robert Varga --- 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 7aacdb81b4..0dbb73b567 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 @@ -12,7 +12,7 @@ import static java.util.Objects.requireNonNull; import com.google.common.base.Strings; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList.Builder; -import com.google.common.collect.Sets; +import com.google.common.collect.ImmutableSet; import java.io.DataInput; import java.io.IOException; import java.io.StringReader; @@ -32,7 +32,6 @@ import org.opendaylight.yangtools.yang.common.Decimal64; import org.opendaylight.yangtools.yang.common.Empty; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; @@ -97,10 +96,11 @@ abstract class AbstractLithiumDataInput extends AbstractNormalizedNodeDataInput } private void streamAugmentation(final NormalizedNodeStreamWriter writer) throws IOException { - final AugmentationIdentifier augIdentifier = readAugmentationIdentifier(); + final var augIdentifier = readAugmentationIdentifier(); LOG.trace("Streaming augmentation node {}", augIdentifier); - writer.startAugmentationNode(augIdentifier); - commonStreamContainer(writer); + for (byte nodeType = input.readByte(); nodeType != LithiumNode.END_NODE; nodeType = input.readByte()) { + streamNormalizedNode(writer, nodeType); + } } private void streamChoice(final NormalizedNodeStreamWriter writer) throws IOException { @@ -273,22 +273,22 @@ abstract class AbstractLithiumDataInput extends AbstractNormalizedNodeDataInput }; } - private Set readQNameSet() throws IOException { + private ImmutableSet readQNameSet() throws IOException { // Read the children count final int count = input.readInt(); - final Set children = Sets.newHashSetWithExpectedSize(count); + final var children = ImmutableSet.builderWithExpectedSize(count); for (int i = 0; i < count; i++) { children.add(readQName()); } - return children; + return children.build(); } - abstract @NonNull AugmentationIdentifier readAugmentationIdentifier() throws IOException; + abstract @NonNull LegacyAugmentationIdentifier readAugmentationIdentifier() throws IOException; abstract @NonNull NodeIdentifier readNodeIdentifier() throws IOException; - final @NonNull AugmentationIdentifier defaultReadAugmentationIdentifier() throws IOException { - return AugmentationIdentifier.create(readQNameSet()); + final @NonNull LegacyAugmentationIdentifier defaultReadAugmentationIdentifier() throws IOException { + return new LegacyAugmentationIdentifier(readQNameSet()); } private @NonNull NodeIdentifierWithPredicates readNormalizedNodeWithPredicates() throws IOException { @@ -374,21 +374,18 @@ abstract class AbstractLithiumDataInput extends AbstractNormalizedNodeDataInput } @Override - public final PathArgument readPathArgument() throws IOException { + @Deprecated(since = "11.0.0", forRemoval = true) + public final Either readLegacyPathArgument() throws IOException { // read Type int type = input.readByte(); return switch (type) { - case LithiumPathArgument.AUGMENTATION_IDENTIFIER -> readAugmentationIdentifier(); - case LithiumPathArgument.NODE_IDENTIFIER -> readNodeIdentifier(); - case LithiumPathArgument.NODE_IDENTIFIER_WITH_PREDICATES -> readNormalizedNodeWithPredicates(); - case LithiumPathArgument.NODE_IDENTIFIER_WITH_VALUE -> new NodeWithValue<>(readQName(), readObject()); + case LithiumPathArgument.AUGMENTATION_IDENTIFIER -> Either.ofSecond(readAugmentationIdentifier()); + case LithiumPathArgument.NODE_IDENTIFIER -> Either.ofFirst(readNodeIdentifier()); + case LithiumPathArgument.NODE_IDENTIFIER_WITH_PREDICATES -> + Either.ofFirst(readNormalizedNodeWithPredicates()); + case LithiumPathArgument.NODE_IDENTIFIER_WITH_VALUE -> + Either.ofFirst(new NodeWithValue<>(readQName(), readObject())); 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 9213467f72..804636707f 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 @@ -37,7 +37,6 @@ import org.opendaylight.yangtools.yang.common.Uint32; import org.opendaylight.yangtools.yang.common.Uint64; import org.opendaylight.yangtools.yang.common.Uint8; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; @@ -61,9 +60,10 @@ abstract class AbstractMagnesiumDataInput extends AbstractNormalizedNodeDataInpu private static final @NonNull Integer INT32_0 = 0; private static final @NonNull Long INT64_0 = 0L; private static final byte @NonNull[] BINARY_0 = new byte[0]; - private static final @NonNull AugmentationIdentifier EMPTY_AID = AugmentationIdentifier.create(ImmutableSet.of()); + private static final @NonNull LegacyAugmentationIdentifier EMPTY_AID = + new LegacyAugmentationIdentifier(ImmutableSet.of()); - private final List codedAugments = new ArrayList<>(); + private final List codedAugments = new ArrayList<>(); private final List codedNodeIdentifiers = new ArrayList<>(); private final List codedModules = new ArrayList<>(); private final List codedStrings = new ArrayList<>(); @@ -77,7 +77,7 @@ abstract class AbstractMagnesiumDataInput extends AbstractNormalizedNodeDataInpu streamNormalizedNode(requireNonNull(writer), null, input.readByte()); } - private void streamNormalizedNode(final NormalizedNodeStreamWriter writer, final PathArgument parent, + private void streamNormalizedNode(final NormalizedNodeStreamWriter writer, final Object parent, final byte nodeHeader) throws IOException { switch (nodeHeader & MagnesiumNode.TYPE_MASK) { case MagnesiumNode.NODE_LEAF: @@ -136,10 +136,11 @@ abstract class AbstractMagnesiumDataInput extends AbstractNormalizedNodeDataInpu } private void streamAugmentation(final NormalizedNodeStreamWriter writer, final byte nodeHeader) throws IOException { - final AugmentationIdentifier augIdentifier = decodeAugmentationIdentifier(nodeHeader); + final var augIdentifier = decodeAugmentationIdentifier(nodeHeader); LOG.trace("Streaming augmentation node {}", augIdentifier); - writer.startAugmentationNode(augIdentifier); - commonStreamContainer(writer, augIdentifier); + for (byte nodeType = input.readByte(); nodeType != MagnesiumNode.NODE_END; nodeType = input.readByte()) { + streamNormalizedNode(writer, augIdentifier, nodeType); + } } private void streamChoice(final NormalizedNodeStreamWriter writer, final byte nodeHeader) throws IOException { @@ -156,7 +157,7 @@ abstract class AbstractMagnesiumDataInput extends AbstractNormalizedNodeDataInpu commonStreamContainer(writer, identifier); } - private void streamLeaf(final NormalizedNodeStreamWriter writer, final PathArgument parent, final byte nodeHeader) + private void streamLeaf(final NormalizedNodeStreamWriter writer, final Object parent, final byte nodeHeader) throws IOException { final NodeIdentifier identifier = decodeNodeIdentifier(nodeHeader); LOG.trace("Streaming leaf node {}", identifier); @@ -198,8 +199,8 @@ abstract class AbstractMagnesiumDataInput extends AbstractNormalizedNodeDataInpu commonStreamContainer(writer, identifier); } - private void streamLeafsetEntry(final NormalizedNodeStreamWriter writer, final PathArgument parent, - final byte nodeHeader) throws IOException { + private void streamLeafsetEntry(final NormalizedNodeStreamWriter writer, final Object parent, final byte nodeHeader) + throws IOException { final NodeIdentifier nodeId = decodeNodeIdentifier(nodeHeader, parent); final Object value = readLeafValue(); final NodeWithValue leafIdentifier = new NodeWithValue<>(nodeId.getNodeType(), value); @@ -215,8 +216,8 @@ abstract class AbstractMagnesiumDataInput extends AbstractNormalizedNodeDataInpu commonStreamContainer(writer, identifier); } - private void streamListEntry(final NormalizedNodeStreamWriter writer, final PathArgument parent, - final byte nodeHeader) throws IOException { + private void streamListEntry(final NormalizedNodeStreamWriter writer, final Object parent, final byte nodeHeader) + throws IOException { final NodeIdentifier identifier = decodeNodeIdentifier(nodeHeader, parent); LOG.trace("Streaming unkeyed list item node {}", identifier); writer.startUnkeyedListItem(identifier, UNKNOWN_SIZE); @@ -237,8 +238,8 @@ abstract class AbstractMagnesiumDataInput extends AbstractNormalizedNodeDataInpu commonStreamContainer(writer, identifier); } - private void streamMapEntry(final NormalizedNodeStreamWriter writer, final PathArgument parent, - final byte nodeHeader) throws IOException { + private void streamMapEntry(final NormalizedNodeStreamWriter writer, final Object parent, final byte nodeHeader) + throws IOException { final NodeIdentifier nodeId = decodeNodeIdentifier(nodeHeader, parent); final int size = switch (mask(nodeHeader, MagnesiumNode.PREDICATE_MASK)) { @@ -284,7 +285,7 @@ abstract class AbstractMagnesiumDataInput extends AbstractNormalizedNodeDataInpu return decodeNodeIdentifier(nodeHeader, null); } - private NodeIdentifier decodeNodeIdentifier(final byte nodeHeader, final PathArgument parent) throws IOException { + private NodeIdentifier decodeNodeIdentifier(final byte nodeHeader, final Object parent) throws IOException { final int index; switch (nodeHeader & MagnesiumNode.ADDR_MASK) { case MagnesiumNode.ADDR_DEFINE: @@ -312,7 +313,7 @@ abstract class AbstractMagnesiumDataInput extends AbstractNormalizedNodeDataInpu } } - private AugmentationIdentifier decodeAugmentationIdentifier(final byte nodeHeader) throws IOException { + private LegacyAugmentationIdentifier decodeAugmentationIdentifier(final byte nodeHeader) throws IOException { final int index; switch (nodeHeader & MagnesiumNode.ADDR_MASK) { case MagnesiumNode.ADDR_DEFINE: @@ -379,7 +380,7 @@ abstract class AbstractMagnesiumDataInput extends AbstractNormalizedNodeDataInpu public final Either readLegacyPathArgument() throws IOException { final byte header = input.readByte(); return switch (header & MagnesiumPathArgument.TYPE_MASK) { - case MagnesiumPathArgument.AUGMENTATION_IDENTIFIER -> Either.ofFirst(readAugmentationIdentifier(header)); + case MagnesiumPathArgument.AUGMENTATION_IDENTIFIER -> Either.ofSecond(readAugmentationIdentifier(header)); case MagnesiumPathArgument.NODE_IDENTIFIER -> { verifyPathIdentifierOnly(header); yield Either.ofFirst(readNodeIdentifier(header)); @@ -398,13 +399,13 @@ abstract class AbstractMagnesiumDataInput extends AbstractNormalizedNodeDataInpu }; } - private AugmentationIdentifier readAugmentationIdentifier() throws IOException { - final AugmentationIdentifier result = readAugmentationIdentifier(input.readInt()); + private @NonNull LegacyAugmentationIdentifier readAugmentationIdentifier() throws IOException { + final var result = readAugmentationIdentifier(input.readInt()); codedAugments.add(result); return result; } - private @NonNull AugmentationIdentifier readAugmentationIdentifier(final byte header) throws IOException { + private @NonNull LegacyAugmentationIdentifier readAugmentationIdentifier(final byte header) throws IOException { final byte count = mask(header, MagnesiumPathArgument.AID_COUNT_MASK); return switch (count) { case MagnesiumPathArgument.AID_COUNT_1B -> readAugmentationIdentifier(input.readUnsignedByte()); @@ -414,13 +415,13 @@ abstract class AbstractMagnesiumDataInput extends AbstractNormalizedNodeDataInpu }; } - private @NonNull AugmentationIdentifier readAugmentationIdentifier(final int size) throws IOException { + private @NonNull LegacyAugmentationIdentifier readAugmentationIdentifier(final int size) throws IOException { if (size > 0) { - final List qnames = new ArrayList<>(size); + final var qnames = ImmutableSet.builderWithExpectedSize(size); for (int i = 0; i < size; ++i) { qnames.add(readQName()); } - return AugmentationIdentifier.create(ImmutableSet.copyOf(qnames)); + return new LegacyAugmentationIdentifier(qnames.build()); } else if (size == 0) { return EMPTY_AID; } else { diff --git a/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/LegacyAugmentationIdentifier.java b/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/LegacyAugmentationIdentifier.java index c03b531dbf..d6c66c9353 100644 --- a/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/LegacyAugmentationIdentifier.java +++ b/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/LegacyAugmentationIdentifier.java @@ -12,10 +12,9 @@ import static java.util.Objects.requireNonNull; import com.google.common.collect.ImmutableSet; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; /** - * Representation of legacy {@link AugmentationIdentifier}. + * Representation of legacy {@code yang.data.api.YangInstanceIdentifier.AugmentationIdentifier}. */ @Deprecated(since = "11.0.0") public record LegacyAugmentationIdentifier(@NonNull ImmutableSet childNames) implements LegacyPathArgument { diff --git a/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/LithiumNormalizedNodeInputStreamReader.java b/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/LithiumNormalizedNodeInputStreamReader.java index 52dbc9d748..8734b5db75 100755 --- a/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/LithiumNormalizedNodeInputStreamReader.java +++ b/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/LithiumNormalizedNodeInputStreamReader.java @@ -11,7 +11,6 @@ import com.google.common.base.Strings; import java.io.DataInput; import java.io.IOException; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; /** @@ -39,7 +38,7 @@ final class LithiumNormalizedNodeInputStreamReader extends AbstractLithiumDataIn } @Override - AugmentationIdentifier readAugmentationIdentifier() throws IOException { + LegacyAugmentationIdentifier readAugmentationIdentifier() throws IOException { return defaultReadAugmentationIdentifier(); } diff --git a/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/LithiumPathArgument.java b/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/LithiumPathArgument.java index 1488a9fae1..63a2a1057a 100644 --- a/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/LithiumPathArgument.java +++ b/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/LithiumPathArgument.java @@ -7,7 +7,6 @@ */ package org.opendaylight.yangtools.yang.data.codec.binfmt; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; @@ -28,8 +27,6 @@ final class LithiumPathArgument { return NODE_IDENTIFIER; } else if (pathArgument instanceof NodeIdentifierWithPredicates) { return NODE_IDENTIFIER_WITH_PREDICATES; - } else if (pathArgument instanceof AugmentationIdentifier) { - return AUGMENTATION_IDENTIFIER; } else if (pathArgument instanceof NodeWithValue) { return NODE_IDENTIFIER_WITH_VALUE; } else { diff --git a/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/MagnesiumDataOutput.java b/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/MagnesiumDataOutput.java index 80450e5fe9..6cab74af42 100644 --- a/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/MagnesiumDataOutput.java +++ b/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/MagnesiumDataOutput.java @@ -37,7 +37,6 @@ import org.opendaylight.yangtools.yang.common.Uint32; import org.opendaylight.yangtools.yang.common.Uint64; import org.opendaylight.yangtools.yang.common.Uint8; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; @@ -68,7 +67,6 @@ final class MagnesiumDataOutput extends AbstractNormalizedNodeDataOutput { private final Deque stack = new ArrayDeque<>(); // Coding maps - private final Map aidCodeMap = new HashMap<>(); private final Map moduleCodeMap = new HashMap<>(); private final Map stringCodeMap = new HashMap<>(); private final Map qnameCodeMap = new HashMap<>(); @@ -161,23 +159,6 @@ final class MagnesiumDataOutput extends AbstractNormalizedNodeDataOutput { startQNameNode(MagnesiumNode.NODE_CHOICE, name); } - @Override - public void startAugmentationNode(final AugmentationIdentifier identifier) throws IOException { - final Integer code = aidCodeMap.get(identifier); - if (code == null) { - aidCodeMap.put(identifier, aidCodeMap.size()); - output.writeByte(MagnesiumNode.NODE_AUGMENTATION | MagnesiumNode.ADDR_DEFINE); - final Set qnames = identifier.getPossibleChildNames(); - output.writeInt(qnames.size()); - for (QName qname : qnames) { - writeQNameInternal(qname); - } - } else { - writeNodeType(MagnesiumNode.NODE_AUGMENTATION, code); - } - stack.push(identifier); - } - @Override public boolean startAnyxmlNode(final NodeIdentifier name, final Class objectModel) throws IOException { if (DOMSource.class.isAssignableFrom(objectModel)) { @@ -233,8 +214,6 @@ final class MagnesiumDataOutput extends AbstractNormalizedNodeDataOutput { writeNodeIdentifier(nid); } else if (pathArgument instanceof NodeIdentifierWithPredicates nip) { writeNodeIdentifierWithPredicates(nip); - } else if (pathArgument instanceof AugmentationIdentifier augid) { - writeAugmentationIdentifier(augid); } else if (pathArgument instanceof NodeWithValue niv) { writeNodeWithValue(niv); } else { @@ -242,28 +221,6 @@ final class MagnesiumDataOutput extends AbstractNormalizedNodeDataOutput { } } - private void writeAugmentationIdentifier(final AugmentationIdentifier identifier) throws IOException { - final Set qnames = identifier.getPossibleChildNames(); - final int size = qnames.size(); - if (size < 29) { - output.writeByte(MagnesiumPathArgument.AUGMENTATION_IDENTIFIER - | size << MagnesiumPathArgument.AID_COUNT_SHIFT); - } else if (size < 256) { - output.writeByte(MagnesiumPathArgument.AUGMENTATION_IDENTIFIER | MagnesiumPathArgument.AID_COUNT_1B); - output.writeByte(size); - } else if (size < 65536) { - output.writeByte(MagnesiumPathArgument.AUGMENTATION_IDENTIFIER | MagnesiumPathArgument.AID_COUNT_2B); - output.writeShort(size); - } else { - output.writeByte(MagnesiumPathArgument.AUGMENTATION_IDENTIFIER | MagnesiumPathArgument.AID_COUNT_4B); - output.writeInt(size); - } - - for (QName qname : qnames) { - writeQNameInternal(qname); - } - } - private void writeNodeIdentifier(final NodeIdentifier identifier) throws IOException { writePathArgumentQName(identifier.getNodeType(), MagnesiumPathArgument.NODE_IDENTIFIER); } diff --git a/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/NeonSR2NormalizedNodeInputStreamReader.java b/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/NeonSR2NormalizedNodeInputStreamReader.java index c46e7f36ba..1eb8412f21 100644 --- a/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/NeonSR2NormalizedNodeInputStreamReader.java +++ b/codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/NeonSR2NormalizedNodeInputStreamReader.java @@ -15,7 +15,6 @@ import java.util.ArrayList; import java.util.List; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; /** @@ -24,7 +23,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdent */ final class NeonSR2NormalizedNodeInputStreamReader extends AbstractLithiumDataInput { private final ArrayList codedNodeIdentifiers = new ArrayList<>(); - private final List codedAugments = new ArrayList<>(); + private final List codedAugments = new ArrayList<>(); private final List codedModules = new ArrayList<>(); private final List codedQNames = new ArrayList<>(); @@ -49,7 +48,7 @@ final class NeonSR2NormalizedNodeInputStreamReader extends AbstractLithiumDataIn } @Override - AugmentationIdentifier readAugmentationIdentifier() throws IOException { + LegacyAugmentationIdentifier readAugmentationIdentifier() throws IOException { final byte valueType = readByte(); return switch (valueType) { case NeonSR2Tokens.IS_AUGMENT_CODE -> codedAugmentId(readInt()); @@ -122,12 +121,12 @@ final class NeonSR2NormalizedNodeInputStreamReader extends AbstractLithiumDataIn return qname; } - private AugmentationIdentifier codedAugmentId(final int code) throws IOException { + private LegacyAugmentationIdentifier codedAugmentId(final int code) throws IOException { return getCode("QName set", codedAugments, code); } - private AugmentationIdentifier rawAugmentId() throws IOException { - final AugmentationIdentifier aid = defaultReadAugmentationIdentifier(); + private LegacyAugmentationIdentifier rawAugmentId() throws IOException { + final var aid = defaultReadAugmentationIdentifier(); codedAugments.add(aid); return aid; } 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 4ca1668a2d..4543e155f8 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 @@ -84,7 +84,7 @@ public interface NormalizedNodeDataInput extends QNameAwareDataInput { if (legacy.isFirst()) { return legacy.getFirst(); } - throw new IOException(legacy.getSecond() + " does not have a representation"); + throw new InvalidNormalizedNodeStreamException(legacy.getSecond() + " does not have a representation"); } /** diff --git a/codec/yang-data-codec-binfmt/src/test/java/org/opendaylight/yangtools/yang/data/codec/binfmt/AidSerializationTest.java b/codec/yang-data-codec-binfmt/src/test/java/org/opendaylight/yangtools/yang/data/codec/binfmt/AidSerializationTest.java deleted file mode 100644 index 6df4972296..0000000000 --- a/codec/yang-data-codec-binfmt/src/test/java/org/opendaylight/yangtools/yang/data/codec/binfmt/AidSerializationTest.java +++ /dev/null @@ -1,73 +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.yang.data.codec.binfmt; - -import com.google.common.collect.ImmutableSet; -import java.util.Collections; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.junit.runners.Parameterized.Parameter; -import org.junit.runners.Parameterized.Parameters; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; - -@RunWith(Parameterized.class) -public class AidSerializationTest extends AbstractSerializationTest { - @Parameters(name = "{0}") - public static Iterable data() { - return Collections.singletonList( - new Object[] { NormalizedNodeStreamVersion.MAGNESIUM, 4, 94, 332, 2_376, 716_618, 912_975 }); - } - - @Parameter(1) - public int emptySize; - @Parameter(2) - public int oneSize; - @Parameter(3) - public int size29; - @Parameter(4) - public int size256; - @Parameter(5) - public int size65536; - @Parameter(6) - public int twiceSize65536; - - @Test - public void testEmptyIdentifier() { - assertSame(fillIdentifier(0), emptySize); - } - - @Test - public void testOneIdentifier() { - assertEquals(fillIdentifier(1), oneSize); - } - - @Test - public void test29() { - assertEquals(fillIdentifier(29), size29); - } - - @Test - public void test256() { - assertEquals(fillIdentifier(256), size256); - } - - @Test - public void test65536() { - final AugmentationIdentifier id = fillIdentifier(65536); - assertEquals(id, size65536); - assertEqualsTwice(id, twiceSize65536); - } - - private static AugmentationIdentifier fillIdentifier(final int size) { - final AugmentationIdentifier ret = AugmentationIdentifier.create(ImmutableSet.copyOf(generateQNames(size))); - Assert.assertEquals(size, ret.getPossibleChildNames().size()); - return ret; - } -} diff --git a/codec/yang-data-codec-binfmt/src/test/java/org/opendaylight/yangtools/yang/data/codec/binfmt/NormalizedNodeStreamReaderWriterTest.java b/codec/yang-data-codec-binfmt/src/test/java/org/opendaylight/yangtools/yang/data/codec/binfmt/NormalizedNodeStreamReaderWriterTest.java index 2b709c6e0b..f9efe03866 100644 --- a/codec/yang-data-codec-binfmt/src/test/java/org/opendaylight/yangtools/yang/data/codec/binfmt/NormalizedNodeStreamReaderWriterTest.java +++ b/codec/yang-data-codec-binfmt/src/test/java/org/opendaylight/yangtools/yang/data/codec/binfmt/NormalizedNodeStreamReaderWriterTest.java @@ -10,7 +10,6 @@ package org.opendaylight.yangtools.yang.data.codec.binfmt; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThrows; -import com.google.common.collect.ImmutableSet; import com.google.common.io.ByteStreams; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; @@ -20,9 +19,7 @@ import java.io.ObjectOutputStream; import java.io.Serializable; import java.io.StringReader; import java.io.StringWriter; -import java.util.ArrayList; import java.util.Collections; -import java.util.List; import java.util.Optional; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.OutputKeys; @@ -38,11 +35,9 @@ import org.junit.runners.Parameterized.Parameters; import org.opendaylight.yangtools.yang.common.Empty; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.DOMSourceAnyxmlNode; import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; @@ -60,7 +55,7 @@ public class NormalizedNodeStreamReaderWriterTest { @Parameters(name = "{0} {1}") public static Iterable data() { return Collections.singletonList( - new Object[] { NormalizedNodeStreamVersion.MAGNESIUM, 1_049_618, 2_289_103, 139, 825, 103, 229, 99 }); + new Object[] { NormalizedNodeStreamVersion.MAGNESIUM, 1_049_589, 2_289_103, 139, 796, 103, 229, 99 }); } @Parameter(0) @@ -298,36 +293,6 @@ public class NormalizedNodeStreamReaderWriterTest { assertEquals(expected, nnin.readNormalizedNode()); } - @Test - public void testAugmentationIdentifier() throws IOException { - final List qnames = new ArrayList<>(); - for (int i = 0; i < 257; ++i) { - qnames.add(QName.create(TestModel.TEST_QNAME, "a" + Integer.toHexString(i))); - } - - for (int i = 0; i < qnames.size(); ++i) { - assertAugmentationIdentifier(AugmentationIdentifier.create(ImmutableSet.copyOf(qnames.subList(0, i)))); - } - - for (int i = qnames.size(); i < 65536; ++i) { - qnames.add(QName.create(TestModel.TEST_QNAME, "a" + Integer.toHexString(i))); - } - assertAugmentationIdentifier(AugmentationIdentifier.create(ImmutableSet.copyOf(qnames))); - } - - private void assertAugmentationIdentifier(final AugmentationIdentifier expected) throws IOException { - final ByteArrayOutputStream bos = new ByteArrayOutputStream(); - try (NormalizedNodeDataOutput nnout = version.newDataOutput(ByteStreams.newDataOutput(bos))) { - nnout.writePathArgument(expected); - } - - final byte[] bytes = bos.toByteArray(); - - NormalizedNodeDataInput nnin = NormalizedNodeDataInput.newDataInput(ByteStreams.newDataInput(bytes)); - PathArgument arg = nnin.readPathArgument(); - assertEquals(expected, arg); - } - private static T clone(final T obj) { final ByteArrayOutputStream baos = new ByteArrayOutputStream(512); try (ObjectOutputStream oos = new ObjectOutputStream(baos)) { diff --git a/codec/yang-data-codec-binfmt/src/test/java/org/opendaylight/yangtools/yang/data/codec/binfmt/TestModel.java b/codec/yang-data-codec-binfmt/src/test/java/org/opendaylight/yangtools/yang/data/codec/binfmt/TestModel.java index d665945d4a..8d34aa2c44 100644 --- a/codec/yang-data-codec-binfmt/src/test/java/org/opendaylight/yangtools/yang/data/codec/binfmt/TestModel.java +++ b/codec/yang-data-codec-binfmt/src/test/java/org/opendaylight/yangtools/yang/data/codec/binfmt/TestModel.java @@ -13,12 +13,10 @@ import static org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes.ma import static org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes.mapNodeBuilder; import com.google.common.collect.ImmutableSet; -import java.util.Set; import org.opendaylight.yangtools.yang.common.Decimal64; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.Uint64; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; @@ -109,8 +107,6 @@ public final class TestModel { YangInstanceIdentifier.create(new NodeIdentifier(QName.create(TEST_QNAME, "qname")), NodeIdentifierWithPredicates.of(QName.create(TEST_QNAME, "list-entry"), QName.create(TEST_QNAME, "key"), 10), - new AugmentationIdentifier(ImmutableSet.of( - QName.create(TEST_QNAME, "aug1"), QName.create(TEST_QNAME, "aug2"))), new NodeWithValue<>(QName.create(TEST_QNAME, "leaf-list-entry"), "foo")))) .withChild(leafNode(MYIDENTITY_QNAME, DESC_QNAME)) .withChild(Builders.unkeyedListBuilder() @@ -183,12 +179,9 @@ public final class TestModel { return Builders.mapEntryBuilder() .withNodeIdentifier(NodeIdentifierWithPredicates.of(AUGMENTED_LIST_QNAME, ID_QNAME, id)) .withChild(leafNode(ID_QNAME, id)) - .withChild(Builders.augmentationBuilder() - .withNodeIdentifier(new AugmentationIdentifier(Set.of(AUG_CONT_QNAME))) - .withChild(Builders.containerBuilder() - .withNodeIdentifier(new NodeIdentifier(AUG_CONT_QNAME)) - .withChild(leafNode(AUG_NAME_QNAME, name)) - .build()) + .withChild(Builders.containerBuilder() + .withNodeIdentifier(new NodeIdentifier(AUG_CONT_QNAME)) + .withChild(leafNode(AUG_NAME_QNAME, name)) .build()) .build(); } diff --git a/codec/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONNormalizedNodeStreamWriter.java b/codec/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONNormalizedNodeStreamWriter.java index 3523742e0f..0655c6c78f 100644 --- a/codec/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONNormalizedNodeStreamWriter.java +++ b/codec/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONNormalizedNodeStreamWriter.java @@ -22,7 +22,6 @@ import org.checkerframework.checker.regex.qual.Regex; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.rfc8528.model.api.MountPointLabel; import org.opendaylight.yangtools.yang.common.XMLNamespace; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; @@ -386,12 +385,6 @@ public abstract class JSONNormalizedNodeStreamWriter implements NormalizedNodeSt context = new JSONStreamWriterInvisibleContext(context); } - @Override - public final void startAugmentationNode(final AugmentationIdentifier identifier) { - tracker.startAugmentationNode(identifier); - context = new JSONStreamWriterInvisibleContext(context); - } - @Override public final boolean startAnydataNode(final NodeIdentifier name, final Class objectModel) throws IOException { if (NormalizedAnydata.class.isAssignableFrom(objectModel)) { diff --git a/codec/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug8083Test.java b/codec/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug8083Test.java index 6740feb4dd..4ecb2cf93e 100644 --- a/codec/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug8083Test.java +++ b/codec/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug8083Test.java @@ -18,7 +18,6 @@ import static org.mockito.Mockito.verify; import static org.opendaylight.yangtools.yang.data.codec.gson.TestUtils.loadTextFile; import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; import java.io.IOException; @@ -32,7 +31,6 @@ import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.common.XMLNamespace; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; @@ -61,7 +59,6 @@ public class Bug8083Test { .node(TOP_QNAME) .node(FOOLIST_QNAME) .node(NodeIdentifierWithPredicates.of(FOOLIST_QNAME, ImmutableMap.of(NAME_QNAME, "key-value"))) - .node(new AugmentationIdentifier(ImmutableSet.of(BARCONTAINER_QNAME))) .node(BARCONTAINER_QNAME) .node(QName.create(BARMOD, "bar-leaf")) .build(); diff --git a/codec/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonStreamToNormalizedNodeTest.java b/codec/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonStreamToNormalizedNodeTest.java index f93d6cce6e..5935b66b46 100644 --- a/codec/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonStreamToNormalizedNodeTest.java +++ b/codec/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonStreamToNormalizedNodeTest.java @@ -13,19 +13,16 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThrows; import static org.opendaylight.yangtools.yang.data.codec.gson.TestUtils.loadTextFile; -import static org.opendaylight.yangtools.yang.data.impl.schema.Builders.augmentationBuilder; import static org.opendaylight.yangtools.yang.data.impl.schema.Builders.choiceBuilder; import static org.opendaylight.yangtools.yang.data.impl.schema.Builders.containerBuilder; import static org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes.leafNode; -import com.google.common.collect.ImmutableSet; import com.google.gson.stream.JsonReader; import java.io.IOException; import java.io.StringReader; import java.net.URISyntaxException; import org.junit.Test; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter; @@ -221,19 +218,13 @@ public class JsonStreamToNormalizedNodeTest extends AbstractComplexJsonTest { final var cont1Normalized = containerBuilder() .withNodeIdentifier(new NodeIdentifier(CONT_1)) - .withChild(augmentationBuilder() - .withNodeIdentifier(new AugmentationIdentifier(ImmutableSet.of(augmentChoice1QName))) + .withChild(choiceBuilder() + .withNodeIdentifier(new NodeIdentifier(augmentChoice1QName)) .withChild(choiceBuilder() - .withNodeIdentifier(new NodeIdentifier(augmentChoice1QName)) - .withChild(augmentationBuilder() - .withNodeIdentifier(new AugmentationIdentifier(ImmutableSet.of(augmentChoice2QName))) - .withChild(choiceBuilder() - .withNodeIdentifier(new NodeIdentifier(augmentChoice2QName)) - .withChild(containerBuilder() - .withNodeIdentifier(new NodeIdentifier(containerQName)) - .withChild(leafNode(leafQName, "leaf-value")) - .build()) - .build()) + .withNodeIdentifier(new NodeIdentifier(augmentChoice2QName)) + .withChild(containerBuilder() + .withNodeIdentifier(new NodeIdentifier(containerQName)) + .withChild(leafNode(leafQName, "leaf-value")) .build()) .build()) .build()) diff --git a/codec/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/TestingNormalizedNodeStructuresCreator.java b/codec/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/TestingNormalizedNodeStructuresCreator.java index 61e1c20ca8..2dec183a60 100644 --- a/codec/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/TestingNormalizedNodeStructuresCreator.java +++ b/codec/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/TestingNormalizedNodeStructuresCreator.java @@ -15,11 +15,9 @@ import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.common.Revision; import org.opendaylight.yangtools.yang.common.XMLNamespace; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; -import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode; import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; @@ -82,16 +80,6 @@ public final class TestingNormalizedNodeStructuresCreator { .withValue("lf17 value").build(); } - private static AugmentationNode externalAugmentC11AWithLf15_11AndLf15_12Node() { - return Builders.augmentationBuilder() - .withNodeIdentifier(new AugmentationIdentifier(ImmutableSet.of( - QName.create(COMPLEX_JSON_AUG, "lf15_11"), - QName.create(COMPLEX_JSON_AUG, "lf15_12")))) - .withChild(lf15_11NodeExternal()) - .withChild(lf15_12NodeExternal()) - .build(); - } - private static LeafNode lf15_12NodeExternal() { return Builders.leafBuilder() .withNodeIdentifier(new NodeIdentifier(QName.create(COMPLEX_JSON_AUG, "lf15_12"))) @@ -122,28 +110,12 @@ public final class TestingNormalizedNodeStructuresCreator { .withValue("lf13 value").build(); } - private static AugmentationNode augmentC11AWithLf15_21Node() { - return Builders.augmentationBuilder().withNodeIdentifier( - new AugmentationIdentifier(ImmutableSet.of(QName.create(COMPLEX_JSON, "lf15_21")))) - .withChild(lf15_21Node()).build(); - } - private static LeafNode lf15_21Node() { return Builders.leafBuilder() .withNodeIdentifier(new NodeIdentifier(QName.create(COMPLEX_JSON, "lf15_21"))) .withValue("lf15_21 value").build(); } - private static AugmentationNode augmentC11AWithLf15_11AndLf15_12Node() { - return Builders.augmentationBuilder() - .withNodeIdentifier(new AugmentationIdentifier(ImmutableSet.of( - QName.create(COMPLEX_JSON, "lf15_11"), - QName.create(COMPLEX_JSON, "lf15_12")))) - .withChild(lf15_11Node()) - .withChild(lf15_12Node()) - .build(); - } - private static LeafNode lf15_12Node() { return Builders.leafBuilder() .withNodeIdentifier(new NodeIdentifier(QName.create(COMPLEX_JSON, "lf15_12"))) @@ -156,17 +128,6 @@ public final class TestingNormalizedNodeStructuresCreator { .withValue(ImmutableSet.of("one", "two")).build(); } - private static AugmentationNode lf12_1Node() { - return Builders.augmentationBuilder() - .withNodeIdentifier(new AugmentationIdentifier(ImmutableSet.of( - QName.create(COMPLEX_JSON, "lf12_1"), - QName.create(COMPLEX_JSON, "lf12_2")))) - .withChild(Builders.leafBuilder() - .withNodeIdentifier(new NodeIdentifier(QName.create(COMPLEX_JSON, "lf12_1"))) - .withValue("lf12 value").build()) - .build(); - } - private static SystemMapNode childLst11() { return Builders.mapBuilder() .withNodeIdentifier(new NodeIdentifier(QName.create(COMPLEX_JSON, "lst11"))) @@ -243,7 +204,10 @@ public final class TestingNormalizedNodeStructuresCreator { } public static ContainerNode leafNodeViaAugmentationInContainer() { - return cont1Node(lf12_1Node()); + return cont1Node(Builders.leafBuilder() + .withNodeIdentifier(new NodeIdentifier(QName.create(COMPLEX_JSON, "lf12_1"))) + .withValue("lf12 value") + .build()); } public static ContainerNode choiceNodeInContainer() { @@ -254,12 +218,12 @@ public final class TestingNormalizedNodeStructuresCreator { * choc11 contains lf13, lf15_11 and lf15_12 are added via external augmentation. */ public static ContainerNode caseNodeAugmentationInChoiceInContainer() { - return cont1Node(choc11Node(augmentC11AWithLf15_11AndLf15_12Node(), lf13Node(), augmentC11AWithLf15_21Node())); + return cont1Node(choc11Node(lf15_11Node(), lf15_12Node(), lf13Node(), lf15_21Node())); } public static ContainerNode caseNodeExternalAugmentationInChoiceInContainer() { - return cont1Node(choc11Node(lf13Node(), augmentC11AWithLf15_11AndLf15_12Node(), - externalAugmentC11AWithLf15_11AndLf15_12Node())); + return cont1Node(choc11Node(lf13Node(), lf15_11Node(), lf15_12Node(), + lf15_11NodeExternal(), lf15_12NodeExternal())); } public static ContainerNode choiceNodeAugmentationInContainer() { @@ -275,11 +239,8 @@ public final class TestingNormalizedNodeStructuresCreator { } public static ContainerNode emptyContainerInContainer() { - return cont1Node(Builders.augmentationBuilder() - .withNodeIdentifier(new AugmentationIdentifier(ImmutableSet.of(QName.create(COMPLEX_JSON, "cont11")))) - .withChild(Builders.containerBuilder() - .withNodeIdentifier(new NodeIdentifier(QName.create(COMPLEX_JSON, "cont11"))) - .build()) - .build()); + return cont1Node(Builders.containerBuilder() + .withNodeIdentifier(new NodeIdentifier(QName.create(COMPLEX_JSON, "cont11"))) + .build()); } } diff --git a/codec/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/YT1411Test.java b/codec/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/YT1411Test.java index 3af9f5e284..0896462048 100644 --- a/codec/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/YT1411Test.java +++ b/codec/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/YT1411Test.java @@ -14,11 +14,9 @@ import static org.junit.Assert.assertEquals; import com.google.gson.stream.JsonReader; import java.io.StringReader; import java.util.Map; -import java.util.Set; import org.junit.Test; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; @@ -61,7 +59,6 @@ public class YT1411Test extends AbstractComplexJsonTest { final QName augmentChoice1 = QName.create(CONT_1, "augment-choice1"); assertEquals(YangInstanceIdentifier.create( CONT_1_NODEID, - AugmentationIdentifier.create(Set.of(augmentChoice1)), new NodeIdentifier(augmentChoice1), new NodeIdentifier(QName.create(CONT_1, "augment-choice2")), new NodeIdentifier(QName.create(CONT_1, "case11-choice-case-container"))), diff --git a/codec/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/SchemaAwareXMLStreamNormalizedNodeStreamWriter.java b/codec/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/SchemaAwareXMLStreamNormalizedNodeStreamWriter.java index 7749dec790..94ed17f369 100644 --- a/codec/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/SchemaAwareXMLStreamNormalizedNodeStreamWriter.java +++ b/codec/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/SchemaAwareXMLStreamNormalizedNodeStreamWriter.java @@ -19,7 +19,6 @@ import javax.xml.transform.dom.DOMSource; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.rfc7952.model.api.AnnotationSchemaNode; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; @@ -129,11 +128,6 @@ final class SchemaAwareXMLStreamNormalizedNodeStreamWriter tracker.startChoiceNode(name); } - @Override - public void startAugmentationNode(final AugmentationIdentifier identifier) { - tracker.startAugmentationNode(identifier); - } - @Override public boolean startAnyxmlNode(final NodeIdentifier name, final Class objectModel) throws IOException { if (DOMSource.class.isAssignableFrom(objectModel)) { diff --git a/codec/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/SchemalessXMLStreamNormalizedNodeStreamWriter.java b/codec/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/SchemalessXMLStreamNormalizedNodeStreamWriter.java index ff21106cd3..9609dc31c8 100644 --- a/codec/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/SchemalessXMLStreamNormalizedNodeStreamWriter.java +++ b/codec/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/SchemalessXMLStreamNormalizedNodeStreamWriter.java @@ -15,7 +15,6 @@ import java.util.Deque; import javax.xml.stream.XMLStreamWriter; import javax.xml.transform.dom.DOMSource; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; @@ -73,11 +72,6 @@ final class SchemalessXMLStreamNormalizedNodeStreamWriter extends XMLStreamNorma nodeTypeStack.push(NodeType.CHOICE); } - @Override - public void startAugmentationNode(final AugmentationIdentifier identifier) throws IOException { - nodeTypeStack.push(NodeType.AUGMENTATION); - } - @Override public boolean startAnyxmlNode(final NodeIdentifier name, final Class objectModel) throws IOException { if (DOMSource.class.isAssignableFrom(objectModel)) { diff --git a/codec/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/NormalizedNodeXmlTranslationTest.java b/codec/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/NormalizedNodeXmlTranslationTest.java index de57fabbf8..327f5fb4bb 100644 --- a/codec/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/NormalizedNodeXmlTranslationTest.java +++ b/codec/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/NormalizedNodeXmlTranslationTest.java @@ -10,19 +10,15 @@ package org.opendaylight.yangtools.yang.data.codec.xml; import static java.util.Objects.requireNonNull; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -import static org.opendaylight.yangtools.yang.data.impl.schema.Builders.augmentationBuilder; import static org.opendaylight.yangtools.yang.data.impl.schema.Builders.choiceBuilder; import static org.opendaylight.yangtools.yang.data.impl.schema.Builders.containerBuilder; import static org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes.leafNode; -import com.google.common.collect.ImmutableSet; import java.io.IOException; import java.io.InputStream; import java.io.StringWriter; import java.util.Arrays; import java.util.Collection; -import java.util.HashSet; -import java.util.Set; import javax.xml.stream.XMLOutputFactory; import javax.xml.stream.XMLStreamWriter; import javax.xml.transform.OutputKeys; @@ -46,7 +42,6 @@ import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.common.Revision; import org.opendaylight.yangtools.yang.common.Uint32; import org.opendaylight.yangtools.yang.common.XMLNamespace; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; @@ -99,24 +94,19 @@ public class NormalizedNodeXmlTranslationTest { final QName containerQName = QName.create(augmentChoice1QName, "case11-choice-case-container"); final QName leafQName = QName.create(augmentChoice1QName, "case11-choice-case-leaf"); - final AugmentationIdentifier aug1Id = new AugmentationIdentifier(ImmutableSet.of(augmentChoice1QName)); - final AugmentationIdentifier aug2Id = new AugmentationIdentifier(ImmutableSet.of(augmentChoice2QName)); final NodeIdentifier augmentChoice1Id = new NodeIdentifier(augmentChoice1QName); final NodeIdentifier augmentChoice2Id = new NodeIdentifier(augmentChoice2QName); final NodeIdentifier containerId = new NodeIdentifier(containerQName); return containerBuilder().withNodeIdentifier(container) - .withChild(augmentationBuilder().withNodeIdentifier(aug1Id) - .withChild(choiceBuilder().withNodeIdentifier(augmentChoice1Id) - .withChild(augmentationBuilder().withNodeIdentifier(aug2Id) - .withChild(choiceBuilder().withNodeIdentifier(augmentChoice2Id) - .withChild(containerBuilder().withNodeIdentifier(containerId) - .withChild(leafNode(leafQName, "leaf-value")) - .build()) - .build()) - .build()) - .build()) - .build()).build(); + .withChild(choiceBuilder().withNodeIdentifier(augmentChoice1Id) + .withChild(choiceBuilder().withNodeIdentifier(augmentChoice2Id) + .withChild(containerBuilder().withNodeIdentifier(containerId) + .withChild(leafNode(leafQName, "leaf-value")) + .build()) + .build()) + .build()) + .build(); } private static ContainerNode withAttributes() { @@ -181,38 +171,20 @@ public class NormalizedNodeXmlTranslationTest { Builders.leafBuilder().withNodeIdentifier(getNodeIdentifier("c3Leaf")).withValue("3").build()) .build()); - b.withChild(augmentationBuilder() - .withNodeIdentifier(getAugmentIdentifier("augLeaf")) - .withChild( - Builders.leafBuilder().withNodeIdentifier(getNodeIdentifier("augLeaf")).withValue("augment") - .build()).build()); + b.withChild(Builders.leafBuilder().withNodeIdentifier(getNodeIdentifier("augLeaf")).withValue("augment") + .build()); - b.withChild(augmentationBuilder() - .withNodeIdentifier(getAugmentIdentifier("ch")) - .withChild( - choiceBuilder() - .withNodeIdentifier(getNodeIdentifier("ch")) - .withChild( - Builders.leafBuilder().withNodeIdentifier(getNodeIdentifier("c1Leaf")) - .withValue("1").build()) - .withChild( - augmentationBuilder() - .withNodeIdentifier( - getAugmentIdentifier("c1Leaf_AnotherAugment", "deepChoice")) - .withChild( - Builders.leafBuilder() - .withNodeIdentifier( - getNodeIdentifier("c1Leaf_AnotherAugment")) - .withValue("1").build()) - .withChild( - choiceBuilder() - .withNodeIdentifier(getNodeIdentifier("deepChoice")) - .withChild( - Builders.leafBuilder() - .withNodeIdentifier( - getNodeIdentifier("deepLeafc1")) - .withValue("1").build()).build()) - .build()).build()).build()); + b.withChild(choiceBuilder() + .withNodeIdentifier(getNodeIdentifier("ch")) + .withChild(Builders.leafBuilder().withNodeIdentifier(getNodeIdentifier("c1Leaf")).withValue("1").build()) + .withChild(Builders.leafBuilder().withNodeIdentifier(getNodeIdentifier("c1Leaf_AnotherAugment")) + .withValue("1").build()) + .withChild(choiceBuilder() + .withNodeIdentifier(getNodeIdentifier("deepChoice")) + .withChild(Builders.leafBuilder() + .withNodeIdentifier(getNodeIdentifier("deepLeafc1")) + .withValue("1").build()).build()) + .build()); return b.build(); } @@ -221,16 +193,6 @@ public class NormalizedNodeXmlTranslationTest { return new NodeIdentifier(QName.create(MODULE, localName)); } - private static AugmentationIdentifier getAugmentIdentifier(final String... childNames) { - final Set qn = new HashSet<>(); - - for (final String childName : childNames) { - qn.add(getNodeIdentifier(childName).getNodeType()); - } - - return new AugmentationIdentifier(qn); - } - private final ContainerNode expectedNode; private final String xmlPath; diff --git a/codec/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/NormalizedNodesToXmlTest.java b/codec/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/NormalizedNodesToXmlTest.java index 28b6182e85..e08a039b6c 100644 --- a/codec/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/NormalizedNodesToXmlTest.java +++ b/codec/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/NormalizedNodesToXmlTest.java @@ -5,12 +5,10 @@ * 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.yang.data.codec.xml; import static java.util.Objects.requireNonNull; -import com.google.common.collect.ImmutableSet; import java.io.IOException; import java.io.InputStream; import java.io.StringWriter; @@ -43,11 +41,9 @@ import org.opendaylight.yangtools.util.xml.UntrustedXML; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.common.XMLNamespace; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; -import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode; import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.LeafNode; @@ -57,6 +53,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.SystemLeafSetNode; import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter; import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter; import org.opendaylight.yangtools.yang.data.impl.schema.Builders; +import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.w3c.dom.Document; @@ -172,84 +169,88 @@ public class NormalizedNodesToXmlTest { private NormalizedNode buildOuterContainerNode() { // my-container-1 - MapNode myKeyedListNode = Builders.mapBuilder().withNodeIdentifier(new NodeIdentifier(myKeyedList)) - .withChild(Builders.mapEntryBuilder().withNodeIdentifier( - NodeIdentifierWithPredicates.of(myKeyedList, myKeyLeaf, "listkeyvalue1")) - .withChild(Builders.leafBuilder().withNodeIdentifier(new NodeIdentifier(myLeafInList1)) - .withValue("listleafvalue1").build()) - .withChild(Builders.leafBuilder().withNodeIdentifier(new NodeIdentifier(myLeafInList2)) - .withValue("listleafvalue2").build()).build()) - .withChild(Builders.mapEntryBuilder().withNodeIdentifier( - NodeIdentifierWithPredicates.of(myKeyedList, myKeyLeaf, "listkeyvalue2")) - .withChild(Builders.leafBuilder().withNodeIdentifier(new NodeIdentifier(myLeafInList1)) - .withValue("listleafvalue12").build()) - .withChild(Builders.leafBuilder().withNodeIdentifier(new NodeIdentifier(myLeafInList2)) - .withValue("listleafvalue22").build()).build()).build(); - - LeafNode myLeaf1Node = Builders.leafBuilder().withNodeIdentifier(new NodeIdentifier(myLeaf1)) - .withValue("value1").build(); + MapNode myKeyedListNode = Builders.mapBuilder() + .withNodeIdentifier(new NodeIdentifier(myKeyedList)) + .withChild(Builders.mapEntryBuilder() + .withNodeIdentifier(NodeIdentifierWithPredicates.of(myKeyedList, myKeyLeaf, "listkeyvalue1")) + .withChild(ImmutableNodes.leafNode(myLeafInList1, "listleafvalue1")) + .withChild(ImmutableNodes.leafNode(myLeafInList2, "listleafvalue2")) + .build()) + .withChild(Builders.mapEntryBuilder() + .withNodeIdentifier(NodeIdentifierWithPredicates.of(myKeyedList, myKeyLeaf, "listkeyvalue2")) + .withChild(ImmutableNodes.leafNode(myLeafInList1, "listleafvalue12")) + .withChild(ImmutableNodes.leafNode(myLeafInList2, "listleafvalue22")) + .build()) + .build(); + + LeafNode myLeaf1Node = ImmutableNodes.leafNode(myLeaf1, "value1"); SystemLeafSetNode myLeafListNode = Builders.leafSetBuilder() - .withNodeIdentifier(new NodeIdentifier(myLeafList)) - .withChild(Builders.leafSetEntryBuilder().withNodeIdentifier( - new NodeWithValue<>(myLeafList, "lflvalue1")).withValue("lflvalue1").build()) - .withChild(Builders.leafSetEntryBuilder().withNodeIdentifier( - new NodeWithValue<>(myLeafList, "lflvalue2")).withValue("lflvalue2").build()).build(); - - ContainerNode myContainer1Node = Builders.containerBuilder().withNodeIdentifier( - new NodeIdentifier(myContainer1)) - .withChild(myKeyedListNode) - .withChild(myLeaf1Node) - .withChild(myLeafListNode).build(); + .withNodeIdentifier(new NodeIdentifier(myLeafList)) + .withChild(Builders.leafSetEntryBuilder() + .withNodeIdentifier(new NodeWithValue<>(myLeafList, "lflvalue1")) + .withValue("lflvalue1") + .build()) + .withChild(Builders.leafSetEntryBuilder() + .withNodeIdentifier(new NodeWithValue<>(myLeafList, "lflvalue2")) + .withValue("lflvalue2") + .build()) + .build(); + + ContainerNode myContainer1Node = Builders.containerBuilder() + .withNodeIdentifier(new NodeIdentifier(myContainer1)) + .withChild(myKeyedListNode) + .withChild(myLeaf1Node) + .withChild(myLeafListNode) + .build(); // my-container-2 - ContainerNode innerContainerNode = Builders.containerBuilder().withNodeIdentifier( - new NodeIdentifier(innerContainer)) - .withChild(Builders.leafBuilder().withNodeIdentifier(new NodeIdentifier(myLeaf2)) - .withValue("value2").build()).build(); + ContainerNode innerContainerNode = Builders.containerBuilder() + .withNodeIdentifier(new NodeIdentifier(innerContainer)) + .withChild(ImmutableNodes.leafNode(myLeaf2, "value2")) + .build(); - LeafNode myLeaf3Node = Builders.leafBuilder().withNodeIdentifier(new NodeIdentifier(myLeaf3)) - .withValue("value3").build(); + LeafNode myLeaf3Node = ImmutableNodes.leafNode(myLeaf3, "value3"); - ChoiceNode myChoiceNode = Builders.choiceBuilder().withNodeIdentifier(new NodeIdentifier(myChoice)) - .withChild(Builders.leafBuilder().withNodeIdentifier(new NodeIdentifier(myLeafInCase2)) - .withValue("case2value").build()).build(); + ChoiceNode myChoiceNode = Builders.choiceBuilder() + .withNodeIdentifier(new NodeIdentifier(myChoice)) + .withChild(ImmutableNodes.leafNode(myLeafInCase2, "case2value")) + .build(); - ContainerNode myContainer2Node = Builders.containerBuilder().withNodeIdentifier( - new NodeIdentifier(myContainer2)) - .withChild(innerContainerNode) - .withChild(myLeaf3Node) - .withChild(myChoiceNode).build(); + ContainerNode myContainer2Node = Builders.containerBuilder() + .withNodeIdentifier(new NodeIdentifier(myContainer2)) + .withChild(innerContainerNode) + .withChild(myLeaf3Node) + .withChild(myChoiceNode) + .build(); // my-container-3 Map keys = new HashMap<>(); keys.put(myFirstKeyLeaf, "listkeyvalue1"); keys.put(mySecondKeyLeaf, "listkeyvalue2"); - MapNode myDoublyKeyedListNode = Builders.mapBuilder().withNodeIdentifier(new NodeIdentifier(myDoublyKeyedList)) - .withChild(Builders.mapEntryBuilder().withNodeIdentifier( - NodeIdentifierWithPredicates.of(myDoublyKeyedList, keys)) - .withChild(Builders.leafBuilder().withNodeIdentifier( - new NodeIdentifier(myLeafInList3)).withValue("listleafvalue1").build()).build()) - .build(); - - AugmentationNode myDoublyKeyedListAugNode = Builders.augmentationBuilder().withNodeIdentifier( - new AugmentationIdentifier(ImmutableSet.of(myDoublyKeyedList))) - .withChild(myDoublyKeyedListNode).build(); - - ContainerNode myContainer3Node = Builders.containerBuilder().withNodeIdentifier( - new NodeIdentifier(myContainer3)) - .withChild(myDoublyKeyedListAugNode).build(); - - AugmentationNode myContainer3AugNode = Builders.augmentationBuilder().withNodeIdentifier( - new AugmentationIdentifier(ImmutableSet.of(myContainer3))) - .withChild(myContainer3Node).build(); - - ContainerNode outerContainerNode = Builders.containerBuilder().withNodeIdentifier( - new NodeIdentifier(outerContainer)) - .withChild(myContainer1Node) - .withChild(myContainer2Node) - .withChild(myContainer3AugNode).build(); + MapNode myDoublyKeyedListNode = Builders.mapBuilder() + .withNodeIdentifier(new NodeIdentifier(myDoublyKeyedList)) + .withChild(Builders.mapEntryBuilder() + .withNodeIdentifier(NodeIdentifierWithPredicates.of(myDoublyKeyedList, keys)) + .withChild(Builders.leafBuilder() + .withNodeIdentifier(new NodeIdentifier(myLeafInList3)) + .withValue("listleafvalue1") + .build()) + .build()) + .build(); + + ContainerNode myContainer3Node = Builders.containerBuilder() + .withNodeIdentifier(new NodeIdentifier(myContainer3)) + .withChild(myDoublyKeyedListNode).build(); + + + ContainerNode outerContainerNode = Builders.containerBuilder() + .withNodeIdentifier(new NodeIdentifier(outerContainer)) + .withChild(myContainer1Node) + .withChild(myContainer2Node) + .withChild(myContainer3Node) + .build(); return outerContainerNode; } diff --git a/codec/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/SchemalessXMLStreamNormalizedNodeStreamWriterTest.java b/codec/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/SchemalessXMLStreamNormalizedNodeStreamWriterTest.java index 04e6169b68..0496123550 100644 --- a/codec/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/SchemalessXMLStreamNormalizedNodeStreamWriterTest.java +++ b/codec/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/SchemalessXMLStreamNormalizedNodeStreamWriterTest.java @@ -5,12 +5,10 @@ * 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.yang.data.codec.xml; import static java.util.Objects.requireNonNull; -import com.google.common.collect.ImmutableSet; import java.io.IOException; import java.io.InputStream; import java.io.StringWriter; @@ -44,11 +42,9 @@ import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.common.Revision; import org.opendaylight.yangtools.yang.common.XMLNamespace; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; -import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode; import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.DOMSourceAnyxmlNode; @@ -285,23 +281,15 @@ public class SchemalessXMLStreamNormalizedNodeStreamWriterTest { new NodeIdentifier(myLeafInList3)).withValue("listleafvalue1").build()).build()) .build(); - AugmentationNode myDoublyKeyedListAugNode = Builders.augmentationBuilder().withNodeIdentifier( - new AugmentationIdentifier(ImmutableSet.of(myDoublyKeyedList))) - .withChild(myDoublyKeyedListNode).build(); - ContainerNode myContainer3Node = Builders.containerBuilder().withNodeIdentifier( new NodeIdentifier(myContainer3)) - .withChild(myDoublyKeyedListAugNode).build(); - - AugmentationNode myContainer3AugNode = Builders.augmentationBuilder().withNodeIdentifier( - new AugmentationIdentifier(ImmutableSet.of(myContainer3))) - .withChild(myContainer3Node).build(); + .withChild(myDoublyKeyedListNode).build(); ContainerNode outerContainerNode = Builders.containerBuilder().withNodeIdentifier( new NodeIdentifier(outerContainer)) .withChild(myContainer1Node) .withChild(myContainer2Node) - .withChild(myContainer3AugNode).build(); + .withChild(myContainer3Node).build(); return outerContainerNode; } diff --git a/codec/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlToNormalizedNodesTest.java b/codec/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlToNormalizedNodesTest.java index 8180a055bd..be2de3f964 100644 --- a/codec/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlToNormalizedNodesTest.java +++ b/codec/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlToNormalizedNodesTest.java @@ -13,7 +13,6 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThrows; -import com.google.common.collect.ImmutableSet; import java.io.IOException; import java.net.URISyntaxException; import java.util.HashMap; @@ -27,11 +26,9 @@ import org.opendaylight.yangtools.util.xml.UntrustedXML; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.common.XMLNamespace; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; -import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode; import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.LeafNode; @@ -284,23 +281,15 @@ public class XmlToNormalizedNodesTest { new NodeIdentifier(MY_LEAF_IN_LIST_3)).withValue("listleafvalue1").build()).build()) .build(); - AugmentationNode myDoublyKeyedListAugNode = Builders.augmentationBuilder().withNodeIdentifier( - new AugmentationIdentifier(ImmutableSet.of(MY_DOUBLY_KEYED_LIST))) - .withChild(myDoublyKeyedListNode).build(); - ContainerNode myContainer3Node = Builders.containerBuilder().withNodeIdentifier( new NodeIdentifier(MY_CONTAINER_3)) - .withChild(myDoublyKeyedListAugNode).build(); - - AugmentationNode myContainer3AugNode = Builders.augmentationBuilder().withNodeIdentifier( - new AugmentationIdentifier(ImmutableSet.of(MY_CONTAINER_3))) - .withChild(myContainer3Node).build(); + .withChild(myDoublyKeyedListNode).build(); ContainerNode outerContainerNode = Builders.containerBuilder().withNodeIdentifier( new NodeIdentifier(OUTER_CONTAINER)) .withChild(myContainer1Node) .withChild(myContainer2Node) - .withChild(myContainer3AugNode).build(); + .withChild(myContainer3Node).build(); return outerContainerNode; } diff --git a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/AIv1.java b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/AIv1.java deleted file mode 100644 index e1f4fea87b..0000000000 --- a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/AIv1.java +++ /dev/null @@ -1,61 +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.yang.data.api; - -import static java.util.Objects.requireNonNull; - -import com.google.common.collect.ImmutableSet; -import java.io.Externalizable; -import java.io.IOException; -import java.io.ObjectInput; -import java.io.ObjectOutput; -import java.io.Serial; -import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; - -/** - * Externalizable proxy for {@link AugmentationIdentifier}. - */ -final class AIv1 implements Externalizable { - @Serial - private static final long serialVersionUID = 1L; - - private AugmentationIdentifier ai; - - @SuppressWarnings("checkstyle:redundantModifier") - public AIv1() { - // For Externalizable - } - - AIv1(final AugmentationIdentifier ai) { - this.ai = requireNonNull(ai); - } - - @Override - public void writeExternal(final ObjectOutput out) throws IOException { - out.writeInt(ai.getPossibleChildNames().size()); - for (QName qname : ai.getPossibleChildNames()) { - qname.writeTo(out); - } - } - - @Override - public void readExternal(final ObjectInput in) throws IOException { - final int count = in.readInt(); - final QName[] qnames = new QName[count]; - for (int i = 0; i < count; ++i) { - qnames[i] = QName.readFrom(in); - } - ai = new AugmentationIdentifier(ImmutableSet.copyOf(qnames)); - } - - @Serial - private Object readResolve() { - return ai; - } -} 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 468322b1d5..0559b41db3 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 @@ -8,7 +8,6 @@ package org.opendaylight.yangtools.yang.data.api; import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Verify.verify; import static java.util.Objects.requireNonNull; import com.google.common.annotations.Beta; @@ -18,15 +17,12 @@ import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import com.google.common.collect.ImmutableList; 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.Serializable; import java.lang.invoke.MethodHandles; import java.lang.invoke.VarHandle; import java.lang.reflect.Array; import java.util.AbstractMap.SimpleImmutableEntry; -import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Deque; @@ -70,7 +66,6 @@ import org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode; * tree *
  • {@link NodeIdentifierWithPredicates} - Identifier of node (list item), which has cardinality {@code 0..n}
  • *
  • {@link NodeWithValue} - Identifier of instance {@code leaf} node or {@code leaf-list} node
  • - *
  • {@link AugmentationIdentifier} - Identifier of instance of {@code augmentation} node
  • * * * @see RFC6020 @@ -449,12 +444,11 @@ public abstract sealed class YangInstanceIdentifier implements HierarchicalIdent *
      *
    • {@link NodeIdentifier} - Identifier of container or leaf *
    • {@link NodeIdentifierWithPredicates} - Identifier of list entries, which have key defined - *
    • {@link AugmentationIdentifier} - Identifier of augmentation *
    • {@link NodeWithValue} - Identifier of leaf-list entry *
    */ public sealed interface PathArgument extends Comparable, Immutable, Serializable - permits AbstractPathArgument, AugmentationIdentifier { + permits AbstractPathArgument { /** * Returns unique QName of data node as defined in YANG Schema, if available. * @@ -881,148 +875,6 @@ public abstract sealed class YangInstanceIdentifier implements HierarchicalIdent } } - /** - * Composite path argument identifying a {@link org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode} - * node in particular subtree. - * - *

    - * Augmentation is uniquely identified by set of all possible child nodes. - * This is possible - * to identify instance of augmentation, - * since RFC6020 states that augment that augment - * statement must not add multiple nodes from same namespace - * / module to the target node. - * - * @see RFC6020 - */ - public static final class AugmentationIdentifier implements PathArgument { - private static final long serialVersionUID = -8122335594681936939L; - - private static final LoadingCache, AugmentationIdentifier> CACHE = CacheBuilder.newBuilder() - .weakValues().build(new CacheLoader, AugmentationIdentifier>() { - @Override - public AugmentationIdentifier load(final ImmutableSet key) { - return new AugmentationIdentifier(key); - } - }); - - private final @NonNull ImmutableSet childNames; - - @Override - public QName getNodeType() { - // This should rather throw exception than return always null - throw new UnsupportedOperationException("Augmentation node has no QName"); - } - - /** - * Construct new augmentation identifier using supplied set of possible - * child nodes. - * - * @param childNames - * Set of possible child nodes. - */ - public AugmentationIdentifier(final ImmutableSet childNames) { - this.childNames = requireNonNull(childNames); - } - - /** - * Construct new augmentation identifier using supplied set of possible - * child nodes. - * - * @param childNames - * Set of possible child nodes. - */ - public AugmentationIdentifier(final Set childNames) { - this.childNames = ImmutableSet.copyOf(childNames); - } - - /** - * Return an AugmentationIdentifier for a particular set of QNames. Unlike the constructor, this factory method - * uses a global instance cache, resulting in object reuse for equal inputs. - * - * @param childNames Set of possible child nodes - * @return An {@link AugmentationIdentifier} - */ - public static @NonNull AugmentationIdentifier create(final ImmutableSet childNames) { - return CACHE.getUnchecked(childNames); - } - - /** - * Return an AugmentationIdentifier for a particular set of QNames. Unlike the constructor, this factory method - * uses a global instance cache, resulting in object reuse for equal inputs. - * - * @param childNames Set of possible child nodes - * @return An {@link AugmentationIdentifier} - */ - public static @NonNull AugmentationIdentifier create(final Set childNames) { - final AugmentationIdentifier existing = CACHE.getIfPresent(childNames); - return existing != null ? existing : create(ImmutableSet.copyOf(childNames)); - } - - /** - * Returns set of all possible child nodes. - * - * @return set of all possible child nodes. - */ - public @NonNull Set getPossibleChildNames() { - return childNames; - } - - @Override - public String toString() { - return "AugmentationIdentifier{" + "childNames=" + childNames + '}'; - } - - @Override - public String toRelativeString(final PathArgument previous) { - return toString(); - } - - @Override - public boolean equals(final Object obj) { - return this == obj || obj instanceof AugmentationIdentifier other && childNames.equals(other.childNames); - } - - @Override - public int hashCode() { - return childNames.hashCode(); - } - - @Override - @SuppressWarnings("checkstyle:parameterName") - public int compareTo(final PathArgument o) { - if (!(o instanceof AugmentationIdentifier other)) { - return -1; - } - Set otherChildNames = other.getPossibleChildNames(); - int thisSize = childNames.size(); - int otherSize = otherChildNames.size(); - if (thisSize == otherSize) { - // Quick Set-based comparison - if (childNames.equals(otherChildNames)) { - return 0; - } - - // We already know the sets are not equal, but have equal size, hence the sets differ in their elements, - // but potentially share a common set of elements. The most consistent way of comparing them is using - // total ordering defined by QName's compareTo. Hence convert both sets to lists ordered - // by QName.compareTo() and decide on the first differing element. - final List diff = new ArrayList<>(Sets.symmetricDifference(childNames, otherChildNames)); - verify(!diff.isEmpty(), "Augmentation identifiers %s and %s report no difference", this, o); - diff.sort(QName::compareTo); - return childNames.contains(diff.get(0)) ? -1 : 1; - } else if (thisSize < otherSize) { - return 1; - } else { - return -1; - } - } - - private Object writeReplace() { - return new AIv1(this); - } - } - /** * Fluent Builder of Instance Identifier instances. */ diff --git a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/AugmentationNode.java b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/AugmentationNode.java deleted file mode 100644 index 46c23cce55..0000000000 --- a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/AugmentationNode.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (c) 2014 Cisco Systems, Inc. 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.yang.data.api.schema; - -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; - -/** - * Data instance of augment associated with parent node. - * - *

    - * Augmentation is addition of subtree defined by other external YANG Model and is schema for subtree is described - * by an instance of {@link AugmentationSchemaNode} associated with parent node of this node. - * - *

    - * Augmentation node MUST NOT be direct child of other augmentation node. - */ -public interface AugmentationNode extends DataContainerNode, DataContainerChild, MixinNode { - @Override - default Class contract() { - return AugmentationNode.class; - } - - /** - * Gets identifier of augmentation node. Returned identifier of augmentation node contains all possible - * direct child QNames. - * - *

    - * This is sufficient to identify instance of augmentation, since RFC6020 states that augment - * that augment statement must not add multiple nodes from same namespace / module to the target node. - * - * @return Identifier which uniquely identifies augmentation in particular subtree. - */ - @Override - AugmentationIdentifier getIdentifier(); -} diff --git a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/DataContainerChild.java b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/DataContainerChild.java index 3d65a090a4..ac5565fe2c 100644 --- a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/DataContainerChild.java +++ b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/DataContainerChild.java @@ -14,7 +14,6 @@ package org.opendaylight.yangtools.yang.data.api.schema; * This interface should not be implemented directly, but rather using one of its subinterfaces: * *

      - *
    • {@link AugmentationNode}
    • *
    • {@link ChoiceNode}
    • *
    • {@link ContainerNode}
    • *
    • {@link ForeignDataNode}
    • diff --git a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/DataContainerNode.java b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/DataContainerNode.java index 9ddf9a60ca..6fc60cffc9 100644 --- a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/DataContainerNode.java +++ b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/DataContainerNode.java @@ -20,7 +20,6 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgum *

      Implementation notes

      * This interface should not be implemented directly, but rather implementing one of it's subclasses *
        - *
      • {@link AugmentationNode}
      • *
      • {@link ChoiceNode}
      • *
      • {@link ContainerNode}
      • *
      • {@link MapEntryNode} and its specializations
      • diff --git a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/NormalizedNodes.java b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/NormalizedNodes.java index 3a3a0befaf..82b2611262 100644 --- a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/NormalizedNodes.java +++ b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/NormalizedNodes.java @@ -18,7 +18,6 @@ import java.util.Optional; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; @@ -141,12 +140,9 @@ public final class NormalizedNodes { } private static void appendPathArgument(final StringBuilder sb, final PathArgument arg) { + sb.append(arg.getNodeType().getLocalName()); if (arg instanceof NodeIdentifierWithPredicates nip) { - sb.append(arg.getNodeType().getLocalName()).append(nip.values()); - } else if (arg instanceof AugmentationIdentifier) { - sb.append("augmentation"); - } else { - sb.append(arg.getNodeType().getLocalName()); + sb.append(nip.values()); } } } diff --git a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/package-info.java b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/package-info.java index 17e633ba06..0844c86a3e 100644 --- a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/package-info.java +++ b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/package-info.java @@ -42,8 +42,6 @@ * which represents a leaf, which occurs mostly once per parent node, but * possible values could have different types. Maps to choice statement. * Types maps to the case statements for that choice. - *
      • {@link org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode} - * - Node which represents a leaf, which occurs mostly once per parent node.
      • *
      * *
    • {@link org.opendaylight.yangtools.yang.data.api.schema.LeafNode} - Node @@ -81,13 +79,11 @@ * {@link org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier} * | {@link org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates} * | {@link org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue} - * | {@link org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier} * * TreeRoot = {@link org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode} * {@link org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode} = * ( {@link org.opendaylight.yangtools.yang.data.api.schema.LeafNode} * | {@link org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode} - * | {@link org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode} * | {@link org.opendaylight.yangtools.yang.data.api.schema.MapNode} * | {@link org.opendaylight.yangtools.yang.data.api.schema.LeafSetNode})* * ContainerDataNode = @@ -96,9 +92,6 @@ * * {@link org.opendaylight.yangtools.yang.data.api.schema.LeafNode} = * {@link org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier} SimpleValue - * {@link org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode} = - * {@link org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier} - * {@link org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode} * {@link org.opendaylight.yangtools.yang.data.api.schema.MapNode} = * {@link org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier} * {@link org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode} @@ -148,11 +141,6 @@ *
    • *
    * - *
  • (0..n) AugmentationNode - *
      - *
    • (Same as DataContainerNode)
    • - *
    - *
  • * * * @@ -171,6 +159,5 @@ * allows for more efficient implementations. If such ordering is required by * clients for serialization / debugability it SHOULD be done externally in * code using these interfaces. - * */ package org.opendaylight.yangtools.yang.data.api.schema; diff --git a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/AbstractIndentingNormalizedNodeStreamWriter.java b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/AbstractIndentingNormalizedNodeStreamWriter.java index ea6e9d365c..483d360658 100644 --- a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/AbstractIndentingNormalizedNodeStreamWriter.java +++ b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/AbstractIndentingNormalizedNodeStreamWriter.java @@ -13,7 +13,6 @@ import java.util.ArrayDeque; import java.util.Deque; import javax.xml.transform.dom.DOMSource; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; @@ -115,14 +114,6 @@ abstract class AbstractIndentingNormalizedNodeStreamWriter implements Normalized abstract void enterChoiceNode(NodeIdentifier name, String indent); - @Override - public final void startAugmentationNode(final AugmentationIdentifier identifier) { - enterAugmentationNode(identifier, ind()); - incIndent(); - } - - abstract void enterAugmentationNode(AugmentationIdentifier identifier, String indent); - @Override public final void startLeafSetEntryNode(final NodeWithValue name) { enterLeafSetEntryNode(name, ind()); diff --git a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/FormattingNormalizedNodeStreamWriter.java b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/FormattingNormalizedNodeStreamWriter.java index 94cc7f5e34..d8c5dbf069 100644 --- a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/FormattingNormalizedNodeStreamWriter.java +++ b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/FormattingNormalizedNodeStreamWriter.java @@ -11,7 +11,6 @@ import static com.google.common.base.Preconditions.checkState; import com.google.common.annotations.Beta; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; @@ -89,11 +88,6 @@ public final class FormattingNormalizedNodeStreamWriter extends AbstractIndentin sb.append(indent).append(name).append("(choice)\n"); } - @Override - void enterAugmentationNode(final AugmentationIdentifier identifier, final String indent) { - sb.append(indent).append(identifier).append("(augmentation)\n"); - } - @Override void enterLeafSetEntryNode(final NodeWithValue name, final String indent) { sb.append(indent).append(name.getNodeType()).append("(entry)\n"); diff --git a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/ForwardingNormalizedNodeStreamWriter.java b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/ForwardingNormalizedNodeStreamWriter.java index 9481500ddd..6ff57c96f7 100644 --- a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/ForwardingNormalizedNodeStreamWriter.java +++ b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/ForwardingNormalizedNodeStreamWriter.java @@ -12,7 +12,6 @@ import java.io.IOException; import java.util.Collection; import javax.xml.transform.dom.DOMSource; import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; @@ -88,11 +87,6 @@ public abstract class ForwardingNormalizedNodeStreamWriter extends ForwardingObj delegate().startChoiceNode(name, childSizeHint); } - @Override - public void startAugmentationNode(final AugmentationIdentifier identifier) throws IOException { - delegate().startAugmentationNode(identifier); - } - @Override public boolean startAnyxmlNode(final NodeIdentifier name, final Class objectModel) throws IOException { return delegate().startAnyxmlNode(name, objectModel); diff --git a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/LoggingNormalizedNodeStreamWriter.java b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/LoggingNormalizedNodeStreamWriter.java index 4a5a9e89b9..e24428975f 100644 --- a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/LoggingNormalizedNodeStreamWriter.java +++ b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/LoggingNormalizedNodeStreamWriter.java @@ -9,7 +9,6 @@ package org.opendaylight.yangtools.yang.data.api.schema.stream; import com.google.common.annotations.Beta; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; @@ -76,11 +75,6 @@ public final class LoggingNormalizedNodeStreamWriter extends AbstractIndentingNo LOG.debug("{}{}(choice)", indent, name); } - @Override - void enterAugmentationNode(final AugmentationIdentifier identifier, final String indent) { - LOG.debug("{}{}(augmentation)", indent, identifier); - } - @Override void enterLeafSetEntryNode(final NodeWithValue name, final String indent) { LOG.debug("{}{}(entry}", indent, name.getNodeType()); diff --git a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/NormalizedNodeStreamWriter.java b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/NormalizedNodeStreamWriter.java index eb31e4a4fd..de28184832 100644 --- a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/NormalizedNodeStreamWriter.java +++ b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/NormalizedNodeStreamWriter.java @@ -21,7 +21,6 @@ import org.opendaylight.yangtools.concepts.ExtensibleObject; import org.opendaylight.yangtools.concepts.ObjectExtension; import org.opendaylight.yangtools.rfc8528.model.api.MountPointLabel; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; @@ -68,10 +67,6 @@ import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; *
  • {@code anyxml} - An anyxml node event is emitted using {@link #startAnyxmlNode(NodeIdentifier, Class)}.
  • * *
  • {@code choice} - Choice node event is emitted by {@link #startChoiceNode(NodeIdentifier, int)} event.
  • - * - *
  • {@code augment} - Represents augmentation, augmentation node is started by invoking - * {@link #startAugmentationNode(AugmentationIdentifier)}. - *
  • * * *

    Implementation notes

    @@ -166,7 +161,6 @@ public interface NormalizedNodeStreamWriter extends Closeable, Flushable, *
  • {@link #startLeafSet(NodeIdentifier, int)}
  • *
  • {@link #startMapNode(NodeIdentifier, int)}
  • *
  • {@link #startUnkeyedList(NodeIdentifier, int)}
  • - *
  • {@link #startAugmentationNode(AugmentationIdentifier)}
  • * * * @param name name of node as defined in schema, namespace and revision are derived from parent node. @@ -206,7 +200,6 @@ public interface NormalizedNodeStreamWriter extends Closeable, Flushable, *
  • {@link #startLeafSet(NodeIdentifier, int)}
  • *
  • {@link #startMapNode(NodeIdentifier, int)}
  • *
  • {@link #startUnkeyedList(NodeIdentifier, int)}
  • - *
  • {@link #startAugmentationNode(AugmentationIdentifier)}
  • * * * @param name Identifier of node @@ -244,7 +237,6 @@ public interface NormalizedNodeStreamWriter extends Closeable, Flushable, *
  • {@link #startLeafSet(NodeIdentifier, int)}
  • *
  • {@link #startMapNode(NodeIdentifier, int)}
  • *
  • {@link #startUnkeyedList(NodeIdentifier, int)}
  • - *
  • {@link #startAugmentationNode(AugmentationIdentifier)}
  • * * * @param identifier QName to value pairs of keys of map entry node. @@ -289,24 +281,6 @@ public interface NormalizedNodeStreamWriter extends Closeable, Flushable, */ void startChoiceNode(NodeIdentifier name, int childSizeHint) throws IOException; - /** - * Emits start of augmentation node. Valid sub-events are: - *
      - *
    • {@link #startLeafNode}
    • - *
    • {@link #startContainerNode(NodeIdentifier, int)}
    • - *
    • {@link #startChoiceNode(NodeIdentifier, int)}
    • - *
    • {@link #startLeafSet(NodeIdentifier, int)}
    • - *
    • {@link #startMapNode(NodeIdentifier, int)}
    • - *
    • {@link #startUnkeyedList(NodeIdentifier, int)}
    • - *
    - * - * @param identifier Augmentation identifier - * @throws NullPointerException if {@code identifier} is null - * @throws IllegalArgumentException If augmentation is invalid in current context. - * @throws IOException if an underlying IO error occurs - */ - void startAugmentationNode(AugmentationIdentifier identifier) throws IOException; - /** * Start emitting a new anydata node identified by name. * diff --git a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/NormalizedNodeWriter.java b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/NormalizedNodeWriter.java index bcba032846..9f531bd42a 100644 --- a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/NormalizedNodeWriter.java +++ b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/NormalizedNodeWriter.java @@ -25,7 +25,6 @@ import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.AnydataNode; import org.opendaylight.yangtools.yang.data.api.schema.AnyxmlNode; -import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode; import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; @@ -206,9 +205,6 @@ public class NormalizedNodeWriter implements Closeable, Flushable { } else if (node instanceof ChoiceNode n) { writer.startChoiceNode(n.getIdentifier(), childSizeHint(n.body())); return writeChildren(n.body()); - } else if (node instanceof AugmentationNode n) { - writer.startAugmentationNode(n.getIdentifier()); - return writeChildren(n.body()); } else if (node instanceof UnkeyedListNode n) { writer.startUnkeyedList(n.getIdentifier(), childSizeHint(n.body())); return writeChildren(n.body()); @@ -253,15 +249,11 @@ public class NormalizedNodeWriter implements Closeable, Flushable { // Write all the rest return writeChildren(Iterables.filter(node.body(), input -> { - if (input instanceof AugmentationNode) { - return true; - } - if (!qnames.contains(input.getIdentifier().getNodeType())) { - return true; + if (qnames.contains(input.getIdentifier().getNodeType())) { + LOG.debug("Skipping key child {}", input); + return false; } - - LOG.debug("Skipping key child {}", input); - return false; + return true; })); } } diff --git a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/YangInstanceIdentifierWriter.java b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/YangInstanceIdentifierWriter.java index 4976ec62e3..5f50393793 100644 --- a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/YangInstanceIdentifierWriter.java +++ b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/YangInstanceIdentifierWriter.java @@ -9,10 +9,8 @@ package org.opendaylight.yangtools.yang.data.api.schema.stream; import static java.util.Objects.requireNonNull; -import com.google.common.collect.Collections2; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import java.io.IOException; import java.util.List; @@ -21,15 +19,12 @@ import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.util.ImmutableOffsetMap; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedAnydata; import org.opendaylight.yangtools.yang.model.api.AnydataSchemaNode; import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; -import org.opendaylight.yangtools.yang.model.api.AugmentationTarget; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.ContainerLike; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; @@ -37,7 +32,6 @@ import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; -import org.opendaylight.yangtools.yang.model.util.EffectiveAugmentationSchema; /** * Utility for emitting a {@link YangInstanceIdentifier} into a {@link NormalizedNodeStreamWriter} as a set of @@ -96,23 +90,7 @@ public final class YangInstanceIdentifierWriter implements AutoCloseable { } final var arg = it.next(); - if (arg instanceof AugmentationIdentifier augId) { - if (!(parent instanceof AugmentationTarget target)) { - throw new IOException(parent + " does not support augmentations, cannot resolve " + arg); - } - if (reuse) { - throw new IOException(parent + " is expecting a nested item, cannot resolve " + arg); - } - - if (target instanceof DataNodeContainer container) { - parent = new EffectiveAugmentationSchema(enterAugmentation(target, augId), container); - } else if (target instanceof ChoiceSchemaNode) { - throw new IOException(parent + " should not use addressing through " + arg); - } else { - throw new IOException("Unhandled parent " + target + " while resolving " + arg); - } - writer.startAugmentationNode(augId); - } else if (arg instanceof NodeWithValue nodeId) { + if (arg instanceof NodeWithValue nodeId) { if (!(parent instanceof LeafListSchemaNode)) { throw new IOException(parent + " does not support leaf-list entry " + arg); } @@ -254,22 +232,4 @@ public final class YangInstanceIdentifierWriter implements AutoCloseable { return NodeIdentifierWithPredicates.of(input.getNodeType(), ImmutableOffsetMap.orderedCopyOf(builder.build())); } - - private static AugmentationSchemaNode enterAugmentation(final AugmentationTarget target, - final AugmentationIdentifier id) throws IOException { - final var augs = target.getAvailableAugmentations(); - for (var augment : augs) { - if (id.equals(augmentationIdentifierFrom(augment))) { - return augment; - } - } - throw new IOException("Cannot find augmentation " + id + " in " + target + ", available: " - + Collections2.transform(augs, YangInstanceIdentifierWriter::augmentationIdentifierFrom)); - } - - // FIXME: duplicate of data.util.DataSchemaContextNode.augmentationIdentifierFrom() - static @NonNull AugmentationIdentifier augmentationIdentifierFrom(final AugmentationSchemaNode schema) { - return new AugmentationIdentifier( - schema.getChildNodes().stream().map(DataSchemaNode::getQName).collect(ImmutableSet.toImmutableSet())); - } } diff --git a/data/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/YangInstanceIdentifierTest.java b/data/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/YangInstanceIdentifierTest.java index e5a1cfb198..9db903f2fc 100644 --- a/data/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/YangInstanceIdentifierTest.java +++ b/data/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/YangInstanceIdentifierTest.java @@ -16,7 +16,6 @@ import static org.junit.jupiter.api.Assertions.assertSame; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; -import com.google.common.collect.ImmutableSet; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -29,7 +28,6 @@ import java.util.Map.Entry; import java.util.Optional; import org.junit.jupiter.api.Test; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; @@ -300,14 +298,12 @@ public class YangInstanceIdentifierTest { final NodeIdentifier node1 = new NodeIdentifier(NODENAME1); assertEquals(NODENAME1, node1.getNodeType()); final NodeIdentifier node2 = new NodeIdentifier(NODENAME1); - final AugmentationIdentifier node3 = new AugmentationIdentifier(ImmutableSet.of(NODENAME1, NODENAME2)); assertEquals(node1.hashCode(), node2.hashCode()); assertEquals(0, node1.compareTo(node2)); assertTrue(node1.compareTo(new NodeIdentifier(NODENAME3)) != 0); assertFalse(node1.equals(null)); - assertFalse(node1.equals(node3)); assertTrue(node1.equals(node1)); assertTrue(node1.equals(node2)); assertFalse(node1.equals(new NodeIdentifier(NODENAME3))); @@ -317,42 +313,6 @@ public class YangInstanceIdentifierTest { assertNotNull(node1.toString()); } - @Test - public void testAugmentationIdentifierNodeType() { - AugmentationIdentifier node1 = new AugmentationIdentifier(ImmutableSet.of(NODENAME1, NODENAME2)); - assertThrows(UnsupportedOperationException.class, () -> node1.getNodeType()); - } - - @Test - public void testAugmentationIdentifier() { - - final AugmentationIdentifier node1 = new AugmentationIdentifier(ImmutableSet.of(NODENAME1, NODENAME2)); - assertEquals(ImmutableSet.of(NODENAME1, NODENAME2), node1.getPossibleChildNames()); - final AugmentationIdentifier node2 = new AugmentationIdentifier(ImmutableSet.of(NODENAME2, NODENAME1)); - final AugmentationIdentifier node3 = new AugmentationIdentifier(ImmutableSet.of(NODENAME1, NODENAME3)); - final AugmentationIdentifier node4 = new AugmentationIdentifier(ImmutableSet.of(NODENAME1, NODENAME2, - NODENAME3)); - final NodeIdentifier node5 = new NodeIdentifier(NODENAME3); - - assertEquals(node1.hashCode(), node2.hashCode()); - - assertTrue(node1.equals(node1)); - assertTrue(node1.equals(node2)); - assertFalse(node1.equals(node3)); - assertFalse(node1.equals(new AugmentationIdentifier(ImmutableSet.of(NODENAME1)))); - assertFalse(node1.equals(new Object())); - - assertEquals(-1, node1.compareTo(node5)); - assertEquals(0, node1.compareTo(node2)); - assertEquals(0, node1.compareTo(node2)); - assertEquals(1, node1.compareTo(node4)); - assertEquals(-1, node4.compareTo(node1)); - - // for code coverage - assertNotNull(node1.toString()); - assertNotNull(node1.toRelativeString(node5)); - } - private static YangInstanceIdentifier serdes(final YangInstanceIdentifier id) throws IOException, ClassNotFoundException { final ByteArrayOutputStream bos = new ByteArrayOutputStream(); 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 48b0ed0fa8..4416aaf92b 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 @@ -14,7 +14,6 @@ import static org.mockito.Mockito.doCallRealMethod; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; -import com.google.common.collect.ImmutableSet; import java.util.List; import java.util.Optional; import org.junit.jupiter.api.Test; @@ -22,7 +21,6 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.junit.jupiter.MockitoExtension; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; @@ -114,15 +112,11 @@ public class NormalizedNodesTest { assertNotNull(stringTree); assertEquals("leaf-node str-value-1\n", stringTree); - final AugmentationNode mockedAugmentationNode = mock(AugmentationNode.class); final QName listQName = QName.create("test-ns", "2016-09-16", "list-node"); - final AugmentationIdentifier augNodeId = new AugmentationIdentifier(ImmutableSet.of(listQName)); - doReturn(augNodeId).when(mockedAugmentationNode).getIdentifier(); final SystemMapNode mockedMapNode = mock(SystemMapNode.class); final NodeIdentifier listNodeId = new NodeIdentifier(listQName); doReturn(listNodeId).when(mockedMapNode).getIdentifier(); - doReturn(List.of(mockedMapNode)).when(mockedAugmentationNode).body(); final MapEntryNode mockedMapEntryNode = mock(MapEntryNode.class); final NodeIdentifierWithPredicates listEntryNodeId = NodeIdentifierWithPredicates.of(listQName, @@ -132,14 +126,12 @@ public class NormalizedNodesTest { doReturn(List.of(mockedLeafNode)).when(mockedMapEntryNode).body(); - stringTree = NormalizedNodes.toStringTree(mockedAugmentationNode); + stringTree = NormalizedNodes.toStringTree(mockedMapNode); assertNotNull(stringTree); assertEquals(""" - augmentation { - list-node { - list-node[key-leaf-value] { - leaf-node str-value-1 - } + list-node { + list-node[key-leaf-value] { + leaf-node str-value-1 } } """, stringTree); diff --git a/data/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/schema/stream/NormalizedNodeWriterTest.java b/data/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/schema/stream/NormalizedNodeWriterTest.java index e5c5b20070..582c71e47f 100644 --- a/data/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/schema/stream/NormalizedNodeWriterTest.java +++ b/data/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/schema/stream/NormalizedNodeWriterTest.java @@ -28,7 +28,6 @@ import org.opendaylight.yangtools.yang.common.XMLNamespace; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; -import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode; import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.DOMSourceAnyxmlNode; @@ -97,8 +96,6 @@ public class NormalizedNodeWriterTest { assertNotNull(orderedNormalizedNodeWriter.write(mock(ChoiceNode.class))); - assertNotNull(orderedNormalizedNodeWriter.write(mock(AugmentationNode.class))); - final UnkeyedListNode mockedUnkeyedListNode = mock(UnkeyedListNode.class); final Set value = Set.of(mockedUnkeyedListEntryNode); doReturn(value).when(mockedUnkeyedListNode).body(); @@ -115,12 +112,8 @@ public class NormalizedNodeWriterTest { orderedNormalizedNodeWriter.flush(); orderedNormalizedNodeWriter.close(); - final NormalizedNodeWriter normalizedNodeWriter = NormalizedNodeWriter.forStreamWriter( - loggingNormalizedNodeStreamWriter, false); - - assertNotNull(normalizedNodeWriter.write(mockedMapEntryNode)); - - normalizedNodeWriter.flush(); - normalizedNodeWriter.close(); + try (var nnWriter = NormalizedNodeWriter.forStreamWriter(loggingNormalizedNodeStreamWriter, false)) { + assertNotNull(nnWriter.write(mockedMapEntryNode)); + } } } diff --git a/data/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/schema/stream/YT1433Test.java b/data/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/schema/stream/YT1433Test.java index 84a78d7a42..4ba1ae3ecf 100644 --- a/data/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/schema/stream/YT1433Test.java +++ b/data/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/schema/stream/YT1433Test.java @@ -10,12 +10,10 @@ package org.opendaylight.yangtools.yang.data.api.schema.stream; import static org.junit.jupiter.api.Assertions.assertEquals; import java.io.IOException; -import java.util.Set; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; @@ -36,9 +34,7 @@ public class YT1433Test { final YangInstanceIdentifier path = YangInstanceIdentifier.builder() .node(QName.create("foo", "foo")) - .node(AugmentationIdentifier.create(Set.of(bar))) .node(bar) - .node(AugmentationIdentifier.create(Set.of(baz))) .node(baz) .build(); @@ -50,12 +46,8 @@ public class YT1433Test { assertEquals(""" (foo)foo(container) - AugmentationIdentifier{childNames=[(foo)bar]}(augmentation) - (foo)bar(container) - AugmentationIdentifier{childNames=[(foo)baz]}(augmentation) - (foo)baz(container) - (end) - (end) + (foo)bar(container) + (foo)baz(container) (end) (end) (end) diff --git a/data/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/schema/stream/YangInstanceIdentifierWriterTest.java b/data/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/schema/stream/YangInstanceIdentifierWriterTest.java index 68bbf7ce39..28ac1a1f49 100644 --- a/data/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/schema/stream/YangInstanceIdentifierWriterTest.java +++ b/data/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/schema/stream/YangInstanceIdentifierWriterTest.java @@ -19,7 +19,6 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.junit.jupiter.MockitoExtension; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; @@ -77,7 +76,6 @@ public class YangInstanceIdentifierWriterTest { final YangInstanceIdentifier path = YangInstanceIdentifier.builder() .node(QName.create("test", "container-1")) - .node(AugmentationIdentifier.create(Set.of(augmented))) .node(augmented) .node(QName.create(augmented, "container-2")) .build(); @@ -90,13 +88,11 @@ public class YangInstanceIdentifierWriterTest { assertEquals(""" (test)container-1(container) - AugmentationIdentifier{childNames=[(augment-namespace)augmented-container]}(augmentation) - (augment-namespace)augmented-container(container) - (augment-namespace)container-2(container) - (test)payload-container(container) - (test)payload-leaf(leaf) - (String)=leaf-value - (end) + (augment-namespace)augmented-container(container) + (augment-namespace)container-2(container) + (test)payload-container(container) + (test)payload-leaf(leaf) + (String)=leaf-value (end) (end) (end) diff --git a/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/Builders.java b/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/Builders.java index 96d962eb9d..2063f1291a 100644 --- a/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/Builders.java +++ b/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/Builders.java @@ -8,12 +8,10 @@ package org.opendaylight.yangtools.yang.data.impl.schema; import javax.xml.transform.dom.DOMSource; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; import org.opendaylight.yangtools.yang.data.api.schema.AnydataNode; -import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode; import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.DOMSourceAnyxmlNode; @@ -32,7 +30,6 @@ import org.opendaylight.yangtools.yang.data.api.schema.builder.ListNodeBuilder; import org.opendaylight.yangtools.yang.data.api.schema.builder.NormalizedNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableAnyXmlNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableAnydataNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableAugmentationNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableChoiceNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafNodeBuilder; @@ -143,15 +140,6 @@ public final class Builders { return ImmutableMapNodeBuilder.create(sizeHint); } - public static DataContainerNodeBuilder augmentationBuilder() { - return ImmutableAugmentationNodeBuilder.create(); - } - - public static DataContainerNodeBuilder augmentationBuilder( - final int sizeHint) { - return ImmutableAugmentationNodeBuilder.create(sizeHint); - } - public static DataContainerNodeBuilder choiceBuilder() { return ImmutableChoiceNodeBuilder.create(); } diff --git a/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/ImmutableNormalizedNodeStreamWriter.java b/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/ImmutableNormalizedNodeStreamWriter.java index 80d18c2512..3ec51ae71a 100644 --- a/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/ImmutableNormalizedNodeStreamWriter.java +++ b/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/ImmutableNormalizedNodeStreamWriter.java @@ -16,7 +16,6 @@ import java.util.ArrayDeque; import java.util.Deque; import javax.xml.transform.dom.DOMSource; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; @@ -26,7 +25,6 @@ import org.opendaylight.yangtools.yang.data.api.schema.builder.DataContainerNode import org.opendaylight.yangtools.yang.data.api.schema.builder.NormalizedNodeBuilder; import org.opendaylight.yangtools.yang.data.api.schema.builder.NormalizedNodeContainerBuilder; import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableAugmentationNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafSetEntryNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafSetNodeBuilder; @@ -196,13 +194,6 @@ public class ImmutableNormalizedNodeStreamWriter implements NormalizedNodeStream enter(name, UNKNOWN_SIZE == childSizeHint ? Builders.choiceBuilder() : Builders.choiceBuilder(childSizeHint)); } - @Override - public void startAugmentationNode(final AugmentationIdentifier identifier) { - checkDataNodeContainer(); - checkArgument(!(current() instanceof ImmutableAugmentationNodeBuilder)); - enter(identifier, Builders.augmentationBuilder()); - } - @Override public void flush() { // no-op diff --git a/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/SchemaOrderedNormalizedNodeWriter.java b/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/SchemaOrderedNormalizedNodeWriter.java index fcc1420821..cde5ed4d49 100644 --- a/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/SchemaOrderedNormalizedNodeWriter.java +++ b/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/SchemaOrderedNormalizedNodeWriter.java @@ -15,7 +15,6 @@ import com.google.common.collect.Multimap; import java.io.IOException; import java.util.Collection; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode; import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter; @@ -195,17 +194,10 @@ public class SchemaOrderedNormalizedNodeWriter extends NormalizedNodeWriter { } private static void putChild(final Multimap qnameToNodes, final NormalizedNode child) { - if (child instanceof AugmentationNode augmentChild) { - for (DataContainerChild grandChild : augmentChild.body()) { - putChild(qnameToNodes, grandChild); - } - } else { - qnameToNodes.put(child.getIdentifier().getNodeType(), child); - } + qnameToNodes.put(child.getIdentifier().getNodeType(), child); } private final class SchemaNodeSetter implements AutoCloseable { - private final SchemaNode previousSchemaNode; /** diff --git a/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableAugmentationNodeBuilder.java b/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableAugmentationNodeBuilder.java deleted file mode 100644 index 76fb1d6716..0000000000 --- a/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableAugmentationNodeBuilder.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (c) 2013 Cisco Systems, Inc. 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.yang.data.impl.schema.builder.impl; - -import java.util.Map; -import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; -import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode; -import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; -import org.opendaylight.yangtools.yang.data.api.schema.builder.DataContainerNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.valid.DataValidationException; -import org.opendaylight.yangtools.yang.data.impl.schema.nodes.AbstractImmutableDataContainerNode; - -public class ImmutableAugmentationNodeBuilder - extends AbstractImmutableDataContainerNodeBuilder { - - protected ImmutableAugmentationNodeBuilder() { - } - - protected ImmutableAugmentationNodeBuilder(final int sizeHint) { - super(sizeHint); - } - - ImmutableAugmentationNodeBuilder(final ImmutableAugmentationNode node) { - super(node); - } - - public static @NonNull DataContainerNodeBuilder create() { - return new ImmutableAugmentationNodeBuilder(); - } - - public static @NonNull DataContainerNodeBuilder create( - final int sizeHint) { - return new ImmutableAugmentationNodeBuilder(sizeHint); - } - - public static @NonNull DataContainerNodeBuilder create( - final AugmentationNode node) { - if (!(node instanceof ImmutableAugmentationNode immutableNode)) { - throw new UnsupportedOperationException("Cannot initialize from class " + node.getClass()); - } - return new ImmutableAugmentationNodeBuilder(immutableNode); - } - - @Override - public DataContainerNodeBuilder withChild( - final DataContainerChild child) { - // Check nested augments - if (child instanceof AugmentationNode aug) { - final var myId = getNodeIdentifier(); - throw new DataValidationException(String.format( - "Unable to add: %s, as a child for: %s, Nested augmentations are not permitted", aug.getIdentifier(), - myId == null ? this : myId)); - } - - return super.withChild(child); - } - - @Override - public DataContainerNodeBuilder withoutChild(final PathArgument key) { - return super.withoutChild(key); - } - - @Override - public AugmentationNode build() { - return new ImmutableAugmentationNode(getNodeIdentifier(), buildValue()); - } - - private static final class ImmutableAugmentationNode - extends AbstractImmutableDataContainerNode - implements AugmentationNode { - - ImmutableAugmentationNode(final AugmentationIdentifier nodeIdentifier, - final Map children) { - super(children, nodeIdentifier); - } - - @Override - protected Class implementedType() { - return AugmentationNode.class; - } - } -} diff --git a/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableMapEntryNodeBuilder.java b/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableMapEntryNodeBuilder.java index 96c826736b..b84eb85b8b 100644 --- a/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableMapEntryNodeBuilder.java +++ b/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableMapEntryNodeBuilder.java @@ -13,7 +13,6 @@ import java.util.Map; import java.util.Map.Entry; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; @@ -72,9 +71,7 @@ public class ImmutableMapEntryNodeBuilder private static void putQName(final Map map, final DataContainerChild child) { // Augmentation nodes cannot be keys, and do not have to be present in childrenQNamesToPaths map final PathArgument identifier = child.getIdentifier(); - if (!(identifier instanceof AugmentationIdentifier)) { - map.put(identifier.getNodeType(), identifier); - } + map.put(identifier.getNodeType(), identifier); } @Override diff --git a/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/valid/DataNodeContainerValidator.java b/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/valid/DataNodeContainerValidator.java index f2d95a76c5..892cc4cfe5 100644 --- a/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/valid/DataNodeContainerValidator.java +++ b/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/valid/DataNodeContainerValidator.java @@ -12,12 +12,9 @@ import static java.util.Objects.requireNonNull; import java.util.HashSet; import java.util.Set; 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; import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; -import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode; import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; -import org.opendaylight.yangtools.yang.model.api.AugmentationTarget; import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; @@ -25,31 +22,20 @@ import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; * General validator for container like statements, e.g. container, list-entry, choice, augment */ public class DataNodeContainerValidator { - private final Set augments = new HashSet<>(); private final DataNodeContainer schema; private final Set childNodes; public DataNodeContainerValidator(final DataNodeContainer schema) { this.schema = requireNonNull(schema, "Schema was null"); childNodes = getChildNodes(schema); - - if (schema instanceof AugmentationTarget target) { - for (var augmentation : target.getAvailableAugmentations()) { - augments.add(DataSchemaContextNode.augmentationIdentifierFrom(augmentation)); - } - } } private boolean isKnownChild(final PathArgument child) { - if (child instanceof AugmentationIdentifier) { - return augments.contains(child); - } - return childNodes.contains(child.getNodeType()); } public void validateChild(final PathArgument child) { - DataValidationException.checkLegalChild(isKnownChild(child), child, schema, childNodes, augments); + DataValidationException.checkLegalChild(isKnownChild(child), child, schema, childNodes); } public DataContainerChild validateChild(final DataContainerChild child) { diff --git a/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/valid/DataValidationException.java b/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/valid/DataValidationException.java index 2e49ea1762..29c31e9656 100644 --- a/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/valid/DataValidationException.java +++ b/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/valid/DataValidationException.java @@ -12,7 +12,6 @@ import java.util.Map; import java.util.Objects; import java.util.Set; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; @@ -28,9 +27,9 @@ public class DataValidationException extends RuntimeException { } public static void checkLegalChild(final boolean isLegal, final PathArgument child, final DataNodeContainer schema, - final Set childNodes, final Set augments) { + final Set childNodes) { if (!isLegal) { - throw new IllegalChildException(child, schema, childNodes, augments); + throw new IllegalChildException(child, schema, childNodes); } } @@ -82,10 +81,10 @@ public class DataValidationException extends RuntimeException { private static final class IllegalChildException extends DataValidationException { private static final long serialVersionUID = 1L; - IllegalChildException(final PathArgument child, final DataNodeContainer schema, - final Set childNodes, final Set augments) { - super(String.format("Unknown child node: %s, does not belong to: %s as a direct child. " - + "Direct child nodes: %s, augmented child nodes: %s", child, schema, childNodes, augments)); + IllegalChildException(final PathArgument child, final DataNodeContainer schema, final Set childNodes) { + super(String.format( + "Unknown child node: %s, does not belong to: %s as a direct child. Direct child nodes: %s", + child, schema, childNodes)); } IllegalChildException(final PathArgument child, final ChoiceSchemaNode schema) { diff --git a/data/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/BuilderTest.java b/data/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/BuilderTest.java index 50492810e0..dfb2ae8bf2 100644 --- a/data/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/BuilderTest.java +++ b/data/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/BuilderTest.java @@ -38,7 +38,6 @@ import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListNode; import org.opendaylight.yangtools.yang.data.api.schema.UserLeafSetNode; import org.opendaylight.yangtools.yang.data.api.schema.UserMapNode; import org.opendaylight.yangtools.yang.data.api.schema.builder.CollectionNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableAugmentationNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableChoiceNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafSetEntryNodeBuilder; @@ -213,13 +212,6 @@ public class BuilderTest { assertEquals(choiceNodeCreated.getIdentifier(), choiceNode.getIdentifier()); } - - @Test - public void immutableAugmentationNodeBuilderExceptionTest() { - final var builder = ImmutableAugmentationNodeBuilder.create(1); - assertThrows(NullPointerException.class, builder::build); - } - @Test public void immutableContainerNodeBuilderExceptionTest() { final ContainerNode immutableContainerNode = ImmutableContainerNodeBuilder.create(1) diff --git a/data/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/ImmutableNormalizedNodeStreamWriterTest.java b/data/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/ImmutableNormalizedNodeStreamWriterTest.java index 7f687e0831..9d48b9fca4 100644 --- a/data/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/ImmutableNormalizedNodeStreamWriterTest.java +++ b/data/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/ImmutableNormalizedNodeStreamWriterTest.java @@ -5,13 +5,11 @@ * 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.yang.data.impl.schema; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -import com.google.common.collect.ImmutableSet; import java.io.IOException; import java.text.ParseException; import java.util.List; @@ -23,7 +21,6 @@ import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.common.Revision; import org.opendaylight.yangtools.yang.common.XMLNamespace; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; @@ -194,20 +191,14 @@ public class ImmutableNormalizedNodeStreamWriterTest { .withValue(anyxmlDomSource) .build()) .build()) - .withChild(Builders.augmentationBuilder() - .withNodeIdentifier(new AugmentationIdentifier(ImmutableSet.of(myContainer3))) - .withChild(Builders.containerBuilder() - .withNodeIdentifier(new NodeIdentifier(myContainer3)) - .withChild(Builders.augmentationBuilder() - .withNodeIdentifier(new AugmentationIdentifier(ImmutableSet.of(myDoublyKeyedList))) - .withChild(Builders.mapBuilder() - .withNodeIdentifier(new NodeIdentifier(myDoublyKeyedList)) - .withChild(Builders.mapEntryBuilder() - .withNodeIdentifier(NodeIdentifierWithPredicates.of(myDoublyKeyedList, - Map.of(myFirstKeyLeaf, "listkeyvalue1", mySecondKeyLeaf, "listkeyvalue2"))) - .withChild(ImmutableNodes.leafNode(myLeafInList3, "listleafvalue1")) - .build()) - .build()) + .withChild(Builders.containerBuilder() + .withNodeIdentifier(new NodeIdentifier(myContainer3)) + .withChild(Builders.mapBuilder() + .withNodeIdentifier(new NodeIdentifier(myDoublyKeyedList)) + .withChild(Builders.mapEntryBuilder() + .withNodeIdentifier(NodeIdentifierWithPredicates.of(myDoublyKeyedList, + Map.of(myFirstKeyLeaf, "listkeyvalue1", mySecondKeyLeaf, "listkeyvalue2"))) + .withChild(ImmutableNodes.leafNode(myLeafInList3, "listleafvalue1")) .build()) .build()) .build()) diff --git a/data/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/NormalizedDataBuilderTest.java b/data/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/NormalizedDataBuilderTest.java index 4601117fbb..c77fc1c049 100644 --- a/data/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/NormalizedDataBuilderTest.java +++ b/data/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/NormalizedDataBuilderTest.java @@ -7,21 +7,17 @@ */ package org.opendaylight.yangtools.yang.data.impl.schema; -import com.google.common.collect.ImmutableSet; import java.util.Collections; import org.junit.Test; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.XMLNamespace; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; -import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.LeafNode; import org.opendaylight.yangtools.yang.data.api.schema.LeafSetNode; import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; -import org.opendaylight.yangtools.yang.data.api.schema.MapNode; import org.opendaylight.yangtools.yang.data.api.schema.builder.DataContainerNodeBuilder; public class NormalizedDataBuilderTest { @@ -56,19 +52,14 @@ public class NormalizedDataBuilderTest { getNodeIdentifier("list").getNodeType(), Collections.singletonMap( getNodeIdentifier("uint32InList").getNodeType(), 1))).build(); - MapNode list = Builders.mapBuilder().withChild(listChild1).withNodeIdentifier(getNodeIdentifier("list")) - .build(); - builder.withChild(list); - - AugmentationNode augmentation = Builders - .augmentationBuilder() - .withNodeIdentifier( - new AugmentationIdentifier(ImmutableSet.of(getQName("augmentUint32")))) - .withChild( - Builders.leafBuilder().withNodeIdentifier(getNodeIdentifier("augmentUint32")) - .withValue(11).build()).build(); - - builder.withChild(augmentation); + builder + .withChild(Builders.mapBuilder() + .withNodeIdentifier(getNodeIdentifier("list")) + .withChild(listChild1) + .build()) + .withChild(Builders.leafBuilder() + .withNodeIdentifier(getNodeIdentifier("augmentUint32")) + .withValue(11).build()); // This works without schema (adding child from augment as a direct // child) diff --git a/data/yang-data-spi/src/main/java/org/opendaylight/yangtools/yang/data/spi/node/NormalizedNodePrettyTree.java b/data/yang-data-spi/src/main/java/org/opendaylight/yangtools/yang/data/spi/node/NormalizedNodePrettyTree.java index 013ca97e83..edbf6fca7d 100644 --- a/data/yang-data-spi/src/main/java/org/opendaylight/yangtools/yang/data/spi/node/NormalizedNodePrettyTree.java +++ b/data/yang-data-spi/src/main/java/org/opendaylight/yangtools/yang/data/spi/node/NormalizedNodePrettyTree.java @@ -21,7 +21,6 @@ import org.opendaylight.yangtools.concepts.PrettyTreeAware; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.common.Revision; -import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode; import org.opendaylight.yangtools.yang.data.api.schema.ForeignDataNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodeContainer; @@ -46,20 +45,10 @@ public final class NormalizedNodePrettyTree extends PrettyTree implements Immuta appendIndent(sb, depth); sb.append(simpleName.toLowerCase(Locale.ROOT).charAt(0)).append(simpleName, 1, simpleName.length()).append(' '); - final QNameModule currentNamespace; - if (node instanceof AugmentationNode) { - // Add identifier, but augmentations are special enough - currentNamespace = ((AugmentationNode) node).getIdentifier().getPossibleChildNames().iterator().next() - .getModule(); - if (appendNamespace(sb, parentNamespace, currentNamespace)) { - sb.append(' '); - } - } else { - final QName qname = node.getIdentifier().getNodeType(); - currentNamespace = qname.getModule(); - appendNamespace(sb, parentNamespace, currentNamespace); - sb.append(qname.getLocalName()).append(' '); - } + final QName qname = node.getIdentifier().getNodeType(); + final QNameModule currentNamespace = qname.getModule(); + appendNamespace(sb, parentNamespace, currentNamespace); + sb.append(qname.getLocalName()).append(' '); if (node instanceof NormalizedNodeContainer) { final NormalizedNodeContainer container = (NormalizedNodeContainer) node; diff --git a/data/yang-data-transform/src/main/java/org/opendaylight/yangtools/transform/QNameTransformingStreamWriter.java b/data/yang-data-transform/src/main/java/org/opendaylight/yangtools/transform/QNameTransformingStreamWriter.java index 7a838f515f..096d4aa58e 100644 --- a/data/yang-data-transform/src/main/java/org/opendaylight/yangtools/transform/QNameTransformingStreamWriter.java +++ b/data/yang-data-transform/src/main/java/org/opendaylight/yangtools/transform/QNameTransformingStreamWriter.java @@ -7,7 +7,6 @@ */ package org.opendaylight.yangtools.transform; -import com.google.common.collect.ImmutableSet; import java.io.IOException; import java.util.HashMap; import java.util.Map; @@ -15,7 +14,6 @@ import java.util.function.Function; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; @@ -138,11 +136,6 @@ public abstract class QNameTransformingStreamWriter extends ForwardingNormalized super.startChoiceNode(transform(name), childSizeHint); } - @Override - public void startAugmentationNode(final AugmentationIdentifier identifier) throws IOException { - super.startAugmentationNode(transform(identifier)); - } - @Override public boolean startAnyxmlNode(final NodeIdentifier name, final Class objectModel) throws IOException { return super.startAnyxmlNode(transform(name), objectModel); @@ -177,14 +170,6 @@ public abstract class QNameTransformingStreamWriter extends ForwardingNormalized return transformed == original ? name : new NodeWithValue<>(transformed, name.getValue()); } - private AugmentationIdentifier transform(final AugmentationIdentifier identifier) { - ImmutableSet.Builder builder = ImmutableSet.builder(); - for (QName original : identifier.getPossibleChildNames()) { - builder.add(transform(original)); - } - return new AugmentationIdentifier(builder.build()); - } - private NodeIdentifierWithPredicates transform(final NodeIdentifierWithPredicates identifier) { Map keyValues = new HashMap<>(); for (Map.Entry original : identifier.entrySet()) { diff --git a/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/AugmentationModificationStrategy.java b/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/AugmentationModificationStrategy.java deleted file mode 100644 index 42b0ea339e..0000000000 --- a/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/AugmentationModificationStrategy.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2014 Cisco Systems, Inc. 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.yang.data.tree.impl; - -import java.util.Optional; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; -import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode; -import org.opendaylight.yangtools.yang.data.impl.schema.Builders; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableAugmentationNodeBuilder; -import org.opendaylight.yangtools.yang.data.tree.api.DataTreeConfiguration; -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.data.util.DataSchemaContextNode; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; -import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; -import org.opendaylight.yangtools.yang.model.util.EffectiveAugmentationSchema; - -final class AugmentationModificationStrategy - extends DataNodeContainerModificationStrategy { - private static final NormalizedNodeContainerSupport SUPPORT = - new NormalizedNodeContainerSupport<>(AugmentationNode.class, ImmutableAugmentationNodeBuilder::create, - ImmutableAugmentationNodeBuilder::create); - - private final AugmentationNode emptyNode; - - AugmentationModificationStrategy(final AugmentationSchemaNode schema, final DataNodeContainer resolved, - final DataTreeConfiguration treeConfig) { - super(SUPPORT, new EffectiveAugmentationSchema(schema, resolved), treeConfig); - emptyNode = Builders.augmentationBuilder() - .withNodeIdentifier(DataSchemaContextNode.augmentationIdentifierFrom(schema)) - .build(); - } - - @Override - Optional apply(final ModifiedNode modification, final Optional storeMeta, - final Version version) { - return AutomaticLifecycleMixin.apply(super::apply, this::applyWrite, emptyNode, modification, storeMeta, - version); - } - - @Override - TreeNode defaultTreeNode() { - return defaultTreeNode(emptyNode); - } -} diff --git a/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/CaseEnforcer.java b/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/CaseEnforcer.java index 614779cc7a..3c88b78f67 100644 --- a/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/CaseEnforcer.java +++ b/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/CaseEnforcer.java @@ -11,18 +11,13 @@ import static java.util.Objects.requireNonNull; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap.Builder; -import com.google.common.collect.Sets; import java.util.Map.Entry; import java.util.Set; import org.opendaylight.yangtools.concepts.Immutable; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; 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.DataTreeConfiguration; import org.opendaylight.yangtools.yang.data.tree.api.TreeType; -import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; @@ -31,9 +26,8 @@ class CaseEnforcer implements Immutable { private final MandatoryLeafEnforcer enforcer; EnforcingMandatory(final ImmutableMap children, - final ImmutableMap augmentations, final MandatoryLeafEnforcer enforcer) { - super(children, augmentations); + super(children); this.enforcer = requireNonNull(enforcer); } @@ -44,40 +38,28 @@ class CaseEnforcer implements Immutable { } private final ImmutableMap children; - private final ImmutableMap augmentations; - CaseEnforcer(final ImmutableMap children, - final ImmutableMap augmentations) { + CaseEnforcer(final ImmutableMap children) { this.children = requireNonNull(children); - this.augmentations = requireNonNull(augmentations); } static CaseEnforcer forTree(final CaseSchemaNode schema, final DataTreeConfiguration treeConfig) { final TreeType type = treeConfig.getTreeType(); final Builder childrenBuilder = ImmutableMap.builder(); - final Builder augmentationsBuilder = ImmutableMap.builder(); if (SchemaAwareApplyOperation.belongsToTree(type, schema)) { for (final DataSchemaNode child : schema.getChildNodes()) { if (SchemaAwareApplyOperation.belongsToTree(type, child)) { childrenBuilder.put(NodeIdentifier.create(child.getQName()), child); } } - for (final AugmentationSchemaNode augment : schema.getAvailableAugmentations()) { - if (augment.getChildNodes().stream() - .anyMatch(child -> SchemaAwareApplyOperation.belongsToTree(type, child))) { - augmentationsBuilder.put(DataSchemaContextNode.augmentationIdentifierFrom(augment), augment); - } - } } final ImmutableMap children = childrenBuilder.build(); if (children.isEmpty()) { return null; } - final ImmutableMap augmentations = augmentationsBuilder.build(); final var enforcer = MandatoryLeafEnforcer.forContainer(schema, treeConfig); - return enforcer != null ? new EnforcingMandatory(children, augmentations, enforcer) - : new CaseEnforcer(children, augmentations); + return enforcer != null ? new EnforcingMandatory(children, enforcer) : new CaseEnforcer(children); } final Set> getChildEntries() { @@ -88,18 +70,6 @@ class CaseEnforcer implements Immutable { return children.keySet(); } - final Set> getAugmentationEntries() { - return augmentations.entrySet(); - } - - final Set getAugmentationIdentifiers() { - return augmentations.keySet(); - } - - final Set getAllChildIdentifiers() { - return Sets.union(children.keySet(), augmentations.keySet()); - } - void enforceOnTreeNode(final NormalizedNode normalizedNode) { // Default is no-op } diff --git a/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/ChoiceModificationStrategy.java b/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/ChoiceModificationStrategy.java index 7de1029c4f..f4749555e7 100644 --- a/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/ChoiceModificationStrategy.java +++ b/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/ChoiceModificationStrategy.java @@ -22,7 +22,6 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Optional; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; 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.ChoiceNode; @@ -35,7 +34,6 @@ import org.opendaylight.yangtools.yang.data.tree.api.DataTreeConfiguration; import org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.Visible; 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.AugmentationSchemaNode; import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; @@ -71,11 +69,6 @@ final class ChoiceModificationStrategy extends Visible { childBuilder.put(entry.getKey(), childOper); enforcerBuilder.put(entry.getKey(), enforcer); } - for (final Entry e - : enforcer.getAugmentationEntries()) { - childBuilder.put(e.getKey(), new AugmentationModificationStrategy(e.getValue(), caze, treeConfig)); - enforcerBuilder.put(e.getKey(), enforcer); - } } } childNodes = childBuilder.build(); @@ -127,7 +120,7 @@ final class ChoiceModificationStrategy extends Visible { // Make sure no leaves from other cases are present for (final CaseEnforcer other : verifyNotNull(exclusions.get(enforcer))) { - for (final PathArgument id : other.getAllChildIdentifiers()) { + for (final PathArgument id : other.getChildIdentifiers()) { final Optional maybeChild = NormalizedNodes.getDirectChild(normalizedNode, id); checkArgument(!maybeChild.isPresent(), "Child %s (from case %s) implies non-presence of child %s (from case %s), which is %s", diff --git a/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/DataNodeContainerModificationStrategy.java b/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/DataNodeContainerModificationStrategy.java index ac76ba0992..ac653baf23 100644 --- a/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/DataNodeContainerModificationStrategy.java +++ b/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/DataNodeContainerModificationStrategy.java @@ -14,11 +14,9 @@ import java.lang.invoke.MethodHandles; import java.lang.invoke.VarHandle; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.tree.api.DataTreeConfiguration; import org.opendaylight.yangtools.yang.data.tree.impl.AbstractNodeContainerModificationStrategy.Visible; -import org.opendaylight.yangtools.yang.model.api.AugmentationTarget; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.DocumentedNode.WithStatus; import org.slf4j.Logger; @@ -68,10 +66,6 @@ class DataNodeContainerModificationStrategy augSubtreePath = parentId.getPathArguments(); - // in case of augmented choice-case the pathArguments might be empty - final YangInstanceIdentifier legacyPath = !augSubtreePath.isEmpty() - ? YangInstanceIdentifier.create(augSubtreePath.subList(1, augSubtreePath.size())) : null; - return new MandatoryDescendant(parentId.node(childId).toOptimized(), legacyPath); - } - - return new MandatoryDescendant(parentId.node(childId).toOptimized(), null); + final DataNodeContainer parentSchema, final DataSchemaNode childSchema) { + return new MandatoryDescendant(parentId.node(NodeIdentifier.create(childSchema.getQName())).toOptimized(), + null); } void enforceOnData(final NormalizedNode data) { diff --git a/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/MandatoryLeafEnforcer.java b/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/MandatoryLeafEnforcer.java index 398d07f110..3ab1934b15 100644 --- a/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/MandatoryLeafEnforcer.java +++ b/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/MandatoryLeafEnforcer.java @@ -8,7 +8,6 @@ package org.opendaylight.yangtools.yang.data.tree.impl; import static java.util.Objects.requireNonNull; -import static org.opendaylight.yangtools.yang.data.tree.impl.MandatoryDescendant.getAugIdentifierOfChild; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList.Builder; @@ -20,10 +19,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.tree.api.DataTreeConfiguration; import org.opendaylight.yangtools.yang.data.tree.api.TreeType; import org.opendaylight.yangtools.yang.data.tree.impl.node.TreeNode; -import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; -import org.opendaylight.yangtools.yang.model.api.CopyableNode; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.ElementCountConstraintAware; @@ -48,8 +44,7 @@ final class MandatoryLeafEnforcer implements Immutable { } final var builder = ImmutableList.builder(); - final var isAugmentingNode = schema instanceof CopyableNode && ((CopyableNode) schema).isAugmenting(); - findMandatoryNodes(builder, YangInstanceIdentifier.empty(), schema, treeConfig.getTreeType(), isAugmentingNode); + findMandatoryNodes(builder, YangInstanceIdentifier.empty(), schema, treeConfig.getTreeType()); final var mandatoryNodes = builder.build(); return mandatoryNodes.isEmpty() ? null : new MandatoryLeafEnforcer(mandatoryNodes); } @@ -62,34 +57,18 @@ final class MandatoryLeafEnforcer implements Immutable { enforceOnData(tree.getData()); } - private static void findMandatoryNodes(final Builder builder, - final YangInstanceIdentifier id, final DataNodeContainer schema, final TreeType type, - final boolean augmentedSubtree) { + private static void findMandatoryNodes(final Builder builder, final YangInstanceIdentifier id, + final DataNodeContainer schema, final TreeType type) { for (final DataSchemaNode child : schema.getChildNodes()) { if (SchemaAwareApplyOperation.belongsToTree(type, child)) { if (child instanceof ContainerSchemaNode container) { if (!container.isPresenceContainer()) { - if (!augmentedSubtree) { - // this container is not part of augmented subtree. - final boolean parentSchemaAugmenting = schema instanceof CopyableNode copyable - && copyable.isAugmenting(); - if (container.isAugmenting() && !parentSchemaAugmenting) { - // the container is augmenting, but the parent schema is not. Meaning this is the root - // of the augmentation (the augmented subtree starts here). The container has to be - // represented by AugmentationID and the whole subtree needs to be based on it. - final AugmentationSchemaNode aug = getAugIdentifierOfChild(schema, child); - findMandatoryNodes(builder, id.node(DataSchemaContextNode - .augmentationIdentifierFrom(aug)).node(NodeIdentifier.create(container.getQName())), - container, type, true); - continue; - } - } // the container is either: // - not in an augmented subtree and not augmenting // - in an augmented subtree // in both cases just append the NodeID to the ongoing ID and continue the search. - findMandatoryNodes(builder, id.node(NodeIdentifier.create(container.getQName())), - container, type, augmentedSubtree); + findMandatoryNodes(builder, id.node(NodeIdentifier.create(container.getQName())), container, + type); } } else { boolean needEnforce = child instanceof MandatoryAware aware && aware.isMandatory(); @@ -102,8 +81,7 @@ final class MandatoryLeafEnforcer implements Immutable { .orElse(Boolean.FALSE); } if (needEnforce) { - final MandatoryDescendant desc = MandatoryDescendant.create(id, schema, child, - augmentedSubtree); + final MandatoryDescendant desc = MandatoryDescendant.create(id, schema, child); LOG.debug("Adding mandatory child {}", desc); builder.add(desc); } diff --git a/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/SchemaAwareApplyOperation.java b/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/SchemaAwareApplyOperation.java index a875c3d55f..9052f8a1aa 100644 --- a/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/SchemaAwareApplyOperation.java +++ b/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/SchemaAwareApplyOperation.java @@ -13,9 +13,7 @@ import static com.google.common.base.Verify.verifyNotNull; import java.util.List; import java.util.Optional; import org.eclipse.jdt.annotation.NonNull; -import org.eclipse.jdt.annotation.Nullable; 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; import org.opendaylight.yangtools.yang.data.api.schema.AnydataNode; import org.opendaylight.yangtools.yang.data.api.schema.AnyxmlNode; @@ -30,11 +28,8 @@ 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.AnydataSchemaNode; import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; -import org.opendaylight.yangtools.yang.model.api.AugmentationTarget; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; -import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.DocumentedNode.WithStatus; import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; @@ -73,20 +68,6 @@ abstract class SchemaAwareApplyOperation extends Modificat } } - static @Nullable AugmentationModificationStrategy from(final DataNodeContainer resolvedTree, - final AugmentationTarget augSchemas, final AugmentationIdentifier identifier, - final DataTreeConfiguration treeConfig) { - for (final AugmentationSchemaNode potential : augSchemas.getAvailableAugmentations()) { - for (final DataSchemaNode child : potential.getChildNodes()) { - if (identifier.getPossibleChildNames().contains(child.getQName())) { - return new AugmentationModificationStrategy(potential, resolvedTree, treeConfig); - } - } - } - - return null; - } - static void checkConflicting(final ModificationPath path, final boolean condition, final String message) throws ConflictingModificationAppliedException { if (!condition) { diff --git a/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/leafref/LeafRefValidation.java b/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/leafref/LeafRefValidation.java index 91050b627d..757ac3d559 100644 --- a/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/leafref/LeafRefValidation.java +++ b/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/leafref/LeafRefValidation.java @@ -28,7 +28,6 @@ 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.AugmentationNode; import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode; import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; import org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode; @@ -223,12 +222,6 @@ public final class LeafRefValidation { final LeafRefContext referencingCtx, final ModificationType modificationType, final YangInstanceIdentifier current) { for (final DataContainerChild child : node.body()) { - if (child instanceof AugmentationNode) { - validateNodeData(child, referencedByCtx, referencingCtx, modificationType, current.node( - child.getIdentifier())); - return; - } - validateChildNodeData(child, referencedByCtx, referencingCtx, modificationType, current); } } @@ -239,12 +232,6 @@ public final class LeafRefValidation { for (final MapEntryNode mapEntry : node.asMap().values()) { final YangInstanceIdentifier mapEntryIdentifier = current.node(mapEntry.getIdentifier()); for (final DataContainerChild child : mapEntry.body()) { - if (child instanceof AugmentationNode) { - validateNodeData(child, referencedByCtx, referencingCtx, modificationType, current.node( - child.getIdentifier())); - return; - } - validateChildNodeData(child, referencedByCtx, referencingCtx, modificationType, mapEntryIdentifier); } } @@ -392,11 +379,11 @@ public final class LeafRefValidation { final DataContainerChild child = parent.childByArg(arg); if (child == null) { // FIXME: YANGTOOLS-901. We have SchemaContext nearby, hence we should be able to cache how to get - // to the leaf with with specified QName, without having to iterate through Choices/Augmentations. + // to the leaf with with specified QName, without having to iterate through Choices. // That perhaps means we should not have QNameWithPredicates, but NodeIdentifierWithPredicates as // the path specification. for (final DataContainerChild mixin : parent.body()) { - if (mixin instanceof AugmentationNode || mixin instanceof ChoiceNode) { + if (mixin instanceof ChoiceNode) { addValues(values, mixin, nodePredicates, path, current); } } diff --git a/data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/impl/AbstractPrettyTreeTest.java b/data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/impl/AbstractPrettyTreeTest.java index b89d182088..7574b2dd6c 100644 --- a/data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/impl/AbstractPrettyTreeTest.java +++ b/data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/impl/AbstractPrettyTreeTest.java @@ -13,13 +13,10 @@ import static org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes.ma import static org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes.mapNodeBuilder; import java.util.List; -import java.util.Set; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; import org.opendaylight.yangtools.yang.data.api.schema.AnydataNode; -import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode; import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.LeafNode; @@ -134,14 +131,6 @@ public abstract class AbstractPrettyTreeTest { protected static ChoiceNode createChoiceNode() { return Builders.choiceBuilder() .withNodeIdentifier(NodeIdentifier.create(CHOICE_QNAME)) - .withChild(createAugmentationNode()) - .build(); - } - - protected static AugmentationNode createAugmentationNode() { - return Builders.augmentationBuilder() - .withNodeIdentifier(AugmentationIdentifier - .create(Set.of(AUGMENT_QNAME))) .withChild(createAugmentedLeafNode()) .build(); } diff --git a/data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/impl/CaseAugmentTest.java b/data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/impl/CaseAugmentTest.java index bcfdd3e7f1..30d1eb41b2 100644 --- a/data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/impl/CaseAugmentTest.java +++ b/data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/impl/CaseAugmentTest.java @@ -7,17 +7,16 @@ */ package org.opendaylight.yangtools.yang.data.tree.impl; -import static org.junit.Assert.assertTrue; +import static org.hamcrest.CoreMatchers.containsString; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.Assert.assertThrows; import static org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes.leafNode; -import com.google.common.collect.ImmutableSet; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; -import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.impl.schema.Builders; import org.opendaylight.yangtools.yang.data.tree.api.DataTree; @@ -30,13 +29,9 @@ import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; public class CaseAugmentTest { private static final QName CHOICE1_QNAME = QName.create(TestModel.TEST_QNAME, "choice1"); - private static final QName C1L1_QNAME = QName.create(TestModel.TEST_QNAME, "case1-leaf1"); private static final QName C1L2_QNAME = QName.create(TestModel.TEST_QNAME, "case1-leaf2"); private static final QName C1L3_QNAME = QName.create(TestModel.TEST_QNAME, "case1-leaf3"); - private static final QName C2L1_QNAME = QName.create(TestModel.TEST_QNAME, "case2-leaf1"); private static final NodeIdentifier CHOICE_ID = new NodeIdentifier(CHOICE1_QNAME); - private static final AugmentationIdentifier AUGMENT_ID = new AugmentationIdentifier( - ImmutableSet.of(C1L2_QNAME, C1L3_QNAME)); private static EffectiveModelContext SCHEMA_CONTEXT; @@ -60,17 +55,13 @@ public class CaseAugmentTest { public void testWriteAugment() throws DataValidationFailedException { final DataTree inMemoryDataTree = initDataTree(); - AugmentationNode augmentationNode = Builders.augmentationBuilder() - .withNodeIdentifier(AUGMENT_ID) - .withChild(leafNode(C1L2_QNAME, "leaf-value")) - .build(); - final ContainerNode container = Builders.containerBuilder() - .withNodeIdentifier(new NodeIdentifier(TestModel.TEST_QNAME)) - .withChild( - Builders.choiceBuilder().withNodeIdentifier(CHOICE_ID) - .withChild(augmentationNode) - .build()).build(); + .withNodeIdentifier(new NodeIdentifier(TestModel.TEST_QNAME)) + .withChild(Builders.choiceBuilder() + .withNodeIdentifier(CHOICE_ID) + .withChild(leafNode(C1L2_QNAME, "leaf-value")) + .build()) + .build(); final DataTreeModification modificationTree = inMemoryDataTree.takeSnapshot().newModification(); modificationTree.write(TestModel.TEST_PATH, container); modificationTree.ready(); @@ -84,22 +75,16 @@ public class CaseAugmentTest { public void testWriteCase1All() throws DataValidationFailedException { final DataTree inMemoryDataTree = initDataTree(); - AugmentationNode augmentationNode = Builders.augmentationBuilder() - .withNodeIdentifier(AUGMENT_ID) + final DataTreeModification modificationTree = inMemoryDataTree.takeSnapshot().newModification(); + modificationTree.write(TestModel.TEST_PATH, Builders.containerBuilder() + .withNodeIdentifier(new NodeIdentifier(TestModel.TEST_QNAME)) + .withChild(Builders.choiceBuilder() + .withNodeIdentifier(CHOICE_ID) + .withChild(leafNode(QName.create(TestModel.TEST_QNAME, "case1-leaf1"), "leaf-value")) .withChild(leafNode(C1L2_QNAME, "leaf-value")) .withChild(leafNode(C1L3_QNAME, "leaf-value")) - .build(); - - final ContainerNode container = Builders - .containerBuilder() - .withNodeIdentifier(new NodeIdentifier(TestModel.TEST_QNAME)) - .withChild( - Builders.choiceBuilder().withNodeIdentifier(CHOICE_ID) - .withChild(leafNode(QName.create(TestModel.TEST_QNAME, "case1-leaf1"), "leaf-value")) - .withChild(augmentationNode) - .build()).build(); - final DataTreeModification modificationTree = inMemoryDataTree.takeSnapshot().newModification(); - modificationTree.write(TestModel.TEST_PATH, container); + .build()) + .build()); modificationTree.ready(); inMemoryDataTree.validate(modificationTree); @@ -107,34 +92,19 @@ public class CaseAugmentTest { inMemoryDataTree.commit(prepare); } - @Test(expected = IllegalArgumentException.class) + @Test public void testWriteConflict() throws DataValidationFailedException { - final DataTree inMemoryDataTree = initDataTree(); - - AugmentationNode augmentationNode = Builders.augmentationBuilder() - .withNodeIdentifier(AUGMENT_ID) + final DataTreeModification modificationTree = initDataTree().takeSnapshot().newModification(); + modificationTree.write(TestModel.TEST_PATH, Builders.containerBuilder() + .withNodeIdentifier(new NodeIdentifier(TestModel.TEST_QNAME)) + .withChild(Builders.choiceBuilder() + .withNodeIdentifier(CHOICE_ID) .withChild(leafNode(C1L2_QNAME, "leaf-value")) - .build(); - - final ContainerNode container = Builders.containerBuilder() - .withNodeIdentifier(new NodeIdentifier(TestModel.TEST_QNAME)) - .withChild( - Builders.choiceBuilder().withNodeIdentifier(CHOICE_ID) - .withChild(augmentationNode) - .withChild(leafNode(QName.create(TestModel.TEST_QNAME, "case2-leaf1"), "leaf-value")) - .build()).build(); - - try { - final DataTreeModification modificationTree = inMemoryDataTree.takeSnapshot().newModification(); - modificationTree.write(TestModel.TEST_PATH, container); - modificationTree.ready(); + .withChild(leafNode(QName.create(TestModel.TEST_QNAME, "case2-leaf1"), "leaf-value")) + .build()) + .build()); - inMemoryDataTree.validate(modificationTree); - final DataTreeCandidate prepare = inMemoryDataTree.prepare(modificationTree); - inMemoryDataTree.commit(prepare); - } catch (IllegalArgumentException e) { - assertTrue(e.getMessage().contains("implies non-presence of child")); - throw e; - } + final IllegalArgumentException e = assertThrows(IllegalArgumentException.class, modificationTree::ready); + assertThat(e.getMessage(), containsString(" implies non-presence of child ")); } } diff --git a/data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/impl/NormalizedNodePrettyTreeTest.java b/data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/impl/NormalizedNodePrettyTreeTest.java index 66fdedbde1..01ca692172 100644 --- a/data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/impl/NormalizedNodePrettyTreeTest.java +++ b/data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/impl/NormalizedNodePrettyTreeTest.java @@ -53,18 +53,8 @@ public class NormalizedNodePrettyTreeTest extends AbstractPrettyTreeTest { public void testChoicePrettyTree() { assertEquals(String.join("\n", "choiceNode (urn:opendaylight:controller:sal:dom:store:test@2014-03-13)choice = {", - " augmentationNode = {", - " leafNode augment = \"Augmented leaf value\"", - " }", - "}"), createChoiceNode().prettyTree().get()); - } - - @Test - public void testAugmentationPrettyTree() { - assertEquals(String.join("\n", - "augmentationNode (urn:opendaylight:controller:sal:dom:store:test@2014-03-13) = {", " leafNode augment = \"Augmented leaf value\"", - "}"), createAugmentationNode().prettyTree().get()); + "}"), createChoiceNode().prettyTree().get()); } @Test @@ -168,9 +158,7 @@ public class NormalizedNodePrettyTreeTest extends AbstractPrettyTreeTest { " }", " }", " choiceNode choice = {", - " augmentationNode = {", - " leafNode augment = \"Augmented leaf value\"", - " }", + " leafNode augment = \"Augmented leaf value\"", " }", " anydataNode any-data = (java.lang.String)", " unkeyedListNode unkeyed-list = {", diff --git a/data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/impl/YT1276Test.java b/data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/impl/YT1276Test.java index dbb973c750..abcd8f665e 100644 --- a/data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/impl/YT1276Test.java +++ b/data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/impl/YT1276Test.java @@ -10,13 +10,11 @@ package org.opendaylight.yangtools.yang.data.tree.impl; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThrows; -import java.util.Set; import java.util.function.Consumer; import org.junit.BeforeClass; import org.junit.Test; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.impl.schema.Builders; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; @@ -58,10 +56,7 @@ public class YT1276Test { applyOperation(mod -> { mod.write(YangInstanceIdentifier.of(FOO), Builders.containerBuilder() .withNodeIdentifier(new NodeIdentifier(FOO)) - .withChild(Builders.augmentationBuilder() - .withNodeIdentifier(new AugmentationIdentifier(Set.of(BAR))) - .withChild(ImmutableNodes.leafNode(BAR, "xyzzy")) - .build()) + .withChild(ImmutableNodes.leafNode(BAR, "xyzzy")) .build()); }); } @@ -84,9 +79,7 @@ public class YT1276Test { .withNodeIdentifier(new NodeIdentifier(FOO)) .build()); }); - assertEquals( - "Node (foo)foo is missing mandatory descendant /AugmentationIdentifier{childNames=[(foo)bar]}/(foo)bar", - ex.getMessage()); + assertEquals("Node (foo)foo is missing mandatory descendant /(foo)bar", ex.getMessage()); } @Test @@ -97,15 +90,12 @@ public class YT1276Test { .withChild(Builders.choiceBuilder() .withNodeIdentifier(new NodeIdentifier(BAZ)) .withChild(ImmutableNodes.leafNode(XYZZY_LEAF, "xyzzy")) - .withChild(Builders.augmentationBuilder() - .withNodeIdentifier(new AugmentationIdentifier(Set.of(XYZZY_AUGMENT, XYZZY_AUGMENT_CONT))) - .withChild(ImmutableNodes.leafNode(XYZZY_AUGMENT, "xyzzy")) + .withChild(ImmutableNodes.leafNode(XYZZY_AUGMENT, "xyzzy")) + .withChild(Builders.containerBuilder() + .withNodeIdentifier(new NodeIdentifier(XYZZY_AUGMENT_CONT)) .withChild(Builders.containerBuilder() - .withNodeIdentifier(new NodeIdentifier(XYZZY_AUGMENT_CONT)) - .withChild(Builders.containerBuilder() - .withNodeIdentifier(new NodeIdentifier(XYZZY_AUGMENT_CONT_INNER)) - .withChild(ImmutableNodes.leafNode(XYZZY_AUGMENT_CONT_LEAF, "aug-cont-leaf")) - .build()) + .withNodeIdentifier(new NodeIdentifier(XYZZY_AUGMENT_CONT_INNER)) + .withChild(ImmutableNodes.leafNode(XYZZY_AUGMENT_CONT_LEAF, "aug-cont-leaf")) .build()) .build()) .build()) @@ -202,15 +192,12 @@ public class YT1276Test { .withNodeIdentifier(new NodeIdentifier(BAR)) .withChild(Builders.choiceBuilder() .withNodeIdentifier(new NodeIdentifier(BAZ)) - .withChild(Builders.augmentationBuilder() - .withNodeIdentifier(new AugmentationIdentifier(Set.of(XYZZY_AUGMENT, XYZZY_AUGMENT_CONT))) - .withChild(ImmutableNodes.leafNode(XYZZY_AUGMENT, "xyzzy")) + .withChild(ImmutableNodes.leafNode(XYZZY_AUGMENT, "xyzzy")) + .withChild(Builders.containerBuilder() + .withNodeIdentifier(NodeIdentifier.create(XYZZY_AUGMENT_CONT)) .withChild(Builders.containerBuilder() - .withNodeIdentifier(NodeIdentifier.create(XYZZY_AUGMENT_CONT)) - .withChild(Builders.containerBuilder() - .withNodeIdentifier(NodeIdentifier.create(XYZZY_AUGMENT_CONT_INNER)) - .withChild(ImmutableNodes.leafNode(XYZZY_AUGMENT_CONT_LEAF, "aug-cont-leaf")) - .build()) + .withNodeIdentifier(NodeIdentifier.create(XYZZY_AUGMENT_CONT_INNER)) + .withChild(ImmutableNodes.leafNode(XYZZY_AUGMENT_CONT_LEAF, "aug-cont-leaf")) .build()) .build()) .build()) @@ -232,8 +219,7 @@ public class YT1276Test { .build()) .build()); }); - assertEquals("Node (foo)baz is missing mandatory descendant /AugmentationIdentifier{childNames=" - + "[(foo)xyzzy-augment, (foo)xyzzy-augment-container]}/(foo)xyzzy-augment", ex.getMessage()); + assertEquals("Node (foo)baz is missing mandatory descendant /(foo)xyzzy-augment", ex.getMessage()); } diff --git a/data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/leafref/YT821Test.java b/data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/leafref/YT821Test.java index 662b0b80de..5edf9018ea 100644 --- a/data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/leafref/YT821Test.java +++ b/data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/leafref/YT821Test.java @@ -7,14 +7,12 @@ */ package org.opendaylight.yangtools.yang.data.tree.leafref; -import com.google.common.collect.ImmutableSet; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; @@ -120,10 +118,7 @@ public class YT821Test { .withChild(ImmutableNodes.leafNode(NAME, "bar1")) .withChild(Builders.containerBuilder() .withNodeIdentifier(new NodeIdentifier(CONTAINER_IN_LIST)) - .withChild(Builders.augmentationBuilder() - .withNodeIdentifier(AugmentationIdentifier.create(ImmutableSet.of(REF_FROM_AUG))) - .withChild(ImmutableNodes.leafNode(REF_FROM_AUG, refValue)) - .build()) + .withChild(ImmutableNodes.leafNode(REF_FROM_AUG, refValue)) .build()) .build()) .build()) @@ -145,12 +140,9 @@ public class YT821Test { .withChild(Builders.mapEntryBuilder() .withNodeIdentifier(NodeIdentifierWithPredicates.of(BAR, NAME, "bar1")) .withChild(ImmutableNodes.leafNode(NAME, "bar1")) - .withChild(Builders.augmentationBuilder() - .withNodeIdentifier(AugmentationIdentifier.create(ImmutableSet.of(CONTAINER_FROM_AUG))) - .withChild(Builders.containerBuilder() - .withNodeIdentifier(new NodeIdentifier(CONTAINER_FROM_AUG)) - .withChild(ImmutableNodes.leafNode(REF_IN_CONTAINER, refValue)) - .build()) + .withChild(Builders.containerBuilder() + .withNodeIdentifier(new NodeIdentifier(CONTAINER_FROM_AUG)) + .withChild(ImmutableNodes.leafNode(REF_IN_CONTAINER, refValue)) .build()) .build()) .build()) diff --git a/data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/leafref/YT892Test.java b/data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/leafref/YT892Test.java index cf8a5f45d3..57df5c9e00 100644 --- a/data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/leafref/YT892Test.java +++ b/data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/leafref/YT892Test.java @@ -8,13 +8,11 @@ package org.opendaylight.yangtools.yang.data.tree.leafref; import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; import org.junit.Before; import org.junit.Test; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.Uint8; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.impl.schema.Builders; @@ -116,55 +114,41 @@ public class YT892Test { .withChild(ImmutableNodes.leafNode(IDENTIFIER, BGP_POLICY)) .withChild(ImmutableNodes.leafNode(NAME, "test-bgp-instance")) .build()) - .withChild(Builders.augmentationBuilder() - .withNodeIdentifier( - AugmentationIdentifier.create(ImmutableSet.of(TEST_BGP))) + .withChild(Builders.containerBuilder() + .withNodeIdentifier(new NodeIdentifier(TEST_BGP)) .withChild(Builders.containerBuilder() - .withNodeIdentifier(new NodeIdentifier(TEST_BGP)) - .withChild(Builders.containerBuilder() - .withNodeIdentifier(new NodeIdentifier(NEIGHBORS)) - .withChild(Builders.mapBuilder() - .withNodeIdentifier(new NodeIdentifier(NEIGHBOR)) - .withChild(Builders.mapEntryBuilder() - .withNodeIdentifier(NodeIdentifierWithPredicates.of(NEIGHBOR, - NEIGHBOR_ADDRESS, "10.25.1.9")) - .withChild(ImmutableNodes.leafNode(NEIGHBOR_ADDRESS, - "10.25.1.9")) - .withChild(Builders.containerBuilder() - .withNodeIdentifier(new NodeIdentifier(TEST_CONFIG)) - .withChild(Builders.augmentationBuilder() - .withNodeIdentifier(AugmentationIdentifier.create( - ImmutableSet.of(TEST_PEER_GROUP))) - .withChild(ImmutableNodes.leafNode(TEST_PEER_GROUP, - "application-peers")) - .build()) - .build()) - .withChild(Builders.containerBuilder() - .withNodeIdentifier(new NodeIdentifier(AFI_SAFIS)) - .withChild(Builders.mapBuilder() - .withNodeIdentifier(new NodeIdentifier(AFI_SAFI)) - .withChild(Builders.mapEntryBuilder() - .withNodeIdentifier(NodeIdentifierWithPredicates.of( - AFI_SAFI, - ImmutableMap.of(AFI_SAFI_NAME, IPV4_UNICAST))) - .withChild(ImmutableNodes.leafNode(AFI_SAFI_NAME, - IPV4_UNICAST)) - .withChild(Builders.containerBuilder() - .withNodeIdentifier( - new NodeIdentifier(TEST_CONFIG)) - .withChild(ImmutableNodes.leafNode( - AFI_SAFI_NAME, IPV4_UNICAST)) - .build()) - .withChild(Builders.augmentationBuilder() - .withNodeIdentifier( - AugmentationIdentifier.create( - ImmutableSet.of(RECEIVE, SEND_MAX))) - .withChild(ImmutableNodes.leafNode(RECEIVE, - Boolean.TRUE)) - .withChild(ImmutableNodes.leafNode(SEND_MAX, - Uint8.ZERO)) - .build()) + .withNodeIdentifier(new NodeIdentifier(NEIGHBORS)) + .withChild(Builders.mapBuilder() + .withNodeIdentifier(new NodeIdentifier(NEIGHBOR)) + .withChild(Builders.mapEntryBuilder() + .withNodeIdentifier(NodeIdentifierWithPredicates.of(NEIGHBOR, + NEIGHBOR_ADDRESS, "10.25.1.9")) + .withChild(ImmutableNodes.leafNode(NEIGHBOR_ADDRESS, "10.25.1.9")) + .withChild(Builders.containerBuilder() + .withNodeIdentifier(new NodeIdentifier(TEST_CONFIG)) + .withChild(ImmutableNodes.leafNode(TEST_PEER_GROUP, + "application-peers")) + .build()) + .withChild(Builders.containerBuilder() + .withNodeIdentifier(new NodeIdentifier(AFI_SAFIS)) + .withChild(Builders.mapBuilder() + .withNodeIdentifier(new NodeIdentifier(AFI_SAFI)) + .withChild(Builders.mapEntryBuilder() + .withNodeIdentifier(NodeIdentifierWithPredicates.of( + AFI_SAFI, + ImmutableMap.of(AFI_SAFI_NAME, IPV4_UNICAST))) + .withChild(ImmutableNodes.leafNode(AFI_SAFI_NAME, + IPV4_UNICAST)) + .withChild(Builders.containerBuilder() + .withNodeIdentifier( + new NodeIdentifier(TEST_CONFIG)) + .withChild(ImmutableNodes.leafNode( + AFI_SAFI_NAME, IPV4_UNICAST)) .build()) + .withChild(ImmutableNodes.leafNode(RECEIVE, + Boolean.TRUE)) + .withChild(ImmutableNodes.leafNode(SEND_MAX, + Uint8.ZERO)) .build()) .build()) .build()) diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AugmentationContextNode.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AugmentationContextNode.java deleted file mode 100644 index 2482631c6f..0000000000 --- a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AugmentationContextNode.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2015 Cisco Systems, Inc. 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.yang.data.util; - -import java.util.Set; -import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; -import org.opendaylight.yangtools.yang.model.api.AugmentationTarget; -import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; -import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; -import org.opendaylight.yangtools.yang.model.util.EffectiveAugmentationSchema; -import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack; - -final class AugmentationContextNode extends DataContainerContextNode { - AugmentationContextNode(final AugmentationSchemaNode augmentation, final DataNodeContainer target) { - super(augmentationIdentifierFrom(augmentation), new EffectiveAugmentationSchema(augmentation, target), null); - } - - @Override - public boolean isMixin() { - return true; - } - - @Override - protected DataSchemaContextNode fromLocalSchemaAndQName(final DataNodeContainer schema, final QName child) { - final DataSchemaNode result = findChildSchemaNode(schema, child); - // We try to look up if this node was added by augmentation - if (schema instanceof DataSchemaNode && result.isAugmenting()) { - return fromAugmentation(schema, (AugmentationTarget) schema, result); - } - return lenientOf(result); - } - - @Override - protected Set getQNameIdentifiers() { - return getIdentifier().getPossibleChildNames(); - } - - @Override - protected void pushToStack(final SchemaInferenceStack stack) { - // No-op - } -} diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/CompositeNodeDataWithSchema.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/CompositeNodeDataWithSchema.java index 37d6d5730c..683f0463e2 100644 --- a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/CompositeNodeDataWithSchema.java +++ b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/CompositeNodeDataWithSchema.java @@ -17,7 +17,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Deque; import java.util.List; -import java.util.Map.Entry; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter; import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter.MetadataExtension; @@ -257,19 +256,9 @@ public class CompositeNodeDataWithSchema extends Abstr for (AbstractNodeDataWithSchema child : children) { child.write(writer, metaWriter); } - for (Entry>> augmentationToChild - : augmentationsToChild.asMap().entrySet()) { - final Collection> childsFromAgumentation = augmentationToChild.getValue(); - if (!childsFromAgumentation.isEmpty()) { - // FIXME: can we get the augmentation schema? - writer.startAugmentationNode(DataSchemaContextNode.augmentationIdentifierFrom( - augmentationToChild.getKey())); - - for (AbstractNodeDataWithSchema nodeDataWithSchema : childsFromAgumentation) { - nodeDataWithSchema.write(writer, metaWriter); - } - - writer.endNode(); + for (var childsFromAgumentation : augmentationsToChild.asMap().values()) { + for (var nodeDataWithSchema : childsFromAgumentation) { + nodeDataWithSchema.write(writer, metaWriter); } } } diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/DataContainerContextNode.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/DataContainerContextNode.java index d07854fe00..c8022f4402 100644 --- a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/DataContainerContextNode.java +++ b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/DataContainerContextNode.java @@ -14,7 +14,6 @@ import java.util.concurrent.ConcurrentMap; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; 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; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; @@ -70,9 +69,6 @@ abstract class DataContainerContextNode extends Abstract } private DataSchemaContextNode fromLocalSchema(final PathArgument child) { - if (child instanceof AugmentationIdentifier augId) { - return fromSchemaAndQNameChecked(container, augId.getPossibleChildNames().iterator().next()); - } return fromSchemaAndQNameChecked(container, child.getNodeType()); } diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/DataSchemaContextNode.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/DataSchemaContextNode.java index 38dc78ff8e..c24a9fea76 100644 --- a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/DataSchemaContextNode.java +++ b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/DataSchemaContextNode.java @@ -13,15 +13,12 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import java.util.Optional; import java.util.Set; -import java.util.stream.Collectors; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.concepts.AbstractSimpleIdentifiable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; -import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode; import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode; import org.opendaylight.yangtools.yang.data.api.schema.LeafSetNode; import org.opendaylight.yangtools.yang.data.api.schema.MapNode; @@ -29,8 +26,6 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListNode; import org.opendaylight.yangtools.yang.model.api.AnydataSchemaNode; import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; -import org.opendaylight.yangtools.yang.model.api.AugmentationTarget; import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.ContainerLike; @@ -72,7 +67,6 @@ public abstract class DataSchemaContextNode extends Abst * This node is a {@link NormalizedNode} intermediate, not represented in RFC7950 XML encoding. This is typically * one of *
      - *
    • {@link AugmentationNode} backed by an {@link AugmentationSchemaNode}, or
    • *
    • {@link ChoiceNode} backed by a {@link ChoiceSchemaNode}, or
    • *
    • {@link LeafSetNode} backed by a {@link LeafListSchemaNode}, or
    • *
    • {@link MapNode} backed by a {@link ListSchemaNode} with a non-empty @@ -200,12 +194,7 @@ public abstract class DataSchemaContextNode extends Abst } static DataSchemaContextNode fromSchemaAndQNameChecked(final DataNodeContainer schema, final QName child) { - final DataSchemaNode result = findChildSchemaNode(schema, child); - // We try to look up if this node was added by augmentation - if (result != null && schema instanceof DataSchemaNode && result.isAugmenting()) { - return fromAugmentation(schema, (AugmentationTarget) schema, result); - } - return lenientOf(result); + return lenientOf(findChildSchemaNode(schema, child)); } // FIXME: this looks like it should be a Predicate on a stream with findFirst() @@ -221,18 +210,6 @@ public abstract class DataSchemaContextNode extends Abst return null; } - /** - * Create AugmentationIdentifier from an AugmentationSchemaNode. - * - * @param schema Augmentation schema - * @return AugmentationIdentifier for the schema - * @throws NullPointerException if {@code schema} is null - */ - public static AugmentationIdentifier augmentationIdentifierFrom(final AugmentationSchemaNode schema) { - return new AugmentationIdentifier(schema.getChildNodes().stream().map(DataSchemaNode::getQName) - .collect(Collectors.toSet())); - } - static @NonNull DataSchemaContextNode of(final @NonNull DataSchemaNode schema) { if (schema instanceof ContainerLike containerLike) { return new ContainerContextNode(containerLike); @@ -274,23 +251,6 @@ public abstract class DataSchemaContextNode extends Abst } } - /** - * Returns a DataContextNodeOperation for provided child node - * - *

      - * If supplied child is added by Augmentation this operation returns a DataSchemaContextNode for augmentation, - * otherwise returns a DataSchemaContextNode for child as call for {@link #lenientOf(DataSchemaNode)}. - */ - static @Nullable DataSchemaContextNode fromAugmentation(final DataNodeContainer parent, - final AugmentationTarget parentAug, final DataSchemaNode child) { - for (AugmentationSchemaNode aug : parentAug.getAvailableAugmentations()) { - if (aug.dataChildByName(child.getQName()) != null) { - return new AugmentationContextNode(aug, parent); - } - } - return lenientOf(child); - } - private static @NonNull DataSchemaContextNode fromListSchemaNode(final ListSchemaNode potential) { var keyDefinition = potential.getKeyDefinition(); if (keyDefinition.isEmpty()) { diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/NormalizedNodeSchemaUtils.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/NormalizedNodeSchemaUtils.java index c37faab53a..749f45b5c3 100644 --- a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/NormalizedNodeSchemaUtils.java +++ b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/NormalizedNodeSchemaUtils.java @@ -8,12 +8,8 @@ package org.opendaylight.yangtools.yang.data.util; import com.google.common.annotations.Beta; -import java.util.HashSet; import java.util.Optional; -import java.util.Set; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; -import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode; import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; import org.opendaylight.yangtools.yang.model.api.AugmentationTarget; @@ -29,10 +25,6 @@ public final class NormalizedNodeSchemaUtils { } public static Optional detectCase(final ChoiceSchemaNode schema, final DataContainerChild child) { - if (child instanceof AugmentationNode augment) { - return detectCase(schema, augment); - } - final QName childId = child.getIdentifier().getNodeType(); for (final CaseSchemaNode choiceCaseNode : schema.getCases()) { if (choiceCaseNode.dataChildByName(childId) != null) { @@ -42,33 +34,6 @@ public final class NormalizedNodeSchemaUtils { return Optional.empty(); } - public static Optional detectCase(final ChoiceSchemaNode schema, final AugmentationNode child) { - final AugmentationIdentifier childId = child.getIdentifier(); - for (final CaseSchemaNode choiceCaseNode : schema.getCases()) { - if (belongsToCaseAugment(choiceCaseNode, childId)) { - return Optional.of(choiceCaseNode); - } - } - return Optional.empty(); - } - - private static boolean belongsToCaseAugment(final CaseSchemaNode caseNode, - final AugmentationIdentifier childToProcess) { - for (final AugmentationSchemaNode augmentationSchema : caseNode.getAvailableAugmentations()) { - - final Set currentAugmentChildNodes = new HashSet<>(); - for (final DataSchemaNode dataSchemaNode : augmentationSchema.getChildNodes()) { - currentAugmentChildNodes.add(dataSchemaNode.getQName()); - } - - if (childToProcess.getPossibleChildNames().equals(currentAugmentChildNodes)) { - return true; - } - } - - return false; - } - /** * Tries to find in {@code parent} which is dealed as augmentation target node with QName as {@code child}. If such * node is found then it is returned, else null. diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/NormalizedNodeStreamWriterMetadataDecorator.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/NormalizedNodeStreamWriterMetadataDecorator.java index f5bc6c5912..0007d923d1 100644 --- a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/NormalizedNodeStreamWriterMetadataDecorator.java +++ b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/NormalizedNodeStreamWriterMetadataDecorator.java @@ -15,7 +15,6 @@ import java.util.ArrayDeque; import java.util.Deque; import java.util.Map; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; @@ -115,12 +114,6 @@ final class NormalizedNodeStreamWriterMetadataDecorator extends ForwardingNormal enterMetadataNode(name); } - @Override - public void startAugmentationNode(final AugmentationIdentifier identifier) throws IOException { - super.startAugmentationNode(identifier); - enterMetadataNode(identifier); - } - @Override public boolean startAnyxmlNode(final NodeIdentifier name, final Class objectModel) throws IOException { final boolean ret = super.startAnyxmlNode(name, objectModel); diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/NormalizedNodeStreamWriterStack.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/NormalizedNodeStreamWriterStack.java index d065386cf1..57ab071a6e 100644 --- a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/NormalizedNodeStreamWriterStack.java +++ b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/NormalizedNodeStreamWriterStack.java @@ -13,16 +13,12 @@ import static com.google.common.base.Verify.verify; import static java.util.Objects.requireNonNull; import com.google.common.annotations.Beta; -import com.google.common.collect.Iterables; import java.io.IOException; import java.util.ArrayDeque; import java.util.Deque; -import java.util.Set; -import java.util.stream.Collectors; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; @@ -31,8 +27,6 @@ import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStre import org.opendaylight.yangtools.yang.model.api.AnydataSchemaNode; import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode; import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; -import org.opendaylight.yangtools.yang.model.api.AugmentationTarget; -import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.ContainerLike; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; @@ -53,7 +47,6 @@ import org.opendaylight.yangtools.yang.model.api.stmt.DataTreeEffectiveStatement import org.opendaylight.yangtools.yang.model.api.stmt.RpcEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute; import org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition; -import org.opendaylight.yangtools.yang.model.util.EffectiveAugmentationSchema; import org.opendaylight.yangtools.yang.model.util.LeafrefResolver; import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack; import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack.Inference; @@ -286,47 +279,4 @@ public final class NormalizedNodeStreamWriterStack implements LeafrefResolver { } return ret; } - - public AugmentationSchemaNode startAugmentationNode(final AugmentationIdentifier identifier) { - LOG.debug("Enter augmentation {}", identifier); - Object parent = getParent(); - - checkArgument(parent instanceof AugmentationTarget, "Augmentation not allowed under %s", parent); - if (parent instanceof ChoiceSchemaNode choice) { - final QName name = Iterables.get(identifier.getPossibleChildNames(), 0); - parent = findCaseByChild(choice, name); - } - checkArgument(parent instanceof DataNodeContainer, "Augmentation allowed only in DataNodeContainer", parent); - final AugmentationSchemaNode schema = findSchemaForAugment((AugmentationTarget) parent, - identifier.getPossibleChildNames()); - final AugmentationSchemaNode resolvedSchema = new EffectiveAugmentationSchema(schema, - (DataNodeContainer) parent); - schemaStack.push(resolvedSchema); - return resolvedSchema; - } - - // FIXME: 7.0.0: can we get rid of this? - private static @NonNull AugmentationSchemaNode findSchemaForAugment(final AugmentationTarget schema, - final Set qnames) { - for (final AugmentationSchemaNode augment : schema.getAvailableAugmentations()) { - if (qnames.equals(augment.getChildNodes().stream() - .map(DataSchemaNode::getQName) - .collect(Collectors.toUnmodifiableSet()))) { - return augment; - } - } - - throw new IllegalStateException( - "Unknown augmentation node detected, identified by: " + qnames + ", in: " + schema); - } - - // FIXME: 7.0.0: can we get rid of this? - private static SchemaNode findCaseByChild(final ChoiceSchemaNode parent, final QName qname) { - for (final CaseSchemaNode caze : parent.getCases()) { - if (caze.dataChildByName(qname) != null) { - return caze; - } - } - return null; - } } diff --git a/data/yang-data-util/src/test/java/org/opendaylight/yangtools/yang/data/util/YT1412Test.java b/data/yang-data-util/src/test/java/org/opendaylight/yangtools/yang/data/util/YT1412Test.java index 81374bcc7b..c316687247 100644 --- a/data/yang-data-util/src/test/java/org/opendaylight/yangtools/yang/data/util/YT1412Test.java +++ b/data/yang-data-util/src/test/java/org/opendaylight/yangtools/yang/data/util/YT1412Test.java @@ -10,7 +10,6 @@ package org.opendaylight.yangtools.yang.data.util; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertInstanceOf; -import java.util.Set; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -18,7 +17,6 @@ import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.common.XMLNamespace; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.model.api.stmt.ChoiceEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.ContainerEffectiveStatement; @@ -73,10 +71,7 @@ class YT1412Test { final var one = assertInstanceOf(ContainerContextNode.class, CONTEXT.getRoot().enterChild(stack, ONE)); assertInstanceOf(ContainerEffectiveStatement.class, stack.currentStatement()); - final var augment = assertInstanceOf(AugmentationContextNode.class, one.enterChild(FIVE, stack)); - assertInstanceOf(ContainerEffectiveStatement.class, stack.currentStatement()); - - final var five = assertInstanceOf(UnkeyedListMixinContextNode.class, augment.enterChild(FIVE, stack)); + final var five = assertInstanceOf(UnkeyedListMixinContextNode.class, one.enterChild(FIVE, stack)); assertInstanceOf(ListEffectiveStatement.class, stack.currentStatement()); assertInstanceOf(UnkeyedListItemContextNode.class, five.enterChild(FIVE, stack)); @@ -119,7 +114,6 @@ class YT1412Test { void testEnterAugmentPath() { final var result = CONTEXT.enterPath(YangInstanceIdentifier.create( new NodeIdentifier(ONE), - new AugmentationIdentifier(Set.of(FIVE)), new NodeIdentifier(FIVE), new NodeIdentifier(FIVE))) .orElseThrow();