Interface GraphReader

All Known Implementing Classes:
GraphMLReader, GraphSONReader, GryoReader

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)
  • Method Details

    • readGraph

      void readGraph(InputStream inputStream, Graph graphToWriteTo) throws IOException
      Reads an entire graph from an InputStream. This method is mean to load an empty Graph. 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 accompanying GraphWriter.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 an InputStream. This method will filter the read the read vertex by the provided GraphFilter. If the graph filter will filter the vertex itself, then the returned Optional is empty.
      Parameters:
      inputStream - a stream containing at least a single vertex as defined by the accompanying GraphWriter.writeVertex(OutputStream, Vertex).
      graphFilter - The GraphFilter to 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<org.apache.tinkerpop.gremlin.structure.util.Attachable<Vertex>,Vertex> vertexAttachMethod) throws IOException
      Reads a single vertex from an InputStream. 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 accompanying GraphWriter.writeVertex(OutputStream, Vertex).
      vertexAttachMethod - a function that creates re-attaches a Vertex to a Host object.
      Throws:
      IOException
    • readVertex

      Vertex readVertex(InputStream inputStream, Function<org.apache.tinkerpop.gremlin.structure.util.Attachable<Vertex>,Vertex> vertexAttachMethod, Function<org.apache.tinkerpop.gremlin.structure.util.Attachable<Edge>,Edge> edgeAttachMethod, Direction attachEdgesOfThisDirection) throws IOException
      Reads a single vertex from an InputStream. 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 one Vertex as defined by the accompanying GraphWriter.writeVertices(OutputStream, Iterator, Direction) method.
      vertexAttachMethod - a function that creates re-attaches a Vertex to a Host object.
      edgeAttachMethod - a function that creates re-attaches a Edge to a Host object.
      attachEdgesOfThisDirection - only edges of this direction are passed to the edgeMaker.
      Throws:
      IOException
    • readVertices

      Iterator<Vertex> readVertices(InputStream inputStream, Function<org.apache.tinkerpop.gremlin.structure.util.Attachable<Vertex>,Vertex> vertexAttachMethod, Function<org.apache.tinkerpop.gremlin.structure.util.Attachable<Edge>,Edge> edgeAttachMethod, Direction attachEdgesOfThisDirection) throws IOException
      Reads a set of one or more vertices from an InputStream which were written by GraphWriter.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 one Vertex as defined by the accompanying GraphWriter.writeVertices(OutputStream, Iterator, Direction) or GraphWriter.writeVertices(OutputStream, Iterator) methods.
      vertexAttachMethod - a function that creates re-attaches a Vertex to a Host object.
      edgeAttachMethod - a function that creates re-attaches a Edge to a Host object.
      attachEdgesOfThisDirection - only edges of this direction are passed to the edgeMaker.
      Throws:
      IOException
    • readEdge

      Edge readEdge(InputStream inputStream, Function<org.apache.tinkerpop.gremlin.structure.util.Attachable<Edge>,Edge> edgeAttachMethod) throws IOException
      Reads a single edge from an InputStream. 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 one Edge as defined by the accompanying GraphWriter.writeEdge(OutputStream, Edge) method.
      edgeAttachMethod - a function that creates re-attaches a Edge to a Host object.
      Throws:
      IOException
    • readVertexProperty

      VertexProperty readVertexProperty(InputStream inputStream, Function<org.apache.tinkerpop.gremlin.structure.util.Attachable<VertexProperty>,VertexProperty> vertexPropertyAttachMethod) throws IOException
      Reads a single vertex property from an InputStream. 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 one VertexProperty as written by the accompanying GraphWriter.writeVertexProperty(OutputStream, VertexProperty) method.
      vertexPropertyAttachMethod - a function that creates re-attaches a VertexProperty to a Host object.
      Returns:
      the value returned by the attach method.
      Throws:
      IOException
    • readProperty

      Property readProperty(InputStream inputStream, Function<org.apache.tinkerpop.gremlin.structure.util.Attachable<Property>,Property> propertyAttachMethod) throws IOException
      Reads a single property from an InputStream. 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 one Property as written by the accompanying GraphWriter.writeProperty(OutputStream, Property) method.
      propertyAttachMethod - a function that creates re-attaches a Property to a Host object.
      Returns:
      the value returned by the attach method.
      Throws:
      IOException
    • readObject

      <C> C readObject(InputStream inputStream, Class<? extends C> clazz) throws IOException
      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