This is an automated email from the ASF dual-hosted git repository. okram pushed a commit to branch tp4 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit 32c5caefe24e470f811da1505a860d2b0d647a10 Author: Marko A. Rodriguez <okramma...@gmail.com> AuthorDate: Thu Mar 7 06:25:02 2019 -0700 trucking along. got as() and path() working. Really neat -- as() is a pop/push on the Bytecode. Just as specified in the TP4 article. as(), by(), and all other step-modulators will pop/push the instruction stack. --- .../{machine/compiler => language}/Symbols.java | 4 +++- .../org/apache/tinkerpop/language/Traversal.java | 14 ++++++++++- .../tinkerpop/machine/bytecode/Bytecode.java | 4 ++++ .../tinkerpop/machine/bytecode/Instruction.java | 13 ++++++++++- .../machine/compiler/BytecodeToFunction.java | 21 +++++++++++------ .../{GFunction.java => AbstractFunction.java} | 26 ++++++++++++++++++--- .../{FilterFunction.java => CFunction.java} | 11 +++++---- .../machine/functions/FilterFunction.java | 2 +- .../machine/functions/FlatMapFunction.java | 2 +- .../tinkerpop/machine/functions/IncrMap.java | 10 ++++---- .../machine/functions/InitialFunction.java | 2 +- .../tinkerpop/machine/functions/InjectInitial.java | 7 +++--- .../tinkerpop/machine/functions/IsFilter.java | 8 ++++--- .../tinkerpop/machine/functions/MapFunction.java | 2 +- .../functions/{IncrMap.java => PathMap.java} | 13 +++++++---- .../Bytecode.java => traversers/Path.java} | 27 ++++++++++++++-------- .../tinkerpop/machine/traversers/Traverser.java | 22 +++++++++++++++++- .../apache/tinkerpop/machine/TraversalTest.java | 2 +- .../org/apache/tinkerpop/machine/pipes/Pipes.java | 8 +++---- .../org/apache/tinkerpop/machine/pipes/Step.java | 8 +++---- .../apache/tinkerpop/machine/pipes/PipesTest.java | 1 + 21 files changed, 151 insertions(+), 56 deletions(-) diff --git a/java/core/src/main/java/org/apache/tinkerpop/machine/compiler/Symbols.java b/java/core/src/main/java/org/apache/tinkerpop/language/Symbols.java similarity index 89% rename from java/core/src/main/java/org/apache/tinkerpop/machine/compiler/Symbols.java rename to java/core/src/main/java/org/apache/tinkerpop/language/Symbols.java index 7de197f..fdaf642 100644 --- a/java/core/src/main/java/org/apache/tinkerpop/machine/compiler/Symbols.java +++ b/java/core/src/main/java/org/apache/tinkerpop/language/Symbols.java @@ -16,14 +16,16 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.tinkerpop.machine.compiler; +package org.apache.tinkerpop.language; /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ public final class Symbols { + public static final String AS = "as"; public static final String IS = "is"; public static final String INCR = "incr"; public static final String INJECT = "inject"; + public static final String PATH = "path"; } diff --git a/java/core/src/main/java/org/apache/tinkerpop/language/Traversal.java b/java/core/src/main/java/org/apache/tinkerpop/language/Traversal.java index 86d307a..f363342f 100644 --- a/java/core/src/main/java/org/apache/tinkerpop/language/Traversal.java +++ b/java/core/src/main/java/org/apache/tinkerpop/language/Traversal.java @@ -19,7 +19,8 @@ package org.apache.tinkerpop.language; import org.apache.tinkerpop.machine.bytecode.Bytecode; -import org.apache.tinkerpop.machine.compiler.Symbols; + +import java.util.Map; /** * @author Marko A. Rodriguez (http://markorodriguez.com) @@ -34,6 +35,11 @@ public class Traversal<C, A, B> { this.bytecode = new Bytecode<>(); } + public Traversal<C, A, B> as(final String label) { + this.bytecode.lastInstruction().addLabel(label); + return this; + } + public Traversal<C, A, B> is(final B object) { this.bytecode.addInstruction(this.currentCoefficient, Symbols.IS, object); return this; @@ -49,6 +55,12 @@ public class Traversal<C, A, B> { return (Traversal) this; } + public Traversal<C, A, Map<String, ?>> path() { + this.bytecode.addInstruction(this.currentCoefficient, Symbols.PATH); + return (Traversal) this; + } + + public Bytecode<C> getBytecode() { return this.bytecode; } diff --git a/java/core/src/main/java/org/apache/tinkerpop/machine/bytecode/Bytecode.java b/java/core/src/main/java/org/apache/tinkerpop/machine/bytecode/Bytecode.java index f58f719..e1ef154 100644 --- a/java/core/src/main/java/org/apache/tinkerpop/machine/bytecode/Bytecode.java +++ b/java/core/src/main/java/org/apache/tinkerpop/machine/bytecode/Bytecode.java @@ -40,6 +40,10 @@ public class Bytecode<C> { return this.instructions; } + public Instruction<C> lastInstruction() { + return this.instructions.get(this.instructions.size() - 1); + } + @Override public String toString() { return this.instructions.toString(); diff --git a/java/core/src/main/java/org/apache/tinkerpop/machine/bytecode/Instruction.java b/java/core/src/main/java/org/apache/tinkerpop/machine/bytecode/Instruction.java index 1361104..88323c2 100644 --- a/java/core/src/main/java/org/apache/tinkerpop/machine/bytecode/Instruction.java +++ b/java/core/src/main/java/org/apache/tinkerpop/machine/bytecode/Instruction.java @@ -19,6 +19,8 @@ package org.apache.tinkerpop.machine.bytecode; import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; /** * @author Marko A. Rodriguez (http://markorodriguez.com) @@ -28,6 +30,7 @@ public final class Instruction<C> { private final C coefficient; private final String op; private final Object[] args; + private final Set<String> labels = new HashSet<>(); public Instruction(final C coefficient, final String op, final Object... args) { this.coefficient = coefficient; @@ -47,8 +50,16 @@ public final class Instruction<C> { return this.args; } + public Set<String> labels() { + return this.labels; + } + + public void addLabel(final String label) { + this.labels.add(label); + } + @Override public String toString() { - return "[" + this.coefficient + "]" + this.op + ":" + Arrays.toString(this.args).replace("[", "").replace("]", ""); + return "[" + this.coefficient + "]" + this.op + ":" + Arrays.toString(this.args).replace("[", "").replace("]", "" + "@" + this.labels); } } diff --git a/java/core/src/main/java/org/apache/tinkerpop/machine/compiler/BytecodeToFunction.java b/java/core/src/main/java/org/apache/tinkerpop/machine/compiler/BytecodeToFunction.java index cd328f8..f63b6a5 100644 --- a/java/core/src/main/java/org/apache/tinkerpop/machine/compiler/BytecodeToFunction.java +++ b/java/core/src/main/java/org/apache/tinkerpop/machine/compiler/BytecodeToFunction.java @@ -18,38 +18,45 @@ */ package org.apache.tinkerpop.machine.compiler; +import org.apache.tinkerpop.language.Symbols; import org.apache.tinkerpop.machine.bytecode.Bytecode; import org.apache.tinkerpop.machine.bytecode.Instruction; -import org.apache.tinkerpop.machine.functions.GFunction; +import org.apache.tinkerpop.machine.functions.CFunction; import org.apache.tinkerpop.machine.functions.IncrMap; import org.apache.tinkerpop.machine.functions.InjectInitial; import org.apache.tinkerpop.machine.functions.IsFilter; +import org.apache.tinkerpop.machine.functions.PathMap; import java.util.ArrayList; import java.util.List; +import java.util.Set; /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ public final class BytecodeToFunction { - public static <C> List<GFunction<C>> compile(final Bytecode<C> bytecode) throws Exception { - final List<GFunction<C>> functions = new ArrayList<>(); + public static <C> List<CFunction<C>> compile(final Bytecode<C> bytecode) throws Exception { + final List<CFunction<C>> functions = new ArrayList<>(); for (final Instruction<C> instruction : bytecode.getInstructions()) { functions.add(BytecodeToFunction.generateFunction(instruction)); } return functions; } - private static <C> GFunction<C> generateFunction(final Instruction<C> instruction) throws Exception { + private static <C> CFunction<C> generateFunction(final Instruction<C> instruction) throws Exception { final String op = instruction.op(); + final C coefficient = instruction.coefficient(); + final Set<String> labels = instruction.labels(); switch (op) { case Symbols.INJECT: - return new InjectInitial<>(instruction.coefficient(), instruction.args()); + return new InjectInitial<>(coefficient, labels, instruction.args()); case Symbols.IS: - return new IsFilter<>(instruction.coefficient(), instruction.args()[0]); + return new IsFilter<>(coefficient, labels, instruction.args()[0]); case Symbols.INCR: - return new IncrMap<C>(instruction.coefficient()); + return new IncrMap<>(coefficient, labels); + case Symbols.PATH: + return new PathMap<>(coefficient, labels); default: throw new Exception("This is an unknown instruction:" + instruction.op()); } diff --git a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/GFunction.java b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/AbstractFunction.java similarity index 65% rename from java/core/src/main/java/org/apache/tinkerpop/machine/functions/GFunction.java rename to java/core/src/main/java/org/apache/tinkerpop/machine/functions/AbstractFunction.java index 082b679..c918139 100644 --- a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/GFunction.java +++ b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/AbstractFunction.java @@ -18,23 +18,43 @@ */ package org.apache.tinkerpop.machine.functions; +import org.apache.tinkerpop.machine.traversers.Traverser; + +import java.util.Set; + /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ -public class GFunction<C> { +abstract class AbstractFunction<C> implements CFunction<C> { protected final C coefficient; + private Set<String> labels; - public GFunction(final C coefficient) { + public AbstractFunction(final C coefficient, final Set<String> labels) { this.coefficient = coefficient; + this.labels = labels; } + @Override public C coefficient() { return this.coefficient; } @Override + public Set<String> labels() { + return this.labels; + } + + protected <A> Traverser<C, A> postProcess(final Traverser<C, A> traverser) { + for (final String label : labels) { + traverser.addLabel(label); + } + return traverser; + } + + + @Override public String toString() { - return "[" + this.coefficient + "]" + this.getClass().getSimpleName(); + return "[" + this.coefficient + "]" + this.getClass().getSimpleName() + "@" + this.labels; } } diff --git a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/FilterFunction.java b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/CFunction.java similarity index 84% copy from java/core/src/main/java/org/apache/tinkerpop/machine/functions/FilterFunction.java copy to java/core/src/main/java/org/apache/tinkerpop/machine/functions/CFunction.java index 2835783..2c5cc18 100644 --- a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/FilterFunction.java +++ b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/CFunction.java @@ -18,12 +18,15 @@ */ package org.apache.tinkerpop.machine.functions; -import org.apache.tinkerpop.machine.traversers.Traverser; - -import java.util.function.Predicate; +import java.util.Set; /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ -public interface FilterFunction<C, A> extends Predicate<Traverser<C, A>> { +public interface CFunction<C> { + + public C coefficient(); + + public Set<String> labels(); + } diff --git a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/FilterFunction.java b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/FilterFunction.java index 2835783..64622d9 100644 --- a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/FilterFunction.java +++ b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/FilterFunction.java @@ -25,5 +25,5 @@ import java.util.function.Predicate; /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ -public interface FilterFunction<C, A> extends Predicate<Traverser<C, A>> { +public interface FilterFunction<C, A> extends Predicate<Traverser<C, A>>, CFunction<C> { } diff --git a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/FlatMapFunction.java b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/FlatMapFunction.java index 6d4db90..8f5933b 100644 --- a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/FlatMapFunction.java +++ b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/FlatMapFunction.java @@ -26,5 +26,5 @@ import java.util.function.Function; /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ -public interface FlatMapFunction<C, A, B> extends Function<Traverser<C, A>, Iterator<Traverser<C, B>>> { +public interface FlatMapFunction<C, A, B> extends Function<Traverser<C, A>, Iterator<Traverser<C, B>>>, CFunction<C> { } diff --git a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/IncrMap.java b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/IncrMap.java index 2e5fa06..7200bef 100644 --- a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/IncrMap.java +++ b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/IncrMap.java @@ -20,17 +20,19 @@ package org.apache.tinkerpop.machine.functions; import org.apache.tinkerpop.machine.traversers.Traverser; +import java.util.Set; + /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ -public class IncrMap<C> extends GFunction<C> implements MapFunction<C, Long, Long> { +public class IncrMap<C> extends AbstractFunction<C> implements MapFunction<C, Long, Long> { - public IncrMap(final C coefficient) { - super(coefficient); + public IncrMap(final C coefficient, final Set<String> labels) { + super(coefficient, labels); } @Override public Traverser<C, Long> apply(final Traverser<C, Long> traverser) { - return traverser.split(traverser.coefficient(), traverser.object() + 1); + return postProcess(traverser.split(traverser.coefficient(), traverser.object() + 1)); } } diff --git a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/InitialFunction.java b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/InitialFunction.java index c30c46d..f4430ce 100644 --- a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/InitialFunction.java +++ b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/InitialFunction.java @@ -26,5 +26,5 @@ import java.util.function.Supplier; /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ -public interface InitialFunction<C,A> extends Supplier<Iterator<Traverser<C,A>>> { +public interface InitialFunction<C,A> extends Supplier<Iterator<Traverser<C,A>>>, CFunction<C> { } diff --git a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/InjectInitial.java b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/InjectInitial.java index 4a5a8bd..9da6d2b 100644 --- a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/InjectInitial.java +++ b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/InjectInitial.java @@ -23,16 +23,17 @@ import org.apache.tinkerpop.machine.traversers.Traverser; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Set; /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ -public class InjectInitial<C, A> extends GFunction<C> implements InitialFunction<C, A> { +public class InjectInitial<C, A> extends AbstractFunction<C> implements InitialFunction<C, A> { private final List<Traverser<C, A>> traversers; - public InjectInitial(final C coefficient, final A... objects) { - super(coefficient); + public InjectInitial(final C coefficient, final Set<String> labels, final A... objects) { + super(coefficient, labels); this.traversers = new ArrayList<>(); for (final A object : objects) { this.traversers.add(new Traverser<>(this.coefficient, object)); diff --git a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/IsFilter.java b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/IsFilter.java index 892ed0c..8c5d35a 100644 --- a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/IsFilter.java +++ b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/IsFilter.java @@ -20,15 +20,17 @@ package org.apache.tinkerpop.machine.functions; import org.apache.tinkerpop.machine.traversers.Traverser; +import java.util.Set; + /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ -public class IsFilter<C, A> extends GFunction<C> implements FilterFunction<C, A> { +public class IsFilter<C, A> extends AbstractFunction<C> implements FilterFunction<C, A> { private final A object; - public IsFilter(final C coefficient, final A object) { - super(coefficient); + public IsFilter(final C coefficient, final Set<String> labels, final A object) { + super(coefficient, labels); this.object = object; } diff --git a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/MapFunction.java b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/MapFunction.java index e443772..55fb230 100644 --- a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/MapFunction.java +++ b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/MapFunction.java @@ -25,6 +25,6 @@ import java.util.function.Function; /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ -public interface MapFunction<C, A, B> extends Function<Traverser<C, A>, Traverser<C, B>> { +public interface MapFunction<C, A, B> extends Function<Traverser<C, A>, Traverser<C, B>>, CFunction<C> { } diff --git a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/IncrMap.java b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/PathMap.java similarity index 71% copy from java/core/src/main/java/org/apache/tinkerpop/machine/functions/IncrMap.java copy to java/core/src/main/java/org/apache/tinkerpop/machine/functions/PathMap.java index 2e5fa06..c76a838 100644 --- a/java/core/src/main/java/org/apache/tinkerpop/machine/functions/IncrMap.java +++ b/java/core/src/main/java/org/apache/tinkerpop/machine/functions/PathMap.java @@ -18,19 +18,22 @@ */ package org.apache.tinkerpop.machine.functions; +import org.apache.tinkerpop.machine.traversers.Path; import org.apache.tinkerpop.machine.traversers.Traverser; +import java.util.Set; + /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ -public class IncrMap<C> extends GFunction<C> implements MapFunction<C, Long, Long> { +public class PathMap<C, A> extends AbstractFunction<C> implements MapFunction<C, A, Path> { - public IncrMap(final C coefficient) { - super(coefficient); + public PathMap(final C coefficient, final Set<String> labels) { + super(coefficient, labels); } @Override - public Traverser<C, Long> apply(final Traverser<C, Long> traverser) { - return traverser.split(traverser.coefficient(), traverser.object() + 1); + public Traverser<C, Path> apply(final Traverser<C, A> traverser) { + return traverser.split(this.coefficient, traverser.path()); } } diff --git a/java/core/src/main/java/org/apache/tinkerpop/machine/bytecode/Bytecode.java b/java/core/src/main/java/org/apache/tinkerpop/machine/traversers/Path.java similarity index 59% copy from java/core/src/main/java/org/apache/tinkerpop/machine/bytecode/Bytecode.java copy to java/core/src/main/java/org/apache/tinkerpop/machine/traversers/Path.java index f58f719..d318971 100644 --- a/java/core/src/main/java/org/apache/tinkerpop/machine/bytecode/Bytecode.java +++ b/java/core/src/main/java/org/apache/tinkerpop/machine/traversers/Path.java @@ -16,32 +16,39 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.tinkerpop.machine.bytecode; +package org.apache.tinkerpop.machine.traversers; import java.util.ArrayList; import java.util.List; +import java.util.Set; /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ -public class Bytecode<C> { +public class Path { - public List<Instruction<C>> instructions; + private final List<Object> objects = new ArrayList<>(); + private final List<Set<String>> labels = new ArrayList<>(); - public Bytecode() { - this.instructions = new ArrayList<>(); + public Path() { } - public void addInstruction(final C coefficient, final String op, final Object... args) { - this.instructions.add(new Instruction<>(coefficient, op, args)); + public Path(final Path path) { + path.objects.forEach(o -> objects.add(o)); + path.labels.forEach(l -> labels.add(l)); } - public List<Instruction<C>> getInstructions() { - return this.instructions; + public void add(final Set<String> labels, final Object object) { + this.labels.add(labels); + this.objects.add(object); + } + + public void addLabels(final Set<String> labels) { + this.labels.get(this.labels.size() - 1).addAll(labels); } @Override public String toString() { - return this.instructions.toString(); + return this.objects.toString(); } } diff --git a/java/core/src/main/java/org/apache/tinkerpop/machine/traversers/Traverser.java b/java/core/src/main/java/org/apache/tinkerpop/machine/traversers/Traverser.java index 2c8a1ae..6bd2ea1 100644 --- a/java/core/src/main/java/org/apache/tinkerpop/machine/traversers/Traverser.java +++ b/java/core/src/main/java/org/apache/tinkerpop/machine/traversers/Traverser.java @@ -18,6 +18,9 @@ */ package org.apache.tinkerpop.machine.traversers; +import java.util.Collections; +import java.util.HashSet; + /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ @@ -25,6 +28,7 @@ public class Traverser<C, A> { private final C coefficient; private final A object; + private Path path = new Path(); public Traverser(final C coefficient, final A object) { this.coefficient = coefficient; @@ -39,12 +43,28 @@ public class Traverser<C, A> { return this.object; } + public Path path() { + return this.path; + } + + public void addLabel(final String label) { + this.path.addLabels(Collections.singleton(label)); + } + public <B> Traverser<C, B> split(final C coefficient, final B object) { - return new Traverser<>(coefficient, object); + final Traverser<C, B> traverser = new Traverser<>(coefficient, object); + traverser.path = new Path(this.path); + traverser.path.add(new HashSet<>(), object); + return traverser; } @Override public boolean equals(final Object other) { return other instanceof Traverser && ((Traverser<C, A>) other).object.equals(this.object); } + + @Override + public String toString() { + return this.object.toString(); + } } diff --git a/java/core/src/test/java/org/apache/tinkerpop/machine/TraversalTest.java b/java/core/src/test/java/org/apache/tinkerpop/machine/TraversalTest.java index 41f5504..592c1e7 100644 --- a/java/core/src/test/java/org/apache/tinkerpop/machine/TraversalTest.java +++ b/java/core/src/test/java/org/apache/tinkerpop/machine/TraversalTest.java @@ -34,7 +34,7 @@ public class TraversalTest { public void shouldHaveBytecode() throws Exception { TraversalSource<Long> g = Gremlin.traversal(); g = g.coefficients(LongCoefficients.instance()); - final Traversal<Long, Long, Long> traversal = g.inject(7L).is(7L).incr().incr(); + final Traversal<Long, Long, Long> traversal = g.inject(7L).is(7L).incr().as("a").incr(); System.out.println(traversal.getBytecode()); System.out.println(BytecodeToFunction.compile(traversal.getBytecode())); } diff --git a/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/Pipes.java b/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/Pipes.java index c370260..6ecfbf4 100644 --- a/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/Pipes.java +++ b/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/Pipes.java @@ -20,7 +20,7 @@ package org.apache.tinkerpop.machine.pipes; import org.apache.tinkerpop.machine.bytecode.Bytecode; import org.apache.tinkerpop.machine.compiler.BytecodeToFunction; -import org.apache.tinkerpop.machine.functions.GFunction; +import org.apache.tinkerpop.machine.functions.CFunction; import java.util.ArrayList; import java.util.Iterator; @@ -34,10 +34,10 @@ public class Pipes<C, S, E> implements Iterator<E> { private final List<Step<?, ?, ?>> steps = new ArrayList<>(); public Pipes(final Bytecode<C> bytecode) throws Exception { - final List<GFunction<C>> functions = BytecodeToFunction.compile(bytecode); + final List<CFunction<C>> functions = BytecodeToFunction.compile(bytecode); Step previousStep = null; - for (final GFunction<?> function : functions) { - previousStep = new Step(previousStep, function); + for (final CFunction<?> function : functions) { + previousStep = new Step<>(previousStep, function); this.steps.add(previousStep); } } diff --git a/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/Step.java b/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/Step.java index f2085a7..b82ca3c 100644 --- a/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/Step.java +++ b/java/machine/pipes/src/main/java/org/apache/tinkerpop/machine/pipes/Step.java @@ -18,11 +18,11 @@ */ package org.apache.tinkerpop.machine.pipes; -import org.apache.tinkerpop.machine.traversers.Traverser; +import org.apache.tinkerpop.machine.functions.CFunction; import org.apache.tinkerpop.machine.functions.FilterFunction; -import org.apache.tinkerpop.machine.functions.GFunction; import org.apache.tinkerpop.machine.functions.InitialFunction; import org.apache.tinkerpop.machine.functions.MapFunction; +import org.apache.tinkerpop.machine.traversers.Traverser; import org.apache.tinkerpop.machine.util.FastNoSuchElementException; import java.util.Iterator; @@ -32,11 +32,11 @@ import java.util.Iterator; */ public class Step<C, S, E> implements Iterator<Traverser<?, E>> { - private final GFunction<C> function; + private final CFunction<C> function; private final Step previousStep; private Iterator<Traverser<C, E>> currentIterator = null; - public Step(final Step previousStep, final GFunction<C> function) { + public Step(final Step previousStep, final CFunction<C> function) { this.previousStep = previousStep; this.function = function; if (this.function instanceof InitialFunction) { diff --git a/java/machine/pipes/src/test/java/org/apache/tinkerpop/machine/pipes/PipesTest.java b/java/machine/pipes/src/test/java/org/apache/tinkerpop/machine/pipes/PipesTest.java index 1b7e020..ceb3fb8 100644 --- a/java/machine/pipes/src/test/java/org/apache/tinkerpop/machine/pipes/PipesTest.java +++ b/java/machine/pipes/src/test/java/org/apache/tinkerpop/machine/pipes/PipesTest.java @@ -37,5 +37,6 @@ public class PipesTest { System.out.println(pipes.hasNext()); System.out.println(pipes.toList()); System.out.println(pipes.hasNext()); + System.out.println(new Pipes<>(g.inject(7L, 10L, 12L).incr().as("a").incr().incr().path().getBytecode()).toList()); } }