This is an automated email from the ASF dual-hosted git repository.

dkuppitz pushed a commit to branch TINKERPOP-2059
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git


The following commit(s) were added to refs/heads/TINKERPOP-2059 by this push:
     new e3c2e29  Added changes suggested by @spmallette.
e3c2e29 is described below

commit e3c2e295cdbb7e4713f5a764f26eaedd6be12e06
Author: Daniel Kuppitz <daniel_kupp...@hotmail.com>
AuthorDate: Mon Nov 5 16:23:49 2018 -0700

    Added changes suggested by @spmallette.
---
 docs/src/upgrade/release-3.4.x.asciidoc            |  6 +++
 .../traversal/dsl/graph/GraphTraversal.java        |  2 +
 .../gremlin/process/traversal/dsl/graph/__.java    |  2 +
 .../traversal/step/map/PropertyMapStepTest.java    |  4 ++
 gremlin-test/features/map/AddVertex.feature        | 25 ++++++++++++
 gremlin-test/features/map/ValueMap.feature         | 45 ++++++++++++++++++++++
 .../process/traversal/step/map/AddVertexTest.java  | 22 +++++++++++
 7 files changed, 106 insertions(+)

diff --git a/docs/src/upgrade/release-3.4.x.asciidoc 
b/docs/src/upgrade/release-3.4.x.asciidoc
index 3d38ae3..618a96b 100644
--- a/docs/src/upgrade/release-3.4.x.asciidoc
+++ b/docs/src/upgrade/release-3.4.x.asciidoc
@@ -93,6 +93,12 @@ gremlin> 
g.V().has("person","name","marko").properties("location").valueMap().wi
 ==>[value:santa fe,startTime:2005]
 ```
 
+As shown above, the support of the `with()` modulator for `valueMap()` makes 
the `valueMap(boolean)` overload superfluous, hence this overload is now 
deprecated. This is a breaking API change, since
+`valueMap()` will now always yield instances of type `Map<Object, Object>`. 
Prior this change only the `valueMap(boolean)` overload yielded `Map<Object, 
Object>` objects, `valueMap()` without the
+boolean parameter used to yield instances of type `Map<String, Object>`.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-2059[TINKERPOP-2059]
+
 ==== Changed number comparison behavior of within()/without() predicates
 
 In previous versions `within()` and `without()` performed strict number 
comparisons; that means these predicates did not only compare number values, 
but also the time. This was inconsistent with
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 fc24459..1ef0be7 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
@@ -575,6 +575,8 @@ public interface GraphTraversal<S, E> extends Traversal<S, 
E> {
      * @return the traversal with an appended {@link PropertyMapStep}.
      * @see <a 
href="http://tinkerpop.apache.org/docs/${project.version}/reference/#valuemap-step";
 target="_blank">Reference Documentation - ValueMap Step</a>
      * @since 3.0.0-incubating
+     * @deprecated As of release 3.4.0, deprecated in favor of {@link 
GraphTraversal#valueMap(String...)} in conjunction with
+     *             {@link GraphTraversal#with(String, Object)}.
      */
     @Deprecated
     public default <E2> GraphTraversal<S, Map<Object, E2>> valueMap(final 
boolean includeTokens, final String... propertyKeys) {
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 4361f29..c0f9cad 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
@@ -262,6 +262,8 @@ public class __ {
 
     /**
      * @see GraphTraversal#valueMap(boolean, String...)
+     * @deprecated As of release 3.4.0, deprecated in favor of {@link 
__#valueMap(String...)} in conjunction with
+     *             {@link GraphTraversal#with(String, Object)}.
      */
     @Deprecated
     public static <A extends Element, B> GraphTraversal<A, Map<Object, B>> 
valueMap(final boolean includeTokens, final String... propertyKeys) {
diff --git 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PropertyMapStepTest.java
 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PropertyMapStepTest.java
index c46950e..bdfeadd 100644
--- 
a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PropertyMapStepTest.java
+++ 
b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PropertyMapStepTest.java
@@ -38,6 +38,10 @@ public class PropertyMapStepTest extends StepTest {
                 __.valueMap("name"),
                 __.valueMap("age"),
                 __.valueMap("name", "age"),
+                __.valueMap(true),
+                __.valueMap(true, "name"),
+                __.valueMap(true, "age"),
+                __.valueMap(true, "name", "age"),
                 __.valueMap().with(WithOptions.tokens),
                 __.valueMap("name").with(WithOptions.tokens),
                 __.valueMap("age").with(WithOptions.tokens),
diff --git a/gremlin-test/features/map/AddVertex.feature 
b/gremlin-test/features/map/AddVertex.feature
index a60fefb..1bb3ce1 100644
--- a/gremlin-test/features/map/AddVertex.feature
+++ b/gremlin-test/features/map/AddVertex.feature
@@ -336,6 +336,31 @@ Feature: Step - addV()
       | marko |
     And the graph should return 2 for count of "g.V().has(\"name\",\"marko\")"
 
+  Scenario: 
g_V_asXaX_hasXname_markoX_outXcreatedX_asXbX_addVXselectXaX_labelX_propertyXtest_selectXbX_labelX_valueMapXtrueX
+    Given the empty graph
+    And the graph initializer of
+      """
+      g.addV("person").property(T.id, 1).property("name", 
"marko").property("age", 29).as("marko").
+        addV("person").property(T.id, 2).property("name", 
"vadas").property("age", 27).as("vadas").
+        addV("software").property(T.id, 3).property("name", 
"lop").property("lang", "java").as("lop").
+        addV("person").property(T.id, 
4).property("name","josh").property("age", 32).as("josh").
+        addV("software").property(T.id, 5).property("name", 
"ripple").property("lang", "java").as("ripple").
+        addV("person").property(T.id, 6).property("name", 
"peter").property("age", 35).as('peter').
+        addE("knows").from("marko").to("vadas").property(T.id, 
7).property("weight", 0.5).
+        addE("knows").from("marko").to("josh").property(T.id, 
8).property("weight", 1.0).
+        addE("created").from("marko").to("lop").property(T.id, 
9).property("weight", 0.4).
+        addE("created").from("josh").to("ripple").property(T.id, 
10).property("weight", 1.0).
+        addE("created").from("josh").to("lop").property(T.id, 
11).property("weight", 0.4).
+        addE("created").from("peter").to("lop").property(T.id, 
12).property("weight", 0.2)
+      """
+    And the traversal of
+      """
+      g.V().as("a").has("name", 
"marko").out("created").as("b").addV(__.select("a").label()).property("test", 
__.select("b").label()).valueMap(true)
+      """
+    When iterated to list
+    Then the result should have a count of 1
+    And the graph should return 1 for count of 
"g.V().has(\"person\",\"test\",\"software\")"
+
   Scenario: 
g_V_asXaX_hasXname_markoX_outXcreatedX_asXbX_addVXselectXaX_labelX_propertyXtest_selectXbX_labelX_valueMap_withXtokensX
     Given the empty graph
     And the graph initializer of
diff --git a/gremlin-test/features/map/ValueMap.feature 
b/gremlin-test/features/map/ValueMap.feature
index e8880f8..82aaffd 100644
--- a/gremlin-test/features/map/ValueMap.feature
+++ b/gremlin-test/features/map/ValueMap.feature
@@ -33,6 +33,22 @@ Feature: Step - valueMap()
       | m[{"name": ["lop"], "lang": ["java"]}] |
       | m[{"name": ["ripple"], "lang": ["java"]}] |
 
+  Scenario: g_V_valueMapXtrueX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().valueMap(true)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"t[id]": "v[marko].id", "t[label]": "person", "name": ["marko"], 
"age": [29]}] |
+      | m[{"t[id]": "v[josh].id", "t[label]": "person", "name": ["josh"], 
"age": [32]}] |
+      | m[{"t[id]": "v[peter].id", "t[label]": "person", "name": ["peter"], 
"age": [35]}] |
+      | m[{"t[id]": "v[vadas].id", "t[label]": "person", "name": ["vadas"], 
"age": [27]}] |
+      | m[{"t[id]": "v[lop].id", "t[label]": "software", "name": ["lop"], 
"lang": ["java"]}] |
+      | m[{"t[id]": "v[ripple].id", "t[label]": "software", "name": 
["ripple"], "lang": ["java"]}] |
+
   Scenario: g_V_valueMap_withXtokensX
     Given the modern graph
     And the traversal of
@@ -65,6 +81,22 @@ Feature: Step - valueMap()
       | m[{"name": ["lop"]}] |
       | m[{"name": ["ripple"]}] |
 
+  Scenario: g_V_valueMapXtrue_name_ageX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().valueMap(true, "name", "age")
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"t[id]": "v[marko].id", "t[label]": "person", "name": ["marko"], 
"age": [29]}] |
+      | m[{"t[id]": "v[josh].id", "t[label]": "person", "name": ["josh"], 
"age": [32]}] |
+      | m[{"t[id]": "v[peter].id", "t[label]": "person", "name": ["peter"], 
"age": [35]}] |
+      | m[{"t[id]": "v[vadas].id", "t[label]": "person", "name": ["vadas"], 
"age": [27]}] |
+      | m[{"t[id]": "v[lop].id", "t[label]": "software", "name": ["lop"]}] |
+      | m[{"t[id]": "v[ripple].id", "t[label]": "software", "name": 
["ripple"]}] |
+
   Scenario: g_V_valueMapXname_ageX_withXtokensX
     Given the modern graph
     And the traversal of
@@ -109,6 +141,19 @@ Feature: Step - valueMap()
       | result |
       | m[{"name": ["lop"], "lang": ["java"]}] |
 
+  Scenario: g_V_hasLabelXpersonX_filterXoutEXcreatedXX_valueMapXtrueX
+    Given the modern graph
+    And the traversal of
+      """
+      g.V().hasLabel("person").filter(__.outE("created")).valueMap(true)
+      """
+    When iterated to list
+    Then the result should be unordered
+      | result |
+      | m[{"name": ["marko"], "age": [29], "t[label]":"person", 
"t[id]":"v[marko].id"}] |
+      | m[{"name": ["josh"], "age": [32], "t[label]":"person", 
"t[id]":"v[josh].id"}] |
+      | m[{"name": ["peter"], "age": [35], "t[label]":"person", 
"t[id]":"v[peter].id"}] |
+
   Scenario: g_V_hasLabelXpersonX_filterXoutEXcreatedXX_valueMap_withXtokensX
     Given the modern graph
     And the traversal of
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 21fbb8c..858f979 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
@@ -74,6 +74,8 @@ public abstract class AddVertexTest extends 
AbstractGremlinTest {
 
     public abstract Traversal<Vertex, String> 
get_g_withSideEffectXa_nameX_addV_propertyXselectXaX_markoX_name();
 
+    public abstract Traversal<Vertex, Map<Object, Object>> 
get_g_V_asXaX_hasXname_markoX_outXcreatedX_asXbX_addVXselectXaX_labelX_propertyXtest_selectXbX_labelX_valueMapXtrueX();
+
     public abstract Traversal<Vertex, Map<Object, Object>> 
get_g_V_asXaX_hasXname_markoX_outXcreatedX_asXbX_addVXselectXaX_labelX_propertyXtest_selectXbX_labelX_valueMap_withXtokensX();
 
     @Test
@@ -286,6 +288,21 @@ public abstract class AddVertexTest extends 
AbstractGremlinTest {
     @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_V_asXaX_hasXname_markoX_outXcreatedX_asXbX_addVXselectXaX_labelX_propertyXtest_selectXbX_labelX_valueMapXtrueX()
 {
+        final Traversal<Vertex, Map<Object,Object>> traversal = 
get_g_V_asXaX_hasXname_markoX_outXcreatedX_asXbX_addVXselectXaX_labelX_propertyXtest_selectXbX_labelX_valueMapXtrueX();
+        printTraversalForm(traversal);
+        final Map<Object,Object> map = traversal.next();
+        assertFalse(traversal.hasNext());
+        assertEquals("person",map.get(T.label));
+        assertEquals("software",((List)map.get("test")).get(0));
+        assertEquals(1, ((List)map.get("test")).size());
+        assertEquals(3, map.size());
+    }
+
+    @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_V_asXaX_hasXname_markoX_outXcreatedX_asXbX_addVXselectXaX_labelX_propertyXtest_selectXbX_labelX_valueMap_withXtokensX()
 {
         final Traversal<Vertex, Map<Object,Object>> traversal = 
get_g_V_asXaX_hasXname_markoX_outXcreatedX_asXbX_addVXselectXaX_labelX_propertyXtest_selectXbX_labelX_valueMap_withXtokensX();
         printTraversalForm(traversal);
@@ -360,6 +377,11 @@ public abstract class AddVertexTest extends 
AbstractGremlinTest {
         }
 
         @Override
+        public Traversal<Vertex, Map<Object, Object>> 
get_g_V_asXaX_hasXname_markoX_outXcreatedX_asXbX_addVXselectXaX_labelX_propertyXtest_selectXbX_labelX_valueMapXtrueX()
 {
+            return g.V().as("a").has("name", 
"marko").out("created").as("b").addV(select("a").label()).property("test", 
select("b").label()).valueMap(true);
+        }
+
+        @Override
         public Traversal<Vertex, Map<Object, Object>> 
get_g_V_asXaX_hasXname_markoX_outXcreatedX_asXbX_addVXselectXaX_labelX_propertyXtest_selectXbX_labelX_valueMap_withXtokensX()
 {
             return g.V().as("a").has("name", 
"marko").out("created").as("b").addV(select("a").label()).property("test", 
select("b").label()).valueMap().with(WithOptions.tokens);
         }

Reply via email to