Avoid use of Objects.hash when there's only 1 params

- directly call #hashCode() when hashed Object seems non-null
- replace with Objects.hashCode(Object) when Nullable
- replace with Long.hashCode(long), etc. when primitive

Change-Id: I08c24ebbe94cf4162d1491209a14baf953163e41
diff --git a/utils/jdvue/src/main/java/org/onlab/jdvue/DependencyCycle.java b/utils/jdvue/src/main/java/org/onlab/jdvue/DependencyCycle.java
index 444995b..0fc761d 100644
--- a/utils/jdvue/src/main/java/org/onlab/jdvue/DependencyCycle.java
+++ b/utils/jdvue/src/main/java/org/onlab/jdvue/DependencyCycle.java
@@ -110,7 +110,7 @@
 
     @Override
     public int hashCode() {
-        return Objects.hash(cycle);
+        return cycle.hashCode();
     }
 
     @Override
diff --git a/utils/misc/src/main/java/org/onlab/graph/DisjointPathPair.java b/utils/misc/src/main/java/org/onlab/graph/DisjointPathPair.java
index 206a34c..dfa150e 100644
--- a/utils/misc/src/main/java/org/onlab/graph/DisjointPathPair.java
+++ b/utils/misc/src/main/java/org/onlab/graph/DisjointPathPair.java
@@ -30,8 +30,8 @@
  */
 public class DisjointPathPair<V extends Vertex, E extends Edge<V>> implements Path<V, E> {
 
-    private Path<V, E> primary, secondary;
-    boolean primaryActive = true;
+    private final Path<V, E> primary, secondary;
+    private boolean primaryActive = true;
 
     /**
      * Creates a disjoint path pair from two paths.
@@ -88,7 +88,7 @@
      * @return boolean representing whether it has backup
      */
     public boolean hasBackup() {
-        return secondary != null && secondary.edges() != null;
+        return secondary != null;
     }
 
     @Override
@@ -103,7 +103,9 @@
 
     @Override
     public int hashCode() {
-        return hasBackup() ? Objects.hash(primary) + Objects.hash(secondary) :
+        // Note: DisjointPathPair with primary and secondary swapped
+        // must result in same hashCode
+        return hasBackup() ? primary.hashCode() + secondary.hashCode() :
                 Objects.hash(primary);
     }
 
diff --git a/utils/misc/src/main/java/org/onlab/graph/DisjointPathPair.java.orig b/utils/misc/src/main/java/org/onlab/graph/DisjointPathPair.java.orig
deleted file mode 100644
index 1cf22b6..0000000
--- a/utils/misc/src/main/java/org/onlab/graph/DisjointPathPair.java.orig
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Copyright 2015 Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-package org.onlab.graph;
-
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
-
-import static com.google.common.collect.ImmutableSet.of;
-import static com.google.common.base.MoreObjects.toStringHelper;
-
-
-public class DisjointPathPair<V extends Vertex, E extends Edge<V>> implements Path<V, E> {
-    public Path<V, E> path1, path2;
-    boolean usingPath1 = true;
-
-<<<<<<< HEAD
-    /**
-     * Creates a Disjoint Path Pair from two paths.
-     *
-     * @param p1    first path
-     * @param p2    second path
-     */
-=======
->>>>>>> Disjoint Path Pairs (Suurballe) utils
-    public DisjointPathPair(Path<V, E> p1, Path<V, E> p2) {
-        path1 = p1;
-        path2 = p2;
-    }
-<<<<<<< HEAD
-
-    @Override
-=======
->>>>>>> Disjoint Path Pairs (Suurballe) utils
-    public V src() {
-        return path1.src();
-    }
-
-<<<<<<< HEAD
-    @Override
-    public V dst() {
-        return path1.dst();
-    }
-
-    @Override
-=======
-    public V dst() {
-        return path1.dst();
-    }
->>>>>>> Disjoint Path Pairs (Suurballe) utils
-    public double cost() {
-        if (!hasBackup()) {
-            return path1.cost();
-        }
-        return path1.cost() + path2.cost();
-    }
-<<<<<<< HEAD
-
-    @Override
-=======
->>>>>>> Disjoint Path Pairs (Suurballe) utils
-    public List<E> edges() {
-        if (usingPath1 || !hasBackup()) {
-            return path1.edges();
-        } else {
-            return path2.edges();
-        }
-    }
-<<<<<<< HEAD
-
-    /**
-     * Checks if this path pair contains a backup/secondary path.
-     *
-     * @return boolean representing whether it has backup
-     */
-    public boolean hasBackup() {
-        return path2 != null && path2.edges() != null;
-    }
-
-    /**
-     * Switches this disjoint path pair to using its backup path, instead of
-     * using its primary.
-     */
-    public void useBackup() {
-        usingPath1 = !usingPath1;
-    }
-
-    @Override
-=======
-    public boolean hasBackup() {
-        return path2 != null && path2.edges() != null;
-    }
-    public void useBackup() {
-        usingPath1 = !usingPath1;
-    }
->>>>>>> Disjoint Path Pairs (Suurballe) utils
-    public String toString() {
-        return toStringHelper(this)
-                .add("src", src())
-                .add("dst", dst())
-                .add("cost", cost())
-                .add("edges", edges())
-                .toString();
-    }
-<<<<<<< HEAD
-
-    @Override
-=======
->>>>>>> Disjoint Path Pairs (Suurballe) utils
-    public int hashCode() {
-        Set<Path<V, E>> paths;
-        if (!hasBackup()) {
-            paths = of(path1);
-        } else {
-            paths = of(path1, path2);
-        }
-        return Objects.hash(paths);
-    }
-<<<<<<< HEAD
-
-    @Override
-=======
->>>>>>> Disjoint Path Pairs (Suurballe) utils
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj instanceof DisjointPathPair) {
-            final DisjointPathPair other = (DisjointPathPair) obj;
-            return Objects.equals(this.src(), other.src()) &&
-                    Objects.equals(this.dst(), other.dst()) &&
-                    (Objects.equals(this.path1, other.path1) &&
-                            Objects.equals(this.path2, other.path2)) ||
-                    (Objects.equals(this.path1, other.path2) &&
-                            Objects.equals(this.path2, other.path1));
-        }
-        return false;
-    }
-<<<<<<< HEAD
-
-    /**
-     * Returns number of paths inside this path pair object.
-     *
-     * @return number of paths
-     */
-=======
->>>>>>> Disjoint Path Pairs (Suurballe) utils
-    public int size() {
-        if (hasBackup()) {
-            return 2;
-        }
-        return 1;
-    }
-}
diff --git a/utils/misc/src/main/java/org/onlab/util/Frequency.java b/utils/misc/src/main/java/org/onlab/util/Frequency.java
index 5669abd..1ef7113 100644
--- a/utils/misc/src/main/java/org/onlab/util/Frequency.java
+++ b/utils/misc/src/main/java/org/onlab/util/Frequency.java
@@ -18,8 +18,6 @@
 import com.google.common.base.MoreObjects;
 import com.google.common.collect.ComparisonChain;
 
-import java.util.Objects;
-
 /**
  * Class representing frequency. This class is intended to be used for a value whose unit is Hz
  * and its family (KHz, MHz, etc.).
@@ -157,7 +155,7 @@
 
     @Override
     public int hashCode() {
-        return Objects.hash(frequency);
+        return Long.hashCode(frequency);
     }
 
     @Override
diff --git a/utils/misc/src/test/java/org/onlab/graph/DisjointPathPairTest.java b/utils/misc/src/test/java/org/onlab/graph/DisjointPathPairTest.java
new file mode 100644
index 0000000..ca6c56c
--- /dev/null
+++ b/utils/misc/src/test/java/org/onlab/graph/DisjointPathPairTest.java
@@ -0,0 +1,43 @@
+package org.onlab.graph;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.testing.EqualsTester;
+
+/**
+ * Test of DisjointPathPair.
+ */
+public class DisjointPathPairTest {
+
+    private static final TestVertex A = new TestVertex("A");
+    private static final TestVertex B = new TestVertex("B");
+    private static final TestVertex C = new TestVertex("C");
+    private static final TestVertex D = new TestVertex("D");
+
+    private static final TestEdge AB = new TestEdge(A, B, 1.0);
+    private static final TestEdge BC = new TestEdge(B, C, 1.0);
+    private static final TestEdge AD = new TestEdge(A, D, 1.0);
+    private static final TestEdge DC = new TestEdge(D, C, 1.0);
+
+    private static final Path<TestVertex, TestEdge> ABC
+                            = new DefaultPath<>(ImmutableList.of(AB, BC), 1.0);
+    private static final Path<TestVertex, TestEdge> ADC
+                            = new DefaultPath<>(ImmutableList.of(AD, DC), 1.0);
+
+    @Test
+    public void testSwappingPrimarySecondaryDoesntImpactHashCode() {
+        assertEquals(new DisjointPathPair<>(ABC, ADC).hashCode(),
+                     new DisjointPathPair<>(ADC, ABC).hashCode());
+    }
+
+    @Test
+    public void testSwappingPrimarySecondaryDoesntImpactEquality() {
+        new EqualsTester()
+            .addEqualityGroup(new DisjointPathPair<>(ABC, ADC),
+                              new DisjointPathPair<>(ADC, ABC));
+    }
+
+}
diff --git a/utils/misc/src/test/java/org/onlab/graph/TestVertex.java b/utils/misc/src/test/java/org/onlab/graph/TestVertex.java
index be92bd2..b0b92a4 100644
--- a/utils/misc/src/test/java/org/onlab/graph/TestVertex.java
+++ b/utils/misc/src/test/java/org/onlab/graph/TestVertex.java
@@ -30,7 +30,7 @@
 
     @Override
     public int hashCode() {
-        return Objects.hash(name);
+        return name.hashCode();
     }
 
     @Override
diff --git a/utils/stc/src/main/java/org/onlab/stc/Step.java b/utils/stc/src/main/java/org/onlab/stc/Step.java
index 3d8ea98..e14addb 100644
--- a/utils/stc/src/main/java/org/onlab/stc/Step.java
+++ b/utils/stc/src/main/java/org/onlab/stc/Step.java
@@ -101,7 +101,7 @@
 
     @Override
     public int hashCode() {
-        return Objects.hash(name);
+        return name.hashCode();
     }
 
     @Override