Skip to content

Commit

Permalink
Updating to next transaction for traversals if tx is closed.
Browse files Browse the repository at this point in the history
  • Loading branch information
mbroecheler committed Jan 15, 2015
1 parent 0e666b3 commit 67443c1
Showing 1 changed file with 18 additions and 12 deletions.
Expand Up @@ -5,6 +5,7 @@
import com.thinkaurelius.titan.core.TitanTransaction;
import com.thinkaurelius.titan.core.TitanVertex;
import com.thinkaurelius.titan.graphdb.olap.computer.FulgoraElementTraversal;
import com.thinkaurelius.titan.graphdb.transaction.StandardTitanTx;
import com.tinkerpop.gremlin.process.Step;
import com.tinkerpop.gremlin.process.Traversal;
import com.tinkerpop.gremlin.process.TraversalStrategy;
Expand Down Expand Up @@ -58,20 +59,25 @@ public static Step getNextNonIdentityStep(final Step start) {
}

public static TitanTransaction getTx(Traversal traversal) {
if (traversal instanceof FulgoraElementTraversal) return ((FulgoraElementTraversal)traversal).getGraph();
TitanTransaction tx=null;

Step startStep = TraversalHelper.getStart(traversal);
if (startStep instanceof GraphStep) {
Graph graph = ((GraphStep)startStep).getGraph(Graph.class);
if (graph instanceof TitanTransaction) return (TitanTransaction)graph;
else throw new IllegalArgumentException("Not a valid Titan traversal ["+graph.getClass()+"]: " + traversal);
if (traversal instanceof FulgoraElementTraversal) {
tx = ((FulgoraElementTraversal)traversal).getGraph();
} else {
Step startStep = TraversalHelper.getStart(traversal);
if (startStep instanceof GraphStep) {
Graph graph = ((GraphStep)startStep).getGraph(Graph.class);
if (graph instanceof TitanTransaction) tx = (TitanTransaction)graph;
else throw new IllegalArgumentException("Not a valid Titan traversal ["+graph.getClass()+"]: " + traversal);
} else if (startStep instanceof StartStep) {
Element element = (Element)((StartStep)startStep).getStart();
if (element instanceof TitanElement) tx = ((TitanElement)element).graph();
else throw new IllegalArgumentException("Not a valid Titan traversal because starting element is ["+element+"]: " + traversal);
}
}
if (startStep instanceof StartStep) {
Element element = (Element)((StartStep)startStep).getStart();
if (element instanceof TitanElement) return ((TitanElement)element).graph();
else throw new IllegalArgumentException("Not a valid Titan traversal because starting element is ["+element+"]: " + traversal);
}
throw new IllegalArgumentException("Not a valid start step for a Titan traversal: " + traversal);
if (tx==null) throw new IllegalArgumentException("Not a valid start step for a Titan traversal: " + traversal);
if (tx.isOpen()) return tx;
else return ((StandardTitanTx)tx).getNextTx();
}

}

0 comments on commit 67443c1

Please sign in to comment.