org.apache.tinkerpop.gremlin.structure.io

## 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 Classes
    Modifier and Type | Interface and Description
    --- | ---
    `static interface` | `GraphReader.ReaderBuilder<T extends GraphReader>` Largely a marker interface for builder classes that construct a `GraphReader`.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method and Description
    --- | ---
    `Edge` | `readEdge(InputStream inputStream, Function<Attachable<Edge>,Edge> edgeAttachMethod)` Reads a single edge from an `InputStream`.
    `void` | `readGraph(InputStream inputStream, Graph graphToWriteTo)` Reads an entire graph from an `InputStream`.
    `<C> C` | `readObject(InputStream inputStream, Class<? extends C> clazz)` Reads an arbitrary object using the registered serializers.
    `Property` | `readProperty(InputStream inputStream, Function<Attachable<Property>,Property> propertyAttachMethod)` Reads a single property from an `InputStream`.
    `Vertex` | `readVertex(InputStream inputStream, Function<Attachable<Vertex>,Vertex> vertexAttachMethod)` Reads a single vertex from an `InputStream`.
    `Vertex` | `readVertex(InputStream inputStream, Function<Attachable<Vertex>,Vertex> vertexAttachMethod, Function<Attachable<Edge>,Edge> edgeAttachMethod, Direction attachEdgesOfThisDirection)` Reads a single vertex from an `InputStream`.
    `default Optional<Vertex>` | `readVertex(InputStream inputStream, GraphFilter graphFilter)` Reads a single vertex from an `InputStream`.
    `VertexProperty` | `readVertexProperty(InputStream inputStream, Function<Attachable<VertexProperty>,VertexProperty> vertexPropertyAttachMethod)` Reads a single vertex property from an `InputStream`.
    `Iterator<Vertex>` | `readVertices(InputStream inputStream, Function<Attachable<Vertex>,Vertex> vertexAttachMethod, Function<Attachable<Edge>,Edge> edgeAttachMethod, Direction attachEdgesOfThisDirection)` Reads a set of one or more vertices from an `InputStream` which were written by `GraphWriter.writeVertices(OutputStream, Iterator)`.

- - ### Method Detail

    - #### 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<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<Attachable<Vertex>,Vertex> vertexAttachMethod,
                            Function<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<Attachable<Vertex>,Vertex> vertexAttachMethod,
                                        Function<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<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<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<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`

Copyright © 2013–2022 Apache Software Foundation. All rights reserved.