Interface GraphReader
- All Known Implementing Classes:
GraphMLReader,GraphSONReader,GryoReader,LegacyGraphSONReader
public interface GraphReader
Functions for reading a graph and its graph elements from a different serialization format. Implementations of
this class do not need to explicitly guarantee that an object read with one method must have its format
equivalent to another. In other words the input to
readVertex(InputStream, Function)} need not also
be readable by readObject(InputStream, Class). In other words, implementations are free
to optimize as is possible for a specific serialization method.
That said, it is however important that the complementary "write" operation in GraphWriter be capable of
writing output compatible to its reader. In other words, the output of
GraphWriter.writeObject(OutputStream, Object) should always be readable by
readObject(InputStream, Class) and the output of GraphWriter.writeGraph(OutputStream, Graph)
should always be readable by readGraph(InputStream, Graph).- Author:
- Stephen Mallette (http://stephen.genoprime.com)
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic interfaceGraphReader.ReaderBuilder<T extends GraphReader>Largely a marker interface for builder classes that construct aGraphReader. -
Method Summary
Modifier and TypeMethodDescriptionreadEdge(InputStream inputStream, Function<Attachable<Edge>, Edge> edgeAttachMethod) Reads a single edge from anInputStream.voidreadGraph(InputStream inputStream, Graph graphToWriteTo) Reads an entire graph from anInputStream.<C> CreadObject(InputStream inputStream, Class<? extends C> clazz) Reads an arbitrary object using the registered serializers.readProperty(InputStream inputStream, Function<Attachable<Property>, Property> propertyAttachMethod) Reads a single property from anInputStream.readVertex(InputStream inputStream, Function<Attachable<Vertex>, Vertex> vertexAttachMethod) Reads a single vertex from anInputStream.readVertex(InputStream inputStream, Function<Attachable<Vertex>, Vertex> vertexAttachMethod, Function<Attachable<Edge>, Edge> edgeAttachMethod, Direction attachEdgesOfThisDirection) Reads a single vertex from anInputStream.readVertex(InputStream inputStream, GraphFilter graphFilter) Reads a single vertex from anInputStream.readVertexProperty(InputStream inputStream, Function<Attachable<VertexProperty>, VertexProperty> vertexPropertyAttachMethod) Reads a single vertex property from anInputStream.readVertices(InputStream inputStream, Function<Attachable<Vertex>, Vertex> vertexAttachMethod, Function<Attachable<Edge>, Edge> edgeAttachMethod, Direction attachEdgesOfThisDirection) Reads a set of one or more vertices from anInputStreamwhich were written byGraphWriter.writeVertices(OutputStream, Iterator).
-
Method Details
-
readGraph
Reads an entire graph from anInputStream. This method is mean to load an emptyGraph. It is up to individual implementations to manage transactions, but it is not required or enforced. Consult the documentation of an implementation to understand the approach it takes.- Parameters:
inputStream- a stream containing an entire graph of vertices and edges as defined by the accompanyingGraphWriter.writeGraph(OutputStream, Graph).graphToWriteTo- the graph to write to when reading from the stream.- Throws:
IOException
-
readVertex
default Optional<Vertex> readVertex(InputStream inputStream, GraphFilter graphFilter) throws IOException Reads a single vertex from anInputStream. This method will filter the read the read vertex by the providedGraphFilter. If the graph filter will filter the vertex itself, then the returnedOptionalis empty.- Parameters:
inputStream- a stream containing at least a single vertex as defined by the accompanyingGraphWriter.writeVertex(OutputStream, Vertex).graphFilter- TheGraphFilterto filter the vertex and its associated edges by.- Returns:
- the vertex with filtered edges or
Optional.empty()if the vertex itself was filtered. - Throws:
IOException
-
readVertex
Vertex readVertex(InputStream inputStream, Function<Attachable<Vertex>, Vertex> vertexAttachMethod) throws IOExceptionReads a single vertex from anInputStream. This method will read vertex properties but not edges. It is expected that the user will manager their own transaction context with respect to this method (i.e. implementations should not commit the transaction for the user).- Parameters:
inputStream- a stream containing at least a single vertex as defined by the accompanyingGraphWriter.writeVertex(OutputStream, Vertex).vertexAttachMethod- a function that creates re-attaches aVertexto aHostobject.- Throws:
IOException
-
readVertex
Vertex readVertex(InputStream inputStream, Function<Attachable<Vertex>, Vertex> vertexAttachMethod, Function<Attachable<Edge>, throws IOExceptionEdge> edgeAttachMethod, Direction attachEdgesOfThisDirection) Reads a single vertex from anInputStream. This method will read vertex properties as well as edges given the direction supplied as an argument. It is expected that the user will manager their own transaction context with respect to this method (i.e. implementations should not commit the transaction for the user).- Parameters:
inputStream- a stream containing at least oneVertexas defined by the accompanyingGraphWriter.writeVertices(OutputStream, Iterator, Direction)method.vertexAttachMethod- a function that creates re-attaches aVertexto aHostobject.edgeAttachMethod- a function that creates re-attaches aEdgeto aHostobject.attachEdgesOfThisDirection- only edges of this direction are passed to theedgeMaker.- Throws:
IOException
-
readVertices
Iterator<Vertex> readVertices(InputStream inputStream, Function<Attachable<Vertex>, Vertex> vertexAttachMethod, Function<Attachable<Edge>, throws IOExceptionEdge> edgeAttachMethod, Direction attachEdgesOfThisDirection) Reads a set of one or more vertices from anInputStreamwhich were written byGraphWriter.writeVertices(OutputStream, Iterator). This method will read vertex properties as well as edges given the direction supplied as an argument. It is expected that the user will manager their own transaction context with respect to this method (i.e. implementations should not commit the transaction for the user).- Parameters:
inputStream- a stream containing at least oneVertexas defined by the accompanyingGraphWriter.writeVertices(OutputStream, Iterator, Direction)orGraphWriter.writeVertices(OutputStream, Iterator)methods.vertexAttachMethod- a function that creates re-attaches aVertexto aHostobject.edgeAttachMethod- a function that creates re-attaches aEdgeto aHostobject.attachEdgesOfThisDirection- only edges of this direction are passed to theedgeMaker.- Throws:
IOException
-
readEdge
Edge readEdge(InputStream inputStream, Function<Attachable<Edge>, Edge> edgeAttachMethod) throws IOExceptionReads a single edge from anInputStream. It is expected that the user will manager their own transaction context with respect to this method (i.e. implementations should not commit the transaction for the user).- Parameters:
inputStream- a stream containing at least oneEdgeas defined by the accompanyingGraphWriter.writeEdge(OutputStream, Edge)method.edgeAttachMethod- a function that creates re-attaches aEdgeto aHostobject.- Throws:
IOException
-
readVertexProperty
VertexProperty readVertexProperty(InputStream inputStream, Function<Attachable<VertexProperty>, VertexProperty> vertexPropertyAttachMethod) throws IOExceptionReads a single vertex property from anInputStream. It is expected that the user will manager their own transaction context with respect to this method (i.e. implementations should not commit the transaction for the user).- Parameters:
inputStream- a stream containing at least oneVertexPropertyas written by the accompanyingGraphWriter.writeVertexProperty(OutputStream, VertexProperty)method.vertexPropertyAttachMethod- a function that creates re-attaches aVertexPropertyto aHostobject.- Returns:
- the value returned by the attach method.
- Throws:
IOException
-
readProperty
Property readProperty(InputStream inputStream, Function<Attachable<Property>, Property> propertyAttachMethod) throws IOExceptionReads a single property from anInputStream. It is expected that the user will manager their own transaction context with respect to this method (i.e. implementations should not commit the transaction for the user).- Parameters:
inputStream- a stream containing at least onePropertyas written by the accompanyingGraphWriter.writeProperty(OutputStream, Property)method.propertyAttachMethod- a function that creates re-attaches aPropertyto aHostobject.- Returns:
- the value returned by the attach method.
- Throws:
IOException
-
readObject
Reads an arbitrary object using the registered serializers.- Parameters:
inputStream- a stream containing an object.clazz- the class expected to be in the stream - may or may not be used by the underlying implementation.- Throws:
IOException
-