You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by dk...@apache.org on 2018/03/13 18:33:30 UTC
[04/31] tinkerpop git commit: TINKERPOP-1446 Added standard string
representation for Path objects
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/TRAVIS-TEST
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"]