Rework NormalizedNode type hierarchy
[yangtools.git] / yang / rfc7952-data-util / src / main / java / org / opendaylight / yangtools / rfc7952 / data / util / NormalizedMetadataWriter.java
index 43af90faafc5fc6a2438901a0842da238cdcd2a8..80ae0d6b12b8293d5b694c81949e347445c180b0 100644 (file)
@@ -16,7 +16,7 @@ import java.io.Flushable;
 import java.io.IOException;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.rfc7952.data.api.NormalizedMetadata;
-import org.opendaylight.yangtools.rfc7952.data.api.NormalizedMetadataStreamWriter;
+import org.opendaylight.yangtools.rfc7952.data.api.StreamWriterMetadataExtension;
 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.stream.NormalizedNodeStreamWriter;
@@ -49,6 +49,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWrit
  * @author Robert Varga
  */
 @Beta
+// FIXME: 7.0.0: consider moving this class to api to keep related stuff together
 public final class NormalizedMetadataWriter implements Closeable, Flushable {
     private final NormalizedNodeStreamWriter writer;
     private final boolean orderKeyLeaves;
@@ -98,14 +99,14 @@ public final class NormalizedMetadataWriter implements Closeable, Flushable {
      * @throws IllegalArgumentException if metadata does not match data
      * @throws IOException when thrown from the backing writer.
      */
-    public @NonNull NormalizedMetadataWriter write(final NormalizedNode<?, ?> data, final NormalizedMetadata metadata)
+    public @NonNull NormalizedMetadataWriter write(final NormalizedNode data, final NormalizedMetadata metadata)
             throws IOException {
         final PathArgument dataId = data.getIdentifier();
         final PathArgument metaId = metadata.getIdentifier();
         checkArgument(dataId.equals(metaId), "Mismatched data %s and metadata %s", dataId, metaId);
 
-        final NormalizedMetadataStreamWriter metaWriter = writer.getExtensions()
-                .getInstance(NormalizedMetadataStreamWriter.class);
+        final StreamWriterMetadataExtension metaWriter = writer.getExtensions()
+                .getInstance(StreamWriterMetadataExtension.class);
         final NormalizedNodeStreamWriter delegate = metaWriter == null ? writer
                 : new NormalizedNodeStreamWriterMetadataDecorator(writer, metaWriter, metadata);
 
@@ -117,8 +118,11 @@ public final class NormalizedMetadataWriter implements Closeable, Flushable {
 
     @Override
     public void close() throws IOException {
-        writer.flush();
-        writer.close();
+        try {
+            writer.flush();
+        } finally {
+            writer.close();
+        }
     }
 
     @Override