Added support for parsing submodules & added dependency utility parser
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / builder / impl / ModuleBuilder.java
index 13372b1c38d8452173fd4ad893e38aef307effee..15969e6677821ad4deb00362787b594a454e148e 100644 (file)
@@ -32,6 +32,18 @@ public class ModuleBuilder extends AbstractDataNodeContainerBuilder {
     private String prefix;
     private Date revision;
 
+    private final boolean submodule;
+    private String belongsTo;
+    private ModuleBuilder parent;
+
+    public ModuleBuilder getParent() {
+        return parent;
+    }
+
+    public void setParent(ModuleBuilder parent) {
+        this.parent = parent;
+    }
+
     private final Deque<Builder> actualPath = new LinkedList<>();
     private final Set<TypeAwareBuilder> dirtyNodes = new HashSet<>();
 
@@ -66,10 +78,15 @@ public class ModuleBuilder extends AbstractDataNodeContainerBuilder {
     private final List<UnknownSchemaNodeBuilder> allUnknownNodes = new ArrayList<UnknownSchemaNodeBuilder>();
 
     public ModuleBuilder(final String name) {
+        this(name, false);
+    }
+
+    public ModuleBuilder(final String name, final boolean submodule) {
         super(name, 0, null);
         this.name = name;
         schemaPath = new SchemaPath(Collections.<QName> emptyList(), true);
         instance = new ModuleImpl(name);
+        this.submodule = submodule;
         actualPath.push(this);
     }
 
@@ -78,6 +95,7 @@ public class ModuleBuilder extends AbstractDataNodeContainerBuilder {
         this.name = base.getName();
         schemaPath = new SchemaPath(Collections.<QName> emptyList(), true);
         instance = new ModuleImpl(base.getName());
+        submodule = false;
         actualPath.push(this);
 
         namespace = base.getNamespace();
@@ -235,14 +253,34 @@ public class ModuleBuilder extends AbstractDataNodeContainerBuilder {
         return dirtyNodes;
     }
 
+    public Set<AugmentationSchema> getAugments() {
+        return augments;
+    }
+
+    public List<AugmentationSchemaBuilder> getAugmentBuilders() {
+        return augmentBuilders;
+    }
+
     public List<AugmentationSchemaBuilder> getAllAugments() {
         return allAugments;
     }
 
-    public Set<IdentitySchemaNodeBuilder> getIdentities() {
+    public Set<IdentitySchemaNode> getIdentities() {
+        return identities;
+    }
+
+    public Set<IdentitySchemaNodeBuilder> getAddedIdentities() {
         return addedIdentities;
     }
 
+    public Set<FeatureDefinition> getFeatures() {
+        return features;
+    }
+
+    public Set<FeatureBuilder> getAddedFeatures() {
+        return addedFeatures;
+    }
+
     public List<GroupingBuilder> getAllGroupings() {
         return allGroupings;
     }
@@ -251,11 +289,19 @@ public class ModuleBuilder extends AbstractDataNodeContainerBuilder {
         return allUsesNodes;
     }
 
-    public Set<DeviationBuilder> getDeviations() {
+    public Set<Deviation> getDeviations() {
+        return deviations;
+    }
+
+    public Set<DeviationBuilder> getDeviationBuilders() {
         return deviationBuilders;
     }
 
-    public List<ExtensionBuilder> getExtensions() {
+    public List<ExtensionDefinition> getExtensions() {
+        return extensions;
+    }
+
+    public List<ExtensionBuilder> getAddedExtensions() {
         return addedExtensions;
     }
 
@@ -283,6 +329,18 @@ public class ModuleBuilder extends AbstractDataNodeContainerBuilder {
         return revision;
     }
 
+    public boolean isSubmodule() {
+        return submodule;
+    }
+
+    public String getBelongsTo() {
+        return belongsTo;
+    }
+
+    public void setBelongsTo(String belongsTo) {
+        this.belongsTo = belongsTo;
+    }
+
     public void markActualNodeDirty() {
         final TypeAwareBuilder nodeBuilder = (TypeAwareBuilder) getActualNode();
         dirtyNodes.add(nodeBuilder);
@@ -794,11 +852,19 @@ public class ModuleBuilder extends AbstractDataNodeContainerBuilder {
         return builder;
     }
 
-    public Set<RpcDefinitionBuilder> getRpcs() {
+    public Set<RpcDefinition> getRpcs() {
+        return rpcs;
+    }
+
+    public Set<RpcDefinitionBuilder> getAddedRpcs() {
         return addedRpcs;
     }
 
-    public Set<NotificationBuilder> getNotifications() {
+    public Set<NotificationDefinition> getNotifications() {
+        return notifications;
+    }
+
+    public Set<NotificationBuilder> getAddedNotifications() {
         return addedNotifications;
     }
 
@@ -1232,7 +1298,7 @@ public class ModuleBuilder extends AbstractDataNodeContainerBuilder {
         // defined only under module or submodule
         if (parent instanceof DataNodeContainerBuilder) {
             DataNodeContainerBuilder parentNode = (DataNodeContainerBuilder) parent;
-            for (DataSchemaNodeBuilder childNode : parentNode.getChildNodes()) {
+            for (DataSchemaNodeBuilder childNode : parentNode.getChildNodeBuilders()) {
                 if (childNode.getQName().getLocalName().equals(childName)) {
                     raiseYangParserException("'" + child + "'", "node", childName, lineNum, childNode.getLine());
                 }