org.apache.tinkerpop.gremlin.server.op.session

## Class SessionOpProcessor

- java.lang.Object
- - org.apache.tinkerpop.gremlin.server.op.AbstractOpProcessor
  - - org.apache.tinkerpop.gremlin.server.op.AbstractEvalOpProcessor
    - - org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor

- All Implemented Interfaces:
    AutoCloseable, OpProcessor

      public class SessionOpProcessor
      extends AbstractEvalOpProcessor

  Simple `OpProcessor` implementation that handles `ScriptEngine` script evaluation in the context of a session. Note that this processor will also take a "close" op to kill the session and rollback any incomplete transactions.
  Author:
    Stephen Mallette (http://stephen.genoprime.com)

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class org.apache.tinkerpop.gremlin.server.op.AbstractEvalOpProcessor

      `AbstractEvalOpProcessor.BindingSupplier`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `CONFIG_GLOBAL_FUNCTION_CACHE_ENABLED` Configuration setting that behaves as an override to the global script engine setting of the same name that is provided to the `GroovyCompilerGremlinPlugin`.
    `static String` | `CONFIG_PER_GRAPH_CLOSE_TIMEOUT` Configuration setting for how long to wait in milliseconds for each configured graph to close any open transactions when the session is killed.
    `static String` | `CONFIG_SESSION_TIMEOUT` Configuration setting for how long a session will be available before it times out.
    `static long` | `DEFAULT_PER_GRAPH_CLOSE_TIMEOUT` Default amount of time to wait in milliseconds for each configured graph to close any open transactions when the session is killed.
    `static long` | `DEFAULT_SESSION_TIMEOUT` Default timeout for a session is eight hours.
    `static String` | `OP_PROCESSOR_NAME`
    `protected static ConcurrentHashMap<String,Session>` | `sessions` Script engines are evaluated in a per session context where imports/scripts are isolated per session.

    - ### Fields inherited from class org.apache.tinkerpop.gremlin.server.op.AbstractEvalOpProcessor

      `CONFIG_MAX_PARAMETERS, DEFAULT_MAX_PARAMETERS, evalOpTimer, INVALID_BINDINGS_KEYS, maxParameters`

    - ### Fields inherited from class org.apache.tinkerpop.gremlin.server.op.AbstractOpProcessor

      `manageTransactions`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SessionOpProcessor()`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `beforeProcessing(Graph graph, Context ctx)`
    `void` | `close()`
    `protected void` | `evalOp(Context context)`
    `protected Function<Context,AbstractEvalOpProcessor.BindingSupplier>` | `getBindingMaker(Session session)` A useful method for those extending this class, where the means for binding construction can be supplied to this class.
    `ThrowingConsumer<Context>` | `getEvalOp()` Provides an operation for evaluating a Gremlin script.
    `String` | `getName()` The name of the processor which requests must refer to "processor" field on a request.
    `protected static Session` | `getSession(Context context, RequestMessage msg)` Examines the `RequestMessage` and extracts the session token.
    `protected void` | `handleGraphOperation(Bytecode bytecode, Graph graph, Context context)` If `Bytecode` is detected to contain a "graph operation" then it gets processed by this method.
    `protected void` | `handleIterator(Context context, Iterator itty, Graph graph)`
    `void` | `init(Settings settings)` Initialize the `OpProcessor` with settings from the server.
    `protected void` | `onError(Graph graph, Context ctx)`
    `protected void` | `onTraversalSuccess(Graph graph, Context ctx)`
    `Optional<ThrowingConsumer<Context>>` | `selectOther(Context ctx)` Older versions of session-based requests accepted a "close" operator in addition to "eval".
    `protected Optional<ThrowingConsumer<Context>>` | `validateEvalMessage(RequestMessage message)`

    - ### Methods inherited from class org.apache.tinkerpop.gremlin.server.op.AbstractEvalOpProcessor

      `evalOpInternal, select`

    - ### Methods inherited from class org.apache.tinkerpop.gremlin.server.op.AbstractOpProcessor

      `attemptCommit, attemptRollback, determineIfTemporaryException, generateResultMetaData, generateStatusAttributes, handleIterator, isForceFlushed, iterateComplete, makeFrame`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### OP_PROCESSOR_NAME

          public static final String OP_PROCESSOR_NAME

      See Also:
        Constant Field Values

    - #### sessions

          protected static ConcurrentHashMap<String,Session> sessions

      Script engines are evaluated in a per session context where imports/scripts are isolated per session.

    - #### CONFIG_SESSION_TIMEOUT

          public static final String CONFIG_SESSION_TIMEOUT

      Configuration setting for how long a session will be available before it times out.
      See Also:
        Constant Field Values

    - #### CONFIG_PER_GRAPH_CLOSE_TIMEOUT

          public static final String CONFIG_PER_GRAPH_CLOSE_TIMEOUT

      Configuration setting for how long to wait in milliseconds for each configured graph to close any open transactions when the session is killed.
      See Also:
        Constant Field Values

    - #### CONFIG_GLOBAL_FUNCTION_CACHE_ENABLED

          public static final String CONFIG_GLOBAL_FUNCTION_CACHE_ENABLED

      Configuration setting that behaves as an override to the global script engine setting of the same name that is provided to the `GroovyCompilerGremlinPlugin`.
      See Also:
        Constant Field Values

    - #### DEFAULT_SESSION_TIMEOUT

          public static final long DEFAULT_SESSION_TIMEOUT

      Default timeout for a session is eight hours.
      See Also:
        Constant Field Values

    - #### DEFAULT_PER_GRAPH_CLOSE_TIMEOUT

          public static final long DEFAULT_PER_GRAPH_CLOSE_TIMEOUT

      Default amount of time to wait in milliseconds for each configured graph to close any open transactions when the session is killed.
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### SessionOpProcessor

          public SessionOpProcessor()

  - ### Method Detail

    - #### getName

          public String getName()

      Description copied from interface: `OpProcessor`
      The name of the processor which requests must refer to "processor" field on a request.

    - #### init

          public void init(Settings settings)

      Description copied from interface: `OpProcessor`
      Initialize the `OpProcessor` with settings from the server. This method should only be called once at server startup by a single thread.

    - #### selectOther

          public Optional<ThrowingConsumer<Context>> selectOther(Context ctx)
                                                          throws OpProcessorException

      Older versions of session-based requests accepted a "close" operator in addition to "eval". This feature effectively acts as a do-nothing for 3.5.0 to allow older versions of the drivers to connect. At some point this may be removed completely. Note that closing the channel kills the session now.
      Specified by:
        `selectOther` in class `AbstractEvalOpProcessor`
      Returns:
      Throws:
        `OpProcessorException`

    - #### getEvalOp

          public ThrowingConsumer<Context> getEvalOp()

      Description copied from class: `AbstractEvalOpProcessor`
      Provides an operation for evaluating a Gremlin script.
      Specified by:
        `getEvalOp` in class `AbstractEvalOpProcessor`
      Returns:

    - #### validateEvalMessage

          protected Optional<ThrowingConsumer<Context>> validateEvalMessage(RequestMessage message)
                                                                     throws OpProcessorException

      Overrides:
        `validateEvalMessage` in class `AbstractEvalOpProcessor`
      Throws:
        `OpProcessorException`

    - #### close

          public void close()
                     throws Exception

      Throws:
        `Exception`

    - #### evalOp

          protected void evalOp(Context context)
                         throws OpProcessorException

      Throws:
        `OpProcessorException`

    - #### getSession

          protected static Session getSession(Context context,
                                              RequestMessage msg)

      Examines the `RequestMessage` and extracts the session token. The session is then either found or a new one is created.

    - #### getBindingMaker

          protected Function<Context,AbstractEvalOpProcessor.BindingSupplier> getBindingMaker(Session session)

      A useful method for those extending this class, where the means for binding construction can be supplied to this class. This function is used in `evalOp(Context)` to create the final argument to `AbstractEvalOpProcessor.evalOpInternal(Context, Supplier, BindingSupplier)`. In this way an extending class can use the default `AbstractEvalOpProcessor.BindingSupplier` which carries a lot of re-usable functionality or provide a new one to override the existing approach.

    - #### handleGraphOperation

          protected void handleGraphOperation(Bytecode bytecode,
                                              Graph graph,
                                              Context context)

      If `Bytecode` is detected to contain a "graph operation" then it gets processed by this method.

    - #### beforeProcessing

          protected void beforeProcessing(Graph graph,
                                          Context ctx)

    - #### onError

          protected void onError(Graph graph,
                                 Context ctx)

    - #### onTraversalSuccess

          protected void onTraversalSuccess(Graph graph,
                                            Context ctx)

    - #### handleIterator

          protected void handleIterator(Context context,
                                        Iterator itty,
                                        Graph graph)
                                 throws InterruptedException

      Throws:
        `InterruptedException`

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