package com.lambdazen.pixy.gremlin; import org.apache.tinkerpop.gremlin.process.traversal.Traversal; import org.apache.tinkerpop.gremlin.process.traversal.Traverser; import org.apache.tinkerpop.gremlin.process.traversal.step.filter.FilterStep; import org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementException; import org.apache.tinkerpop.gremlin.structure.util.StringFactory; public class PixyCutStep extends FilterStep { boolean wasCut; public PixyCutStep(final Traversal.Admin traversal) { super(traversal); this.wasCut = false; } @Override public void reset() { super.reset(); this.wasCut = false; } @Override public String toString() { return StringFactory.stepString(this); } public boolean wasCut() { return wasCut; } @Override protected boolean filter(Traverser.Admin traverser) { if (wasCut) { throw FastNoSuchElementException.instance(); } else { wasCut = true; return true; } } }