Merge branch 'master' into TINKERPOP-967 Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/8a26b3a8 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/8a26b3a8 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/8a26b3a8
Branch: refs/heads/TINKERPOP-1996 Commit: 8a26b3a8c225184e0f9ccd742219f6f971d3429c Parents: 3974b07 1f240fe Author: GCHQResearcher1337 <[email protected]> Authored: Sat Jun 30 09:47:42 2018 +0100 Committer: GitHub <[email protected]> Committed: Sat Jun 30 09:47:42 2018 +0100 ---------------------------------------------------------------------- .gitignore | 2 +- CHANGELOG.asciidoc | 13 +- docker/Dockerfile | 4 +- docs/site/home/img/practical-gremlin-titled.png | Bin 0 -> 412544 bytes docs/site/home/index.html | 4 +- docs/site/home/template/header-footer.html | 3 + .../developer/development-environment.asciidoc | 14 +- docs/src/dev/developer/release.asciidoc | 1 + docs/src/dev/provider/index.asciidoc | 17 ++ docs/src/index.asciidoc | 2 +- .../src/reference/gremlin-applications.asciidoc | 50 +++-- .../reference/implementations-neo4j.asciidoc | 4 +- .../reference/implementations-spark.asciidoc | 64 +------ docs/src/reference/the-graphcomputer.asciidoc | 85 ++------- docs/src/reference/the-traversal.asciidoc | 43 +++-- .../upgrade/release-3.2.x-incubating.asciidoc | 35 ++++ docs/src/upgrade/release-3.3.x.asciidoc | 8 + docs/src/upgrade/release-3.4.x.asciidoc | 49 ++++- docs/static/images/practical-gremlin.png | Bin 0 -> 392179 bytes .../tinkerpop/gremlin/console/Console.groovy | 16 +- .../tinkerpop/gremlin/jsr223/CoreImports.java | 10 +- .../bulkdumping/BulkDumperVertexProgram.java | 3 + .../computer/bulkloading/BulkLoader.java | 2 + .../bulkloading/BulkLoaderVertexProgram.java | 8 +- .../bulkloading/IncrementalBulkLoader.java | 2 + .../computer/bulkloading/OneTimeBulkLoader.java | 2 + .../computer/clone/CloneVertexProgram.java | 98 ++++++++++ .../computer/traversal/step/map/PageRank.java | 43 +++++ .../step/map/PageRankVertexProgramStep.java | 41 +--- .../traversal/step/map/PeerPressure.java | 43 +++++ .../step/map/PeerPressureVertexProgramStep.java | 40 +--- .../gremlin/process/remote/RemoteGraph.java | 4 + .../process/traversal/step/map/MathStep.java | 64 +++++-- .../step/sideEffect/AddPropertyStep.java | 8 +- .../util/event/ConsoleMutationListener.java | 5 - .../step/util/event/MutationListener.java | 11 +- .../strategy/decoration/EventStrategy.java | 108 ++++++----- .../tinkerpop/gremlin/structure/Graph.java | 1 - .../util/empty/EmptyVertexProperty.java | 2 +- .../structure/util/keyed/KeyedProperty.java | 85 +++++++++ .../util/keyed/KeyedVertexProperty.java | 114 +++++++++++ .../strategy/decoration/EventStrategyTest.java | 1 - gremlin-dotnet/Gremlin.Net.sln | 19 +- .../glv/Gremlin.Net.Template.csproj.template | 33 ++++ .../glv/Gremlin.Net.Template.nuspec.template | 21 ++ gremlin-dotnet/glv/generate.groovy | 36 ++-- .../.template.config/template.json | 14 ++ .../Gremlin.Net.Template.csproj | 33 ++++ .../Gremlin.Net.Template.nuspec | 21 ++ .../src/Gremlin.Net.Template/Program.cs | 50 +++++ .../src/Gremlin.Net.Template/README.md | 46 +++++ .../src/Gremlin.Net.Template/Service.cs | 43 +++++ .../src/Gremlin.Net/Driver/ConnectionPool.cs | 26 ++- gremlin-dotnet/src/pom.xml | 60 +++++- .../Gremlin.Net.Template.IntegrationTest.csproj | 20 ++ .../ServiceTests.cs | 57 ++++++ .../jsr223/GroovyCompilerGremlinPlugin.java | 7 + .../src/main/jython/tests/conftest.py | 2 +- gremlin-server/conf/gremlin-server-modern.yaml | 1 + gremlin-server/conf/gremlin-server-neo4j.yaml | 2 +- gremlin-server/conf/neo4j-empty.properties | 2 +- .../src/test/scripts/neo4j-empty.properties | 2 +- .../tinkerpop/gremlin/AbstractGremlinTest.java | 78 +++++--- .../apache/tinkerpop/gremlin/GraphManager.java | 5 + .../apache/tinkerpop/gremlin/GraphProvider.java | 16 ++ .../gremlin/process/ProcessComputerSuite.java | 2 + .../computer/clone/CloneVertexProgramTest.java | 98 ++++++++++ .../process/traversal/step/map/MathTest.java | 32 ++++ .../traversal/step/map/PageRankTest.java | 10 +- .../traversal/step/map/PeerPressureTest.java | 10 +- .../decoration/EventStrategyProcessTest.java | 190 ++++--------------- .../neo4j/AbstractNeo4jGraphProvider.java | 23 ++- pom.xml | 15 +- 73 files changed, 1539 insertions(+), 544 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8a26b3a8/CHANGELOG.asciidoc ---------------------------------------------------------------------- diff --cc CHANGELOG.asciidoc index 55ab169,d4f0c2e..4dc106d --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@@ -37,7 -38,9 +38,10 @@@ This release also includes changes fro * Changed the order of `select()` scopes. The order is now: maps, side-effects, paths. * Removed previously deprecated Credentials DSL infrastructure. * Moved `TraversalEngine` to `gremlin-test` as it has long been only used in testing infrastructure. +* Nested loop support added allowing `repeat()` steps to be nested. + * Events from `EventStrategy` raised from "new" mutations will now return a `KeyedVertexProperty` or `KeyedProperty` as is appropriate. + * `MutationListener#vertexPropertyChanged(Vertex, VertexProperty, Object, Object...)` no longer has a default implementation. + * Removed previously deprecated `MutationListener#vertexPropertyChanged(Vertex, Property, Object, Object...)`. * Removed previously deprecated `OpSelectorHandler` constructor. * Removed previously deprecated `close()` from `GremlinGroovyScriptEngine` which no longer implements `AutoCloseable`. * Removed previously deprecated `getGraphInputFormat()` and `getGraphOutputFormat()` from `HadoopConfiguration`. http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8a26b3a8/docs/src/upgrade/release-3.4.x.asciidoc ---------------------------------------------------------------------- diff --cc docs/src/upgrade/release-3.4.x.asciidoc index 887ac38,8829569..8de3da9 --- a/docs/src/upgrade/release-3.4.x.asciidoc +++ b/docs/src/upgrade/release-3.4.x.asciidoc @@@ -113,22 -113,27 +113,43 @@@ gremlin> g.V().values('name').max( ==>vadas ---- +==== Nested loop support + +Traversals now support nesting of `repeat()` loops. + +These can now be used to repeat another traversal while in a looped context, either inside the body of a `repeat()` or in its step modifiers (`until()` or `emit()`). + +[source,groovy] +---- +gremlin> g.V().repeat(__.in('traverses').repeat(__.in('develops')).emit()).emit().values('name') +==>stephen +==>matthias +==>marko +---- + +See: link:https://issues.apache.org/jira/browse/TINKERPOP-967[TINKERPOP-967] + + ==== EventStrategy API + + There were some minor modifications to how `EventStrategy` is constructed and what can be expected from events raised + from the addition of new properties. + + With respect to the change in terms of `EventStrategy` construction, the `detach()` builder method formerly took a + `Class` as an argument and that `Class` was meant to be one of the various "detachment factories" or `null`. That + approach was a bit confusing, so that signature has changed to `detach(EventStrategy.Detachment)` where the argument + is a more handy enum of detachment options. + + As for the changes related to events themselves, it is first worth noting that the previously deprecated + `vertexPropertyChanged(Vertex, Property, Object, Object...)` on `MutationListener` has been removed for what should + have originally been the correct signature of `vertexPropertyChanged(Vertex, VertexProperty, Object, Object...)`. In + prior versions when this method and its related `edgePropertyChanged()` and `vertexPropertyPropertyChanged()` were + triggered by way of the addition of a new property a "fake" property was included with a `null` value for the + "oldValue" argument to these methods (as it did not exist prior to this event). That was a bit awkward to reason about + when dealing with that event. To make this easier, the event now raises with a `KeyedVertexProperty` or + `KeyedProperty` instance, which only contains a property key and no value in them. + + link:https://issues.apache.org/jira/browse/TINKERPOP-1831[TINKERPOP-1831] + ==== Deprecation Removal The following deprecated classes, methods or fields have been removed in this version:
