Class Client

  • Direct Known Subclasses:
    Client.AliasClusteredClient, Client.ClusteredClient, Client.SessionedClient

    public abstract class Client
    extends Object
    A Client is constructed from a Cluster and represents a way to send messages to Gremlin Server. This class itself is a base class as there are different implementations that provide differing kinds of functionality. See the implementations for specifics on their individual usage.

    The Client is designed to be re-used and shared across threads.

    Author:
    Stephen Mallette (http://stephen.genoprime.com)
    • Field Detail

      • cluster

        protected final Cluster cluster
      • initialized

        protected volatile boolean initialized
    • Method Detail

      • buildMessage

        public org.apache.tinkerpop.gremlin.driver.message.RequestMessage.Builder buildMessage​(org.apache.tinkerpop.gremlin.driver.message.RequestMessage.Builder builder)
        Makes any initial changes to the builder and returns the constructed RequestMessage. Implementers may choose to override this message to append data to the request before sending. By default, this method will simply return the builder passed in by the caller.
      • initializeImplementation

        protected abstract void initializeImplementation()
        Called in the init() method.
      • chooseConnection

        protected abstract org.apache.tinkerpop.gremlin.driver.Connection chooseConnection​(org.apache.tinkerpop.gremlin.driver.message.RequestMessage msg)
                                                                                    throws TimeoutException,
                                                                                           org.apache.tinkerpop.gremlin.driver.exception.ConnectionException
        Chooses a Connection to write the message to.
        Throws:
        TimeoutException
        org.apache.tinkerpop.gremlin.driver.exception.ConnectionException
      • alias

        public Client alias​(String graphOrTraversalSource)
        Create a new Client that aliases the specified Graph or TraversalSource name on the server to a variable called "g" for the context of the requests made through that Client.
        Parameters:
        graphOrTraversalSource - rebinds the specified global Gremlin Server variable to "g"
      • alias

        public Client alias​(Map<String,​String> aliases)
        Creates a Client that supplies the specified set of aliases, thus allowing the user to re-name one or more globally defined Graph or TraversalSource server bindings for the context of the created Client.
      • submit

        public ResultSet submit​(Traversal traversal)
        Submit a Traversal to the server for remote execution.Results are returned as Traverser instances and are therefore bulked, meaning that to properly iterate the contents of the result each Traverser.bulk() must be examined to determine the number of times that object should be presented in iteration.
      • submit

        public ResultSet submit​(Bytecode bytecode)
        Submit a Bytecode to the server for remote execution. Results are returned as Traverser instances and are therefore bulked, meaning that to properly iterate the contents of the result each Traverser.bulk() must be examined to determine the number of times that object should be presented in iteration.
      • submitAsync

        public CompletableFuture<ResultSet> submitAsync​(Bytecode bytecode)
        An asynchronous version of submit(Traversal). Results are returned as Traverser instances and are therefore bulked, meaning that to properly iterate the contents of the result each Traverser.bulk() must be examined to determine the number of times that object should be presented in iteration.
      • init

        public Client init()
        Initializes the client which typically means that a connection is established to the server. Depending on the implementation and configuration this blocking call may take some time. This method will be called automatically if it is not called directly and multiple calls will not have effect.
      • submit

        public ResultSet submit​(String gremlin)
        Submits a Gremlin script to the server and returns a ResultSet once the write of the request is complete.
        Parameters:
        gremlin - the gremlin script to execute
      • submit

        public ResultSet submit​(String gremlin,
                                Map<String,​Object> parameters)
        Submits a Gremlin script and bound parameters to the server and returns a ResultSet once the write of the request is complete. If a script is to be executed repeatedly with slightly different arguments, prefer this method to concatenating a Gremlin script from dynamically produced strings and sending it to submit(String). Parameterized scripts will perform better.
        Parameters:
        gremlin - the gremlin script to execute
        parameters - a map of parameters that will be bound to the script on execution
      • submit

        public ResultSet submit​(String gremlin,
                                RequestOptions options)
        Submits a Gremlin script to the server and returns a ResultSet once the write of the request is complete.
        Parameters:
        gremlin - the gremlin script to execute
        options - for the request
      • submitAsync

        public CompletableFuture<ResultSet> submitAsync​(String gremlin)
        The asynchronous version of submit(String) where the returned future will complete when the write of the request completes.
        Parameters:
        gremlin - the gremlin script to execute
      • submitAsync

        public CompletableFuture<ResultSet> submitAsync​(String gremlin,
                                                        Map<String,​Object> parameters)
        The asynchronous version of submit(String, Map)} where the returned future will complete when the write of the request completes.
        Parameters:
        gremlin - the gremlin script to execute
        parameters - a map of parameters that will be bound to the script on execution
      • submitAsync

        @Deprecated
        public CompletableFuture<ResultSet> submitAsync​(String gremlin,
                                                        String graphOrTraversalSource,
                                                        Map<String,​Object> parameters)
        Deprecated.
        As of release 3.4.0, replaced by submitAsync(String, RequestOptions).
        The asynchronous version of submit(String, Map)} where the returned future will complete when the write of the request completes.
        Parameters:
        gremlin - the gremlin script to execute
        parameters - a map of parameters that will be bound to the script on execution
        graphOrTraversalSource - rebinds the specified global Gremlin Server variable to "g"
      • submitAsync

        @Deprecated
        public CompletableFuture<ResultSet> submitAsync​(String gremlin,
                                                        Map<String,​String> aliases,
                                                        Map<String,​Object> parameters)
        Deprecated.
        As of release 3.4.0, replaced by submitAsync(String, RequestOptions).
        The asynchronous version of submit(String, Map)} where the returned future will complete when the write of the request completes.
        Parameters:
        gremlin - the gremlin script to execute
        parameters - a map of parameters that will be bound to the script on execution
        aliases - aliases the specified global Gremlin Server variable some other name that then be used in the script where the key is the alias name and the value represents the global variable on the server
      • submitAsync

        public CompletableFuture<ResultSet> submitAsync​(org.apache.tinkerpop.gremlin.driver.message.RequestMessage msg)
        A low-level method that allows the submission of a manually constructed RequestMessage.
      • isClosing

        public abstract boolean isClosing()
      • close

        public void close()
        Closes the client by making a synchronous call to closeAsync().
      • getCluster

        public Cluster getCluster()
        Gets the Cluster that spawned this Client.
      • makeDefaultAliasMap

        protected Map<String,​String> makeDefaultAliasMap​(String graphOrTraversalSource)