Refactored parsing of YANG uses statement.
[controller.git] / opendaylight / sal / yang-prototype / code-generator / yang-model-parser-impl / src / main / java / org / opendaylight / controller / yang / parser / builder / impl / DeviationBuilder.java
index 239c0a5ed9a8da6c3a1682975f7a8b8258941e17..790275cff404a11c551ff96edfbe0623946a448b 100644 (file)
@@ -7,9 +7,14 @@
  */
 package org.opendaylight.controller.yang.parser.builder.impl;
 
  */
 package org.opendaylight.controller.yang.parser.builder.impl;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
 import org.opendaylight.controller.yang.model.api.Deviation;
 import org.opendaylight.controller.yang.model.api.Deviation.Deviate;
 import org.opendaylight.controller.yang.model.api.SchemaPath;
 import org.opendaylight.controller.yang.model.api.Deviation;
 import org.opendaylight.controller.yang.model.api.Deviation.Deviate;
 import org.opendaylight.controller.yang.model.api.SchemaPath;
+import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
 import org.opendaylight.controller.yang.parser.builder.api.Builder;
 import org.opendaylight.controller.yang.parser.util.YangModelBuilderUtil;
 import org.opendaylight.controller.yang.parser.util.YangParseException;
 import org.opendaylight.controller.yang.parser.builder.api.Builder;
 import org.opendaylight.controller.yang.parser.util.YangModelBuilderUtil;
 import org.opendaylight.controller.yang.parser.util.YangParseException;
@@ -17,6 +22,7 @@ import org.opendaylight.controller.yang.parser.util.YangParseException;
 public final class DeviationBuilder implements Builder {
     private final DeviationImpl instance;
     private final int line;
 public final class DeviationBuilder implements Builder {
     private final DeviationImpl instance;
     private final int line;
+    private final List<UnknownSchemaNodeBuilder> addedUnknownNodes = new ArrayList<UnknownSchemaNodeBuilder>();
 
     DeviationBuilder(final String targetPathStr, final int line) {
         this.line = line;
 
     DeviationBuilder(final String targetPathStr, final int line) {
         this.line = line;
@@ -27,6 +33,13 @@ public final class DeviationBuilder implements Builder {
 
     @Override
     public Deviation build() {
 
     @Override
     public Deviation build() {
+        // UNKNOWN NODES
+        List<UnknownSchemaNode> unknownNodes = new ArrayList<UnknownSchemaNode>();
+        for (UnknownSchemaNodeBuilder b : addedUnknownNodes) {
+            unknownNodes.add(b.build());
+        }
+        instance.setUnknownSchemaNodes(unknownNodes);
+
         return instance;
     }
 
         return instance;
     }
 
@@ -35,6 +48,11 @@ public final class DeviationBuilder implements Builder {
         return line;
     }
 
         return line;
     }
 
+    @Override
+    public void addUnknownSchemaNode(UnknownSchemaNodeBuilder unknownNode) {
+        addedUnknownNodes.add(unknownNode);
+    }
+
     public void setDeviate(final String deviate) {
         if ("not-supported".equals(deviate)) {
             instance.setDeviate(Deviate.NOT_SUPPORTED);
     public void setDeviate(final String deviate) {
         if ("not-supported".equals(deviate)) {
             instance.setDeviate(Deviate.NOT_SUPPORTED);
@@ -58,6 +76,7 @@ public final class DeviationBuilder implements Builder {
         private final SchemaPath targetPath;
         private Deviate deviate;
         private String reference;
         private final SchemaPath targetPath;
         private Deviate deviate;
         private String reference;
+        private List<UnknownSchemaNode> unknownNodes = Collections.emptyList();
 
         private DeviationImpl(final SchemaPath targetPath) {
             this.targetPath = targetPath;
 
         private DeviationImpl(final SchemaPath targetPath) {
             this.targetPath = targetPath;
@@ -86,6 +105,16 @@ public final class DeviationBuilder implements Builder {
             this.reference = reference;
         }
 
             this.reference = reference;
         }
 
+        public List<UnknownSchemaNode> getUnknownSchemaNodes() {
+            return unknownNodes;
+        }
+
+        private void setUnknownSchemaNodes(List<UnknownSchemaNode> unknownSchemaNodes) {
+            if (unknownSchemaNodes != null) {
+                this.unknownNodes = unknownSchemaNodes;
+            }
+        }
+
         @Override
         public int hashCode() {
             final int prime = 31;
         @Override
         public int hashCode() {
             final int prime = 31;