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;
* @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;
* @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);
@Override
public void close() throws IOException {
- writer.flush();
- writer.close();
+ try {
+ writer.flush();
+ } finally {
+ writer.close();
+ }
}
@Override