Retrofit SchemaContextProvider 72/78072/2
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 22 Nov 2018 21:42:02 +0000 (22:42 +0100)
committerRobert Varga <nite@hq.sk>
Fri, 23 Nov 2018 00:20:51 +0000 (00:20 +0000)
Since we already have a getSchemaContext() method, we can
get it documented and widely available for free.

Change-Id: Ib5aaa3d1d503a000a997beaee3d31002755e5998
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 5227b0accfa016d76d32ddad414cce1c62585664)

yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/leafref/LeafRefContext.java
yang/yang-data-jaxen/src/main/java/org/opendaylight/yangtools/yang/data/jaxen/JaxenDocument.java
yang/yang-data-jaxen/src/main/java/org/opendaylight/yangtools/yang/data/jaxen/NormalizedNodeContextSupport.java
yang/yang-data-jaxen/src/main/java/org/opendaylight/yangtools/yang/data/jaxen/NormalizedNodeNavigator.java
yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/codec/AbstractCodecFactory.java

index 409e6ba1aa755193c045ed0a67bd3bd16e265753..9ac8c62146235219c7dbb14952feea6996ab25b8 100644 (file)
@@ -12,10 +12,11 @@ import java.util.Map;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 
 // FIXME: 3.0.0 hide this class
-public final class LeafRefContext {
+public final class LeafRefContext implements SchemaContextProvider {
 
     private final QName currentNodeQName;
     private final SchemaPath currentNodePath;
@@ -113,7 +114,8 @@ public final class LeafRefContext {
         return currentNodeQName;
     }
 
-    SchemaContext getSchemaContext() {
+    @Override
+    public SchemaContext getSchemaContext() {
         return schemaContext;
     }
 
index ead6ae4049c515e0188f6dcb5b82e023bc2e45aa..38a797c57e626e57b6e2540d38d946d170d4b5cb 100644 (file)
@@ -15,9 +15,10 @@ import org.opendaylight.yangtools.yang.data.api.schema.xpath.XPathDocument;
 import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode;
 import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider;
 
 @NonNullByDefault
-final class JaxenDocument implements XPathDocument {
+final class JaxenDocument implements XPathDocument, SchemaContextProvider {
     private final DataSchemaContextNode<?> schema;
     private final NormalizedNode<?, ?> root;
     private final SchemaContext context;
@@ -34,7 +35,8 @@ final class JaxenDocument implements XPathDocument {
         return root;
     }
 
-    SchemaContext getSchemaContext() {
+    @Override
+    public SchemaContext getSchemaContext() {
         return context;
     }
 
index 8edb5170c61ebdf5c023d74231413c207af5e95d..d9a24cba6e5edb4cb191d053659ea5884c1c77c0 100644 (file)
@@ -19,8 +19,9 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgum
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodes;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider;
 
-final class NormalizedNodeContextSupport extends ContextSupport {
+final class NormalizedNodeContextSupport extends ContextSupport implements SchemaContextProvider {
     private static final long serialVersionUID = 1L;
     private final NormalizedNodeContext root;
 
@@ -53,7 +54,8 @@ final class NormalizedNodeContextSupport extends ContextSupport {
         return (NormalizedNodeNavigator) super.getNavigator();
     }
 
-    SchemaContext getSchemaContext() {
-        return getNavigator().getDocument().getSchemaContext();
+    @Override
+    public SchemaContext getSchemaContext() {
+        return getNavigator().getSchemaContext();
     }
 }
index 714d6b96d49789da5d8bb7df950dd7f7205672ee..d893af7fc97b3ede7015b9aa118b006ba9b07554 100644 (file)
@@ -33,11 +33,13 @@ import org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode;
 import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
 import org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider;
 
 /**
  * A {@link Navigator} implementation for YANG XPaths instantiated on a particular root {@link NormalizedNode}.
  */
-final class NormalizedNodeNavigator extends DefaultNavigator implements NamedAccessNavigator {
+final class NormalizedNodeNavigator extends DefaultNavigator implements NamedAccessNavigator, SchemaContextProvider {
     private static final long serialVersionUID = 1L;
     private static final Joiner JOINER = Joiner.on(" ").skipNulls();
     private final ConverterNamespaceContext namespaceContext;
@@ -287,6 +289,11 @@ final class NormalizedNodeNavigator extends DefaultNavigator implements NamedAcc
         return cast(contextNode).getParent();
     }
 
+    @Override
+    public SchemaContext getSchemaContext() {
+        return document.getSchemaContext();
+    }
+
     JaxenDocument getDocument() {
         return document;
     }
index ab52a2ec9baf448ebea40ed2c7ca40b25c1f3767..e9f2f5ca11b1d4bc3c7b9be845306ce94e7e0e4c 100644 (file)
@@ -13,8 +13,10 @@ import static java.util.Objects.requireNonNull;
 import java.util.ArrayList;
 import java.util.List;
 import javax.annotation.concurrent.ThreadSafe;
+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.SchemaContextProvider;
 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.TypedDataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.type.BinaryTypeDefinition;
@@ -50,23 +52,24 @@ import org.slf4j.LoggerFactory;
  * @param <T> Codec type
  */
 @ThreadSafe
-public abstract class AbstractCodecFactory<T extends TypeAwareCodec<?, ?, ?>> {
+public abstract class AbstractCodecFactory<T extends TypeAwareCodec<?, ?, ?>> implements SchemaContextProvider {
     private static final Logger LOG = LoggerFactory.getLogger(AbstractCodecFactory.class);
 
-    private final CodecCache<T> cache;
+    private final @NonNull CodecCache<T> cache;
 
-    private final SchemaContext schemaContext;
+    private final @NonNull SchemaContext schemaContext;
 
     protected AbstractCodecFactory(final SchemaContext schemaContext, final CodecCache<T> cache) {
         this.schemaContext = requireNonNull(schemaContext);
         this.cache = requireNonNull(cache);
     }
 
+    @Override
     public final SchemaContext getSchemaContext() {
         return schemaContext;
     }
 
-    public final T codecFor(final TypedDataSchemaNode schema) {
+    public final @NonNull T codecFor(final TypedDataSchemaNode schema) {
         /*
          * There are many trade-offs to be made here. We need the common case being as fast as possible while reusing
          * codecs as much as possible.
@@ -77,7 +80,7 @@ public abstract class AbstractCodecFactory<T extends TypeAwareCodec<?, ?, ?>> {
          * - null codec, which does not depend on anything
          * - instance identifier codec, which is based on namespace mapping
          *
-         * We assume prevalence is in above order and that caching is effective. We therefore
+         * We assume prevalence is in above order and that caching is effective.
          */
         final TypeDefinition<?> type = schema.getType();
         T ret = cache.lookupSimple(type);