Propagate EffectiveModelContext to more places
[yangtools.git] / yang / yang-data-util / src / main / java / org / opendaylight / yangtools / yang / data / util / DataSchemaContextNode.java
index 53e5dbc63547af443404408990f49e8eae4bf2be..4ba7406b78119876de53f43f8541b5ae70395b98 100644 (file)
@@ -15,12 +15,13 @@ import java.util.Set;
 import java.util.stream.Collectors;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
-import org.opendaylight.yangtools.concepts.Identifiable;
+import org.opendaylight.yangtools.concepts.AbstractIdentifiable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
-import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.AnydataSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.AugmentationTarget;
 import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode;
@@ -28,10 +29,10 @@ import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.SchemaNode;
 
 /**
@@ -41,12 +42,11 @@ import org.opendaylight.yangtools.yang.model.api.SchemaNode;
  *
  * @param <T> Path Argument type
  */
-public abstract class DataSchemaContextNode<T extends PathArgument> implements Identifiable<T> {
+public abstract class DataSchemaContextNode<T extends PathArgument> extends AbstractIdentifiable<T> {
     private final DataSchemaNode dataSchemaNode;
-    private final T identifier;
 
     protected DataSchemaContextNode(final T identifier, final SchemaNode schema) {
-        this.identifier = identifier;
+        super(identifier);
         if (schema instanceof DataSchemaNode) {
             this.dataSchemaNode = (DataSchemaNode) schema;
         } else {
@@ -54,11 +54,6 @@ public abstract class DataSchemaContextNode<T extends PathArgument> implements I
         }
     }
 
-    @Override
-    public T getIdentifier() {
-        return identifier;
-    }
-
     public boolean isMixin() {
         return false;
     }
@@ -70,7 +65,7 @@ public abstract class DataSchemaContextNode<T extends PathArgument> implements I
     public abstract boolean isLeaf();
 
     protected Set<QName> getQNameIdentifiers() {
-        return ImmutableSet.of(identifier.getNodeType());
+        return ImmutableSet.of(getIdentifier().getNodeType());
     }
 
     /**
@@ -125,7 +120,7 @@ public abstract class DataSchemaContextNode<T extends PathArgument> implements I
     private static ChoiceSchemaNode findChoice(final Iterable<ChoiceSchemaNode> choices, final QName child) {
         for (ChoiceSchemaNode choice : choices) {
             // FIXME: this looks weird: what are we looking for again?
-            for (CaseSchemaNode caze : choice.getCases().values()) {
+            for (CaseSchemaNode caze : choice.getCases()) {
                 if (findChildSchemaNode(caze, child) != null) {
                     return choice;
                 }
@@ -176,8 +171,10 @@ public abstract class DataSchemaContextNode<T extends PathArgument> implements I
             return new ChoiceNodeContextNode((ChoiceSchemaNode) potential);
         } else if (potential instanceof LeafListSchemaNode) {
             return fromLeafListSchemaNode((LeafListSchemaNode) potential);
-        } else if (potential instanceof AnyXmlSchemaNode) {
-            return new AnyXmlContextNode((AnyXmlSchemaNode) potential);
+        } else if (potential instanceof AnydataSchemaNode) {
+            return new AnydataContextNode((AnydataSchemaNode) potential);
+        } else if (potential instanceof AnyxmlSchemaNode) {
+            return new AnyXmlContextNode((AnyxmlSchemaNode) potential);
         }
         return null;
     }
@@ -200,7 +197,7 @@ public abstract class DataSchemaContextNode<T extends PathArgument> implements I
         return new UnorderedLeafListMixinContextNode(potential);
     }
 
-    public static DataSchemaContextNode<?> from(final SchemaContext ctx) {
+    public static DataSchemaContextNode<?> from(final EffectiveModelContext ctx) {
         return new ContainerContextNode(ctx);
     }
 }