org.apache.tinkerpop.gremlin.structure

## Interface Graph.Features

- All Known Implementing Classes:
    EmptyGraph.EmptyGraphFeatures, RemoteGraph.RemoteFeatures, StarGraph.StarGraphFeatures, TinkerGraph.TinkerGraphFeatures
  Enclosing interface:
    Graph

      public static interface Graph.Features

  An interface that represents the capabilities of a `Graph` implementation. By default all methods of features return `true` and it is up to implementers to disable feature they don't support. Users should check features prior to using various functions of TinkerPop to help ensure code portability across implementations. For example, a common usage would be to check if a graph supports transactions prior to calling the commit method on `Graph.tx()`.

  As an additional notice to Graph Providers, feature methods will be used by the test suite to determine which tests will be ignored and which will be executed, therefore proper setting of these features is essential to maximizing the amount of testing performed by the suite. Further note, that these methods may be called by the TinkerPop core code to determine what operations may be appropriately executed which will have impact on features utilized by users.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface and Description
    --- | ---
    `static interface` | `Graph.Features.DataTypeFeatures` Base interface for features that relate to supporting different data types.
    `static interface` | `Graph.Features.EdgeFeatures` Features that are related to `Edge` operations.
    `static interface` | `Graph.Features.EdgePropertyFeatures` Features that are related to `Edge` `Property` objects.
    `static interface` | `Graph.Features.ElementFeatures` Features that are related to `Element` objects.
    `static interface` | `Graph.Features.FeatureSet` A marker interface to identify any set of Features.
    `static interface` | `Graph.Features.GraphFeatures` Features specific to a operations of a "graph".
    `static interface` | `Graph.Features.PropertyFeatures` A base interface for `Edge` or `Vertex` `Property` features.
    `static interface` | `Graph.Features.VariableFeatures` Features for `Graph.Variables`.
    `static interface` | `Graph.Features.VertexFeatures` Features that are related to `Vertex` operations.
    `static interface` | `Graph.Features.VertexPropertyFeatures` Features that are related to `Vertex` `Property` objects.

  - ### Method Summary

    All Methods Instance Methods Default Methods
    Modifier and Type | Method and Description
    --- | ---
    `default Graph.Features.EdgeFeatures` | `edge()` Gets the features related to "edge" operation.
    `default Graph.Features.GraphFeatures` | `graph()` Gets the features related to "graph" operation.
    `default boolean` | `supports(Class<? extends Graph.Features.FeatureSet> featureClass, String feature)` Implementers should not override this method.
    `default Graph.Features.VertexFeatures` | `vertex()` Gets the features related to "vertex" operation.

- - ### Method Detail

    - #### graph

          default Graph.Features.GraphFeatures graph()

      Gets the features related to "graph" operation.

    - #### vertex

          default Graph.Features.VertexFeatures vertex()

      Gets the features related to "vertex" operation.

    - #### edge

          default Graph.Features.EdgeFeatures edge()

      Gets the features related to "edge" operation.

    - #### supports

          default boolean supports(Class<? extends Graph.Features.FeatureSet> featureClass,
                                   String feature)
                            throws NoSuchMethodException,
                                   IllegalAccessException,
                                   InvocationTargetException

      Implementers should not override this method. Note that this method utilizes reflection to check for feature support.
      Throws:
        `NoSuchMethodException`
        `IllegalAccessException`
        `InvocationTargetException`

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