Repository: tinkerpop Updated Branches: refs/heads/master 1fd242237 -> 795fb23d9
JavaTranslator is now smart about handling BulkSet and Tree in Bytecode. This is a low probability usage, but a usage none-the-less... Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/506b921c Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/506b921c Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/506b921c Branch: refs/heads/master Commit: 506b921c947a9ec8536bd0e739b2df3d2b5440ae Parents: 9436585 Author: Marko A. Rodriguez <okramma...@gmail.com> Authored: Wed Jun 28 08:39:37 2017 -0600 Committer: Marko A. Rodriguez <okramma...@gmail.com> Committed: Wed Jun 28 08:39:37 2017 -0600 ---------------------------------------------------------------------- CHANGELOG.asciidoc | 1 + .../tinkerpop/gremlin/jsr223/JavaTranslator.java | 19 +++++++++++++++++-- .../gremlin/groovy/jsr223/GroovyTranslator.java | 2 +- 3 files changed, 19 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/506b921c/CHANGELOG.asciidoc ---------------------------------------------------------------------- diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 9da8d47..be203fe 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -28,6 +28,7 @@ TinkerPop 3.2.6 (Release Date: NOT OFFICIALLY RELEASED YET) This release also includes changes from <<release-3-1-8, 3.1.8>>. +* `JavaTranslator` is now smart about handling `BulkSet` and `Tree`. * Added annotations to the traversal metrics pretty print. * `EdgeVertexStep` is no longer final and can be extended by providers. * Fixed `HADOOP_GREMLIN_LIBS` parsing for Windows. http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/506b921c/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/JavaTranslator.java ---------------------------------------------------------------------- diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/JavaTranslator.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/JavaTranslator.java index 29c6c46..b21c481 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/JavaTranslator.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/JavaTranslator.java @@ -25,6 +25,8 @@ import org.apache.tinkerpop.gremlin.process.traversal.Bytecode; import org.apache.tinkerpop.gremlin.process.traversal.Translator; import org.apache.tinkerpop.gremlin.process.traversal.Traversal; import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource; +import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet; +import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree; import org.apache.tinkerpop.gremlin.process.traversal.strategy.TraversalStrategyProxy; import org.apache.tinkerpop.gremlin.structure.util.StringFactory; @@ -37,6 +39,7 @@ import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -127,7 +130,11 @@ public final class JavaTranslator<S extends TraversalSource, T extends Traversal throw new IllegalStateException(e.getMessage(), e); } } else if (object instanceof Map) { - final Map<Object, Object> map = new LinkedHashMap<>(((Map) object).size()); + final Map<Object, Object> map = object instanceof Tree ? + new Tree() : + object instanceof LinkedHashMap ? + new LinkedHashMap<>(((Map) object).size()) : + new HashMap<>(((Map) object).size()); for (final Map.Entry<?, ?> entry : ((Map<?, ?>) object).entrySet()) { map.put(translateObject(entry.getKey()), translateObject(entry.getValue())); } @@ -138,8 +145,16 @@ public final class JavaTranslator<S extends TraversalSource, T extends Traversal list.add(translateObject(o)); } return list; + } else if (object instanceof BulkSet) { + final BulkSet<Object> bulkSet = new BulkSet<>(); + for (final Map.Entry<?, Long> entry : ((BulkSet<?>) object).asBulk().entrySet()) { + bulkSet.add(translateObject(entry.getKey()), entry.getValue()); + } + return bulkSet; } else if (object instanceof Set) { - final Set<Object> set = new HashSet<>(((Set) object).size()); + final Set<Object> set = object instanceof LinkedHashSet ? + new LinkedHashSet<>(((Set) object).size()) : + new HashSet<>(((Set) object).size()); for (final Object o : (Set) object) { set.add(translateObject(o)); } http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/506b921c/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslator.java ---------------------------------------------------------------------- diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslator.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslator.java index c3017db..85490ae 100644 --- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslator.java +++ b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GroovyTranslator.java @@ -135,7 +135,7 @@ public final class GroovyTranslator implements Translator.ScriptTranslator { append(convertToString(entry.getValue())). append("),"); } - map.deleteCharAt(map.length()-1); + map.deleteCharAt(map.length() - 1); return map.append("]").toString(); } else if (object instanceof Long) return object + "L";