Refactored parsing of uses and augment statements.
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / builder / impl / UsesNodeBuilderImpl.java
index ce7ef8737a06c241013d0589c265e22db902fd99..8eb3a9e81e6bd48c8d93741614743989bb2f520e 100644 (file)
@@ -44,28 +44,35 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo
     private final List<SchemaNodeBuilder> refineBuilders = new ArrayList<SchemaNodeBuilder>();\r
     private final List<RefineHolder> refines = new ArrayList<RefineHolder>();\r
 \r
-    private final Set<DataSchemaNodeBuilder> targetChildren = new HashSet<>();\r
-    private final Set<GroupingBuilder> targetGroupings = new HashSet<>();\r
-    private final Set<TypeDefinitionBuilder> targetTypedefs = new HashSet<>();\r
-    private final List<UnknownSchemaNodeBuilder> targetUnknownNodes = new ArrayList<>();\r
+    private final Set<DataSchemaNodeBuilder> finalChildren = new HashSet<>();\r
+    private Set<DataSchemaNodeBuilder> targetChildren;\r
+\r
+    private final Set<GroupingBuilder> finalGroupings = new HashSet<>();\r
+    private Set<GroupingBuilder> targetGroupings;\r
+\r
+    private final Set<TypeDefinitionBuilder> finalTypedefs = new HashSet<>();\r
+    private Set<TypeDefinitionBuilder> targetTypedefs;\r
+\r
+    private final List<UnknownSchemaNodeBuilder> finalUnknownNodes = new ArrayList<>();\r
+    private List<UnknownSchemaNodeBuilder> targetUnknownNodes;\r
+\r
+    private final List<UsesNodeBuilder> targetGroupingUses = new ArrayList<>();\r
+\r
+    boolean loadDone;\r
+\r
+    public boolean isLoadDone() {\r
+        return loadDone;\r
+    }\r
+\r
+    public void setLoadDone(boolean loadDone) {\r
+        this.loadDone = loadDone;\r
+    }\r
 \r
     public UsesNodeBuilderImpl(final String moduleName, final int line, final String groupingName) {\r
         super(moduleName, line);\r
         this.groupingName = groupingName;\r
     }\r
 \r
-    public UsesNodeBuilderImpl(UsesNodeBuilder b) {\r
-        super(b.getModuleName(), b.getLine());\r
-        groupingName = b.getGroupingName();\r
-        parent = b.getParent();\r
-        groupingPath = b.getGroupingPath();\r
-        augmenting = b.isAugmenting();\r
-        addedByUses = b.isAddedByUses();\r
-        addedAugments.addAll(b.getAugmentations());\r
-        refineBuilders.addAll(b.getRefineNodes());\r
-        refines.addAll(b.getRefines());\r
-    }\r
-\r
     @Override\r
     public UsesNode build() {\r
         if (!isBuilt) {\r
@@ -97,6 +104,7 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo
 \r
             isBuilt = true;\r
         }\r
+\r
         return instance;\r
     }\r
 \r
@@ -165,18 +173,7 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo
 \r
     @Override\r
     public void addRefineNode(DataSchemaNodeBuilder refineNode) {\r
-        // add to refine nodes\r
         refineBuilders.add(refineNode);\r
-        // replace in target children\r
-        DataSchemaNodeBuilder toRemove = null;\r
-        for(DataSchemaNodeBuilder child : targetChildren) {\r
-            if(child.getQName().equals(refineNode.getQName())) {\r
-                toRemove = child;\r
-                break;\r
-            }\r
-        }\r
-        targetChildren.remove(toRemove);\r
-        targetChildren.add(refineNode);\r
     }\r
 \r
     @Override\r
@@ -189,26 +186,71 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo
         refines.add(refine);\r
     }\r
 \r
+    @Override\r
+    public Set<DataSchemaNodeBuilder> getFinalChildren() {\r
+        return finalChildren;\r
+    }\r
+\r
     @Override\r
     public Set<DataSchemaNodeBuilder> getTargetChildren() {\r
         return targetChildren;\r
     }\r
 \r
+    @Override\r
+    public void setTargetChildren(Set<DataSchemaNodeBuilder> targetChildren) {\r
+        this.targetChildren = targetChildren;\r
+    }\r
+\r
+    @Override\r
+    public Set<GroupingBuilder> getFinalGroupings() {\r
+        return finalGroupings;\r
+    }\r
+\r
     @Override\r
     public Set<GroupingBuilder> getTargetGroupings() {\r
         return targetGroupings;\r
     }\r
 \r
+    @Override\r
+    public void setTargetGroupings(Set<GroupingBuilder> targetGroupings) {\r
+        this.targetGroupings = targetGroupings;\r
+    }\r
+\r
+    @Override\r
+    public Set<TypeDefinitionBuilder> getFinalTypedefs() {\r
+        return finalTypedefs;\r
+    }\r
+\r
     @Override\r
     public Set<TypeDefinitionBuilder> getTargetTypedefs() {\r
         return targetTypedefs;\r
     }\r
 \r
+    @Override\r
+    public void setTargetTypedefs(Set<TypeDefinitionBuilder> targetTypedefs) {\r
+        this.targetTypedefs = targetTypedefs;\r
+    }\r
+\r
+    @Override\r
+    public List<UnknownSchemaNodeBuilder> getFinalUnknownNodes() {\r
+        return finalUnknownNodes;\r
+    }\r
+\r
     @Override\r
     public List<UnknownSchemaNodeBuilder> getTargetUnknownNodes() {\r
         return targetUnknownNodes;\r
     }\r
 \r
+    @Override\r
+    public void setTargetUnknownNodes(List<UnknownSchemaNodeBuilder> targetUnknownNodes) {\r
+        this.targetUnknownNodes = targetUnknownNodes;\r
+    }\r
+\r
+    @Override\r
+    public List<UsesNodeBuilder> getTargetGroupingUses() {\r
+        return targetGroupingUses;\r
+    }\r
+\r
     @Override\r
     public int hashCode() {\r
         final int prime = 31;\r