StreamWriterMountPointExtension operates on MountPointLabel 95/105995/9
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 16 May 2023 16:41:09 +0000 (18:41 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 16 May 2023 21:42:21 +0000 (23:42 +0200)
Disconnect stream support from MountPointIdentifier, so that we can move
it and evolve it.

JIRA: YANGTOOLS-1172
Change-Id: I7f6a190575bf4477795c1cc079091d644f966310
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
codec/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONNormalizedNodeStreamWriter.java
codec/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlParserStream.java
data/rfc8528-data-util/src/main/java/org/opendaylight/yangtools/rfc8528/data/util/MountPointNormalizedNodeWriter.java
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/StreamWriterMountPointExtension.java [moved from data/rfc8528-data-api/src/main/java/org/opendaylight/yangtools/rfc8528/data/api/StreamWriterMountPointExtension.java with 77% similarity]
data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/ImmutableMountPointNormalizedNodeStreamWriter.java
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AbstractMountPointDataWithSchema.java
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/MountPointData.java

index d8d2b51d5910f6102d71071277a5eb9949135f7b..d17a9b345c1522f8dc17b4d487aa9d27a290280f 100644 (file)
@@ -20,8 +20,7 @@ import java.util.regex.Pattern;
 import javax.xml.transform.dom.DOMSource;
 import org.checkerframework.checker.regex.qual.Regex;
 import org.eclipse.jdt.annotation.Nullable;
-import org.opendaylight.yangtools.rfc8528.data.api.MountPointIdentifier;
-import org.opendaylight.yangtools.rfc8528.data.api.StreamWriterMountPointExtension;
+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;
@@ -31,6 +30,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.MountPointContext;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedAnydata;
 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriterExtension;
+import org.opendaylight.yangtools.yang.data.api.schema.stream.StreamWriterMountPointExtension;
 import org.opendaylight.yangtools.yang.data.util.NormalizedNodeStreamWriterStack;
 import org.opendaylight.yangtools.yang.model.api.AnydataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode;
@@ -407,7 +407,7 @@ public abstract class JSONNormalizedNodeStreamWriter implements NormalizedNodeSt
     }
 
     @Override
-    public final NormalizedNodeStreamWriter startMountPoint(final MountPointIdentifier mountId,
+    public final NormalizedNodeStreamWriter startMountPoint(final MountPointLabel label,
             final MountPointContext mountCtx) throws IOException {
         final EffectiveModelContext ctx = mountCtx.getEffectiveModelContext();
         return new Nested(codecs.rebaseTo(ctx), NormalizedNodeStreamWriterStack.of(ctx), writer,
index 252ab32a722c2500692a80dc58771204671eaeb3..74abbdc3ddeefe45d16bd7a08723bcb46f6da2a6 100644 (file)
@@ -42,8 +42,8 @@ import javax.xml.transform.dom.DOMResult;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stax.StAXSource;
 import org.opendaylight.yangtools.rfc7952.model.api.AnnotationSchemaNode;
-import org.opendaylight.yangtools.rfc8528.data.api.MountPointIdentifier;
 import org.opendaylight.yangtools.rfc8528.data.api.YangLibraryConstants;
+import org.opendaylight.yangtools.rfc8528.model.api.MountPointLabel;
 import org.opendaylight.yangtools.rfc8528.model.api.MountPointSchemaNode;
 import org.opendaylight.yangtools.rfc8528.model.api.SchemaMountConstants;
 import org.opendaylight.yangtools.yang.common.QName;
@@ -578,19 +578,19 @@ public final class XmlParserStream implements Closeable, Flushable {
                         }
 
                         if (optMount.isPresent()) {
-                            final var mountId = MountPointIdentifier.of(optMount.orElseThrow().getQName());
+                            final var label = new MountPointLabel(optMount.orElseThrow().getQName());
                             LOG.debug("Assuming node {} and namespace {} belongs to mount point {}", xmlElementName,
-                                nsUri, mountId);
+                                nsUri, label);
 
-                            final var optFactory = codecs.mountPointContext().findMountPoint(mountId.getLabel());
+                            final var optFactory = codecs.mountPointContext().findMountPoint(label);
                             if (optFactory.isPresent()) {
-                                final var mountData = mountParent.getMountPointData(mountId, optFactory.orElseThrow());
+                                final var mountData = mountParent.getMountPointData(label, optFactory.orElseThrow());
                                 addMountPointChild(mountData, nsUri, xmlElementName,
                                     new DOMSource(readAnyXmlValue(in).getDocumentElement()));
                                 continue;
                             }
 
-                            LOG.debug("Mount point {} not attached", mountId);
+                            LOG.debug("Mount point {} not attached", label);
                         }
                     }
 
index 3f3e544d657f46f18411aec4c91bb7116b79395c..24814d10c99c2df6c99abb2bbbb6573e48af3d3b 100644 (file)
@@ -15,11 +15,11 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.IOException;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.rfc8528.data.api.MountPointNode;
-import org.opendaylight.yangtools.rfc8528.data.api.StreamWriterMountPointExtension;
 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;
 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter;
+import org.opendaylight.yangtools.yang.data.api.schema.stream.StreamWriterMountPointExtension;
 
 /**
  * A {@link MountPointNode}-aware counterpart to {@link NormalizedNodeWriter}. Based on the backing writer's capability
@@ -49,7 +49,7 @@ public abstract class MountPointNormalizedNodeWriter extends NormalizedNodeWrite
         @Override
         void writeMountPoint(final MountPointNode node) throws IOException {
             try (MountPointNormalizedNodeWriter writer = forStreamWriter(mountWriter.startMountPoint(
-                    node.getIdentifier(), node.getMountPointContext()))) {
+                    node.getIdentifier().getLabel(), node.getMountPointContext()))) {
                 for (DataContainerChild child : node.body()) {
                     writer.write(child);
                 }
@@ -5,14 +5,13 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.yangtools.rfc8528.data.api;
+package org.opendaylight.yangtools.yang.data.api.schema.stream;
 
 import com.google.common.annotations.Beta;
 import java.io.IOException;
 import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.opendaylight.yangtools.rfc8528.model.api.MountPointLabel;
 import org.opendaylight.yangtools.yang.data.api.schema.MountPointContext;
-import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
-import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriterExtension;
 
 /**
  * A {@link NormalizedNodeStreamWriterExtension} exposed by stream writers which can handle mount point data, notably
@@ -28,11 +27,10 @@ public interface StreamWriterMountPointExtension extends NormalizedNodeStreamWri
      * returned writer will be {@link NormalizedNodeStreamWriter#close()}d, at which point the parent writer will be
      * used again to emit the rest of the tree.
      *
-     * @param mountId Mount point identifier
+     * @param label Mount point label
      * @param mountCtx Mount point context
      * @return A new NormalizedNodeStreamWriter
      * @throws IOException if an error occurs
      */
-    NormalizedNodeStreamWriter startMountPoint(MountPointIdentifier mountId, MountPointContext mountCtx)
-            throws IOException;
+    NormalizedNodeStreamWriter startMountPoint(MountPointLabel label, MountPointContext mountCtx) throws IOException;
 }
index 53f90ed9175ba31ee9815986393019db021b6ac7..214347ddf296a20dbafb7f48ccbfb72254614e60 100644 (file)
@@ -12,13 +12,14 @@ import com.google.common.collect.ClassToInstanceMap;
 import com.google.common.collect.ImmutableClassToInstanceMap;
 import java.io.IOException;
 import org.opendaylight.yangtools.rfc8528.data.api.MountPointIdentifier;
-import org.opendaylight.yangtools.rfc8528.data.api.StreamWriterMountPointExtension;
 import org.opendaylight.yangtools.rfc8528.data.util.ImmutableMountPointNode;
+import org.opendaylight.yangtools.rfc8528.model.api.MountPointLabel;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MountPointContext;
 import org.opendaylight.yangtools.yang.data.api.schema.stream.ForwardingNormalizedNodeStreamWriter;
 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriterExtension;
+import org.opendaylight.yangtools.yang.data.api.schema.stream.StreamWriterMountPointExtension;
 
 // FIXME: document usage of this
 @Beta
@@ -34,7 +35,7 @@ public abstract class ImmutableMountPointNormalizedNodeStreamWriter extends Immu
     }
 
     @Override
-    public final NormalizedNodeStreamWriter startMountPoint(final MountPointIdentifier mountId,
+    public final NormalizedNodeStreamWriter startMountPoint(final MountPointLabel label,
             final MountPointContext mountCtx) {
         final NormalizedNodeResult mountResult = new NormalizedNodeResult();
         final NormalizedNodeStreamWriter mountDelegate = ImmutableNormalizedNodeStreamWriter.from(mountResult);
@@ -54,7 +55,7 @@ public abstract class ImmutableMountPointNormalizedNodeStreamWriter extends Immu
                     throw new IOException("Unhandled mount data " + data);
                 }
 
-                writeChild(ImmutableMountPointNode.of(mountId, mountCtx, container));
+                writeChild(ImmutableMountPointNode.of(new MountPointIdentifier(label), mountCtx, container));
             }
         };
     }
index 213ccb27d32144a6bf977aa55eda2f84a6801cd2..6b59c0d2c035b9c67869c895e721c101086fe639 100644 (file)
@@ -11,7 +11,7 @@ import static com.google.common.base.Preconditions.checkState;
 
 import com.google.common.annotations.Beta;
 import java.io.IOException;
-import org.opendaylight.yangtools.rfc8528.data.api.MountPointIdentifier;
+import org.opendaylight.yangtools.rfc8528.model.api.MountPointLabel;
 import org.opendaylight.yangtools.yang.data.api.schema.MountPointContextFactory;
 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
 import org.opendaylight.yangtools.yang.data.api.schema.stream.StreamWriterMetadataExtension;
@@ -19,7 +19,7 @@ import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 
 /**
  * A {@link CompositeNodeDataWithSchema} which can hold mount-point data. This data is manipulated through
- * {@link #getMountPointData(MountPointIdentifier, MountPointContextFactory)}.
+ * {@link #getMountPointData(MountPointLabel, MountPointContextFactory)}.
  */
 @Beta
 public abstract class AbstractMountPointDataWithSchema<T extends DataSchemaNode>
@@ -39,10 +39,9 @@ public abstract class AbstractMountPointDataWithSchema<T extends DataSchemaNode>
         }
     }
 
-    public final MountPointData getMountPointData(final MountPointIdentifier label,
-            final MountPointContextFactory factory) {
+    public final MountPointData getMountPointData(final MountPointLabel label, final MountPointContextFactory factory) {
         if (mountedData != null) {
-            final MountPointIdentifier existing = mountedData.getIdentifier();
+            final var existing = mountedData.getIdentifier();
             checkState(label.equals(existing), "Mismatched mount label {}, already have {}", label, existing);
         } else {
             mountedData = new MountPointData(label, factory);
index a77c0ee2e47626f860a3118d2683e4053c851675..8885d7637b98005fc61a38ecefbd74a299a9f622 100644 (file)
@@ -18,14 +18,14 @@ import java.util.List;
 import java.util.Map;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.concepts.AbstractSimpleIdentifiable;
-import org.opendaylight.yangtools.rfc8528.data.api.MountPointIdentifier;
-import org.opendaylight.yangtools.rfc8528.data.api.StreamWriterMountPointExtension;
+import org.opendaylight.yangtools.rfc8528.model.api.MountPointLabel;
 import org.opendaylight.yangtools.yang.data.api.schema.MountPointChild;
 import org.opendaylight.yangtools.yang.data.api.schema.MountPointContext;
 import org.opendaylight.yangtools.yang.data.api.schema.MountPointContextFactory;
 import org.opendaylight.yangtools.yang.data.api.schema.MountPointContextFactory.ContainerName;
 import org.opendaylight.yangtools.yang.data.api.schema.MountPointException;
 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
+import org.opendaylight.yangtools.yang.data.api.schema.stream.StreamWriterMountPointExtension;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -33,7 +33,7 @@ import org.slf4j.LoggerFactory;
  * YANG Schema Mount-supported data attached to either a {@code list} item or a {@code container}.
  */
 @Beta
-public final class MountPointData extends AbstractSimpleIdentifiable<MountPointIdentifier> {
+public final class MountPointData extends AbstractSimpleIdentifiable<MountPointLabel> {
     private static final Logger LOG = LoggerFactory.getLogger(MountPointData.class);
 
     private final Map<ContainerName, MountPointChild> yangLib = new EnumMap<>(ContainerName.class);
@@ -42,8 +42,8 @@ public final class MountPointData extends AbstractSimpleIdentifiable<MountPointI
 
     private MountPointChild schemaMounts;
 
-    MountPointData(final MountPointIdentifier mountId, final MountPointContextFactory contextFactory) {
-        super(mountId);
+    MountPointData(final MountPointLabel label, final MountPointContextFactory contextFactory) {
+        super(label);
         this.contextFactory = requireNonNull(contextFactory);
     }