diff --git a/hugegraph-core/src/main/java/org/apache/hugegraph/structure/HugeElement.java b/hugegraph-core/src/main/java/org/apache/hugegraph/structure/HugeElement.java index 652360307d..54e85cc373 100644 --- a/hugegraph-core/src/main/java/org/apache/hugegraph/structure/HugeElement.java +++ b/hugegraph-core/src/main/java/org/apache/hugegraph/structure/HugeElement.java @@ -52,7 +52,7 @@ import org.eclipse.collections.api.iterator.IntIterator; import org.eclipse.collections.api.map.primitive.MutableIntObjectMap; -public abstract class HugeElement implements Element, GraphType, Idfiable { +public abstract class HugeElement implements Element, GraphType, Idfiable, Comparable { private static final MutableIntObjectMap> EMPTY_MAP = CollectionFactory.newIntObjectMap(); @@ -407,6 +407,11 @@ public int hashCode() { return ElementHelper.hashCode(this); } + @Override + public int compareTo(HugeElement o) { + return this.id().compareTo(o.id()); + } + /** * Classify parameter list(pairs) from call request * @param keyValues The property key-value pair of the vertex or edge diff --git a/hugegraph-test/src/main/java/org/apache/hugegraph/api/GremlinApiTest.java b/hugegraph-test/src/main/java/org/apache/hugegraph/api/GremlinApiTest.java index 3b4d646e02..57aefeb9be 100644 --- a/hugegraph-test/src/main/java/org/apache/hugegraph/api/GremlinApiTest.java +++ b/hugegraph-test/src/main/java/org/apache/hugegraph/api/GremlinApiTest.java @@ -219,4 +219,48 @@ public void testFileSerialize() { Map data = ((List) assertMapContains(result, "data")).get(0); Assert.assertEquals("test.text", data.get("file")); } + + @Test + public void testVertexOrderByDesc() { + String body = "{" + + "\"gremlin\":\"g.V().order().by(desc)\"," + + "\"bindings\":{}," + + "\"language\":\"gremlin-groovy\"," + + "\"aliases\":{\"g\":\"__g_hugegraph\"}}"; + Response response = client().post(path, body); + assertResponseStatus(200, response); + } + + @Test + public void testVertexOrderByAsc() { + String body = "{" + + "\"gremlin\":\"g.V().order().by(asc)\"," + + "\"bindings\":{}," + + "\"language\":\"gremlin-groovy\"," + + "\"aliases\":{\"g\":\"__g_hugegraph\"}}"; + Response response = client().post(path, body); + assertResponseStatus(200, response); + } + + @Test + public void testEegeOrderByDesc() { + String body = "{" + + "\"gremlin\":\"g.E().order().by(desc)\"," + + "\"bindings\":{}," + + "\"language\":\"gremlin-groovy\"," + + "\"aliases\":{\"g\":\"__g_hugegraph\"}}"; + Response response = client().post(path, body); + assertResponseStatus(200, response); + } + + @Test + public void testEdgeOrderByAsc() { + String body = "{" + + "\"gremlin\":\"g.E().order().by(asc)\"," + + "\"bindings\":{}," + + "\"language\":\"gremlin-groovy\"," + + "\"aliases\":{\"g\":\"__g_hugegraph\"}}"; + Response response = client().post(path, body); + assertResponseStatus(200, response); + } }