Added support for parsing yang models with already resolved context.
[controller.git] / opendaylight / sal / yang-prototype / code-generator / yang-model-parser-impl / src / main / java / org / opendaylight / controller / yang / parser / builder / impl / RpcDefinitionBuilder.java
index 6cbcec1054a1b58256fe4cec1e6731cce7ef0d41..e36adbdeb2850f09102f244ef2fc2422377a1946 100644 (file)
@@ -26,13 +26,15 @@ import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder;
 import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionAwareBuilder;
 import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder;
 
-public final class RpcDefinitionBuilder implements SchemaNodeBuilder,
-        TypeDefinitionAwareBuilder {
+public final class RpcDefinitionBuilder implements SchemaNodeBuilder, TypeDefinitionAwareBuilder {
     private boolean isBuilt;
     private final RpcDefinitionImpl instance;
     private final int line;
     private final QName qname;
     private SchemaPath schemaPath;
+    private String description;
+    private String reference;
+    private Status status = Status.CURRENT;
     private ContainerSchemaNodeBuilder inputBuilder;
     private ContainerSchemaNodeBuilder outputBuilder;
     private final Set<TypeDefinitionBuilder> addedTypedefs = new HashSet<TypeDefinitionBuilder>();
@@ -48,8 +50,12 @@ public final class RpcDefinitionBuilder implements SchemaNodeBuilder,
     @Override
     public RpcDefinition build() {
         if (!isBuilt) {
-            final ContainerSchemaNode input = inputBuilder.build();
-            final ContainerSchemaNode output = outputBuilder.build();
+            instance.setDescription(description);
+            instance.setReference(reference);
+            instance.setStatus(status);
+
+            final ContainerSchemaNode input = inputBuilder == null ? null : inputBuilder.build();
+            final ContainerSchemaNode output = outputBuilder == null ? null : outputBuilder.build();
             instance.setInput(input);
             instance.setOutput(output);
 
@@ -121,19 +127,36 @@ public final class RpcDefinitionBuilder implements SchemaNodeBuilder,
         this.schemaPath = schemaPath;
     }
 
+    @Override
+    public String getDescription() {
+        return description;
+    }
+
     @Override
     public void setDescription(final String description) {
-        instance.setDescription(description);
+        this.description = description;
+    }
+
+    @Override
+    public String getReference() {
+        return reference;
+    }
+
+    @Override
+    public void setReference(String reference) {
+        this.reference = reference;
     }
 
     @Override
-    public void setReference(final String reference) {
-        instance.setReference(reference);
+    public Status getStatus() {
+        return status;
     }
 
     @Override
     public void setStatus(final Status status) {
-        instance.setStatus(status);
+        if (status != null) {
+            this.status = status;
+        }
     }
 
     @Override
@@ -148,7 +171,11 @@ public final class RpcDefinitionBuilder implements SchemaNodeBuilder,
 
     @Override
     public int hashCode() {
-        return qname.hashCode();
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((qname == null) ? 0 : qname.hashCode());
+        result = prime * result + ((schemaPath == null) ? 0 : schemaPath.hashCode());
+        return result;
     }
 
     @Override
@@ -167,6 +194,13 @@ public final class RpcDefinitionBuilder implements SchemaNodeBuilder,
         } else if (!other.qname.equals(this.qname)) {
             return false;
         }
+        if (other.schemaPath == null) {
+            if (this.schemaPath != null) {
+                return false;
+            }
+        } else if (!other.schemaPath.equals(this.schemaPath)) {
+            return false;
+        }
         return true;
     }
 
@@ -314,8 +348,7 @@ public final class RpcDefinitionBuilder implements SchemaNodeBuilder,
 
         @Override
         public String toString() {
-            StringBuilder sb = new StringBuilder(
-                    RpcDefinitionImpl.class.getSimpleName() + "[");
+            StringBuilder sb = new StringBuilder(RpcDefinitionImpl.class.getSimpleName() + "[");
             sb.append("qname=" + qname);
             sb.append(", path=" + path);
             sb.append(", input=" + input);