Jaeho Shin created GIRAPH-277:
---------------------------------
Summary: Text Vertex Input/Output Format base classes overhaul
Key: GIRAPH-277
URL: https://issues.apache.org/jira/browse/GIRAPH-277
Project: Giraph
Issue Type: Improvement
Components: examples, lib
Reporter: Jaeho Shin
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.
Please comment if you see my proposed change have any impact on other aspects.
I'm unsure of how these additional layers of abstraction could affect
performance.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira