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 2018/03/03 17:27:22 UTC

tinkerpop git commit: TINKERPOP-1446 Added standard string representation for Path objects

Repository: tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-1446 [created] c7bf69d98


TINKERPOP-1446 Added standard string representation for Path objects


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

Branch: refs/heads/TINKERPOP-1446
Commit: c7bf69d98c229dcc5c2f23a17c88d317ae73be6e
Parents: 4113f0e
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Sat Mar 3 12:25:00 2018 -0500
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Sat Mar 3 12:25:00 2018 -0500

----------------------------------------------------------------------
 CHANGELOG.asciidoc                                          | 1 +
 .../gremlin/process/traversal/step/util/EmptyPath.java      | 6 ++++++
 .../gremlin/process/traversal/step/util/ImmutablePath.java  | 3 ++-
 .../gremlin/process/traversal/step/util/MutablePath.java    | 3 ++-
 .../tinkerpop/gremlin/structure/util/StringFactory.java     | 9 +++++++--
 gremlin-dotnet/src/Gremlin.Net/Structure/Path.cs            | 2 +-
 .../Structure/IO/GraphSON/GraphSONReaderTests.cs            | 4 ++--
 .../test/Gremlin.Net.UnitTest/Structure/PathTests.cs        | 2 +-
 .../javascript/gremlin-javascript/lib/structure/graph.js    | 4 ++++
 .../src/main/jython/gremlin_python/structure/graph.py       | 2 +-
 .../src/main/jython/tests/structure/io/test_graphsonV2d0.py | 5 +----
 .../src/main/jython/tests/structure/io/test_graphsonV3d0.py | 5 +----
 .../src/main/jython/tests/structure/test_graph.py           | 2 +-
 13 files changed, 30 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c7bf69d9/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 46b0e5b..9ecb5a2 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -25,6 +25,7 @@ NEED AND IMAGE
 
 This release also includes changes from <<release-3-3-2, 3.3.2>>.
 
+* Change the `toString()` of `Path` to be standardized as other graph elements are.
 
 == TinkerPop 3.3.0 (Gremlin Symphony #40 in G Minor)
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c7bf69d9/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/EmptyPath.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/EmptyPath.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/EmptyPath.java
index 0c6827e..69111ee 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/EmptyPath.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/EmptyPath.java
@@ -19,6 +19,7 @@
 package org.apache.tinkerpop.gremlin.process.traversal.step.util;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Path;
+import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 
 import java.io.Serializable;
 import java.util.Collections;
@@ -103,4 +104,9 @@ public final class EmptyPath implements Path, Serializable {
     public boolean equals(final Object object) {
         return object instanceof EmptyPath;
     }
+
+    @Override
+    public String toString() {
+        return StringFactory.pathString(this);
+    }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c7bf69d9/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ImmutablePath.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ImmutablePath.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ImmutablePath.java
index 7a6b9a8..623b810 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ImmutablePath.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/ImmutablePath.java
@@ -20,6 +20,7 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.util;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Path;
 import org.apache.tinkerpop.gremlin.process.traversal.Pop;
+import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 
 import java.io.Serializable;
 import java.util.ArrayList;
@@ -217,7 +218,7 @@ public class ImmutablePath implements Path, Serializable, Cloneable {
 
     @Override
     public String toString() {
-        return this.objects().toString();
+        return StringFactory.pathString(this);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c7bf69d9/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/MutablePath.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/MutablePath.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/MutablePath.java
index 168b7dc..427c601 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/MutablePath.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/MutablePath.java
@@ -20,6 +20,7 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.util;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Path;
 import org.apache.tinkerpop.gremlin.process.traversal.Pop;
+import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
 
 import java.io.Serializable;
 import java.util.ArrayList;
@@ -168,7 +169,7 @@ public class MutablePath implements Path, Serializable {
 
     @Override
     public String toString() {
-        return this.objects.toString();
+        return StringFactory.pathString(this);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c7bf69d9/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/StringFactory.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/StringFactory.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/StringFactory.java
index 68973a8..ad953c3 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/StringFactory.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/util/StringFactory.java
@@ -26,6 +26,7 @@ import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
 import org.apache.tinkerpop.gremlin.process.computer.Memory;
 import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.Path;
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Translator;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
@@ -40,6 +41,7 @@ import org.apache.tinkerpop.gremlin.structure.Property;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.apache.tinkerpop.gremlin.util.function.FunctionUtils;
+import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import org.javatuples.Pair;
 
 import java.lang.reflect.Method;
@@ -53,7 +55,6 @@ import java.util.function.Predicate;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
-
 /**
  * A collection of helpful methods for creating standard {@link Object#toString()} representations of graph-related
  * objects.
@@ -66,6 +67,7 @@ public final class StringFactory {
     private static final String E = "e";
     private static final String P = "p";
     private static final String VP = "vp";
+    private static final String PATH = "path";
     private static final String L_BRACKET = "[";
     private static final String R_BRACKET = "]";
     private static final String COMMA_SPACE = ", ";
@@ -176,7 +178,7 @@ public final class StringFactory {
     }
 
     public static String translatorString(final Translator translator) {
-        return "translator[" + translator.getTraversalSource() + ":" + translator.getTargetLanguage() + "]";
+        return "translator" + L_BRACKET + translator.getTraversalSource() + ":" + translator.getTargetLanguage() + R_BRACKET;
     }
 
     public static String vertexProgramString(final VertexProgram vertexProgram, final String internalString) {
@@ -252,4 +254,7 @@ public final class StringFactory {
         return string.substring(1, string.length() - 1);
     }
 
+    public static String pathString(final Path path) {
+        return PATH + L_BRACKET + String.join(", ", IteratorUtils.map(path, Object::toString)) + R_BRACKET;
+    }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c7bf69d9/gremlin-dotnet/src/Gremlin.Net/Structure/Path.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/Path.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/Path.cs
index a9f2698..d205a88 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/Path.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/Path.cs
@@ -111,7 +111,7 @@ namespace Gremlin.Net.Structure
         /// <inheritdoc />
         public override string ToString()
         {
-            return $"[{string.Join(", ", Objects)}]";
+            return $"path[{string.Join(", ", Objects)}]";
         }
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c7bf69d9/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONReaderTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONReaderTests.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONReaderTests.cs
index ae4392b..49b6fa3 100644
--- a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONReaderTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONReaderTests.cs
@@ -229,7 +229,7 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
 
             Path readPath = reader.ToObject(JObject.Parse(graphSon));
 
-            Assert.Equal("[v[1], v[3], lop]", readPath.ToString());
+            Assert.Equal("path[v[1], v[3], lop]", readPath.ToString());
             Assert.Equal(new Vertex(1), readPath[0]);
             Assert.Equal(new Vertex(1), readPath["a"]);
             Assert.Equal("lop", readPath[2]);
@@ -246,7 +246,7 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
 
             Path readPath = reader.ToObject(JObject.Parse(graphSon));
 
-            Assert.Equal("[v[5]]", readPath.ToString());
+            Assert.Equal("path[v[5]]", readPath.ToString());
             Assert.Equal(new Vertex(5L), readPath[0]);
             Assert.Equal(new Vertex(5L), readPath["z"]);
             Assert.Equal(1, readPath.Count);

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c7bf69d9/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/PathTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/PathTests.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/PathTests.cs
index cbc3f8d..6df92ba 100644
--- a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/PathTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/PathTests.cs
@@ -364,7 +364,7 @@ namespace Gremlin.Net.UnitTest.Structure
 
             var pathStr = path.ToString();
 
-            Assert.Equal("[1, v[1], hello]", pathStr);
+            Assert.Equal("path[1, v[1], hello]", pathStr);
         }
 
         [Fact]

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c7bf69d9/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/graph.js
----------------------------------------------------------------------
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/graph.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/graph.js
index 2861a50..f6553fa 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/graph.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/structure/graph.js
@@ -126,6 +126,10 @@ class Path {
     this.objects = objects;
   }
 
+  toString() {
+    return 'path[' + objects.join(", ") +  ']';
+  }
+
   equals(other) {
     if (!(other instanceof Path)) {
       return false;

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c7bf69d9/gremlin-python/src/main/jython/gremlin_python/structure/graph.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/structure/graph.py b/gremlin-python/src/main/jython/gremlin_python/structure/graph.py
index a22633c..3df0cd1 100644
--- a/gremlin-python/src/main/jython/gremlin_python/structure/graph.py
+++ b/gremlin-python/src/main/jython/gremlin_python/structure/graph.py
@@ -103,7 +103,7 @@ class Path(object):
         self.objects = objects
 
     def __repr__(self):
-        return str(self.objects)
+        return "path[" + ", ".join(map(str, self.objects)) + "]"
 
     def __eq__(self, other):
         return isinstance(other, self.__class__) and self.objects == other.objects and self.labels == other.labels

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c7bf69d9/gremlin-python/src/main/jython/tests/structure/io/test_graphsonV2d0.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/tests/structure/io/test_graphsonV2d0.py b/gremlin-python/src/main/jython/tests/structure/io/test_graphsonV2d0.py
index 416a9a4..802960d 100644
--- a/gremlin-python/src/main/jython/tests/structure/io/test_graphsonV2d0.py
+++ b/gremlin-python/src/main/jython/tests/structure/io/test_graphsonV2d0.py
@@ -124,10 +124,7 @@ class TestGraphSONReader(object):
             """{"@type":"g:Path","@value":{"labels":[["a"],["b","c"],[]],"objects":[{"@type":"g:Vertex","@value":{"id":{"@type":"g:Int32","@value":1},"label":"person","properties":{"name":[{"@type":"g:VertexProperty","@value":{"id":{"@type":"g:Int64","@value":0},"value":"marko","label":"name"}}],"age":[{"@type":"g:VertexProperty","@value":{"id":{"@type":"g:Int64","@value":1},"value":{"@type":"g:Int32","@value":29},"label":"age"}}]}}},{"@type":"g:Vertex","@value":{"id":{"@type":"g:Int32","@value":3},"label":"software","properties":{"name":[{"@type":"g:VertexProperty","@value":{"id":{"@type":"g:Int64","@value":4},"value":"lop","label":"name"}}],"lang":[{"@type":"g:VertexProperty","@value":{"id":{"@type":"g:Int64","@value":5},"value":"java","label":"lang"}}]}}},"lop"]}}"""
         )
         assert isinstance(path, Path)
-        if six.PY3:
-            assert "[v[1], v[3], 'lop']" == str(path)
-        else:
-            assert "[v[1], v[3], u'lop']" == str(path)
+        assert "path[v[1], v[3], lop]" == str(path)
         assert Vertex(1) == path[0]
         assert Vertex(1) == path["a"]
         assert "lop" == path[2]

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c7bf69d9/gremlin-python/src/main/jython/tests/structure/io/test_graphsonV3d0.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/tests/structure/io/test_graphsonV3d0.py b/gremlin-python/src/main/jython/tests/structure/io/test_graphsonV3d0.py
index 16de67f..7d3bca1 100644
--- a/gremlin-python/src/main/jython/tests/structure/io/test_graphsonV3d0.py
+++ b/gremlin-python/src/main/jython/tests/structure/io/test_graphsonV3d0.py
@@ -152,10 +152,7 @@ class TestGraphSONReader(object):
             """{"@type":"g:Path","@value":{"labels":{"@type":"g:List","@value":[{"@type":"g:Set","@value":["a"]},{"@type":"g:Set","@value":["b","c"]},{"@type":"g:Set","@value":[]}]},"objects":{"@type":"g:List","@value":[{"@type":"g:Vertex","@value":{"id":{"@type":"g:Int32","@value":1},"label":"person","properties":{"name":[{"@type":"g:VertexProperty","@value":{"id":{"@type":"g:Int64","@value":0},"value":"marko","label":"name"}}],"age":[{"@type":"g:VertexProperty","@value":{"id":{"@type":"g:Int64","@value":1},"value":{"@type":"g:Int32","@value":29},"label":"age"}}]}}},{"@type":"g:Vertex","@value":{"id":{"@type":"g:Int32","@value":3},"label":"software","properties":{"name":[{"@type":"g:VertexProperty","@value":{"id":{"@type":"g:Int64","@value":4},"value":"lop","label":"name"}}],"lang":[{"@type":"g:VertexProperty","@value":{"id":{"@type":"g:Int64","@value":5},"value":"java","label":"lang"}}]}}},"lop"]}}}"""
         )
         assert isinstance(path, Path)
-        if six.PY3:
-            assert "[v[1], v[3], 'lop']" == str(path)
-        else:
-            assert "[v[1], v[3], u'lop']" == str(path)
+        assert "path[v[1], v[3], lop]" == str(path)
         assert Vertex(1) == path[0]
         assert Vertex(1) == path["a"]
         assert "lop" == path[2]

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c7bf69d9/gremlin-python/src/main/jython/tests/structure/test_graph.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/tests/structure/test_graph.py b/gremlin-python/src/main/jython/tests/structure/test_graph.py
index e779bf6..986772e 100644
--- a/gremlin-python/src/main/jython/tests/structure/test_graph.py
+++ b/gremlin-python/src/main/jython/tests/structure/test_graph.py
@@ -75,7 +75,7 @@ class TestGraph(object):
 
     def test_path(self):
         path = Path([set(["a", "b"]), set(["c", "b"]), set([])], [1, Vertex(1), "hello"])
-        assert "[1, v[1], 'hello']" == str(path)
+        assert "path[1, v[1], hello]" == str(path)
         assert 1 == path["a"]
         assert Vertex(1) == path["c"]
         assert [1, Vertex(1)] == path["b"]