Merge "BUG-576: fixed javadoc warnings."
[yangtools.git] / yang / yang-data-impl / src / main / java / org / opendaylight / yangtools / yang / data / impl / AbstractNodeTO.java
index 018ae1deec07115ee1dc2965fb980ad980b5a986..307bf1216997b97ee0d8ff7985679b7d7fcfef2f 100644 (file)
@@ -12,13 +12,15 @@ import org.opendaylight.yangtools.yang.data.api.CompositeNode;
 import org.opendaylight.yangtools.yang.data.api.ModifyAction;
 import org.opendaylight.yangtools.yang.data.api.Node;
 import org.opendaylight.yangtools.yang.data.api.NodeModification;
+import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.NormalizedNodeBuilder;
 
 /**
  * @author michal.rehak
  * @param <T>
  *            type of node value
- * 
+ * @deprecated Use one of the {@link NormalizedNodeBuilder} implementations.
  */
+@Deprecated
 public abstract class AbstractNodeTO<T> implements Node<T>, NodeModification {
 
     private QName qName;
@@ -26,15 +28,18 @@ public abstract class AbstractNodeTO<T> implements Node<T>, NodeModification {
     private T value;
     private ModifyAction modifyAction;
 
+    // Only for Serialization use
+    public AbstractNodeTO(){
+
+    }
+
     /**
      * @param qname
      * @param parent
      * @param value
      */
-    public AbstractNodeTO(QName qname, CompositeNode parent, T value) {
-        this.qName = qname;
-        this.parent = parent;
-        this.value = value;
+    public AbstractNodeTO(final QName qname, final CompositeNode parent, final T value) {
+        this(qname, parent, value, null);
     }
 
     /**
@@ -43,7 +48,7 @@ public abstract class AbstractNodeTO<T> implements Node<T>, NodeModification {
      * @param value
      * @param modifyAction
      */
-    public AbstractNodeTO(QName qname, CompositeNode parent, T value, ModifyAction modifyAction) {
+    public AbstractNodeTO(final QName qname, final CompositeNode parent, final T value, final ModifyAction modifyAction) {
         this.qName = qname;
         this.parent = parent;
         this.value = value;
@@ -71,7 +76,7 @@ public abstract class AbstractNodeTO<T> implements Node<T>, NodeModification {
      * @param parent
      *            the parent to set
      */
-    public void setParent(CompositeNode parent) {
+    public void setParent(final CompositeNode parent) {
         this.parent = parent;
     }
 
@@ -79,8 +84,11 @@ public abstract class AbstractNodeTO<T> implements Node<T>, NodeModification {
      * @param value
      *            the value to set
      */
-    protected void setValue(T value) {
+    @Override
+    public T setValue(final T value) {
+        T oldValue = this.value;
         this.value = value;
+        return oldValue;
     }
 
     @Override
@@ -101,7 +109,7 @@ public abstract class AbstractNodeTO<T> implements Node<T>, NodeModification {
      * @param modifyAction
      *            the modifyAction to set
      */
-    protected void setModificationAction(ModifyAction modifyAction) {
+    protected void setModificationAction(final ModifyAction modifyAction) {
         this.modifyAction = modifyAction;
     }
 
@@ -113,19 +121,24 @@ public abstract class AbstractNodeTO<T> implements Node<T>, NodeModification {
         return out.toString();
     }
 
+
+    @Override
+    public final QName getKey() {
+        return getNodeType();
+    }
+
     /* */
     @Override
     public int hashCode() {
         final int prime = 31;
         int result = 1;
-        result = prime * result + ((modifyAction == null) ? 0 : modifyAction.hashCode());
         result = prime * result + ((qName == null) ? 0 : qName.hashCode());
         result = prime * result + ((value == null) ? 0 : value.hashCode());
         return result % 2;
     }
 
     @Override
-    public boolean equals(Object obj) {
+    public boolean equals(final Object obj) {
         if (this == obj) {
             return true;
         }
@@ -137,9 +150,6 @@ public abstract class AbstractNodeTO<T> implements Node<T>, NodeModification {
         }
         @SuppressWarnings("unchecked")
         AbstractNodeTO<T> other = (AbstractNodeTO<T>) obj;
-        if (modifyAction != other.modifyAction) {
-            return false;
-        }
         if (parent == null) {
             if (other.parent != null) {
                 return false;
@@ -165,4 +175,13 @@ public abstract class AbstractNodeTO<T> implements Node<T>, NodeModification {
     }
     /* */
 
+
+    //Serialization related
+
+    protected final void init(final QName qName, final CompositeNode parent, final T value, final ModifyAction modifyAction){
+        this.qName = qName;
+        this.modifyAction = modifyAction;
+        this.parent = parent;
+        this.value = value;
+    }
 }