From 8dd08cfffbefdb658e9a626f566651c19c66b097 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 7 Sep 2020 13:36:25 +0200 Subject: [PATCH] Mass-migrate to use EffectiveModelContext This is the next step in migration: make sure most of our yang-data constructs operate on EffectiveModelContext. Change-Id: I85a314899bcd29ead0396a4b4ebd369f4e141014 Signed-off-by: Robert Varga --- .../ImmutableMetadataNormalizedAnydata.java | 8 +-- .../data/api/schema/NormalizedAnydata.java | 4 +- .../data/codec/gson/IdentityrefJSONCodec.java | 6 +-- .../data/codec/gson/JSONCodecFactory.java | 9 ++-- .../codec/gson/JSONCodecFactorySupplier.java | 51 ++++++++++--------- .../gson/JSONNormalizedNodeStreamWriter.java | 31 +++++------ .../codec/gson/JSONStreamWriterContext.java | 17 ++++--- .../JSONStreamWriterExclusiveRootContext.java | 4 +- .../gson/JSONStreamWriterListContext.java | 4 +- .../JSONStreamWriterNamedObjectContext.java | 4 +- .../gson/JSONStreamWriterObjectContext.java | 4 +- .../gson/JSONStreamWriterURIContext.java | 4 +- .../data/codec/gson/JsonParserStream.java | 9 ++-- .../codec/gson/Lhotka02JSONCodecFactory.java | 7 +-- .../codec/gson/RFC7951JSONCodecFactory.java | 6 +-- .../data/codec/gson/AbstractYT1027Test.java | 4 +- .../yang/data/codec/gson/Bug4501Test.java | 4 +- .../yang/data/codec/gson/Bug4969Test.java | 12 +++-- .../yang/data/codec/gson/Bug5446Test.java | 4 +- .../yang/data/codec/gson/Bug6112Test.java | 4 +- .../yang/data/codec/gson/Bug7246Test.java | 7 +-- .../yang/data/codec/gson/Bug8083Test.java | 10 ++-- .../yang/data/codec/gson/TestUtils.java | 5 +- .../codec/xml/DOMSourceMountPointChild.java | 2 +- .../yang/data/codec/xml/XmlCodecFactory.java | 6 +-- .../yang/data/codec/xml/XmlParserStream.java | 5 +- .../xml/XmlStringInstanceIdentifierCodec.java | 6 +-- .../data/util/ImmutableNormalizedAnydata.java | 8 +-- .../data/util/codec/AbstractCodecFactory.java | 12 +++-- 29 files changed, 134 insertions(+), 123 deletions(-) diff --git a/yang/rfc7952-data-util/src/main/java/org/opendaylight/yangtools/rfc7952/data/util/ImmutableMetadataNormalizedAnydata.java b/yang/rfc7952-data-util/src/main/java/org/opendaylight/yangtools/rfc7952/data/util/ImmutableMetadataNormalizedAnydata.java index b6f4aa3443..a0502adfcc 100644 --- a/yang/rfc7952-data-util/src/main/java/org/opendaylight/yangtools/rfc7952/data/util/ImmutableMetadataNormalizedAnydata.java +++ b/yang/rfc7952-data-util/src/main/java/org/opendaylight/yangtools/rfc7952/data/util/ImmutableMetadataNormalizedAnydata.java @@ -19,7 +19,7 @@ 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.util.ImmutableNormalizedAnydata; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; @Beta @NonNullByDefault @@ -27,13 +27,13 @@ public final class ImmutableMetadataNormalizedAnydata extends ImmutableNormalize implements MetadataNormalizedAnydata { private final NormalizedMetadata metadata; - public ImmutableMetadataNormalizedAnydata(final SchemaContext schemaContext, final DataSchemaNode contextNode, - final NormalizedNode data, final NormalizedMetadata metadata) { + public ImmutableMetadataNormalizedAnydata(final EffectiveModelContext schemaContext, + final DataSchemaNode contextNode, final NormalizedNode data, final NormalizedMetadata metadata) { super(schemaContext, contextNode, data); this.metadata = requireNonNull(metadata); } - public static ImmutableNormalizedAnydata ofOptional(final SchemaContext schemaContext, + public static ImmutableNormalizedAnydata ofOptional(final EffectiveModelContext schemaContext, final DataSchemaNode contextNode, final NormalizedNode data, final Optional metadata) { return metadata.isPresent() diff --git a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/NormalizedAnydata.java b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/NormalizedAnydata.java index b231e91781..f7c683f5d5 100644 --- a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/NormalizedAnydata.java +++ b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/NormalizedAnydata.java @@ -14,7 +14,7 @@ import org.opendaylight.yangtools.concepts.Immutable; 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.model.api.DataSchemaNode; -import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextProvider; /** * The contents of an {@code anydata} node in a normalized format. This representation acts as a schema-bound bridge @@ -27,7 +27,7 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider; */ @Beta @NonNullByDefault -public interface NormalizedAnydata extends Immutable, SchemaContextProvider { +public interface NormalizedAnydata extends Immutable, EffectiveModelContextProvider { DataSchemaNode getContextNode(); diff --git a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/IdentityrefJSONCodec.java b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/IdentityrefJSONCodec.java index 73f31de069..5257e9d02a 100644 --- a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/IdentityrefJSONCodec.java +++ b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/IdentityrefJSONCodec.java @@ -18,14 +18,14 @@ import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.data.util.codec.IdentityCodecUtil; import org.opendaylight.yangtools.yang.data.util.codec.QNameCodecUtil; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.model.api.Module; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; final class IdentityrefJSONCodec implements JSONCodec { - private final SchemaContext schemaContext; + private final EffectiveModelContext schemaContext; private final QNameModule parentModule; - IdentityrefJSONCodec(final SchemaContext context, final QNameModule parentModule) { + IdentityrefJSONCodec(final EffectiveModelContext context, final QNameModule parentModule) { this.schemaContext = requireNonNull(context); this.parentModule = requireNonNull(parentModule); } diff --git a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONCodecFactory.java b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONCodecFactory.java index 87835b0dfa..a945c604a9 100644 --- a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONCodecFactory.java +++ b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONCodecFactory.java @@ -21,6 +21,7 @@ import org.opendaylight.yangtools.yang.data.impl.codec.StringStringCodec; import org.opendaylight.yangtools.yang.data.util.codec.AbstractCodecFactory; import org.opendaylight.yangtools.yang.data.util.codec.CodecCache; import org.opendaylight.yangtools.yang.data.util.codec.LazyCodecCache; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.type.BinaryTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition; @@ -48,7 +49,7 @@ import org.opendaylight.yangtools.yang.model.api.type.UnknownTypeDefinition; */ @Beta public abstract class JSONCodecFactory extends AbstractCodecFactory> { - JSONCodecFactory(final @NonNull SchemaContext context, final @NonNull CodecCache> cache) { + JSONCodecFactory(final @NonNull EffectiveModelContext context, final @NonNull CodecCache> cache) { super(context, cache); } @@ -84,7 +85,7 @@ public abstract class JSONCodecFactory extends AbstractCodecFactory @Override protected final JSONCodec identityRefCodec(final IdentityrefTypeDefinition type, final QNameModule module) { - return new IdentityrefJSONCodec(getSchemaContext(), module); + return new IdentityrefJSONCodec(getEffectiveModelContext(), module); } @Override @@ -154,11 +155,11 @@ public abstract class JSONCodecFactory extends AbstractCodecFactory // // The above is not currently possible, as we cannot reference JSONCodecFactorySupplier from the // factory due to that potentially creating a circular reference. - final JSONCodecFactory rebaseTo(final SchemaContext newSchemaContext) { + final JSONCodecFactory rebaseTo(final EffectiveModelContext newSchemaContext) { return rebaseTo(newSchemaContext, new LazyCodecCache<>()); } - abstract JSONCodecFactory rebaseTo(SchemaContext newSchemaContext, CodecCache> newCache); + abstract JSONCodecFactory rebaseTo(EffectiveModelContext newSchemaContext, CodecCache> newCache); abstract JSONCodec wrapDecimalCodec(DecimalStringCodec decimalCodec); diff --git a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONCodecFactorySupplier.java b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONCodecFactorySupplier.java index 4be9b89794..c42e4d5102 100644 --- a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONCodecFactorySupplier.java +++ b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONCodecFactorySupplier.java @@ -25,7 +25,7 @@ import org.opendaylight.yangtools.yang.data.util.codec.PrecomputedCodecCache; import org.opendaylight.yangtools.yang.data.util.codec.SharedCodecCache; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.model.api.TypedDataSchemaNode; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -42,7 +42,7 @@ public enum JSONCodecFactorySupplier { */ RFC7951() { @Override - JSONCodecFactory createFactory(final SchemaContext context, final CodecCache> cache) { + JSONCodecFactory createFactory(final EffectiveModelContext context, final CodecCache> cache) { return new RFC7951JSONCodecFactory(context, cache); } }, @@ -51,22 +51,23 @@ public enum JSONCodecFactorySupplier { */ DRAFT_LHOTKA_NETMOD_YANG_JSON_02() { @Override - JSONCodecFactory createFactory(final SchemaContext context, final CodecCache> cache) { + JSONCodecFactory createFactory(final EffectiveModelContext context, final CodecCache> cache) { return new Lhotka02JSONCodecFactory(context, cache); } }; private static final Logger LOG = LoggerFactory.getLogger(JSONCodecFactorySupplier.class); - private static final class EagerCacheLoader extends CacheLoader { - private final BiFunction>, JSONCodecFactory> factorySupplier; + private static final class EagerCacheLoader extends CacheLoader { + private final BiFunction>, JSONCodecFactory> factorySupplier; - EagerCacheLoader(final BiFunction>, JSONCodecFactory> factorySupplier) { + EagerCacheLoader(final BiFunction>, JSONCodecFactory> factorySupplier) { this.factorySupplier = requireNonNull(factorySupplier); } @Override - public JSONCodecFactory load(final SchemaContext key) { + public JSONCodecFactory load(final EffectiveModelContext key) { final Stopwatch sw = Stopwatch.createStarted(); final LazyCodecCache> lazyCache = new LazyCodecCache<>(); final JSONCodecFactory lazy = factorySupplier.apply(key, lazyCache); @@ -95,16 +96,16 @@ public enum JSONCodecFactorySupplier { } // Weak keys to retire the entry when SchemaContext goes away - private final LoadingCache precomputed; + private final LoadingCache precomputed; // Weak keys to retire the entry when SchemaContext goes away and to force identity-based lookup - private final LoadingCache shared; + private final LoadingCache shared; JSONCodecFactorySupplier() { precomputed = CacheBuilder.newBuilder().weakKeys().build(new EagerCacheLoader(this::createFactory)); - shared = CacheBuilder.newBuilder().weakKeys().build(new CacheLoader() { + shared = CacheBuilder.newBuilder().weakKeys().build(new CacheLoader() { @Override - public JSONCodecFactory load(final SchemaContext key) { + public JSONCodecFactory load(final EffectiveModelContext key) { return createFactory(key, new SharedCodecCache<>()); } }); @@ -119,25 +120,25 @@ public enum JSONCodecFactorySupplier { *

* Choosing this implementation is appropriate when the memory overhead of keeping a full codec tree is not as * great a concern as predictable performance. When compared to the implementation returned by - * {@link #getShared(SchemaContext)}, this implementation is expected to offer higher performance and have lower - * peak memory footprint when most of the SchemaContext is actually in use. + * {@link #getShared(EffectiveModelContext)}, this implementation is expected to offer higher performance and have + * lower peak memory footprint when most of the SchemaContext is actually in use. * *

* For call sites which do not want to pay the CPU cost of pre-computing this implementation, but still would like * to use it if is available (by being populated by some other caller), you can use - * {@link #getPrecomputedIfAvailable(SchemaContext)}. + * {@link #getPrecomputedIfAvailable(EffectiveModelContext)}. * * @param context SchemaContext instance * @return A sharable {@link JSONCodecFactory} * @throws NullPointerException if context is null */ - public @NonNull JSONCodecFactory getPrecomputed(final @NonNull SchemaContext context) { + public @NonNull JSONCodecFactory getPrecomputed(final @NonNull EffectiveModelContext context) { return verifyNotNull(precomputed.getUnchecked(context)); } /** * Get a thread-safe, eagerly-caching {@link JSONCodecFactory} for a SchemaContext, if it is available. This - * method is a non-blocking equivalent of {@link #getPrecomputed(SchemaContext)} for use in code paths where + * method is a non-blocking equivalent of {@link #getPrecomputed(EffectiveModelContext)} for use in code paths where * the potential of having to pre-compute the implementation is not acceptable. One such scenario is when the * code base wants to opportunistically take advantage of pre-computed version, but is okay with a fallback to * a different implementation. @@ -146,14 +147,14 @@ public enum JSONCodecFactorySupplier { * @return A sharable {@link JSONCodecFactory}, or absent if such an implementation is not available. * @throws NullPointerException if context is null */ - public @NonNull Optional getPrecomputedIfAvailable(final @NonNull SchemaContext context) { + public @NonNull Optional getPrecomputedIfAvailable(final @NonNull EffectiveModelContext context) { return Optional.ofNullable(precomputed.getIfPresent(context)); } /** * Get a thread-safe, lazily-caching {@link JSONCodecFactory} for a SchemaContext. This method can, and will, - * return the same instance as long as the associated SchemaContext is present or the factory is not invalidated - * by memory pressure. Returned object can be safely used by multiple threads concurrently. + * return the same instance as long as the associated EffectiveModelContext is present or the factory is not + * invalidated by memory pressure. Returned object can be safely used by multiple threads concurrently. * *

* Choosing this implementation is a safe default, as it will not incur prohibitive blocking, nor will it tie up @@ -163,7 +164,7 @@ public enum JSONCodecFactorySupplier { * @return A sharable {@link JSONCodecFactory} * @throws NullPointerException if context is null */ - public @NonNull JSONCodecFactory getShared(final @NonNull SchemaContext context) { + public @NonNull JSONCodecFactory getShared(final @NonNull EffectiveModelContext context) { return verifyNotNull(shared.getUnchecked(context)); } @@ -180,13 +181,13 @@ public enum JSONCodecFactorySupplier { * @return A non-sharable {@link JSONCodecFactory} * @throws NullPointerException if context is null */ - public @NonNull JSONCodecFactory createLazy(final @NonNull SchemaContext context) { + public @NonNull JSONCodecFactory createLazy(final @NonNull EffectiveModelContext context) { return createFactory(context, new LazyCodecCache<>()); } /** - * Create a simplistic, thread-safe {@link JSONCodecFactory} for a {@link SchemaContext}. This method will return - * distinct objects every time it is invoked. Returned object may be use from multiple threads concurrently. + * Create a simplistic, thread-safe {@link JSONCodecFactory} for a {@link EffectiveModelContext}. This method will + * return distinct objects every time it is invoked. Returned object may be use from multiple threads concurrently. * *

* This implementation exists mostly for completeness only, as it does not perform any caching at all and each codec @@ -197,9 +198,9 @@ public enum JSONCodecFactorySupplier { * @return A non-sharable {@link JSONCodecFactory} * @throws NullPointerException if context is null. */ - public @NonNull JSONCodecFactory createSimple(final @NonNull SchemaContext context) { + public @NonNull JSONCodecFactory createSimple(final @NonNull EffectiveModelContext context) { return createFactory(context, NoopCodecCache.getInstance()); } - abstract @NonNull JSONCodecFactory createFactory(SchemaContext context, CodecCache> cache); + abstract @NonNull JSONCodecFactory createFactory(EffectiveModelContext context, CodecCache> cache); } diff --git a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONNormalizedNodeStreamWriter.java b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONNormalizedNodeStreamWriter.java index 38c873f46c..91126cdb3b 100644 --- a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONNormalizedNodeStreamWriter.java +++ b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONNormalizedNodeStreamWriter.java @@ -36,7 +36,7 @@ import org.opendaylight.yangtools.yang.model.api.AnydataSchemaNode; import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.model.api.SchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.TypedDataSchemaNode; @@ -129,8 +129,8 @@ public abstract class JSONNormalizedNodeStreamWriter implements NormalizedNodeSt */ public static NormalizedNodeStreamWriter createExclusiveWriter(final JSONCodecFactory codecFactory, final SchemaPath path, final URI initialNs, final JsonWriter jsonWriter) { - return new Exclusive(codecFactory, SchemaTracker.create(codecFactory.getSchemaContext(), path), jsonWriter, - new JSONStreamWriterExclusiveRootContext(initialNs)); + return new Exclusive(codecFactory, SchemaTracker.create(codecFactory.getEffectiveModelContext(), path), + jsonWriter, new JSONStreamWriterExclusiveRootContext(initialNs)); } /** @@ -181,7 +181,7 @@ public abstract class JSONNormalizedNodeStreamWriter implements NormalizedNodeSt */ public static NormalizedNodeStreamWriter createNestedWriter(final JSONCodecFactory codecFactory, final SchemaPath path, final URI initialNs, final JsonWriter jsonWriter) { - return new Nested(codecFactory, SchemaTracker.create(codecFactory.getSchemaContext(), path), jsonWriter, + return new Nested(codecFactory, SchemaTracker.create(codecFactory.getEffectiveModelContext(), path), jsonWriter, new JSONStreamWriterSharedRootContext(initialNs)); } @@ -218,8 +218,8 @@ public abstract class JSONNormalizedNodeStreamWriter implements NormalizedNodeSt @Override public void startLeafNode(final NodeIdentifier name) throws IOException { tracker.startLeafNode(name); - context.emittingChild(codecs.getSchemaContext(), writer); - context.writeChildJsonIdentifier(codecs.getSchemaContext(), writer, name.getNodeType()); + context.emittingChild(codecs.getEffectiveModelContext(), writer); + context.writeChildJsonIdentifier(codecs.getEffectiveModelContext(), writer, name.getNodeType()); } @Override @@ -231,7 +231,7 @@ public abstract class JSONNormalizedNodeStreamWriter implements NormalizedNodeSt @Override public void startLeafSetEntryNode(final NodeWithValue name) throws IOException { tracker.startLeafSetEntryNode(name); - context.emittingChild(codecs.getSchemaContext(), writer); + context.emittingChild(codecs.getEffectiveModelContext(), writer); } @Override @@ -299,8 +299,8 @@ public abstract class JSONNormalizedNodeStreamWriter implements NormalizedNodeSt public final boolean startAnydataNode(final NodeIdentifier name, final Class objectModel) throws IOException { if (NormalizedAnydata.class.isAssignableFrom(objectModel)) { tracker.startAnydataNode(name); - context.emittingChild(codecs.getSchemaContext(), writer); - context.writeChildJsonIdentifier(codecs.getSchemaContext(), writer, name.getNodeType()); + context.emittingChild(codecs.getEffectiveModelContext(), writer); + context.writeChildJsonIdentifier(codecs.getEffectiveModelContext(), writer, name.getNodeType()); return true; } @@ -310,7 +310,7 @@ public abstract class JSONNormalizedNodeStreamWriter implements NormalizedNodeSt @Override public final NormalizedNodeStreamWriter startMountPoint(final MountPointIdentifier mountId, final MountPointContext mountCtx) throws IOException { - final SchemaContext ctx = mountCtx.getSchemaContext(); + final EffectiveModelContext ctx = mountCtx.getEffectiveModelContext(); return new Nested(codecs.rebaseTo(ctx), SchemaTracker.create(ctx), writer, new JSONStreamWriterSharedRootContext(context.getNamespace())); } @@ -319,8 +319,8 @@ public abstract class JSONNormalizedNodeStreamWriter implements NormalizedNodeSt public final boolean startAnyxmlNode(final NodeIdentifier name, final Class objectModel) throws IOException { if (DOMSource.class.isAssignableFrom(objectModel)) { tracker.startAnyxmlNode(name); - context.emittingChild(codecs.getSchemaContext(), writer); - context.writeChildJsonIdentifier(codecs.getSchemaContext(), writer, name.getNodeType()); + context.emittingChild(codecs.getEffectiveModelContext(), writer); + context.writeChildJsonIdentifier(codecs.getEffectiveModelContext(), writer, name.getNodeType()); return true; } return false; @@ -336,7 +336,7 @@ public abstract class JSONNormalizedNodeStreamWriter implements NormalizedNodeSt @Override public final void endNode() throws IOException { tracker.endNode(); - context = context.endNode(codecs.getSchemaContext(), writer); + context = context.endNode(codecs.getEffectiveModelContext(), writer); } @Override @@ -349,7 +349,7 @@ public abstract class JSONNormalizedNodeStreamWriter implements NormalizedNodeSt throw new IOException("Unexpected root context " + context); } - context.endNode(codecs.getSchemaContext(), writer); + context.endNode(codecs.getEffectiveModelContext(), writer); writer.close(); } @@ -387,7 +387,8 @@ public abstract class JSONNormalizedNodeStreamWriter implements NormalizedNodeSt } private void writeNormalizedAnydata(final NormalizedAnydata anydata) throws IOException { - anydata.writeTo(JSONNormalizedNodeStreamWriter.createNestedWriter(codecs.rebaseTo(anydata.getSchemaContext()), + anydata.writeTo(JSONNormalizedNodeStreamWriter.createNestedWriter( + codecs.rebaseTo(anydata.getEffectiveModelContext()), new SingleChildDataNodeContainer(anydata.getContextNode()), context.getNamespace(), writer)); } diff --git a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStreamWriterContext.java b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStreamWriterContext.java index fa2a7b9e8b..9f34573162 100644 --- a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStreamWriterContext.java +++ b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStreamWriterContext.java @@ -19,8 +19,8 @@ import java.util.Optional; 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.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.model.api.Module; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; /** * Abstract base class for a single level of {@link JSONNormalizedNodeStreamWriter} recursion. Provides the base API @@ -60,7 +60,7 @@ abstract class JSONStreamWriterContext { * @param qname Namespace/name tuple * @throws IOException when the writer reports it */ - final void writeChildJsonIdentifier(final SchemaContext schema, final JsonWriter writer, final QName qname) + final void writeChildJsonIdentifier(final EffectiveModelContext schema, final JsonWriter writer, final QName qname) throws IOException { final StringBuilder sb = new StringBuilder(); @@ -84,8 +84,8 @@ abstract class JSONStreamWriterContext { * @param qname Namespace/name tuple * @throws IOException when the writer reports it */ - protected final void writeMyJsonIdentifier(final SchemaContext schema, final JsonWriter writer, final QName qname) - throws IOException { + protected final void writeMyJsonIdentifier(final EffectiveModelContext schema, final JsonWriter writer, + final QName qname) throws IOException { parent.writeChildJsonIdentifier(schema, writer, qname); } @@ -103,7 +103,7 @@ abstract class JSONStreamWriterContext { * @param writer Output writer * @throws IOException when the writer reports it */ - protected abstract void emitStart(SchemaContext schema, JsonWriter writer) throws IOException; + protected abstract void emitStart(EffectiveModelContext schema, JsonWriter writer) throws IOException; /** * Emit the end of an element. @@ -114,7 +114,7 @@ abstract class JSONStreamWriterContext { */ protected abstract void emitEnd(JsonWriter writer) throws IOException; - private void emitMyself(final SchemaContext schema, final JsonWriter writer) throws IOException { + private void emitMyself(final EffectiveModelContext schema, final JsonWriter writer) throws IOException { if (!emittedMyself) { if (parent != null) { parent.emitMyself(schema, writer); @@ -134,7 +134,7 @@ abstract class JSONStreamWriterContext { * @param writer Output writer * @throws IOException when writer reports it */ - final void emittingChild(final SchemaContext schema, final JsonWriter writer) throws IOException { + final void emittingChild(final EffectiveModelContext schema, final JsonWriter writer) throws IOException { checkState(!inChild, "Duplicate child encountered"); emitMyself(schema, writer); inChild = true; @@ -150,7 +150,8 @@ abstract class JSONStreamWriterContext { * @throws IOException when writer reports it * @throws IllegalArgumentException if this node cannot be ended (e.g. root) */ - final JSONStreamWriterContext endNode(final SchemaContext schema, final JsonWriter writer) throws IOException { + final JSONStreamWriterContext endNode(final EffectiveModelContext schema, final JsonWriter writer) + throws IOException { if (inChild) { inChild = false; return this; diff --git a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStreamWriterExclusiveRootContext.java b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStreamWriterExclusiveRootContext.java index 426d34fe8c..7fed467695 100644 --- a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStreamWriterExclusiveRootContext.java +++ b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStreamWriterExclusiveRootContext.java @@ -10,7 +10,7 @@ package org.opendaylight.yangtools.yang.data.codec.gson; import com.google.gson.stream.JsonWriter; import java.io.IOException; import java.net.URI; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; final class JSONStreamWriterExclusiveRootContext extends JSONStreamWriterRootContext { JSONStreamWriterExclusiveRootContext(final URI namespace) { @@ -18,7 +18,7 @@ final class JSONStreamWriterExclusiveRootContext extends JSONStreamWriterRootCon } @Override - protected void emitStart(final SchemaContext schema, final JsonWriter writer) throws IOException { + protected void emitStart(final EffectiveModelContext schema, final JsonWriter writer) throws IOException { writer.beginObject(); } diff --git a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStreamWriterListContext.java b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStreamWriterListContext.java index 8d902baa95..eadaa38c0f 100644 --- a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStreamWriterListContext.java +++ b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStreamWriterListContext.java @@ -12,7 +12,7 @@ import static java.util.Objects.requireNonNull; import com.google.gson.stream.JsonWriter; import java.io.IOException; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; /** * A single recursion level of {@link JSONNormalizedNodeStreamWriter} representing @@ -24,7 +24,7 @@ final class JSONStreamWriterListContext extends JSONStreamWriterQNameContext { } @Override - protected void emitStart(final SchemaContext schema, final JsonWriter writer) throws IOException { + protected void emitStart(final EffectiveModelContext schema, final JsonWriter writer) throws IOException { writeMyJsonIdentifier(schema, writer, getQName()); writer.beginArray(); } diff --git a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStreamWriterNamedObjectContext.java b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStreamWriterNamedObjectContext.java index cac95796c7..3627471901 100644 --- a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStreamWriterNamedObjectContext.java +++ b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStreamWriterNamedObjectContext.java @@ -10,7 +10,7 @@ package org.opendaylight.yangtools.yang.data.codec.gson; import com.google.gson.stream.JsonWriter; import java.io.IOException; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; /** * A recursion level of {@link JSONNormalizedNodeStreamWriter}, which represents @@ -24,7 +24,7 @@ final class JSONStreamWriterNamedObjectContext extends JSONStreamWriterObjectCon } @Override - protected void emitStart(final SchemaContext schema, final JsonWriter writer) throws IOException { + protected void emitStart(final EffectiveModelContext schema, final JsonWriter writer) throws IOException { writeMyJsonIdentifier(schema, writer, getQName()); super.emitStart(schema, writer); } diff --git a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStreamWriterObjectContext.java b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStreamWriterObjectContext.java index bfc81a42ae..fcee390796 100644 --- a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStreamWriterObjectContext.java +++ b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStreamWriterObjectContext.java @@ -12,7 +12,7 @@ import static java.util.Objects.requireNonNull; import com.google.gson.stream.JsonWriter; import java.io.IOException; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; /** * A recursion level of {@link JSONNormalizedNodeStreamWriter}, which represents @@ -26,7 +26,7 @@ class JSONStreamWriterObjectContext extends JSONStreamWriterQNameContext { } @Override - protected void emitStart(final SchemaContext schema, final JsonWriter writer) throws IOException { + protected void emitStart(final EffectiveModelContext schema, final JsonWriter writer) throws IOException { writer.beginObject(); } diff --git a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStreamWriterURIContext.java b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStreamWriterURIContext.java index 7caa4adbe6..212c077ae4 100644 --- a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStreamWriterURIContext.java +++ b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONStreamWriterURIContext.java @@ -10,7 +10,7 @@ package org.opendaylight.yangtools.yang.data.codec.gson; import com.google.gson.stream.JsonWriter; import java.io.IOException; import java.net.URI; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; /** * Abstract class tracking a virtual level of {@link JSONNormalizedNodeStreamWriter} @@ -34,7 +34,7 @@ abstract class JSONStreamWriterURIContext extends JSONStreamWriterContext { } @Override - protected void emitStart(final SchemaContext schema, final JsonWriter writer) throws IOException { + protected void emitStart(final EffectiveModelContext schema, final JsonWriter writer) throws IOException { // No-op } } \ No newline at end of file diff --git a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonParserStream.java b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonParserStream.java index 877173b4eb..8df6b03e38 100644 --- a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonParserStream.java +++ b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonParserStream.java @@ -95,7 +95,7 @@ public final class JsonParserStream implements Closeable, Flushable { */ public static @NonNull JsonParserStream create(final @NonNull NormalizedNodeStreamWriter writer, final @NonNull JSONCodecFactory codecFactory) { - return new JsonParserStream(writer, codecFactory, codecFactory.getSchemaContext(), false); + return new JsonParserStream(writer, codecFactory, codecFactory.getEffectiveModelContext(), false); } /** @@ -131,7 +131,7 @@ public final class JsonParserStream implements Closeable, Flushable { */ public static @NonNull JsonParserStream createLenient(final @NonNull NormalizedNodeStreamWriter writer, final @NonNull JSONCodecFactory codecFactory) { - return new JsonParserStream(writer, codecFactory, codecFactory.getSchemaContext(), true); + return new JsonParserStream(writer, codecFactory, codecFactory.getEffectiveModelContext(), true); } /** @@ -365,7 +365,8 @@ public final class JsonParserStream implements Closeable, Flushable { moduleNamePart = childName.substring(0, lastIndexOfColon); nodeNamePart = childName.substring(lastIndexOfColon + 1); - final Iterator m = codecs.getSchemaContext().findModules(moduleNamePart).iterator(); + final Iterator m = codecs.getEffectiveModelContext().findModules(moduleNamePart) + .iterator(); namespace = m.hasNext() ? m.next().getNamespace() : null; } else { nodeNamePart = childName; @@ -394,7 +395,7 @@ public final class JsonParserStream implements Closeable, Flushable { for (final URI potentialUri : potentialUris) { builder.append('\n'); //FIXME how to get information about revision from JSON input? currently first available is used. - builder.append(codecs.getSchemaContext().findModules(potentialUri).iterator().next().getName()); + builder.append(codecs.getEffectiveModelContext().findModules(potentialUri).iterator().next().getName()); } return builder.toString(); } diff --git a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/Lhotka02JSONCodecFactory.java b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/Lhotka02JSONCodecFactory.java index 56ce4a7d5c..87701c5457 100644 --- a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/Lhotka02JSONCodecFactory.java +++ b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/Lhotka02JSONCodecFactory.java @@ -10,13 +10,13 @@ package org.opendaylight.yangtools.yang.data.codec.gson; import org.opendaylight.yangtools.yang.data.impl.codec.AbstractIntegerStringCodec; import org.opendaylight.yangtools.yang.data.impl.codec.DecimalStringCodec; import org.opendaylight.yangtools.yang.data.util.codec.CodecCache; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.model.api.type.InstanceIdentifierTypeDefinition; final class Lhotka02JSONCodecFactory extends JSONCodecFactory { private final JSONInstanceIdentifierCodec iidCodec; - Lhotka02JSONCodecFactory(final SchemaContext context, final CodecCache> cache) { + Lhotka02JSONCodecFactory(final EffectiveModelContext context, final CodecCache> cache) { super(context, cache); iidCodec = new Lhotka02JSONInstanceIdentifierCodec(context, this); } @@ -27,7 +27,8 @@ final class Lhotka02JSONCodecFactory extends JSONCodecFactory { } @Override - Lhotka02JSONCodecFactory rebaseTo(final SchemaContext newSchemaContext, final CodecCache> newCache) { + Lhotka02JSONCodecFactory rebaseTo(final EffectiveModelContext newSchemaContext, + final CodecCache> newCache) { return new Lhotka02JSONCodecFactory(newSchemaContext, newCache); } diff --git a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/RFC7951JSONCodecFactory.java b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/RFC7951JSONCodecFactory.java index 51e7a57977..f60fff658e 100644 --- a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/RFC7951JSONCodecFactory.java +++ b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/RFC7951JSONCodecFactory.java @@ -10,13 +10,13 @@ package org.opendaylight.yangtools.yang.data.codec.gson; import org.opendaylight.yangtools.yang.data.impl.codec.AbstractIntegerStringCodec; import org.opendaylight.yangtools.yang.data.impl.codec.DecimalStringCodec; import org.opendaylight.yangtools.yang.data.util.codec.CodecCache; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.model.api.type.InstanceIdentifierTypeDefinition; final class RFC7951JSONCodecFactory extends JSONCodecFactory { private final RFC7951JSONInstanceIdentifierCodec iidCodec; - RFC7951JSONCodecFactory(final SchemaContext context, final CodecCache> cache) { + RFC7951JSONCodecFactory(final EffectiveModelContext context, final CodecCache> cache) { super(context, cache); iidCodec = new RFC7951JSONInstanceIdentifierCodec(context, this); } @@ -27,7 +27,7 @@ final class RFC7951JSONCodecFactory extends JSONCodecFactory { } @Override - JSONCodecFactory rebaseTo(final SchemaContext newSchemaContext, final CodecCache> newCache) { + JSONCodecFactory rebaseTo(final EffectiveModelContext newSchemaContext, final CodecCache> newCache) { return new RFC7951JSONCodecFactory(newSchemaContext, newCache); } diff --git a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/AbstractYT1027Test.java b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/AbstractYT1027Test.java index 8e5feb2ffb..faa90b1d75 100644 --- a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/AbstractYT1027Test.java +++ b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/AbstractYT1027Test.java @@ -31,8 +31,8 @@ import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter; import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition; @@ -59,7 +59,7 @@ public abstract class AbstractYT1027Test { + " \"yt1027:uint64\": 1\n" + "}"; - static SchemaContext SCHEMA_CONTEXT; + static EffectiveModelContext SCHEMA_CONTEXT; private static DecimalTypeDefinition DECIMAL_TYPE; private static Int64TypeDefinition INT64_TYPE; private static Uint64TypeDefinition UINT64_TYPE; diff --git a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug4501Test.java b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug4501Test.java index 9cde9b39bd..d4b99cc58e 100644 --- a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug4501Test.java +++ b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug4501Test.java @@ -30,12 +30,12 @@ import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListNode; import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter; import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class Bug4501Test { - private static SchemaContext schemaContext; + private static EffectiveModelContext schemaContext; @BeforeClass public static void initialization() { diff --git a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug4969Test.java b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug4969Test.java index c1f30b46c6..f3b4e1f832 100644 --- a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug4969Test.java +++ b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug4969Test.java @@ -27,20 +27,21 @@ 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.impl.schema.ImmutableNormalizedNodeStreamWriter; import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class Bug4969Test { @Test public void newParserLeafRefTest() throws IOException, URISyntaxException { - SchemaContext context = YangParserTestUtils.parseYangResourceDirectory("/bug-4969/yang"); + EffectiveModelContext context = YangParserTestUtils.parseYangResourceDirectory("/bug-4969/yang"); assertNotNull(context); verifyNormalizedNodeResult(context); } - private static void verifyNormalizedNodeResult(final SchemaContext context) throws IOException, URISyntaxException { + private static void verifyNormalizedNodeResult(final EffectiveModelContext context) throws IOException, + URISyntaxException { final String inputJson = TestUtils.loadTextFile("/bug-4969/json/foo.json"); final NormalizedNodeResult result = new NormalizedNodeResult(); final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result); @@ -93,13 +94,14 @@ public class Bug4969Test { @Test public void newParserLeafRefTest2() throws URISyntaxException, IOException { - SchemaContext context = YangParserTestUtils.parseYangResourceDirectory("/leafref/yang"); + EffectiveModelContext context = YangParserTestUtils.parseYangResourceDirectory("/leafref/yang"); assertNotNull(context); parseJsonToNormalizedNodes(context); } - private static void parseJsonToNormalizedNodes(final SchemaContext context) throws IOException, URISyntaxException { + private static void parseJsonToNormalizedNodes(final EffectiveModelContext context) throws IOException, + URISyntaxException { final String inputJson = TestUtils.loadTextFile("/leafref/json/data.json"); final NormalizedNodeResult result = new NormalizedNodeResult(); final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result); diff --git a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug5446Test.java b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug5446Test.java index 45d50e54c3..bae4da9850 100644 --- a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug5446Test.java +++ b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug5446Test.java @@ -37,7 +37,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStre import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; @@ -46,7 +46,7 @@ public class Bug5446Test { private static final QNameModule FOO_MODULE = QNameModule.create(URI.create("foo"), Revision.of("2015-11-05")); private static final QName ROOT_QNAME = QName.create(FOO_MODULE, "root"); private static final QName IP_ADDRESS_QNAME = QName.create(FOO_MODULE, "ip-address"); - private static SchemaContext schemaContext; + private static EffectiveModelContext schemaContext; @BeforeClass public static void init() { diff --git a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug6112Test.java b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug6112Test.java index 4dd17d3241..b6d159c5a7 100644 --- a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug6112Test.java +++ b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug6112Test.java @@ -29,11 +29,11 @@ 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.impl.schema.ImmutableNormalizedNodeStreamWriter; import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class Bug6112Test { - private static SchemaContext schemaContext; + private static EffectiveModelContext schemaContext; @BeforeClass public static void initialization() { diff --git a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug7246Test.java b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug7246Test.java index 86a0057551..a2a413c0ef 100644 --- a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug7246Test.java +++ b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug7246Test.java @@ -27,7 +27,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStre import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; @@ -36,7 +36,8 @@ public class Bug7246Test { @Test public void test() throws Exception { - final SchemaContext schemaContext = YangParserTestUtils.parseYangResource("/bug7246/yang/rpc-test.yang"); + final EffectiveModelContext schemaContext = + YangParserTestUtils.parseYangResource("/bug7246/yang/rpc-test.yang"); final JsonParser parser = new JsonParser(); final JsonElement expextedJson = parser .parse(new FileReader(new File(getClass().getResource("/bug7246/json/expected-output.json").toURI()))); @@ -57,7 +58,7 @@ public class Bug7246Test { return QName.create(NS, localName); } - private static String normalizedNodeToJsonStreamTransformation(final SchemaContext schemaContext, + private static String normalizedNodeToJsonStreamTransformation(final EffectiveModelContext schemaContext, final SchemaPath path, final Writer writer, final NormalizedNode inputStructure) throws IOException { diff --git a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug8083Test.java b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug8083Test.java index 9b006ff5e4..0aa170864d 100644 --- a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug8083Test.java +++ b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug8083Test.java @@ -43,8 +43,8 @@ import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeS import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.InstanceIdentifierTypeDefinition; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; @@ -68,7 +68,7 @@ public class Bug8083Test { .node(QName.create(BARMOD, "bar-leaf")) .build(); - private static SchemaContext FULL_SCHEMA_CONTEXT; + private static EffectiveModelContext FULL_SCHEMA_CONTEXT; @BeforeClass public static void init() { @@ -114,7 +114,7 @@ public class Bug8083Test { @Test public void testInstanceIdentifierPathWithEmptyListKey() throws IOException, URISyntaxException { - final SchemaContext schemaContext = YangParserTestUtils.parseYangResource("/bug8083/yang/baz.yang"); + final EffectiveModelContext schemaContext = YangParserTestUtils.parseYangResource("/bug8083/yang/baz.yang"); final String inputJson = loadTextFile("/bug8083/json/baz.json"); // deserialization @@ -129,7 +129,7 @@ public class Bug8083Test { @Test public void testInstanceIdentifierPathWithIdentityrefListKey() throws IOException, URISyntaxException { - final SchemaContext schemaContext = YangParserTestUtils.parseYangResource("/bug8083/yang/zab.yang"); + final EffectiveModelContext schemaContext = YangParserTestUtils.parseYangResource("/bug8083/yang/zab.yang"); final String inputJson = loadTextFile("/bug8083/json/zab.json"); // deserialization @@ -144,7 +144,7 @@ public class Bug8083Test { @Test public void testInstanceIdentifierPathWithInstanceIdentifierListKey() throws IOException, URISyntaxException { - final SchemaContext schemaContext = YangParserTestUtils.parseYangResource("/bug8083/yang/foobar.yang"); + final EffectiveModelContext schemaContext = YangParserTestUtils.parseYangResource("/bug8083/yang/foobar.yang"); final String inputJson = loadTextFile("/bug8083/json/foobar.json"); // deserialization diff --git a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/TestUtils.java b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/TestUtils.java index 933ac541f0..2a9fdcb72f 100644 --- a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/TestUtils.java +++ b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/TestUtils.java @@ -31,7 +31,6 @@ import org.opendaylight.yangtools.yang.data.codec.xml.XmlParserStream; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter; import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult; import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaPath; public final class TestUtils { @@ -64,8 +63,8 @@ public final class TestUtils { xmlParser.parse(reader); } - static String normalizedNodesToJsonString(final NormalizedNode data, final SchemaContext schemaContext, - final SchemaPath rootPath) throws IOException { + static String normalizedNodesToJsonString(final NormalizedNode data, + final EffectiveModelContext schemaContext, final SchemaPath rootPath) throws IOException { final Writer writer = new StringWriter(); final NormalizedNodeStreamWriter jsonStream = JSONNormalizedNodeStreamWriter.createExclusiveWriter( JSONCodecFactorySupplier.DRAFT_LHOTKA_NETMOD_YANG_JSON_02.getShared(schemaContext), rootPath, null, diff --git a/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/DOMSourceMountPointChild.java b/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/DOMSourceMountPointChild.java index b33abbadb9..f66f6e312a 100644 --- a/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/DOMSourceMountPointChild.java +++ b/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/DOMSourceMountPointChild.java @@ -36,7 +36,7 @@ final class DOMSourceMountPointChild extends AbstractMountPointChild { final XmlParserStream xmlParser; try { - xmlParser = XmlParserStream.create(writer, mountCtx, mountCtx.getSchemaContext()); + xmlParser = XmlParserStream.create(writer, mountCtx, mountCtx.getEffectiveModelContext()); } catch (IllegalArgumentException e) { throw new IOException("Failed to instantiate XML parser", e); } diff --git a/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlCodecFactory.java b/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlCodecFactory.java index aa98d9a86f..c63009f8f9 100644 --- a/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlCodecFactory.java +++ b/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlCodecFactory.java @@ -53,7 +53,7 @@ public final class XmlCodecFactory extends AbstractCodecFactory> { private final MountPointContext mountCtx; private XmlCodecFactory(final MountPointContext mountCtx) { - super(mountCtx.getSchemaContext(), new SharedCodecCache<>()); + super(mountCtx.getEffectiveModelContext(), new SharedCodecCache<>()); this.mountCtx = requireNonNull(mountCtx); } @@ -108,12 +108,12 @@ public final class XmlCodecFactory extends AbstractCodecFactory> { @Override protected XmlCodec identityRefCodec(final IdentityrefTypeDefinition type, final QNameModule module) { - return new IdentityrefXmlCodec(getSchemaContext(), module); + return new IdentityrefXmlCodec(getEffectiveModelContext(), module); } @Override protected XmlCodec instanceIdentifierCodec(final InstanceIdentifierTypeDefinition type) { - return new XmlStringInstanceIdentifierCodec(getSchemaContext(), this); + return new XmlStringInstanceIdentifierCodec(getEffectiveModelContext(), this); } @Override diff --git a/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlParserStream.java b/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlParserStream.java index cc885d1982..c97b657565 100644 --- a/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlParserStream.java +++ b/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlParserStream.java @@ -324,7 +324,7 @@ public final class XmlParserStream implements Closeable, Flushable { if (optModule.isPresent()) { final QName qname = QName.create(optModule.get(), localName); final Optional optAnnotation = AnnotationSchemaNode.find( - codecs.getSchemaContext(), qname); + codecs.getEffectiveModelContext(), qname); if (optAnnotation.isPresent()) { final AnnotationSchemaNode schema = optAnnotation.get(); final Object value = codecs.codecFor(schema).parseValue(in.getNamespaceContext(), attrValue); @@ -660,7 +660,8 @@ public final class XmlParserStream implements Closeable, Flushable { private Optional resolveXmlNamespace(final String xmlNamespace) { return resolvedNamespaces.computeIfAbsent(xmlNamespace, nsUri -> { - final Iterator it = codecs.getSchemaContext().findModules(URI.create(nsUri)).iterator(); + final Iterator it = codecs.getEffectiveModelContext().findModules(URI.create(nsUri)) + .iterator(); return it.hasNext() ? Optional.of(it.next().getQNameModule()) : Optional.empty(); }); } diff --git a/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlStringInstanceIdentifierCodec.java b/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlStringInstanceIdentifierCodec.java index ce18ef220f..126a3343ce 100644 --- a/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlStringInstanceIdentifierCodec.java +++ b/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlStringInstanceIdentifierCodec.java @@ -22,9 +22,9 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.util.AbstractModuleStringInstanceIdentifierCodec; import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; import org.opendaylight.yangtools.yang.model.api.Module; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; final class XmlStringInstanceIdentifierCodec extends AbstractModuleStringInstanceIdentifierCodec implements XmlCodec { @@ -33,9 +33,9 @@ final class XmlStringInstanceIdentifierCodec extends AbstractModuleStringInstanc private final @NonNull DataSchemaContextTree dataContextTree; private final @NonNull XmlCodecFactory codecFactory; - private final @NonNull SchemaContext context; + private final @NonNull EffectiveModelContext context; - XmlStringInstanceIdentifierCodec(final SchemaContext context, final XmlCodecFactory xmlCodecFactory) { + XmlStringInstanceIdentifierCodec(final EffectiveModelContext context, final XmlCodecFactory xmlCodecFactory) { this.context = requireNonNull(context); this.dataContextTree = DataSchemaContextTree.from(context); this.codecFactory = requireNonNull(xmlCodecFactory); diff --git a/yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/ImmutableNormalizedAnydata.java b/yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/ImmutableNormalizedAnydata.java index 5168ea9f9b..049a3ae957 100644 --- a/yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/ImmutableNormalizedAnydata.java +++ b/yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/ImmutableNormalizedAnydata.java @@ -16,16 +16,16 @@ import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedAnydata; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.util.AbstractSchemaContextProvider; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; +import org.opendaylight.yangtools.yang.model.util.AbstractEffectiveModelContextProvider; @Beta @NonNullByDefault -public class ImmutableNormalizedAnydata extends AbstractSchemaContextProvider implements NormalizedAnydata { +public class ImmutableNormalizedAnydata extends AbstractEffectiveModelContextProvider implements NormalizedAnydata { private final DataSchemaNode contextNode; private final NormalizedNode data; - public ImmutableNormalizedAnydata(final SchemaContext schemaContext, final DataSchemaNode contextNode, + public ImmutableNormalizedAnydata(final EffectiveModelContext schemaContext, final DataSchemaNode contextNode, final NormalizedNode data) { super(schemaContext); this.contextNode = requireNonNull(contextNode); diff --git a/yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/codec/AbstractCodecFactory.java b/yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/codec/AbstractCodecFactory.java index b832759414..7304968de5 100644 --- a/yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/codec/AbstractCodecFactory.java +++ b/yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/codec/AbstractCodecFactory.java @@ -14,7 +14,7 @@ import java.util.ArrayList; import java.util.List; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.common.QNameModule; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.model.api.SchemaNode; import org.opendaylight.yangtools.yang.model.api.TypeAware; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; @@ -38,7 +38,7 @@ import org.opendaylight.yangtools.yang.model.api.type.Uint64TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.Uint8TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.UnknownTypeDefinition; -import org.opendaylight.yangtools.yang.model.util.AbstractSchemaContextProvider; +import org.opendaylight.yangtools.yang.model.util.AbstractEffectiveModelContextProvider; import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -51,12 +51,14 @@ import org.slf4j.LoggerFactory; * @param Codec type * @author Robert Varga */ -public abstract class AbstractCodecFactory> extends AbstractSchemaContextProvider { +public abstract class AbstractCodecFactory> + extends AbstractEffectiveModelContextProvider { private static final Logger LOG = LoggerFactory.getLogger(AbstractCodecFactory.class); private final @NonNull CodecCache cache; - protected AbstractCodecFactory(final @NonNull SchemaContext schemaContext, final @NonNull CodecCache cache) { + protected AbstractCodecFactory(final @NonNull EffectiveModelContext schemaContext, + final @NonNull CodecCache cache) { super(schemaContext); this.cache = requireNonNull(cache); } @@ -211,7 +213,7 @@ public abstract class AbstractCodecFactory> ex return createComplexUnion(schema, (UnionTypeDefinition) type); } else if (type instanceof LeafrefTypeDefinition) { final TypeDefinition target = SchemaContextUtil.getBaseTypeForLeafRef((LeafrefTypeDefinition) type, - getSchemaContext(), schema); + getEffectiveModelContext(), schema); verifyNotNull(target, "Unable to find base type for leafref node %s type %s.", schema, target); final T ret = getSimpleCodecFor(target); -- 2.36.6