Remove Augmentation{Identifier,Node} 08/102908/26
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 27 Oct 2022 21:25:28 +0000 (23:25 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 18 May 2023 10:23:36 +0000 (12:23 +0200)
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 <robert.varga@pantheon.tech>
75 files changed:
codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/AbstractLithiumDataInput.java
codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/AbstractMagnesiumDataInput.java
codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/LegacyAugmentationIdentifier.java
codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/LithiumNormalizedNodeInputStreamReader.java
codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/LithiumPathArgument.java
codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/MagnesiumDataOutput.java
codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/NeonSR2NormalizedNodeInputStreamReader.java
codec/yang-data-codec-binfmt/src/main/java/org/opendaylight/yangtools/yang/data/codec/binfmt/NormalizedNodeDataInput.java
codec/yang-data-codec-binfmt/src/test/java/org/opendaylight/yangtools/yang/data/codec/binfmt/AidSerializationTest.java [deleted file]
codec/yang-data-codec-binfmt/src/test/java/org/opendaylight/yangtools/yang/data/codec/binfmt/NormalizedNodeStreamReaderWriterTest.java
codec/yang-data-codec-binfmt/src/test/java/org/opendaylight/yangtools/yang/data/codec/binfmt/TestModel.java
codec/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONNormalizedNodeStreamWriter.java
codec/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug8083Test.java
codec/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonStreamToNormalizedNodeTest.java
codec/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/TestingNormalizedNodeStructuresCreator.java
codec/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/YT1411Test.java
codec/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/SchemaAwareXMLStreamNormalizedNodeStreamWriter.java
codec/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/SchemalessXMLStreamNormalizedNodeStreamWriter.java
codec/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/NormalizedNodeXmlTranslationTest.java
codec/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/NormalizedNodesToXmlTest.java
codec/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/SchemalessXMLStreamNormalizedNodeStreamWriterTest.java
codec/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlToNormalizedNodesTest.java
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/AIv1.java [deleted file]
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/YangInstanceIdentifier.java
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/AugmentationNode.java [deleted file]
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/DataContainerChild.java
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/DataContainerNode.java
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/NormalizedNodes.java
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/package-info.java
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/AbstractIndentingNormalizedNodeStreamWriter.java
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/FormattingNormalizedNodeStreamWriter.java
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/ForwardingNormalizedNodeStreamWriter.java
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/LoggingNormalizedNodeStreamWriter.java
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/NormalizedNodeStreamWriter.java
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/NormalizedNodeWriter.java
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/YangInstanceIdentifierWriter.java
data/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/YangInstanceIdentifierTest.java
data/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/schema/NormalizedNodesTest.java
data/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/schema/stream/NormalizedNodeWriterTest.java
data/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/schema/stream/YT1433Test.java
data/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/schema/stream/YangInstanceIdentifierWriterTest.java
data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/Builders.java
data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/ImmutableNormalizedNodeStreamWriter.java
data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/SchemaOrderedNormalizedNodeWriter.java
data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableAugmentationNodeBuilder.java [deleted file]
data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableMapEntryNodeBuilder.java
data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/valid/DataNodeContainerValidator.java
data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/valid/DataValidationException.java
data/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/BuilderTest.java
data/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/ImmutableNormalizedNodeStreamWriterTest.java
data/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/NormalizedDataBuilderTest.java
data/yang-data-spi/src/main/java/org/opendaylight/yangtools/yang/data/spi/node/NormalizedNodePrettyTree.java
data/yang-data-transform/src/main/java/org/opendaylight/yangtools/transform/QNameTransformingStreamWriter.java
data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/AugmentationModificationStrategy.java [deleted file]
data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/CaseEnforcer.java
data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/ChoiceModificationStrategy.java
data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/DataNodeContainerModificationStrategy.java
data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/MandatoryDescendant.java
data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/MandatoryLeafEnforcer.java
data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/SchemaAwareApplyOperation.java
data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/leafref/LeafRefValidation.java
data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/impl/AbstractPrettyTreeTest.java
data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/impl/CaseAugmentTest.java
data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/impl/NormalizedNodePrettyTreeTest.java
data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/impl/YT1276Test.java
data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/leafref/YT821Test.java
data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/leafref/YT892Test.java
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AugmentationContextNode.java [deleted file]
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/CompositeNodeDataWithSchema.java
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/DataContainerContextNode.java
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/DataSchemaContextNode.java
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/NormalizedNodeSchemaUtils.java
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/NormalizedNodeStreamWriterMetadataDecorator.java
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/NormalizedNodeStreamWriterStack.java
data/yang-data-util/src/test/java/org/opendaylight/yangtools/yang/data/util/YT1412Test.java

index 7aacdb81b4f6209c738753aaea40154e10499a6f..0dbb73b56702e54aa96f7f587d93cb96d6f9ae9a 100644 (file)
@@ -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<QName> readQNameSet() throws IOException {
+    private ImmutableSet<QName> readQNameSet() throws IOException {
         // Read the children count
         final int count = input.readInt();
-        final Set<QName> children = Sets.newHashSetWithExpectedSize(count);
+        final var children = ImmutableSet.<QName>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<PathArgument, LegacyPathArgument> 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<PathArgument, LegacyPathArgument> readLegacyPathArgument() throws IOException {
-        return Either.ofFirst(readPathArgument());
-    }
 }
index 9213467f7293c4d7360167d2e2a38a5d15205bb3..804636707f2297d600ed7ddb98c25620b1a886d8 100644 (file)
@@ -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<AugmentationIdentifier> codedAugments = new ArrayList<>();
+    private final List<LegacyAugmentationIdentifier> codedAugments = new ArrayList<>();
     private final List<NodeIdentifier> codedNodeIdentifiers = new ArrayList<>();
     private final List<QNameModule> codedModules = new ArrayList<>();
     private final List<String> 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<Object> 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<PathArgument, LegacyPathArgument> 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<QName> qnames = new ArrayList<>(size);
+            final var qnames = ImmutableSet.<QName>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 {
index c03b531dbfe5997c4631985d733f920d85006ed5..d6c66c9353fa5ecad1d7ca8ea19cb3cf3e6b3230 100644 (file)
@@ -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<QName> childNames) implements LegacyPathArgument {
index 52dbc9d74816bd2e47b56e9e8bdcecf19ad26d9b..8734b5db758aa5eff978e865a58040e59510b6f3 100755 (executable)
@@ -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();
     }
 
index 1488a9fae195196c1ea29b24985b9045471194e8..63a2a1057aabd98c9d1e0e8a5809df034217a527 100644 (file)
@@ -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 {
index 80450e5fe940e9d98f2f013d5e41740a898e853b..6cab74af4283b2defef40104205a937d2f2757eb 100644 (file)
@@ -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<Object> stack = new ArrayDeque<>();
 
     // Coding maps
-    private final Map<AugmentationIdentifier, Integer> aidCodeMap = new HashMap<>();
     private final Map<QNameModule, Integer> moduleCodeMap = new HashMap<>();
     private final Map<String, Integer> stringCodeMap = new HashMap<>();
     private final Map<QName, Integer> 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<QName> 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<QName> 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);
     }
index c46e7f36ba9cca30a8874646bf7eefe9ff81dffe..1eb8412f219ad452895fbb1790b13ae60c579ec8 100644 (file)
@@ -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<NodeIdentifier> codedNodeIdentifiers = new ArrayList<>();
-    private final List<AugmentationIdentifier> codedAugments = new ArrayList<>();
+    private final List<LegacyAugmentationIdentifier> codedAugments = new ArrayList<>();
     private final List<QNameModule> codedModules = new ArrayList<>();
     private final List<QName> 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;
     }
index 4ca1668a2dad408881d097eadf1f2ebd7ace62e0..4543e155f818e829d6cabc684ab240fb0a96a680 100644 (file)
@@ -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 (file)
index 6df4972..0000000
+++ /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<Object[]> 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;
-    }
-}
index 2b709c6e0bc69f79479f282138b86acf4f0a4de8..f9efe03866170d29664978248f2f95177aaeed62 100644 (file)
@@ -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<Object[]> 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<QName> 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 extends Serializable> T clone(final T obj) {
         final ByteArrayOutputStream baos = new ByteArrayOutputStream(512);
         try (ObjectOutputStream oos = new ObjectOutputStream(baos)) {
index d665945d4a79346aa9c28fec5444ed1ed7802eea..8d34aa2c4438711a7ea16bfe43522dd075457cf5 100644 (file)
@@ -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();
     }
index 3523742e0f0ccba455727454ce95156aad002815..0655c6c78fc51d15a34238a75f3f76ef717a60bf 100644 (file)
@@ -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)) {
index 6740feb4dd6d0a3cf842dd00a4f10e11b46aa395..4ecb2cf93e91600960eeea7d3504222901ab8c82 100644 (file)
@@ -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();
index f93d6cce6e3d7864a490cf15fec5115b9ab1da11..5935b66b4662666e1513b0a8ce957cf8b6676cd2 100644 (file)
@@ -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())
index 61e1c20ca8e8a9ef7709f27ab2b91d68fd58de71..2dec183a60372c7fd74fa050c656d33b7291f40f 100644 (file)
@@ -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<Object> 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<Object> 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<Object> 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());
     }
 }
index 3af9f5e2845382f897eca6fce53827e0c7e11bf3..0896462048ccbb083b24aab81765612539d23ba0 100644 (file)
@@ -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"))),
index 7749dec790c32a47c6a1719b656e3678815fb015..94ed17f369e0049db990ff80d808f27211ce6f16 100644 (file)
@@ -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)) {
index ff21106cd3d5f946a6a67e3389ddca791dab1163..9609dc31c878d280b51f63b889278c5eed5aa085 100644 (file)
@@ -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)) {
index de57fabbf87dd7cec6a2085eed611e0aedded8cf..327f5fb4bbcdaff276c93ef7cf9eaaed278ffba9 100644 (file)
@@ -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<QName> 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;
 
index 28b6182e85ca64e649b12bded1a86feec7d19f91..e08a039b6c764f3871a091d3b9a6325eb44d9cc7 100644 (file)
@@ -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<QName, Object> 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;
     }
index 04e6169b68fcb2f60bfab42452b111b51ca44a9c..0496123550b4b95bb50603af21055bbc502d3ee7 100644 (file)
@@ -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;
     }
index 8180a055bd3b41b44c01cf0fb27084325bb1e1be..be2de3f9649a841905c5770b4f7dc1467bb4f34f 100644 (file)
@@ -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 (file)
index e1f4fea..0000000
+++ /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;
-    }
-}
index 468322b1d5c43abf8e7133d5c515e59f59535ab4..0559b41db352fdc9af77f5c8f11afb7172a5486d 100644 (file)
@@ -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</li>
  *   <li>{@link NodeIdentifierWithPredicates} - Identifier of node (list item), which has cardinality {@code 0..n}</li>
  *   <li>{@link NodeWithValue} - Identifier of instance {@code leaf} node or {@code leaf-list} node</li>
- *   <li>{@link AugmentationIdentifier} - Identifier of instance of {@code augmentation} node</li>
  * </ul>
  *
  * @see <a href="http://tools.ietf.org/html/rfc6020#section-9.13">RFC6020</a>
@@ -449,12 +444,11 @@ public abstract sealed class YangInstanceIdentifier implements HierarchicalIdent
      * <ul>
      * <li>{@link NodeIdentifier} - Identifier of container or leaf
      * <li>{@link NodeIdentifierWithPredicates} - Identifier of list entries, which have key defined
-     * <li>{@link AugmentationIdentifier} - Identifier of augmentation
      * <li>{@link NodeWithValue} - Identifier of leaf-list entry
      * </ul>
      */
     public sealed interface PathArgument extends Comparable<PathArgument>, 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.
-     *
-     * <p>
-     * Augmentation is uniquely identified by set of all possible child nodes.
-     * This is possible
-     * to identify instance of augmentation,
-     * since RFC6020 states that <code>augment</code> that augment
-     * statement must not add multiple nodes from same namespace
-     * / module to the target node.
-     *
-     * @see <a href="http://tools.ietf.org/html/rfc6020#section-7.15">RFC6020</a>
-     */
-    public static final class AugmentationIdentifier implements PathArgument {
-        private static final long serialVersionUID = -8122335594681936939L;
-
-        private static final LoadingCache<ImmutableSet<QName>, AugmentationIdentifier> CACHE = CacheBuilder.newBuilder()
-                .weakValues().build(new CacheLoader<ImmutableSet<QName>, AugmentationIdentifier>() {
-                    @Override
-                    public AugmentationIdentifier load(final ImmutableSet<QName> key) {
-                        return new AugmentationIdentifier(key);
-                    }
-                });
-
-        private final @NonNull ImmutableSet<QName> 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<QName> 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<QName> 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<QName> 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<QName> 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<QName> 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<QName> 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<QName> 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 (file)
index 46c23cc..0000000
+++ /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 <code>augment</code> associated with parent node.
- *
- * <p>
- * 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.
- *
- * <p>
- * Augmentation node MUST NOT be direct child of other augmentation node.
- */
-public interface AugmentationNode extends DataContainerNode, DataContainerChild, MixinNode {
-    @Override
-    default Class<AugmentationNode> contract() {
-        return AugmentationNode.class;
-    }
-
-    /**
-     * Gets identifier of augmentation node. Returned identifier of augmentation node contains all possible
-     * direct child QNames.
-     *
-     * <p>
-     * This is sufficient to identify instance of augmentation, since RFC6020 states that <code>augment</code>
-     * 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();
-}
index 3d65a090a4f858b7f594751ec83b65c4ef9e475b..ac5565fe2c00ed725a1f740846704cfdb6361337 100644 (file)
@@ -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:
  *
  * <ul>
- *   <li>{@link AugmentationNode}</li>
  *   <li>{@link ChoiceNode}</li>
  *   <li>{@link ContainerNode}</li>
  *   <li>{@link ForeignDataNode}</li>
index 9ddf9a60cadf98b816c1fba9cc42f12e31bff9e7..6fc60cffc9b6d6b28963948abd1360ffeadc4020 100644 (file)
@@ -20,7 +20,6 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgum
  * <h2>Implementation notes</h2>
  * This interface should not be implemented directly, but rather implementing one of it's subclasses
  * <ul>
- *   <li>{@link AugmentationNode}</li>
  *   <li>{@link ChoiceNode}</li>
  *   <li>{@link ContainerNode}</li>
  *   <li>{@link MapEntryNode} and its specializations</li>
index 3a3a0befafcdf1ee860472c405d53f65654b1e3c..82b26112621548615c4772b18afc947fb13f2d9e 100644 (file)
@@ -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());
         }
     }
 }
index 17e633ba061fa6d7b7d41c94e7639b72f863d1dd..0844c86a3e2c1611d4664c57c83ea7d89ff0da0e 100644 (file)
@@ -42,8 +42,6 @@
  * which represents a leaf, which occurs mostly once per parent node, but
  * possible values could have different types. Maps to <i>choice</i> statement.
  * Types maps to the <i>case</i> statements for that <i>choice</i>.</li>
- * <li> {@link org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode}
- * - Node which represents a leaf, which occurs mostly once per parent node.</li>
  * </ul>
  * </li>
  * <li> {@link org.opendaylight.yangtools.yang.data.api.schema.LeafNode} - Node
  *    {@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}
  * </li>
  * </ul>
  * </li>
- * <li>(0..n) AugmentationNode
- * <ul>
- * <li>(Same as DataContainerNode)</li>
- * </ul>
- * </li>
  * </ul>
  * </li>
  * </ul>
  * 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;
index ea6e9d365c5a6bd45f9a396ddcc92e3702fedbfb..483d36065869a80fb6701e935455d4dbe268df34 100644 (file)
@@ -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());
index 94cc7f5e34636306fcb2b211e5ea6a222f4164c7..d8c5dbf069e9a75a1abc5a931b6278cebf256853 100644 (file)
@@ -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");
index 9481500dddde1f9a5690d0c5eb19b448c0b69674..6ff57c96f7ca65c65b99bae9665ca1f68bd53612 100644 (file)
@@ -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);
index 4a5a9e89b9dd4b51ff7583d805082e584aa967b3..e24428975fd96e2466d399cb40f3b2f60a9ead6a 100644 (file)
@@ -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());
index eb31e4a4fd832bac3311615c85a01ca7d53dfbd0..de28184832defd03d62eae1c5f1f12ab0e8ae8e2 100644 (file)
@@ -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;
  * <li>{@code anyxml} - An anyxml node event is emitted using {@link #startAnyxmlNode(NodeIdentifier, Class)}.</li>
  *
  * <li>{@code choice} - Choice node event is emitted by {@link #startChoiceNode(NodeIdentifier, int)} event.</li>
- *
- * <li>{@code augment} - Represents augmentation, augmentation node is started by invoking
- * {@link #startAugmentationNode(AugmentationIdentifier)}.
- * </li>
  * </ul>
  *
  * <h3>Implementation notes</h3>
@@ -166,7 +161,6 @@ public interface NormalizedNodeStreamWriter extends Closeable, Flushable,
      * <li>{@link #startLeafSet(NodeIdentifier, int)}</li>
      * <li>{@link #startMapNode(NodeIdentifier, int)}</li>
      * <li>{@link #startUnkeyedList(NodeIdentifier, int)}</li>
-     * <li>{@link #startAugmentationNode(AugmentationIdentifier)}</li>
      * </ul>
      *
      * @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,
      * <li>{@link #startLeafSet(NodeIdentifier, int)}</li>
      * <li>{@link #startMapNode(NodeIdentifier, int)}</li>
      * <li>{@link #startUnkeyedList(NodeIdentifier, int)}</li>
-     * <li>{@link #startAugmentationNode(AugmentationIdentifier)}</li>
      * </ul>
      *
      * @param name Identifier of node
@@ -244,7 +237,6 @@ public interface NormalizedNodeStreamWriter extends Closeable, Flushable,
      * <li>{@link #startLeafSet(NodeIdentifier, int)}</li>
      * <li>{@link #startMapNode(NodeIdentifier, int)}</li>
      * <li>{@link #startUnkeyedList(NodeIdentifier, int)}</li>
-     * <li>{@link #startAugmentationNode(AugmentationIdentifier)}</li>
      * </ul>
      *
      * @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:
-     * <ul>
-     * <li>{@link #startLeafNode}</li>
-     * <li>{@link #startContainerNode(NodeIdentifier, int)}</li>
-     * <li>{@link #startChoiceNode(NodeIdentifier, int)}</li>
-     * <li>{@link #startLeafSet(NodeIdentifier, int)}</li>
-     * <li>{@link #startMapNode(NodeIdentifier, int)}</li>
-     * <li>{@link #startUnkeyedList(NodeIdentifier, int)}</li>
-     * </ul>
-     *
-     * @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.
      *
index bcba032846c5823797ff8f1dfe93873cd19d554f..9f531bd42ae81b52c4eb0fa79127edafd0d81c80 100644 (file)
@@ -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;
             }));
         }
     }
index 4976ec62e386f3b926d2d49a5523c8808015496d..5f5039379310008b88cb358921288d9c6e8e66ac 100644 (file)
@@ -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()));
-    }
 }
index e5a1cfb198352512fbc3e3fc2a55f067407f2e24..9db903f2fc3b9f379d5c8c96b184087caf466cde 100644 (file)
@@ -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();
index 48b0ed0fa8ec9992810b4cdc18ca2a67601d40e8..4416aaf92b2a0a26227445f5001523dafe63c53d 100644 (file)
@@ -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);
index e5c5b20070cef56a0367e58bc0fceb52c6c61b43..582c71e47ff9dc3305536927b647d613e0a90eac 100644 (file)
@@ -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));
+        }
     }
 }
index 84a78d7a42ff8fa0fb979c7688a13f3bcb1afd03..4ba1ae3ecf8eaa88698cf31c920052da1daac777 100644 (file)
@@ -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)
index 68bbf7ce3971f939a4c4417dea5b79ef1a3b5480..28ac1a1f492f95fb886f70d12ffc7006561fb31f 100644 (file)
@@ -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)
index 96d962eb9d18d077cecd052a1a76226048f067cf..2063f1291a73ce1803b690cc1537cad33478b5d5 100644 (file)
@@ -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<AugmentationIdentifier, AugmentationNode> augmentationBuilder() {
-        return ImmutableAugmentationNodeBuilder.create();
-    }
-
-    public static DataContainerNodeBuilder<AugmentationIdentifier, AugmentationNode> augmentationBuilder(
-            final int sizeHint) {
-        return ImmutableAugmentationNodeBuilder.create(sizeHint);
-    }
-
     public static DataContainerNodeBuilder<NodeIdentifier, ChoiceNode> choiceBuilder() {
         return ImmutableChoiceNodeBuilder.create();
     }
index 80d18c2512f3fcae6115295ba9e8736b94720bff..3ec51ae71a8ae813b9710131073ee907ec3f09c2 100644 (file)
@@ -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
index fcc1420821c8e8ab087b48fba1fe7afafd53a80b..cde5ed4d496473d773297484001689e6a4536038 100644 (file)
@@ -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<QName, NormalizedNode> 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 (file)
index 76fb1d6..0000000
+++ /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<AugmentationIdentifier, AugmentationNode> {
-
-    protected ImmutableAugmentationNodeBuilder() {
-    }
-
-    protected ImmutableAugmentationNodeBuilder(final int sizeHint) {
-        super(sizeHint);
-    }
-
-    ImmutableAugmentationNodeBuilder(final ImmutableAugmentationNode node) {
-        super(node);
-    }
-
-    public static @NonNull DataContainerNodeBuilder<AugmentationIdentifier, AugmentationNode> create() {
-        return new ImmutableAugmentationNodeBuilder();
-    }
-
-    public static @NonNull DataContainerNodeBuilder<AugmentationIdentifier, AugmentationNode> create(
-            final int sizeHint) {
-        return new ImmutableAugmentationNodeBuilder(sizeHint);
-    }
-
-    public static @NonNull DataContainerNodeBuilder<AugmentationIdentifier, AugmentationNode> 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<AugmentationIdentifier, AugmentationNode> 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<AugmentationIdentifier, AugmentationNode> withoutChild(final PathArgument key) {
-        return super.withoutChild(key);
-    }
-
-    @Override
-    public AugmentationNode build() {
-        return new ImmutableAugmentationNode(getNodeIdentifier(), buildValue());
-    }
-
-    private static final class ImmutableAugmentationNode
-            extends AbstractImmutableDataContainerNode<AugmentationIdentifier, AugmentationNode>
-            implements AugmentationNode {
-
-        ImmutableAugmentationNode(final AugmentationIdentifier nodeIdentifier,
-                final Map<PathArgument, Object> children) {
-            super(children, nodeIdentifier);
-        }
-
-        @Override
-        protected Class<AugmentationNode> implementedType() {
-            return AugmentationNode.class;
-        }
-    }
-}
index 96c826736bba0782273c0e0c1c73961c71f0a026..b84eb85b8b6bb7f62f29b0d4a0ab9c16ce49733b 100644 (file)
@@ -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<QName, PathArgument> 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
index f2d95a76c5c05ea6cf22e5d005bbfcc291458928..892cc4cfe522608fdf568a2202b2e03a16e0b97f 100644 (file)
@@ -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<AugmentationIdentifier> augments = new HashSet<>();
     private final DataNodeContainer schema;
     private final Set<QName> 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) {
index 2e49ea1762b01be9f5c7805e1a3bb3ff86a908f9..29c31e96568a57569fd2710c2217328f1f67602f 100644 (file)
@@ -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<QName> childNodes, final Set<AugmentationIdentifier> augments) {
+            final Set<QName> 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<QName> childNodes, final Set<AugmentationIdentifier> 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<QName> 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) {
index 50492810e01c218a6478f4ef18808f19e5e770a9..dfb2ae8bf26adafa5d05802e4b9516cef8a524b8 100644 (file)
@@ -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)
index 7f687e08319ce48ba083e5a9e320759143bb8486..9d48b9fca49fb082e26735c0ffb7da5de0f2f984 100644 (file)
@@ -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())
index 4601117fbb350cfbd9ea3c023bdfe3c4052d475d..c77fc1c0493267fa69527c663357a899f0cf8ec0 100644 (file)
@@ -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.<Integer>leafBuilder().withNodeIdentifier(getNodeIdentifier("augmentUint32"))
-                                .withValue(11).build()).build();
-
-        builder.withChild(augmentation);
+        builder
+            .withChild(Builders.mapBuilder()
+                .withNodeIdentifier(getNodeIdentifier("list"))
+                .withChild(listChild1)
+                .build())
+            .withChild(Builders.<Integer>leafBuilder()
+                .withNodeIdentifier(getNodeIdentifier("augmentUint32"))
+                .withValue(11).build());
 
         // This works without schema (adding child from augment as a direct
         // child)
index 013ca97e833bd281e88767619a6b7a4dd9e74717..edbf6fca7d5dcd12767dd403d0a0871af99263f7 100644 (file)
@@ -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;
index 7a838f515f05018a66fbea56371bb17bf2168d16..096d4aa58ec7f8838bd0af86fc8414a56f90803c 100644 (file)
@@ -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<QName> builder = ImmutableSet.builder();
-        for (QName original : identifier.getPossibleChildNames()) {
-            builder.add(transform(original));
-        }
-        return new AugmentationIdentifier(builder.build());
-    }
-
     private NodeIdentifierWithPredicates transform(final NodeIdentifierWithPredicates identifier) {
         Map<QName, Object> keyValues = new HashMap<>();
         for (Map.Entry<QName, Object> 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 (file)
index 42b0ea3..0000000
+++ /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<AugmentationSchemaNode> {
-    private static final NormalizedNodeContainerSupport<AugmentationIdentifier, AugmentationNode> 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<? extends TreeNode> apply(final ModifiedNode modification, final Optional<? extends TreeNode> storeMeta,
-            final Version version) {
-        return AutomaticLifecycleMixin.apply(super::apply, this::applyWrite, emptyNode, modification, storeMeta,
-            version);
-    }
-
-    @Override
-    TreeNode defaultTreeNode() {
-        return defaultTreeNode(emptyNode);
-    }
-}
index 614779cc7a737a298dd58d5463bfd6efdd470a8f..3c88b78f67d986662ebdcba7f4135a08f6df9632 100644 (file)
@@ -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<NodeIdentifier, DataSchemaNode> children,
-                final ImmutableMap<AugmentationIdentifier, AugmentationSchemaNode> augmentations,
                 final MandatoryLeafEnforcer enforcer) {
-            super(children, augmentations);
+            super(children);
             this.enforcer = requireNonNull(enforcer);
         }
 
@@ -44,40 +38,28 @@ class CaseEnforcer implements Immutable {
     }
 
     private final ImmutableMap<NodeIdentifier, DataSchemaNode> children;
-    private final ImmutableMap<AugmentationIdentifier, AugmentationSchemaNode> augmentations;
 
-    CaseEnforcer(final ImmutableMap<NodeIdentifier, DataSchemaNode> children,
-            final ImmutableMap<AugmentationIdentifier, AugmentationSchemaNode> augmentations) {
+    CaseEnforcer(final ImmutableMap<NodeIdentifier, DataSchemaNode> 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<NodeIdentifier, DataSchemaNode> childrenBuilder = ImmutableMap.builder();
-        final Builder<AugmentationIdentifier, AugmentationSchemaNode> 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<NodeIdentifier, DataSchemaNode> children = childrenBuilder.build();
         if (children.isEmpty()) {
             return null;
         }
-        final ImmutableMap<AugmentationIdentifier, AugmentationSchemaNode> 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<Entry<NodeIdentifier, DataSchemaNode>> getChildEntries() {
@@ -88,18 +70,6 @@ class CaseEnforcer implements Immutable {
         return children.keySet();
     }
 
-    final Set<Entry<AugmentationIdentifier, AugmentationSchemaNode>> getAugmentationEntries() {
-        return augmentations.entrySet();
-    }
-
-    final Set<AugmentationIdentifier> getAugmentationIdentifiers() {
-        return augmentations.keySet();
-    }
-
-    final Set<PathArgument> getAllChildIdentifiers() {
-        return Sets.union(children.keySet(), augmentations.keySet());
-    }
-
     void enforceOnTreeNode(final NormalizedNode normalizedNode) {
         // Default is no-op
     }
index 7de1029c4f5e1a4df2d920bc93e488821c8c4f7b..f4749555e78bec215a04b0cf1f1b606970ffd1ab 100644 (file)
@@ -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<ChoiceSchemaNode> {
                     childBuilder.put(entry.getKey(), childOper);
                     enforcerBuilder.put(entry.getKey(), enforcer);
                 }
-                for (final Entry<AugmentationIdentifier, AugmentationSchemaNode> 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<ChoiceSchemaNode> {
 
             // 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<NormalizedNode> 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",
index ac76ba09921fecfbce746b1d8c562bdc7d2f843d..ac653baf234db34ad7b93b502cdb05e80a5e648b 100644 (file)
@@ -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<T extends DataNodeContainer & WithSt
 
     private ModificationApplyOperation resolveChild(final PathArgument identifier) {
         final T schema = getSchema();
-        if (identifier instanceof AugmentationIdentifier augId && schema instanceof AugmentationTarget augTarget) {
-            return SchemaAwareApplyOperation.from(schema, augTarget, augId, treeConfig);
-        }
-
         final var qname = identifier.getNodeType();
         final var child = schema.dataChildByName(qname);
         if (child == null) {
index 65373e2d4a395db92bfb893547658e57b59c593a..a97f65ee36293da706eaf710877385b621aa9d6a 100644 (file)
@@ -10,16 +10,13 @@ package org.opendaylight.yangtools.yang.data.tree.impl;
 import static com.google.common.base.Verify.verify;
 import static java.util.Objects.requireNonNull;
 
-import java.util.List;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodes;
-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.DataNodeContainer;
@@ -46,25 +43,9 @@ final class MandatoryDescendant implements Immutable {
     }
 
     static @NonNull MandatoryDescendant create(final YangInstanceIdentifier parentId,
-            final DataNodeContainer parentSchema, final DataSchemaNode childSchema, final boolean inAugmentedSubtree) {
-        final NodeIdentifier childId = NodeIdentifier.create(childSchema.getQName());
-
-        if (childSchema.isAugmenting()) {
-            if (!inAugmentedSubtree) {
-                final AugmentationSchemaNode aug = getAugIdentifierOfChild(parentSchema, childSchema);
-                return new MandatoryDescendant(
-                    parentId.node(DataSchemaContextNode.augmentationIdentifierFrom(aug)).node(childId).toOptimized(),
-                    parentId.node(childId).toOptimized());
-            }
-
-            final List<PathArgument> 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) {
index 398d07f110066f36a12bc516135c5d0610193812..3ab1934b15fd0b8a32dea57bce14fb9cec5d61b0 100644 (file)
@@ -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.<MandatoryDescendant>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<MandatoryDescendant> builder,
-        final YangInstanceIdentifier id, final DataNodeContainer schema, final TreeType type,
-        final boolean augmentedSubtree) {
+    private static void findMandatoryNodes(final Builder<MandatoryDescendant> 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);
                     }
index a875c3d55f318c1501e2ba26cf7df60909862ad6..9052f8a1aa1450e4e4e5e61973314ff1e0fa0411 100644 (file)
@@ -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<T extends WithStatus> 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) {
index 91050b627d0bdf3953b07f16fb029290ea490094..757ac3d55973eedaaa6193d11d2b18a1f8701aa6 100644 (file)
@@ -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);
                 }
             }
index b89d1820887612d21b5ea5b8b4b44f686d87a4fc..7574b2dd6ce93b9796e8c654846aaed3f146d1da 100644 (file)
@@ -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();
     }
index bcfdd3e7f1e468fdffe929ae41f591d47ebaaf0e..30d1eb41b21de1bc29fc0954438ee30f44e27744 100644 (file)
@@ -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 "));
     }
 }
index 66fdedbde1ca733ec602f224bafff91ec80abee8..01ca692172c06daaef5a277cc3febb5edecd00e2 100644 (file)
@@ -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 = {",
index dbb973c750e2d3ceb7900957dc2233f6670127a2..abcd8f665e03341209555577f47bcab721b2d090 100644 (file)
@@ -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());
 
     }
 
index 662b0b80dee87f3bfa2aa3f7c4fbc67af258c12c..5edf9018ea2e95a6046e159d2cd464ccbb797c22 100644 (file)
@@ -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())
index cf8a5f45d329ae4aca92dd61269f5d166bdea3e6..57df5c9e001312f778d7dac34763036359cc2f43 100644 (file)
@@ -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 (file)
index 2482631..0000000
+++ /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<AugmentationIdentifier> {
-    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<QName> getQNameIdentifiers() {
-        return getIdentifier().getPossibleChildNames();
-    }
-
-    @Override
-    protected void pushToStack(final SchemaInferenceStack stack) {
-        // No-op
-    }
-}
index 37d6d5730c9008c5b5f8a8dcc651f56e0d335f71..683f0463e21edfde57cbd7d2a542a42f4efe35bc 100644 (file)
@@ -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<T extends DataSchemaNode> extends Abstr
         for (AbstractNodeDataWithSchema<?> child : children) {
             child.write(writer, metaWriter);
         }
-        for (Entry<AugmentationSchemaNode, Collection<AbstractNodeDataWithSchema<?>>> augmentationToChild
-                : augmentationsToChild.asMap().entrySet()) {
-            final Collection<AbstractNodeDataWithSchema<?>> 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);
             }
         }
     }
index d07854fe00feb6d441c29c72728e78a8d8f63cbb..c8022f44024eb7da7b02ff80421968e64994f049 100644 (file)
@@ -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<T extends PathArgument> 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());
     }
 
index 38dc78ff8ec5c3ec6efd7f958da9f691f3bde52e..c24a9fea7644f54aa9b89b77ab69de2dc17e1407 100644 (file)
@@ -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<T extends PathArgument> extends Abst
      * This node is a {@link NormalizedNode} intermediate, not represented in RFC7950 XML encoding. This is typically
      * one of
      * <ul>
-     *   <li>{@link AugmentationNode} backed by an {@link AugmentationSchemaNode}, or</li>
      *   <li>{@link ChoiceNode} backed by a {@link ChoiceSchemaNode}, or</li>
      *   <li>{@link LeafSetNode} backed by a {@link LeafListSchemaNode}, or</li>
      *   <li>{@link MapNode} backed by a {@link ListSchemaNode} with a non-empty
@@ -200,12 +194,7 @@ public abstract class DataSchemaContextNode<T extends PathArgument> 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<T extends PathArgument> 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<T extends PathArgument> extends Abst
         }
     }
 
-    /**
-     * Returns a DataContextNodeOperation for provided child node
-     *
-     * <p>
-     * 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()) {
index c37faab53a4a2974a1c50826835defeef6037b45..749f45b5c36719d316d8596f4573daddfaf5ced9 100644 (file)
@@ -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<CaseSchemaNode> 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<CaseSchemaNode> 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<QName> 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.
index f5bc6c591211faabaa5625fabc3236bf33a4c268..0007d923d19fd273f23afe0bcd68369f15c389e0 100644 (file)
@@ -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);
index d065386cf1fc194ca7fbc36724fbd721ed40b8c1..57ab071a6e87f1d0fb1a76ed869336d604c85304 100644 (file)
@@ -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<QName> 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;
-    }
 }
index 81374bcc7b55dbeae3e65b7b6feedd99440d4c22..c31668724722a7792f19d6204c5da6357df3951a 100644 (file)
@@ -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();