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 2019/04/08 17:05:38 UTC
[tinkerpop] branch TINKERPOP-2159 updated (2e6b1f6 -> a1c4b0b)
This is an automated email from the ASF dual-hosted git repository.
dkuppitz pushed a change to branch TINKERPOP-2159
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git.
omit 2e6b1f6 updated docs
omit 14948cb TINKERPOP-2159 Fixed multi-valued property handling in EventStrategy / AddPropertyStep.
add f5f973a Fix typos and wording
add 4fa5162 TINKERPOP-1435 Python support for BigInteger/BigDecimal
add 5d540d8 TINKERPOP-1435 Add byte support in GraphSON extended module for python
add 19d42c9 TINKERPOP-1435 Add ByteBuffer support in GraphSON for python
add 480ed6d TINKERPOP-1435 Added Char support to graphson and python
add 202c497 TINKERPOP-1435 added Duration for graphson in python
add 1cace8f TINKERPOP-1435 Add char serialization for GraphSON 3.0 in python
add e4d7544 TINKERPOP-1435 Update changelog
add ea1e5a3 Merge branch 'TINKERPOP-1435' into tp33
add 33441fd TINKERPOP-2163 Improved performance of JavaTranslator method selection
add d7d0989 Merge branch 'TINKERPOP-2163' into tp33
add a440e88 TINKERPOP-2164: Reduce chance of hash collisions in Bytecode and its inner classes
add 016f8ca Merge branch 'pr-1067' into tp33
add baed0e5 Bump dependencies for httpclient, commons-codec, slf4j
add ffee148 Merge branch 'bumps' into tp33
add 6bb7d57 Fix error in 'The First Five Minutes' section
add 95087ce Added TraversalConstructionBenchmark CTR
add 0b614d8 Added a note about release candidates to GLV "readmes" CTR
add 44bfc7f TINKERPOP-2165 Preferred commons-lang3 to commons-lang
add 65c876e Merge branch 'TINKERPOP-2165' into tp33
add f139b40 TINKERPOP-1992 Fix negative time on profile() step
add f980886 TINKERPOP-1992 Update changelog
add ee30283 TINKERPOP-1992 Added test to validate that durations are greater than zero.
add 44693d0 TINKERPOP-1992 Prevented reset of barrier from happening more than once
add 29fe4cd Merge branch 'TINKERPOP-1992' into tp33
add 5ac3add Added "note" to .net project template.
add 7e58bf8 TINKERPOP-2174 docker best practices
add cef3197 TINKERPOP-2174 added changelog entry
add e57051f Merge pull request #1080 from apache/TINKERPOP-2174
add f16b50f TINKERPOP-2167 Traversals as async iterables in gremlin-javascript
add d1b3da8 update gremlin-javascript traversal template
add 78d4e82 Async iterator for Node 6, 8 with unit test
add dc38ae0 Updated changelog CTR
add c37d303 Added isodate to pip calls which enables docs to generate properly CTR
add 845bb9c TINKERPOP-2177 Prevented failures with auth based requests in python CTR
add 522ba25 TINKERPOP-2172 Fix PartitionStrategy to apply AddEdgeStartStep
add f2b78cd Removed old addE() syntax CTR
add 95e0d46 Updated changelog
add d51ed2f Merge branch 'TINKERPOP-2172' into tp33
add 2cd84ff TINKERPOP-2169 Fix connection leak on CorruptedFrameException
add 13439ac TINKERPOP-2173 Reset log level to original after each test
add fb78499 Merge branch 'pr-1082' into tp33
add 46e6a4d Update changelog CTR
add 1a9805b Change exception message in assertion.
add 0601c5b Allowed for multiple error messages to be acceptable in assert
add 484b826 Minor instructional update in release docs CTR
add c5d5018 Minor instructional change in dev doc to be more efficient CTR
add 3284f2e Move assert of logs out after the Cluster is closed
add 918591a Update changelog/upgrade docs for 3.3.6 release CTR
add 3732a8a TinkerPop 3.3.6 release
add 5321dfe Removed some fancy bits that were added to try to speed up build
add 232dc99 fixed links - CTR
add 81577d5 fixed links - CTR
add 2dc3091 Bump to 3.3.7-SNAPSHOT CTR
add 45710b1 Bound twine to 1.12.1 as latest version doesn't do auth right for some reason
add 4a78c6b minor edit - ` won't render if end markup doesn't have trailing space - CTR
add 993a443 more minor ` edits - CTR
add b6ec19f minor asciidoc fix - CTR
add cff5267 escape __ with + CTR
add 4125f94 render code blocks at EOF - CTR
add a162109 TINKERPOP-2180: Ensure gremlin.sh works when directories contain spaces
add 70c8f7e Bump GMavenPlus to 1.6.3 CTR
add 9334272 TINKERPOP-2180: Make sure user.working_dir is still respected properly
add 62158d2 TINKERPOP-2180: Fix -l DEBUG
add 06cc959 TINKERPOP-2179: Have SerializationException extend IOException
add b59d779 Merge pull request #1083 from newkek/TINKERPOP-2179
new 4cc32a2 TINKERPOP-2159 Fixed multi-valued property handling in EventStrategy / AddPropertyStep.
new a1c4b0b updated docs
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (2e6b1f6)
\
N -- N -- N refs/heads/TINKERPOP-2159 (a1c4b0b)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
CHANGELOG.asciidoc | 76 ++++++++++-
docker/Dockerfile | 2 +-
docker/hadoop/Dockerfile.template | 2 +-
docs/preprocessor/awk/tabify.awk | 7 +
docs/src/dev/developer/for-committers.asciidoc | 8 +-
docs/src/dev/developer/release.asciidoc | 4 +-
docs/src/dev/provider/index.asciidoc | 4 +-
.../src/recipes/traversal-component-reuse.asciidoc | 2 +-
docs/src/reference/gremlin-applications.asciidoc | 2 +-
docs/src/reference/gremlin-variants.asciidoc | 12 +-
docs/src/reference/implementations-giraph.asciidoc | 2 +-
docs/src/reference/implementations-neo4j.asciidoc | 2 +-
docs/src/reference/implementations-spark.asciidoc | 2 +-
docs/src/reference/the-traversal.asciidoc | 4 +-
docs/src/tutorials/getting-started/index.asciidoc | 16 +--
.../gremlin-language-variants/index.asciidoc | 6 +-
docs/src/tutorials/gremlins-anatomy/index.asciidoc | 10 +-
.../tutorials/the-gremlin-console/index.asciidoc | 4 +-
docs/src/upgrade/release-3.3.x.asciidoc | 21 ++-
giraph-gremlin/pom.xml | 2 +-
.../process/computer/GiraphGraphComputer.java | 4 +-
gremlin-archetype/gremlin-archetype-dsl/pom.xml | 2 +-
gremlin-archetype/gremlin-archetype-server/pom.xml | 2 +-
.../gremlin-archetype-tinkergraph/pom.xml | 2 +-
gremlin-archetype/pom.xml | 2 +-
gremlin-console/Dockerfile | 12 +-
gremlin-console/bin/gremlin.sh | 2 +-
gremlin-console/pom.xml | 7 +-
gremlin-console/src/main/bin/gremlin.sh | 29 ++--
.../console/jsr223/DriverRemoteAcceptor.java | 2 +-
gremlin-console/src/main/static/LICENSE | 6 +-
gremlin-console/src/main/static/NOTICE | 12 +-
gremlin-console/src/main/static/licenses/slf4j | 2 +-
.../src/test/python/tests/test_console.py | 5 +
gremlin-core/pom.xml | 6 +-
.../tinkerpop/gremlin/jsr223/JavaTranslator.java | 38 ++++--
.../gremlin/process/traversal/Bytecode.java | 39 +++---
.../process/traversal/step/ProfilingAware.java | 98 ++++++++++++++
.../process/traversal/step/map/GraphStep.java | 4 +-
.../process/traversal/step/map/GroupStep.java | 39 +++++-
.../step/sideEffect/GroupSideEffectStep.java | 24 +++-
.../process/traversal/step/util/Parameters.java | 2 +-
.../process/traversal/step/util/ProfileStep.java | 15 +++
.../strategy/decoration/PartitionStrategy.java | 4 +-
.../strategy/finalization/ProfileStrategy.java | 9 +-
.../traversal/util/DefaultTraversalMetrics.java | 2 +-
.../gremlin/structure/io/gryo/GryoMapper.java | 2 +-
.../gremlin/structure/io/gryo/GryoTypeReg.java | 2 +-
.../gremlin/structure/util/StringFactory.java | 2 +-
.../gremlin/process/traversal/BytecodeTest.java | 24 ++++
.../graphson/GraphSONMapperEmbeddedTypeTest.java | 63 ++++++++-
gremlin-dotnet/glv/Gremlin.Net.csproj.template | 4 +-
gremlin-dotnet/pom.xml | 2 +-
.../Gremlin.Net.Template.csproj | 2 +-
.../Gremlin.Net.Template.nuspec | 2 +-
gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj | 8 +-
gremlin-dotnet/src/pom.xml | 23 +---
gremlin-dotnet/test/pom.xml | 23 +---
gremlin-driver/pom.xml | 2 +-
.../apache/tinkerpop/gremlin/driver/Client.java | 2 +-
.../tinkerpop/gremlin/driver/Connection.java | 69 +++++-----
.../tinkerpop/gremlin/driver/ConnectionPool.java | 35 +++--
.../apache/tinkerpop/gremlin/driver/Handler.java | 2 +-
.../org/apache/tinkerpop/gremlin/driver/Host.java | 2 +
.../gremlin/driver/message/ResponseMessage.java | 4 +-
.../remote/DriverRemoteTraversalSideEffects.java | 3 +-
.../gremlin/driver/ser/SerializationException.java | 8 +-
.../tinkerpop/gremlin/driver/ResultQueueTest.java | 2 +-
.../gremlin/driver/SerializationExceptionTest.java | 31 ++---
.../driver/ser/GryoMessageSerializerV1d0Test.java | 2 +-
gremlin-groovy/pom.xml | 2 +-
.../gremlin/groovy/engine/GremlinExecutor.java | 4 +-
...GremlinGroovyScriptEngineCompileStaticTest.java | 2 +-
.../GremlinGroovyScriptEngineOverGraphTest.java | 2 +-
.../jsr223/GremlinGroovyScriptEngineTest.java | 2 +-
.../GremlinGroovyScriptEngineTypeCheckedTest.java | 2 +-
gremlin-javascript/glv/TraversalSource.template | 8 ++
gremlin-javascript/pom.xml | 2 +-
.../main/javascript/gremlin-javascript/README.md | 3 +
.../gremlin-javascript/lib/process/traversal.js | 8 ++
.../javascript/gremlin-javascript/package.json | 2 +-
.../gremlin-javascript/test/unit/traversal-test.js | 9 ++
gremlin-python/pom.xml | 8 +-
gremlin-python/src/main/jython/README | 5 +-
.../main/jython/gremlin_python/driver/protocol.py | 2 +-
.../src/main/jython/gremlin_python/statics.py | 24 ++++
.../gremlin_python/structure/io/graphsonV2d0.py | 109 ++++++++++++++-
.../gremlin_python/structure/io/graphsonV3d0.py | 109 ++++++++++++++-
gremlin-python/src/main/jython/setup.py | 3 +-
gremlin-python/src/main/jython/tests/conftest.py | 16 +++
.../src/main/jython/tests/driver/test_client.py | 43 ++++++
.../jython/tests/structure/io/test_graphsonV2d0.py | 97 ++++++++++++++
.../jython/tests/structure/io/test_graphsonV3d0.py | 100 ++++++++++++++
gremlin-server/Dockerfile | 13 +-
gremlin-server/pom.xml | 2 +-
.../server/handler/HttpGremlinEndpointHandler.java | 5 +-
.../gremlin/server/op/AbstractOpProcessor.java | 2 +-
gremlin-server/src/main/static/LICENSE | 6 +-
gremlin-server/src/main/static/NOTICE | 6 -
gremlin-server/src/main/static/licenses/slf4j | 2 +-
.../driver/ClientConnectionIntegrateTest.java | 107 +++++++++++++++
.../gremlin/server/GremlinDriverIntegrateTest.java | 3 +-
.../server/GremlinServerAuthIntegrateTest.java | 2 +-
.../server/GremlinServerAuthKrb5IntegrateTest.java | 2 +-
.../gremlin/server/GremlinServerIntegrateTest.java | 26 ++--
.../server/GremlinServerSessionIntegrateTest.java | 3 +-
gremlin-shaded/pom.xml | 2 +-
gremlin-test/pom.xml | 3 +-
.../process/traversal/step/map/ProfileTest.java | 2 +-
.../decoration/PartitionStrategyProcessTest.java | 16 ++-
gremlin-tools/gremlin-benchmark/pom.xml | 2 +-
...rk.java => TraversalConstructionBenchmark.java} | 146 ++++++++-------------
gremlin-tools/gremlin-coverage/pom.xml | 2 +-
gremlin-tools/gremlin-io-test/pom.xml | 2 +-
gremlin-tools/pom.xml | 2 +-
hadoop-gremlin/pom.xml | 4 +-
neo4j-gremlin/pom.xml | 2 +-
pom.xml | 28 +++-
spark-gremlin/pom.xml | 2 +-
tinkergraph-gremlin/pom.xml | 2 +-
.../tinkergraph/structure/TinkerGraphTest.java | 25 ++++
121 files changed, 1427 insertions(+), 430 deletions(-)
create mode 100644 gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/ProfilingAware.java
copy gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/structure/DirectionTest.java => gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/SerializationExceptionTest.java (59%)
create mode 100644 gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/driver/ClientConnectionIntegrateTest.java
copy gremlin-tools/gremlin-benchmark/src/main/java/org/apache/tinkerpop/gremlin/process/{GraphMutateBenchmark.java => TraversalConstructionBenchmark.java} (51%)
[tinkerpop] 02/02: updated docs
Posted by dk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
dkuppitz pushed a commit to branch TINKERPOP-2159
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit a1c4b0b25402ce4604d91979af18560e30ce1ce6
Author: Daniel Kuppitz <da...@hotmail.com>
AuthorDate: Thu Mar 7 10:25:46 2019 -0700
updated docs
---
CHANGELOG.asciidoc | 1 +
docs/src/reference/the-traversal.asciidoc | 6 ++++++
docs/src/upgrade/release-3.3.x.asciidoc | 15 +++++++++++++++
3 files changed, 22 insertions(+)
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 88df8ad..4422a4b 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -24,6 +24,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
=== TinkerPop 3.3.7 (Release Date: NOT OFFICIALLY RELEASED YET)
* Ensure `gremlin.sh` works when directories contain spaces
+* Made `EventStrategy` compatible with multi-valued properties.
[[release-3-3-6]]
diff --git a/docs/src/reference/the-traversal.asciidoc b/docs/src/reference/the-traversal.asciidoc
index 88a20b5..ef28339 100644
--- a/docs/src/reference/the-traversal.asciidoc
+++ b/docs/src/reference/the-traversal.asciidoc
@@ -3492,6 +3492,12 @@ l = new ConsoleMutationListener(graph)
strategy = EventStrategy.build().addListener(l).create()
g = graph.traversal().withStrategies(strategy)
g.addV().property('name','stephen')
+g.V().has('name','stephen').
+ property(list, 'location', 'centreville', 'startTime', 1990, 'endTime', 2000).
+ property(list, 'location', 'dulles', 'startTime', 2000, 'endTime', 2006).
+ property(list, 'location', 'purcellville', 'startTime', 2006)
+g.V().has('name','stephen').
+ property(set, 'location', 'purcellville', 'startTime', 2006, 'endTime', 2019)
g.E().drop()
----
diff --git a/docs/src/upgrade/release-3.3.x.asciidoc b/docs/src/upgrade/release-3.3.x.asciidoc
index c1911d3..6dfdfc1 100644
--- a/docs/src/upgrade/release-3.3.x.asciidoc
+++ b/docs/src/upgrade/release-3.3.x.asciidoc
@@ -27,6 +27,21 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
Please see the link:https://github.com/apache/tinkerpop/blob/3.3.7/CHANGELOG.asciidoc#release-3-3-7[changelog] for a complete list of all the modifications that are part of this release.
+=== Upgrading for Users
+
+==== EventStrategy
+
+Prior TinkerPop 3.3.6 `EventStrategy` did not work with multi-properties. The `EventStrategy` behavior for single-valued properties has not changed; if a property is added to a multi-valued
+`VertexProperty`, then a `VertexPropertyChangedEvent` will be now be fired. The arguments passed to the event depend on the cardinality type.
+
+[width="100%",cols="2"]
+|=========================================================
+|`Cardinality.list` | Since properties will always be added and never be overwritten, the old property passed to the change event will always be an empty property.
+|`Cardinality.set` | The old property passed to the change event will be empty if no other property with the same value exists, otherwise, it will be the existing property.
+|=========================================================
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-2159[TINKERPOP-2159]
+
== TinkerPop 3.3.6
*Release Date: March 18, 2019*
[tinkerpop] 01/02: TINKERPOP-2159 Fixed multi-valued property
handling in EventStrategy / AddPropertyStep.
Posted by dk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
dkuppitz pushed a commit to branch TINKERPOP-2159
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit 4cc32a2d9c71945c50140b0c00d38c847389ce14
Author: Daniel Kuppitz <da...@hotmail.com>
AuthorDate: Mon Feb 18 07:30:48 2019 -0700
TINKERPOP-2159 Fixed multi-valued property handling in EventStrategy / AddPropertyStep.
---
.../traversal/step/sideEffect/AddPropertyStep.java | 77 +++++++++++++++-------
.../tinkergraph/structure/TinkerGraphPlayTest.java | 33 ++++++----
2 files changed, 74 insertions(+), 36 deletions(-)
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStep.java
index 7509f86..27ffe4e 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStep.java
@@ -41,7 +41,9 @@ import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory;
import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedProperty;
import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertexProperty;
+import java.util.Iterator;
import java.util.List;
+import java.util.Objects;
import java.util.Set;
/**
@@ -93,29 +95,58 @@ public final class AddPropertyStep<S extends Element> extends SideEffectStep<S>
final Element element = traverser.get();
if (this.callbackRegistry != null) {
- final EventStrategy eventStrategy = getTraversal().getStrategies().getStrategy(EventStrategy.class).get();
- final Property currentProperty = traverser.get().property(key);
- final boolean newProperty = element instanceof Vertex ? currentProperty == VertexProperty.empty() : currentProperty == Property.empty();
- final Event.ElementPropertyChangedEvent evt;
- if (element instanceof Vertex)
- evt = new Event.VertexPropertyChangedEvent(eventStrategy.detach((Vertex) element),
- newProperty ?
- eventStrategy.empty(element, key) :
- eventStrategy.detach((VertexProperty) currentProperty), value, vertexPropertyKeyValues);
- else if (element instanceof Edge)
- evt = new Event.EdgePropertyChangedEvent(eventStrategy.detach((Edge) element),
- newProperty ?
- eventStrategy.empty(element, key) :
- eventStrategy.detach(currentProperty), value);
- else if (element instanceof VertexProperty)
- evt = new Event.VertexPropertyPropertyChangedEvent(eventStrategy.detach((VertexProperty) element),
- newProperty ?
- eventStrategy.empty(element, key) :
- eventStrategy.detach(currentProperty), value);
- else
- throw new IllegalStateException(String.format("The incoming object cannot be processed by change eventing in %s: %s", AddPropertyStep.class.getName(), element));
-
- this.callbackRegistry.getCallbacks().forEach(c -> c.accept(evt));
+ getTraversal().getStrategies().getStrategy(EventStrategy.class)
+ .ifPresent(eventStrategy -> {
+ Event.ElementPropertyChangedEvent evt = null;
+ if (element instanceof Vertex) {
+ final VertexProperty.Cardinality cardinality = this.cardinality != null
+ ? this.cardinality
+ : element.graph().features().vertex().getCardinality(key);
+
+ if (cardinality == VertexProperty.Cardinality.list) {
+ evt = new Event.VertexPropertyChangedEvent(eventStrategy.detach((Vertex) element),
+ eventStrategy.empty(element, key), value, vertexPropertyKeyValues);
+ }
+ else if (cardinality == VertexProperty.Cardinality.set) {
+ Property currentProperty = VertexProperty.empty();
+ final Iterator<? extends Property> properties = traverser.get().properties(key);
+ while (properties.hasNext()) {
+ final Property property = properties.next();
+ if (Objects.equals(property.value(), value)) {
+ currentProperty = property;
+ break;
+ }
+ }
+ evt = new Event.VertexPropertyChangedEvent(eventStrategy.detach((Vertex) element),
+ currentProperty == VertexProperty.empty() ?
+ eventStrategy.empty(element, key) :
+ eventStrategy.detach((VertexProperty) currentProperty), value, vertexPropertyKeyValues);
+ }
+ }
+ if (evt == null) {
+ final Property currentProperty = traverser.get().property(key);
+ final boolean newProperty = element instanceof Vertex ? currentProperty == VertexProperty.empty() : currentProperty == Property.empty();
+ if (element instanceof Vertex)
+ evt = new Event.VertexPropertyChangedEvent(eventStrategy.detach((Vertex) element),
+ newProperty ?
+ eventStrategy.empty(element, key) :
+ eventStrategy.detach((VertexProperty) currentProperty), value, vertexPropertyKeyValues);
+ else if (element instanceof Edge)
+ evt = new Event.EdgePropertyChangedEvent(eventStrategy.detach((Edge) element),
+ newProperty ?
+ eventStrategy.empty(element, key) :
+ eventStrategy.detach(currentProperty), value);
+ else if (element instanceof VertexProperty)
+ evt = new Event.VertexPropertyPropertyChangedEvent(eventStrategy.detach((VertexProperty) element),
+ newProperty ?
+ eventStrategy.empty(element, key) :
+ eventStrategy.detach(currentProperty), value);
+ else
+ throw new IllegalStateException(String.format("The incoming object cannot be processed by change eventing in %s: %s", AddPropertyStep.class.getName(), element));
+ }
+ final Event.ElementPropertyChangedEvent event = evt;
+ this.callbackRegistry.getCallbacks().forEach(c -> c.accept(event));
+ });
}
if (null != this.cardinality)
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java
index c278e89..8e3e8bd 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/TinkerGraphPlayTest.java
@@ -27,6 +27,8 @@ import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.ConsoleMutationListener;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.EventStrategy;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.EarlyLimitStrategy;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.PathRetractionStrategy;
import org.apache.tinkerpop.gremlin.structure.*;
@@ -124,20 +126,25 @@ public class TinkerGraphPlayTest {
@Ignore
public void testPlayDK() throws Exception {
- Graph graph = TinkerGraph.open();
- graph.io(GraphMLIo.build()).readGraph("../data/grateful-dead.xml");
+ final Graph graph = TinkerGraph.open();
+ final EventStrategy strategy = EventStrategy.build().addListener(new ConsoleMutationListener(graph)).create();
+ final GraphTraversalSource g = graph.traversal().withStrategies(strategy);
+
+ g.addV().property(T.id, 1).iterate();
+ g.V(1).property("name", "name1").iterate();
+ g.V(1).property("name", "name2").iterate();
+ g.V(1).property("name", "name2").iterate();
+
+ g.addV().property(T.id, 2).iterate();
+ g.V(2).property(VertexProperty.Cardinality.list, "name", "name1").iterate();
+ g.V(2).property(VertexProperty.Cardinality.list, "name", "name2").iterate();
+ g.V(2).property(VertexProperty.Cardinality.list, "name", "name2").iterate();
+
- GraphTraversalSource g = graph.traversal();//.withoutStrategies(EarlyLimitStrategy.class);
- g.V().has("name", "Bob_Dylan").in("sungBy").as("a").
- repeat(out().order().by(Order.shuffle).simplePath().from("a")).
- until(out("writtenBy").has("name", "Johnny_Cash")).limit(1).as("b").
- repeat(out().order().by(Order.shuffle).as("c").simplePath().from("b").to("c")).
- until(out("sungBy").has("name", "Grateful_Dead")).limit(1).
- path().from("a").unfold().
- <List<String>>project("song", "artists").
- by("name").
- by(__.coalesce(out("sungBy", "writtenBy").dedup().values("name"), constant("Unknown")).fold()).
- forEachRemaining(System.out::println);
+ g.addV().property(T.id, 3).iterate();
+ g.V(3).property(VertexProperty.Cardinality.set, "name", "name1", "ping", "pong").iterate();
+ g.V(3).property(VertexProperty.Cardinality.set, "name", "name2", "ping", "pong").iterate();
+ g.V(3).property(VertexProperty.Cardinality.set, "name", "name2", "pong", "ping").iterate();
}
@Test