Merge "Simplify method isMutualExclusive in Subnet. Remove redundant 'if' statements."
[controller.git] / opendaylight / md-sal / sal-rest-connector / src / main / java / org / opendaylight / controller / sal / restconf / impl / SimpleNodeWrapper.java
index 50b6ac77e6ee8b3c885efe87869231736ffce2d2..97f8102127c2b71f69aaf729aeeeed598043aed0 100644 (file)
@@ -11,19 +11,31 @@ import org.opendaylight.yangtools.yang.data.impl.NodeFactory;
 
 import com.google.common.base.Preconditions;
 
-public final class SimpleNodeWrapper implements NodeWrapper<SimpleNode<?>>, SimpleNode<String> {
+public final class SimpleNodeWrapper implements NodeWrapper<SimpleNode<?>>, SimpleNode<Object> {
     
-    private SimpleNode<String> simpleNode;
+    private SimpleNode<Object> simpleNode;
     
     private String localName;
-    private String value;
+    private Object value;
     private URI namespace;
+    private QName name;
 
-    public SimpleNodeWrapper(String localName, String value) {
+    public SimpleNodeWrapper(String localName, Object value) {
         this.localName = Preconditions.checkNotNull(localName);
         this.value = value;
     }
     
+    public SimpleNodeWrapper(URI namespace, String localName, Object value) {
+        this(localName, value);
+        this.namespace = namespace;
+    }
+    
+    @Override
+    public void setQname(QName name) {
+        Preconditions.checkState(simpleNode == null, "Cannot change the object, due to data inconsistencies.");
+        this.name = name;
+    }
+    
     @Override
     public String getLocalName() {
         if (simpleNode != null) {
@@ -47,52 +59,57 @@ public final class SimpleNodeWrapper implements NodeWrapper<SimpleNode<?>>, Simp
     }
 
     @Override
-    public SimpleNode<String> unwrap(CompositeNode parent) {
+    public SimpleNode<Object> unwrap() {
         if (simpleNode == null) {
-            Preconditions.checkNotNull(namespace);
-            simpleNode = NodeFactory.createImmutableSimpleNode(new QName(namespace, localName), parent, value);
+            if (name == null) {
+                Preconditions.checkNotNull(namespace);
+                name = new QName(namespace, localName);
+            }
+            simpleNode = NodeFactory.createImmutableSimpleNode(name, null, value);
             
             value = null;
             namespace = null;
             localName = null;
+            name = null;
         }
-        return simpleNode;
+        return (SimpleNode<Object>) simpleNode;
     }
 
     @Override
     public QName getNodeType() {
-        return unwrap(null).getNodeType();
+        return unwrap().getNodeType();
     }
 
     @Override
     public CompositeNode getParent() {
-        return unwrap(null).getParent();
+        return unwrap().getParent();
     }
 
     @Override
-    public String getValue() {
-        return unwrap(null).getValue();
+    public Object getValue() {
+        return unwrap().getValue();
     }
 
     @Override
     public ModifyAction getModificationAction() {
-        return unwrap(null).getModificationAction();
+        return unwrap().getModificationAction();
     }
 
     @Override
-    public MutableSimpleNode<String> asMutable() {
-        return unwrap(null).asMutable();
+    public MutableSimpleNode<Object> asMutable() {
+        return unwrap().asMutable();
     }
 
     @Override
     public QName getKey() {
-        return unwrap(null).getKey();
+        return unwrap().getKey();
     }
 
     @Override
-    public String setValue(String value) {
-        return unwrap(null).setValue(value);
+    public Object setValue(Object value) {
+        return unwrap().setValue(value);
     }
+    
 
 
 }