Convert base types to implement CanonicalValue
[yangtools.git] / yang / yang-common / src / main / java / org / opendaylight / yangtools / yang / common / Uint64.java
index 3480b938bc295186ee1f2235c363e962b68cf314..71af5e8c7270e706c77aa58a9040e7d32c5b88f0 100644 (file)
@@ -15,7 +15,8 @@ import com.google.common.cache.CacheLoader;
 import com.google.common.cache.LoadingCache;
 import com.google.common.primitives.UnsignedLong;
 import java.math.BigInteger;
-import org.opendaylight.yangtools.concepts.Immutable;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
 
 /**
  * Dedicated type for YANG's 'type uint64' type.
@@ -23,7 +24,20 @@ import org.opendaylight.yangtools.concepts.Immutable;
  * @author Robert Varga
  */
 @Beta
-public class Uint64 extends Number implements Comparable<Uint64>, Immutable {
+@NonNullByDefault
+public class Uint64 extends Number implements CanonicalValue<Uint64> {
+    private static final class Support extends AbstractCanonicalValueSupport<Uint64> {
+        Support() {
+            super(Uint64.class);
+        }
+
+        @Override
+        public Uint64 fromString(final String str) {
+            return Uint64.valueOf(str);
+        }
+    }
+
+    private static final CanonicalValueSupport<Uint64> SUPPORT = new Support();
     private static final long serialVersionUID = 1L;
     private static final long MIN_VALUE = 0;
 
@@ -189,19 +203,29 @@ public class Uint64 extends Number implements Comparable<Uint64>, Immutable {
         return Long.compareUnsigned(value, o.value);
     }
 
+    @Override
+    public final String toCanonicalString() {
+        return Long.toUnsignedString(value);
+    }
+
+    @Override
+    public final CanonicalValueSupport<Uint64> support() {
+        return SUPPORT;
+    }
+
     @Override
     public final int hashCode() {
         return Long.hashCode(value);
     }
 
     @Override
-    public final boolean equals(final Object obj) {
+    public final boolean equals(final @Nullable Object obj) {
         return this == obj || obj instanceof Uint64 && value == ((Uint64)obj).value;
     }
 
     @Override
     public final String toString() {
-        return Long.toUnsignedString(value);
+        return toCanonicalString();
     }
 
     private Object readResolve() {