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/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