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";

Reply via email to