Make InMemoryDataTreeSnapshot implement SchemaContextProvider 71/78071/2
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 22 Nov 2018 21:34:12 +0000 (22:34 +0100)
committerRobert Varga <nite@hq.sk>
Fri, 23 Nov 2018 00:20:46 +0000 (00:20 +0000)
Note DataTreeSnapshot's duplication of getSchemaContext(), which
is indicative of a coupling to yang.model.api. This is fine for now,
as this coupling already exists through xpath interfaces, but it
needs to be revisited and cleaned by either removing the method,
or making it a non-default (and inherited from SchemaContextProvider).

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

yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/tree/DataTreeSnapshot.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/InMemoryDataTreeModification.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/InMemoryDataTreeSnapshot.java

index e31750f4533380a4aff987e7b84b87c94ff10096..ef94071d97c6291b54d82e847b3edf13663a59b0 100644 (file)
@@ -39,7 +39,8 @@ public interface DataTreeSnapshot {
      *
      * @return Current schema context.
      */
-    // FIXME: 3.0.0: Make this method non-default.
+    // FIXME: 3.0.0: This method provides a strong tie to yang.model.api. It either needs to be removed or inherited
+    //               by extending SchemaContextProvider. This strictly is an implementation detail.
     default @NonNull SchemaContext getSchemaContext() {
         throw new UnsupportedOperationException("Not implemented by  " + getClass());
     }
index a2caa98e54a37298dfdb9571b92661a0a8a32d7e..54a3b5a587bb30a56f4fc162b6a69a840f565efb 100644 (file)
@@ -23,10 +23,12 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.StoreTreeNodes;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.spi.TreeNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.spi.Version;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-final class InMemoryDataTreeModification extends AbstractCursorAware implements CursorAwareDataTreeModification {
+final class InMemoryDataTreeModification extends AbstractCursorAware implements CursorAwareDataTreeModification,
+        SchemaContextProvider {
     private static final AtomicIntegerFieldUpdater<InMemoryDataTreeModification> SEALED_UPDATER =
             AtomicIntegerFieldUpdater.newUpdater(InMemoryDataTreeModification.class, "sealed");
     private static final Logger LOG = LoggerFactory.getLogger(InMemoryDataTreeModification.class);
index 8491eed4f10765f06e6a4778bc568afe7b43596b..ac68e4eda8425ea8b78c9c5f6e3b64a88e1257a0 100644 (file)
@@ -21,8 +21,10 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.CursorAwareDataTreeS
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeSnapshotCursor;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.spi.TreeNode;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider;
 
-final class InMemoryDataTreeSnapshot extends AbstractCursorAware implements CursorAwareDataTreeSnapshot {
+final class InMemoryDataTreeSnapshot extends AbstractCursorAware implements CursorAwareDataTreeSnapshot,
+        SchemaContextProvider {
     private final @NonNull RootModificationApplyOperation applyOper;
     private final @NonNull SchemaContext schemaContext;
     private final @NonNull TreeNode rootNode;