Improve SemVer.equals()
[yangtools.git] / common / concepts / src / main / java / org / opendaylight / yangtools / concepts / SemVer.java
index ea4813a0514eccab6231173144dc8cff61c55a0a..eda29f7cc368b8271f5b51bb3ce22f32d999b657 100644 (file)
@@ -7,11 +7,13 @@
  */
 package org.opendaylight.yangtools.concepts;
 
+import static com.google.common.base.Preconditions.checkArgument;
+
 import com.google.common.annotations.Beta;
-import com.google.common.base.Preconditions;
 import java.io.Serializable;
 import java.util.Objects;
-import javax.annotation.Nonnull;
+import org.checkerframework.checker.index.qual.NonNegative;
+import org.eclipse.jdt.annotation.NonNull;
 
 /**
  * A single version according to <a href="http://semver.org/">Semantic Versioning</a>.
@@ -24,27 +26,28 @@ public final class SemVer implements Comparable<SemVer>, Serializable {
     private final int patch;
 
     private SemVer(final int major, final int minor, final int patch) {
-        Preconditions.checkArgument(major >= 0);
+        checkArgument(major >= 0);
         this.major = major;
-        Preconditions.checkArgument(minor >= 0);
+        checkArgument(minor >= 0);
         this.minor = minor;
-        Preconditions.checkArgument(patch >= 0);
+        checkArgument(patch >= 0);
         this.patch = patch;
     }
 
-    public static SemVer create(final int major) {
+    public static @NonNull SemVer create(final @NonNegative int major) {
         return create(major, 0);
     }
 
-    public static SemVer create(final int major, final int minor) {
+    public static @NonNull SemVer create(final @NonNegative int major, final @NonNegative int minor) {
         return create(major, minor, 0);
     }
 
-    public static SemVer create(final int major, final int minor, final int patch) {
+    public static @NonNull  SemVer create(final @NonNegative int major, final @NonNegative int minor,
+            final @NonNegative int patch) {
         return new SemVer(major, minor, patch);
     }
 
-    public static SemVer valueOf(@Nonnull final String str) {
+    public static @NonNull SemVer valueOf(final @NonNull String str) {
         final int minorIdx = str.indexOf('.');
         if (minorIdx == -1) {
             return create(Integer.parseInt(str));
@@ -90,7 +93,7 @@ public final class SemVer implements Comparable<SemVer>, Serializable {
     }
 
     @Override
-    public int compareTo(@Nonnull final SemVer other) {
+    public int compareTo(final SemVer other) {
         int cmp = Integer.compare(major, other.major);
         if (cmp == 0) {
             cmp = Integer.compare(minor, other.minor);
@@ -109,15 +112,8 @@ public final class SemVer implements Comparable<SemVer>, Serializable {
 
     @Override
     public boolean equals(final Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (!(obj instanceof SemVer)) {
-            return false;
-        }
-
-        final SemVer o = (SemVer) obj;
-        return major == o.major && minor == o.minor && patch == o.patch;
+        return this == obj || obj instanceof SemVer other && major == other.major && minor == other.minor
+            && patch == other.patch;
     }
 
     @Override