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
The following commit(s) were added to refs/heads/tp4 by this push: new 201d03d incr is gone. random other tweaks. taking a break. 201d03d is described below commit 201d03d8ef1e398c49079bd0e432f876f3ae4107 Author: Marko A. Rodriguez <okramma...@gmail.com> AuthorDate: Sat Mar 23 10:38:32 2019 -0600 incr is gone. random other tweaks. taking a break. --- .../tinkerpop/language/gremlin/Traversal.java | 7 +++- .../tinkerpop/machine/bytecode/CoreCompiler.java | 9 ++--- .../tinkerpop/machine/bytecode/MethodArgument.java | 8 ++++- .../machine/function/filter/FilterFilter.java | 4 ++- .../tinkerpop/machine/function/map/IncrMap.java | 42 ---------------------- .../machine/processor/pipes/PipesTest.java | 9 +++-- 6 files changed, 26 insertions(+), 53 deletions(-) diff --git a/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java b/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java index c7214bd..8bc4e92 100644 --- a/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java +++ b/java/language/gremlin/src/main/java/org/apache/tinkerpop/language/gremlin/Traversal.java @@ -211,7 +211,7 @@ public class Traversal<C, S, E> implements Iterator<E> { } public Traversal<C, S, Long> incr() { - this.bytecode.addInstruction(this.currentCoefficient, Symbols.INCR); + this.bytecode.addInstruction(this.currentCoefficient, Symbols.MAP, "number::add", 1L); return (Traversal) this; } @@ -280,6 +280,11 @@ public class Traversal<C, S, E> implements Iterator<E> { return this; } + public <K, V> Traversal<C, S, V> value(final K key) { + this.bytecode.addInstruction(this.currentCoefficient, Symbols.MAP, "dictionary::get", key); + return (Traversal) this; + } + /////// private final void prepareTraversal() { diff --git a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/bytecode/CoreCompiler.java b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/bytecode/CoreCompiler.java index 359e6e7..32590a0 100644 --- a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/bytecode/CoreCompiler.java +++ b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/bytecode/CoreCompiler.java @@ -27,7 +27,6 @@ import org.apache.tinkerpop.machine.function.branch.RepeatBranch; import org.apache.tinkerpop.machine.function.filter.FilterFilter; import org.apache.tinkerpop.machine.function.flatmap.FlatmapFlatmap; import org.apache.tinkerpop.machine.function.initial.InjectInitial; -import org.apache.tinkerpop.machine.function.map.IncrMap; import org.apache.tinkerpop.machine.function.map.MapMap; import org.apache.tinkerpop.machine.function.map.PathMap; import org.apache.tinkerpop.machine.function.reduce.GroupCountReduce; @@ -59,7 +58,6 @@ public final class CoreCompiler implements BytecodeCompiler { put(Symbols.FILTER, FunctionType.FILTER); put(Symbols.FLATMAP, FunctionType.FLATMAP); put(Symbols.GROUP_COUNT, FunctionType.REDUCE); - put(Symbols.INCR, FunctionType.MAP); put(Symbols.INITIAL, FunctionType.INITIAL); put(Symbols.JOIN, FunctionType.BARRIER); put(Symbols.MAP, FunctionType.MAP); @@ -80,15 +78,15 @@ public final class CoreCompiler implements BytecodeCompiler { case Symbols.BRANCH: return new BranchBranch<>(coefficient, labels, BranchBranch.makeBranches(instruction.args())); case Symbols.FILTER: - return new FilterFilter<>(coefficient, labels, Pred.valueOf(instruction.args()[0]), Argument.create(Arrays.copyOfRange(instruction.args(), 1, instruction.args().length))); + return instruction.args().length == 1 ? + new FilterFilter<>(coefficient, labels, null, Argument.create(instruction.args())) : + new FilterFilter<>(coefficient, labels, Pred.valueOf(instruction.args()[0]), Argument.create(Arrays.copyOfRange(instruction.args(), 1, instruction.args().length))); case Symbols.FLATMAP: return new FlatmapFlatmap<>(coefficient, labels, Argument.create(instruction.args())); case Symbols.GROUP_COUNT: return new GroupCountReduce<>(coefficient, labels, Compilation.compileOrNull(0, instruction.args())); case Symbols.INITIAL: return new InjectInitial<>(coefficient, labels, instruction.args()); - case Symbols.INCR: - return new IncrMap<>(coefficient, labels); case Symbols.JOIN: return new JoinBarrier<>(coefficient, labels, (Symbols.Tokens) instruction.args()[0], Compilation.compileOne(instruction.args()[1]), Argument.create(instruction.args()[2])); case Symbols.MAP: @@ -148,7 +146,6 @@ public final class CoreCompiler implements BytecodeCompiler { // [groupCount, ?[bc]] public static final String GROUP_COUNT = "groupCount"; // [incr] - public static final String INCR = "incr"; public static final String INITIAL = "initial"; public static final String JOIN = "join"; // [map, [bc]] diff --git a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/bytecode/MethodArgument.java b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/bytecode/MethodArgument.java index 313a42a..fc76797 100644 --- a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/bytecode/MethodArgument.java +++ b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/bytecode/MethodArgument.java @@ -18,7 +18,9 @@ */ package org.apache.tinkerpop.machine.bytecode; +import org.apache.tinkerpop.machine.structure.data.TElement; import org.apache.tinkerpop.machine.traverser.Traverser; +import org.apache.tinkerpop.machine.util.NumberHelper; import java.util.Arrays; import java.util.Map; @@ -48,7 +50,11 @@ public class MethodArgument<E> implements Argument<E> { else if (this.method.equals("keys")) return (E) ((Map) traverser.object()).keySet(); else if (this.method.equals("get")) - return (E) ((Map) traverser.object()).get(this.arguments[0].mapArg(traverser)); + return (E) (traverser.object() instanceof Map ? + ((Map) traverser.object()).get(this.arguments[0].mapArg(traverser)) : + ((TElement) traverser.object()).get(this.arguments[0].mapArg(traverser))); + else if (this.method.equals("add")) + return (E) NumberHelper.add((Number) traverser.object(), (Number) this.arguments[0].mapArg(traverser)); else throw new RuntimeException("Unknown method"); } diff --git a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/function/filter/FilterFilter.java b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/function/filter/FilterFilter.java index df39450..d93a420 100644 --- a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/function/filter/FilterFilter.java +++ b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/function/filter/FilterFilter.java @@ -45,7 +45,9 @@ public final class FilterFilter<C, S> extends AbstractFunction<C> implements Fil @Override public boolean test(final Traverser<C, S> traverser) { - return this.pred.test(traverser.object(), this.argument.mapArg(traverser)); + return null == this.pred ? + this.argument.filterArg(traverser) : + this.pred.test(traverser.object(), this.argument.mapArg(traverser)); } @Override diff --git a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/function/map/IncrMap.java b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/function/map/IncrMap.java deleted file mode 100644 index d2ff394..0000000 --- a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/function/map/IncrMap.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.tinkerpop.machine.function.map; - -import org.apache.tinkerpop.machine.coefficient.Coefficient; -import org.apache.tinkerpop.machine.function.AbstractFunction; -import org.apache.tinkerpop.machine.function.MapFunction; -import org.apache.tinkerpop.machine.traverser.Traverser; - -import java.util.Set; - -/** - * @author Marko A. Rodriguez (http://markorodriguez.com) - */ -public class IncrMap<C> extends AbstractFunction<C> implements MapFunction<C, Long, Long> { - - public IncrMap(final Coefficient<C> coefficient, final Set<String> labels) { - super(coefficient, labels); - } - - @Override - public Long apply(final Traverser<C, Long> traverser) { - return traverser.object() + 1L; - } - -} diff --git a/java/machine/processor/pipes/src/test/java/org/apache/tinkerpop/machine/processor/pipes/PipesTest.java b/java/machine/processor/pipes/src/test/java/org/apache/tinkerpop/machine/processor/pipes/PipesTest.java index 9d8ee6c..820a70b 100644 --- a/java/machine/processor/pipes/src/test/java/org/apache/tinkerpop/machine/processor/pipes/PipesTest.java +++ b/java/machine/processor/pipes/src/test/java/org/apache/tinkerpop/machine/processor/pipes/PipesTest.java @@ -99,7 +99,7 @@ public class PipesTest { System.out.println(traversal); System.out.println(traversal.toList()); System.out.println("\n----------\n"); - traversal = g.inject(7L).choose(__.is(7L), __.incr()); + traversal = g.inject(7L).choose(__.is(7L), __.incr()).sum(); System.out.println(TraversalUtil.getBytecode(traversal)); System.out.println(traversal); System.out.println(traversal.toList()); @@ -143,7 +143,12 @@ public class PipesTest { System.out.println(traversal); System.out.println(traversal.toList()); System.out.println("\n----------\n"); - traversal = g.inject(listA).unfold().has(__.<Map,String>constant("name"), "marko"); + traversal = g.inject(listA).unfold().has(__.<Map,String>constant("name"), "marko").value("age"); + System.out.println(TraversalUtil.getBytecode(traversal)); + System.out.println(traversal); + System.out.println(traversal.toList()); + System.out.println("\n----------\n"); + traversal = g.inject(Map.of("name", "marko", "age", 29), Map.of("name", "josh", "age", 32)).hasKey(P.regex(__.constant("[a].*[e]"))).has("name", "marko").value("age"); System.out.println(TraversalUtil.getBytecode(traversal)); System.out.println(traversal); System.out.println(traversal.toList());