From 280d5a18def56037bd323a875073f81dded36032 Mon Sep 17 00:00:00 2001 From: Thespica Date: Tue, 31 Oct 2023 16:40:13 +0800 Subject: [PATCH 1/4] Fix missing of scaladoc and javadoc in website --- docs/Makefile | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/docs/Makefile b/docs/Makefile index 2d7df41b3..a353f0396 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -37,21 +37,19 @@ cpp-apidoc: .PHONY: spark-apidoc spark-apidoc: cd $(ROOTDIR)/spark && \ - mvn scala:doc \ - -DoutputDirectory=$(BUILDDIR)/html/reference/spark-api - -.PHONY: java-apidoc -java-apidoc: - cd $(ROOTDIR)/java && \ - mvn -P javadoc javadoc:aggregate \ - -Dmaven.antrun.skip=true \ - -DskipTests \ - -Djavadoc.output.directory=$(BUILDDIR)/html/reference/ \ - -Djavadoc.output.destDir=java-api \ - --quiet + mvn scala:doc .PHONY: html -html: cpp-apidoc spark-apidoc java-apidoc +html: cpp-apidoc spark-apidoc $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + rm -fr $(BUILDDIR)/html/reference/spark-api + cp -fr $(ROOTDIR)/spark/target/site/scaladocs $(BUILDDIR)/html/reference/spark-api + cd $(ROOTDIR)/java && \ + mvn -P javadoc javadoc:aggregate \ + -Dmaven.antrun.skip=true \ + -DskipTests \ + -Djavadoc.output.directory=$(ROOTDIR)/docs/$(BUILDDIR)/html/reference/ \ + -Djavadoc.output.destDir=java-api \ + --quiet @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." \ No newline at end of file From d122d3ee54d193b64c6c8cc3e653648113d3de1e Mon Sep 17 00:00:00 2001 From: Thespica Date: Tue, 31 Oct 2023 22:36:12 +0800 Subject: [PATCH 2/4] Support foreach loop --- .../graphar/edges/EdgesCollection.java | 23 ++++++++++++++++++- .../graphar/vertices/VerticesCollection.java | 22 +++++++++++++++++- .../graphar/edges/EdgesCollectionTest.java | 15 +++++------- .../vertices/VerticesCollectionTest.java | 5 ++-- 4 files changed, 52 insertions(+), 13 deletions(-) diff --git a/java/src/main/java/com/alibaba/graphar/edges/EdgesCollection.java b/java/src/main/java/com/alibaba/graphar/edges/EdgesCollection.java index f99e09c61..02780b7cc 100644 --- a/java/src/main/java/com/alibaba/graphar/edges/EdgesCollection.java +++ b/java/src/main/java/com/alibaba/graphar/edges/EdgesCollection.java @@ -21,9 +21,10 @@ import com.alibaba.graphar.stdcxx.StdString; import com.alibaba.graphar.types.AdjListType; import com.alibaba.graphar.util.Result; +import java.util.Iterator; /** EdgesCollection is designed for reading a collection of edges. */ -public interface EdgesCollection extends CXXPointer { +public interface EdgesCollection extends CXXPointer, Iterable { /** * Construct the collection for a range of edges. * @@ -129,4 +130,24 @@ static EdgesCollection create( /** Get the number of edges in the collection. */ long size(); + + /** Implement Iterable interface to support for-each loop. */ + default Iterator iterator() { + return new Iterator() { + EdgeIter current = begin(); + EdgeIter end = end(); + + @Override + public boolean hasNext() { + return !current.isEnd(); + } + + @Override + public Edge next() { + Edge ret = current.get(); + current.inc(); + return ret; + } + }; + } } diff --git a/java/src/main/java/com/alibaba/graphar/vertices/VerticesCollection.java b/java/src/main/java/com/alibaba/graphar/vertices/VerticesCollection.java index dea2ec2c6..4238a8c4b 100644 --- a/java/src/main/java/com/alibaba/graphar/vertices/VerticesCollection.java +++ b/java/src/main/java/com/alibaba/graphar/vertices/VerticesCollection.java @@ -27,12 +27,13 @@ import com.alibaba.fastffi.FFITypeAlias; import com.alibaba.graphar.graphinfo.VertexInfo; import com.alibaba.graphar.stdcxx.StdString; +import java.util.Iterator; /** VerticesCollection is designed for reading a collection of vertices. */ @FFIGen @FFITypeAlias(GAR_VERTICES_COLLECTION) @CXXHead(GAR_GRAPH_H) -public interface VerticesCollection extends CXXPointer { +public interface VerticesCollection extends CXXPointer, Iterable { /** The iterator pointing to the first vertex. */ @CXXValue @@ -48,6 +49,25 @@ public interface VerticesCollection extends CXXPointer { long size(); + default Iterator iterator() { + return new Iterator() { + VertexIter current = begin(); + VertexIter end = end(); + + @Override + public boolean hasNext() { + return !current.eq(end); + } + + @Override + public Vertex next() { + Vertex ret = current.get(); + current.inc(); + return ret; + } + }; + } + @FFIFactory interface Factory { /** diff --git a/java/src/test/java/com/alibaba/graphar/edges/EdgesCollectionTest.java b/java/src/test/java/com/alibaba/graphar/edges/EdgesCollectionTest.java index d600c27ed..07c6f4e58 100644 --- a/java/src/test/java/com/alibaba/graphar/edges/EdgesCollectionTest.java +++ b/java/src/test/java/com/alibaba/graphar/edges/EdgesCollectionTest.java @@ -41,18 +41,18 @@ public void test1() { AdjListType.ordered_by_source, 0, 1); - EdgeIter end = edges.end(); + EdgeIter it = edges.begin(); long count = 0L; - for (EdgeIter it = edges.begin(); !it.eq(end); it.inc()) { + for (Edge edge : edges) { // access data through iterator directly System.out.print("src=" + it.source() + ", dst=" + it.destination() + " "); // access data through edge - Edge edge = it.get(); Assert.assertEquals(edge.source(), it.source()); Assert.assertEquals(edge.destination(), it.destination()); StdString creationDate = StdString.create("creationDate"); System.out.println("creationDate=" + edge.property(creationDate, creationDate).value()); count++; + it.inc(); } System.out.println("edge_count=" + count); Assert.assertEquals(count, edges.size()); @@ -69,7 +69,7 @@ public void test1() { 4); EdgeIter end1 = edges1.end(); long count1 = 0; - for (EdgeIter it = edges1.begin(); !it.eq(end1); it.inc()) { + for (Edge edge : edges1) { count1++; } System.out.println("edge_count=" + count1); @@ -83,10 +83,8 @@ public void test1() { edgeLabel.toJavaString(), dstLabel.toJavaString(), AdjListType.ordered_by_source); - EdgeIter end2 = edges2.end(); long count2 = 0; - for (EdgeIter it = edges2.begin(); !it.eq(end2); it.inc()) { - Edge edge = it.get(); + for (Edge edge : edges2) { System.out.println("src=" + edge.source() + ", dst=" + edge.destination()); count2++; } @@ -103,9 +101,8 @@ public void test1() { AdjListType.unordered_by_source, 5, 5); - EdgeIter end3 = edges3.end(); long count3 = 0; - for (EdgeIter it = edges3.begin(); !it.eq(end3); it.inc()) { + for (Edge edge : edges3) { count3++; } System.out.println("edge_count=" + count3); diff --git a/java/src/test/java/com/alibaba/graphar/vertices/VerticesCollectionTest.java b/java/src/test/java/com/alibaba/graphar/vertices/VerticesCollectionTest.java index 2bc36ef13..9edeaece0 100644 --- a/java/src/test/java/com/alibaba/graphar/vertices/VerticesCollectionTest.java +++ b/java/src/test/java/com/alibaba/graphar/vertices/VerticesCollectionTest.java @@ -40,7 +40,8 @@ public void test1() { GrapharStaticFunctions.INSTANCE.constructVerticesCollection(graphInfo, label); Assert.assertFalse(maybeVerticesCollection.hasError()); VerticesCollection vertices = maybeVerticesCollection.value(); - for (VertexIter it = vertices.begin(); !it.eq(vertices.end()); it.inc()) { + VertexIter it = vertices.begin(); + for (Vertex vertex : vertices) { // access data through iterator directly VertexIterGen itGen = (VertexIterGen) it; System.out.println( @@ -50,7 +51,6 @@ public void test1() { + ", firstName=" + it.property(property, property).value().toJavaString()); // access data through vertex - Vertex vertex = it.get(); System.out.println( vertex.id() + ", id=" @@ -66,6 +66,7 @@ public void test1() { Assert.assertEquals( it.property(property, property).value().toJavaString(), vertex.property(property, property).value().toJavaString()); + it.inc(); } } } From df53e8f6064046afa489ee1f6d63d97e9e542fe8 Mon Sep 17 00:00:00 2001 From: John Date: Wed, 1 Nov 2023 14:24:41 +0800 Subject: [PATCH 3/4] Update VerticesCollection.java --- .../java/com/alibaba/graphar/vertices/VerticesCollection.java | 1 + 1 file changed, 1 insertion(+) diff --git a/java/src/main/java/com/alibaba/graphar/vertices/VerticesCollection.java b/java/src/main/java/com/alibaba/graphar/vertices/VerticesCollection.java index 4238a8c4b..c9f35e9f6 100644 --- a/java/src/main/java/com/alibaba/graphar/vertices/VerticesCollection.java +++ b/java/src/main/java/com/alibaba/graphar/vertices/VerticesCollection.java @@ -49,6 +49,7 @@ public interface VerticesCollection extends CXXPointer, Iterable { long size(); + /** Implement Iterable interface to support for-each loop. */ default Iterator iterator() { return new Iterator() { VertexIter current = begin(); From 969801c6b908f46cafd320e13d1c3f91e06f1834 Mon Sep 17 00:00:00 2001 From: John Date: Wed, 1 Nov 2023 14:25:32 +0800 Subject: [PATCH 4/4] Update java.yml --- .github/workflows/java.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/java.yml b/.github/workflows/java.yml index 21154a286..65d6e16be 100644 --- a/.github/workflows/java.yml +++ b/.github/workflows/java.yml @@ -14,7 +14,6 @@ on: branches: - main paths: - - 'cpp/include/**' - 'java/**' - '.github/workflows/java.yml'