-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/6402/
-----------------------------------------------------------
Review request for giraph.
Description
-------
(copied from GIRAPH-277)
The current way of implementing VertexInputFormat and VertexReader had bad
smell. It required users to understand how these two classes are glued
together, and forced similar codes to be duplicated in every new input format.
(Similarly for the VertexOutputFormat and VertexWriter.) Anyone who wants to
create a new format should create an underlying record reader or writer at the
right moment and delegate some calls to it, which seemed unnecessary detail
being exposed. Besides, type parameters had to appear all over every new format
code, which was extremely annoying for both reading existing code and writing a
new one. I was very frustrated writing my first format code especially when I
compared it to writing a new vertex code. I thought writing a new input/output
format should be as simple as vertex.
So, I have refactored TextVertexInputFormat and OutputFormat into new forms
that have no difference in their interfaces, but remove a lot of burden for
subclassing. Instead of providing static VertexReader base classes, I made it a
non-static inner-class of its format class, which helps eliminate the repeated
code for gluing these two, already tightly coupled classes. This has additional
advantage of eliminating all the Generics type variables on the VertexReader
side, which makes overall code much more concise. I added several useful
TextVertexReader base classes that can save efforts for implementing
line-oriented formats.
This addresses bug GIRAPH-277.
https://issues.apache.org/jira/browse/GIRAPH-277
Diffs
-----
trunk/checkstyle.xml 1369914
trunk/src/main/java/org/apache/giraph/examples/IntIntNullIntTextInputFormat.java
1369914
trunk/src/main/java/org/apache/giraph/examples/SimplePageRankVertex.java
1369914
trunk/src/main/java/org/apache/giraph/examples/SimpleSuperstepVertex.java
1369914
trunk/src/main/java/org/apache/giraph/examples/SimpleTextVertexOutputFormat.java
1369914
trunk/src/main/java/org/apache/giraph/examples/VertexWithComponentTextOutputFormat.java
1369914
trunk/src/main/java/org/apache/giraph/graph/VertexWriter.java 1369914
trunk/src/main/java/org/apache/giraph/lib/AdjacencyListTextVertexInputFormat.java
PRE-CREATION
trunk/src/main/java/org/apache/giraph/lib/AdjacencyListTextVertexOutputFormat.java
1369914
trunk/src/main/java/org/apache/giraph/lib/AdjacencyListVertexReader.java
1369914
trunk/src/main/java/org/apache/giraph/lib/IdWithValueTextOutputFormat.java
1369914
trunk/src/main/java/org/apache/giraph/lib/JsonBase64VertexInputFormat.java
1369914
trunk/src/main/java/org/apache/giraph/lib/JsonBase64VertexOutputFormat.java
1369914
trunk/src/main/java/org/apache/giraph/lib/JsonLongDoubleFloatDoubleVertexInputFormat.java
1369914
trunk/src/main/java/org/apache/giraph/lib/JsonLongDoubleFloatDoubleVertexOutputFormat.java
1369914
trunk/src/main/java/org/apache/giraph/lib/LongDoubleDoubleAdjacencyListVertexInputFormat.java
1369914
trunk/src/main/java/org/apache/giraph/lib/TextDoubleDoubleAdjacencyListVertexInputFormat.java
1369914
trunk/src/main/java/org/apache/giraph/lib/TextVertexInputFormat.java 1369914
trunk/src/main/java/org/apache/giraph/lib/TextVertexOutputFormat.java 1369914
trunk/src/test/java/org/apache/giraph/lib/TestAdjacencyListTextVertexOutputFormat.java
1369914
trunk/src/test/java/org/apache/giraph/lib/TestIdWithValueTextOutputFormat.java
1369914
trunk/src/test/java/org/apache/giraph/lib/TestLongDoubleDoubleAdjacencyListVertexInputFormat.java
1369914
trunk/src/test/java/org/apache/giraph/lib/TestTextDoubleDoubleAdjacencyListVertexInputFormat.java
1369914
Diff: https://reviews.apache.org/r/6402/diff/
Testing
-------
Thanks,
Jaeho Shin