refactor DocumentPath comparator
Change-Id: I7b0a8a741d21aff61581e207bfe34e6ce2070955
diff --git a/core/api/src/main/java/org/onosproject/store/service/DocumentPath.java b/core/api/src/main/java/org/onosproject/store/service/DocumentPath.java
index 0ef9aef..0198444 100644
--- a/core/api/src/main/java/org/onosproject/store/service/DocumentPath.java
+++ b/core/api/src/main/java/org/onosproject/store/service/DocumentPath.java
@@ -16,6 +16,7 @@
package org.onosproject.store.service;
+import com.google.common.collect.Comparators;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import org.apache.commons.collections.CollectionUtils;
@@ -24,6 +25,7 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
+import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
@@ -233,19 +235,7 @@
@Override
public int compareTo(DocumentPath that) {
- int shorterLength = this.pathElements.size() > that.pathElements.size()
- ? that.pathElements.size() : this.pathElements.size();
- for (int i = 0; i < shorterLength; i++) {
- if (this.pathElements.get(i).compareTo(that.pathElements.get(i)) != 0) {
- return this.pathElements.get(i).compareTo(that.pathElements.get(i));
- }
- }
- if (this.pathElements.size() > that.pathElements.size()) {
- return 1;
- } else if (that.pathElements.size() > this.pathElements.size()) {
- return -1;
- } else {
- return 0;
- }
+ return Comparators.lexicographical(Comparator.<String>naturalOrder())
+ .compare(this.pathElements, that.pathElements);
}
}
diff --git a/core/api/src/test/java/org/onosproject/store/service/DocumentPathTest.java b/core/api/src/test/java/org/onosproject/store/service/DocumentPathTest.java
index 6e69eb6..c0137c8 100644
--- a/core/api/src/test/java/org/onosproject/store/service/DocumentPathTest.java
+++ b/core/api/src/test/java/org/onosproject/store/service/DocumentPathTest.java
@@ -16,8 +16,13 @@
package org.onosproject.store.service;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.greaterThan;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.lessThan;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import java.util.Arrays;
@@ -73,10 +78,10 @@
DocumentPath one = path("root");
DocumentPath four = path("root.a.b.c.d");
DocumentPath difFour = path("root.e.c.b.a");
- assertEquals(-1, one.compareTo(four));
- assertEquals(1, four.compareTo(one));
- assertEquals(4, difFour.compareTo(four));
- assertEquals(0, difFour.compareTo(difFour));
+ assertThat(one.compareTo(four), is(lessThan(0)));
+ assertThat(four.compareTo(one), is(greaterThan(0)));
+ assertThat(difFour.compareTo(four), is(greaterThan(0)));
+ assertThat(difFour.compareTo(difFour), is(equalTo(0)));
}
private static DocumentPath exceptions(String nodeName, DocumentPath path) {