From 8b74f965b8a7cb7d592c84e87bda32bcefd06162 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Wed, 1 Jun 2016 12:42:48 +0200 Subject: [PATCH] BUG-865: integrate SchemaAwareNormalizedNodeStreamWriter DataSchemaNodeAware can be cleanly integrated into NormalizedNodeStreamWriter using default method implementation. Do that, deprecating the wiring. Once users are removed in downstream projects, these interfaces can be removed. Change-Id: Icf8d11ba2ee73d6914485f39b0f2c309ff35acc0 Signed-off-by: Robert Varga --- .../api/schema/stream/DataSchemaNodeAware.java | 3 +++ .../stream/NormalizedNodeStreamWriter.java | 17 ++++++++++++++++- .../SchemaAwareNormalizedNodeStreamWriter.java | 5 ++++- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/DataSchemaNodeAware.java b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/DataSchemaNodeAware.java index f2108ae0ac..8b086c2120 100644 --- a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/DataSchemaNodeAware.java +++ b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/DataSchemaNodeAware.java @@ -15,7 +15,10 @@ import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; * Mixin interface for {@link NormalizedNodeStreamWriter} allowing callers to inform the writer of the * {@link DataSchemaNode} corresponding to the next node which will either be started or emitted. This interface should * not be implemented directly. + * + * @deprecated This interface has been integrated into {@link NormalizedNodeStreamWriter}. */ +@Deprecated @Beta public interface DataSchemaNodeAware { /** diff --git a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/NormalizedNodeStreamWriter.java b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/NormalizedNodeStreamWriter.java index c0312864dc..1b1bd097b1 100644 --- a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/NormalizedNodeStreamWriter.java +++ b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/NormalizedNodeStreamWriter.java @@ -7,13 +7,16 @@ */ package org.opendaylight.yangtools.yang.data.api.schema.stream; +import com.google.common.base.Preconditions; import java.io.Closeable; import java.io.Flushable; import java.io.IOException; +import javax.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.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; +import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; /** @@ -74,7 +77,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdent * and resources needlessly. * */ -public interface NormalizedNodeStreamWriter extends Closeable, Flushable { +public interface NormalizedNodeStreamWriter extends Closeable, Flushable, DataSchemaNodeAware { /** * Methods in this interface allow users to hint the underlying @@ -472,6 +475,18 @@ public interface NormalizedNodeStreamWriter extends Closeable, Flushable { */ void endNode() throws IOException; + /** + * Attach the specified {@link DataSchemaNode} to the next node which will get started or emitted. The default + * implementation does nothing. + * + * @param schema DataSchemaNode + * @throws NullPointerException if the argument is null + */ + @Override + default void nextDataSchemaNode(@Nonnull final DataSchemaNode schema) { + Preconditions.checkNotNull(schema); + } + @Override void close() throws IOException; diff --git a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/SchemaAwareNormalizedNodeStreamWriter.java b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/SchemaAwareNormalizedNodeStreamWriter.java index dbdabcae69..5ce4336fc4 100644 --- a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/SchemaAwareNormalizedNodeStreamWriter.java +++ b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/SchemaAwareNormalizedNodeStreamWriter.java @@ -13,8 +13,11 @@ import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; /** * Marker interface for {@link NormalizedNodeStreamWriter}s which can take advantage of {@link DataSchemaNode} * information when writing the nodes. + * + * @deprecated This interface has been integrated into {@link NormalizedNodeStreamWriter} */ +@Deprecated @Beta -public interface SchemaAwareNormalizedNodeStreamWriter extends NormalizedNodeStreamWriter, DataSchemaNodeAware { +public interface SchemaAwareNormalizedNodeStreamWriter extends NormalizedNodeStreamWriter { } -- 2.36.6