Fix SchemaContextProvider nullness 94/83994/4
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 26 Aug 2019 14:33:49 +0000 (16:33 +0200)
committerRobert Varga <nite@hq.sk>
Tue, 27 Aug 2019 23:06:01 +0000 (23:06 +0000)
SchemaContextProvider needs to return a schemacontext, or throw
an ISE.

Change-Id: I098c09a77a261f81b2b4b31207733169563aa936
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
yang/rfc8528-data-api/src/main/java/org/opendaylight/yangtools/rfc8528/data/api/MountPointContext.java
yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/NormalizedAnydata.java
yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/tree/DataTreeSnapshot.java
yang/yang-data-jaxen/src/main/java/org/opendaylight/yangtools/yang/data/jaxen/JaxenDocument.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/EffectiveModelContextProvider.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaContextProvider.java
yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/AbstractSchemaContextProvider.java

index 57b09f4cc9431ca69e8799e799bdf8e63f0dcc01..bfffcdc806c3bd55cb9f7dced10ac118216357e8 100644 (file)
@@ -10,12 +10,12 @@ package org.opendaylight.yangtools.rfc8528.data.api;
 import com.google.common.annotations.Beta;
 import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider;
 
 /**
  * A context of either an explicit (RFC8528 Schema Mount instance) or implicit (system root). It encapsulates a data
- * {@link SchemaContext} and information resident in {@code schema-mounts} within this hierarchy.
+ * {@link org.opendaylight.yangtools.yang.model.api.SchemaContext} and information resident in {@code schema-mounts}
+ * within this hierarchy.
  *
  * <p>
  * Note this interface should be part of yang-data-api, as it really defines how a NormalizedNode-containerized data
@@ -48,10 +48,6 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider;
  */
 @Beta
 public interface MountPointContext extends SchemaContextProvider {
-    @Override
-    // FIXME: remove this override when SchemaContextProvider's method has sane semantics.
-    @NonNull SchemaContext getSchemaContext();
-
     /**
      * Attempt to acquire a {@link MountPointContextFactory} to resolve schemas for the purposes of interpreting
      * this mount point. An empty result indicates the mount point is not attached.
index c25147000ff45700bd22f4dcc61c716de53f6436..b231e917812eb40df84ce237cc8d1dae85bc9a9f 100644 (file)
@@ -9,13 +9,11 @@ package org.opendaylight.yangtools.yang.data.api.schema;
 
 import com.google.common.annotations.Beta;
 import java.io.IOException;
-import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 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.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider;
 
 /**
@@ -31,10 +29,6 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider;
 @NonNullByDefault
 public interface NormalizedAnydata extends Immutable, SchemaContextProvider {
 
-    @Override
-    // FIXME: remove this override when SchemaContextProvider's method has sane semantics.
-    @NonNull SchemaContext getSchemaContext();
-
     DataSchemaNode getContextNode();
 
     NormalizedNode<?, ?> getData();
index 5550ba5409dbd5c02d63dd251c0bdb0db947e831..e8c3141946cf889c382f4e450b44326b84e4ea6c 100644 (file)
@@ -8,10 +8,8 @@
 package org.opendaylight.yangtools.yang.data.api.schema.tree;
 
 import java.util.Optional;
-import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 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;
 
 /**
@@ -34,7 +32,4 @@ public interface DataTreeSnapshot extends SchemaContextProvider {
      * @return A new data tree modification
      */
     DataTreeModification newModification();
-
-    @Override
-    @NonNull SchemaContext getSchemaContext();
 }
index 38a797c57e626e57b6e2540d38d946d170d4b5cb..e1058eaabee99c42aa33dad98e4ec0288933bbf7 100644 (file)
@@ -15,18 +15,17 @@ 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;
+import org.opendaylight.yangtools.yang.model.util.AbstractSchemaContextProvider;
 
 @NonNullByDefault
-final class JaxenDocument implements XPathDocument, SchemaContextProvider {
+final class JaxenDocument extends AbstractSchemaContextProvider implements XPathDocument {
     private final DataSchemaContextNode<?> schema;
     private final NormalizedNode<?, ?> root;
-    private final SchemaContext context;
 
     JaxenDocument(final SchemaContext context, final DataSchemaContextTree tree,
-        final NormalizedNode<?, ?> root) {
+            final NormalizedNode<?, ?> root) {
+        super(context);
         this.root = requireNonNull(root);
-        this.context = requireNonNull(context);
         this.schema = requireNonNull(tree.getRoot().getChild(root.getIdentifier()));
     }
 
@@ -35,11 +34,6 @@ final class JaxenDocument implements XPathDocument, SchemaContextProvider {
         return root;
     }
 
-    @Override
-    public SchemaContext getSchemaContext() {
-        return context;
-    }
-
     DataSchemaContextNode<?> getSchema() {
         return schema;
     }
index 7c7d4b797a7217f1f36e19a3abf5d143a51ae99c..fa6421ac864373e9a202ff4d56a73f62e7537224 100644 (file)
@@ -27,10 +27,6 @@ public interface EffectiveModelContextProvider extends SchemaContextProvider {
 
     @Override
     default SchemaContext getSchemaContext() {
-        try {
-            return getEffectiveModelContext();
-        } catch (IllegalStateException e) {
-            return null;
-        }
+        return getEffectiveModelContext();
     }
 }
index ab0d88693ff798b18eaf7d63e7a6c11fd886627b..3ee9badb9fdcd5512aaca2da7636a5d1e8e71162 100644 (file)
@@ -7,9 +7,15 @@
  */
 package org.opendaylight.yangtools.yang.model.api;
 
+import org.eclipse.jdt.annotation.NonNull;
+
 // FIXME: document this API contract
 public interface SchemaContextProvider {
-
-    // FIXME: 4.0.0: This needs to return @NonNull
-    SchemaContext getSchemaContext();
+    /**
+     * Return the {@link SchemaContext} attached to this object.
+     *
+     * @return An SchemaContext instance.
+     * @throws IllegalStateException if the context is not available.
+     */
+    @NonNull SchemaContext getSchemaContext();
 }
index 8f19e689621e974ecaf16c6d4fc1394e7582599e..138947a8558c4e22497778fb0bfc3657068ec693 100644 (file)
@@ -12,7 +12,6 @@ import static java.util.Objects.requireNonNull;
 import com.google.common.annotations.Beta;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.MoreObjects.ToStringHelper;
-import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider;
@@ -30,8 +29,7 @@ public abstract class AbstractSchemaContextProvider implements SchemaContextProv
     }
 
     @Override
-    // FIXME: remove @NonNull SchemaContextProvider's method has sane semantics
-    public final @NonNull SchemaContext getSchemaContext() {
+    public final SchemaContext getSchemaContext() {
         return schemaContext;
     }