You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2017/01/12 15:21:18 UTC

[01/50] [abbrv] tinkerpop git commit: forgot to add TinkerWorkerMemory file. [Forced Update!]

Repository: tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-1565 d1f7c11c6 -> b28a2b09f (forced update)


forgot to add TinkerWorkerMemory file.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/056d7aed
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/056d7aed
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/056d7aed

Branch: refs/heads/TINKERPOP-1565
Commit: 056d7aedffa83f8d06462617670273857e2bea19
Parents: 0db0991
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Jan 3 18:00:18 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Jan 5 16:59:45 2017 -0700

----------------------------------------------------------------------
 .../process/computer/TinkerWorkerMemory.java    | 116 +++++++++++++++++++
 1 file changed, 116 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/056d7aed/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerWorkerMemory.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerWorkerMemory.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerWorkerMemory.java
new file mode 100644
index 0000000..28b99e3
--- /dev/null
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerWorkerMemory.java
@@ -0,0 +1,116 @@
+/*
+ *  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.gremlin.tinkergraph.process.computer;
+
+import org.apache.tinkerpop.gremlin.process.computer.Memory;
+import org.apache.tinkerpop.gremlin.process.computer.MemoryComputeKey;
+import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
+import org.apache.tinkerpop.gremlin.util.Serializer;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.function.BinaryOperator;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class TinkerWorkerMemory implements Memory.Admin {
+
+    private final TinkerMemory mainMemory;
+    private final Map<String, Object> workerMemory = new HashMap<>();
+    private final Map<String, BinaryOperator<Object>> reducers = new HashMap<>();
+
+    public TinkerWorkerMemory(final TinkerMemory mainMemory) {
+        this.mainMemory = mainMemory;
+        for (final MemoryComputeKey key : this.mainMemory.memoryKeys.values()) {
+            try {
+                final MemoryComputeKey clone = (MemoryComputeKey) Serializer.deserializeObject(Serializer.serializeObject(key));
+                this.reducers.put(clone.getKey(), clone.getReducer());
+            } catch (final IOException | ClassNotFoundException e) {
+                this.reducers.put(key.getKey(), key.getReducer()); // super ghetto
+            }
+        }
+    }
+
+    @Override
+    public Set<String> keys() {
+        return this.mainMemory.keys();
+    }
+
+    @Override
+    public void incrIteration() {
+        this.mainMemory.incrIteration();
+    }
+
+    @Override
+    public void setIteration(final int iteration) {
+        this.mainMemory.setIteration(iteration);
+    }
+
+    @Override
+    public int getIteration() {
+        return this.mainMemory.getIteration();
+    }
+
+    @Override
+    public void setRuntime(final long runTime) {
+        this.mainMemory.setRuntime(runTime);
+    }
+
+    @Override
+    public long getRuntime() {
+        return this.mainMemory.getRuntime();
+    }
+
+    @Override
+    public boolean isInitialIteration() {
+        return this.mainMemory.isInitialIteration();
+    }
+
+    @Override
+    public <R> R get(final String key) throws IllegalArgumentException {
+        return this.mainMemory.get(key);
+    }
+
+    @Override
+    public void set(final String key, final Object value) {
+        this.mainMemory.set(key, value);
+    }
+
+    @Override
+    public void add(final String key, final Object value) {
+        this.mainMemory.checkKeyValue(key, value);
+        final Object v = this.workerMemory.get(key);
+        this.workerMemory.put(key, null == v ? value : this.reducers.get(key).apply(v, value));
+    }
+
+    @Override
+    public String toString() {
+        return this.mainMemory.toString();
+    }
+
+    protected void complete() {
+        for (final Map.Entry<String, Object> entry : this.workerMemory.entrySet()) {
+            this.mainMemory.add(entry.getKey(), entry.getValue());
+        }
+    }
+}


[29/50] [abbrv] tinkerpop git commit: no local children end steps need NoOpBarriers.

Posted by sp...@apache.org.
no local children end steps need NoOpBarriers.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/bdd1924a
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/bdd1924a
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/bdd1924a

Branch: refs/heads/TINKERPOP-1565
Commit: bdd1924a4cdf32d9b0cc841cf24a73864ff64f04
Parents: 2760645
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Mon Jan 9 09:41:42 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Mon Jan 9 09:41:42 2017 -0700

----------------------------------------------------------------------
 .../traversal/strategy/optimization/PathRetractionStrategy.java    | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/bdd1924a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathRetractionStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathRetractionStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathRetractionStrategy.java
index 1d09748..b5992a5 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathRetractionStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathRetractionStrategy.java
@@ -110,7 +110,7 @@ public final class PathRetractionStrategy extends AbstractTraversalStrategy<Trav
                         !(currentStep instanceof Barrier) &&
                         !(currentStep.getNextStep() instanceof Barrier) &&
                         !(currentStep.getTraversal().getParent() instanceof MatchStep) &&
-                        TraversalHelper.isGlobalChild(currentStep.getTraversal()))
+                        (currentStep.getNextStep() instanceof EmptyStep && TraversalHelper.isGlobalChild(currentStep.getTraversal())))
                     TraversalHelper.insertAfterStep(new NoOpBarrierStep<>(traversal, this.standardBarrierSize), currentStep, traversal);
             }
         }


[30/50] [abbrv] tinkerpop git commit: dah. sorry. last minute change without mvn clean insatll -- AND should be OR

Posted by sp...@apache.org.
dah. sorry. last minute change without mvn clean insatll -- AND should be OR


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/9ca1c585
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/9ca1c585
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/9ca1c585

Branch: refs/heads/TINKERPOP-1565
Commit: 9ca1c5857a194801ed9538dea8d8fef0bc918da0
Parents: bdd1924
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Mon Jan 9 09:52:35 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Mon Jan 9 09:52:35 2017 -0700

----------------------------------------------------------------------
 .../traversal/strategy/optimization/PathRetractionStrategy.java    | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9ca1c585/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathRetractionStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathRetractionStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathRetractionStrategy.java
index b5992a5..fcc22a4 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathRetractionStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathRetractionStrategy.java
@@ -110,7 +110,7 @@ public final class PathRetractionStrategy extends AbstractTraversalStrategy<Trav
                         !(currentStep instanceof Barrier) &&
                         !(currentStep.getNextStep() instanceof Barrier) &&
                         !(currentStep.getTraversal().getParent() instanceof MatchStep) &&
-                        (currentStep.getNextStep() instanceof EmptyStep && TraversalHelper.isGlobalChild(currentStep.getTraversal())))
+                        (!(currentStep.getNextStep() instanceof EmptyStep) || TraversalHelper.isGlobalChild(currentStep.getTraversal())))
                     TraversalHelper.insertAfterStep(new NoOpBarrierStep<>(traversal, this.standardBarrierSize), currentStep, traversal);
             }
         }


[05/50] [abbrv] tinkerpop git commit: discovering various synchronization bottlenecks in TinkerGraphComputer. Also, realized some dumb things I was doing in TraversalVertexProgram. Its crazy, for this benchmark that @dkuppitz and i have, if I don't touch

Posted by sp...@apache.org.
discovering various synchronization bottlenecks in TinkerGraphComputer. Also, realized some dumb things I was doing in TraversalVertexProgram. Its crazy, for this benchmark that @dkuppitz and i have, if I don't touch vertex.properties that are compute keys: millisecond return times. If I do, seconds return times.... Need to figure out how to partition TinkerGraphView... Perhaps thread local..dah.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/8d961285
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/8d961285
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/8d961285

Branch: refs/heads/TINKERPOP-1565
Commit: 8d961285f687107ffc5c1d8a3bca7c78ea833adf
Parents: cef1979
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Wed Jan 4 10:32:21 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Jan 5 17:00:05 2017 -0700

----------------------------------------------------------------------
 .../traversal/TraversalVertexProgram.java       | 16 +++++++---
 .../computer/traversal/WorkerExecutor.java      |  2 +-
 .../computer/TinkerGraphComputerView.java       | 32 +++++++++-----------
 .../groovy/TinkerGraphGroovyPlayTest.groovy     |  2 +-
 4 files changed, 27 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8d961285/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
index 1a54721..b82e265 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
@@ -32,7 +32,6 @@ import org.apache.tinkerpop.gremlin.process.computer.VertexComputeKey;
 import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.ComputerResultStep;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.TraversalVertexProgramStep;
-import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.HaltedTraverserStrategy;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy;
 import org.apache.tinkerpop.gremlin.process.computer.util.AbstractVertexProgramBuilder;
 import org.apache.tinkerpop.gremlin.process.computer.util.SingleMessenger;
@@ -51,6 +50,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.ProfileSideEffectStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.EmptyStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.ProfileStep;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.HaltedTraverserStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ComputerVerificationStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet;
 import org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal;
@@ -251,8 +251,14 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
                 ((Barrier) this.traversalMatrix.getStepById(stepId)).done();
         }
         // define halted traversers
-        final TraverserSet<Object> haltedTraversers = vertex.<TraverserSet<Object>>property(HALTED_TRAVERSERS).orElse(new TraverserSet<>());
-        vertex.property(VertexProperty.Cardinality.single, HALTED_TRAVERSERS, haltedTraversers);
+        final VertexProperty<TraverserSet<Object>> property = vertex.property(HALTED_TRAVERSERS);
+        final TraverserSet<Object> haltedTraversers;
+        if (property.isPresent()) {
+            haltedTraversers = property.value();
+        } else {
+            haltedTraversers = new TraverserSet<>();
+            vertex.property(VertexProperty.Cardinality.single, HALTED_TRAVERSERS, haltedTraversers);
+        }
         //////////////////
         if (memory.isInitialIteration()) {    // ITERATION 1
             final TraverserSet<Object> activeTraversers = new TraverserSet<>();
@@ -282,9 +288,9 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
                         activeTraversers.add((Traverser.Admin) traverser);
                 });
             }
-            memory.add(VOTE_TO_HALT, activeTraversers.isEmpty() || WorkerExecutor.execute(vertex, new SingleMessenger<>(messenger, activeTraversers), this.traversalMatrix, memory, this.returnHaltedTraversers, this.haltedTraverserStrategy));
+            memory.add(VOTE_TO_HALT, activeTraversers.isEmpty() || WorkerExecutor.execute(vertex, new SingleMessenger<>(messenger, activeTraversers), this.traversalMatrix, memory, this.returnHaltedTraversers, haltedTraversers, this.haltedTraverserStrategy));
         } else   // ITERATION 1+
-            memory.add(VOTE_TO_HALT, WorkerExecutor.execute(vertex, messenger, this.traversalMatrix, memory, this.returnHaltedTraversers, this.haltedTraverserStrategy));
+            memory.add(VOTE_TO_HALT, WorkerExecutor.execute(vertex, messenger, this.traversalMatrix, memory, this.returnHaltedTraversers, haltedTraversers, this.haltedTraverserStrategy));
         // save space by not having an empty halted traversers property
         if (this.returnHaltedTraversers || haltedTraversers.isEmpty())
             vertex.<TraverserSet>property(HALTED_TRAVERSERS).remove();

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8d961285/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/WorkerExecutor.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/WorkerExecutor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/WorkerExecutor.java
index 2571e7b..e6e73d0 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/WorkerExecutor.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/WorkerExecutor.java
@@ -59,10 +59,10 @@ final class WorkerExecutor {
                                      final TraversalMatrix<?, ?> traversalMatrix,
                                      final Memory memory,
                                      final boolean returnHaltedTraversers,
+                                     final TraverserSet<Object> haltedTraversers,
                                      final HaltedTraverserStrategy haltedTraverserStrategy) {
         final TraversalSideEffects traversalSideEffects = traversalMatrix.getTraversal().getSideEffects();
         final AtomicBoolean voteToHalt = new AtomicBoolean(true);
-        final TraverserSet<Object> haltedTraversers = vertex.value(TraversalVertexProgram.HALTED_TRAVERSERS);
         final TraverserSet<Object> activeTraversers = new TraverserSet<>();
         final TraverserSet<Object> toProcessTraversers = new TraverserSet<>();
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8d961285/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerGraphComputerView.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerGraphComputerView.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerGraphComputerView.java
index 43090fe..43998fb 100644
--- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerGraphComputerView.java
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerGraphComputerView.java
@@ -43,8 +43,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -104,11 +102,14 @@ public final class TinkerGraphComputerView {
     }
 
     public List<Property> getProperties(final TinkerVertex vertex) {
-        final Stream<Property> a = TinkerHelper.getProperties(vertex).values().stream().flatMap(list -> list.stream());
-        final Stream<Property> b = this.computeProperties.containsKey(vertex) ?
-                this.computeProperties.get(vertex).values().stream().flatMap(list -> list.stream()) :
-                Stream.empty();
-        return Stream.concat(a, b).collect(Collectors.toList());
+        final List<Property> list = new ArrayList<>();
+        for (final List<VertexProperty> properties : TinkerHelper.getProperties(vertex).values()) {
+            list.addAll(properties);
+        }
+        for (final List<VertexProperty<?>> properties : this.computeProperties.getOrDefault(vertex, Collections.emptyMap()).values()) {
+            list.addAll(properties);
+        }
+        return list;
     }
 
     public void removeProperty(final TinkerVertex vertex, final String key, final VertexProperty property) {
@@ -131,8 +132,9 @@ public final class TinkerGraphComputerView {
         // remove all transient properties from the vertices
         for (final VertexComputeKey computeKey : this.computeKeys.values()) {
             if (computeKey.isTransient()) {
-                final List<VertexProperty<?>> toRemove = this.computeProperties.values().stream().flatMap(map -> map.getOrDefault(computeKey.getKey(), Collections.emptyList()).stream()).collect(Collectors.toList());
-                toRemove.forEach(VertexProperty::remove);
+                for (final Map<String, List<VertexProperty<?>>> properties : this.computeProperties.values()) {
+                    properties.remove(computeKey.getKey());
+                }
             }
         }
     }
@@ -211,22 +213,16 @@ public final class TinkerGraphComputerView {
     }
 
     private void addValue(final Vertex vertex, final String key, final VertexProperty property) {
-        final Map<String, List<VertexProperty<?>>> elementProperties = this.computeProperties.computeIfAbsent(vertex, k -> new ConcurrentHashMap<>());
+        final Map<String, List<VertexProperty<?>>> elementProperties = this.computeProperties.computeIfAbsent(vertex, k -> new HashMap<>());
         elementProperties.compute(key, (k, v) -> {
-            if (null == v) v = Collections.synchronizedList(new ArrayList<>());
+            if (null == v) v = new ArrayList<>();
             v.add(property);
             return v;
         });
     }
 
     private void removeValue(final Vertex vertex, final String key, final VertexProperty property) {
-        this.computeProperties.computeIfPresent(vertex, (k, v) -> {
-            v.computeIfPresent(key, (k1, v1) -> {
-                v1.remove(property);
-                return v1;
-            });
-            return v;
-        });
+        this.computeProperties.<List<Map<String, VertexProperty<?>>>>getOrDefault(vertex, Collections.emptyMap()).get(key).remove(property);
     }
 
     private List<VertexProperty<?>> getValue(final Vertex vertex, final String key) {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8d961285/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/groovy/TinkerGraphGroovyPlayTest.groovy
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/groovy/TinkerGraphGroovyPlayTest.groovy b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/groovy/TinkerGraphGroovyPlayTest.groovy
index d277977..a736f3d 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/groovy/TinkerGraphGroovyPlayTest.groovy
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/groovy/TinkerGraphGroovyPlayTest.groovy
@@ -40,7 +40,7 @@ class TinkerGraphGroovyPlayTest {
         def a = graph.traversal().withComputer(Computer.compute())
         def r = new Random(123)
 
-        (1..1725403).each {
+        (1..1000000).each {
             def vid = ["a", "b", "c", "d"].collectEntries { [it, r.nextInt() % 400000] }
             graph.addVertex(T.id, vid)
         }; []


[37/50] [abbrv] tinkerpop git commit: Merge branch 'tp32'

Posted by sp...@apache.org.
Merge branch 'tp32'


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/12261b34
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/12261b34
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/12261b34

Branch: refs/heads/TINKERPOP-1565
Commit: 12261b345ec3044d1bb2f1695dc66c69a18ede2b
Parents: 5c2e67a 3c80611
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Jan 10 10:53:05 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Tue Jan 10 10:53:05 2017 -0700

----------------------------------------------------------------------
 .../tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java  | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------



[15/50] [abbrv] tinkerpop git commit: found a fixed a bug in RepeatUnrollStragegy. Global stateful steps like DedupGlobalStep can not be unrolled else you have split the global state amongst times(x) local steps. Added a test case to DedupGlobalStep g.V

Posted by sp...@apache.org.
found a fixed a bug in RepeatUnrollStragegy. Global stateful steps like DedupGlobalStep can not be unrolled else you have split the global state amongst times(x) local steps.  Added a test case to DedupGlobalStep g.V().repeat(dedup()).times(2).


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/3fd74fc2
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/3fd74fc2
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/3fd74fc2

Branch: refs/heads/TINKERPOP-1565
Commit: 3fd74fc23cb2f1e25d555be01abd4d979967f239
Parents: dc38b43
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri Jan 6 13:02:31 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri Jan 6 13:02:31 2017 -0700

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  1 +
 .../traversal/step/branch/RepeatStep.java       | 17 ++++++++++++++++-
 .../traversal/step/filter/DedupGlobalStep.java  |  3 +--
 .../optimization/RepeatUnrollStrategy.java      |  6 +++++-
 .../step/filter/GroovyDedupTest.groovy          |  5 +++++
 .../traversal/step/filter/DedupTest.java        | 20 +++++++++++++++++++-
 6 files changed, 47 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3fd74fc2/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index f8c9743..d7f4256 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -26,6 +26,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 TinkerPop 3.2.4 (Release Date: NOT OFFICIALLY RELEASED YET)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
+* Fixed a bug in `RepeatUnrollStrategy` where stateful `DedupGlobalStep` was cloned and thus, maintained two deduplication sets.
 * Added documentation around "terminal steps" in Gremlin: `hasNext()`, `next()`, `toList()`, etc.
 * Fixed minor bug in `gremlin-driver` where closing a session-based `Client` without initializing it could generate an error.
 * Relieved synchronization pressure in various areas of `TinkerGraphComputer`.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3fd74fc2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatStep.java
index ebdb657..0fc2cdd 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/RepeatStep.java
@@ -90,12 +90,16 @@ public final class RepeatStep<S> extends ComputerAwareStep<S, S> implements Trav
         return this.emitTraversal;
     }
 
+    public Traversal.Admin<S, S> getRepeatTraversal() {
+        return this.repeatTraversal;
+    }
+
     public List<Traversal.Admin<S, S>> getGlobalChildren() {
         return null == this.repeatTraversal ? Collections.emptyList() : Collections.singletonList(this.repeatTraversal);
     }
 
     public List<Traversal.Admin<S, ?>> getLocalChildren() {
-        final List<Traversal.Admin<S, ?>> list = new ArrayList<>();
+        final List<Traversal.Admin<S, ?>> list = new ArrayList<>(2);
         if (null != this.untilTraversal)
             list.add(this.untilTraversal);
         if (null != this.emitTraversal)
@@ -123,6 +127,17 @@ public final class RepeatStep<S> extends ComputerAwareStep<S, S> implements Trav
             return StringFactory.stepString(this, this.repeatTraversal, untilString(), emitString());
     }
 
+    @Override
+    public void reset() {
+        super.reset();
+        if (null != this.emitTraversal)
+            this.emitTraversal.reset();
+        if (null != this.untilTraversal)
+            this.untilTraversal.reset();
+        if (null != this.repeatTraversal)
+            this.repeatTraversal.reset();
+    }
+
     private final String untilString() {
         return null == this.untilTraversal ? "until(false)" : "until(" + this.untilTraversal + ')';
     }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3fd74fc2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
index d024456..96bd0be 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
@@ -77,7 +77,6 @@ public final class DedupGlobalStep<S> extends FilterStep<S> implements Traversal
             this.dedupLabels.forEach(label -> objects.add(TraversalUtil.applyNullable((S) this.getScopeValue(Pop.last, label, traverser), this.dedupTraversal)));
             return this.duplicateSet.add(objects);
         }
-
     }
 
     @Override
@@ -128,7 +127,7 @@ public final class DedupGlobalStep<S> extends FilterStep<S> implements Traversal
     @Override
     public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) {
         super.setTraversal(parentTraversal);
-        integrateChild(this.dedupTraversal);
+        this.integrateChild(this.dedupTraversal);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3fd74fc2/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RepeatUnrollStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RepeatUnrollStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RepeatUnrollStrategy.java
index 31eb0d2..0a7cd4e 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RepeatUnrollStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/RepeatUnrollStrategy.java
@@ -19,11 +19,13 @@
 
 package org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization;
 
+import org.apache.tinkerpop.gremlin.process.traversal.Scope;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.lambda.LoopTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Barrier;
 import org.apache.tinkerpop.gremlin.process.traversal.step.branch.RepeatStep;
+import org.apache.tinkerpop.gremlin.process.traversal.step.filter.DedupGlobalStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.NoOpBarrierStep;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
@@ -48,7 +50,9 @@ public final class RepeatUnrollStrategy extends AbstractTraversalStrategy<Traver
         for (int i = 0; i < traversal.getSteps().size(); i++) {
             if (traversal.getSteps().get(i) instanceof RepeatStep) {
                 final RepeatStep<?> repeatStep = (RepeatStep) traversal.getSteps().get(i);
-                if (null == repeatStep.getEmitTraversal() && repeatStep.getUntilTraversal() instanceof LoopTraversal && ((LoopTraversal) repeatStep.getUntilTraversal()).getMaxLoops() > 0) {
+                if (null == repeatStep.getEmitTraversal() &&
+                        repeatStep.getUntilTraversal() instanceof LoopTraversal && ((LoopTraversal) repeatStep.getUntilTraversal()).getMaxLoops() > 0 &&
+                        !TraversalHelper.hasStepOfAssignableClassRecursively(Scope.global, DedupGlobalStep.class, repeatStep.getRepeatTraversal())) {
                     final Traversal.Admin<?, ?> repeatTraversal = repeatStep.getGlobalChildren().get(0);
                     repeatTraversal.removeStep(repeatTraversal.getSteps().size() - 1); // removes the RepeatEndStep
                     TraversalHelper.applySingleLevelStrategies(traversal, repeatTraversal, RepeatUnrollStrategy.class);

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3fd74fc2/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDedupTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDedupTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDedupTest.groovy
index 83428c2..8f5e928 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDedupTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDedupTest.groovy
@@ -104,5 +104,10 @@ public abstract class GroovyDedupTest {
         public Traversal<Vertex, Collection<Vertex>> get_g_V_asXaX_repeatXbothX_timesX3X_emit_asXbX_group_byXselectXaXX_byXselectXbX_dedup_order_byXidX_foldX_selectXvaluesX_unfold_dedup() {
             new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').repeat(both()).times(3).emit.as('b').group.by(select('a')).by(select('b').dedup.order.by(id).fold).select(values).unfold.dedup")
         }
+
+        @Override
+        public Traversal<Vertex, Long> get_g_V_repeatXdedupX_timesX2X_count() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.repeat(dedup()).times(2).count")
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3fd74fc2/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupTest.java
index 19e685a..183a3a9 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupTest.java
@@ -42,6 +42,7 @@ import java.util.Set;
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.both;
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.bothE;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.dedup;
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.select;
 import static org.apache.tinkerpop.gremlin.structure.Column.values;
 import static org.junit.Assert.assertEquals;
@@ -87,6 +88,8 @@ public abstract class DedupTest extends AbstractGremlinProcessTest {
 
     public abstract Traversal<Vertex, Collection<Vertex>> get_g_V_asXaX_repeatXbothX_timesX3X_emit_asXbX_group_byXselectXaXX_byXselectXbX_dedup_order_byXidX_foldX_selectXvaluesX_unfold_dedup();
 
+    public abstract Traversal<Vertex, Long> get_g_V_repeatXdedupX_timesX2X_count();
+
     @Test
     @LoadGraphWith(MODERN)
     public void g_V_out_in_valuesXnameX_fold_dedupXlocalX_unfold() {
@@ -284,7 +287,7 @@ public abstract class DedupTest extends AbstractGremlinProcessTest {
     }
 
     @Test
-    @LoadGraphWith
+    @LoadGraphWith(MODERN)
     public void g_V_asXaX_repeatXbothX_timesX3X_emit_asXbX_group_byXselectXaXX_byXselectXbX_dedup_order_byXidX_foldX_selectXvaluesX_unfold_dedup() {
         final Traversal<Vertex, Collection<Vertex>> traversal = get_g_V_asXaX_repeatXbothX_timesX3X_emit_asXbX_group_byXselectXaXX_byXselectXbX_dedup_order_byXidX_foldX_selectXvaluesX_unfold_dedup();
         printTraversalForm(traversal);
@@ -299,6 +302,16 @@ public abstract class DedupTest extends AbstractGremlinProcessTest {
         assertTrue(vertices.contains(convertToVertex(graph, "ripple")));
     }
 
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_repeatXdedupX_timesX2X_count() {
+        final Traversal<Vertex, Long> traversal = get_g_V_repeatXdedupX_timesX2X_count();
+        printTraversalForm(traversal);
+        assertEquals(0L, traversal.next().longValue());
+        assertFalse(traversal.hasNext());
+    }
+
+
     public static class Traversals extends DedupTest {
         @Override
         public Traversal<Vertex, String> get_g_V_out_in_valuesXnameX_fold_dedupXlocalX_unfold() {
@@ -374,5 +387,10 @@ public abstract class DedupTest extends AbstractGremlinProcessTest {
         public Traversal<Vertex, Collection<Vertex>> get_g_V_asXaX_repeatXbothX_timesX3X_emit_asXbX_group_byXselectXaXX_byXselectXbX_dedup_order_byXidX_foldX_selectXvaluesX_unfold_dedup() {
             return g.V().as("a").repeat(both()).times(3).emit().as("b").group().by(select("a")).by(select("b").dedup().order().by(T.id).fold()).select(values).<Collection<Vertex>>unfold().dedup();
         }
+
+        @Override
+        public Traversal<Vertex, Long> get_g_V_repeatXdedupX_timesX2X_count() {
+            return g.V().repeat(dedup()).times(2).count();
+        }
     }
 }


[34/50] [abbrv] tinkerpop git commit: Merge branch 'TINKERPOP-1521' into tp32

Posted by sp...@apache.org.
Merge branch 'TINKERPOP-1521' into tp32


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/fd760264
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/fd760264
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/fd760264

Branch: refs/heads/TINKERPOP-1565
Commit: fd760264c8d4809bece403c294b98b0cf23e031f
Parents: e3e0bef 9ca1c58
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Jan 10 10:34:26 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Tue Jan 10 10:34:26 2017 -0700

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  2 +
 .../traversal/step/map/AddVertexStartStep.java  |  8 +--
 .../optimization/PathRetractionStrategy.java    |  3 +-
 .../step/map/GroovyAddVertexTest.groovy         | 10 ++++
 .../traversal/step/map/AddVertexTest.java       | 53 +++++++++++++++++++-
 5 files changed, 70 insertions(+), 6 deletions(-)
----------------------------------------------------------------------



[36/50] [abbrv] tinkerpop git commit: a potential clone() error in DefaultTraversal where the 'last traverser' field is not set to EmptyTraverser. We haven't run into this problem, but it was a potential. CTR.

Posted by sp...@apache.org.
a potential clone() error in DefaultTraversal where the 'last traverser' field is not set to EmptyTraverser. We haven't run into this problem, but it was a potential. CTR.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/3c80611a
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/3c80611a
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/3c80611a

Branch: refs/heads/TINKERPOP-1565
Commit: 3c80611acd992f35e26ce7c4e148180a2893a876
Parents: fd76026
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Jan 10 10:52:53 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Tue Jan 10 10:52:53 2017 -0700

----------------------------------------------------------------------
 .../tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java  | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3c80611a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
index 3c21e37..eb5f087 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversal.java
@@ -234,6 +234,7 @@ public class DefaultTraversal<S, E> implements Traversal.Admin<S, E> {
     public DefaultTraversal<S, E> clone() {
         try {
             final DefaultTraversal<S, E> clone = (DefaultTraversal<S, E>) super.clone();
+            clone.lastTraverser = EmptyTraverser.instance();
             clone.steps = new ArrayList<>();
             clone.unmodifiableSteps = Collections.unmodifiableList(clone.steps);
             clone.sideEffects = this.sideEffects.clone();


[04/50] [abbrv] tinkerpop git commit: Added Serializer.cloneObject() which clones via serialization (helper method). TinkerGraphComputer now how a sound distributed Memory system where each worker/thread aggregates without concurrency locally and then, a

Posted by sp...@apache.org.
Added Serializer.cloneObject() which clones via serialization (helper method). TinkerGraphComputer now how a sound distributed Memory system where each worker/thread aggregates without concurrency locally and then, at the end of the iteration, the thread-distributed memories are aggregated into the main TinkerMemory.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/1ac003d0
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/1ac003d0
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/1ac003d0

Branch: refs/heads/TINKERPOP-1565
Commit: 1ac003d00807c1351594d04a4bbdb55e93b00134
Parents: 056d7ae
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Wed Jan 4 04:06:30 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Jan 5 16:59:45 2017 -0700

----------------------------------------------------------------------
 .../apache/tinkerpop/gremlin/util/Serializer.java    |  4 ++++
 .../process/computer/TinkerGraphComputer.java        |  8 +++-----
 .../process/computer/TinkerWorkerMemory.java         |  6 +++---
 .../process/computer/TinkerWorkerPool.java           | 15 ++++++++++++---
 4 files changed, 22 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/1ac003d0/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/Serializer.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/Serializer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/Serializer.java
index 28bab16..988fce3 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/Serializer.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/util/Serializer.java
@@ -47,4 +47,8 @@ public final class Serializer {
         in.close();
         return object;
     }
+
+    public static <V> V cloneObject(final V object) throws IOException, ClassNotFoundException {
+        return (V) Serializer.deserializeObject(Serializer.serializeObject(object));
+    }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/1ac003d0/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerGraphComputer.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerGraphComputer.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerGraphComputer.java
index fef2e1a..7523d63 100644
--- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerGraphComputer.java
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerGraphComputer.java
@@ -157,7 +157,7 @@ public final class TinkerGraphComputer implements GraphComputer {
         return computerService.submit(() -> {
             final long time = System.currentTimeMillis();
             final TinkerGraphComputerView view;
-            final TinkerWorkerPool workers = new TinkerWorkerPool(this.workers);
+            final TinkerWorkerPool workers = new TinkerWorkerPool(this.memory, this.workers);
             try {
                 if (null != this.vertexProgram) {
                     view = TinkerHelper.createGraphComputerView(this.graph, this.graphFilter, this.vertexProgram.getVertexComputeKeys());
@@ -168,8 +168,7 @@ public final class TinkerGraphComputer implements GraphComputer {
                         this.memory.completeSubRound();
                         workers.setVertexProgram(this.vertexProgram);
                         final SynchronizedIterator<Vertex> vertices = new SynchronizedIterator<>(this.graph.vertices());
-                        workers.executeVertexProgram(vertexProgram -> {
-                            final TinkerWorkerMemory workerMemory = new TinkerWorkerMemory(this.memory);
+                        workers.executeVertexProgram((vertexProgram, workerMemory) -> {
                             vertexProgram.workerIterationStart(workerMemory.asImmutable());
                             while (true) {
                                 final Vertex vertex = vertices.next();
@@ -178,8 +177,7 @@ public final class TinkerGraphComputer implements GraphComputer {
                                 vertexProgram.execute(
                                         ComputerGraph.vertexProgram(vertex, vertexProgram),
                                         new TinkerMessenger<>(vertex, this.messageBoard, vertexProgram.getMessageCombiner()),
-                                        workerMemory
-                                );
+                                        workerMemory);
                             }
                             vertexProgram.workerIterationEnd(workerMemory.asImmutable());
                             workerMemory.complete();

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/1ac003d0/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerWorkerMemory.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerWorkerMemory.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerWorkerMemory.java
index 28b99e3..081e4fa 100644
--- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerWorkerMemory.java
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerWorkerMemory.java
@@ -21,7 +21,6 @@ package org.apache.tinkerpop.gremlin.tinkergraph.process.computer;
 
 import org.apache.tinkerpop.gremlin.process.computer.Memory;
 import org.apache.tinkerpop.gremlin.process.computer.MemoryComputeKey;
-import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
 import org.apache.tinkerpop.gremlin.util.Serializer;
 
 import java.io.IOException;
@@ -43,10 +42,10 @@ public final class TinkerWorkerMemory implements Memory.Admin {
         this.mainMemory = mainMemory;
         for (final MemoryComputeKey key : this.mainMemory.memoryKeys.values()) {
             try {
-                final MemoryComputeKey clone = (MemoryComputeKey) Serializer.deserializeObject(Serializer.serializeObject(key));
+                final MemoryComputeKey clone = Serializer.cloneObject(key);
                 this.reducers.put(clone.getKey(), clone.getReducer());
             } catch (final IOException | ClassNotFoundException e) {
-                this.reducers.put(key.getKey(), key.getReducer()); // super ghetto
+                throw new IllegalStateException(e.getMessage(), e);
             }
         }
     }
@@ -112,5 +111,6 @@ public final class TinkerWorkerMemory implements Memory.Admin {
         for (final Map.Entry<String, Object> entry : this.workerMemory.entrySet()) {
             this.mainMemory.add(entry.getKey(), entry.getValue());
         }
+        this.workerMemory.clear();
     }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/1ac003d0/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerWorkerPool.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerWorkerPool.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerWorkerPool.java
index 3d851bf..140d347 100644
--- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerWorkerPool.java
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerWorkerPool.java
@@ -24,10 +24,13 @@ import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
 import org.apache.tinkerpop.gremlin.process.computer.util.MapReducePool;
 import org.apache.tinkerpop.gremlin.process.computer.util.VertexProgramPool;
 
+import java.util.Queue;
 import java.util.concurrent.CompletionService;
+import java.util.concurrent.ConcurrentLinkedQueue;
 import java.util.concurrent.ExecutorCompletionService;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
+import java.util.function.BiConsumer;
 import java.util.function.Consumer;
 
 /**
@@ -44,11 +47,15 @@ public final class TinkerWorkerPool implements AutoCloseable {
 
     private VertexProgramPool vertexProgramPool;
     private MapReducePool mapReducePool;
+    private final Queue<TinkerWorkerMemory> workerMemoryPool = new ConcurrentLinkedQueue<>();
 
-    public TinkerWorkerPool(final int numberOfWorkers) {
+    public TinkerWorkerPool(final TinkerMemory memory, final int numberOfWorkers) {
         this.numberOfWorkers = numberOfWorkers;
         this.workerPool = Executors.newFixedThreadPool(numberOfWorkers, THREAD_FACTORY_WORKER);
         this.completionService = new ExecutorCompletionService<>(this.workerPool);
+        for (int i = 0; i < this.numberOfWorkers; i++) {
+            this.workerMemoryPool.add(new TinkerWorkerMemory(memory));
+        }
     }
 
     public void setVertexProgram(final VertexProgram vertexProgram) {
@@ -59,12 +66,14 @@ public final class TinkerWorkerPool implements AutoCloseable {
         this.mapReducePool = new MapReducePool(mapReduce, this.numberOfWorkers);
     }
 
-    public void executeVertexProgram(final Consumer<VertexProgram> worker) throws InterruptedException {
+    public void executeVertexProgram(final BiConsumer<VertexProgram, TinkerWorkerMemory> worker) throws InterruptedException {
         for (int i = 0; i < this.numberOfWorkers; i++) {
             this.completionService.submit(() -> {
                 final VertexProgram vp = this.vertexProgramPool.take();
-                worker.accept(vp);
+                final TinkerWorkerMemory workerMemory = this.workerMemoryPool.poll();
+                worker.accept(vp, workerMemory);
                 this.vertexProgramPool.offer(vp);
+                this.workerMemoryPool.offer(workerMemory);
                 return null;
             });
         }


[42/50] [abbrv] tinkerpop git commit: OptionalStep needed a reset() method that reset its local child.

Posted by sp...@apache.org.
OptionalStep needed a reset() method that reset its local child.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/372a083c
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/372a083c
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/372a083c

Branch: refs/heads/TINKERPOP-1565
Commit: 372a083cd8233e552a3983724c43cabcbe512c44
Parents: 64baabf
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Jan 10 15:01:13 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Tue Jan 10 15:01:13 2017 -0700

----------------------------------------------------------------------
 .../gremlin/process/traversal/step/branch/OptionalStep.java    | 6 ++++++
 1 file changed, 6 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/372a083c/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/OptionalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/OptionalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/OptionalStep.java
index 2db92da..1e7fb26 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/OptionalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/branch/OptionalStep.java
@@ -89,4 +89,10 @@ public final class OptionalStep<S> extends AbstractStep<S, S> implements Travers
     public Set<TraverserRequirement> getRequirements() {
         return this.optionalTraversal.getTraverserRequirements();
     }
+
+    @Override
+    public void reset() {
+        super.reset();
+        this.optionalTraversal.reset();
+    }
 }


[11/50] [abbrv] tinkerpop git commit: no more SynchronizedIterator for TinkerGraphComputer. Each worker/thread has their own Iterator partition. In TinkerPop 3.3.0 (with Partitioner) this will be replaced (easily).

Posted by sp...@apache.org.
no more SynchronizedIterator for TinkerGraphComputer. Each worker/thread has their own Iterator<Vertex> partition. In TinkerPop 3.3.0 (with Partitioner) this will be replaced (easily).


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/3dd1f6e5
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/3dd1f6e5
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/3dd1f6e5

Branch: refs/heads/TINKERPOP-1565
Commit: 3dd1f6e5e141d715e678c66acd0516806e625047
Parents: 27a4b27
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Wed Jan 4 12:39:35 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Jan 5 17:00:17 2017 -0700

----------------------------------------------------------------------
 .../process/computer/TinkerGraphComputer.java   | 14 +++-----
 .../process/computer/TinkerWorkerPool.java      | 36 +++++++++++++++++---
 2 files changed, 36 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3dd1f6e5/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerGraphComputer.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerGraphComputer.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerGraphComputer.java
index 7523d63..2abce9a 100644
--- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerGraphComputer.java
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerGraphComputer.java
@@ -156,24 +156,21 @@ public final class TinkerGraphComputer implements GraphComputer {
         this.memory = new TinkerMemory(this.vertexProgram, this.mapReducers);
         return computerService.submit(() -> {
             final long time = System.currentTimeMillis();
-            final TinkerGraphComputerView view;
-            final TinkerWorkerPool workers = new TinkerWorkerPool(this.memory, this.workers);
+            final TinkerGraphComputerView view = TinkerHelper.createGraphComputerView(this.graph, this.graphFilter, null != this.vertexProgram ? this.vertexProgram.getVertexComputeKeys() : Collections.emptySet());
+            final TinkerWorkerPool workers = new TinkerWorkerPool(this.graph, this.memory, this.workers);
             try {
                 if (null != this.vertexProgram) {
-                    view = TinkerHelper.createGraphComputerView(this.graph, this.graphFilter, this.vertexProgram.getVertexComputeKeys());
                     // execute the vertex program
                     this.vertexProgram.setup(this.memory);
                     while (true) {
                         if (Thread.interrupted()) throw new TraversalInterruptedException();
                         this.memory.completeSubRound();
                         workers.setVertexProgram(this.vertexProgram);
-                        final SynchronizedIterator<Vertex> vertices = new SynchronizedIterator<>(this.graph.vertices());
-                        workers.executeVertexProgram((vertexProgram, workerMemory) -> {
+                        workers.executeVertexProgram((vertices, vertexProgram, workerMemory) -> {
                             vertexProgram.workerIterationStart(workerMemory.asImmutable());
-                            while (true) {
+                            while (vertices.hasNext()) {
                                 final Vertex vertex = vertices.next();
                                 if (Thread.interrupted()) throw new TraversalInterruptedException();
-                                if (null == vertex) break;
                                 vertexProgram.execute(
                                         ComputerGraph.vertexProgram(vertex, vertexProgram),
                                         new TinkerMessenger<>(vertex, this.messageBoard, vertexProgram.getMessageCombiner()),
@@ -192,9 +189,6 @@ public final class TinkerGraphComputer implements GraphComputer {
                         }
                     }
                     view.complete(); // drop all transient vertex compute keys
-                } else {
-                    // MapReduce only
-                    view = TinkerHelper.createGraphComputerView(this.graph, this.graphFilter, Collections.emptySet());
                 }
 
                 // execute mapreduce jobs

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3dd1f6e5/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerWorkerPool.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerWorkerPool.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerWorkerPool.java
index 140d347..637b416 100644
--- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerWorkerPool.java
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerWorkerPool.java
@@ -23,14 +23,20 @@ import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
 import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
 import org.apache.tinkerpop.gremlin.process.computer.util.MapReducePool;
 import org.apache.tinkerpop.gremlin.process.computer.util.VertexProgramPool;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
+import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerHelper;
+import org.apache.tinkerpop.gremlin.util.function.TriConsumer;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
 import java.util.Queue;
 import java.util.concurrent.CompletionService;
 import java.util.concurrent.ConcurrentLinkedQueue;
 import java.util.concurrent.ExecutorCompletionService;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
-import java.util.function.BiConsumer;
 import java.util.function.Consumer;
 
 /**
@@ -48,13 +54,33 @@ public final class TinkerWorkerPool implements AutoCloseable {
     private VertexProgramPool vertexProgramPool;
     private MapReducePool mapReducePool;
     private final Queue<TinkerWorkerMemory> workerMemoryPool = new ConcurrentLinkedQueue<>();
+    private final List<List<Vertex>> workerVertices = new ArrayList<>();
 
-    public TinkerWorkerPool(final TinkerMemory memory, final int numberOfWorkers) {
+    public TinkerWorkerPool(final TinkerGraph graph, final TinkerMemory memory, final int numberOfWorkers) {
         this.numberOfWorkers = numberOfWorkers;
         this.workerPool = Executors.newFixedThreadPool(numberOfWorkers, THREAD_FACTORY_WORKER);
         this.completionService = new ExecutorCompletionService<>(this.workerPool);
         for (int i = 0; i < this.numberOfWorkers; i++) {
             this.workerMemoryPool.add(new TinkerWorkerMemory(memory));
+            this.workerVertices.add(new ArrayList<>());
+        }
+        int batchSize = TinkerHelper.getVertices(graph).size() / this.numberOfWorkers;
+        if (0 == batchSize)
+            batchSize = 1;
+        int counter = 0;
+        int index = 0;
+
+        List<Vertex> currentWorkerVertices = this.workerVertices.get(index);
+        final Iterator<Vertex> iterator = graph.vertices();
+        while (iterator.hasNext()) {
+            final Vertex vertex = iterator.next();
+            if (counter++ < batchSize || index == this.workerVertices.size() - 1) {
+                currentWorkerVertices.add(vertex);
+            } else {
+                currentWorkerVertices = this.workerVertices.get(++index);
+                currentWorkerVertices.add(vertex);
+                counter = 1;
+            }
         }
     }
 
@@ -66,12 +92,14 @@ public final class TinkerWorkerPool implements AutoCloseable {
         this.mapReducePool = new MapReducePool(mapReduce, this.numberOfWorkers);
     }
 
-    public void executeVertexProgram(final BiConsumer<VertexProgram, TinkerWorkerMemory> worker) throws InterruptedException {
+    public void executeVertexProgram(final TriConsumer<Iterator<Vertex>, VertexProgram, TinkerWorkerMemory> worker) throws InterruptedException {
         for (int i = 0; i < this.numberOfWorkers; i++) {
+            final int index = i;
             this.completionService.submit(() -> {
                 final VertexProgram vp = this.vertexProgramPool.take();
                 final TinkerWorkerMemory workerMemory = this.workerMemoryPool.poll();
-                worker.accept(vp, workerMemory);
+                final List<Vertex> vertices = this.workerVertices.get(index);
+                worker.accept(vertices.iterator(), vp, workerMemory);
                 this.vertexProgramPool.offer(vp);
                 this.workerMemoryPool.offer(workerMemory);
                 return null;


[25/50] [abbrv] tinkerpop git commit: Merge branch 'tp32'

Posted by sp...@apache.org.
Merge branch 'tp32'


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/ebc0391d
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/ebc0391d
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/ebc0391d

Branch: refs/heads/TINKERPOP-1565
Commit: ebc0391dd67abe097afbb756c60991f0e3b8434d
Parents: d64f270 c3e6ed9
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Mon Jan 9 07:44:04 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Mon Jan 9 07:44:04 2017 -0700

----------------------------------------------------------------------
 CHANGELOG.asciidoc                                               | 1 +
 .../traversal/strategy/optimization/LazyBarrierStrategy.java     | 4 ++--
 2 files changed, 3 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ebc0391d/CHANGELOG.asciidoc
----------------------------------------------------------------------


[49/50] [abbrv] tinkerpop git commit: TINKERPOP-1414 Changed Gremlin Server and TinkerGraph to default GraphSON 2.0

Posted by sp...@apache.org.
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b28a2b09/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoTest.java
index 17ffed2..e16bbcc 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/IoTest.java
@@ -39,8 +39,10 @@ import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONIo;
 import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONMapper;
 import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONResourceAccess;
 import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONTokens;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONVersion;
 import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONWriter;
 import org.apache.tinkerpop.gremlin.structure.io.graphson.LegacyGraphSONReader;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.TypeInfo;
 import org.apache.tinkerpop.gremlin.structure.io.util.CustomId;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import org.apache.tinkerpop.shaded.jackson.databind.JsonNode;
@@ -355,7 +357,7 @@ public class IoTest {
         @LoadGraphWith(LoadGraphWith.GraphData.CLASSIC)
         public void shouldWriteNormalizedGraphSON() throws Exception {
             try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
-                final GraphSONMapper mapper = graph.io(graphson).mapper().normalize(true).create();
+                final GraphSONMapper mapper = graph.io(graphson).mapper().version(GraphSONVersion.V1_0).normalize(true).create();
                 final GraphSONWriter w = graph.io(graphson).writer().mapper(mapper).create();
                 w.writeGraph(bos, graph);
 
@@ -369,14 +371,15 @@ public class IoTest {
         @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
         @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
         public void shouldReadWriteModernWrappedInJsonObject() throws Exception {
+            final GraphSONMapper mapper = graph.io(graphson).mapper().version(GraphSONVersion.V1_0).create();
             try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-                final GraphWriter writer = graph.io(graphson()).writer().wrapAdjacencyList(true).create();
+                final GraphWriter writer = graph.io(graphson()).writer().wrapAdjacencyList(true).mapper(mapper).create();
                 writer.writeGraph(os, graph);
 
                 final Configuration configuration = graphProvider.newGraphConfiguration("readGraph", this.getClass(), name.getMethodName(), LoadGraphWith.GraphData.MODERN);
                 graphProvider.clear(configuration);
                 final Graph g1 = graphProvider.openTestGraph(configuration);
-                final GraphReader reader = graph.io(graphson()).reader().unwrapAdjacencyList(true).create();
+                final GraphReader reader = graph.io(graphson()).reader().mapper(mapper).unwrapAdjacencyList(true).create();
                 try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
                     reader.readGraph(bais, g1);
                 }
@@ -402,7 +405,7 @@ public class IoTest {
             final SimpleModule module = new SimpleModule();
             module.addSerializer(CustomId.class, new CustomId.CustomIdJacksonSerializerV1d0());
             final GraphWriter writer = graph.io(graphson).writer().mapper(
-                    graph.io(graphson).mapper().addCustomModule(module).embedTypes(true).create()).create();
+                    graph.io(graphson).mapper().version(GraphSONVersion.V1_0).addCustomModule(module).embedTypes(true).create()).create();
 
             try (final ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
                 writer.writeGraph(baos, graph);
@@ -421,7 +424,7 @@ public class IoTest {
 
                 try (final InputStream is = new ByteArrayInputStream(baos.toByteArray())) {
                     final GraphReader reader = graph.io(graphson).reader()
-                            .mapper(graph.io(graphson).mapper().embedTypes(true).addCustomModule(module).create()).create();
+                            .mapper(graph.io(graphson).mapper().version(GraphSONVersion.V1_0).embedTypes(true).addCustomModule(module).create()).create();
                     reader.readGraph(is, g2);
                 }
 
@@ -437,6 +440,35 @@ public class IoTest {
 
         @Test
         @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+        @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = FEATURE_STRING_VALUES)
+        @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+        public void shouldReadWriteSelfLoopingEdges() throws Exception {
+            final GraphSONMapper mapper = graph.io(graphson).mapper().version(GraphSONVersion.V1_0).create();
+            final Graph source = graph;
+            final Vertex v1 = source.addVertex();
+            final Vertex v2 = source.addVertex();
+            v1.addEdge("CONTROL", v2);
+            v1.addEdge("SELFLOOP", v1);
+
+            final Configuration targetConf = graphProvider.newGraphConfiguration("target", this.getClass(), name.getMethodName(), null);
+            final Graph target = graphProvider.openTestGraph(targetConf);
+            try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+                source.io(IoCore.graphson()).writer().mapper(mapper).create().writeGraph(os, source);
+                try (ByteArrayInputStream is = new ByteArrayInputStream(os.toByteArray())) {
+                    target.io(IoCore.graphson()).reader().mapper(mapper).create().readGraph(is, target);
+                }
+            } catch (IOException ioe) {
+                throw new RuntimeException(ioe);
+            }
+
+            assertEquals(IteratorUtils.count(source.vertices()), IteratorUtils.count(target.vertices()));
+            assertEquals(IteratorUtils.count(source.edges()), IteratorUtils.count(target.edges()));
+        }
+    }
+
+    public static final class GraphSONLegacyTest extends AbstractGremlinTest {
+        @Test
+        @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
         @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
         @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
         @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_INTEGER_VALUES)
@@ -450,12 +482,109 @@ public class IoTest {
             // the id is lossy in migration because TP2 treated ID as String
             assertClassicGraph(graph, false, true);
         }
+    }
+
+    public static final class GraphSONV2D0Test extends AbstractGremlinTest {
+        private Io.Builder<GraphSONIo> graphson;
+
+        @Before
+        public void setupBeforeEachTest() {
+            graphson = graphson();
+        }
+
+        /**
+         * Only need to execute this test with TinkerGraph or other graphs that support user supplied identifiers.
+         */
+        @Test
+        @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_STRING_VALUES)
+        @FeatureRequirement(featureClass = VertexPropertyFeatures.class, feature = FEATURE_INTEGER_VALUES)
+        @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = EdgePropertyFeatures.FEATURE_FLOAT_VALUES)
+        @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_USER_SUPPLIED_IDS)
+        @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_NUMERIC_IDS)
+        @FeatureRequirement(featureClass = Graph.Features.VertexPropertyFeatures.class, feature = Graph.Features.VertexPropertyFeatures.FEATURE_USER_SUPPLIED_IDS)
+        @FeatureRequirement(featureClass = Graph.Features.VariableFeatures.class, feature = FEATURE_VARIABLES)
+        @LoadGraphWith(LoadGraphWith.GraphData.CLASSIC)
+        public void shouldWriteNormalizedGraphSON() throws Exception {
+            try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
+                final GraphSONMapper mapper = graph.io(graphson).mapper().version(GraphSONVersion.V2_0).typeInfo(TypeInfo.NO_TYPES).normalize(true).create();
+                final GraphSONWriter w = graph.io(graphson).writer().mapper(mapper).create();
+                w.writeGraph(bos, graph);
+
+                final String expected = streamToString(IoTest.class.getResourceAsStream(TestHelper.convertPackageToResourcePath(GraphSONResourceAccess.class) + "tinkerpop-classic-normalized-v2d0.json"));
+                assertEquals(expected.replace("\n", "").replace("\r", ""), bos.toString().replace("\n", "").replace("\r", ""));
+            }
+        }
+
+        @Test
+        @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
+        @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
+        @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+        public void shouldReadWriteModernWrappedInJsonObject() throws Exception {
+            final GraphSONMapper mapper = graph.io(graphson).mapper().version(GraphSONVersion.V2_0).create();
+            try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+                final GraphWriter writer = graph.io(graphson()).writer().wrapAdjacencyList(true).mapper(mapper).create();
+                writer.writeGraph(os, graph);
+
+                final Configuration configuration = graphProvider.newGraphConfiguration("readGraph", this.getClass(), name.getMethodName(), LoadGraphWith.GraphData.MODERN);
+                graphProvider.clear(configuration);
+                final Graph g1 = graphProvider.openTestGraph(configuration);
+                final GraphReader reader = graph.io(graphson()).reader().mapper(mapper).unwrapAdjacencyList(true).create();
+                try (final ByteArrayInputStream bais = new ByteArrayInputStream(os.toByteArray())) {
+                    reader.readGraph(bais, g1);
+                }
+
+                // modern uses double natively so always assert as such
+                IoTest.assertModernGraph(g1, true, true);
+
+                graphProvider.clear(g1, configuration);
+            }
+        }
+
+        /**
+         * This is just a serialization check for JSON.
+         */
+        @Test
+        @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+        @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = FEATURE_USER_SUPPLIED_IDS)
+        @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = FEATURE_ANY_IDS)
+        public void shouldProperlySerializeCustomIdWithGraphSON() throws Exception {
+            final UUID id = UUID.fromString("AF4B5965-B176-4552-B3C1-FBBE2F52C305");
+            graph.addVertex(T.id, new CustomId("vertex", id));
+
+            final SimpleModule module = new CustomId.CustomIdTinkerPopJacksonModule();
+            final GraphWriter writer = graph.io(graphson).writer().mapper(
+                    graph.io(graphson).mapper().version(GraphSONVersion.V2_0).addCustomModule(module).create()).create();
+
+            try (final ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
+                writer.writeGraph(baos, graph);
+
+                // reusing the same config used for creation of "g".
+                final Configuration configuration = graphProvider.newGraphConfiguration("g2", this.getClass(), name.getMethodName(), null);
+                graphProvider.clear(configuration);
+                final Graph g2 = graphProvider.openTestGraph(configuration);
+
+                try (final InputStream is = new ByteArrayInputStream(baos.toByteArray())) {
+                    final GraphReader reader = graph.io(graphson).reader()
+                            .mapper(graph.io(graphson).mapper().version(GraphSONVersion.V2_0).addCustomModule(module).create()).create();
+                    reader.readGraph(is, g2);
+                }
+
+                final Vertex v2 = g2.vertices().next();
+                final CustomId customId = (CustomId) v2.id();
+                assertEquals(id, customId.getElementId());
+                assertEquals("vertex", customId.getCluster());
+
+                // need to manually close the "g2" instance
+                graphProvider.clear(g2, configuration);
+            }
+        }
 
         @Test
         @FeatureRequirement(featureClass = Graph.Features.EdgeFeatures.class, feature = Graph.Features.EdgeFeatures.FEATURE_ADD_EDGES)
         @FeatureRequirement(featureClass = EdgePropertyFeatures.class, feature = FEATURE_STRING_VALUES)
         @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
         public void shouldReadWriteSelfLoopingEdges() throws Exception {
+            final GraphSONMapper mapper = graph.io(graphson).mapper().version(GraphSONVersion.V2_0).create();
             final Graph source = graph;
             final Vertex v1 = source.addVertex();
             final Vertex v2 = source.addVertex();
@@ -465,9 +594,9 @@ public class IoTest {
             final Configuration targetConf = graphProvider.newGraphConfiguration("target", this.getClass(), name.getMethodName(), null);
             final Graph target = graphProvider.openTestGraph(targetConf);
             try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
-                source.io(IoCore.graphson()).writer().create().writeGraph(os, source);
+                source.io(IoCore.graphson()).writer().mapper(mapper).create().writeGraph(os, source);
                 try (ByteArrayInputStream is = new ByteArrayInputStream(os.toByteArray())) {
-                    target.io(IoCore.graphson()).reader().create().readGraph(is, target);
+                    target.io(IoCore.graphson()).reader().mapper(mapper).create().readGraph(is, target);
                 }
             } catch (IOException ioe) {
                 throw new RuntimeException(ioe);

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b28a2b09/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraph.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraph.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraph.java
index 57a18c8..e47229b 100644
--- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraph.java
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraph.java
@@ -230,7 +230,7 @@ public final class TinkerGraph implements Graph {
 
     @Override
     public <I extends Io> I io(final Io.Builder<I> builder) {
-        return (I) builder.graph(this).onMapper(mapper -> mapper.addRegistry(TinkerIoRegistry.instance())).create();
+        return (I) builder.graph(this).onMapper(mapper -> mapper.addRegistry(TinkerIoRegistryV2d0.instance())).create();
     }
 
     @Override


[16/50] [abbrv] tinkerpop git commit: Merge branch 'pr-523' into tp32

Posted by sp...@apache.org.
Merge branch 'pr-523' into tp32


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/63fb5eca
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/63fb5eca
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/63fb5eca

Branch: refs/heads/TINKERPOP-1565
Commit: 63fb5eca95cf89bcb2c449343f5321f9985fc768
Parents: 9c44f0d 5ba605b
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Jan 9 07:03:53 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Jan 9 07:03:53 2017 -0500

----------------------------------------------------------------------
 .../AbstractGraphSONMessageSerializerV2d0.java  | 36 ++++++++++----
 .../ser/GraphSONMessageSerializerV2d0.java      | 11 +----
 .../ser/GraphSONMessageSerializerV2d0Test.java  | 49 ++++++++++++++++++++
 3 files changed, 76 insertions(+), 20 deletions(-)
----------------------------------------------------------------------



[19/50] [abbrv] tinkerpop git commit: Merge branch 'TINKERPOP-1589' into tp32

Posted by sp...@apache.org.
Merge branch 'TINKERPOP-1589' into tp32

Conflicts:
	CHANGELOG.asciidoc


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/2f68d7e4
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/2f68d7e4
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/2f68d7e4

Branch: refs/heads/TINKERPOP-1565
Commit: 2f68d7e41d2a94857b84c3e41f26bfe4c8f3ef71
Parents: 63fb5ec 67e0b37
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Jan 9 07:36:16 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Jan 9 07:36:16 2017 -0500

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  1 +
 .../upgrade/release-3.2.x-incubating.asciidoc   | 18 +++++
 .../gremlin/process/traversal/Traversal.java    |  8 +-
 .../process/traversal/step/TraversalParent.java | 13 ++-
 .../process/traversal/step/map/GraphStep.java   | 18 ++++-
 .../structure/util/CloseableIterator.java       | 49 +++++++++++
 .../util/DefaultCloseableIterator.java          | 45 +++++++++++
 .../process/traversal/TraversalTest.java        | 44 +++++++++-
 .../structure/util/CloseableIteratorTest.java   | 85 ++++++++++++++++++++
 9 files changed, 273 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2f68d7e4/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --cc CHANGELOG.asciidoc
index 35b1320,7316d80..89dcce4
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@@ -26,7 -26,7 +26,8 @@@ image::https://raw.githubusercontent.co
  TinkerPop 3.2.4 (Release Date: NOT OFFICIALLY RELEASED YET)
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  
 +* Added documentation around "terminal steps" in Gremlin: `hasNext()`, `next()`, `toList()`, etc.
+ * Added `CloseableIterator` to allow `Graph` providers who open expensive resources a way to let users release them.
  * Fixed minor bug in `gremlin-driver` where closing a session-based `Client` without initializing it could generate an error.
  * `TinkerGraph` Gryo and GraphSON deserialization is now configured to use multi-properties.
  * Changed behavior of `ElementHelper.areEqual(Property, Property)` to not throw exceptions with `null` arguments.


[07/50] [abbrv] tinkerpop git commit: removed the toy file and updated CHANGELOG.

Posted by sp...@apache.org.
removed the toy file and updated CHANGELOG.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/dc38b435
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/dc38b435
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/dc38b435

Branch: refs/heads/TINKERPOP-1565
Commit: dc38b435341d587c4d3c89bbc4b5261148077b0a
Parents: e925808
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Thu Jan 5 16:59:14 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Jan 5 17:00:17 2017 -0700

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  2 +-
 .../groovy/TinkerGraphGroovyPlayTest.groovy     | 53 --------------------
 2 files changed, 1 insertion(+), 54 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/dc38b435/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 1fc5355..f8c9743 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -29,7 +29,7 @@ TinkerPop 3.2.4 (Release Date: NOT OFFICIALLY RELEASED YET)
 * Added documentation around "terminal steps" in Gremlin: `hasNext()`, `next()`, `toList()`, etc.
 * Fixed minor bug in `gremlin-driver` where closing a session-based `Client` without initializing it could generate an error.
 * Relieved synchronization pressure in various areas of `TinkerGraphComputer`.
-* Fixed an optimization bug in `DedupGlobalStep` in OLAP where deduping occurred twice.
+* Fixed an optimization bug in OLAP-based `DedupGlobalStep` where deduping occurred twice.
 * `MemoryComputeKey` now implements `Cloneable` which is useful for `BiOperator` reducers that maintain thread-unsafe state.
 * `TinkerGraphComputer` now supports distributed `Memory` with lock-free partition aggregation.
 * `TinkerGraph` Gryo and GraphSON deserialization is now configured to use multi-properties.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/dc38b435/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/groovy/TinkerGraphGroovyPlayTest.groovy
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/groovy/TinkerGraphGroovyPlayTest.groovy b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/groovy/TinkerGraphGroovyPlayTest.groovy
deleted file mode 100644
index a736f3d..0000000
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/process/groovy/TinkerGraphGroovyPlayTest.groovy
+++ /dev/null
@@ -1,53 +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.gremlin.tinkergraph.process.groovy
-
-import org.apache.tinkerpop.gremlin.process.computer.Computer
-import org.apache.tinkerpop.gremlin.structure.T
-import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph
-import org.apache.tinkerpop.gremlin.util.TimeUtil
-import org.junit.Ignore
-import org.junit.Test
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-class TinkerGraphGroovyPlayTest {
-
-    @Test
-    @Ignore
-    public void testStuff() {
-
-        def graph = TinkerGraph.open()
-        def g = graph.traversal()
-        def a = graph.traversal().withComputer(Computer.compute())
-        def r = new Random(123)
-
-        (1..1000000).each {
-            def vid = ["a", "b", "c", "d"].collectEntries { [it, r.nextInt() % 400000] }
-            graph.addVertex(T.id, vid)
-        }; []
-
-        println TimeUtil.clockWithResult(1) { g.V().id().select("c").count().next() }
-        println TimeUtil.clockWithResult(1) { g.V().id().select("c").dedup().count().next() }
-        println TimeUtil.clockWithResult(1) { a.V().id().select("c").count().next() }
-        println TimeUtil.clockWithResult(1) { a.V().id().select("c").dedup().count().next() }
-    }
-}


[17/50] [abbrv] tinkerpop git commit: Merge branch 'tp32'

Posted by sp...@apache.org.
Merge branch 'tp32'


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/18f074ab
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/18f074ab
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/18f074ab

Branch: refs/heads/TINKERPOP-1565
Commit: 18f074ab25f0980adcc6baa41122fd2f822e3126
Parents: e248da0 63fb5ec
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Jan 9 07:04:02 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Jan 9 07:04:02 2017 -0500

----------------------------------------------------------------------
 .../AbstractGraphSONMessageSerializerV2d0.java  | 36 ++++++++++----
 .../ser/GraphSONMessageSerializerV2d0.java      | 11 +----
 .../ser/GraphSONMessageSerializerV2d0Test.java  | 49 ++++++++++++++++++++
 3 files changed, 76 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/18f074ab/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV2d0Test.java
----------------------------------------------------------------------


[08/50] [abbrv] tinkerpop git commit: have DedupGlobalStep as optimized as I can get it. I think BloomFilters are the next thing. Also, detachment factory stuff will help reduce barrier sizes. Found a bug in SparkInterceptorStrategyTest. Fixed.

Posted by sp...@apache.org.
have DedupGlobalStep as optimized as I can get it. I think BloomFilters are the next thing. Also, detachment factory stuff will help reduce barrier sizes. Found a bug in SparkInterceptorStrategyTest. Fixed.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/e9258086
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/e9258086
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/e9258086

Branch: refs/heads/TINKERPOP-1565
Commit: e9258086441d013e9961d81473b275054d41d8cc
Parents: ba39074
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Thu Jan 5 13:29:32 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Jan 5 17:00:17 2017 -0700

----------------------------------------------------------------------
 .../traversal/step/filter/DedupGlobalStep.java  | 70 ++++++++++----------
 .../SparkInterceptorStrategyTest.java           |  2 +-
 2 files changed, 36 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e9258086/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
index a4c1b6a..d024456 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
@@ -40,6 +40,7 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.NoSuchElementException;
@@ -57,8 +58,8 @@ public final class DedupGlobalStep<S> extends FilterStep<S> implements Traversal
     private final Set<String> dedupLabels;
     private Set<String> keepLabels;
     private boolean executingAtMaster = false;
-    private boolean barrierAdded = false;
     private Map<Object, Traverser.Admin<S>> barrier;
+    private Iterator<Map.Entry<Object, Traverser.Admin<S>>> barrierIterator;
 
     public DedupGlobalStep(final Traversal.Admin traversal, final String... dedupLabels) {
         super(traversal);
@@ -67,8 +68,8 @@ public final class DedupGlobalStep<S> extends FilterStep<S> implements Traversal
 
     @Override
     protected boolean filter(final Traverser.Admin<S> traverser) {
-        if (this.onGraphComputer && (!this.executingAtMaster || this.barrierAdded)) return true;
-        traverser.setBulk(1);
+        if (this.onGraphComputer && !this.executingAtMaster) return true;
+        traverser.setBulk(1L);
         if (null == this.dedupLabels) {
             return this.duplicateSet.add(TraversalUtil.applyNullable(traverser, this.dedupTraversal));
         } else {
@@ -92,13 +93,16 @@ public final class DedupGlobalStep<S> extends FilterStep<S> implements Traversal
     @Override
     protected Traverser.Admin<S> processNextStart() {
         if (null != this.barrier) {
-            for (final Map.Entry<Object, Traverser.Admin<S>> entry : this.barrier.entrySet()) {
-                if (this.duplicateSet.add(entry.getKey()))
-                    this.starts.add(entry.getValue());
-            }
-            this.barrierAdded = true;
+            this.barrierIterator = this.barrier.entrySet().iterator();
             this.barrier = null;
         }
+        while (this.barrierIterator != null && this.barrierIterator.hasNext()) {
+            if (null == this.barrierIterator)
+                this.barrierIterator = this.barrier.entrySet().iterator();
+            final Map.Entry<Object, Traverser.Admin<S>> entry = this.barrierIterator.next();
+            if (this.duplicateSet.add(entry.getKey()))
+                return PathProcessor.processTraverserPathLabels(entry.getValue(), this.keepLabels);
+        }
         return PathProcessor.processTraverserPathLabels(super.processNextStart(), this.keepLabels);
     }
 
@@ -141,8 +145,8 @@ public final class DedupGlobalStep<S> extends FilterStep<S> implements Traversal
     public void reset() {
         super.reset();
         this.duplicateSet.clear();
-        this.barrierAdded = false;
         this.barrier = null;
+        this.barrierIterator = null;
     }
 
     @Override
@@ -179,35 +183,31 @@ public final class DedupGlobalStep<S> extends FilterStep<S> implements Traversal
 
     @Override
     public Map<Object, Traverser.Admin<S>> nextBarrier() throws NoSuchElementException {
-        if (null != this.barrier) {
-            final Map<Object, Traverser.Admin<S>> tempBarrier = this.barrier;
-            this.barrier = null;
-            this.barrierAdded = false;
-            return tempBarrier;
-        } else {
-            final Map<Object, Traverser.Admin<S>> map = new HashMap<>();
-            while (this.starts.hasNext()) {
-                final Traverser.Admin<S> traverser = this.starts.next();
-                final Object object;
-                if (null != this.dedupLabels) {
-                    object = new ArrayList<>(this.dedupLabels.size());
-                    for (final String label : this.dedupLabels) {
-                        ((List) object).add(TraversalUtil.applyNullable((S) this.getScopeValue(Pop.last, label, traverser), this.dedupTraversal));
-                    }
-                } else {
-                    object = TraversalUtil.applyNullable(traverser, this.dedupTraversal);
-                }
-                if (!map.containsKey(object)) {
-                    traverser.setBulk(1L);
-                    traverser.set(DetachedFactory.detach(traverser.get(), true));
-                    map.put(object, traverser);
+        final Map<Object, Traverser.Admin<S>> map = null != this.barrier ? this.barrier : new HashMap<>();
+        while (this.starts.hasNext()) {
+            final Traverser.Admin<S> traverser = this.starts.next();
+            final Object object;
+            if (null != this.dedupLabels) {
+                object = new ArrayList<>(this.dedupLabels.size());
+                for (final String label : this.dedupLabels) {
+                    ((List) object).add(TraversalUtil.applyNullable((S) this.getScopeValue(Pop.last, label, traverser), this.dedupTraversal));
                 }
+            } else {
+                object = TraversalUtil.applyNullable(traverser, this.dedupTraversal);
+            }
+            if (!map.containsKey(object)) {
+                traverser.setBulk(1L);
+                // traverser.detach();
+                traverser.set(DetachedFactory.detach(traverser.get(), true)); // TODO: detect required detachment accordingly
+                map.put(object, traverser);
             }
-            if (map.isEmpty())
-                throw FastNoSuchElementException.instance();
-            else
-                return map;
         }
+        this.barrier = null;
+        this.barrierIterator = null;
+        if (map.isEmpty())
+            throw FastNoSuchElementException.instance();
+        else
+            return map;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e9258086/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/SparkInterceptorStrategyTest.java
----------------------------------------------------------------------
diff --git a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/SparkInterceptorStrategyTest.java b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/SparkInterceptorStrategyTest.java
index 24e3663..a53b3bd 100644
--- a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/SparkInterceptorStrategyTest.java
+++ b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/traversal/strategy/optimization/SparkInterceptorStrategyTest.java
@@ -142,7 +142,7 @@ public class SparkInterceptorStrategyTest extends AbstractSparkTest {
         test(6l, g.V().out().values("name").count());
         test(2l, g.V().out("knows").values("name").count());
         test(3l, g.V().in().has("name", "marko").count());
-        test(6l, g.V().repeat(__.dedup()).times(2).count());
+        test(0l, g.V().repeat(__.dedup()).times(2).count());
         test(6l, g.V().dedup().count());
         test(4l, g.V().hasLabel("person").order().by("age").count());
         test(1l, g.V().count().count());


[44/50] [abbrv] tinkerpop git commit: A fix in tp32 now allows testing of RequestMessage CTR

Posted by sp...@apache.org.
A fix in tp32 now allows testing of RequestMessage CTR


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/1288ad37
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/1288ad37
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/1288ad37

Branch: refs/heads/TINKERPOP-1565
Commit: 1288ad377520adf697269551cb6c88042d1be314
Parents: 1154887
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Jan 10 18:20:55 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Jan 10 18:21:36 2017 -0500

----------------------------------------------------------------------
 .../java/org/apache/tinkerpop/gremlin/structure/io/Model.java     | 3 ---
 1 file changed, 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/1288ad37/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Model.java
----------------------------------------------------------------------
diff --git a/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Model.java b/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Model.java
index 341e62b..aa31756 100644
--- a/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Model.java
+++ b/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Model.java
@@ -308,9 +308,6 @@ public class Model {
                 .before("3.0")
                 .match();
 
-        // TODO: need to get RequestMessage to be included - logic is held in GraphSONMessageSerializer
-        incompatibilityList.addAll(Compatibilities.with(GraphSONCompatibility.class).configuredAs(".*partial.*").match());
-
         final Compatibility[] incompatibilities = new Compatibility[incompatibilityList.size()];
         incompatibilityList.toArray(incompatibilities);
         addEntry("RequestMessage", obj, title, description, incompatibilities);


[48/50] [abbrv] tinkerpop git commit: minor nothing tweak.

Posted by sp...@apache.org.
minor nothing tweak.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/dc2b2742
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/dc2b2742
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/dc2b2742

Branch: refs/heads/TINKERPOP-1565
Commit: dc2b2742a4798a88bda671f9ccbf857161ea42b9
Parents: ff36e49
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Wed Nov 30 07:55:45 2016 -0700
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jan 12 09:55:59 2017 -0500

----------------------------------------------------------------------
 .../structure/util/reference/ReferenceVertexProperty.java | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/dc2b2742/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/reference/ReferenceVertexProperty.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/reference/ReferenceVertexProperty.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/reference/ReferenceVertexProperty.java
index 93b4c48..472a63b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/reference/ReferenceVertexProperty.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/reference/ReferenceVertexProperty.java
@@ -34,7 +34,7 @@ import java.util.NoSuchElementException;
 public class ReferenceVertexProperty<V> extends ReferenceElement<VertexProperty<V>> implements VertexProperty<V> {
 
     private ReferenceVertex vertex;
-    private String key;
+    private String label;
     private V value;
 
     private ReferenceVertexProperty() {
@@ -43,8 +43,8 @@ public class ReferenceVertexProperty<V> extends ReferenceElement<VertexProperty<
 
     public ReferenceVertexProperty(final VertexProperty<V> vertexProperty) {
         super(vertexProperty);
-        this.vertex = ReferenceFactory.detach(vertexProperty.element());
-        this.key = vertexProperty.key();
+        this.vertex = new ReferenceVertex(vertexProperty.element());
+        this.label = vertexProperty.key();
         this.value = vertexProperty.value();
     }
 
@@ -55,12 +55,12 @@ public class ReferenceVertexProperty<V> extends ReferenceElement<VertexProperty<
 
     @Override
     public String key() {
-        return this.key;
+        return this.label;
     }
 
     @Override
     public String label() {
-        return this.key;
+        return this.label;
     }
 
     @Override


[12/50] [abbrv] tinkerpop git commit: CHAGELOG updated. Lunch time.

Posted by sp...@apache.org.
CHAGELOG updated. Lunch time.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/27a4b271
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/27a4b271
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/27a4b271

Branch: refs/heads/TINKERPOP-1565
Commit: 27a4b271c54f0ab06fc8c0ad0578e4433d6db536
Parents: 8d96128
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Wed Jan 4 10:49:02 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Jan 5 17:00:17 2017 -0700

----------------------------------------------------------------------
 CHANGELOG.asciidoc | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/27a4b271/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 81dd94e..1fc5355 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -28,6 +28,7 @@ TinkerPop 3.2.4 (Release Date: NOT OFFICIALLY RELEASED YET)
 
 * Added documentation around "terminal steps" in Gremlin: `hasNext()`, `next()`, `toList()`, etc.
 * Fixed minor bug in `gremlin-driver` where closing a session-based `Client` without initializing it could generate an error.
+* Relieved synchronization pressure in various areas of `TinkerGraphComputer`.
 * Fixed an optimization bug in `DedupGlobalStep` in OLAP where deduping occurred twice.
 * `MemoryComputeKey` now implements `Cloneable` which is useful for `BiOperator` reducers that maintain thread-unsafe state.
 * `TinkerGraphComputer` now supports distributed `Memory` with lock-free partition aggregation.


[31/50] [abbrv] tinkerpop git commit: Various __ steps can be hard typed. For instance out() is actually out(). Went through and tweaked typing accordingly. This is going to master as it might cause some users to have to remove <

Posted by sp...@apache.org.
Various __ steps can be hard typed. For instance <A,Vertex>out() is actually <Vertex,Vertex>out(). Went through and tweaked typing accordingly. This is going to master as it might cause some users to have to remove <> explicit typing.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/32fe2ea6
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/32fe2ea6
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/32fe2ea6

Branch: refs/heads/TINKERPOP-1565
Commit: 32fe2ea6c6205d867f67ed8527c51f55a08ff644
Parents: b2cde4e
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Mon Jan 9 11:50:25 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Mon Jan 9 11:50:25 2017 -0700

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  1 +
 .../traversal/dsl/graph/GraphTraversal.java     | 12 ++--
 .../gremlin/process/traversal/dsl/graph/__.java | 73 ++++++++++----------
 .../process/traversal/CoreTraversalTest.java    |  2 +-
 4 files changed, 45 insertions(+), 43 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/32fe2ea6/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 12bc44e..d6037dd 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -26,6 +26,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 TinkerPop 3.3.0 (Release Date: NOT OFFICIALLY RELEASED YET)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
+* Added more specific typing to various `__` traversal steps. E.g. `<A,Vertex>out()` is `<Vertex,Vertex>out()`.
 * Updated Docker build scripts to include Python dependencies (NOTE: users should remove any previously generated TinkerPop Docker images).
 * Added "attachment requisite" `VertexProperty.element()` and `Property.element()` data in GraphSON serialization.
 * Added `Vertex`, `Edge`, `VertexProperty`, and `Property` serializers to Gremlin-Python and exposed tests that use graph object arguments.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/32fe2ea6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
index 7ffee40..46803a4 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
@@ -987,12 +987,12 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
 
     public default GraphTraversal<S, E> has(final String propertyKey) {
         this.asAdmin().getBytecode().addStep(Symbols.has, propertyKey);
-        return this.asAdmin().addStep(new TraversalFilterStep<>(this.asAdmin(), __.values(propertyKey)));
+        return this.asAdmin().addStep(new TraversalFilterStep(this.asAdmin(),  __.values(propertyKey)));
     }
 
     public default GraphTraversal<S, E> hasNot(final String propertyKey) {
         this.asAdmin().getBytecode().addStep(Symbols.hasNot, propertyKey);
-        return this.asAdmin().addStep(new NotStep<>(this.asAdmin(), __.values(propertyKey)));
+        return this.asAdmin().addStep(new NotStep(this.asAdmin(), __.values(propertyKey)));
     }
 
     public default GraphTraversal<S, E> hasLabel(final String label, final String... otherLabels) {
@@ -1577,15 +1577,15 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
 
     ////
 
-    public default <M, E2> GraphTraversal<S, E> option(final M pickToken, final Traversal<E, E2> traversalOption) {
+    public default <M, E2> GraphTraversal<S, E> option(final M pickToken, final Traversal<?, E2> traversalOption) {
         this.asAdmin().getBytecode().addStep(Symbols.option, pickToken, traversalOption);
-        ((TraversalOptionParent<M, E, E2>) this.asAdmin().getEndStep()).addGlobalChildOption(pickToken, traversalOption.asAdmin());
+        ((TraversalOptionParent<M, E, E2>) this.asAdmin().getEndStep()).addGlobalChildOption(pickToken, (Traversal.Admin<E, E2>) traversalOption.asAdmin());
         return this;
     }
 
-    public default <E2> GraphTraversal<S, E> option(final Traversal<E, E2> traversalOption) {
+    public default <E2> GraphTraversal<S, E> option(final Traversal<?, E2> traversalOption) {
         this.asAdmin().getBytecode().addStep(Symbols.option, traversalOption);
-        ((TraversalOptionParent<Object, E, E2>) this.asAdmin().getEndStep()).addGlobalChildOption(TraversalOptionParent.Pick.any, traversalOption.asAdmin());
+        ((TraversalOptionParent<Object, E, E2>) this.asAdmin().getEndStep()).addGlobalChildOption(TraversalOptionParent.Pick.any, (Traversal.Admin<E, E2>) traversalOption.asAdmin());
         return this;
     }
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/32fe2ea6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
index 2ec0d0a..fc6462d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/__.java
@@ -29,6 +29,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSe
 import org.apache.tinkerpop.gremlin.structure.Column;
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Element;
 import org.apache.tinkerpop.gremlin.structure.Property;
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
@@ -108,14 +109,14 @@ public class __ {
     /**
      * @see GraphTraversal#label()
      */
-    public static <A> GraphTraversal<A, String> label() {
+    public static <A extends Element> GraphTraversal<A, String> label() {
         return __.<A>start().label();
     }
 
     /**
      * @see GraphTraversal#id()
      */
-    public static <A> GraphTraversal<A, Object> id() {
+    public static <A extends Element> GraphTraversal<A, Object> id() {
         return __.<A>start().id();
     }
 
@@ -129,92 +130,92 @@ public class __ {
     /**
      * @see GraphTraversal#to(Direction, String...)
      */
-    public static <A> GraphTraversal<A, Vertex> to(final Direction direction, final String... edgeLabels) {
-        return __.<A>start().to(direction, edgeLabels);
+    public static GraphTraversal<Vertex, Vertex> to(final Direction direction, final String... edgeLabels) {
+        return __.<Vertex>start().to(direction, edgeLabels);
     }
 
     /**
      * @see GraphTraversal#out(String...)
      */
-    public static <A> GraphTraversal<A, Vertex> out(final String... edgeLabels) {
-        return __.<A>start().out(edgeLabels);
+    public static GraphTraversal<Vertex, Vertex> out(final String... edgeLabels) {
+        return __.<Vertex>start().out(edgeLabels);
     }
 
     /**
      * @see GraphTraversal#in(String...)
      */
-    public static <A> GraphTraversal<A, Vertex> in(final String... edgeLabels) {
-        return __.<A>start().in(edgeLabels);
+    public static GraphTraversal<Vertex, Vertex> in(final String... edgeLabels) {
+        return __.<Vertex>start().in(edgeLabels);
     }
 
     /**
      * @see GraphTraversal#both(String...)
      */
-    public static <A> GraphTraversal<A, Vertex> both(final String... edgeLabels) {
-        return __.<A>start().both(edgeLabels);
+    public static GraphTraversal<Vertex, Vertex> both(final String... edgeLabels) {
+        return __.<Vertex>start().both(edgeLabels);
     }
 
     /**
      * @see GraphTraversal#toE(Direction, String...)
      */
-    public static <A> GraphTraversal<A, Edge> toE(final Direction direction, final String... edgeLabels) {
-        return __.<A>start().toE(direction, edgeLabels);
+    public static GraphTraversal<Vertex, Edge> toE(final Direction direction, final String... edgeLabels) {
+        return __.<Vertex>start().toE(direction, edgeLabels);
     }
 
     /**
      * @see GraphTraversal#outE(String...)
      */
-    public static <A> GraphTraversal<A, Edge> outE(final String... edgeLabels) {
-        return __.<A>start().outE(edgeLabels);
+    public static GraphTraversal<Vertex, Edge> outE(final String... edgeLabels) {
+        return __.<Vertex>start().outE(edgeLabels);
     }
 
     /**
      * @see GraphTraversal#inE(String...)
      */
-    public static <A> GraphTraversal<A, Edge> inE(final String... edgeLabels) {
-        return __.<A>start().inE(edgeLabels);
+    public static GraphTraversal<Vertex, Edge> inE(final String... edgeLabels) {
+        return __.<Vertex>start().inE(edgeLabels);
     }
 
     /**
      * @see GraphTraversal#bothE(String...)
      */
-    public static <A> GraphTraversal<A, Edge> bothE(final String... edgeLabels) {
-        return __.<A>start().bothE(edgeLabels);
+    public static GraphTraversal<Vertex, Edge> bothE(final String... edgeLabels) {
+        return __.<Vertex>start().bothE(edgeLabels);
     }
 
     /**
      * @see GraphTraversal#toV(Direction)
      */
-    public static <A> GraphTraversal<A, Vertex> toV(final Direction direction) {
-        return __.<A>start().toV(direction);
+    public static GraphTraversal<Edge, Vertex> toV(final Direction direction) {
+        return __.<Edge>start().toV(direction);
     }
 
     /**
      * @see GraphTraversal#inV()
      */
-    public static <A> GraphTraversal<A, Vertex> inV() {
-        return __.<A>start().inV();
+    public static GraphTraversal<Edge, Vertex> inV() {
+        return __.<Edge>start().inV();
     }
 
     /**
      * @see GraphTraversal#outV()
      */
-    public static <A> GraphTraversal<A, Vertex> outV() {
-        return __.<A>start().outV();
+    public static GraphTraversal<Edge, Vertex> outV() {
+        return __.<Edge>start().outV();
     }
 
     /**
      * @see GraphTraversal#bothV()
      */
-    public static <A> GraphTraversal<A, Vertex> bothV() {
-        return __.<A>start().bothV();
+    public static GraphTraversal<Edge, Vertex> bothV() {
+        return __.<Edge>start().bothV();
     }
 
     /**
      * @see GraphTraversal#otherV()
      */
-    public static <A> GraphTraversal<A, Vertex> otherV() {
-        return __.<A>start().otherV();
+    public static GraphTraversal<Edge, Vertex> otherV() {
+        return __.<Edge>start().otherV();
     }
 
     /**
@@ -234,35 +235,35 @@ public class __ {
     /**
      * @see GraphTraversal#properties(String...)
      */
-    public static <A, B> GraphTraversal<A, ? extends Property<B>> properties(final String... propertyKeys) {
-        return __.<A>start().properties(propertyKeys);
+    public static <A extends Element, B> GraphTraversal<A, ? extends Property<B>> properties(final String... propertyKeys) {
+        return __.<A>start().<B>properties(propertyKeys);
     }
 
     /**
      * @see GraphTraversal#values(String...)
      */
-    public static <A, B> GraphTraversal<A, B> values(final String... propertyKeys) {
+    public static <A extends Element, B> GraphTraversal<A, B> values(final String... propertyKeys) {
         return __.<A>start().values(propertyKeys);
     }
 
     /**
      * @see GraphTraversal#propertyMap(String...)
      */
-    public static <A, B> GraphTraversal<A, Map<String, B>> propertyMap(final String... propertyKeys) {
+    public static <A extends Element, B> GraphTraversal<A, Map<String, B>> propertyMap(final String... propertyKeys) {
         return __.<A>start().propertyMap(propertyKeys);
     }
 
     /**
      * @see GraphTraversal#valueMap(String...)
      */
-    public static <A, B> GraphTraversal<A, Map<String, B>> valueMap(final String... propertyKeys) {
+    public static <A extends Element, B> GraphTraversal<A, Map<String, B>> valueMap(final String... propertyKeys) {
         return __.<A>start().valueMap(propertyKeys);
     }
 
     /**
      * @see GraphTraversal#valueMap(boolean, String...)
      */
-    public static <A, B> GraphTraversal<A, Map<Object, B>> valueMap(final boolean includeTokens, final String... propertyKeys) {
+    public static <A extends Element, B> GraphTraversal<A, Map<Object, B>> valueMap(final boolean includeTokens, final String... propertyKeys) {
         return __.<A>start().valueMap(includeTokens, propertyKeys);
     }
 
@@ -299,14 +300,14 @@ public class __ {
     /**
      * @see GraphTraversal#key()
      */
-    public static <A> GraphTraversal<A, String> key() {
+    public static <A extends Property> GraphTraversal<A, String> key() {
         return __.<A>start().key();
     }
 
     /**
      * @see GraphTraversal#value()
      */
-    public static <A, B> GraphTraversal<A, B> value() {
+    public static <A extends Property, B> GraphTraversal<A, B> value() {
         return __.<A>start().value();
     }
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/32fe2ea6/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/CoreTraversalTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/CoreTraversalTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/CoreTraversalTest.java
index cefbf39..566301b 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/CoreTraversalTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/CoreTraversalTest.java
@@ -219,7 +219,7 @@ public class CoreTraversalTest extends AbstractGremlinProcessTest {
     @Test
     @LoadGraphWith(MODERN)
     public void shouldAddStartsProperly() {
-        final Traversal<Object, Vertex> traversal = out().out();
+        final Traversal<Vertex, Vertex> traversal = out().out();
         assertFalse(traversal.hasNext());
         traversal.asAdmin().addStarts(traversal.asAdmin().getTraverserGenerator().generateIterator(g.V(), traversal.asAdmin().getSteps().get(0), 1l));
         assertTrue(traversal.hasNext());


[27/50] [abbrv] tinkerpop git commit: Merge branch 'tp32'

Posted by sp...@apache.org.
Merge branch 'tp32'


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/b2cde4eb
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/b2cde4eb
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/b2cde4eb

Branch: refs/heads/TINKERPOP-1565
Commit: b2cde4eba853172248951e6f31bd9bb00f63587d
Parents: ebc0391 2d824cf
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Mon Jan 9 07:54:22 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Mon Jan 9 07:54:22 2017 -0700

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |   5 +
 .../process/computer/MemoryComputeKey.java      |  24 +++-
 .../traversal/TraversalVertexProgram.java       |  20 +++-
 .../computer/traversal/WorkerExecutor.java      |   2 +-
 .../traversal/step/branch/RepeatStep.java       |  17 ++-
 .../traversal/step/filter/DedupGlobalStep.java  |  42 ++++---
 .../process/traversal/step/map/GroupStep.java   |  21 +++-
 .../traversal/step/map/OrderGlobalStep.java     |  13 ++-
 .../optimization/RepeatUnrollStrategy.java      |   6 +-
 .../tinkerpop/gremlin/util/Serializer.java      |   4 +
 .../util/function/ChainedComparator.java        |  18 ++-
 .../step/filter/GroovyDedupTest.groovy          |   5 +
 .../traversal/step/filter/DedupTest.java        |  20 +++-
 .../SparkInterceptorStrategyTest.java           |   2 +-
 .../process/computer/TinkerGraphComputer.java   |  22 ++--
 .../computer/TinkerGraphComputerView.java       |  32 +++---
 .../process/computer/TinkerMemory.java          |   2 +-
 .../process/computer/TinkerWorkerMemory.java    | 109 +++++++++++++++++++
 .../process/computer/TinkerWorkerPool.java      |  43 +++++++-
 19 files changed, 340 insertions(+), 67 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b2cde4eb/CHANGELOG.asciidoc
----------------------------------------------------------------------


[35/50] [abbrv] tinkerpop git commit: Merge branch 'tp32'

Posted by sp...@apache.org.
Merge branch 'tp32'


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/5c2e67ab
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/5c2e67ab
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/5c2e67ab

Branch: refs/heads/TINKERPOP-1565
Commit: 5c2e67ab794a9177878b7c08c265581fdc4530ab
Parents: 69f9e8f fd76026
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Jan 10 10:34:50 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Tue Jan 10 10:34:50 2017 -0700

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  2 +
 .../traversal/step/map/AddVertexStartStep.java  |  8 +--
 .../optimization/PathRetractionStrategy.java    |  3 +-
 .../step/map/GroovyAddVertexTest.groovy         | 10 ++++
 .../traversal/step/map/AddVertexTest.java       | 53 +++++++++++++++++++-
 5 files changed, 70 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5c2e67ab/CHANGELOG.asciidoc
----------------------------------------------------------------------


[09/50] [abbrv] tinkerpop git commit: added the concept of a master barrier to DedupGlobalStep to speed up the addition of worker barriers into the master traversal. A slight performance increase.

Posted by sp...@apache.org.
added the concept of a master barrier to DedupGlobalStep to speed up the addition of worker barriers into the master traversal. A slight performance increase.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/64c80657
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/64c80657
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/64c80657

Branch: refs/heads/TINKERPOP-1565
Commit: 64c80657bf9199d5b9f28f56b65f1ce327192bd1
Parents: 253248e
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Wed Jan 4 13:13:58 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Jan 5 17:00:17 2017 -0700

----------------------------------------------------------------------
 .../traversal/step/filter/DedupGlobalStep.java  | 21 +++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/64c80657/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
index dfe7958..e3d36b1 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
@@ -34,7 +34,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementExce
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory;
-import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -59,6 +58,7 @@ public final class DedupGlobalStep<S> extends FilterStep<S> implements Traversal
     private Set<String> keepLabels;
     private boolean executingAtMaster = false;
     private boolean barrierAdded = false;
+    private Map<Object, Traverser.Admin<S>> masterBarrier;
 
     public DedupGlobalStep(final Traversal.Admin traversal, final String... dedupLabels) {
         super(traversal);
@@ -76,6 +76,7 @@ public final class DedupGlobalStep<S> extends FilterStep<S> implements Traversal
             this.dedupLabels.forEach(label -> objects.add(TraversalUtil.applyNullable((S) this.getScopeValue(Pop.last, label, traverser), this.dedupTraversal)));
             return this.duplicateSet.add(objects);
         }
+
     }
 
     @Override
@@ -90,6 +91,11 @@ public final class DedupGlobalStep<S> extends FilterStep<S> implements Traversal
 
     @Override
     protected Traverser.Admin<S> processNextStart() {
+        if (null != this.masterBarrier) {
+            this.starts.add(this.masterBarrier.values().iterator());
+            this.barrierAdded = true;
+        }
+        this.masterBarrier = null;
         return PathProcessor.processTraverserPathLabels(super.processNextStart(), this.keepLabels);
     }
 
@@ -196,12 +202,13 @@ public final class DedupGlobalStep<S> extends FilterStep<S> implements Traversal
 
     @Override
     public void addBarrier(final Map<Object, Traverser.Admin<S>> barrier) {
-        this.barrierAdded = true;
-        IteratorUtils.removeOnNext(barrier.entrySet().iterator()).forEachRemaining(entry -> {
-            final Traverser.Admin<S> traverser = entry.getValue();
-            traverser.setSideEffects(this.getTraversal().getSideEffects());
-            this.addStart(traverser);
-        });
+        if (null == this.masterBarrier)
+            this.masterBarrier = new HashMap<>(barrier);
+        else {
+            for (Map.Entry<Object, Traverser.Admin<S>> entry : barrier.entrySet()) {
+                this.masterBarrier.putIfAbsent(entry.getKey(), entry.getValue());
+            }
+        }
     }
 
     @Override


[39/50] [abbrv] tinkerpop git commit: Merge branch 'TINKERPOP-1116'

Posted by sp...@apache.org.
Merge branch 'TINKERPOP-1116'


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/64baabfa
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/64baabfa
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/64baabfa

Branch: refs/heads/TINKERPOP-1565
Commit: 64baabfa29d9f6928a7fe492482bec60bd131bf8
Parents: 12261b3 32fe2ea
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Jan 10 12:14:57 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Tue Jan 10 12:14:57 2017 -0700

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  1 +
 .../traversal/dsl/graph/GraphTraversal.java     | 12 ++--
 .../gremlin/process/traversal/dsl/graph/__.java | 73 ++++++++++----------
 .../process/traversal/CoreTraversalTest.java    |  2 +-
 4 files changed, 45 insertions(+), 43 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/64baabfa/CHANGELOG.asciidoc
----------------------------------------------------------------------


[20/50] [abbrv] tinkerpop git commit: Merge branch 'tp32'

Posted by sp...@apache.org.
Merge branch 'tp32'


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/362bb052
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/362bb052
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/362bb052

Branch: refs/heads/TINKERPOP-1565
Commit: 362bb052fc2fa854b9ba75f6f4ea72921bf96627
Parents: 0819a68 2f68d7e
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Jan 9 07:36:33 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Jan 9 07:36:33 2017 -0500

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  1 +
 .../upgrade/release-3.2.x-incubating.asciidoc   | 18 +++++
 .../gremlin/process/traversal/Traversal.java    |  8 +-
 .../process/traversal/step/TraversalParent.java | 13 ++-
 .../process/traversal/step/map/GraphStep.java   | 18 ++++-
 .../structure/util/CloseableIterator.java       | 49 +++++++++++
 .../util/DefaultCloseableIterator.java          | 45 +++++++++++
 .../process/traversal/TraversalTest.java        | 44 +++++++++-
 .../structure/util/CloseableIteratorTest.java   | 85 ++++++++++++++++++++
 9 files changed, 273 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/362bb052/CHANGELOG.asciidoc
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/362bb052/docs/src/upgrade/release-3.2.x-incubating.asciidoc
----------------------------------------------------------------------


[06/50] [abbrv] tinkerpop git commit: updated CHANGELOG. Going to move on. Need example Gryo dataset from @dkuppitz to verify performance improvement of DedupGlobalStep on SparkGraphComputer.

Posted by sp...@apache.org.
updated CHANGELOG. Going to move on. Need example Gryo dataset from @dkuppitz to verify performance improvement of DedupGlobalStep on SparkGraphComputer.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/cef19796
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/cef19796
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/cef19796

Branch: refs/heads/TINKERPOP-1565
Commit: cef19796ffd2ad27074174ad7f90b9e1f24bc07e
Parents: 8deca70
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Wed Jan 4 05:05:09 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Jan 5 17:00:05 2017 -0700

----------------------------------------------------------------------
 CHANGELOG.asciidoc | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cef19796/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 35b1320..81dd94e 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -28,6 +28,9 @@ TinkerPop 3.2.4 (Release Date: NOT OFFICIALLY RELEASED YET)
 
 * Added documentation around "terminal steps" in Gremlin: `hasNext()`, `next()`, `toList()`, etc.
 * Fixed minor bug in `gremlin-driver` where closing a session-based `Client` without initializing it could generate an error.
+* Fixed an optimization bug in `DedupGlobalStep` in OLAP where deduping occurred twice.
+* `MemoryComputeKey` now implements `Cloneable` which is useful for `BiOperator` reducers that maintain thread-unsafe state.
+* `TinkerGraphComputer` now supports distributed `Memory` with lock-free partition aggregation.
 * `TinkerGraph` Gryo and GraphSON deserialization is now configured to use multi-properties.
 * Changed behavior of `ElementHelper.areEqual(Property, Property)` to not throw exceptions with `null` arguments.
 * Added `GryoVersion` for future flexibility when introducing a new verison of Gryo and moved serializer registrations to it.


[21/50] [abbrv] tinkerpop git commit: fixed ssl.keyPassword description

Posted by sp...@apache.org.
fixed ssl.keyPassword description


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/a27a0483
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/a27a0483
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/a27a0483

Branch: refs/heads/TINKERPOP-1565
Commit: a27a04831fa7e43b26d23f14091b615a088eac83
Parents: 7ba7ecd
Author: Robert Dale <ro...@gmail.com>
Authored: Mon Jan 9 09:16:36 2017 -0500
Committer: Robert Dale <ro...@gmail.com>
Committed: Mon Jan 9 09:16:36 2017 -0500

----------------------------------------------------------------------
 docs/src/reference/gremlin-applications.asciidoc | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a27a0483/docs/src/reference/gremlin-applications.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/reference/gremlin-applications.asciidoc b/docs/src/reference/gremlin-applications.asciidoc
index 235e2c5..1a2398d 100644
--- a/docs/src/reference/gremlin-applications.asciidoc
+++ b/docs/src/reference/gremlin-applications.asciidoc
@@ -615,7 +615,7 @@ The following table describes the various configuration options for the Gremlin
 |connectionPool.enableSsl |Determines if SSL should be enabled or not. If enabled on the server then it must be enabled on the client. |false
 |connectionPool.keyCertChainFile |The X.509 certificate chain file in PEM format. |_none_
 |connectionPool.keyFile |The `PKCS#8` private key file in PEM format. |_none_
-|connectionPool.keyPassword |The password of the `keyFile` if it's not password-protected |_none_
+|connectionPool.keyPassword |The password of the `keyFile` if it is password-protected |_none_
 |connectionPool.maxContentLength |The maximum length in bytes that a message can be sent to the server. This number can be no greater than the setting of the same name in the server configuration. |65536
 |connectionPool.maxInProcessPerConnection |The maximum number of in-flight requests that can occur on a connection. |4
 |connectionPool.maxSimultaneousUsagePerConnection |The maximum number of times that a connection can be borrowed from the pool simultaneously. |16
@@ -851,8 +851,8 @@ The following table describes the various configuration options that Gremlin Ser
 |ssl.enabled |Determines if SSL is turned on or not. |false
 |ssl.keyCertChainFile |The X.509 certificate chain file in PEM format. If this value is not present and `ssl.enabled` is `true` a self-signed certificate will be used (not suitable for production). |_none_
 |ssl.keyFile |The `PKCS#8` private key file in PEM format. If this value is not present and `ssl.enabled` is `true` a self-signed certificate will be used (not suitable for production). |_none_
-|ssl.keyPassword |The password of the `keyFile` if it's not password-protected |_none_
-|ssl.trustCertChainFile |Trusted certificates for verifying the remote endpoint's certificate. The file should contain an X.509 certificate chain in PEM format. A system default will be used if this setting is not present. |_none_
+|ssl.keyPassword |The password of the `keyFile` if it is password-protected |_none_
+|ssl.trustCertChainFile |Trusted certificates for verifying the remote endpoint's certificate. The file should contain an X.509 certificate chain in PEM format. A system default will be used if this setting is not present. (Not supported) |_none_
 |strictTransactionManagement |Set to `true` to require `aliases` to be submitted on every requests, where the `aliases` become the scope of transaction management. |false
 |threadPoolBoss |The number of threads available to Gremlin Server for accepting connections. Should always be set to `1`. |1
 |threadPoolWorker |The number of threads available to Gremlin Server for processing non-blocking reads and writes. |1


[43/50] [abbrv] tinkerpop git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/tinkerpop

Posted by sp...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/tinkerpop


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/11548875
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/11548875
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/11548875

Branch: refs/heads/TINKERPOP-1565
Commit: 115488754adff17220c1b60ddf5a97cd68faf032
Parents: 372a083 b098328
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Jan 10 15:01:21 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Tue Jan 10 15:01:21 2017 -0700

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  1 +
 .../AbstractGraphSONMessageSerializerV2d0.java  | 62 +++++++++++++++++++-
 .../ser/GraphSONMessageSerializerV2d0Test.java  | 23 ++++----
 3 files changed, 73 insertions(+), 13 deletions(-)
----------------------------------------------------------------------



[50/50] [abbrv] tinkerpop git commit: TINKERPOP-1414 Changed Gremlin Server and TinkerGraph to default GraphSON 2.0

Posted by sp...@apache.org.
TINKERPOP-1414 Changed Gremlin Server and TinkerGraph to default GraphSON 2.0

This work is done as part of TINKERPOP-1565 which is related to GraphSON 2.0 changes.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/b28a2b09
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/b28a2b09
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/b28a2b09

Branch: refs/heads/TINKERPOP-1565
Commit: b28a2b09fba1d439010f913bbf6574f98b922ebd
Parents: dc2b274
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Dec 7 10:37:04 2016 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jan 12 09:55:59 2017 -0500

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |   1 +
 docs/src/upgrade/release-3.3.x.asciidoc         |  65 +++++-
 .../structure/io/graphson/GraphSONIo.java       |   2 +-
 .../structure/io/graphson/GraphSONMapper.java   |   4 +-
 gremlin-server/conf/gremlin-server-classic.yaml |  12 +-
 .../conf/gremlin-server-modern-py.yaml          |  12 +-
 .../conf/gremlin-server-modern-readonly.yaml    |  12 +-
 gremlin-server/conf/gremlin-server-modern.yaml  |  12 +-
 gremlin-server/conf/gremlin-server-neo4j.yaml   |  12 +-
 .../conf/gremlin-server-rest-modern.yaml        |   6 +-
 .../conf/gremlin-server-rest-secure.yaml        |   6 +-
 gremlin-server/conf/gremlin-server-secure.yaml  |  12 +-
 gremlin-server/conf/gremlin-server-spark.yaml   |  12 +-
 gremlin-server/conf/gremlin-server.yaml         |  12 +-
 .../gremlin/server/AbstractChannelizer.java     |   5 +-
 .../server/GremlinServerAuthIntegrateTest.java  |  16 +-
 .../GremlinServerAuthOldIntegrateTest.java      |  20 +-
 .../server/GremlinServerHttpIntegrateTest.java  |  31 +--
 .../server/GremlinServerIntegrateTest.java      |   2 +-
 .../remote/gremlin-server-integration.yaml      |   6 +-
 .../server/gremlin-server-integration.yaml      |   6 +-
 .../gremlin/structure/SerializationTest.java    | 229 ++++++++++++++++++-
 .../tinkerpop/gremlin/structure/io/IoTest.java  | 143 +++++++++++-
 .../tinkergraph/structure/TinkerGraph.java      |   2 +-
 24 files changed, 521 insertions(+), 119 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b28a2b09/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 584774a..45bccea 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -29,6 +29,7 @@ TinkerPop 3.3.0 (Release Date: NOT OFFICIALLY RELEASED YET)
 * Added more specific typing to various `__` traversal steps. E.g. `<A,Vertex>out()` is `<Vertex,Vertex>out()`.
 * Updated Docker build scripts to include Python dependencies (NOTE: users should remove any previously generated TinkerPop Docker images).
 * Added "attachment requisite" `VertexProperty.element()` and `Property.element()` data in GraphSON serialization.
+* GraphSON 2.0 is now the default serialization format in TinkerGraph and Gremlin Server.
 * Added `Vertex`, `Edge`, `VertexProperty`, and `Property` serializers to Gremlin-Python and exposed tests that use graph object arguments.
 * `Bytecode.getSourceInstructions()` and `Bytecode.getStepInstructions()` now returns `List<Instruction>` instead of `Iterable<Instruction>`.
 * Added various `TraversalStrategy` registrations with `GryoMapper`.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b28a2b09/docs/src/upgrade/release-3.3.x.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/upgrade/release-3.3.x.asciidoc b/docs/src/upgrade/release-3.3.x.asciidoc
index 9233d57..4e43077 100644
--- a/docs/src/upgrade/release-3.3.x.asciidoc
+++ b/docs/src/upgrade/release-3.3.x.asciidoc
@@ -32,6 +32,69 @@ Please see the link:https://github.com/apache/tinkerpop/blob/3.3.3/CHANGELOG.asc
 Upgrading for Users
 ~~~~~~~~~~~~~~~~~~~
 
+GraphSON 2.0
+^^^^^^^^^^^^
+
+Both TinkerGraph and Gremlin Server have been defaulted to work with GraphSON 2.0. For TinkerGraph this means that
+the following commands:
+
+[source,java]
+----
+Graph graph = TinkerFactory.createModern();
+graph.io(IoCore.graphson()).writeGraph("tinkerpop-modern.json");
+
+final Graph newGraph = TinkerGraph.open();
+newGraph.io(IoCore.graphson()).readGraph("tinkerpop-modern.json");
+----
+
+will write and read GraphSON 2.0 format rather than 1.0. To use 1.0 format simply set the `version()` on the
+appropriate builder methods:
+
+[source,java]
+----
+Graph graph = TinkerFactory.createModern();
+GraphSONMapper mapper = graph.io(IoCore.graphson()).mapper().version(GraphSONVersion.V1_0).create()
+try (OutputStream os = new FileOutputStream("tinkerpop-modern.json")) {
+    graph.io(IoCore.graphson()).writer().mapper(mapper).create().writeGraph(os, graph)
+}
+
+final Graph newGraph = TinkerGraph.open();
+try (InputStream stream = new FileInputStream("tinkerpop-modern.json")) {
+    newGraph.io(IoCore.graphson()).reader().mapper(mapper).vertexIdKey("name").create().readGraph(stream, newGraph);
+}
+----
+
+For Gremlin Server, this change means that the `application/json` mime type no longer returns GraphSON 1.0 without
+type embedding. Instead, Gremlin Server will return GraphSON 2.0 with partial types enabled (i.e. which is equivalent
+to `application/vnd.gremlin-v2.0+json`). The `serializers` section the sample Gremlin Server YAML files now typically
+look like this:
+
+[source,yaml]
+----
+serializers:
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}             # application/vnd.gremlin-v1.0+gryo
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph }}         # application/vnd.gremlin-v1.0+gryo-lite
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}         # application/vnd.gremlin-v1.0+gryo-stringd
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistry] }} # application/vnd.gremlin-v1.0+json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { useMapperFromGraph: graph  }} # application/vnd.gremlin-v2.0+json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, config: { useMapperFromGraph: graph }}         # application/json
+----
+
+It is possible to bring back the original configuration for `application/json` by changing the last entry as follows:
+
+[source,yaml]
+----
+serializers:
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}             # application/vnd.gremlin-v1.0+gryo
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph }}         # application/vnd.gremlin-v1.0+gryo-lite
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}         # application/vnd.gremlin-v1.0+gryo-stringd
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistry] }} # application/vnd.gremlin-v1.0+json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { useMapperFromGraph: graph  }} # application/vnd.gremlin-v2.0+json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}         # application/json
+----
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1414[TINKERPOP-1414]
+
 GraphTraversal Has-Methods Re-Organized
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
@@ -176,4 +239,4 @@ If the old `GryoSerializer` model is desired, then the properties file should si
 spark.serializer=org.apache.tinkerpop.gremlin.spark.structure.io.gryo.GryoSerializer
 ```
 
-See: link:https://issues.apache.org/jira/browse/TINKERPOP-1389
\ No newline at end of file
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1389

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b28a2b09/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONIo.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONIo.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONIo.java
index f56afb9..0c92e1c 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONIo.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONIo.java
@@ -101,7 +101,7 @@ public final class GraphSONIo implements Io<GraphSONReader.Builder, GraphSONWrit
      * Create a new builder using the default version of GraphSON.
      */
     public static Io.Builder<GraphSONIo> build() {
-        return build(GraphSONVersion.V1_0);
+        return build(GraphSONVersion.V2_0);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b28a2b09/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapper.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapper.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapper.java
index 7e46c98..f82ebb7 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapper.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONMapper.java
@@ -181,7 +181,7 @@ public class GraphSONMapper implements Mapper<ObjectMapper> {
         private boolean normalize = false;
         private boolean embedTypes = false;
         private List<IoRegistry> registries = new ArrayList<>();
-        private GraphSONVersion version = GraphSONVersion.V1_0;
+        private GraphSONVersion version = GraphSONVersion.V2_0;
         // GraphSON 2.0 should have types activated by default, otherwise use there's no point in using it instead of 1.0.
         private TypeInfo typeInfo = TypeInfo.PARTIAL_TYPES;
 
@@ -198,7 +198,7 @@ public class GraphSONMapper implements Mapper<ObjectMapper> {
         }
 
         /**
-         * Set the version of GraphSON to use. The default is {@link GraphSONVersion#V1_0}.
+         * Set the version of GraphSON to use. The default is {@link GraphSONVersion#V2_0}.
          */
         public Builder version(final GraphSONVersion version) {
             this.version = version;

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b28a2b09/gremlin-server/conf/gremlin-server-classic.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server-classic.yaml b/gremlin-server/conf/gremlin-server-classic.yaml
index ac78da0..d1cbbf3 100644
--- a/gremlin-server/conf/gremlin-server-classic.yaml
+++ b/gremlin-server/conf/gremlin-server-classic.yaml
@@ -28,12 +28,12 @@ scriptEngines: {
     staticImports: [java.lang.Math.PI],
     scripts: [scripts/generate-classic.groovy]}}
 serializers:
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}            # application/vnd.gremlin-v1.0+gryo
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/vnd.gremlin-v1.0+gryo-lite
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}        # application/vnd.gremlin-v1.0+gryo-stringd
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graph }} # application/vnd.gremlin-v1.0+json
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2d0] }} # application/vnd.gremlin-v2.0+json
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}             # application/vnd.gremlin-v1.0+gryo
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph }}         # application/vnd.gremlin-v1.0+gryo-lite
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}         # application/vnd.gremlin-v1.0+gryo-stringd
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistry] }} # application/vnd.gremlin-v1.0+json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { useMapperFromGraph: graph  }} # application/vnd.gremlin-v2.0+json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, config: { useMapperFromGraph: graph }}         # application/json
 metrics: {
   slf4jReporter: {enabled: true, interval: 180000}}
 strictTransactionManagement: false

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b28a2b09/gremlin-server/conf/gremlin-server-modern-py.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server-modern-py.yaml b/gremlin-server/conf/gremlin-server-modern-py.yaml
index e00eb1d..ff8228f 100644
--- a/gremlin-server/conf/gremlin-server-modern-py.yaml
+++ b/gremlin-server/conf/gremlin-server-modern-py.yaml
@@ -43,12 +43,12 @@ scriptEngines: {
   gremlin-python: {}
 }
 serializers:
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}            # application/vnd.gremlin-v1.0+gryo
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/vnd.gremlin-v1.0+gryo-lite
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}        # application/vnd.gremlin-v1.0+gryo-stringd
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graph }} # application/vnd.gremlin-v1.0+json
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2d0] }} # application/vnd.gremlin-v2.0+json
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}             # application/vnd.gremlin-v1.0+gryo
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph }}         # application/vnd.gremlin-v1.0+gryo-lite
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}         # application/vnd.gremlin-v1.0+gryo-stringd
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistry] }} # application/vnd.gremlin-v1.0+json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { useMapperFromGraph: graph  }} # application/vnd.gremlin-v2.0+json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, config: { useMapperFromGraph: graph }}         # application/json
 metrics: {
   slf4jReporter: {enabled: true, interval: 180000}}
 strictTransactionManagement: false

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b28a2b09/gremlin-server/conf/gremlin-server-modern-readonly.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server-modern-readonly.yaml b/gremlin-server/conf/gremlin-server-modern-readonly.yaml
index 379b358..18f7ca4 100644
--- a/gremlin-server/conf/gremlin-server-modern-readonly.yaml
+++ b/gremlin-server/conf/gremlin-server-modern-readonly.yaml
@@ -28,12 +28,12 @@ scriptEngines: {
     staticImports: [java.lang.Math.PI],
     scripts: [scripts/generate-modern-readonly.groovy]}}
 serializers:
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}            # application/vnd.gremlin-v1.0+gryo
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/vnd.gremlin-v1.0+gryo-lite
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}        # application/vnd.gremlin-v1.0+gryo-stringd
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graph }} # application/vnd.gremlin-v1.0+json
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2d0] }} # application/vnd.gremlin-v2.0+json
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}             # application/vnd.gremlin-v1.0+gryo
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph }}         # application/vnd.gremlin-v1.0+gryo-lite
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}         # application/vnd.gremlin-v1.0+gryo-stringd
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistry] }} # application/vnd.gremlin-v1.0+json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { useMapperFromGraph: graph  }} # application/vnd.gremlin-v2.0+json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, config: { useMapperFromGraph: graph }}         # application/json
 metrics: {
   slf4jReporter: {enabled: true, interval: 180000}}
 strictTransactionManagement: false

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b28a2b09/gremlin-server/conf/gremlin-server-modern.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server-modern.yaml b/gremlin-server/conf/gremlin-server-modern.yaml
index 4ac5587..b063868 100644
--- a/gremlin-server/conf/gremlin-server-modern.yaml
+++ b/gremlin-server/conf/gremlin-server-modern.yaml
@@ -28,12 +28,12 @@ scriptEngines: {
     staticImports: [java.lang.Math.PI],
     scripts: [scripts/generate-modern.groovy]}}
 serializers:
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}            # application/vnd.gremlin-v1.0+gryo
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/vnd.gremlin-v1.0+gryo-lite
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}        # application/vnd.gremlin-v1.0+gryo-stringd
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graph }} # application/vnd.gremlin-v1.0+json
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2d0] }} # application/vnd.gremlin-v2.0+json
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}             # application/vnd.gremlin-v1.0+gryo
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph }}         # application/vnd.gremlin-v1.0+gryo-lite
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}         # application/vnd.gremlin-v1.0+gryo-stringd
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistry] }} # application/vnd.gremlin-v1.0+json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { useMapperFromGraph: graph  }} # application/vnd.gremlin-v2.0+json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, config: { useMapperFromGraph: graph }}         # application/json
 metrics: {
   slf4jReporter: {enabled: true, interval: 180000}}
 strictTransactionManagement: false

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b28a2b09/gremlin-server/conf/gremlin-server-neo4j.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server-neo4j.yaml b/gremlin-server/conf/gremlin-server-neo4j.yaml
index 8d68c7f..6aac0f2 100644
--- a/gremlin-server/conf/gremlin-server-neo4j.yaml
+++ b/gremlin-server/conf/gremlin-server-neo4j.yaml
@@ -39,12 +39,12 @@ scriptEngines: {
     staticImports: [java.lang.Math.PI],
     scripts: [scripts/empty-sample.groovy]}}
 serializers:
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}            # application/vnd.gremlin-v1.0+gryo
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/vnd.gremlin-v1.0+gryo-lite
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}        # application/vnd.gremlin-v1.0+gryo-stringd
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graph }} # application/vnd.gremlin-v1.0+json
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2d0] }} # application/vnd.gremlin-v2.0+json
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}             # application/vnd.gremlin-v1.0+gryo
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph }}         # application/vnd.gremlin-v1.0+gryo-lite
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}         # application/vnd.gremlin-v1.0+gryo-stringd
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistry] }} # application/vnd.gremlin-v1.0+json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { useMapperFromGraph: graph  }} # application/vnd.gremlin-v2.0+json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, config: { useMapperFromGraph: graph }}         # application/json
 processors:
   - { className: org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { sessionTimeout: 28800000 }}
   - { className: org.apache.tinkerpop.gremlin.server.op.traversal.TraversalOpProcessor, config: { cacheExpirationTime: 600000, cacheMaxSize: 1000 }}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b28a2b09/gremlin-server/conf/gremlin-server-rest-modern.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server-rest-modern.yaml b/gremlin-server/conf/gremlin-server-rest-modern.yaml
index 8c41ee7..1fa23f9 100644
--- a/gremlin-server/conf/gremlin-server-rest-modern.yaml
+++ b/gremlin-server/conf/gremlin-server-rest-modern.yaml
@@ -29,9 +29,9 @@ scriptEngines: {
     staticImports: [java.lang.Math.PI],
     scripts: [scripts/generate-modern.groovy]}}
 serializers:
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graph }}  # application/vnd.gremlin-v1.0+json
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2d0] }} # application/vnd.gremlin-v2.0+json
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}         # application/json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistry] }} # application/vnd.gremlin-v1.0+json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { useMapperFromGraph: graph  }} # application/vnd.gremlin-v2.0+json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, config: { useMapperFromGraph: graph }}         # application/json
 metrics: {
   slf4jReporter: {enabled: true, interval: 180000}}
 strictTransactionManagement: false

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b28a2b09/gremlin-server/conf/gremlin-server-rest-secure.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server-rest-secure.yaml b/gremlin-server/conf/gremlin-server-rest-secure.yaml
index 646a1e5..8ed8f41 100644
--- a/gremlin-server/conf/gremlin-server-rest-secure.yaml
+++ b/gremlin-server/conf/gremlin-server-rest-secure.yaml
@@ -42,9 +42,9 @@ scriptEngines: {
               "org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.TimedInterruptCustomizerProvider":[10000],
               "org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.CompileStaticCustomizerProvider":["org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.SimpleSandboxExtension"]}}}}
 serializers:
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graph }} # application/vnd.gremlin-v1.0+json
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2d0] }} # application/vnd.gremlin-v2.0+json
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistry] }} # application/vnd.gremlin-v1.0+json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { useMapperFromGraph: graph  }} # application/vnd.gremlin-v2.0+json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, config: { useMapperFromGraph: graph }}         # application/json
 processors:
   - { className: org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { sessionTimeout: 28800000 }}
   - { className: org.apache.tinkerpop.gremlin.server.op.traversal.TraversalOpProcessor, config: { cacheExpirationTime: 600000, cacheMaxSize: 1000 }}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b28a2b09/gremlin-server/conf/gremlin-server-secure.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server-secure.yaml b/gremlin-server/conf/gremlin-server-secure.yaml
index 5b5e91e..14f7034 100644
--- a/gremlin-server/conf/gremlin-server-secure.yaml
+++ b/gremlin-server/conf/gremlin-server-secure.yaml
@@ -42,12 +42,12 @@ scriptEngines: {
               "org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.TimedInterruptCustomizerProvider":[10000],
               "org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.CompileStaticCustomizerProvider":["org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.SimpleSandboxExtension"]}}}}
 serializers:
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}            # application/vnd.gremlin-v1.0+gryo
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/vnd.gremlin-v1.0+gryo-lite
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}        # application/vnd.gremlin-v1.0+gryo-stringd
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graph }} # application/vnd.gremlin-v1.0+json
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2d0] }} # application/vnd.gremlin-v2.0+json
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}             # application/vnd.gremlin-v1.0+gryo
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph }}         # application/vnd.gremlin-v1.0+gryo-lite
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}         # application/vnd.gremlin-v1.0+gryo-stringd
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistry] }} # application/vnd.gremlin-v1.0+json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { useMapperFromGraph: graph  }} # application/vnd.gremlin-v2.0+json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, config: { useMapperFromGraph: graph }}         # application/json
 processors:
   - { className: org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { sessionTimeout: 28800000 }}
   - { className: org.apache.tinkerpop.gremlin.server.op.traversal.TraversalOpProcessor, config: { cacheExpirationTime: 600000, cacheMaxSize: 1000 }}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b28a2b09/gremlin-server/conf/gremlin-server-spark.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server-spark.yaml b/gremlin-server/conf/gremlin-server-spark.yaml
index d79185f..3c198f5 100644
--- a/gremlin-server/conf/gremlin-server-spark.yaml
+++ b/gremlin-server/conf/gremlin-server-spark.yaml
@@ -52,12 +52,12 @@ scriptEngines: {
     staticImports: [java.lang.Math.PI],
     scripts: [scripts/spark.groovy]}}
 serializers:
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}            # application/vnd.gremlin-v1.0+gryo
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/vnd.gremlin-v1.0+gryo-lite
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}        # application/vnd.gremlin-v1.0+gryo-stringd
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graph }} # application/vnd.gremlin-v1.0+json
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2d0] }} # application/vnd.gremlin-v2.0+json
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}             # application/vnd.gremlin-v1.0+gryo
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph }}         # application/vnd.gremlin-v1.0+gryo-lite
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}         # application/vnd.gremlin-v1.0+gryo-stringd
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistry] }} # application/vnd.gremlin-v1.0+json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { useMapperFromGraph: graph  }} # application/vnd.gremlin-v2.0+json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, config: { useMapperFromGraph: graph }}         # application/json
 processors:
   - { className: org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { sessionTimeout: 28800000 }}
   - { className: org.apache.tinkerpop.gremlin.server.op.traversal.TraversalOpProcessor, config: { cacheExpirationTime: 600000, cacheMaxSize: 1000 }}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b28a2b09/gremlin-server/conf/gremlin-server.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server.yaml b/gremlin-server/conf/gremlin-server.yaml
index 8cf2947..d4e2849 100644
--- a/gremlin-server/conf/gremlin-server.yaml
+++ b/gremlin-server/conf/gremlin-server.yaml
@@ -29,12 +29,12 @@ scriptEngines: {
     staticImports: [java.lang.Math.PI],
     scripts: [scripts/empty-sample.groovy]}}
 serializers:
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}            # application/vnd.gremlin-v1.0+gryo
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/vnd.gremlin-v1.0+gryo-lite
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}        # application/vnd.gremlin-v1.0+gryo-stringd
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graph }} # application/vnd.gremlin-v1.0+json
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2d0] }} # application/vnd.gremlin-v2.0+json
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}        # application/json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph }}             # application/vnd.gremlin-v1.0+gryo
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph }}         # application/vnd.gremlin-v1.0+gryo-lite
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}         # application/vnd.gremlin-v1.0+gryo-stringd
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistry] }} # application/vnd.gremlin-v1.0+json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { useMapperFromGraph: graph  }} # application/vnd.gremlin-v2.0+json
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, config: { useMapperFromGraph: graph }}         # application/json
 processors:
   - { className: org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { sessionTimeout: 28800000 }}
   - { className: org.apache.tinkerpop.gremlin.server.op.traversal.TraversalOpProcessor, config: { cacheExpirationTime: 600000, cacheMaxSize: 1000 }}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b28a2b09/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/AbstractChannelizer.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/AbstractChannelizer.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/AbstractChannelizer.java
index 57c6994..59238fc 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/AbstractChannelizer.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/AbstractChannelizer.java
@@ -24,9 +24,8 @@ import io.netty.handler.ssl.SslContextBuilder;
 import io.netty.handler.ssl.SslProvider;
 import io.netty.handler.ssl.util.SelfSignedCertificate;
 import org.apache.tinkerpop.gremlin.driver.MessageSerializer;
-import org.apache.tinkerpop.gremlin.driver.ser.AbstractGraphSONMessageSerializerV1d0;
 import org.apache.tinkerpop.gremlin.driver.ser.AbstractGryoMessageSerializerV1d0;
-import org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0;
+import org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0;
 import org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0;
 import org.apache.tinkerpop.gremlin.groovy.engine.GremlinExecutor;
 import org.apache.tinkerpop.gremlin.server.auth.Authenticator;
@@ -72,7 +71,7 @@ public abstract class AbstractChannelizer extends ChannelInitializer<SocketChann
             new Settings.SerializerSettings(GryoMessageSerializerV1d0.class.getName(), new HashMap<String,Object>(){{
                 put(AbstractGryoMessageSerializerV1d0.TOKEN_SERIALIZE_RESULT_TO_STRING, true);
             }}),
-            new Settings.SerializerSettings(GraphSONMessageSerializerV1d0.class.getName(), Collections.emptyMap())
+            new Settings.SerializerSettings(GraphSONMessageSerializerV2d0.class.getName(), Collections.emptyMap())
     );
 
     protected Settings settings;

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b28a2b09/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerAuthIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerAuthIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerAuthIntegrateTest.java
index 1c5188d..5d0f82e 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerAuthIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerAuthIntegrateTest.java
@@ -173,9 +173,9 @@ public class GremlinServerAuthIntegrateTest extends AbstractGremlinServerIntegra
         final Client client = cluster.connect();
 
         try {
-            assertEquals(2, client.submit("1+1").all().get().get(0).getInt());
-            assertEquals(3, client.submit("1+2").all().get().get(0).getInt());
-            assertEquals(4, client.submit("1+3").all().get().get(0).getInt());
+            assertEquals(3, client.submit("1+2").all().get().get(0).get(Map.class).get("@value"));
+            assertEquals(2, client.submit("1+1").all().get().get(0).get(Map.class).get("@value"));
+            assertEquals(4, client.submit("1+3").all().get().get(0).get(Map.class).get("@value"));
         } finally {
             cluster.close();
         }
@@ -203,12 +203,12 @@ public class GremlinServerAuthIntegrateTest extends AbstractGremlinServerIntegra
         final Client client = cluster.connect(name.getMethodName());
 
         try {
-            Map vertex = (Map) client.submit("v=graph.addVertex(\"name\", \"stephen\")").all().get().get(0).getObject();
-            Map<String, List<Map>> properties = (Map) vertex.get("properties");
+            final Map vertex = (Map) client.submit("v=graph.addVertex(\"name\", \"stephen\")").all().get().get(0).getObject();
+            final Map<String, List<Map>> properties = (Map) ((Map) vertex.get("@value")).get("properties");
             assertEquals("stephen", properties.get("name").get(0).get("value"));
 
             final Map vpName = (Map)client.submit("v.property('name')").all().get().get(0).getObject();
-            assertEquals("stephen", vpName.get("value"));
+            assertEquals("stephen", ((Map) vpName.get("@value")).get("value"));
         } finally {
             cluster.close();
         }
@@ -221,8 +221,8 @@ public class GremlinServerAuthIntegrateTest extends AbstractGremlinServerIntegra
         final Client client = cluster.connect(name.getMethodName());
 
         try {
-            Map vertex = (Map) client.submit("v=graph.addVertex('name', 'stephen')").all().get().get(0).getObject();
-            Map<String, List<Map>> properties = (Map) vertex.get("properties");
+            final Map vertex = (Map) client.submit("v=graph.addVertex('name', 'stephen')").all().get().get(0).getObject();
+            final Map<String, List<Map>> properties = (Map) vertex.get("properties");
             assertEquals("stephen", properties.get("name").get(0).get("value"));
 
             final Map vpName = (Map)client.submit("v.property('name')").all().get().get(0).getObject();

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b28a2b09/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerAuthOldIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerAuthOldIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerAuthOldIntegrateTest.java
index f0e2104..c8312ae 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerAuthOldIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerAuthOldIntegrateTest.java
@@ -179,9 +179,9 @@ public class GremlinServerAuthOldIntegrateTest extends AbstractGremlinServerInte
         final Client client = cluster.connect();
 
         try {
-            assertEquals(2, client.submit("1+1").all().get().get(0).getInt());
-            assertEquals(3, client.submit("1+2").all().get().get(0).getInt());
-            assertEquals(4, client.submit("1+3").all().get().get(0).getInt());
+            assertEquals(3, client.submit("1+2").all().get().get(0).get(Map.class).get("@value"));
+            assertEquals(2, client.submit("1+1").all().get().get(0).get(Map.class).get("@value"));
+            assertEquals(4, client.submit("1+3").all().get().get(0).get(Map.class).get("@value"));
         } finally {
             cluster.close();
         }
@@ -209,12 +209,12 @@ public class GremlinServerAuthOldIntegrateTest extends AbstractGremlinServerInte
         final Client client = cluster.connect(name.getMethodName());
 
         try {
-            Map vertex = (Map) client.submit("v=graph.addVertex(\"name\", \"stephen\")").all().get().get(0).getObject();
-            Map<String, List<Map>> properties = (Map) vertex.get("properties");
+            final Map vertex = (Map) client.submit("v=graph.addVertex(\"name\", \"stephen\")").all().get().get(0).getObject();
+            final Map<String, List<Map>> properties = (Map) ((Map) vertex.get("@value")).get("properties");
             assertEquals("stephen", properties.get("name").get(0).get("value"));
-            
+
             final Map vpName = (Map)client.submit("v.property('name')").all().get().get(0).getObject();
-            assertEquals("stephen", vpName.get("value"));
+            assertEquals("stephen", ((Map) vpName.get("@value")).get("value"));
         } finally {
             cluster.close();
         }
@@ -227,10 +227,10 @@ public class GremlinServerAuthOldIntegrateTest extends AbstractGremlinServerInte
         final Client client = cluster.connect(name.getMethodName());
 
         try {
-            Map vertex = (Map) client.submit("v=graph.addVertex('name', 'stephen')").all().get().get(0).getObject();
-            Map<String, List<Map>> properties = (Map) vertex.get("properties");
+            final Map vertex = (Map) client.submit("v=graph.addVertex('name', 'stephen')").all().get().get(0).getObject();
+            final Map<String, List<Map>> properties = (Map) vertex.get("properties");
             assertEquals("stephen", properties.get("name").get(0).get("value"));
-            
+
             final Map vpName = (Map)client.submit("v.property('name')").all().get().get(0).getObject();
             assertEquals("stephen", vpName.get("value"));
         } finally {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b28a2b09/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java
index 78109e6..b2a1568 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java
@@ -18,6 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.server;
 
+import org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0;
 import org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0;
 import org.apache.tinkerpop.gremlin.server.auth.SimpleAuthenticator;
 import org.apache.tinkerpop.gremlin.server.channel.HttpChannelizer;
@@ -77,10 +78,10 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
                 deleteDirectory(new File("/tmp/neo4j"));
                 settings.graphs.put("graph", "conf/neo4j-empty.properties");
                 break;
-            case "should200OnPOSTWithGraphSON2d0AcceptHeaderDefaultResultToJson":
+            case "should200OnPOSTWithGraphSON1d0AcceptHeaderDefaultResultToJson":
                 settings.serializers.clear();
                 final Settings.SerializerSettings serializerSettings = new Settings.SerializerSettings();
-                serializerSettings.className = GraphSONMessageSerializerV2d0.class.getName();
+                serializerSettings.className = GraphSONMessageSerializerV1d0.class.getName();
                 settings.serializers.add(serializerSettings);
                 break;
             case "should401OnGETWithNoAuthorizationHeader":
@@ -297,7 +298,7 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
             assertEquals("application/json", response.getEntity().getContentType().getValue());
             final String json = EntityUtils.toString(response.getEntity());
             final JsonNode node = mapper.readTree(json);
-            assertEquals(20, node.get("result").get("data").get(0).intValue());
+            assertEquals(20, node.get("result").get("data").get(0).get("@value").intValue());
         }
     }
 
@@ -365,7 +366,7 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
             assertEquals("application/json", response.getEntity().getContentType().getValue());
             final String json = EntityUtils.toString(response.getEntity());
             final JsonNode node = mapper.readTree(json);
-            assertEquals("stephen", node.get("result").get("data").get(0).get("properties").get("name").get(0).get(GraphSONTokens.VALUE).asText());
+            assertEquals("stephen", node.get("result").get("data").get(0).get("@value").get("properties").get("name").get(0).get(GraphSONTokens.VALUE).asText());
         }
     }
 
@@ -379,7 +380,7 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
             assertEquals("application/json", response.getEntity().getContentType().getValue());
             final String json = EntityUtils.toString(response.getEntity());
             final JsonNode node = mapper.readTree(json);
-            assertEquals(20, node.get("result").get("data").get(0).intValue());
+            assertEquals(20, node.get("result").get("data").get(0).get("@value").intValue());
         }
     }
 
@@ -449,7 +450,7 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
             assertEquals("application/json", response.getEntity().getContentType().getValue());
             final String json = EntityUtils.toString(response.getEntity());
             final JsonNode node = mapper.readTree(json);
-            assertEquals(Instant.MAX, Instant.parse(node.get("result").get("data").get(0).asText()));
+            assertEquals(Instant.MAX, Instant.parse(node.get("result").get("data").get(0).get("@value").asText()));
         }
     }
 
@@ -467,7 +468,7 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
             assertEquals("application/json", response.getEntity().getContentType().getValue());
             final String json = EntityUtils.toString(response.getEntity());
             final JsonNode node = mapper.readTree(json);
-            assertEquals(1, node.get("result").get("data").get(0).intValue());
+            assertEquals(1, node.get("result").get("data").get(0).get("@value").intValue());
         }
 
         final HttpGet httpget = new HttpGet(TestClientFactory.createURLString("?gremlin=g.V().count()"));
@@ -481,7 +482,7 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
                 assertEquals("application/json", response.getEntity().getContentType().getValue());
                 final String json = EntityUtils.toString(response.getEntity());
                 final JsonNode node = mapper.readTree(json);
-                assertEquals(1, node.get("result").get("data").get(0).intValue());
+                assertEquals(1, node.get("result").get("data").get(0).get("@value").intValue());
             }
         }
     }
@@ -599,7 +600,7 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
             assertEquals("application/json", response.getEntity().getContentType().getValue());
             final String json = EntityUtils.toString(response.getEntity());
             final JsonNode node = mapper.readTree(json);
-            assertEquals(20, node.get("result").get("data").get(0).intValue());
+            assertEquals(20, node.get("result").get("data").get(0).get("@value").intValue());
         }
     }
 
@@ -615,7 +616,7 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
             assertEquals("application/json", response.getEntity().getContentType().getValue());
             final String json = EntityUtils.toString(response.getEntity());
             final JsonNode node = mapper.readTree(json);
-            assertEquals(10, node.get("result").get("data").get(0).intValue());
+            assertEquals(10, node.get("result").get("data").get(0).get("@value").intValue());
         }
     }
 
@@ -631,7 +632,7 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
             assertEquals("application/json", response.getEntity().getContentType().getValue());
             final String json = EntityUtils.toString(response.getEntity());
             final JsonNode node = mapper.readTree(json);
-            assertEquals(10.5d, node.get("result").get("data").get(0).doubleValue(), 0.0001);
+            assertEquals(10.5d, node.get("result").get("data").get(0).get("@value").doubleValue(), 0.0001);
         }
     }
 
@@ -696,9 +697,9 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
             final String json = EntityUtils.toString(response.getEntity());
             final JsonNode node = mapper.readTree(json);
             assertEquals(true, node.get("result").get("data").isArray());
-            assertEquals(1, node.get("result").get("data").get(0).intValue());
-            assertEquals(2, node.get("result").get("data").get(1).intValue());
-            assertEquals(3, node.get("result").get("data").get(2).intValue());
+            assertEquals(1, node.get("result").get("data").get(0).get("@value").intValue());
+            assertEquals(2, node.get("result").get("data").get(1).get("@value").intValue());
+            assertEquals(3, node.get("result").get("data").get(2).get("@value").intValue());
         }
     }
 
@@ -715,7 +716,7 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
             final String json = EntityUtils.toString(response.getEntity());
             final JsonNode node = mapper.readTree(json);
             assertEquals(true, node.get("result").get("data").get(0).isObject());
-            assertEquals(1, node.get("result").get("data").get(0).get("y").asInt());
+            assertEquals(1, node.get("result").get("data").get(0).get("y").get("@value").asInt());
         }
     }
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b28a2b09/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
index 1743e89..96cc132 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
@@ -675,7 +675,7 @@ public class GremlinServerIntegrateTest extends AbstractGremlinServerIntegration
 
     @Test
     public void shouldReceiveFailureOnBadGraphSONSerialization() throws Exception {
-        final Cluster cluster = TestClientFactory.build().serializer(Serializers.GRAPHSON_V1D0).create();
+        final Cluster cluster = TestClientFactory.build().serializer(Serializers.GRAPHSON_V2D0).create();
         final Client client = cluster.connect();
 
         try {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b28a2b09/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml
index a25c6b1..7d23fb9 100644
--- a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml
+++ b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml
@@ -35,9 +35,9 @@ serializers:
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph, custom: [groovy.json.JsonBuilder;org.apache.tinkerpop.gremlin.driver.ser.JsonBuilderGryoSerializer]}}
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph, custom: [groovy.json.JsonBuilder;org.apache.tinkerpop.gremlin.driver.ser.JsonBuilderGryoSerializer]}}
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true}}
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graph }}
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2d0] }}
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistry] }}
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { useMapperFromGraph: graph  }}
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, config: { useMapperFromGraph: graph }}
 processors:
   - { className: org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { sessionTimeout: 28800000 }}
 metrics: {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b28a2b09/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
index d0f7b32..a467111 100644
--- a/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
+++ b/gremlin-server/src/test/resources/org/apache/tinkerpop/gremlin/server/gremlin-server-integration.yaml
@@ -31,9 +31,9 @@ serializers:
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { useMapperFromGraph: graph, custom: [groovy.json.JsonBuilder;org.apache.tinkerpop.gremlin.driver.ser.JsonBuilderGryoSerializer]}}
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { useMapperFromGraph: graph, custom: [groovy.json.JsonBuilder;org.apache.tinkerpop.gremlin.driver.ser.JsonBuilderGryoSerializer]}}
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true}}
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { useMapperFromGraph: graph }}
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2d0] }}
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0, config: { useMapperFromGraph: graph }}
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistry] }}
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { useMapperFromGraph: graph  }}
+  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, config: { useMapperFromGraph: graph }}
 processors:
   - { className: org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { sessionTimeout: 28800000 }}
 metrics: {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b28a2b09/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/SerializationTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/SerializationTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/SerializationTest.java
index 4dacf48..a112777 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/SerializationTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/structure/SerializationTest.java
@@ -21,9 +21,11 @@ package org.apache.tinkerpop.gremlin.structure;
 import org.apache.tinkerpop.gremlin.AbstractGremlinTest;
 import org.apache.tinkerpop.gremlin.LoadGraphWith;
 import org.apache.tinkerpop.gremlin.process.traversal.Path;
+import org.apache.tinkerpop.gremlin.process.traversal.util.Metrics;
 import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMetrics;
 import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONIo;
 import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONTokens;
+import org.apache.tinkerpop.gremlin.structure.io.graphson.GraphSONVersion;
 import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoIo;
 import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoReader;
 import org.apache.tinkerpop.gremlin.structure.io.gryo.GryoWriter;
@@ -45,10 +47,12 @@ import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.concurrent.TimeUnit;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree;
 import static org.hamcrest.CoreMatchers.instanceOf;
 
+import static org.hamcrest.core.Is.is;
 import static org.junit.Assert.*;
 
 /**
@@ -245,7 +249,7 @@ public class SerializationTest {
             assertEquals("The objects differ", after, before);
         }
     }
-    
+
     public static class GraphSONTest extends AbstractGremlinTest {
         private final TypeReference<HashMap<String, Object>> mapTypeReference = new TypeReference<HashMap<String, Object>>() {
         };
@@ -253,7 +257,7 @@ public class SerializationTest {
         @Test
         @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
         public void shouldSerializeVertex() throws Exception {
-            final ObjectMapper mapper = graph.io(GraphSONIo.build()).mapper().create().createMapper();
+            final ObjectMapper mapper = graph.io(GraphSONIo.build()).mapper().version(GraphSONVersion.V1_0).create().createMapper();
             final Vertex v = graph.vertices(convertToVertexId("marko")).next();
             final String json = mapper.writeValueAsString(v);
             final Map<String, Object> m = mapper.readValue(json, mapTypeReference);
@@ -272,7 +276,7 @@ public class SerializationTest {
         @Test
         @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
         public void shouldSerializeEdge() throws Exception {
-            final ObjectMapper mapper = graph.io(GraphSONIo.build()).mapper().create().createMapper();
+            final ObjectMapper mapper = graph.io(GraphSONIo.build()).mapper().version(GraphSONVersion.V1_0).create().createMapper();
             final Edge e = g.E(convertToEdgeId("marko", "knows", "vadas")).next();
             final String json = mapper.writeValueAsString(e);
             final Map<String, Object> m = mapper.readValue(json, mapTypeReference);
@@ -286,7 +290,7 @@ public class SerializationTest {
         @Test
         @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
         public void shouldSerializeProperty() throws Exception {
-            final ObjectMapper mapper = graph.io(GraphSONIo.build()).mapper().create().createMapper();
+            final ObjectMapper mapper = graph.io(GraphSONIo.build()).mapper().version(GraphSONVersion.V1_0).create().createMapper();
             final Property p = g.E(convertToEdgeId("marko", "knows", "vadas")).next().property("weight");
             final String json = mapper.writeValueAsString(p);
             final Map<String, Object> m = mapper.readValue(json, mapTypeReference);
@@ -298,7 +302,7 @@ public class SerializationTest {
         @Test
         @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
         public void shouldSerializeVertexProperty() throws Exception {
-            final ObjectMapper mapper = graph.io(GraphSONIo.build()).mapper().create().createMapper();
+            final ObjectMapper mapper = graph.io(GraphSONIo.build()).mapper().version(GraphSONVersion.V1_0).create().createMapper();
             final VertexProperty vp = graph.vertices(convertToVertexId("marko")).next().property("name");
             final String json = mapper.writeValueAsString(vp);
             final Map<String, Object> m = mapper.readValue(json, mapTypeReference);
@@ -311,7 +315,7 @@ public class SerializationTest {
         @Test
         @LoadGraphWith(LoadGraphWith.GraphData.CREW)
         public void shouldSerializeVertexPropertyWithProperties() throws Exception {
-            final ObjectMapper mapper = graph.io(GraphSONIo.build()).mapper().create().createMapper();
+            final ObjectMapper mapper = graph.io(GraphSONIo.build()).mapper().version(GraphSONVersion.V1_0).create().createMapper();
             final VertexProperty vp = IteratorUtils.filter(graph.vertices(convertToVertexId("marko")).next().properties("location"), p -> p.value().equals("brussels")).next();
             final String json = mapper.writeValueAsString(vp);
             final Map<String, Object> m = mapper.readValue(json, mapTypeReference);
@@ -326,7 +330,7 @@ public class SerializationTest {
         @Test
         @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
         public void shouldSerializePath() throws Exception {
-            final ObjectMapper mapper = graph.io(GraphSONIo.build()).mapper().create().createMapper();
+            final ObjectMapper mapper = graph.io(GraphSONIo.build()).mapper().version(GraphSONVersion.V1_0).create().createMapper();
             final Path p = g.V(convertToVertexId("marko")).as("a").outE().as("b").inV().as("c").path()
                     .filter(t -> ((Vertex) t.get().objects().get(2)).value("name").equals("lop")).next();
             final String json = mapper.writeValueAsString(p);
@@ -354,8 +358,8 @@ public class SerializationTest {
         @Test
         @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
         public void shouldSerializeTraversalMetrics() throws Exception {
-            final ObjectMapper mapper = graph.io(GraphSONIo.build()).mapper().create().createMapper();
-            final TraversalMetrics tm = (TraversalMetrics) g.V().both().profile().next();
+            final ObjectMapper mapper = graph.io(GraphSONIo.build()).mapper().version(GraphSONVersion.V1_0).create().createMapper();
+            final TraversalMetrics tm = g.V().both().profile().next();
             final String json = mapper.writeValueAsString(tm);
             final Map<String, Object> m = mapper.readValue(json, mapTypeReference);
 
@@ -375,7 +379,7 @@ public class SerializationTest {
         @Test
         @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
         public void shouldSerializeTree() throws Exception {
-            final ObjectMapper mapper = graph.io(GraphSONIo.build()).mapper().create().createMapper();
+            final ObjectMapper mapper = graph.io(GraphSONIo.build()).mapper().version(GraphSONVersion.V1_0).create().createMapper();
             final Tree t = g.V(convertToVertexId("marko")).out().properties("name").tree().next();
             final String json = mapper.writeValueAsString(t);
             
@@ -426,4 +430,209 @@ public class SerializationTest {
             assertEquals(entry.getKey().toString(), branch2Prop.get(GraphSONTokens.KEY).get(GraphSONTokens.ID).toString());
         }
     }
+
+    public static class GraphSONV2d0Test extends AbstractGremlinTest {
+        private final TypeReference<HashMap<String, Object>> mapTypeReference = new TypeReference<HashMap<String, Object>>() {
+        };
+
+        @Test
+        @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
+        public void shouldSerializeVertex() throws Exception {
+            final ObjectMapper mapper = graph.io(GraphSONIo.build()).mapper().version(GraphSONVersion.V2_0).create().createMapper();
+            final Vertex v = graph.vertices(convertToVertexId("marko")).next();
+            final String json = mapper.writeValueAsString(v);
+            final Vertex detached = mapper.readValue(json, Vertex.class);
+
+            assertNotNull(detached);
+            assertEquals(v.label(), detached.label());
+            assertEquals(v.id(), detached.id());
+            assertEquals(v.value("name").toString(), detached.value("name"));
+            assertEquals((Integer) v.value("age"), detached.value("age"));
+        }
+
+        @Test
+        @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
+        public void shouldSerializeEdge() throws Exception {
+            final ObjectMapper mapper = graph.io(GraphSONIo.build()).mapper().version(GraphSONVersion.V2_0).create().createMapper();
+            final Edge e = g.E(convertToEdgeId("marko", "knows", "vadas")).next();
+            final String json = mapper.writeValueAsString(e);
+            final Edge detached = mapper.readValue(json, Edge.class);
+
+            assertNotNull(detached);
+            assertEquals(e.label(), detached.label());
+            assertEquals(e.id(), detached.id());
+            assertEquals((Double) e.value("weight"), detached.value("weight"));
+        }
+
+        @Test
+        @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
+        public void shouldSerializeProperty() throws Exception {
+            final ObjectMapper mapper = graph.io(GraphSONIo.build()).mapper().version(GraphSONVersion.V2_0).create().createMapper();
+            final Property p = g.E(convertToEdgeId("marko", "knows", "vadas")).next().property("weight");
+            final String json = mapper.writeValueAsString(p);
+            final Property detached = mapper.readValue(json, Property.class);
+
+            assertNotNull(detached);
+            assertEquals(p.key(), detached.key());
+            assertEquals(p.value(), detached.value());
+        }
+
+        @Test
+        @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
+        public void shouldSerializeVertexProperty() throws Exception {
+            final ObjectMapper mapper = graph.io(GraphSONIo.build()).mapper().version(GraphSONVersion.V2_0).create().createMapper();
+            final VertexProperty vp = graph.vertices(convertToVertexId("marko")).next().property("name");
+            final String json = mapper.writeValueAsString(vp);
+            final VertexProperty detached = mapper.readValue(json, VertexProperty.class);
+
+            assertNotNull(detached);
+            assertEquals(vp.label(), detached.label());
+            assertEquals(vp.id(), detached.id());
+            assertEquals(vp.value(), detached.value());
+        }
+
+        @Test
+        @LoadGraphWith(LoadGraphWith.GraphData.CREW)
+        public void shouldSerializeVertexPropertyWithProperties() throws Exception {
+            final ObjectMapper mapper = graph.io(GraphSONIo.build()).mapper().version(GraphSONVersion.V2_0).create().createMapper();
+            final VertexProperty vp = IteratorUtils.filter(graph.vertices(convertToVertexId("marko")).next().properties("location"), p -> p.value().equals("brussels")).next();
+            final String json = mapper.writeValueAsString(vp);
+            final VertexProperty<?> detached = mapper.readValue(json, VertexProperty.class);
+
+            assertNotNull(detached);
+            assertEquals(vp.label(), detached.label());
+            assertEquals(vp.id(), detached.id());
+            assertEquals(vp.value(), detached.value());
+            assertEquals(vp.values("startTime").next(), detached.values("startTime").next());
+            assertEquals(((Property) vp.properties("startTime").next()).key(), ((Property) detached.properties("startTime").next()).key());
+            assertEquals(vp.values("endTime").next(), detached.values("endTime").next());
+            assertEquals(((Property) vp.properties("endTime").next()).key(), ((Property) detached.properties("endTime").next()).key());
+        }
+
+        @Test
+        @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
+        public void shouldSerializePath() throws Exception {
+            final ObjectMapper mapper = graph.io(GraphSONIo.build()).mapper().version(GraphSONVersion.V2_0).create().createMapper();
+            final Path p = g.V(convertToVertexId("marko")).as("a").outE().as("b").inV().as("c").path()
+                    .filter(t -> ((Vertex) t.get().objects().get(2)).value("name").equals("lop")).next();
+            final String json = mapper.writeValueAsString(p);
+            final Path detached = mapper.readValue(json, Path.class);
+
+            assertNotNull(detached);
+            assertEquals(p.labels().size(), detached.labels().size());
+            assertEquals(p.labels().get(0).size(), detached.labels().get(0).size());
+            assertEquals(p.labels().get(1).size(), detached.labels().get(1).size());
+            assertEquals(p.labels().get(2).size(), detached.labels().get(2).size());
+            assertTrue(p.labels().stream().flatMap(Collection::stream).allMatch(detached::hasLabel));
+
+            final Vertex vOut = p.get("a");
+            final Vertex detachedVOut = detached.get("a");
+            assertEquals(vOut.label(), detachedVOut.label());
+            assertEquals(vOut.id(), detachedVOut.id());
+
+            // TODO: dunno GraphSON seems to return properties - will make this more consistent here
+            // this is a SimpleTraverser so no properties are present in detachment
+            //assertFalse(detachedVOut.properties().hasNext());
+
+            final Edge e = p.get("b");
+            final Edge detachedE = detached.get("b");
+            assertEquals(e.label(), detachedE.label());
+            assertEquals(e.id(), detachedE.id());
+
+            // TODO: dunno GraphSON seems to return properties - will make this more consistent here
+            // this is a SimpleTraverser so no properties are present in detachment
+            //assertFalse(detachedE.properties().hasNext());
+
+            final Vertex vIn = p.get("c");
+            final Vertex detachedVIn = detached.get("c");
+            assertEquals(vIn.label(), detachedVIn.label());
+            assertEquals(vIn.id(), detachedVIn.id());
+
+            // TODO: dunno GraphSON seems to return properties - will make this more consistent here
+            // this is a SimpleTraverser so no properties are present in detachment
+            //assertFalse(detachedVIn.properties().hasNext());
+        }
+
+        @Test
+        @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
+        public void shouldSerializeTraversalMetrics() throws Exception {
+            final ObjectMapper mapper = graph.io(GraphSONIo.build()).mapper().version(GraphSONVersion.V2_0).create().createMapper();
+            final TraversalMetrics before = g.V().both().profile().next();
+            final String json = mapper.writeValueAsString(before);
+            final TraversalMetrics after = mapper.readValue(json, TraversalMetrics.class);
+
+            assertNotNull(after);
+            assertEquals(before.getMetrics().size(), after.getMetrics().size());
+            assertEquals(before.getDuration(TimeUnit.MILLISECONDS), after.getDuration(TimeUnit.MILLISECONDS));
+            assertEquals(before.getMetrics().size(), after.getMetrics().size());
+
+            before.getMetrics().forEach(b -> {
+                final Optional<? extends Metrics> mFromA = after.getMetrics().stream().filter(a -> b.getId().equals(a.getId())).findFirst();
+                if (mFromA.isPresent()) {
+                    final Metrics m = mFromA.get();
+                    assertEquals(b.getAnnotations(), m.getAnnotations());
+                    assertEquals(b.getCounts(), m.getCounts());
+                    assertEquals(b.getName(), m.getName());
+                    assertEquals(b.getDuration(TimeUnit.MILLISECONDS), m.getDuration(TimeUnit.MILLISECONDS));
+                } else {
+                    fail("Metrics were not present after deserialization");
+                }
+            });
+        }
+
+        @Test
+        @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
+        @org.junit.Ignore("TINKERPOP-1509")
+        public void shouldSerializeTree() throws Exception {
+            final ObjectMapper mapper = graph.io(GraphSONIo.build()).mapper().version(GraphSONVersion.V2_0).create().createMapper();
+            final Tree t = g.V(convertToVertexId("marko")).out().properties("name").tree().next();
+            final String json = mapper.writeValueAsString(t);
+
+            final HashMap<String, Object> m = (HashMap<String, Object>) mapper.readValue(json, mapTypeReference);
+
+            // Check Structure
+            assertEquals(1, m.size());
+            assertTrue(m.containsKey(convertToVertexId("marko").toString()));
+
+            // Check Structure n+1
+            final HashMap<String, Object> branch = (HashMap<String, Object>) m.get(convertToVertexId("marko").toString());
+            assertEquals(2, branch.size());
+            assertTrue(branch.containsKey(GraphSONTokens.KEY));
+            assertTrue(branch.containsKey(GraphSONTokens.VALUE));
+
+            //Check n+1 key (traversed element)
+            final HashMap<String, Object> branchKey = (HashMap<String, Object>) branch.get(GraphSONTokens.KEY);
+            assertTrue(branchKey.containsKey(GraphSONTokens.ID));
+            assertTrue(branchKey.containsKey(GraphSONTokens.LABEL));
+            assertTrue(branchKey.containsKey(GraphSONTokens.TYPE));
+            assertTrue(branchKey.containsKey(GraphSONTokens.PROPERTIES));
+            assertEquals(convertToVertexId("marko").toString(), branchKey.get(GraphSONTokens.ID).toString());
+            assertEquals("person", branchKey.get(GraphSONTokens.LABEL));
+            assertEquals("vertex", branchKey.get(GraphSONTokens.TYPE));
+            final HashMap<String, List<HashMap<String, Object>>> branchKeyProps = (HashMap<String, List<HashMap<String, Object>>>) branchKey.get(GraphSONTokens.PROPERTIES);
+            assertEquals("marko", branchKeyProps.get("name").get(0).get("value"));
+            assertEquals(29, branchKeyProps.get("age").get(0).get("value"));
+
+            //Check n+1 value (traversed element)
+            final HashMap<String, Object> branchValue = (HashMap<String, Object>) branch.get(GraphSONTokens.VALUE);
+            assertEquals(3, branchValue.size());
+            assertTrue(branchValue.containsKey(convertToVertexId("vadas").toString()));
+            assertTrue(branchValue.containsKey(convertToVertexId("lop").toString()));
+            assertTrue(branchValue.containsKey(convertToVertexId("josh").toString()));
+
+            // Check that vp[] functioned properly
+            final HashMap<String, HashMap<String, Object>> branch2 = (HashMap<String, HashMap<String, Object>>) branchValue.get(convertToVertexId("vadas").toString());
+            assertTrue(branch2.containsKey(GraphSONTokens.KEY));
+            assertTrue(branch2.containsKey(GraphSONTokens.VALUE));
+
+            final Map.Entry entry = branch2.get(GraphSONTokens.VALUE).entrySet().iterator().next();
+            final HashMap<String, HashMap<String, Object>> branch2Prop = (HashMap<String, HashMap<String, Object>>) entry.getValue();
+            assertTrue(branch2Prop.get(GraphSONTokens.KEY).containsKey(GraphSONTokens.ID));
+            assertTrue(branch2Prop.get(GraphSONTokens.KEY).containsKey(GraphSONTokens.VALUE));
+            assertTrue(branch2Prop.get(GraphSONTokens.KEY).containsKey(GraphSONTokens.LABEL));
+            assertEquals("name", branch2Prop.get(GraphSONTokens.KEY).get(GraphSONTokens.LABEL));
+            assertEquals("vadas", branch2Prop.get(GraphSONTokens.KEY).get(GraphSONTokens.VALUE));
+            assertEquals(entry.getKey().toString(), branch2Prop.get(GraphSONTokens.KEY).get(GraphSONTokens.ID).toString());
+        }
+    }
 }


[41/50] [abbrv] tinkerpop git commit: Merge branch 'tp32'

Posted by sp...@apache.org.
Merge branch 'tp32'


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/b098328b
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/b098328b
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/b098328b

Branch: refs/heads/TINKERPOP-1565
Commit: b098328b47510bcd2483feee3e487e3ec85c038d
Parents: 64baabf 0f5efa4
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Jan 10 16:48:55 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Jan 10 16:48:55 2017 -0500

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  1 +
 .../AbstractGraphSONMessageSerializerV2d0.java  | 62 +++++++++++++++++++-
 .../ser/GraphSONMessageSerializerV2d0Test.java  | 23 ++++----
 3 files changed, 73 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b098328b/CHANGELOG.asciidoc
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b098328b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV2d0Test.java
----------------------------------------------------------------------


[47/50] [abbrv] tinkerpop git commit: first draft of new updates to GraphSON 2.0. The object models are concise, all the elements/properties are attachable. Really wasn't that much of a headache to change -- a few test cases in Gremlin-Python needed upda

Posted by sp...@apache.org.
first draft of new updates to GraphSON 2.0. The object models are concise, all the elements/properties are attachable. Really wasn't that much of a headache to change -- a few test cases in Gremlin-Python needed updating and in GraphSONMessageSerializerV2d0Test. The corresponding ticket in JIRA has a comment with the pretty print JSON of the various elements/properties.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/ff36e492
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/ff36e492
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/ff36e492

Branch: refs/heads/TINKERPOP-1565
Commit: ff36e49231eb7f4284347f73ec9e0a5bb9d393af
Parents: e41d9ca
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Nov 29 11:32:21 2016 -0700
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jan 12 09:55:58 2017 -0500

----------------------------------------------------------------------
 .../io/graphson/GraphSONSerializersV2d0.java    | 50 ++++++++++++-------
 .../structure/io/graphson/GraphSONTokens.java   |  2 +-
 .../ser/GraphSONMessageSerializerV2d0Test.java  | 18 +++----
 .../gremlin_python/structure/io/graphson.py     | 52 ++++++++++++++------
 .../jython/tests/structure/io/test_graphson.py  | 12 ++---
 5 files changed, 84 insertions(+), 50 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ff36e492/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV2d0.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV2d0.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV2d0.java
index e4cc755..824fc7f 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV2d0.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONSerializersV2d0.java
@@ -100,22 +100,34 @@ class GraphSONSerializersV2d0 {
         }
 
         private void writeProperties(final Vertex vertex, final JsonGenerator jsonGenerator) throws IOException {
-            if (vertex.keys().size() == 0)
+            if (vertex.keys().isEmpty())
                 return;
             jsonGenerator.writeFieldName(GraphSONTokens.PROPERTIES);
             jsonGenerator.writeStartObject();
 
             final List<String> keys = normalize ?
                     IteratorUtils.list(vertex.keys().iterator(), Comparator.naturalOrder()) : new ArrayList<>(vertex.keys());
-            for (String key : keys) {
+            for (final String key : keys) {
                 final Iterator<VertexProperty<Object>> vertexProperties = normalize ?
                         IteratorUtils.list(vertex.properties(key), Comparators.PROPERTY_COMPARATOR).iterator() : vertex.properties(key);
                 if (vertexProperties.hasNext()) {
                     jsonGenerator.writeFieldName(key);
-
                     jsonGenerator.writeStartArray();
                     while (vertexProperties.hasNext()) {
-                        jsonGenerator.writeObject(vertexProperties.next());
+                        final VertexProperty<?> vertexProperty = vertexProperties.next();
+                        jsonGenerator.writeStartObject();
+                        jsonGenerator.writeObjectField(GraphSONTokens.ID, vertexProperty.id());
+                        jsonGenerator.writeObjectField(GraphSONTokens.VALUE, vertexProperty.value());
+                        if (!vertexProperty.keys().isEmpty()) {
+                            jsonGenerator.writeObjectFieldStart(GraphSONTokens.PROPERTIES);
+                            final Iterator<Property<?>> properties = (Iterator) vertexProperty.properties();
+                            while (properties.hasNext()) {
+                                final Property<?> property = properties.next();
+                                jsonGenerator.writeObjectField(property.key(), property.value());
+                            }
+                            jsonGenerator.writeEndObject();
+                        }
+                        jsonGenerator.writeEndObject();
                     }
                     jsonGenerator.writeEndArray();
                 }
@@ -156,7 +168,6 @@ class GraphSONSerializersV2d0 {
                     IteratorUtils.list(edge.properties(), Comparators.PROPERTY_COMPARATOR).iterator() : edge.properties();
             if (edgeProperties.hasNext()) {
                 jsonGenerator.writeFieldName(GraphSONTokens.PROPERTIES);
-
                 jsonGenerator.writeStartObject();
                 while (edgeProperties.hasNext()) {
                     final Property<?> property = edgeProperties.next();
@@ -181,24 +192,19 @@ class GraphSONSerializersV2d0 {
             jsonGenerator.writeObjectField(GraphSONTokens.VALUE, property.value());
             if (property.element() instanceof VertexProperty) {
                 VertexProperty vertexProperty = (VertexProperty) property.element();
-                jsonGenerator.writeObjectFieldStart(GraphSONTokens.ELEMENT);
-                jsonGenerator.writeStringField(GraphSONTokens.VALUETYPE, "g:VertexProperty");
-                jsonGenerator.writeObjectFieldStart(GraphSONTokens.VALUEPROP);
+                jsonGenerator.writeObjectFieldStart(GraphSONTokens.VERTEX_PROPERTY);
                 jsonGenerator.writeObjectField(GraphSONTokens.ID, vertexProperty.id());
                 jsonGenerator.writeStringField(GraphSONTokens.LABEL, vertexProperty.label());
+                jsonGenerator.writeObjectField(GraphSONTokens.VALUE, vertexProperty.value());
                 jsonGenerator.writeObjectField(GraphSONTokens.VERTEX, vertexProperty.element().id());
                 jsonGenerator.writeEndObject();
-                jsonGenerator.writeEndObject();
             } else if (property.element() instanceof Edge) {
                 Edge edge = (Edge) property.element();
-                jsonGenerator.writeObjectFieldStart(GraphSONTokens.ELEMENT);
-                jsonGenerator.writeStringField(GraphSONTokens.VALUETYPE, "g:Edge");
-                jsonGenerator.writeObjectFieldStart(GraphSONTokens.VALUEPROP);
+                jsonGenerator.writeObjectFieldStart(GraphSONTokens.EDGE);
                 jsonGenerator.writeObjectField(GraphSONTokens.ID, edge.id());
                 jsonGenerator.writeStringField(GraphSONTokens.LABEL, edge.label());
-                jsonGenerator.writeObjectField(GraphSONTokens.OUT, edge.outVertex().id());
                 jsonGenerator.writeObjectField(GraphSONTokens.IN, edge.inVertex().id());
-                jsonGenerator.writeEndObject();
+                jsonGenerator.writeObjectField(GraphSONTokens.OUT, edge.outVertex().id());
                 jsonGenerator.writeEndObject();
             }
             jsonGenerator.writeEndObject();
@@ -485,9 +491,16 @@ class GraphSONSerializersV2d0 {
 
         @Override
         public Property createObject(final Map<String, Object> propData) {
-            final Object element = propData.get(GraphSONTokens.ELEMENT);
-            return element instanceof Element ? // graphson-non-embedded is treated differently, but since this is a hard coded embedding...
-                    new DetachedProperty<>((String) propData.get(GraphSONTokens.KEY), propData.get(GraphSONTokens.VALUE), (Element) element) :
+            Element element = null;
+            if (propData.containsKey(GraphSONTokens.VERTEX_PROPERTY)) {
+                final Map<String, Object> elementData = (Map<String, Object>) propData.get(GraphSONTokens.VERTEX_PROPERTY);
+                element = new VertexPropertyJacksonDeserializer().createObject(elementData);
+            } else if (propData.containsKey(GraphSONTokens.EDGE)) {
+                final Map<String, Object> elementData = (Map<String, Object>) propData.get(GraphSONTokens.EDGE);
+                element = new EdgeJacksonDeserializer().createObject(elementData);
+            }
+            return null != element ? // graphson-non-embedded is treated differently, but since this is a hard coded embedding...
+                    new DetachedProperty<>((String) propData.get(GraphSONTokens.KEY), propData.get(GraphSONTokens.VALUE), element) :
                     new DetachedProperty<>((String) propData.get(GraphSONTokens.KEY), propData.get(GraphSONTokens.VALUE));
         }
     }
@@ -504,7 +517,8 @@ class GraphSONSerializersV2d0 {
                     new DetachedVertexProperty<>(
                             propData.get(GraphSONTokens.ID),
                             (String) propData.get(GraphSONTokens.LABEL),
-                            propData.get(GraphSONTokens.VALUE), (Map<String, Object>) propData.get(GraphSONTokens.PROPERTIES),
+                            propData.get(GraphSONTokens.VALUE),
+                            (Map<String, Object>) propData.get(GraphSONTokens.PROPERTIES),
                             new DetachedVertex(propData.get(GraphSONTokens.VERTEX), Vertex.DEFAULT_LABEL, null)) :
                     new DetachedVertexProperty<>(
                             propData.get(GraphSONTokens.ID),

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ff36e492/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTokens.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTokens.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTokens.java
index 4f804ad..d804f0b 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTokens.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphson/GraphSONTokens.java
@@ -37,8 +37,8 @@ public final class GraphSONTokens {
     public static final String EDGE = "edge";
     public static final String EDGES = "edges";
     public static final String VERTEX = "vertex";
+    public static final String VERTEX_PROPERTY = "vertexProperty";
     public static final String VERTICES = "vertices";
-    public static final String ELEMENT = "element";
     public static final String IN = "inV";
     public static final String OUT = "outV";
     public static final String IN_E = "inE";

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ff36e492/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV2d0Test.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV2d0Test.java b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV2d0Test.java
index 13e2e69..4125946 100644
--- a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV2d0Test.java
+++ b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV2d0Test.java
@@ -315,17 +315,17 @@ public class GraphSONMessageSerializerV2d0Test {
 
         final JsonNode friendProperties = properties.get("friends");
         assertEquals(1, friendProperties.size());
-        final JsonNode friendsProperty = friendProperties.get(0).get(GraphSONTokens.VALUEPROP);
+        final JsonNode friendsProperty = friendProperties.get(0).get(GraphSONTokens.VALUE);
         assertNotNull(friendsProperty);
-        assertEquals(4, friendsProperty.size());
+        assertEquals(3, friendsProperty.size());
 
-        final String object1 = friendsProperty.get(GraphSONTokens.VALUE).get(0).asText();
+        final String object1 = friendsProperty.get(0).asText();
         assertEquals("x", object1);
 
-        final int object2 = friendsProperty.get(GraphSONTokens.VALUE).get(1).get(GraphSONTokens.VALUEPROP).asInt();
+        final int object2 = friendsProperty.get(1).get(GraphSONTokens.VALUEPROP).asInt();
         assertEquals(5, object2);
 
-        final JsonNode object3 = friendsProperty.get(GraphSONTokens.VALUE).get(2);
+        final JsonNode object3 = friendsProperty.get(2);
         assertEquals(500, object3.get("x").get(GraphSONTokens.VALUEPROP).asInt());
         assertEquals("some", object3.get("y").asText());
     }
@@ -439,7 +439,7 @@ public class GraphSONMessageSerializerV2d0Test {
                 .get(GraphSONTokens.KEY).get(GraphSONTokens.VALUEPROP)
                 .get(GraphSONTokens.PROPERTIES)
                 .get("name")
-                .get(0).get(GraphSONTokens.VALUEPROP)
+                .get(0)
                 .get(GraphSONTokens.VALUE).asText());
 
         //check the leafs
@@ -450,7 +450,7 @@ public class GraphSONMessageSerializerV2d0Test {
                 .get(GraphSONTokens.KEY).get(GraphSONTokens.VALUEPROP)
                 .get(GraphSONTokens.PROPERTIES)
                 .get("name")
-                .get(0).get(GraphSONTokens.VALUEPROP)
+                .get(0)
                 .get(GraphSONTokens.VALUE).asText());
 
         assertEquals("lop", converted.get(GraphSONTokens.VALUEPROP)
@@ -460,7 +460,7 @@ public class GraphSONMessageSerializerV2d0Test {
                 .get(GraphSONTokens.KEY).get(GraphSONTokens.VALUEPROP)
                 .get(GraphSONTokens.PROPERTIES)
                 .get("name")
-                .get(0).get(GraphSONTokens.VALUEPROP)
+                .get(0)
                 .get(GraphSONTokens.VALUE).asText());
 
         assertEquals("josh", converted.get(GraphSONTokens.VALUEPROP)
@@ -470,7 +470,7 @@ public class GraphSONMessageSerializerV2d0Test {
                 .get(GraphSONTokens.KEY).get(GraphSONTokens.VALUEPROP)
                 .get(GraphSONTokens.PROPERTIES)
                 .get("name")
-                .get(0).get(GraphSONTokens.VALUEPROP)
+                .get(0)
                 .get(GraphSONTokens.VALUE).asText());
     }
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ff36e492/gremlin-python/src/main/jython/gremlin_python/structure/io/graphson.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/structure/io/graphson.py b/gremlin-python/src/main/jython/gremlin_python/structure/io/graphson.py
index a3276e2..8795ff1 100644
--- a/gremlin-python/src/main/jython/gremlin_python/structure/io/graphson.py
+++ b/gremlin-python/src/main/jython/gremlin_python/structure/io/graphson.py
@@ -208,20 +208,26 @@ class PropertySerializer(_GraphSONTypeIO):
 
     @classmethod
     def dictify(cls, property, writer):
-        elementDict = writer.toDict(property.element)
-        if elementDict is not None:
-            valueDict = elementDict["@value"]
-            if "outVLabel" in valueDict:
-                del valueDict["outVLabel"]
-            if "inVLabel" in valueDict:
-                del valueDict["inVLabel"]
-            if "properties" in valueDict:
-                del valueDict["properties"]
-            if "value" in valueDict:
-                del valueDict["value"]
-        return GraphSONUtil.typedValue("Property", {"key": writer.toDict(property.key),
-                                                    "value": writer.toDict(property.value),
-                                                    "element": writer.toDict(elementDict)})
+        element = property.element
+        elementDict = {}
+        if element is not None:
+            elementDict["id"] = element.id
+            elementDict["label"] = element.label
+            if isinstance(element, VertexProperty):
+                elementDict["value"] = element.value
+                elementDict["vertex"] = element.vertex.id
+                return GraphSONUtil.typedValue("Property", {"key": writer.toDict(property.key),
+                                                            "value": writer.toDict(property.value),
+                                                            "vertexProperty": writer.toDict(elementDict)})
+            elif isinstance(element, Edge):
+                elementDict["outV"] = element.outV.id
+                elementDict["inV"] = element.inV.id
+                return GraphSONUtil.typedValue("Property", {"key": writer.toDict(property.key),
+                                                            "value": writer.toDict(property.value),
+                                                            "edge": writer.toDict(elementDict)})
+        else:
+            return GraphSONUtil.typedValue("Property", {"key": writer.toDict(property.key),
+                                                        "value": writer.toDict(property.value)})
 
 
 class TraversalStrategySerializer(_GraphSONTypeIO):
@@ -386,8 +392,22 @@ class PropertyDeserializer(_GraphSONTypeIO):
 
     @classmethod
     def objectify(cls, d, reader):
-        element = reader.toObject(d["element"]) if "element" in d else None
-        return Property(d["key"], reader.toObject(d["value"]), element)
+        if "edge" in d:
+            edge = reader.toObject(d["edge"])
+            return Property(d["key"], reader.toObject(d["value"]),
+                            Edge(edge["id"],
+                                 Vertex(edge["outV"]),
+                                 edge["label"],
+                                 Vertex(edge["inV"])))
+        elif "vertexProperty" in d:
+            vertex_property = reader.toObject(d["vertexProperty"])
+            return Property(d["key"], reader.toObject(d["value"]),
+                            VertexProperty(vertex_property["id"],
+                                           vertex_property["label"],
+                                           vertex_property["value"],
+                                           Vertex(vertex_property["vertex"])))
+        else:
+            return Property(d["key"], reader.toObject(d["value"]), None)
 
 
 class PathDeserializer(_GraphSONTypeIO):

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ff36e492/gremlin-python/src/main/jython/tests/structure/io/test_graphson.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/tests/structure/io/test_graphson.py b/gremlin-python/src/main/jython/tests/structure/io/test_graphson.py
index f01100d..7e034c9 100644
--- a/gremlin-python/src/main/jython/tests/structure/io/test_graphson.py
+++ b/gremlin-python/src/main/jython/tests/structure/io/test_graphson.py
@@ -111,7 +111,7 @@ class TestGraphSONReader(TestCase):
         assert edge.outV == Vertex("y", "vertex")
         ##
         property = self.graphson_reader.readObject("""
-        {"@type":"g:Property", "@value":{"key":"aKey","value":{"@type":"g:Int64","@value":17},"element":{"@type":"g:Edge","@value":{"id":{"@type":"g:Int64","@value":122},"label":"knows","inV":"x","outV":"y","inVLabel":"xLab"}}}}""")
+        {"@type":"g:Property", "@value":{"key":"aKey","value":{"@type":"g:Int64","@value":17},"edge":{"id":{"@type":"g:Int64","@value":122},"label":"knows","inV":"x","outV":"y"}}}""")
         # print property
         assert isinstance(property, Property)
         assert "aKey" == property.key
@@ -208,11 +208,11 @@ class TestGraphSONWriter(TestCase):
             self.graphson_writer.writeObject(VertexProperty("blah", "keyA", True, Vertex("stephen"))))
 
         assert {"@type": "g:Property",
-                "@value": {"key": "name", "value": "marko", "element": {"@type": "g:VertexProperty",
-                                                                        "@value": {
-                                                                            "vertex": "vertexId",
-                                                                            "id": "anId",
-                                                                            "label": "aKey"}}}} == json.loads(
+                "@value": {"key": "name", "value": "marko", "vertexProperty": {
+                    "vertex": "vertexId",
+                    "id": "anId",
+                    "label": "aKey",
+                    "value": {"@type": "g:Int32", "@value": 21345}}}} == json.loads(
             self.graphson_writer.writeObject(
                 Property("name", "marko", VertexProperty("anId", "aKey", 21345, Vertex("vertexId")))))
 


[03/50] [abbrv] tinkerpop git commit: minor nothing.

Posted by sp...@apache.org.
minor nothing.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/f352b018
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/f352b018
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/f352b018

Branch: refs/heads/TINKERPOP-1565
Commit: f352b018f2c7d389abbf759e17fa1b094c14c63c
Parents: 2ddc632
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Jan 3 11:51:38 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Jan 5 16:59:45 2017 -0700

----------------------------------------------------------------------
 .../gremlin/process/traversal/step/filter/DedupGlobalStep.java      | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f352b018/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
index b0afdc9..dfe7958 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
@@ -132,6 +132,7 @@ public final class DedupGlobalStep<S> extends FilterStep<S> implements Traversal
     public void reset() {
         super.reset();
         this.duplicateSet.clear();
+        this.barrierAdded = false;
     }
 
     @Override


[45/50] [abbrv] tinkerpop git commit: Merge branch 'TINKERPOP-1531' into tp32

Posted by sp...@apache.org.
Merge branch 'TINKERPOP-1531' into tp32


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/31439c03
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/31439c03
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/31439c03

Branch: refs/heads/TINKERPOP-1565
Commit: 31439c03cde08ebb2be81c4ef53181b00035d02e
Parents: 0f5efa4 683c2df
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Jan 10 17:56:34 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Tue Jan 10 17:56:34 2017 -0700

----------------------------------------------------------------------
 .../step/filter/GroovyDedupTest.groovy          |  4 ++--
 .../traversal/step/filter/DedupTest.java        | 23 ++++++++++----------
 2 files changed, 14 insertions(+), 13 deletions(-)
----------------------------------------------------------------------



[13/50] [abbrv] tinkerpop git commit: more minor optimizations to DedupGlobalStep.

Posted by sp...@apache.org.
more minor optimizations to DedupGlobalStep.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/ba390748
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/ba390748
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/ba390748

Branch: refs/heads/TINKERPOP-1565
Commit: ba390748443c603009b5a59b6dc64882a4819770
Parents: 64c8065
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Thu Jan 5 10:34:23 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Jan 5 17:00:17 2017 -0700

----------------------------------------------------------------------
 .../traversal/step/filter/DedupGlobalStep.java  | 71 +++++++++++---------
 1 file changed, 39 insertions(+), 32 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ba390748/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
index e3d36b1..a4c1b6a 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupGlobalStep.java
@@ -58,7 +58,7 @@ public final class DedupGlobalStep<S> extends FilterStep<S> implements Traversal
     private Set<String> keepLabels;
     private boolean executingAtMaster = false;
     private boolean barrierAdded = false;
-    private Map<Object, Traverser.Admin<S>> masterBarrier;
+    private Map<Object, Traverser.Admin<S>> barrier;
 
     public DedupGlobalStep(final Traversal.Admin traversal, final String... dedupLabels) {
         super(traversal);
@@ -91,11 +91,14 @@ public final class DedupGlobalStep<S> extends FilterStep<S> implements Traversal
 
     @Override
     protected Traverser.Admin<S> processNextStart() {
-        if (null != this.masterBarrier) {
-            this.starts.add(this.masterBarrier.values().iterator());
+        if (null != this.barrier) {
+            for (final Map.Entry<Object, Traverser.Admin<S>> entry : this.barrier.entrySet()) {
+                if (this.duplicateSet.add(entry.getKey()))
+                    this.starts.add(entry.getValue());
+            }
             this.barrierAdded = true;
+            this.barrier = null;
         }
-        this.masterBarrier = null;
         return PathProcessor.processTraverserPathLabels(super.processNextStart(), this.keepLabels);
     }
 
@@ -139,6 +142,7 @@ public final class DedupGlobalStep<S> extends FilterStep<S> implements Traversal
         super.reset();
         this.duplicateSet.clear();
         this.barrierAdded = false;
+        this.barrier = null;
     }
 
     @Override
@@ -170,45 +174,48 @@ public final class DedupGlobalStep<S> extends FilterStep<S> implements Traversal
 
     @Override
     public boolean hasNextBarrier() {
-        return this.starts.hasNext();
+        return null != this.barrier || this.starts.hasNext();
     }
 
     @Override
     public Map<Object, Traverser.Admin<S>> nextBarrier() throws NoSuchElementException {
-        final Map<Object, Traverser.Admin<S>> map = new HashMap<>();
-        while (this.starts.hasNext()) {
-            final Traverser.Admin<S> traverser = this.starts.next();
-            final Object object;
-            if (null != this.dedupLabels) {
-                object = new ArrayList<>(this.dedupLabels.size());
-                for (final String label : this.dedupLabels) {
-                    ((List) object).add(TraversalUtil.applyNullable((S) this.getScopeValue(Pop.last, label, traverser), this.dedupTraversal));
+        if (null != this.barrier) {
+            final Map<Object, Traverser.Admin<S>> tempBarrier = this.barrier;
+            this.barrier = null;
+            this.barrierAdded = false;
+            return tempBarrier;
+        } else {
+            final Map<Object, Traverser.Admin<S>> map = new HashMap<>();
+            while (this.starts.hasNext()) {
+                final Traverser.Admin<S> traverser = this.starts.next();
+                final Object object;
+                if (null != this.dedupLabels) {
+                    object = new ArrayList<>(this.dedupLabels.size());
+                    for (final String label : this.dedupLabels) {
+                        ((List) object).add(TraversalUtil.applyNullable((S) this.getScopeValue(Pop.last, label, traverser), this.dedupTraversal));
+                    }
+                } else {
+                    object = TraversalUtil.applyNullable(traverser, this.dedupTraversal);
+                }
+                if (!map.containsKey(object)) {
+                    traverser.setBulk(1L);
+                    traverser.set(DetachedFactory.detach(traverser.get(), true));
+                    map.put(object, traverser);
                 }
-            } else {
-                object = TraversalUtil.applyNullable(traverser, this.dedupTraversal);
-            }
-            if (!map.containsKey(object)) {
-                traverser.setBulk(1l);
-                traverser.set(DetachedFactory.detach(traverser.get(), true));
-                map.put(object, traverser);
             }
+            if (map.isEmpty())
+                throw FastNoSuchElementException.instance();
+            else
+                return map;
         }
-        if (map.isEmpty())
-            throw FastNoSuchElementException.instance();
-        else
-            return map;
-
     }
 
     @Override
     public void addBarrier(final Map<Object, Traverser.Admin<S>> barrier) {
-        if (null == this.masterBarrier)
-            this.masterBarrier = new HashMap<>(barrier);
-        else {
-            for (Map.Entry<Object, Traverser.Admin<S>> entry : barrier.entrySet()) {
-                this.masterBarrier.putIfAbsent(entry.getKey(), entry.getValue());
-            }
-        }
+        if (null == this.barrier)
+            this.barrier = new HashMap<>(barrier);
+        else
+            this.barrier.putAll(barrier);
     }
 
     @Override


[40/50] [abbrv] tinkerpop git commit: Added specific serializer for RequestMessage

Posted by sp...@apache.org.
Added specific serializer for RequestMessage

This makes it so that RequestMessage no longer needs to rely on the field serializers for RequestMessage which makes full roundtrip serialization work properly for GraphSON 2.0. CTR


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/0f5efa40
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/0f5efa40
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/0f5efa40

Branch: refs/heads/TINKERPOP-1565
Commit: 0f5efa4016825116b4bc6f0f2c7e7acc87773a1e
Parents: 3c80611
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Jan 10 16:04:07 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Jan 10 16:05:48 2017 -0500

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  1 +
 .../AbstractGraphSONMessageSerializerV2d0.java  | 62 +++++++++++++++++++-
 .../ser/GraphSONMessageSerializerV2d0Test.java  | 23 ++++----
 3 files changed, 73 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0f5efa40/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 4411f99..4e02b6f 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -31,6 +31,7 @@ TinkerPop 3.2.4 (Release Date: NOT OFFICIALLY RELEASED YET)
 * Fixed a bug in `LazyBarrierStrategy` where `profile()` was deactivating it accidentally.
 * Fixed a bug in `RepeatUnrollStrategy` where stateful `DedupGlobalStep` was cloned and thus, maintained two deduplication sets.
 * Added documentation around "terminal steps" in Gremlin: `hasNext()`, `next()`, `toList()`, etc.
+* Added specific GraphSON serializers for `RequestMessage` and `ResponseMessage` in GraphSON 2.0.
 * Added `CloseableIterator` to allow `Graph` providers who open expensive resources a way to let users release them.
 * Fixed minor bug in `gremlin-driver` where closing a session-based `Client` without initializing it could generate an error.
 * Relieved synchronization pressure in various areas of `TinkerGraphComputer`.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0f5efa40/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/AbstractGraphSONMessageSerializerV2d0.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/AbstractGraphSONMessageSerializerV2d0.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/AbstractGraphSONMessageSerializerV2d0.java
index 5cd5198..92dedbb 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/AbstractGraphSONMessageSerializerV2d0.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/AbstractGraphSONMessageSerializerV2d0.java
@@ -176,9 +176,11 @@ public abstract class AbstractGraphSONMessageSerializerV2d0 extends AbstractMess
             // SERIALIZERS
             addSerializer(JsonBuilder.class, new JsonBuilderJacksonSerializer());
             addSerializer(ResponseMessage.class, new ResponseMessageSerializer());
+            addSerializer(RequestMessage.class, new RequestMessageSerializer());
 
             //DESERIALIZERS
             addDeserializer(ResponseMessage.class, new ResponseMessageDeserializer());
+            addDeserializer(RequestMessage.class, new RequestMessageDeserializer());
         }
     }
 
@@ -198,6 +200,62 @@ public abstract class AbstractGraphSONMessageSerializerV2d0 extends AbstractMess
         }
     }
 
+    public final static class RequestMessageSerializer extends StdSerializer<RequestMessage> {
+        public RequestMessageSerializer() {
+            super(RequestMessage.class);
+        }
+
+        @Override
+        public void serialize(final RequestMessage requestMessage, final JsonGenerator jsonGenerator,
+                              final SerializerProvider serializerProvider) throws IOException {
+            ser(requestMessage, jsonGenerator, serializerProvider, null);
+        }
+
+        @Override
+        public void serializeWithType(final RequestMessage requestMessage, final JsonGenerator jsonGenerator,
+                                      final SerializerProvider serializerProvider,
+                                      final TypeSerializer typeSerializer) throws IOException {
+            ser(requestMessage, jsonGenerator, serializerProvider, typeSerializer);
+        }
+
+        public void ser(final RequestMessage requestMessage, final JsonGenerator jsonGenerator,
+                        final SerializerProvider serializerProvider,
+                        final TypeSerializer typeSerializer) throws IOException {
+            GraphSONUtil.writeStartObject(requestMessage, jsonGenerator, typeSerializer);
+
+            jsonGenerator.writeStringField(SerTokens.TOKEN_REQUEST, requestMessage.getRequestId().toString());
+            jsonGenerator.writeStringField(SerTokens.TOKEN_OP, requestMessage.getOp());
+            jsonGenerator.writeStringField(SerTokens.TOKEN_PROCESSOR, requestMessage.getProcessor());
+            jsonGenerator.writeObjectField(SerTokens.TOKEN_ARGS, requestMessage.getArgs());
+
+            GraphSONUtil.writeEndObject(requestMessage, jsonGenerator, typeSerializer);
+        }
+    }
+
+    public final static class RequestMessageDeserializer extends AbstractObjectDeserializer<RequestMessage> {
+        protected RequestMessageDeserializer() {
+            super(RequestMessage.class);
+        }
+
+        @Override
+        public RequestMessage createObject(final Map<String, Object> data) {
+            final Map<String, Object> args = (Map<String, Object>) data.get(SerTokens.TOKEN_ARGS);
+            RequestMessage.Builder builder = RequestMessage.build(data.get(SerTokens.TOKEN_OP).toString())
+                    .overrideRequestId(UUID.fromString(data.get(SerTokens.TOKEN_REQUEST).toString()));
+
+            if (data.containsKey(SerTokens.TOKEN_PROCESSOR))
+                builder = builder.processor(data.get(SerTokens.TOKEN_PROCESSOR).toString());
+
+            if (args != null) {
+                for (Map.Entry<String, Object> kv : args.entrySet()) {
+                    builder = builder.addArg(kv.getKey(), kv.getValue());
+                }
+            }
+
+            return builder.create();
+        }
+    }
+
     public final static class ResponseMessageSerializer extends StdSerializer<ResponseMessage> {
         public ResponseMessageSerializer() {
             super(ResponseMessage.class);
@@ -238,7 +296,7 @@ public abstract class AbstractGraphSONMessageSerializerV2d0 extends AbstractMess
                 jsonGenerator.writeNullField(SerTokens.TOKEN_DATA);
             } else {
                 jsonGenerator.writeFieldName(SerTokens.TOKEN_DATA);
-                Object result = responseMessage.getResult().getData();
+                final Object result = responseMessage.getResult().getData();
                 serializerProvider.findTypedValueSerializer(result.getClass(), true, null).serialize(result, jsonGenerator, serializerProvider);
             }
 
@@ -255,7 +313,7 @@ public abstract class AbstractGraphSONMessageSerializerV2d0 extends AbstractMess
         }
         
         @Override
-        public ResponseMessage createObject(Map<String, Object> data) {
+        public ResponseMessage createObject(final Map<String, Object> data) {
             final Map<String, Object> status = (Map<String, Object>) data.get(SerTokens.TOKEN_STATUS);
             final Map<String, Object> result = (Map<String, Object>) data.get(SerTokens.TOKEN_RESULT);
             return ResponseMessage.build(UUID.fromString(data.get(SerTokens.TOKEN_REQUEST).toString()))

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0f5efa40/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV2d0Test.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV2d0Test.java b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV2d0Test.java
index 460e935..108b230 100644
--- a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV2d0Test.java
+++ b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ser/GraphSONMessageSerializerV2d0Test.java
@@ -363,6 +363,7 @@ public class GraphSONMessageSerializerV2d0Test {
 
     @Test
     public void shouldDeserializeRequestNicelyWithArgs() throws Exception {
+        final GraphSONMessageSerializerV2d0 serializer = new GraphSONMessageSerializerV2d0();
         final UUID request = UUID.fromString("011CFEE9-F640-4844-AC93-034448AC0E80");
         final RequestMessage m = SERIALIZER.deserializeRequest(String.format("{\"requestId\":\"%s\",\"op\":\"eval\",\"args\":{\"x\":\"y\"}}", request));
         assertEquals(request, m.getRequestId());
@@ -493,8 +494,8 @@ public class GraphSONMessageSerializerV2d0Test {
     }
 
     @Test
-    public void shouldSerializeAndDeserializeResponseAndRequestFromObjectMapper() throws IOException {
-        ObjectMapper om = GraphSONMapper.build().version(GraphSONVersion.V2_0)
+    public void shouldSerializeAndDeserializeRequestMessageFromObjectMapper() throws IOException {
+        final ObjectMapper om = GraphSONMapper.build().version(GraphSONVersion.V2_0)
                 .addCustomModule(new GraphSONMessageSerializerGremlinV2d0.GremlinServerModule())
                 .create().createMapper();
 
@@ -504,12 +505,12 @@ public class GraphSONMessageSerializerV2d0Test {
         final Map<String, Object> requestAliases = new HashMap<>();
         requestAliases.put("g", "social");
 
-        RequestMessage requestMessage = RequestMessage.build("eval").processor("session").
+        final RequestMessage requestMessage = RequestMessage.build("eval").processor("session").
                 overrideRequestId(UUID.fromString("cb682578-9d92-4499-9ebc-5c6aa73c5397")).
                 add("gremlin", "social.V(x)", "bindings", requestBindings, "language", "gremlin-groovy", "aliases", requestAliases, "session", UUID.fromString("41d2e28a-20a4-4ab0-b379-d810dede3786")).create();
 
-        String json = om.writeValueAsString(requestMessage);
-        RequestMessage readRequestMessage = om.readValue(json, RequestMessage.class);
+        final String json = om.writeValueAsString(requestMessage);
+        final RequestMessage readRequestMessage = om.readValue(json, RequestMessage.class);
 
         assertEquals(requestMessage.getOp(), readRequestMessage.getOp());
         assertEquals(requestMessage.getProcessor(), readRequestMessage.getProcessor());
@@ -518,18 +519,18 @@ public class GraphSONMessageSerializerV2d0Test {
     }
 
     @Test
-    public void shouldSerializeAndDeserializeResponseFromObjectMapper() throws IOException {
-        ObjectMapper om = GraphSONMapper.build().version(GraphSONVersion.V2_0)
+    public void shouldSerializeAndDeserializeResponseMessageFromObjectMapper() throws IOException {
+        final ObjectMapper om = GraphSONMapper.build().version(GraphSONVersion.V2_0)
                 .addCustomModule(new GraphSONMessageSerializerGremlinV2d0.GremlinServerModule())
                 .create().createMapper();
-        Graph graph = TinkerFactory.createModern();
+        final Graph graph = TinkerFactory.createModern();
 
-        ResponseMessage responseMessage = ResponseMessage.build(UUID.fromString("41d2e28a-20a4-4ab0-b379-d810dede3786")).
+        final ResponseMessage responseMessage = ResponseMessage.build(UUID.fromString("41d2e28a-20a4-4ab0-b379-d810dede3786")).
                 code(org.apache.tinkerpop.gremlin.driver.message.ResponseStatusCode.SUCCESS).
                 result(Collections.singletonList(graph.vertices().next())).create();
 
-        String respJson = om.writeValueAsString(responseMessage);
-        ResponseMessage responseMessageRead = om.readValue(respJson, ResponseMessage.class);
+        final String respJson = om.writeValueAsString(responseMessage);
+        final ResponseMessage responseMessageRead = om.readValue(respJson, ResponseMessage.class);
 
         assertEquals(responseMessage.getRequestId(), responseMessageRead.getRequestId());
         assertEquals(responseMessage.getResult().getMeta(), responseMessageRead.getResult().getMeta());


[28/50] [abbrv] tinkerpop git commit: fixed an NPE in AddVertexStartStep. In PathRetractionStrategy, NoOpBarriers are only added to global children as 99% of local children are by()-modulation based and thus, there is no point to fully compute the traver

Posted by sp...@apache.org.
fixed an NPE in AddVertexStartStep. In PathRetractionStrategy, NoOpBarriers are only added to global children as 99% of local children are by()-modulation based and thus, there is no point to fully compute the traversal if only the first next() is going to be used.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/27606453
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/27606453
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/27606453

Branch: refs/heads/TINKERPOP-1565
Commit: 276064530617c04706b62ac57ec4e2e660a756a4
Parents: 2d824cf
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Mon Jan 9 09:36:15 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Mon Jan 9 09:36:15 2017 -0700

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  2 +
 .../traversal/step/map/AddVertexStartStep.java  |  8 +--
 .../optimization/PathRetractionStrategy.java    |  3 +-
 .../step/map/GroovyAddVertexTest.groovy         | 10 ++++
 .../traversal/step/map/AddVertexTest.java       | 53 +++++++++++++++++++-
 5 files changed, 70 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/27606453/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 805db7b..4411f99 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -26,6 +26,8 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 TinkerPop 3.2.4 (Release Date: NOT OFFICIALLY RELEASED YET)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
+* `PathRetractionStrategy` does not add a `NoOpBarrierStep` to the end of local children as its wasted computation in 99% of traversals.
+* Fixed a bug in `AddVertexStartStep` where if a side-effect was being used in the parametrization, an NPE occurred.
 * Fixed a bug in `LazyBarrierStrategy` where `profile()` was deactivating it accidentally.
 * Fixed a bug in `RepeatUnrollStrategy` where stateful `DedupGlobalStep` was cloned and thus, maintained two deduplication sets.
 * Added documentation around "terminal steps" in Gremlin: `hasNext()`, `next()`, `toList()`, etc.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/27606453/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java
index 24fedd2..58c3ef3 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java
@@ -19,8 +19,10 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Parameterizing;
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.TraverserGenerator;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Mutating;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep;
@@ -29,7 +31,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.CallbackRe
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.Event;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.ListCallbackRegistry;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
-import org.apache.tinkerpop.gremlin.process.traversal.traverser.util.EmptyTraverser;
 import org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementException;
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
@@ -75,12 +76,13 @@ public final class AddVertexStartStep extends AbstractStep<Vertex, Vertex> imple
     protected Traverser.Admin<Vertex> processNextStart() {
         if (this.first) {
             this.first = false;
-            final Vertex vertex = this.getTraversal().getGraph().get().addVertex(this.parameters.getKeyValues(EmptyTraverser.instance()));
+            final TraverserGenerator generator = this.getTraversal().getTraverserGenerator();
+            final Vertex vertex = this.getTraversal().getGraph().get().addVertex(this.parameters.getKeyValues(generator.generate(false, (Step) this, 1L)));
             if (this.callbackRegistry != null) {
                 final Event.VertexAddedEvent vae = new Event.VertexAddedEvent(DetachedFactory.detach(vertex, true));
                 this.callbackRegistry.getCallbacks().forEach(c -> c.accept(vae));
             }
-            return this.getTraversal().getTraverserGenerator().generate(vertex, this, 1l);
+            return generator.generate(vertex, this, 1L);
         } else
             throw FastNoSuchElementException.instance();
     }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/27606453/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathRetractionStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathRetractionStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathRetractionStrategy.java
index da869b2..1d09748 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathRetractionStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/PathRetractionStrategy.java
@@ -109,7 +109,8 @@ public final class PathRetractionStrategy extends AbstractTraversalStrategy<Trav
                         !(currentStep instanceof MatchStep) &&
                         !(currentStep instanceof Barrier) &&
                         !(currentStep.getNextStep() instanceof Barrier) &&
-                        !(currentStep.getTraversal().getParent() instanceof MatchStep))
+                        !(currentStep.getTraversal().getParent() instanceof MatchStep) &&
+                        TraversalHelper.isGlobalChild(currentStep.getTraversal()))
                     TraversalHelper.insertAfterStep(new NoOpBarrierStep<>(traversal, this.standardBarrierSize), currentStep, traversal);
             }
         }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/27606453/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddVertexTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddVertexTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddVertexTest.groovy
index 5ff3fb3..00312fa 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddVertexTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroovyAddVertexTest.groovy
@@ -76,6 +76,16 @@ public abstract class GroovyAddVertexTest {
             new ScriptTraversal<>(g, "gremlin-groovy", "g.V.addV('animal').property('name', values('name')).property('name', 'an animal').property(values('name'), label())")
         }
 
+        @Override
+        public Traversal<Vertex, Map<String, List<String>>> get_g_withSideEffectXa_testX_V_hasLabelXsoftwareX_propertyXtemp_selectXaXX_valueMapXname_tempX() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.withSideEffect('a', 'test').V.hasLabel('software').property('temp', select('a')).valueMap('name', 'temp')")
+        }
+
+        @Override
+        public Traversal<Vertex, String> get_g_withSideEffectXa_markoX_addV_propertyXname_selectXaXX_name() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.withSideEffect('a', 'marko').addV().property('name', select('a')).name")
+        }
+
         ///////// DEPRECATED BELOW
 
         @Override

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/27606453/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexTest.java
index 0186fa6..f43c612 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexTest.java
@@ -32,11 +32,17 @@ import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.select;
 import static org.hamcrest.Matchers.containsInAnyOrder;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
@@ -62,6 +68,10 @@ public abstract class AddVertexTest extends AbstractGremlinTest {
 
     public abstract Traversal<Vertex, Vertex> get_g_V_addVXanimalX_propertyXname_valuesXnameXX_propertyXname_an_animalX_propertyXvaluesXnameX_labelX();
 
+    public abstract Traversal<Vertex, Map<String, List<String>>> get_g_withSideEffectXa_testX_V_hasLabelXsoftwareX_propertyXtemp_selectXaXX_valueMapXname_tempX();
+
+    public abstract Traversal<Vertex, String> get_g_withSideEffectXa_markoX_addV_propertyXname_selectXaXX_name();
+
     // 3.0.0 DEPRECATIONS
     @Deprecated
     public abstract Traversal<Vertex, Vertex> get_g_V_addVXlabel_animal_age_0X();
@@ -275,12 +285,41 @@ public abstract class AddVertexTest extends AbstractGremlinTest {
         assertEquals(7, IteratorUtils.count(g.V()));
     }
 
+    @Test
+    @LoadGraphWith(MODERN)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_PROPERTY)
+    public void g_withSideEffectXa_testX_V_hasLabelXsoftwareX_propertyXtemp_selectXaXX_valueMapXname_tempX() {
+        final Traversal<Vertex, Map<String, List<String>>> traversal = get_g_withSideEffectXa_testX_V_hasLabelXsoftwareX_propertyXtemp_selectXaXX_valueMapXname_tempX();
+        printTraversalForm(traversal);
+        int counter = 0;
+        while (traversal.hasNext()) {
+            counter++;
+            final Map<String, List<String>> valueMap = traversal.next();
+            assertEquals(2, valueMap.size());
+            assertEquals(Collections.singletonList("test"), valueMap.get("temp"));
+            assertTrue(valueMap.get("name").equals(Collections.singletonList("ripple")) || valueMap.get("name").equals(Collections.singletonList("lop")));
+        }
+        assertEquals(2, counter);
+        assertFalse(traversal.hasNext());
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES)
+    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = Graph.Features.VertexFeatures.FEATURE_ADD_PROPERTY)
+    public void g_withSideEffectXa_markoX_addV_propertyXname_selectXaXX_name() {
+        final Traversal<Vertex, String> traversal = get_g_withSideEffectXa_markoX_addV_propertyXname_selectXaXX_name();
+        printTraversalForm(traversal);
+        assertEquals("marko", traversal.next());
+        assertFalse(traversal.hasNext());
+    }
+
 
     public static class Traversals extends AddVertexTest {
 
         @Override
         public Traversal<Vertex, Vertex> get_g_VX1X_addVXanimalX_propertyXage_selectXaX_byXageXX_propertyXname_puppyX(final Object v1Id) {
-            return g.V(v1Id).as("a").addV("animal").property("age", __.select("a").by("age")).property("name", "puppy");
+            return g.V(v1Id).as("a").addV("animal").property("age", select("a").by("age")).property("name", "puppy");
         }
 
         @Override
@@ -332,5 +371,15 @@ public abstract class AddVertexTest extends AbstractGremlinTest {
         public Traversal<Vertex, Vertex> get_g_addVXlabel_person_name_stephenX() {
             return g.addV(T.label, "person", "name", "stephen");
         }
+
+        @Override
+        public Traversal<Vertex, Map<String, List<String>>> get_g_withSideEffectXa_testX_V_hasLabelXsoftwareX_propertyXtemp_selectXaXX_valueMapXname_tempX() {
+            return g.withSideEffect("a", "test").V().hasLabel("software").property("temp", select("a")).valueMap("name", "temp");
+        }
+
+        @Override
+        public Traversal<Vertex, String> get_g_withSideEffectXa_markoX_addV_propertyXname_selectXaXX_name() {
+            return g.withSideEffect("a", "marko").addV().property("name", select("a")).values("name");
+        }
     }
 }
\ No newline at end of file


[18/50] [abbrv] tinkerpop git commit: Enabled testing of ResponseMessage in io test framework

Posted by sp...@apache.org.
Enabled testing of ResponseMessage in io test framework

A fix in tp32 allowed this to start working on PR 523 CTR


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/0819a686
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/0819a686
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/0819a686

Branch: refs/heads/TINKERPOP-1565
Commit: 0819a686a62e2f9ca413d7339460b3b267ea067d
Parents: 18f074a
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Jan 9 07:32:33 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Jan 9 07:32:33 2017 -0500

----------------------------------------------------------------------
 .../java/org/apache/tinkerpop/gremlin/structure/io/Model.java   | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0819a686/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Model.java
----------------------------------------------------------------------
diff --git a/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Model.java b/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Model.java
index 0d80b8e..341e62b 100644
--- a/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Model.java
+++ b/gremlin-tools/gremlin-io-test/src/main/java/org/apache/tinkerpop/gremlin/structure/io/Model.java
@@ -308,7 +308,7 @@ public class Model {
                 .before("3.0")
                 .match();
 
-        // TODO: need to get Request/ResponseMessages to be included - logic is held in GraphSONMessageSerializer
+        // TODO: need to get RequestMessage to be included - logic is held in GraphSONMessageSerializer
         incompatibilityList.addAll(Compatibilities.with(GraphSONCompatibility.class).configuredAs(".*partial.*").match());
 
         final Compatibility[] incompatibilities = new Compatibility[incompatibilityList.size()];
@@ -321,9 +321,6 @@ public class Model {
                 .before("3.0")
                 .match();
 
-        // TODO: need to get Request/ResponseMessages to be included - logic is held in GraphSONMessageSerializer
-        incompatibilityList.addAll(Compatibilities.with(GraphSONCompatibility.class).configuredAs(".*partial.*").match());
-
         // TODO: temporary problem? seems to be something breaking in vertex serialization
         if (title.equals("Standard Result"))
             incompatibilityList.addAll(Compatibilities.with(GraphSONCompatibility.class).configuredAs(".*no-types").match());


[02/50] [abbrv] tinkerpop git commit: Added TinkerWorkerMemory which will aggregate local to the current thread before propagated Memory to TinkerMemory. This reduces synchronization issues due all threads contending to mutate the master memory.

Posted by sp...@apache.org.
Added TinkerWorkerMemory which will aggregate local to the current thread before propagated Memory to TinkerMemory. This reduces synchronization issues due all threads contending to mutate the master memory.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/0db0991c
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/0db0991c
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/0db0991c

Branch: refs/heads/TINKERPOP-1565
Commit: 0db0991cc092e33091068f59f81c27feb9712379
Parents: f352b01
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Jan 3 17:59:39 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Jan 5 16:59:45 2017 -0700

----------------------------------------------------------------------
 .../gremlin/process/traversal/step/map/GroupStep.java        | 3 ++-
 .../tinkergraph/process/computer/TinkerGraphComputer.java    | 8 +++++---
 .../gremlin/tinkergraph/process/computer/TinkerMemory.java   | 2 +-
 3 files changed, 8 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0db0991c/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
index 7d80d69..de4e223 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java
@@ -131,6 +131,7 @@ public final class GroupStep<S, K, V> extends ReducingBarrierStep<S, Map<K, V>>
             clone.keyTraversal = this.keyTraversal.clone();
         clone.valueTraversal = this.valueTraversal.clone();
         clone.preTraversal = (Traversal.Admin<S, ?>) GroupStep.generatePreTraversal(clone.valueTraversal);
+        clone.setReducingBiOperator(new GroupBiOperator<>(clone.valueTraversal));
         return clone;
     }
 
@@ -171,7 +172,7 @@ public final class GroupStep<S, K, V> extends ReducingBarrierStep<S, Map<K, V>>
                 this.valueTraversal = null;
                 this.barrierStep = null;
             } else {
-                this.valueTraversal = valueTraversal;
+                this.valueTraversal = valueTraversal.clone();
                 this.barrierStep = TraversalHelper.getFirstStepOfAssignableClass(Barrier.class, this.valueTraversal).orElse(null);
             }
         }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0db0991c/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerGraphComputer.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerGraphComputer.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerGraphComputer.java
index c333130..fef2e1a 100644
--- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerGraphComputer.java
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerGraphComputer.java
@@ -169,7 +169,8 @@ public final class TinkerGraphComputer implements GraphComputer {
                         workers.setVertexProgram(this.vertexProgram);
                         final SynchronizedIterator<Vertex> vertices = new SynchronizedIterator<>(this.graph.vertices());
                         workers.executeVertexProgram(vertexProgram -> {
-                            vertexProgram.workerIterationStart(this.memory.asImmutable());
+                            final TinkerWorkerMemory workerMemory = new TinkerWorkerMemory(this.memory);
+                            vertexProgram.workerIterationStart(workerMemory.asImmutable());
                             while (true) {
                                 final Vertex vertex = vertices.next();
                                 if (Thread.interrupted()) throw new TraversalInterruptedException();
@@ -177,10 +178,11 @@ public final class TinkerGraphComputer implements GraphComputer {
                                 vertexProgram.execute(
                                         ComputerGraph.vertexProgram(vertex, vertexProgram),
                                         new TinkerMessenger<>(vertex, this.messageBoard, vertexProgram.getMessageCombiner()),
-                                        this.memory
+                                        workerMemory
                                 );
                             }
-                            vertexProgram.workerIterationEnd(this.memory.asImmutable());
+                            vertexProgram.workerIterationEnd(workerMemory.asImmutable());
+                            workerMemory.complete();
                         });
                         this.messageBoard.completeIteration();
                         this.memory.completeSubRound();

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0db0991c/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMemory.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMemory.java b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMemory.java
index 34144e3..1502d84 100644
--- a/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMemory.java
+++ b/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/computer/TinkerMemory.java
@@ -138,7 +138,7 @@ public final class TinkerMemory implements Memory.Admin {
         return StringFactory.memoryString(this);
     }
 
-    private void checkKeyValue(final String key, final Object value) {
+    protected void checkKeyValue(final String key, final Object value) {
         if (!this.memoryKeys.containsKey(key))
             throw GraphComputer.Exceptions.providedKeyIsNotAMemoryComputeKey(key);
         MemoryHelper.validateValue(value);


[22/50] [abbrv] tinkerpop git commit: Merge branch 'tp31' into tp32

Posted by sp...@apache.org.
Merge branch 'tp31' into tp32


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/be5b64a5
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/be5b64a5
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/be5b64a5

Branch: refs/heads/TINKERPOP-1565
Commit: be5b64a5c089a6b2c3a98bdc062438cde8096a73
Parents: 2f68d7e a27a048
Author: Robert Dale <ro...@gmail.com>
Authored: Mon Jan 9 09:17:10 2017 -0500
Committer: Robert Dale <ro...@gmail.com>
Committed: Mon Jan 9 09:17:10 2017 -0500

----------------------------------------------------------------------
 docs/src/reference/gremlin-applications.asciidoc | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/be5b64a5/docs/src/reference/gremlin-applications.asciidoc
----------------------------------------------------------------------
diff --cc docs/src/reference/gremlin-applications.asciidoc
index 53b1dfd,1a2398d..e515ef7
--- a/docs/src/reference/gremlin-applications.asciidoc
+++ b/docs/src/reference/gremlin-applications.asciidoc
@@@ -687,10 -613,9 +687,10 @@@ The following table describes the vario
  |Key |Description |Default
  |connectionPool.channelizer |The fully qualified classname of the client `Channelizer` that defines how to connect to the server. |`Channelizer.WebSocketChannelizer`
  |connectionPool.enableSsl |Determines if SSL should be enabled or not. If enabled on the server then it must be enabled on the client. |false
 +|connectionPool.keepAliveInterval |Length of time in milliseconds to wait on an idle connection before sending a keep-alive request. Set to zero to disable this feature. |1800000
  |connectionPool.keyCertChainFile |The X.509 certificate chain file in PEM format. |_none_
  |connectionPool.keyFile |The `PKCS#8` private key file in PEM format. |_none_
- |connectionPool.keyPassword |The password of the `keyFile` if it's not password-protected |_none_
+ |connectionPool.keyPassword |The password of the `keyFile` if it is password-protected |_none_
  |connectionPool.maxContentLength |The maximum length in bytes that a message can be sent to the server. This number can be no greater than the setting of the same name in the server configuration. |65536
  |connectionPool.maxInProcessPerConnection |The maximum number of in-flight requests that can occur on a connection. |4
  |connectionPool.maxSimultaneousUsagePerConnection |The maximum number of times that a connection can be borrowed from the pool simultaneously. |16


[33/50] [abbrv] tinkerpop git commit: Merge branch 'tp32'

Posted by sp...@apache.org.
Merge branch 'tp32'


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/69f9e8fc
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/69f9e8fc
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/69f9e8fc

Branch: refs/heads/TINKERPOP-1565
Commit: 69f9e8fc884703648212b7652378e236f5aabaa0
Parents: b2cde4e e3e0bef
Author: davebshow <da...@gmail.com>
Authored: Tue Jan 10 12:09:20 2017 -0500
Committer: davebshow <da...@gmail.com>
Committed: Tue Jan 10 12:09:20 2017 -0500

----------------------------------------------------------------------
 .../driver/driver_remote_connection.py          |  4 +-
 .../test_driver_remote_connection_threaded.py   | 73 ++++++++++++++++++++
 2 files changed, 76 insertions(+), 1 deletion(-)
----------------------------------------------------------------------



[32/50] [abbrv] tinkerpop git commit: Merge branch 'TINKERPOP-1581' into tp32

Posted by sp...@apache.org.
Merge branch 'TINKERPOP-1581' into tp32


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/e3e0bef7
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/e3e0bef7
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/e3e0bef7

Branch: refs/heads/TINKERPOP-1565
Commit: e3e0bef787a60ba9cfd58dd5ef22c0f32025b7e6
Parents: 2d824cf 4340923
Author: davebshow <da...@gmail.com>
Authored: Tue Jan 10 12:08:33 2017 -0500
Committer: davebshow <da...@gmail.com>
Committed: Tue Jan 10 12:08:33 2017 -0500

----------------------------------------------------------------------
 .../driver/driver_remote_connection.py          |  4 +-
 .../test_driver_remote_connection_threaded.py   | 73 ++++++++++++++++++++
 2 files changed, 76 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e3e0bef7/gremlin-python/src/main/jython/gremlin_python/driver/driver_remote_connection.py
----------------------------------------------------------------------


[26/50] [abbrv] tinkerpop git commit: Merge branch 'TINKERPOP-1585' into tp32

Posted by sp...@apache.org.
Merge branch 'TINKERPOP-1585' into tp32


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/2d824cf2
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/2d824cf2
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/2d824cf2

Branch: refs/heads/TINKERPOP-1565
Commit: 2d824cf29f7d914405e262f4111aa2f5a7c272dc
Parents: c3e6ed9 3fd74fc
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Mon Jan 9 07:54:03 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Mon Jan 9 07:54:03 2017 -0700

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |   5 +
 .../process/computer/MemoryComputeKey.java      |  24 +++-
 .../traversal/TraversalVertexProgram.java       |  20 +++-
 .../computer/traversal/WorkerExecutor.java      |   2 +-
 .../traversal/step/branch/RepeatStep.java       |  17 ++-
 .../traversal/step/filter/DedupGlobalStep.java  |  42 ++++---
 .../process/traversal/step/map/GroupStep.java   |  21 +++-
 .../traversal/step/map/OrderGlobalStep.java     |  13 ++-
 .../optimization/RepeatUnrollStrategy.java      |   6 +-
 .../tinkerpop/gremlin/util/Serializer.java      |   4 +
 .../util/function/ChainedComparator.java        |  18 ++-
 .../step/filter/GroovyDedupTest.groovy          |   5 +
 .../traversal/step/filter/DedupTest.java        |  20 +++-
 .../SparkInterceptorStrategyTest.java           |   2 +-
 .../process/computer/TinkerGraphComputer.java   |  22 ++--
 .../computer/TinkerGraphComputerView.java       |  32 +++---
 .../process/computer/TinkerMemory.java          |   2 +-
 .../process/computer/TinkerWorkerMemory.java    | 109 +++++++++++++++++++
 .../process/computer/TinkerWorkerPool.java      |  43 +++++++-
 19 files changed, 340 insertions(+), 67 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2d824cf2/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --cc CHANGELOG.asciidoc
index c090940,d7f4256..805db7b
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@@ -26,10 -26,13 +26,15 @@@ image::https://raw.githubusercontent.co
  TinkerPop 3.2.4 (Release Date: NOT OFFICIALLY RELEASED YET)
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  
 +* Fixed a bug in `LazyBarrierStrategy` where `profile()` was deactivating it accidentally.
+ * Fixed a bug in `RepeatUnrollStrategy` where stateful `DedupGlobalStep` was cloned and thus, maintained two deduplication sets.
  * Added documentation around "terminal steps" in Gremlin: `hasNext()`, `next()`, `toList()`, etc.
 +* Added `CloseableIterator` to allow `Graph` providers who open expensive resources a way to let users release them.
  * Fixed minor bug in `gremlin-driver` where closing a session-based `Client` without initializing it could generate an error.
+ * Relieved synchronization pressure in various areas of `TinkerGraphComputer`.
+ * Fixed an optimization bug in OLAP-based `DedupGlobalStep` where deduping occurred twice.
+ * `MemoryComputeKey` now implements `Cloneable` which is useful for `BiOperator` reducers that maintain thread-unsafe state.
+ * `TinkerGraphComputer` now supports distributed `Memory` with lock-free partition aggregation.
  * `TinkerGraph` Gryo and GraphSON deserialization is now configured to use multi-properties.
  * Changed behavior of `ElementHelper.areEqual(Property, Property)` to not throw exceptions with `null` arguments.
  * Added `GryoVersion` for future flexibility when introducing a new verison of Gryo and moved serializer registrations to it.


[10/50] [abbrv] tinkerpop git commit: now that MemoryComputeKeys are cloneable, they are cloned accordignly in TraversalVertexProgram.clone().

Posted by sp...@apache.org.
now that MemoryComputeKeys are cloneable, they are cloned accordignly in TraversalVertexProgram.clone().


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/253248e5
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/253248e5
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/253248e5

Branch: refs/heads/TINKERPOP-1565
Commit: 253248e52b334d3990f6364d45174abca00476cd
Parents: 3dd1f6e
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Wed Jan 4 12:50:17 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Jan 5 17:00:17 2017 -0700

----------------------------------------------------------------------
 .../process/computer/traversal/TraversalVertexProgram.java       | 4 ++++
 1 file changed, 4 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/253248e5/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
index b82e265..30739b4 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/TraversalVertexProgram.java
@@ -369,6 +369,10 @@ public final class TraversalVertexProgram implements VertexProgram<TraverserSet<
             if (!clone.traversal.get().isLocked())
                 clone.traversal.get().applyStrategies();
             clone.traversalMatrix = new TraversalMatrix<>(clone.traversal.get());
+            clone.memoryComputeKeys = new HashSet<>();
+            for (final MemoryComputeKey memoryComputeKey : this.memoryComputeKeys) {
+                clone.memoryComputeKeys.add(memoryComputeKey.clone());
+            }
             return clone;
         } catch (final CloneNotSupportedException e) {
             throw new IllegalStateException(e.getMessage(), e);


[23/50] [abbrv] tinkerpop git commit: Merge branch 'tp32'

Posted by sp...@apache.org.
Merge branch 'tp32'


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/d64f270c
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/d64f270c
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/d64f270c

Branch: refs/heads/TINKERPOP-1565
Commit: d64f270ca798623c865685d7106d343bd4d8052b
Parents: 362bb05 be5b64a
Author: Robert Dale <ro...@gmail.com>
Authored: Mon Jan 9 09:17:27 2017 -0500
Committer: Robert Dale <ro...@gmail.com>
Committed: Mon Jan 9 09:17:27 2017 -0500

----------------------------------------------------------------------
 docs/src/reference/gremlin-applications.asciidoc | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d64f270c/docs/src/reference/gremlin-applications.asciidoc
----------------------------------------------------------------------


[46/50] [abbrv] tinkerpop git commit: Merge branch 'tp32'

Posted by sp...@apache.org.
Merge branch 'tp32'


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/e41d9ca0
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/e41d9ca0
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/e41d9ca0

Branch: refs/heads/TINKERPOP-1565
Commit: e41d9ca002252387aee9c23e14247e121613a3f4
Parents: 1288ad3 31439c0
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Jan 10 17:56:58 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Tue Jan 10 17:56:58 2017 -0700

----------------------------------------------------------------------
 .../step/filter/GroovyDedupTest.groovy          |  4 ++--
 .../traversal/step/filter/DedupTest.java        | 23 ++++++++++----------
 2 files changed, 14 insertions(+), 13 deletions(-)
----------------------------------------------------------------------



[24/50] [abbrv] tinkerpop git commit: Fixed a ( ) bug in LazyBarrierStrateagy. TINKERPOP-1594. CTR.

Posted by sp...@apache.org.
Fixed a ( ) bug in LazyBarrierStrateagy. TINKERPOP-1594. CTR.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/c3e6ed90
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/c3e6ed90
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/c3e6ed90

Branch: refs/heads/TINKERPOP-1565
Commit: c3e6ed9031eab3f698a149c7c2c3f70c095ec8f6
Parents: be5b64a
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Mon Jan 9 07:43:50 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Mon Jan 9 07:43:50 2017 -0700

----------------------------------------------------------------------
 CHANGELOG.asciidoc                                               | 1 +
 .../traversal/strategy/optimization/LazyBarrierStrategy.java     | 4 ++--
 2 files changed, 3 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c3e6ed90/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 89dcce4..c090940 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -26,6 +26,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 TinkerPop 3.2.4 (Release Date: NOT OFFICIALLY RELEASED YET)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
+* Fixed a bug in `LazyBarrierStrategy` where `profile()` was deactivating it accidentally.
 * Added documentation around "terminal steps" in Gremlin: `hasNext()`, `next()`, `toList()`, etc.
 * Added `CloseableIterator` to allow `Graph` providers who open expensive resources a way to let users release them.
 * Fixed minor bug in `gremlin-driver` where closing a session-based `Client` without initializing it could generate an error.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c3e6ed90/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/LazyBarrierStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/LazyBarrierStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/LazyBarrierStrategy.java
index 96da26f..1f2d758 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/LazyBarrierStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/optimization/LazyBarrierStrategy.java
@@ -65,8 +65,8 @@ public final class LazyBarrierStrategy extends AbstractTraversalStrategy<Travers
     public void apply(final Traversal.Admin<?, ?> traversal) {
         if (TraversalHelper.onGraphComputer(traversal) ||
                 traversal.getTraverserRequirements().contains(TraverserRequirement.PATH) ||
-                (IS_TESTING && (TraversalHelper.hasStepOfAssignableClass(ProfileStep.class, TraversalHelper.getRootTraversal(traversal))) ||
-                        TraversalHelper.hasStepOfAssignableClass(ProfileSideEffectStep.class, TraversalHelper.getRootTraversal(traversal)))) // necessary cause ProfileTest analyzes counts
+                (IS_TESTING && ((TraversalHelper.hasStepOfAssignableClass(ProfileStep.class, TraversalHelper.getRootTraversal(traversal)) ||
+                        TraversalHelper.hasStepOfAssignableClass(ProfileSideEffectStep.class, TraversalHelper.getRootTraversal(traversal)))))) // necessary cause ProfileTest analyzes counts
             return;
 
         boolean foundFlatMap = false;


[14/50] [abbrv] tinkerpop git commit: Merge remote-tracking branch 'origin/TINKERPOP-1130'

Posted by sp...@apache.org.
Merge remote-tracking branch 'origin/TINKERPOP-1130'


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/e248da06
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/e248da06
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/e248da06

Branch: refs/heads/TINKERPOP-1565
Commit: e248da06ee309deb8e9994b8cdbfe4531fdb81c4
Parents: 1858872 3f4f04d
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Jan 6 14:24:43 2017 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Jan 6 14:24:43 2017 -0500

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |    2 +
 docs/src/dev/io/graphson.asciidoc               | 1682 ++++--------------
 docs/src/upgrade/release-3.3.x.asciidoc         |   10 +-
 .../process/traversal/util/MutableMetrics.java  |    2 +-
 .../gremlin/structure/io/gryo/GryoVersion.java  |  194 +-
 .../structure/io/gryo/kryoshim/InputShim.java   |    4 +-
 .../kryoshim/shaded/ShadedInputAdapter.java     |   13 +-
 .../ser/AbstractGryoMessageSerializerV3d0.java  |  278 +++
 .../ser/RequestMessageGryoSerializer.java       |   57 +
 .../ser/ResponseMessageGryoSerializer.java      |   67 +
 .../ser/GryoBaseMessageSerializerV1d0Test.java  |    2 +-
 gremlin-tools/gremlin-io-test/pom.xml           |  386 ++++
 .../gremlin/structure/io/Compatibilities.java   |  196 ++
 .../gremlin/structure/io/Compatibility.java     |   44 +
 .../tinkerpop/gremlin/structure/io/Model.java   |  463 +++++
 .../io/graphson/GraphSONCompatibility.java      |   77 +
 .../structure/io/gryo/GryoCompatibility.java    |  111 ++
 .../structure/io/AbstractCompatibilityTest.java |   99 ++
 .../io/AbstractTypedCompatibilityTest.java      | 1020 +++++++++++
 .../io/AbstractUntypedCompatibilityTest.java    |  394 ++++
 .../structure/io/CompatibilitiesTest.java       |  106 ++
 .../GraphSONTypedCompatibilityTest.java         |   71 +
 .../GraphSONUntypedCompatibilityTest.java       |   82 +
 .../io/gryo/GryoCompatibilityTest.java          |   80 +
 .../src/test/resources/log4j-silent.properties  |   23 +
 .../src/test/resources/log4j-test.properties    |   21 +
 .../_3_2_3/authenticationchallenge-v1d0.json    |   12 +
 .../authenticationchallenge-v2d0-no-types.json  |   12 +
 .../authenticationchallenge-v2d0-partial.json   |   12 +
 .../_3_2_3/authenticationresponse-v1d0.json     |    9 +
 .../authenticationresponse-v2d0-no-types.json   |    9 +
 .../authenticationresponse-v2d0-partial.json    |   12 +
 .../graphson/_3_2_3/barrier-v2d0-no-types.json  |    1 +
 .../graphson/_3_2_3/barrier-v2d0-partial.json   |    4 +
 .../_3_2_3/bigdecimal-v2d0-no-types.json        |    1 +
 .../_3_2_3/bigdecimal-v2d0-partial.json         |    4 +
 .../_3_2_3/biginteger-v2d0-no-types.json        |    1 +
 .../_3_2_3/biginteger-v2d0-partial.json         |    4 +
 .../graphson/_3_2_3/binding-v2d0-no-types.json  |    4 +
 .../graphson/_3_2_3/binding-v2d0-partial.json   |   10 +
 .../io/graphson/_3_2_3/byte-v2d0-no-types.json  |    1 +
 .../io/graphson/_3_2_3/byte-v2d0-partial.json   |    4 +
 .../_3_2_3/bytebuffer-v2d0-no-types.json        |    1 +
 .../_3_2_3/bytebuffer-v2d0-partial.json         |    4 +
 .../graphson/_3_2_3/bytecode-v2d0-no-types.json |    6 +
 .../graphson/_3_2_3/bytecode-v2d0-partial.json  |   15 +
 .../_3_2_3/cardinality-v2d0-no-types.json       |    1 +
 .../_3_2_3/cardinality-v2d0-partial.json        |    4 +
 .../io/graphson/_3_2_3/char-v2d0-no-types.json  |    1 +
 .../io/graphson/_3_2_3/char-v2d0-partial.json   |    4 +
 .../io/graphson/_3_2_3/class-v2d0-no-types.json |    1 +
 .../io/graphson/_3_2_3/class-v2d0-partial.json  |    4 +
 .../graphson/_3_2_3/column-v2d0-no-types.json   |    1 +
 .../io/graphson/_3_2_3/column-v2d0-partial.json |    4 +
 .../io/graphson/_3_2_3/date-v2d0-no-types.json  |    1 +
 .../io/graphson/_3_2_3/date-v2d0-partial.json   |    4 +
 .../_3_2_3/direction-v2d0-no-types.json         |    1 +
 .../graphson/_3_2_3/direction-v2d0-partial.json |    4 +
 .../graphson/_3_2_3/double-v2d0-no-types.json   |    1 +
 .../io/graphson/_3_2_3/double-v2d0-partial.json |    4 +
 .../graphson/_3_2_3/duration-v2d0-no-types.json |    1 +
 .../graphson/_3_2_3/duration-v2d0-partial.json  |    4 +
 .../structure/io/graphson/_3_2_3/edge-v1d0.json |   12 +
 .../io/graphson/_3_2_3/edge-v2d0-no-types.json  |   14 +
 .../io/graphson/_3_2_3/edge-v2d0-partial.json   |   32 +
 .../io/graphson/_3_2_3/float-v2d0-no-types.json |    1 +
 .../io/graphson/_3_2_3/float-v2d0-partial.json  |    4 +
 .../_3_2_3/inetaddress-v2d0-no-types.json       |    1 +
 .../_3_2_3/inetaddress-v2d0-partial.json        |    4 +
 .../graphson/_3_2_3/instant-v2d0-no-types.json  |    1 +
 .../graphson/_3_2_3/instant-v2d0-partial.json   |    4 +
 .../graphson/_3_2_3/integer-v2d0-no-types.json  |    1 +
 .../graphson/_3_2_3/integer-v2d0-partial.json   |    4 +
 .../graphson/_3_2_3/lambda-v2d0-no-types.json   |    5 +
 .../io/graphson/_3_2_3/lambda-v2d0-partial.json |    8 +
 .../_3_2_3/localdate-v2d0-no-types.json         |    1 +
 .../graphson/_3_2_3/localdate-v2d0-partial.json |    4 +
 .../_3_2_3/localdatetime-v2d0-no-types.json     |    1 +
 .../_3_2_3/localdatetime-v2d0-partial.json      |    4 +
 .../_3_2_3/localtime-v2d0-no-types.json         |    1 +
 .../graphson/_3_2_3/localtime-v2d0-partial.json |    4 +
 .../io/graphson/_3_2_3/long-v2d0-no-types.json  |    1 +
 .../io/graphson/_3_2_3/long-v2d0-partial.json   |    4 +
 .../_3_2_3/manual-graphson-generator.groovy     |  310 ++++
 .../graphson/_3_2_3/metrics-v2d0-no-types.json  |   24 +
 .../graphson/_3_2_3/metrics-v2d0-partial.json   |   54 +
 .../graphson/_3_2_3/monthday-v2d0-no-types.json |    1 +
 .../graphson/_3_2_3/monthday-v2d0-partial.json  |    4 +
 .../_3_2_3/offsetdatetime-v2d0-no-types.json    |    1 +
 .../_3_2_3/offsetdatetime-v2d0-partial.json     |    4 +
 .../_3_2_3/offsettime-v2d0-no-types.json        |    1 +
 .../_3_2_3/offsettime-v2d0-partial.json         |    4 +
 .../graphson/_3_2_3/operator-v2d0-no-types.json |    1 +
 .../graphson/_3_2_3/operator-v2d0-partial.json  |    4 +
 .../io/graphson/_3_2_3/order-v2d0-no-types.json |    1 +
 .../io/graphson/_3_2_3/order-v2d0-partial.json  |    4 +
 .../io/graphson/_3_2_3/p-v2d0-no-types.json     |    4 +
 .../io/graphson/_3_2_3/p-v2d0-partial.json      |   10 +
 .../io/graphson/_3_2_3/pand-v2d0-no-types.json  |   10 +
 .../io/graphson/_3_2_3/pand-v2d0-partial.json   |   25 +
 .../structure/io/graphson/_3_2_3/path-v1d0.json |   62 +
 .../io/graphson/_3_2_3/path-v2d0-no-types.json  |   66 +
 .../io/graphson/_3_2_3/path-v2d0-partial.json   |  150 ++
 .../graphson/_3_2_3/period-v2d0-no-types.json   |    1 +
 .../io/graphson/_3_2_3/period-v2d0-partial.json |    4 +
 .../io/graphson/_3_2_3/pop-v2d0-no-types.json   |    1 +
 .../io/graphson/_3_2_3/pop-v2d0-partial.json    |    4 +
 .../io/graphson/_3_2_3/por-v2d0-no-types.json   |   10 +
 .../io/graphson/_3_2_3/por-v2d0-partial.json    |   31 +
 .../io/graphson/_3_2_3/property-v1d0.json       |    4 +
 .../graphson/_3_2_3/property-v2d0-no-types.json |    4 +
 .../graphson/_3_2_3/property-v2d0-partial.json  |   10 +
 .../io/graphson/_3_2_3/scope-v2d0-no-types.json |    1 +
 .../io/graphson/_3_2_3/scope-v2d0-partial.json  |    4 +
 .../io/graphson/_3_2_3/sessionclose-v1d0.json   |    8 +
 .../_3_2_3/sessionclose-v2d0-no-types.json      |    8 +
 .../_3_2_3/sessionclose-v2d0-partial.json       |   14 +
 .../io/graphson/_3_2_3/sessioneval-v1d0.json    |   13 +
 .../_3_2_3/sessioneval-v2d0-no-types.json       |   13 +
 .../_3_2_3/sessioneval-v2d0-partial.json        |   22 +
 .../_3_2_3/sessionevalaliased-v1d0.json         |   16 +
 .../sessionevalaliased-v2d0-no-types.json       |   16 +
 .../_3_2_3/sessionevalaliased-v2d0-partial.json |   25 +
 .../graphson/_3_2_3/sessionlesseval-v1d0.json   |   12 +
 .../_3_2_3/sessionlesseval-v2d0-no-types.json   |   12 +
 .../_3_2_3/sessionlesseval-v2d0-partial.json    |   18 +
 .../_3_2_3/sessionlessevalaliased-v1d0.json     |   15 +
 .../sessionlessevalaliased-v2d0-no-types.json   |   15 +
 .../sessionlessevalaliased-v2d0-partial.json    |   21 +
 .../io/graphson/_3_2_3/short-v2d0-no-types.json |    1 +
 .../io/graphson/_3_2_3/short-v2d0-partial.json  |    4 +
 .../io/graphson/_3_2_3/standardresult-v1d0.json |   50 +
 .../_3_2_3/standardresult-v2d0-no-types.json    |   54 +
 .../_3_2_3/standardresult-v2d0-partial.json     |  111 ++
 .../io/graphson/_3_2_3/stargraph-v1d0.json      |   66 +
 .../_3_2_3/stargraph-v2d0-no-types.json         |   66 +
 .../graphson/_3_2_3/stargraph-v2d0-partial.json |  141 ++
 .../io/graphson/_3_2_3/t-v2d0-no-types.json     |    1 +
 .../io/graphson/_3_2_3/t-v2d0-partial.json      |    4 +
 .../_3_2_3/timestamp-v2d0-no-types.json         |    1 +
 .../graphson/_3_2_3/timestamp-v2d0-partial.json |    4 +
 .../io/graphson/_3_2_3/tinkergraph-v1d0.json    |  313 ++++
 .../_3_2_3/tinkergraph-v2d0-no-types.json       |  352 ++++
 .../_3_2_3/tinkergraph-v2d0-partial.json        |  829 +++++++++
 .../_3_2_3/traversalmetrics-v2d0-no-types.json  |   48 +
 .../_3_2_3/traversalmetrics-v2d0-partial.json   |  114 ++
 .../_3_2_3/traverser-v2d0-no-types.json         |   46 +
 .../graphson/_3_2_3/traverser-v2d0-partial.json |  109 ++
 .../structure/io/graphson/_3_2_3/tree-v1d0.json |   74 +
 .../io/graphson/_3_2_3/tree-v2d0-no-types.json  |   72 +
 .../io/graphson/_3_2_3/tree-v2d0-partial.json   |  165 ++
 .../io/graphson/_3_2_3/uuid-v2d0-no-types.json  |    1 +
 .../io/graphson/_3_2_3/uuid-v2d0-partial.json   |    4 +
 .../io/graphson/_3_2_3/vertex-v1d0.json         |   39 +
 .../graphson/_3_2_3/vertex-v2d0-no-types.json   |   43 +
 .../io/graphson/_3_2_3/vertex-v2d0-partial.json |  100 ++
 .../io/graphson/_3_2_3/vertexproperty-v1d0.json |    5 +
 .../_3_2_3/vertexproperty-v2d0-no-types.json    |    5 +
 .../_3_2_3/vertexproperty-v2d0-partial.json     |   11 +
 .../io/graphson/_3_2_3/year-v2d0-no-types.json  |    1 +
 .../io/graphson/_3_2_3/year-v2d0-partial.json   |    4 +
 .../_3_2_3/yearmonth-v2d0-no-types.json         |    1 +
 .../graphson/_3_2_3/yearmonth-v2d0-partial.json |    4 +
 .../_3_2_3/zoneddatetime-v2d0-no-types.json     |    1 +
 .../_3_2_3/zoneddatetime-v2d0-partial.json      |    4 +
 .../_3_2_3/zoneoffset-v2d0-no-types.json        |    1 +
 .../_3_2_3/zoneoffset-v2d0-partial.json         |    4 +
 .../_3_2_4/authenticationchallenge-v1d0.json    |   12 +
 .../authenticationchallenge-v2d0-no-types.json  |   12 +
 .../authenticationchallenge-v2d0-partial.json   |   12 +
 .../_3_2_4/authenticationresponse-v1d0.json     |    9 +
 .../authenticationresponse-v2d0-no-types.json   |    9 +
 .../authenticationresponse-v2d0-partial.json    |   12 +
 .../graphson/_3_2_4/barrier-v2d0-no-types.json  |    1 +
 .../graphson/_3_2_4/barrier-v2d0-partial.json   |    4 +
 .../_3_2_4/bigdecimal-v2d0-no-types.json        |    1 +
 .../_3_2_4/bigdecimal-v2d0-partial.json         |    4 +
 .../_3_2_4/biginteger-v2d0-no-types.json        |    1 +
 .../_3_2_4/biginteger-v2d0-partial.json         |    4 +
 .../graphson/_3_2_4/binding-v2d0-no-types.json  |    4 +
 .../graphson/_3_2_4/binding-v2d0-partial.json   |   10 +
 .../io/graphson/_3_2_4/byte-v2d0-no-types.json  |    1 +
 .../io/graphson/_3_2_4/byte-v2d0-partial.json   |    4 +
 .../_3_2_4/bytebuffer-v2d0-no-types.json        |    1 +
 .../_3_2_4/bytebuffer-v2d0-partial.json         |    4 +
 .../graphson/_3_2_4/bytecode-v2d0-no-types.json |    3 +
 .../graphson/_3_2_4/bytecode-v2d0-partial.json  |    6 +
 .../_3_2_4/cardinality-v2d0-no-types.json       |    1 +
 .../_3_2_4/cardinality-v2d0-partial.json        |    4 +
 .../io/graphson/_3_2_4/char-v2d0-no-types.json  |    1 +
 .../io/graphson/_3_2_4/char-v2d0-partial.json   |    4 +
 .../io/graphson/_3_2_4/class-v2d0-no-types.json |    1 +
 .../io/graphson/_3_2_4/class-v2d0-partial.json  |    4 +
 .../graphson/_3_2_4/column-v2d0-no-types.json   |    1 +
 .../io/graphson/_3_2_4/column-v2d0-partial.json |    4 +
 .../io/graphson/_3_2_4/date-v2d0-no-types.json  |    1 +
 .../io/graphson/_3_2_4/date-v2d0-partial.json   |    4 +
 .../_3_2_4/direction-v2d0-no-types.json         |    1 +
 .../graphson/_3_2_4/direction-v2d0-partial.json |    4 +
 .../graphson/_3_2_4/double-v2d0-no-types.json   |    1 +
 .../io/graphson/_3_2_4/double-v2d0-partial.json |    4 +
 .../graphson/_3_2_4/duration-v2d0-no-types.json |    1 +
 .../graphson/_3_2_4/duration-v2d0-partial.json  |    4 +
 .../structure/io/graphson/_3_2_4/edge-v1d0.json |   12 +
 .../io/graphson/_3_2_4/edge-v2d0-no-types.json  |   14 +
 .../io/graphson/_3_2_4/edge-v2d0-partial.json   |   32 +
 .../io/graphson/_3_2_4/float-v2d0-no-types.json |    1 +
 .../io/graphson/_3_2_4/float-v2d0-partial.json  |    4 +
 .../_3_2_4/inetaddress-v2d0-no-types.json       |    1 +
 .../_3_2_4/inetaddress-v2d0-partial.json        |    4 +
 .../graphson/_3_2_4/instant-v2d0-no-types.json  |    1 +
 .../graphson/_3_2_4/instant-v2d0-partial.json   |    4 +
 .../graphson/_3_2_4/integer-v2d0-no-types.json  |    1 +
 .../graphson/_3_2_4/integer-v2d0-partial.json   |    4 +
 .../graphson/_3_2_4/lambda-v2d0-no-types.json   |    5 +
 .../io/graphson/_3_2_4/lambda-v2d0-partial.json |    8 +
 .../_3_2_4/localdate-v2d0-no-types.json         |    1 +
 .../graphson/_3_2_4/localdate-v2d0-partial.json |    4 +
 .../_3_2_4/localdatetime-v2d0-no-types.json     |    1 +
 .../_3_2_4/localdatetime-v2d0-partial.json      |    4 +
 .../_3_2_4/localtime-v2d0-no-types.json         |    1 +
 .../graphson/_3_2_4/localtime-v2d0-partial.json |    4 +
 .../io/graphson/_3_2_4/long-v2d0-no-types.json  |    1 +
 .../io/graphson/_3_2_4/long-v2d0-partial.json   |    4 +
 .../_3_2_4/manual-graphson-generator.groovy     |  310 ++++
 .../graphson/_3_2_4/metrics-v2d0-no-types.json  |   24 +
 .../graphson/_3_2_4/metrics-v2d0-partial.json   |   54 +
 .../graphson/_3_2_4/monthday-v2d0-no-types.json |    1 +
 .../graphson/_3_2_4/monthday-v2d0-partial.json  |    4 +
 .../_3_2_4/offsetdatetime-v2d0-no-types.json    |    1 +
 .../_3_2_4/offsetdatetime-v2d0-partial.json     |    4 +
 .../_3_2_4/offsettime-v2d0-no-types.json        |    1 +
 .../_3_2_4/offsettime-v2d0-partial.json         |    4 +
 .../graphson/_3_2_4/operator-v2d0-no-types.json |    1 +
 .../graphson/_3_2_4/operator-v2d0-partial.json  |    4 +
 .../io/graphson/_3_2_4/order-v2d0-no-types.json |    1 +
 .../io/graphson/_3_2_4/order-v2d0-partial.json  |    4 +
 .../io/graphson/_3_2_4/p-v2d0-no-types.json     |    4 +
 .../io/graphson/_3_2_4/p-v2d0-partial.json      |   10 +
 .../io/graphson/_3_2_4/pand-v2d0-no-types.json  |   10 +
 .../io/graphson/_3_2_4/pand-v2d0-partial.json   |   25 +
 .../structure/io/graphson/_3_2_4/path-v1d0.json |   62 +
 .../io/graphson/_3_2_4/path-v2d0-no-types.json  |   66 +
 .../io/graphson/_3_2_4/path-v2d0-partial.json   |  150 ++
 .../graphson/_3_2_4/period-v2d0-no-types.json   |    1 +
 .../io/graphson/_3_2_4/period-v2d0-partial.json |    4 +
 .../io/graphson/_3_2_4/pop-v2d0-no-types.json   |    1 +
 .../io/graphson/_3_2_4/pop-v2d0-partial.json    |    4 +
 .../io/graphson/_3_2_4/por-v2d0-no-types.json   |   10 +
 .../io/graphson/_3_2_4/por-v2d0-partial.json    |   31 +
 .../io/graphson/_3_2_4/property-v1d0.json       |    4 +
 .../graphson/_3_2_4/property-v2d0-no-types.json |    4 +
 .../graphson/_3_2_4/property-v2d0-partial.json  |   10 +
 .../io/graphson/_3_2_4/scope-v2d0-no-types.json |    1 +
 .../io/graphson/_3_2_4/scope-v2d0-partial.json  |    4 +
 .../io/graphson/_3_2_4/sessionclose-v1d0.json   |    8 +
 .../_3_2_4/sessionclose-v2d0-no-types.json      |    8 +
 .../_3_2_4/sessionclose-v2d0-partial.json       |   14 +
 .../io/graphson/_3_2_4/sessioneval-v1d0.json    |   13 +
 .../_3_2_4/sessioneval-v2d0-no-types.json       |   13 +
 .../_3_2_4/sessioneval-v2d0-partial.json        |   22 +
 .../_3_2_4/sessionevalaliased-v1d0.json         |   16 +
 .../sessionevalaliased-v2d0-no-types.json       |   16 +
 .../_3_2_4/sessionevalaliased-v2d0-partial.json |   25 +
 .../graphson/_3_2_4/sessionlesseval-v1d0.json   |   12 +
 .../_3_2_4/sessionlesseval-v2d0-no-types.json   |   12 +
 .../_3_2_4/sessionlesseval-v2d0-partial.json    |   18 +
 .../_3_2_4/sessionlessevalaliased-v1d0.json     |   15 +
 .../sessionlessevalaliased-v2d0-no-types.json   |   15 +
 .../sessionlessevalaliased-v2d0-partial.json    |   21 +
 .../io/graphson/_3_2_4/short-v2d0-no-types.json |    1 +
 .../io/graphson/_3_2_4/short-v2d0-partial.json  |    4 +
 .../io/graphson/_3_2_4/standardresult-v1d0.json |   50 +
 .../_3_2_4/standardresult-v2d0-no-types.json    |   54 +
 .../_3_2_4/standardresult-v2d0-partial.json     |  111 ++
 .../io/graphson/_3_2_4/stargraph-v1d0.json      |   66 +
 .../_3_2_4/stargraph-v2d0-no-types.json         |   66 +
 .../graphson/_3_2_4/stargraph-v2d0-partial.json |  141 ++
 .../io/graphson/_3_2_4/t-v2d0-no-types.json     |    1 +
 .../io/graphson/_3_2_4/t-v2d0-partial.json      |    4 +
 .../_3_2_4/timestamp-v2d0-no-types.json         |    1 +
 .../graphson/_3_2_4/timestamp-v2d0-partial.json |    4 +
 .../io/graphson/_3_2_4/tinkergraph-v1d0.json    |  313 ++++
 .../_3_2_4/tinkergraph-v2d0-no-types.json       |  352 ++++
 .../_3_2_4/tinkergraph-v2d0-partial.json        |  829 +++++++++
 .../_3_2_4/traversalmetrics-v2d0-no-types.json  |   48 +
 .../_3_2_4/traversalmetrics-v2d0-partial.json   |  114 ++
 .../_3_2_4/traverser-v2d0-no-types.json         |   46 +
 .../graphson/_3_2_4/traverser-v2d0-partial.json |  109 ++
 .../structure/io/graphson/_3_2_4/tree-v1d0.json |   74 +
 .../io/graphson/_3_2_4/tree-v2d0-no-types.json  |   72 +
 .../io/graphson/_3_2_4/tree-v2d0-partial.json   |  165 ++
 .../io/graphson/_3_2_4/uuid-v2d0-no-types.json  |    1 +
 .../io/graphson/_3_2_4/uuid-v2d0-partial.json   |    4 +
 .../io/graphson/_3_2_4/vertex-v1d0.json         |   39 +
 .../graphson/_3_2_4/vertex-v2d0-no-types.json   |   43 +
 .../io/graphson/_3_2_4/vertex-v2d0-partial.json |  100 ++
 .../io/graphson/_3_2_4/vertexproperty-v1d0.json |    5 +
 .../_3_2_4/vertexproperty-v2d0-no-types.json    |    5 +
 .../_3_2_4/vertexproperty-v2d0-partial.json     |   11 +
 .../io/graphson/_3_2_4/year-v2d0-no-types.json  |    1 +
 .../io/graphson/_3_2_4/year-v2d0-partial.json   |    4 +
 .../_3_2_4/yearmonth-v2d0-no-types.json         |    1 +
 .../graphson/_3_2_4/yearmonth-v2d0-partial.json |    4 +
 .../_3_2_4/zoneddatetime-v2d0-no-types.json     |    1 +
 .../_3_2_4/zoneddatetime-v2d0-partial.json      |    4 +
 .../_3_2_4/zoneoffset-v2d0-no-types.json        |    1 +
 .../_3_2_4/zoneoffset-v2d0-partial.json         |    4 +
 .../_3_3_0/authenticationchallenge-v1d0.json    |   12 +
 .../authenticationchallenge-v2d0-no-types.json  |   12 +
 .../authenticationchallenge-v2d0-partial.json   |   12 +
 .../_3_3_0/authenticationresponse-v1d0.json     |    9 +
 .../authenticationresponse-v2d0-no-types.json   |    9 +
 .../authenticationresponse-v2d0-partial.json    |   12 +
 .../graphson/_3_3_0/barrier-v2d0-no-types.json  |    1 +
 .../graphson/_3_3_0/barrier-v2d0-partial.json   |    4 +
 .../_3_3_0/bigdecimal-v2d0-no-types.json        |    1 +
 .../_3_3_0/bigdecimal-v2d0-partial.json         |    4 +
 .../_3_3_0/biginteger-v2d0-no-types.json        |    1 +
 .../_3_3_0/biginteger-v2d0-partial.json         |    4 +
 .../graphson/_3_3_0/binding-v2d0-no-types.json  |    4 +
 .../graphson/_3_3_0/binding-v2d0-partial.json   |   10 +
 .../io/graphson/_3_3_0/byte-v2d0-no-types.json  |    1 +
 .../io/graphson/_3_3_0/byte-v2d0-partial.json   |    4 +
 .../_3_3_0/bytebuffer-v2d0-no-types.json        |    1 +
 .../_3_3_0/bytebuffer-v2d0-partial.json         |    4 +
 .../graphson/_3_3_0/bytecode-v2d0-no-types.json |    3 +
 .../graphson/_3_3_0/bytecode-v2d0-partial.json  |    6 +
 .../_3_3_0/cardinality-v2d0-no-types.json       |    1 +
 .../_3_3_0/cardinality-v2d0-partial.json        |    4 +
 .../io/graphson/_3_3_0/char-v2d0-no-types.json  |    1 +
 .../io/graphson/_3_3_0/char-v2d0-partial.json   |    4 +
 .../io/graphson/_3_3_0/class-v2d0-no-types.json |    1 +
 .../io/graphson/_3_3_0/class-v2d0-partial.json  |    4 +
 .../graphson/_3_3_0/column-v2d0-no-types.json   |    1 +
 .../io/graphson/_3_3_0/column-v2d0-partial.json |    4 +
 .../io/graphson/_3_3_0/date-v2d0-no-types.json  |    1 +
 .../io/graphson/_3_3_0/date-v2d0-partial.json   |    4 +
 .../_3_3_0/direction-v2d0-no-types.json         |    1 +
 .../graphson/_3_3_0/direction-v2d0-partial.json |    4 +
 .../graphson/_3_3_0/double-v2d0-no-types.json   |    1 +
 .../io/graphson/_3_3_0/double-v2d0-partial.json |    4 +
 .../graphson/_3_3_0/duration-v2d0-no-types.json |    1 +
 .../graphson/_3_3_0/duration-v2d0-partial.json  |    4 +
 .../structure/io/graphson/_3_3_0/edge-v1d0.json |   12 +
 .../io/graphson/_3_3_0/edge-v2d0-no-types.json  |   11 +
 .../io/graphson/_3_3_0/edge-v2d0-partial.json   |   26 +
 .../io/graphson/_3_3_0/float-v2d0-no-types.json |    1 +
 .../io/graphson/_3_3_0/float-v2d0-partial.json  |    4 +
 .../_3_3_0/inetaddress-v2d0-no-types.json       |    1 +
 .../_3_3_0/inetaddress-v2d0-partial.json        |    4 +
 .../graphson/_3_3_0/instant-v2d0-no-types.json  |    1 +
 .../graphson/_3_3_0/instant-v2d0-partial.json   |    4 +
 .../graphson/_3_3_0/integer-v2d0-no-types.json  |    1 +
 .../graphson/_3_3_0/integer-v2d0-partial.json   |    4 +
 .../graphson/_3_3_0/lambda-v2d0-no-types.json   |    5 +
 .../io/graphson/_3_3_0/lambda-v2d0-partial.json |    8 +
 .../_3_3_0/localdate-v2d0-no-types.json         |    1 +
 .../graphson/_3_3_0/localdate-v2d0-partial.json |    4 +
 .../_3_3_0/localdatetime-v2d0-no-types.json     |    1 +
 .../_3_3_0/localdatetime-v2d0-partial.json      |    4 +
 .../_3_3_0/localtime-v2d0-no-types.json         |    1 +
 .../graphson/_3_3_0/localtime-v2d0-partial.json |    4 +
 .../io/graphson/_3_3_0/long-v2d0-no-types.json  |    1 +
 .../io/graphson/_3_3_0/long-v2d0-partial.json   |    4 +
 .../graphson/_3_3_0/metrics-v2d0-no-types.json  |   24 +
 .../graphson/_3_3_0/metrics-v2d0-partial.json   |   54 +
 .../graphson/_3_3_0/monthday-v2d0-no-types.json |    1 +
 .../graphson/_3_3_0/monthday-v2d0-partial.json  |    4 +
 .../_3_3_0/offsetdatetime-v2d0-no-types.json    |    1 +
 .../_3_3_0/offsetdatetime-v2d0-partial.json     |    4 +
 .../_3_3_0/offsettime-v2d0-no-types.json        |    1 +
 .../_3_3_0/offsettime-v2d0-partial.json         |    4 +
 .../graphson/_3_3_0/operator-v2d0-no-types.json |    1 +
 .../graphson/_3_3_0/operator-v2d0-partial.json  |    4 +
 .../io/graphson/_3_3_0/order-v2d0-no-types.json |    1 +
 .../io/graphson/_3_3_0/order-v2d0-partial.json  |    4 +
 .../io/graphson/_3_3_0/p-v2d0-no-types.json     |    4 +
 .../io/graphson/_3_3_0/p-v2d0-partial.json      |   10 +
 .../io/graphson/_3_3_0/pand-v2d0-no-types.json  |   10 +
 .../io/graphson/_3_3_0/pand-v2d0-partial.json   |   25 +
 .../structure/io/graphson/_3_3_0/path-v1d0.json |   62 +
 .../io/graphson/_3_3_0/path-v2d0-no-types.json  |   73 +
 .../io/graphson/_3_3_0/path-v2d0-partial.json   |  178 ++
 .../graphson/_3_3_0/period-v2d0-no-types.json   |    1 +
 .../io/graphson/_3_3_0/period-v2d0-partial.json |    4 +
 .../io/graphson/_3_3_0/pick-v2d0-no-types.json  |    1 +
 .../io/graphson/_3_3_0/pick-v2d0-partial.json   |    4 +
 .../io/graphson/_3_3_0/pop-v2d0-no-types.json   |    1 +
 .../io/graphson/_3_3_0/pop-v2d0-partial.json    |    4 +
 .../io/graphson/_3_3_0/por-v2d0-no-types.json   |   10 +
 .../io/graphson/_3_3_0/por-v2d0-partial.json    |   31 +
 .../io/graphson/_3_3_0/property-v1d0.json       |    4 +
 .../graphson/_3_3_0/property-v2d0-no-types.json |   13 +
 .../graphson/_3_3_0/property-v2d0-partial.json  |   28 +
 .../io/graphson/_3_3_0/scope-v2d0-no-types.json |    1 +
 .../io/graphson/_3_3_0/scope-v2d0-partial.json  |    4 +
 .../io/graphson/_3_3_0/sessionclose-v1d0.json   |    8 +
 .../_3_3_0/sessionclose-v2d0-no-types.json      |    8 +
 .../_3_3_0/sessionclose-v2d0-partial.json       |   14 +
 .../io/graphson/_3_3_0/sessioneval-v1d0.json    |   13 +
 .../_3_3_0/sessioneval-v2d0-no-types.json       |   13 +
 .../_3_3_0/sessioneval-v2d0-partial.json        |   22 +
 .../_3_3_0/sessionevalaliased-v1d0.json         |   16 +
 .../sessionevalaliased-v2d0-no-types.json       |   16 +
 .../_3_3_0/sessionevalaliased-v2d0-partial.json |   25 +
 .../graphson/_3_3_0/sessionlesseval-v1d0.json   |   12 +
 .../_3_3_0/sessionlesseval-v2d0-no-types.json   |   12 +
 .../_3_3_0/sessionlesseval-v2d0-partial.json    |   18 +
 .../_3_3_0/sessionlessevalaliased-v1d0.json     |   15 +
 .../sessionlessevalaliased-v2d0-no-types.json   |   15 +
 .../sessionlessevalaliased-v2d0-partial.json    |   21 +
 .../io/graphson/_3_3_0/short-v2d0-no-types.json |    1 +
 .../io/graphson/_3_3_0/short-v2d0-partial.json  |    4 +
 .../io/graphson/_3_3_0/standardresult-v1d0.json |   50 +
 .../_3_3_0/standardresult-v2d0-no-types.json    |   59 +
 .../_3_3_0/standardresult-v2d0-partial.json     |  131 ++
 .../io/graphson/_3_3_0/stargraph-v1d0.json      |   41 +
 .../_3_3_0/stargraph-v2d0-no-types.json         |   50 +
 .../graphson/_3_3_0/stargraph-v2d0-partial.json |  122 ++
 .../io/graphson/_3_3_0/t-v2d0-no-types.json     |    1 +
 .../io/graphson/_3_3_0/t-v2d0-partial.json      |    4 +
 .../_3_3_0/timestamp-v2d0-no-types.json         |    1 +
 .../graphson/_3_3_0/timestamp-v2d0-partial.json |    4 +
 .../io/graphson/_3_3_0/tinkergraph-v1d0.json    |  313 ++++
 .../_3_3_0/tinkergraph-v2d0-no-types.json       |  333 ++++
 .../_3_3_0/tinkergraph-v2d0-partial.json        |  831 +++++++++
 .../_3_3_0/traversalmetrics-v2d0-no-types.json  |   48 +
 .../_3_3_0/traversalmetrics-v2d0-partial.json   |  114 ++
 .../_3_3_0/traverser-v2d0-no-types.json         |   51 +
 .../graphson/_3_3_0/traverser-v2d0-partial.json |  129 ++
 .../structure/io/graphson/_3_3_0/tree-v1d0.json |  276 +++
 .../io/graphson/_3_3_0/tree-v2d0-no-types.json  |   79 +
 .../io/graphson/_3_3_0/tree-v2d0-partial.json   |  193 ++
 .../io/graphson/_3_3_0/uuid-v2d0-no-types.json  |    1 +
 .../io/graphson/_3_3_0/uuid-v2d0-partial.json   |    4 +
 .../io/graphson/_3_3_0/vertex-v1d0.json         |   39 +
 .../graphson/_3_3_0/vertex-v2d0-no-types.json   |   48 +
 .../io/graphson/_3_3_0/vertex-v2d0-partial.json |  120 ++
 .../io/graphson/_3_3_0/vertexproperty-v1d0.json |    5 +
 .../_3_3_0/vertexproperty-v2d0-no-types.json    |    6 +
 .../_3_3_0/vertexproperty-v2d0-partial.json     |   15 +
 .../io/graphson/_3_3_0/year-v2d0-no-types.json  |    1 +
 .../io/graphson/_3_3_0/year-v2d0-partial.json   |    4 +
 .../_3_3_0/yearmonth-v2d0-no-types.json         |    1 +
 .../graphson/_3_3_0/yearmonth-v2d0-partial.json |    4 +
 .../_3_3_0/zoneddatetime-v2d0-no-types.json     |    1 +
 .../_3_3_0/zoneddatetime-v2d0-partial.json      |    4 +
 .../_3_3_0/zoneoffset-v2d0-no-types.json        |    1 +
 .../_3_3_0/zoneoffset-v2d0-partial.json         |    4 +
 .../structure/io/gryo/_3_2_3/barrier-v1d0.kryo  |    1 +
 .../io/gryo/_3_2_3/bigdecimal-v1d0.kryo         |  Bin 0 -> 18 bytes
 .../io/gryo/_3_2_3/biginteger-v1d0.kryo         |    1 +
 .../structure/io/gryo/_3_2_3/binding-v1d0.kryo  |    1 +
 .../structure/io/gryo/_3_2_3/byte-v1d0.kryo     |    1 +
 .../structure/io/gryo/_3_2_3/bytecode-v1d0.kryo |  Bin 0 -> 46 bytes
 .../io/gryo/_3_2_3/cardinality-v1d0.kryo        |    1 +
 .../structure/io/gryo/_3_2_3/char-v1d0.kryo     |  Bin 0 -> 2 bytes
 .../structure/io/gryo/_3_2_3/column-v1d0.kryo   |    1 +
 .../structure/io/gryo/_3_2_3/date-v1d0.kryo     |    1 +
 .../io/gryo/_3_2_3/direction-v1d0.kryo          |    1 +
 .../structure/io/gryo/_3_2_3/double-v1d0.kryo   |  Bin 0 -> 8 bytes
 .../structure/io/gryo/_3_2_3/duration-v1d0.kryo |  Bin 0 -> 9 bytes
 .../structure/io/gryo/_3_2_3/edge-v1d0.kryo     |  Bin 0 -> 57 bytes
 .../structure/io/gryo/_3_2_3/float-v1d0.kryo    |  Bin 0 -> 4 bytes
 .../structure/io/gryo/_3_2_3/instant-v1d0.kryo  |  Bin 0 -> 13 bytes
 .../structure/io/gryo/_3_2_3/integer-v1d0.kryo  |    1 +
 .../structure/io/gryo/_3_2_3/lambda-v1d0.kryo   |  Bin 0 -> 31 bytes
 .../io/gryo/_3_2_3/localdate-v1d0.kryo          |  Bin 0 -> 9 bytes
 .../io/gryo/_3_2_3/localdatetime-v1d0.kryo      |  Bin 0 -> 29 bytes
 .../io/gryo/_3_2_3/localtime-v1d0.kryo          |  Bin 0 -> 9 bytes
 .../structure/io/gryo/_3_2_3/long-v1d0.kryo     |    1 +
 .../io/gryo/_3_2_3/manual-gryo-generator.groovy |  194 ++
 .../structure/io/gryo/_3_2_3/metrics-v1d0.kryo  |  Bin 0 -> 187 bytes
 .../structure/io/gryo/_3_2_3/monthday-v1d0.kryo |  Bin 0 -> 9 bytes
 .../io/gryo/_3_2_3/offsetdatetime-v1d0.kryo     |  Bin 0 -> 37 bytes
 .../io/gryo/_3_2_3/offsettime-v1d0.kryo         |  Bin 0 -> 17 bytes
 .../structure/io/gryo/_3_2_3/operator-v1d0.kryo |    1 +
 .../structure/io/gryo/_3_2_3/order-v1d0.kryo    |    1 +
 .../structure/io/gryo/_3_2_3/p-v1d0.kryo        |  Bin 0 -> 6 bytes
 .../structure/io/gryo/_3_2_3/path-v1d0.kryo     |  Bin 0 -> 50 bytes
 .../structure/io/gryo/_3_2_3/period-v1d0.kryo   |  Bin 0 -> 13 bytes
 .../structure/io/gryo/_3_2_3/pop-v1d0.kryo      |    1 +
 .../structure/io/gryo/_3_2_3/property-v1d0.kryo |    1 +
 .../structure/io/gryo/_3_2_3/scope-v1d0.kryo    |    1 +
 .../structure/io/gryo/_3_2_3/short-v1d0.kryo    |  Bin 0 -> 2 bytes
 .../io/gryo/_3_2_3/stargraph-v1d0.kryo          |  Bin 0 -> 247 bytes
 .../structure/io/gryo/_3_2_3/t-v1d0.kryo        |    1 +
 .../io/gryo/_3_2_3/tinkergraph-v1d0.kryo        |  Bin 0 -> 1117 bytes
 .../io/gryo/_3_2_3/traversalmetrics-v1d0.kryo   |  Bin 0 -> 294 bytes
 .../io/gryo/_3_2_3/traverser-v1d0.kryo          |  Bin 0 -> 211 bytes
 .../structure/io/gryo/_3_2_3/tree-v1d0.kryo     |  Bin 0 -> 284 bytes
 .../structure/io/gryo/_3_2_3/uuid-v1d0.kryo     |    1 +
 .../structure/io/gryo/_3_2_3/vertex-v1d0.kryo   |  Bin 0 -> 202 bytes
 .../io/gryo/_3_2_3/vertexproperty-v1d0.kryo     |  Bin 0 -> 18 bytes
 .../structure/io/gryo/_3_2_3/year-v1d0.kryo     |  Bin 0 -> 5 bytes
 .../io/gryo/_3_2_3/yearmonth-v1d0.kryo          |  Bin 0 -> 9 bytes
 .../io/gryo/_3_2_3/zoneddatetime-v1d0.kryo      |  Bin 0 -> 38 bytes
 .../io/gryo/_3_2_3/zoneoffset-v1d0.kryo         |    1 +
 .../structure/io/gryo/_3_2_4/barrier-v1d0.kryo  |    1 +
 .../io/gryo/_3_2_4/bigdecimal-v1d0.kryo         |  Bin 0 -> 18 bytes
 .../io/gryo/_3_2_4/biginteger-v1d0.kryo         |    1 +
 .../structure/io/gryo/_3_2_4/binding-v1d0.kryo  |    1 +
 .../structure/io/gryo/_3_2_4/byte-v1d0.kryo     |    1 +
 .../io/gryo/_3_2_4/bytebuffer-v1d0.kryo         |  Bin 0 -> 23 bytes
 .../structure/io/gryo/_3_2_4/bytecode-v1d0.kryo |  Bin 0 -> 43 bytes
 .../io/gryo/_3_2_4/cardinality-v1d0.kryo        |    1 +
 .../structure/io/gryo/_3_2_4/char-v1d0.kryo     |  Bin 0 -> 2 bytes
 .../structure/io/gryo/_3_2_4/class-v1d0.kryo    |    1 +
 .../structure/io/gryo/_3_2_4/column-v1d0.kryo   |    1 +
 .../structure/io/gryo/_3_2_4/date-v1d0.kryo     |    1 +
 .../io/gryo/_3_2_4/direction-v1d0.kryo          |    1 +
 .../structure/io/gryo/_3_2_4/double-v1d0.kryo   |  Bin 0 -> 8 bytes
 .../structure/io/gryo/_3_2_4/duration-v1d0.kryo |  Bin 0 -> 9 bytes
 .../structure/io/gryo/_3_2_4/edge-v1d0.kryo     |  Bin 0 -> 57 bytes
 .../structure/io/gryo/_3_2_4/float-v1d0.kryo    |  Bin 0 -> 4 bytes
 .../io/gryo/_3_2_4/inetaddress-v1d0.kryo        |    1 +
 .../structure/io/gryo/_3_2_4/instant-v1d0.kryo  |  Bin 0 -> 13 bytes
 .../structure/io/gryo/_3_2_4/integer-v1d0.kryo  |    1 +
 .../structure/io/gryo/_3_2_4/lambda-v1d0.kryo   |  Bin 0 -> 31 bytes
 .../io/gryo/_3_2_4/localdate-v1d0.kryo          |  Bin 0 -> 9 bytes
 .../io/gryo/_3_2_4/localdatetime-v1d0.kryo      |  Bin 0 -> 29 bytes
 .../io/gryo/_3_2_4/localtime-v1d0.kryo          |  Bin 0 -> 9 bytes
 .../structure/io/gryo/_3_2_4/long-v1d0.kryo     |    1 +
 .../io/gryo/_3_2_4/manual-gryo-generator.groovy |  194 ++
 .../structure/io/gryo/_3_2_4/metrics-v1d0.kryo  |  Bin 0 -> 187 bytes
 .../structure/io/gryo/_3_2_4/monthday-v1d0.kryo |  Bin 0 -> 9 bytes
 .../io/gryo/_3_2_4/offsetdatetime-v1d0.kryo     |  Bin 0 -> 37 bytes
 .../io/gryo/_3_2_4/offsettime-v1d0.kryo         |  Bin 0 -> 17 bytes
 .../structure/io/gryo/_3_2_4/operator-v1d0.kryo |    1 +
 .../structure/io/gryo/_3_2_4/order-v1d0.kryo    |    1 +
 .../structure/io/gryo/_3_2_4/p-v1d0.kryo        |  Bin 0 -> 6 bytes
 .../structure/io/gryo/_3_2_4/pand-v1d0.kryo     |  Bin 0 -> 23 bytes
 .../structure/io/gryo/_3_2_4/path-v1d0.kryo     |  Bin 0 -> 50 bytes
 .../structure/io/gryo/_3_2_4/period-v1d0.kryo   |  Bin 0 -> 13 bytes
 .../structure/io/gryo/_3_2_4/pop-v1d0.kryo      |    1 +
 .../structure/io/gryo/_3_2_4/por-v1d0.kryo      |  Bin 0 -> 35 bytes
 .../structure/io/gryo/_3_2_4/property-v1d0.kryo |    1 +
 .../structure/io/gryo/_3_2_4/scope-v1d0.kryo    |    1 +
 .../structure/io/gryo/_3_2_4/short-v1d0.kryo    |  Bin 0 -> 2 bytes
 .../io/gryo/_3_2_4/stargraph-v1d0.kryo          |  Bin 0 -> 247 bytes
 .../structure/io/gryo/_3_2_4/t-v1d0.kryo        |    1 +
 .../io/gryo/_3_2_4/timestamp-v1d0.kryo          |    1 +
 .../io/gryo/_3_2_4/tinkergraph-v1d0.kryo        |  Bin 0 -> 1117 bytes
 .../io/gryo/_3_2_4/traversalmetrics-v1d0.kryo   |  Bin 0 -> 294 bytes
 .../io/gryo/_3_2_4/traverser-v1d0.kryo          |  Bin 0 -> 211 bytes
 .../structure/io/gryo/_3_2_4/tree-v1d0.kryo     |  Bin 0 -> 284 bytes
 .../structure/io/gryo/_3_2_4/uuid-v1d0.kryo     |    1 +
 .../structure/io/gryo/_3_2_4/vertex-v1d0.kryo   |  Bin 0 -> 202 bytes
 .../io/gryo/_3_2_4/vertexproperty-v1d0.kryo     |  Bin 0 -> 18 bytes
 .../structure/io/gryo/_3_2_4/year-v1d0.kryo     |  Bin 0 -> 5 bytes
 .../io/gryo/_3_2_4/yearmonth-v1d0.kryo          |  Bin 0 -> 9 bytes
 .../io/gryo/_3_2_4/zoneddatetime-v1d0.kryo      |  Bin 0 -> 38 bytes
 .../io/gryo/_3_2_4/zoneoffset-v1d0.kryo         |    1 +
 .../_3_3_0/authenticationchallenge-v3d0.kryo    |  Bin 0 -> 26 bytes
 .../_3_3_0/authenticationresponse-v3d0.kryo     |    1 +
 .../structure/io/gryo/_3_3_0/barrier-v1d0.kryo  |    1 +
 .../structure/io/gryo/_3_3_0/barrier-v3d0.kryo  |    1 +
 .../io/gryo/_3_3_0/bigdecimal-v1d0.kryo         |  Bin 0 -> 18 bytes
 .../io/gryo/_3_3_0/bigdecimal-v3d0.kryo         |  Bin 0 -> 18 bytes
 .../io/gryo/_3_3_0/biginteger-v1d0.kryo         |    1 +
 .../io/gryo/_3_3_0/biginteger-v3d0.kryo         |    1 +
 .../structure/io/gryo/_3_3_0/binding-v1d0.kryo  |    1 +
 .../structure/io/gryo/_3_3_0/binding-v3d0.kryo  |    1 +
 .../structure/io/gryo/_3_3_0/byte-v1d0.kryo     |    1 +
 .../structure/io/gryo/_3_3_0/byte-v3d0.kryo     |    1 +
 .../io/gryo/_3_3_0/bytebuffer-v1d0.kryo         |  Bin 0 -> 23 bytes
 .../io/gryo/_3_3_0/bytebuffer-v3d0.kryo         |  Bin 0 -> 23 bytes
 .../structure/io/gryo/_3_3_0/bytecode-v1d0.kryo |  Bin 0 -> 43 bytes
 .../structure/io/gryo/_3_3_0/bytecode-v3d0.kryo |  Bin 0 -> 43 bytes
 .../io/gryo/_3_3_0/cardinality-v1d0.kryo        |    1 +
 .../io/gryo/_3_3_0/cardinality-v3d0.kryo        |    1 +
 .../structure/io/gryo/_3_3_0/char-v1d0.kryo     |  Bin 0 -> 2 bytes
 .../structure/io/gryo/_3_3_0/char-v3d0.kryo     |  Bin 0 -> 2 bytes
 .../structure/io/gryo/_3_3_0/class-v1d0.kryo    |    1 +
 .../structure/io/gryo/_3_3_0/class-v3d0.kryo    |    1 +
 .../structure/io/gryo/_3_3_0/column-v1d0.kryo   |    1 +
 .../structure/io/gryo/_3_3_0/column-v3d0.kryo   |    1 +
 .../structure/io/gryo/_3_3_0/date-v1d0.kryo     |    1 +
 .../structure/io/gryo/_3_3_0/date-v3d0.kryo     |    1 +
 .../io/gryo/_3_3_0/direction-v1d0.kryo          |    1 +
 .../io/gryo/_3_3_0/direction-v3d0.kryo          |    1 +
 .../structure/io/gryo/_3_3_0/double-v1d0.kryo   |  Bin 0 -> 8 bytes
 .../structure/io/gryo/_3_3_0/double-v3d0.kryo   |  Bin 0 -> 8 bytes
 .../structure/io/gryo/_3_3_0/duration-v1d0.kryo |  Bin 0 -> 9 bytes
 .../structure/io/gryo/_3_3_0/duration-v3d0.kryo |  Bin 0 -> 9 bytes
 .../structure/io/gryo/_3_3_0/edge-v1d0.kryo     |  Bin 0 -> 57 bytes
 .../structure/io/gryo/_3_3_0/edge-v3d0.kryo     |  Bin 0 -> 57 bytes
 .../structure/io/gryo/_3_3_0/float-v1d0.kryo    |  Bin 0 -> 4 bytes
 .../structure/io/gryo/_3_3_0/float-v3d0.kryo    |  Bin 0 -> 4 bytes
 .../io/gryo/_3_3_0/inetaddress-v1d0.kryo        |    1 +
 .../io/gryo/_3_3_0/inetaddress-v3d0.kryo        |    1 +
 .../structure/io/gryo/_3_3_0/instant-v1d0.kryo  |  Bin 0 -> 13 bytes
 .../structure/io/gryo/_3_3_0/instant-v3d0.kryo  |  Bin 0 -> 13 bytes
 .../structure/io/gryo/_3_3_0/integer-v1d0.kryo  |    1 +
 .../structure/io/gryo/_3_3_0/integer-v3d0.kryo  |    1 +
 .../structure/io/gryo/_3_3_0/lambda-v1d0.kryo   |  Bin 0 -> 31 bytes
 .../structure/io/gryo/_3_3_0/lambda-v3d0.kryo   |  Bin 0 -> 31 bytes
 .../io/gryo/_3_3_0/localdate-v1d0.kryo          |  Bin 0 -> 9 bytes
 .../io/gryo/_3_3_0/localdate-v3d0.kryo          |  Bin 0 -> 9 bytes
 .../io/gryo/_3_3_0/localdatetime-v1d0.kryo      |  Bin 0 -> 29 bytes
 .../io/gryo/_3_3_0/localdatetime-v3d0.kryo      |  Bin 0 -> 29 bytes
 .../io/gryo/_3_3_0/localtime-v1d0.kryo          |  Bin 0 -> 9 bytes
 .../io/gryo/_3_3_0/localtime-v3d0.kryo          |  Bin 0 -> 9 bytes
 .../structure/io/gryo/_3_3_0/long-v1d0.kryo     |    1 +
 .../structure/io/gryo/_3_3_0/long-v3d0.kryo     |    1 +
 .../structure/io/gryo/_3_3_0/metrics-v1d0.kryo  |  Bin 0 -> 187 bytes
 .../structure/io/gryo/_3_3_0/metrics-v3d0.kryo  |  Bin 0 -> 187 bytes
 .../structure/io/gryo/_3_3_0/monthday-v1d0.kryo |  Bin 0 -> 9 bytes
 .../structure/io/gryo/_3_3_0/monthday-v3d0.kryo |  Bin 0 -> 9 bytes
 .../io/gryo/_3_3_0/offsetdatetime-v1d0.kryo     |  Bin 0 -> 37 bytes
 .../io/gryo/_3_3_0/offsetdatetime-v3d0.kryo     |  Bin 0 -> 37 bytes
 .../io/gryo/_3_3_0/offsettime-v1d0.kryo         |  Bin 0 -> 17 bytes
 .../io/gryo/_3_3_0/offsettime-v3d0.kryo         |  Bin 0 -> 17 bytes
 .../structure/io/gryo/_3_3_0/operator-v1d0.kryo |    1 +
 .../structure/io/gryo/_3_3_0/operator-v3d0.kryo |    1 +
 .../structure/io/gryo/_3_3_0/order-v1d0.kryo    |    1 +
 .../structure/io/gryo/_3_3_0/order-v3d0.kryo    |    1 +
 .../structure/io/gryo/_3_3_0/p-v1d0.kryo        |  Bin 0 -> 6 bytes
 .../structure/io/gryo/_3_3_0/p-v3d0.kryo        |  Bin 0 -> 6 bytes
 .../structure/io/gryo/_3_3_0/pand-v1d0.kryo     |  Bin 0 -> 23 bytes
 .../structure/io/gryo/_3_3_0/pand-v3d0.kryo     |  Bin 0 -> 23 bytes
 .../structure/io/gryo/_3_3_0/path-v1d0.kryo     |  Bin 0 -> 50 bytes
 .../structure/io/gryo/_3_3_0/path-v3d0.kryo     |  Bin 0 -> 50 bytes
 .../structure/io/gryo/_3_3_0/period-v1d0.kryo   |  Bin 0 -> 13 bytes
 .../structure/io/gryo/_3_3_0/period-v3d0.kryo   |  Bin 0 -> 13 bytes
 .../structure/io/gryo/_3_3_0/pick-v1d0.kryo     |    1 +
 .../structure/io/gryo/_3_3_0/pick-v3d0.kryo     |    1 +
 .../structure/io/gryo/_3_3_0/pop-v1d0.kryo      |    1 +
 .../structure/io/gryo/_3_3_0/pop-v3d0.kryo      |    1 +
 .../structure/io/gryo/_3_3_0/por-v1d0.kryo      |  Bin 0 -> 35 bytes
 .../structure/io/gryo/_3_3_0/por-v3d0.kryo      |  Bin 0 -> 35 bytes
 .../structure/io/gryo/_3_3_0/property-v1d0.kryo |    1 +
 .../structure/io/gryo/_3_3_0/property-v3d0.kryo |    1 +
 .../structure/io/gryo/_3_3_0/scope-v1d0.kryo    |    1 +
 .../structure/io/gryo/_3_3_0/scope-v3d0.kryo    |    1 +
 .../io/gryo/_3_3_0/sessionclose-v3d0.kryo       |    1 +
 .../io/gryo/_3_3_0/sessioneval-v3d0.kryo        |    1 +
 .../io/gryo/_3_3_0/sessionevalaliased-v3d0.kryo |    1 +
 .../io/gryo/_3_3_0/sessionlesseval-v3d0.kryo    |    1 +
 .../_3_3_0/sessionlessevalaliased-v3d0.kryo     |    1 +
 .../structure/io/gryo/_3_3_0/short-v1d0.kryo    |  Bin 0 -> 2 bytes
 .../structure/io/gryo/_3_3_0/short-v3d0.kryo    |  Bin 0 -> 2 bytes
 .../io/gryo/_3_3_0/standardresult-v3d0.kryo     |  Bin 0 -> 230 bytes
 .../io/gryo/_3_3_0/stargraph-v1d0.kryo          |  Bin 0 -> 247 bytes
 .../io/gryo/_3_3_0/stargraph-v3d0.kryo          |  Bin 0 -> 247 bytes
 .../structure/io/gryo/_3_3_0/t-v1d0.kryo        |    1 +
 .../structure/io/gryo/_3_3_0/t-v3d0.kryo        |    1 +
 .../io/gryo/_3_3_0/timestamp-v1d0.kryo          |    1 +
 .../io/gryo/_3_3_0/timestamp-v3d0.kryo          |    1 +
 .../io/gryo/_3_3_0/tinkergraph-v1d0.kryo        |  Bin 0 -> 1117 bytes
 .../io/gryo/_3_3_0/tinkergraph-v3d0.kryo        |  Bin 0 -> 1117 bytes
 .../io/gryo/_3_3_0/traversalmetrics-v1d0.kryo   |  Bin 0 -> 294 bytes
 .../io/gryo/_3_3_0/traversalmetrics-v3d0.kryo   |  Bin 0 -> 294 bytes
 .../io/gryo/_3_3_0/traverser-v1d0.kryo          |  Bin 0 -> 211 bytes
 .../io/gryo/_3_3_0/traverser-v3d0.kryo          |  Bin 0 -> 211 bytes
 .../structure/io/gryo/_3_3_0/tree-v1d0.kryo     |  Bin 0 -> 284 bytes
 .../structure/io/gryo/_3_3_0/tree-v3d0.kryo     |  Bin 0 -> 284 bytes
 .../structure/io/gryo/_3_3_0/uuid-v1d0.kryo     |    1 +
 .../structure/io/gryo/_3_3_0/uuid-v3d0.kryo     |    1 +
 .../structure/io/gryo/_3_3_0/vertex-v1d0.kryo   |  Bin 0 -> 202 bytes
 .../structure/io/gryo/_3_3_0/vertex-v3d0.kryo   |  Bin 0 -> 202 bytes
 .../io/gryo/_3_3_0/vertexproperty-v1d0.kryo     |  Bin 0 -> 18 bytes
 .../io/gryo/_3_3_0/vertexproperty-v3d0.kryo     |  Bin 0 -> 18 bytes
 .../structure/io/gryo/_3_3_0/year-v1d0.kryo     |  Bin 0 -> 5 bytes
 .../structure/io/gryo/_3_3_0/year-v3d0.kryo     |  Bin 0 -> 5 bytes
 .../io/gryo/_3_3_0/yearmonth-v1d0.kryo          |  Bin 0 -> 9 bytes
 .../io/gryo/_3_3_0/yearmonth-v3d0.kryo          |  Bin 0 -> 9 bytes
 .../io/gryo/_3_3_0/zoneddatetime-v1d0.kryo      |  Bin 0 -> 38 bytes
 .../io/gryo/_3_3_0/zoneddatetime-v3d0.kryo      |  Bin 0 -> 38 bytes
 .../io/gryo/_3_3_0/zoneoffset-v1d0.kryo         |    1 +
 .../io/gryo/_3_3_0/zoneoffset-v3d0.kryo         |    1 +
 gremlin-tools/pom.xml                           |    1 +
 .../TinkerGraphGraphSONSerializerV2d0Test.java  |    2 +-
 674 files changed, 17053 insertions(+), 1391 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e248da06/CHANGELOG.asciidoc
----------------------------------------------------------------------


[38/50] [abbrv] tinkerpop git commit: DedupTest now uses name for the order() instead of id.

Posted by sp...@apache.org.
DedupTest now uses name for the order() instead of id.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/683c2dfa
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/683c2dfa
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/683c2dfa

Branch: refs/heads/TINKERPOP-1565
Commit: 683c2dfa80ddb2fe5f9c19e6a3f9d6f9e9db4950
Parents: 3c80611
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Jan 10 11:19:37 2017 -0700
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Tue Jan 10 11:19:37 2017 -0700

----------------------------------------------------------------------
 .../step/filter/GroovyDedupTest.groovy          |  4 ++--
 .../traversal/step/filter/DedupTest.java        | 23 ++++++++++----------
 2 files changed, 14 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/683c2dfa/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDedupTest.groovy
----------------------------------------------------------------------
diff --git a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDedupTest.groovy b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDedupTest.groovy
index 8f5e928..a041fdb 100644
--- a/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDedupTest.groovy
+++ b/gremlin-groovy-test/src/main/groovy/org/apache/tinkerpop/gremlin/process/traversal/step/filter/GroovyDedupTest.groovy
@@ -101,8 +101,8 @@ public abstract class GroovyDedupTest {
         }
 
         @Override
-        public Traversal<Vertex, Collection<Vertex>> get_g_V_asXaX_repeatXbothX_timesX3X_emit_asXbX_group_byXselectXaXX_byXselectXbX_dedup_order_byXidX_foldX_selectXvaluesX_unfold_dedup() {
-            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').repeat(both()).times(3).emit.as('b').group.by(select('a')).by(select('b').dedup.order.by(id).fold).select(values).unfold.dedup")
+        public Traversal<Vertex, Collection<String>> get_g_V_asXaX_repeatXbothX_timesX3X_emit_name_asXbX_group_byXselectXaXX_byXselectXbX_dedup_order_foldX_selectXvaluesX_unfold_dedup() {
+            new ScriptTraversal<>(g, "gremlin-groovy", "g.V.as('a').repeat(both()).times(3).emit.name.as('b').group.by(select('a')).by(select('b').dedup.order.fold).select(values).unfold.dedup")
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/683c2dfa/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupTest.java
index 183a3a9..5ac5e22 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DedupTest.java
@@ -31,6 +31,7 @@ import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -86,7 +87,7 @@ public abstract class DedupTest extends AbstractGremlinProcessTest {
 
     public abstract Traversal<Vertex, Long> get_g_V_groupCount_selectXvaluesX_unfold_dedup();
 
-    public abstract Traversal<Vertex, Collection<Vertex>> get_g_V_asXaX_repeatXbothX_timesX3X_emit_asXbX_group_byXselectXaXX_byXselectXbX_dedup_order_byXidX_foldX_selectXvaluesX_unfold_dedup();
+    public abstract Traversal<Vertex, Collection<String>> get_g_V_asXaX_repeatXbothX_timesX3X_emit_name_asXbX_group_byXselectXaXX_byXselectXbX_dedup_order_foldX_selectXvaluesX_unfold_dedup();
 
     public abstract Traversal<Vertex, Long> get_g_V_repeatXdedupX_timesX2X_count();
 
@@ -289,17 +290,17 @@ public abstract class DedupTest extends AbstractGremlinProcessTest {
     @Test
     @LoadGraphWith(MODERN)
     public void g_V_asXaX_repeatXbothX_timesX3X_emit_asXbX_group_byXselectXaXX_byXselectXbX_dedup_order_byXidX_foldX_selectXvaluesX_unfold_dedup() {
-        final Traversal<Vertex, Collection<Vertex>> traversal = get_g_V_asXaX_repeatXbothX_timesX3X_emit_asXbX_group_byXselectXaXX_byXselectXbX_dedup_order_byXidX_foldX_selectXvaluesX_unfold_dedup();
+        final Traversal<Vertex, Collection<String>> traversal = get_g_V_asXaX_repeatXbothX_timesX3X_emit_name_asXbX_group_byXselectXaXX_byXselectXbX_dedup_order_foldX_selectXvaluesX_unfold_dedup();
         printTraversalForm(traversal);
-        final Collection<Vertex> vertices = traversal.next();
+        final List<String> vertices = new ArrayList<>(traversal.next());
         assertFalse(traversal.hasNext());
         assertEquals(6, vertices.size());
-        assertTrue(vertices.contains(convertToVertex(graph, "marko")));
-        assertTrue(vertices.contains(convertToVertex(graph, "vadas")));
-        assertTrue(vertices.contains(convertToVertex(graph, "josh")));
-        assertTrue(vertices.contains(convertToVertex(graph, "peter")));
-        assertTrue(vertices.contains(convertToVertex(graph, "lop")));
-        assertTrue(vertices.contains(convertToVertex(graph, "ripple")));
+        assertEquals("josh", vertices.get(0));
+        assertEquals("lop", vertices.get(1));
+        assertEquals("marko", vertices.get(2));
+        assertEquals("peter", vertices.get(3));
+        assertEquals("ripple", vertices.get(4));
+        assertEquals("vadas", vertices.get(5));
     }
 
     @Test
@@ -384,8 +385,8 @@ public abstract class DedupTest extends AbstractGremlinProcessTest {
         }
 
         @Override
-        public Traversal<Vertex, Collection<Vertex>> get_g_V_asXaX_repeatXbothX_timesX3X_emit_asXbX_group_byXselectXaXX_byXselectXbX_dedup_order_byXidX_foldX_selectXvaluesX_unfold_dedup() {
-            return g.V().as("a").repeat(both()).times(3).emit().as("b").group().by(select("a")).by(select("b").dedup().order().by(T.id).fold()).select(values).<Collection<Vertex>>unfold().dedup();
+        public Traversal<Vertex, Collection<String>> get_g_V_asXaX_repeatXbothX_timesX3X_emit_name_asXbX_group_byXselectXaXX_byXselectXbX_dedup_order_foldX_selectXvaluesX_unfold_dedup() {
+            return g.V().as("a").repeat(both()).times(3).emit().values("name").as("b").group().by(select("a")).by(select("b").dedup().order().fold()).select(values).<Collection<String>>unfold().dedup();
         }
 
         @Override