Bug 6414: Fixed DataNodeIterator's traverseModule method
[yangtools.git] / yang / yang-model-util / src / main / java / org / opendaylight / yangtools / yang / model / util / Leafref.java
index 8ef325cfdf3bbc9aba90840b8b404d2c4bcdb0d9..e2688665bfad397526674b99628bdd69dbcb96ad 100644 (file)
@@ -7,9 +7,10 @@
  */
 package org.opendaylight.yangtools.yang.model.util;
 
+import com.google.common.base.Preconditions;
 import java.util.Collections;
 import java.util.List;
-
+import java.util.Objects;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
@@ -22,17 +23,30 @@ import org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition;
  * interface.
  *
  * @see LeafrefTypeDefinition
+ * @deprecated Use {@link org.opendaylight.yangtools.yang.model.util.type.BaseTypes#leafrefTypeBuilder(SchemaPath)} instead
  */
+@Deprecated
 public final class Leafref implements LeafrefTypeDefinition {
     private static final QName NAME = BaseTypes.constructQName("leafref");
-    private static final SchemaPath PATH = BaseTypes.schemaPath(NAME);
+    private static final SchemaPath PATH = SchemaPath.create(true, NAME);
     private static final String DESCRIPTION = "The leafref type is used to reference a particular leaf instance in the data tree.";
     private static final String REF = "https://tools.ietf.org/html/rfc6020#section-9.9";
 
     private final RevisionAwareXPath xpath;
+    private final SchemaPath path;
 
+    @Deprecated
     public Leafref(final RevisionAwareXPath xpath) {
-        this.xpath = xpath;
+        this(PATH, xpath);
+    }
+
+    private Leafref(final SchemaPath path, final RevisionAwareXPath target) {
+        this.path = Preconditions.checkNotNull(path,"path must be specified");
+        this.xpath = Preconditions.checkNotNull(target,"target must not be null.");
+    }
+
+    public static Leafref create(final SchemaPath path, final RevisionAwareXPath target) {
+        return new Leafref(path,target);
     }
 
     @Override
@@ -47,7 +61,7 @@ public final class Leafref implements LeafrefTypeDefinition {
 
     @Override
     public Object getDefaultValue() {
-        return this;
+        return null;
     }
 
     @Override
@@ -57,7 +71,7 @@ public final class Leafref implements LeafrefTypeDefinition {
 
     @Override
     public SchemaPath getPath() {
-        return PATH;
+        return path;
     }
 
     @Override
@@ -89,12 +103,12 @@ public final class Leafref implements LeafrefTypeDefinition {
     public int hashCode() {
         final int prime = 31;
         int result = 1;
-        result = prime * result + ((xpath == null) ? 0 : xpath.hashCode());
+        result = prime * result + Objects.hashCode(xpath);
         return result;
     }
 
     @Override
-    public boolean equals(Object obj) {
+    public boolean equals(final Object obj) {
         if (this == obj) {
             return true;
         }
@@ -105,14 +119,7 @@ public final class Leafref implements LeafrefTypeDefinition {
             return false;
         }
         Leafref other = (Leafref) obj;
-        if (xpath == null) {
-            if (other.xpath != null) {
-                return false;
-            }
-        } else if (!xpath.equals(other.xpath)) {
-            return false;
-        }
-        return true;
+        return Objects.equals(xpath, other.xpath);
     }
 
     @Override