Class AbstractOpProcessor
- java.lang.Object
-
- org.apache.tinkerpop.gremlin.server.op.AbstractOpProcessor
-
- All Implemented Interfaces:
AutoCloseable
,OpProcessor
- Direct Known Subclasses:
AbstractEvalOpProcessor
,TraversalOpProcessor
public abstract class AbstractOpProcessor extends Object implements OpProcessor
A baseOpProcessor
implementation that processes anIterator
of results in a generalized way while ensuring that graph transactions are properly managed.- Author:
- Stephen Mallette (http://stephen.genoprime.com)
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean
manageTransactions
When set totrue
, transactions are always managed otherwise they can be overridden by the request.
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractOpProcessor(boolean manageTransactions)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected static void
attemptCommit(RequestMessage msg, GraphManager graphManager, boolean strict)
protected static void
attemptRollback(RequestMessage msg, GraphManager graphManager, boolean strict)
protected static Optional<Throwable>
determineIfSpecialException(Throwable ex)
Check if any exception in the chain isTemporaryException
orFailure
then respond with the right error code so that the client knows to retry.protected Map<String,Object>
generateResultMetaData(io.netty.channel.ChannelHandlerContext ctx, RequestMessage msg, ResponseStatusCode code, Iterator itty, Settings settings)
Generates response result meta-data to put on aResponseMessage
.protected Map<String,Object>
generateStatusAttributes(io.netty.channel.ChannelHandlerContext ctx, RequestMessage msg, ResponseStatusCode code, Iterator itty, Settings settings)
Generates response status meta-data to put on aResponseMessage
.protected void
handleIterator(Context context, Iterator itty)
Provides a generic way of iterating a result set back to the client.protected boolean
isForceFlushed(io.netty.channel.ChannelHandlerContext ctx, RequestMessage msg, Iterator itty)
Determines if aFrame
should be force flushed outside of theresultIterationBatchSize
and the termination of the iterator.protected void
iterateComplete(io.netty.channel.ChannelHandlerContext ctx, RequestMessage msg, Iterator itty)
Called when iteration withinhandleIterator(Context, Iterator)
is on its final pass and the final frame is about to be sent back to the client.protected static Frame
makeFrame(Context ctx, RequestMessage msg, MessageSerializer<?> serializer, boolean useBinary, List<Object> aggregate, ResponseStatusCode code, Map<String,Object> responseMetaData, Map<String,Object> statusAttributes)
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface java.lang.AutoCloseable
close
-
Methods inherited from interface org.apache.tinkerpop.gremlin.server.OpProcessor
getName, init, select
-
-
-
-
Method Detail
-
determineIfSpecialException
protected static Optional<Throwable> determineIfSpecialException(Throwable ex)
Check if any exception in the chain isTemporaryException
orFailure
then respond with the right error code so that the client knows to retry.
-
handleIterator
protected void handleIterator(Context context, Iterator itty) throws InterruptedException
Provides a generic way of iterating a result set back to the client.- Parameters:
context
- The Gremlin ServerContext
object containing settings, request message, etc.itty
- The result to iterator- Throws:
InterruptedException
-
iterateComplete
protected void iterateComplete(io.netty.channel.ChannelHandlerContext ctx, RequestMessage msg, Iterator itty)
Called when iteration withinhandleIterator(Context, Iterator)
is on its final pass and the final frame is about to be sent back to the client. This method only gets called on successful iteration of the entire result.
-
isForceFlushed
protected boolean isForceFlushed(io.netty.channel.ChannelHandlerContext ctx, RequestMessage msg, Iterator itty)
Determines if aFrame
should be force flushed outside of theresultIterationBatchSize
and the termination of the iterator. By default this method returnfalse
.- Parameters:
itty
- a reference to the currentIterator
of results - it is not meant to be forwarded in this method
-
generateResultMetaData
protected Map<String,Object> generateResultMetaData(io.netty.channel.ChannelHandlerContext ctx, RequestMessage msg, ResponseStatusCode code, Iterator itty, Settings settings)
Generates response result meta-data to put on aResponseMessage
.- Parameters:
itty
- a reference to the currentIterator
of results - it is not meant to be forwarded in this method
-
generateStatusAttributes
protected Map<String,Object> generateStatusAttributes(io.netty.channel.ChannelHandlerContext ctx, RequestMessage msg, ResponseStatusCode code, Iterator itty, Settings settings)
Generates response status meta-data to put on aResponseMessage
.- Parameters:
itty
- a reference to the currentIterator
of results - it is not meant to be forwarded in this method
-
makeFrame
protected static Frame makeFrame(Context ctx, RequestMessage msg, MessageSerializer<?> serializer, boolean useBinary, List<Object> aggregate, ResponseStatusCode code, Map<String,Object> responseMetaData, Map<String,Object> statusAttributes) throws Exception
- Throws:
Exception
-
attemptCommit
protected static void attemptCommit(RequestMessage msg, GraphManager graphManager, boolean strict)
-
attemptRollback
protected static void attemptRollback(RequestMessage msg, GraphManager graphManager, boolean strict)
-
-