SchemaContext extends ContainerSchemaNode 54/4354/1
authorMartin Sunal <msunal@cisco.com>
Fri, 17 Jan 2014 11:31:56 +0000 (12:31 +0100)
committerMartin Sunal <msunal@cisco.com>
Fri, 17 Jan 2014 12:42:50 +0000 (13:42 +0100)
Signed-off-by: Martin Sunal <msunal@cisco.com>
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaContext.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/SchemaContextImpl.java

index b273c760815cc146057e73a81feb864fcc88008b..d800d15a26a664c06cbc12973f949a7b54206dd2 100644 (file)
@@ -11,12 +11,16 @@ import java.net.URI;
 import java.util.Date;
 import java.util.Set;
 
+import org.opendaylight.yangtools.yang.common.QName;
+
 /**
  * The interface contains the methods for manipulating all the top level context
  * data (data from all red modules) like YANG notifications, extensions,
  * operations...
  */
-public interface SchemaContext {
+public interface SchemaContext extends ContainerSchemaNode {
+
+    public static final QName NAME = QName.create(URI.create("urn:ietf:params:xml:ns:netconf:base:1.0"), null, "data");
 
     /**
      * Returns data schema node instances which represents direct subnodes (like
index 3d595ed524aa29d32922a62f1ff57d225b2c9395..b7face08fcf30f07d4e06ebfb7094438dd321f1f 100644 (file)
@@ -8,18 +8,29 @@
 package org.opendaylight.yangtools.yang.parser.impl;
 
 import java.net.URI;
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Date;
 import java.util.HashSet;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Set;
 
+import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
+import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition;
+import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
 import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.api.Status;
+import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.UsesNode;
 import org.opendaylight.yangtools.yang.parser.util.ModuleDependencySort;
 
 final class SchemaContextImpl implements SchemaContext {
@@ -112,4 +123,124 @@ final class SchemaContextImpl implements SchemaContext {
         return null;
     }
 
+    @Override
+    public boolean isAugmenting() {
+        return false;
+    }
+
+    @Override
+    public boolean isAddedByUses() {
+        return false;
+    }
+
+    @Override
+    public boolean isConfiguration() {
+        return false;
+    }
+
+    @Override
+    public ConstraintDefinition getConstraints() {
+        return null;
+    }
+
+    @Override
+    public QName getQName() {
+        return SchemaContext.NAME;
+    }
+
+    @Override
+    public SchemaPath getPath() {
+        return null;
+    }
+
+    @Override
+    public String getDescription() {
+        return null;
+    }
+
+    @Override
+    public String getReference() {
+        return null;
+    }
+
+    @Override
+    public Status getStatus() {
+        return Status.CURRENT;
+    }
+
+    @Override
+    public List<UnknownSchemaNode> getUnknownSchemaNodes() {
+        final List<UnknownSchemaNode> result = new ArrayList<>();
+        for (Module module : modules) {
+            result.addAll(module.getUnknownSchemaNodes());
+        }
+        return Collections.unmodifiableList(result);
+    }
+
+    @Override
+    public Set<TypeDefinition<?>> getTypeDefinitions() {
+        final Set<TypeDefinition<?>> result = new LinkedHashSet<>();
+        for (Module module : modules) {
+            result.addAll(module.getTypeDefinitions());
+        }
+        return Collections.unmodifiableSet(result);
+    }
+
+    @Override
+    public Set<DataSchemaNode> getChildNodes() {
+        final Set<DataSchemaNode> result = new LinkedHashSet<>();
+        for (Module module : modules) {
+            result.addAll(module.getChildNodes());
+        }
+        return Collections.unmodifiableSet(result);
+    }
+
+    @Override
+    public Set<GroupingDefinition> getGroupings() {
+        final Set<GroupingDefinition> result = new LinkedHashSet<>();
+        for (Module module : modules) {
+            result.addAll(module.getGroupings());
+        }
+        return Collections.unmodifiableSet(result);
+    }
+
+    @Override
+    public DataSchemaNode getDataChildByName(QName name) {
+        DataSchemaNode result = null;
+        for (Module module : modules) {
+            result = module.getDataChildByName(name);
+            if (result != null) {
+                break;
+            }
+        }
+        return result;
+    }
+
+    @Override
+    public DataSchemaNode getDataChildByName(String name) {
+        DataSchemaNode result = null;
+        for (Module module : modules) {
+            result = module.getDataChildByName(name);
+            if (result != null) {
+                break;
+            }
+        }
+        return result;
+    }
+
+    @Override
+    public Set<UsesNode> getUses() {
+        return Collections.emptySet();
+    }
+
+    @Override
+    public boolean isPresenceContainer() {
+        return false;
+    }
+
+    @Override
+    public Set<AugmentationSchema> getAvailableAugmentations() {
+        return Collections.emptySet();
+    }
+
 }