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/06/12 20:58:59 UTC

[01/47] tinkerpop git commit: Updated BlazeGraph to Neptune and dropped Titan. CTR [Forced Update!]

Repository: tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-1967 06fdb7d1a -> b6ac44547 (forced update)


Updated BlazeGraph to Neptune and dropped Titan. CTR


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

Branch: refs/heads/TINKERPOP-1967
Commit: 8dba8893acb766a81b0af1297913b7936e388daf
Parents: 23b766a
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Jun 4 07:42:39 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Jun 4 07:42:39 2018 -0400

----------------------------------------------------------------------
 docs/site/home/img/logos/neptune-logo.png | Bin 0 -> 207133 bytes
 docs/site/home/providers.html             |  15 ++++-----------
 2 files changed, 4 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8dba8893/docs/site/home/img/logos/neptune-logo.png
----------------------------------------------------------------------
diff --git a/docs/site/home/img/logos/neptune-logo.png b/docs/site/home/img/logos/neptune-logo.png
new file mode 100644
index 0000000..db44a9c
Binary files /dev/null and b/docs/site/home/img/logos/neptune-logo.png differ

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8dba8893/docs/site/home/providers.html
----------------------------------------------------------------------
diff --git a/docs/site/home/providers.html b/docs/site/home/providers.html
index 6738831..474d6f1 100644
--- a/docs/site/home/providers.html
+++ b/docs/site/home/providers.html
@@ -124,8 +124,8 @@ limitations under the License.
       <br/>
       <div class="row">
          <div class="col-sm-6 col-md-6">
-            <a href="http://blazegraph.com/"><img src="img/logos/blazegraph-logo.png" style="padding-right:20px;float:left;width:35%;"></a>
-            <a href="http://blazegraph.com/">Blazegraph</a>&trade; is a standards-based, high-performance, scalable, open-source graph database. Written entirely in Java, the platform supports Apache TinkerPop and RDF/SPARQL 1.1 family of specifications.  A commercial version includes GPU acceleration.
+            <a href="https://aws.amazon.com/neptune/"><img src="img/logos/neptune-logo.png" style="padding-right:20px;float:left;width:35%;"></a>
+            <a href="https://aws.amazon.com/neptune/">Amazon Neptune</a> is a fast, reliable, fully-managed graph database service that makes it easy to build and run applications that work with highly connected datasets.
          </div>
          <div class="col-sm-6 col-md-6">
             <a href="https://docs.microsoft.com/en-us/azure/cosmos-db/graph-introduction"><img src="img/logos/cosmosdb-logo.png" style="padding-right:20px;float:left;width:35%;"></a>
@@ -183,15 +183,8 @@ limitations under the License.
            <a href="http://stardog.com/">Stardog</a>&trade; is a graph database optimized for enterprise data unification. It supports both semantic graphs, via RDF, SPARQL, and OWL, as well as property graphs via Apache TinkerPop and Gremlin--it's the only graph database that supports both models over the same database, simultaneously. Stardog also supports hybrid data unification architectures, seamlessly blending data warehouse, system of record, and virtual query strategies. Stardog is suited for enterprise data silo challenges.
          </div>
          <div class="col-sm-6 col-md-6">
-           <a href="http://titan.thinkaurelius.com/"><img src="img/logos/titan-logo.png" style="padding-right:20px;float:left;width:35%;"></a>
-           <a href="http://titan.thinkaurelius.com/">Titan</a>&trade; is an Apache2 licensed scalable, distributed graph database optimized for storing and querying graphs containing hundreds of billions of vertices and edges distributed across a multi-machine cluster. Titan is a transactional database that can support thousands of concurrent users executing complex Gremlin traversals in real time. Titan also provides an in-memory, compression-based OLAP processor as well as integrates with Apache TinkerPop's Spark OLAP processors.
-         </div>
-      </div>
-      <br/>
-      <div class="row">
-         <div class="col-sm-6 col-md-6">
-           <a href="http://tomsawyer.com/products/perspectives/"><img src="img/logos/tomsawyer-logo.png" style="padding-right:20px;float:left;width:35%;"></a>
-           <a href="http://tomsawyer.com/products/perspectives/">Tom Sawyer Perspectives</a>&trade; is advanced graphics-based software for building enterprise-class data relationship visualization and analysis applications. It is a complete Software Development Kit (SDK) with a graphics-based design and preview environment. Tom Sawyer Perspectives combines visualization, layout, and analysis technology with an elegant platform architecture. Tom Sawyer Perspectives enables interaction with graph database systems via Apache TinkerPop.
+            <a href="http://tomsawyer.com/products/perspectives/"><img src="img/logos/tomsawyer-logo.png" style="padding-right:20px;float:left;width:35%;"></a>
+            <a href="http://tomsawyer.com/products/perspectives/">Tom Sawyer Perspectives</a>&trade; is advanced graphics-based software for building enterprise-class data relationship visualization and analysis applications. It is a complete Software Development Kit (SDK) with a graphics-based design and preview environment. Tom Sawyer Perspectives combines visualization, layout, and analysis technology with an elegant platform architecture. Tom Sawyer Perspectives enables interaction with graph database systems via Apache TinkerPop.
          </div>
       </div>
    </div>


[02/47] tinkerpop git commit: Increase test timeout for slow systems TINKERPOP-1897

Posted by sp...@apache.org.
Increase test timeout for slow systems TINKERPOP-1897


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

Branch: refs/heads/TINKERPOP-1967
Commit: b8291539c7b638f499fe184fd733f1973d408f7e
Parents: a5f1f74
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Thu Mar 1 17:17:11 2018 +0100
Committer: Florian Hockmann <fh...@florian-hockmann.de>
Committed: Mon Jun 4 15:57:28 2018 +0200

----------------------------------------------------------------------
 .../java/org/apache/tinkerpop/gremlin/driver/ResultQueueTest.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b8291539/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ResultQueueTest.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ResultQueueTest.java b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ResultQueueTest.java
index a7e6066..43442be 100644
--- a/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ResultQueueTest.java
+++ b/gremlin-driver/src/test/java/org/apache/tinkerpop/gremlin/driver/ResultQueueTest.java
@@ -281,7 +281,7 @@ public class ResultQueueTest extends AbstractResultQueueTest {
                 latch.countDown();
             });
 
-            assertThat(latch.await(3000, TimeUnit.MILLISECONDS), is(true));
+            assertThat(latch.await(10000, TimeUnit.MILLISECONDS), is(true));
 
             assertEquals(500, count1.get());
             assertEquals(150, count2.get());


[11/47] tinkerpop git commit: Add clarification for Docker image releases TINKERPOP-1897

Posted by sp...@apache.org.
Add clarification for Docker image releases TINKERPOP-1897


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

Branch: refs/heads/TINKERPOP-1967
Commit: 80931cee80613c1f910f26c6ceeb25bcf796cd83
Parents: e3c6dde
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Wed May 23 18:30:53 2018 +0200
Committer: Florian Hockmann <fh...@florian-hockmann.de>
Committed: Mon Jun 4 15:57:29 2018 +0200

----------------------------------------------------------------------
 docs/src/dev/developer/development-environment.asciidoc | 8 +++++---
 docs/src/dev/developer/release.asciidoc                 | 5 +++++
 2 files changed, 10 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/80931cee/docs/src/dev/developer/development-environment.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/dev/developer/development-environment.asciidoc b/docs/src/dev/developer/development-environment.asciidoc
index c50b189..cb20d4e 100644
--- a/docs/src/dev/developer/development-environment.asciidoc
+++ b/docs/src/dev/developer/development-environment.asciidoc
@@ -197,9 +197,11 @@ authentication information on the ~/.npmrc file. The easiest way to do that is t
 must be done only once, as the auth token doesn't have an expiration date and it's stored on your file system. If
 this account is newly created then request that a PMC member add your account to the "gremlin" package on npm.
 
-Deploying Docker images to link:https://hub.docker.com/[Docker Hub] requires authentication information in the
-`~/.docker/config.json` file. This information can simply be added with the `docker login` command which will ask for
-credentials. This must be done only once. Afterwards, `docker push` can be used to push images to Docker Hub which will
+Deploying Docker images to link:https://hub.docker.com/[Docker Hub] requires an account that is a member of the TinkerPop
+organization. So if you don't already have an account on Docker Hub then create one and request that
+a PMC member adds your account to the TinkerPop organization. Afterwards, authentication information needs to be added to
+the `~/.docker/config.json` file. This information can simply be added with the `docker login` command which will ask for
+credentials. This must be done only once. Finally, `docker push` can be used to push images to Docker Hub which will
 be done automatically on `mvn deploy` or it can be triggered manually with `mvn dockerfile:push`.
 
 [[building-testing]]

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/80931cee/docs/src/dev/developer/release.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/dev/developer/release.asciidoc b/docs/src/dev/developer/release.asciidoc
index 473e842..7963004 100644
--- a/docs/src/dev/developer/release.asciidoc
+++ b/docs/src/dev/developer/release.asciidoc
@@ -233,6 +233,11 @@ for generating javadoc and without that the binary distributions won't contain t
 .. `mvn deploy -pl gremlin-javascript -DskipTests -Dnpm`
 . Review the GLV releases at link:https://pypi.org/project/gremlinpython/[PyPi],
 link:https://www.nuget.org/packages/Gremlin.Net/[nuget] and link:https://www.npmjs.com/package/gremlin[npm]
+. Deploy the Docker images
+.. `mvn deploy -pl gremlin-console -DskipTests -Pdocker-images`
+.. `mvn deploy -pl gremlin-server -DskipTests -Pdocker-images`
+. Review the deployed Docker images at link:https://hub.docker.com/r/tinkerpop/gremlin-console/[Console]
+and link:https://hub.docker.com/r/tinkerpop/gremlin-server/[Server]
 . `svn co --depth empty https://dist.apache.org/repos/dist/dev/tinkerpop dev; svn up dev/xx.yy.zz`
 . `svn co --depth empty https://dist.apache.org/repos/dist/release/tinkerpop release; mkdir release/xx.yy.zz`
 . Copy release files from `dev/xx.yy.zz` to `release/xx.yy.zz`.


[29/47] tinkerpop git commit: TINKERPOP-1897 Add latest tag for docker images CTR

Posted by sp...@apache.org.
TINKERPOP-1897 Add latest tag for docker images CTR


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

Branch: refs/heads/TINKERPOP-1967
Commit: d4faa6605495e072d65578682d2ed5fd12bdb5ad
Parents: 055f1d5
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Mon Jun 4 20:56:04 2018 +0200
Committer: Florian Hockmann <fh...@florian-hockmann.de>
Committed: Mon Jun 4 20:56:04 2018 +0200

----------------------------------------------------------------------
 gremlin-console/pom.xml | 21 +++++++++++++++++++++
 gremlin-server/pom.xml  | 21 +++++++++++++++++++++
 2 files changed, 42 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d4faa660/gremlin-console/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-console/pom.xml b/gremlin-console/pom.xml
index b933bf8..d9fc35f 100644
--- a/gremlin-console/pom.xml
+++ b/gremlin-console/pom.xml
@@ -383,6 +383,16 @@ limitations under the License.
                                 </configuration>
                             </execution>
                             <execution>
+                                <id>docker-image-tag-latest</id>
+                                <goals>
+                                    <goal>tag</goal>
+                                </goals>
+                                <configuration>
+                                    <tag>latest</tag>
+                                    <skip>${only.when.is.prerelease.version}</skip>
+                                </configuration>
+                            </execution>
+                            <execution>
                                 <id>docker-image-push</id>
                                 <phase>deploy</phase>
                                 <goals>
@@ -404,6 +414,17 @@ limitations under the License.
                                     <skip>${only.when.is.prerelease.version}</skip>
                                 </configuration>
                             </execution>
+                            <execution>
+                                <id>docker-image-push-latest</id>
+                                <phase>deploy</phase>
+                                <goals>
+                                    <goal>push</goal>
+                                </goals>
+                                <configuration>
+                                    <tag>latest</tag>
+                                    <skip>${only.when.is.prerelease.version}</skip>
+                                </configuration>
+                            </execution>
                         </executions>
                         <configuration>
                             <repository>tinkerpop/gremlin-console</repository>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d4faa660/gremlin-server/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-server/pom.xml b/gremlin-server/pom.xml
index 7b20c69..01d5f3e 100644
--- a/gremlin-server/pom.xml
+++ b/gremlin-server/pom.xml
@@ -293,6 +293,16 @@ limitations under the License.
                                 </configuration>
                             </execution>
                             <execution>
+                                <id>docker-image-tag-latest</id>
+                                <goals>
+                                    <goal>tag</goal>
+                                </goals>
+                                <configuration>
+                                    <tag>latest</tag>
+                                    <skip>${only.when.is.prerelease.version}</skip>
+                                </configuration>
+                            </execution>
+                            <execution>
                                 <id>docker-image-push</id>
                                 <phase>deploy</phase>
                                 <goals>
@@ -314,6 +324,17 @@ limitations under the License.
                                     <skip>${only.when.is.prerelease.version}</skip>
                                 </configuration>
                             </execution>
+                            <execution>
+                                <id>docker-image-push-latest</id>
+                                <phase>deploy</phase>
+                                <goals>
+                                    <goal>push</goal>
+                                </goals>
+                                <configuration>
+                                    <tag>latest</tag>
+                                    <skip>${only.when.is.prerelease.version}</skip>
+                                </configuration>
+                            </execution>
                         </executions>
                         <configuration>
                             <repository>tinkerpop/gremlin-server</repository>


[30/47] tinkerpop git commit: Merge branch 'tp33'

Posted by sp...@apache.org.
Merge branch 'tp33'


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

Branch: refs/heads/TINKERPOP-1967
Commit: d7843fea02a46423e06f8a2ff3e6a0f72cfb7c57
Parents: 7702b4b d4faa66
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Mon Jun 4 20:56:26 2018 +0200
Committer: Florian Hockmann <fh...@florian-hockmann.de>
Committed: Mon Jun 4 20:56:26 2018 +0200

----------------------------------------------------------------------
 gremlin-console/pom.xml | 25 +++++++++++++++++++++++--
 gremlin-server/pom.xml  | 25 +++++++++++++++++++++++--
 pom.xml                 | 16 ++++++++++++++++
 3 files changed, 62 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d7843fea/gremlin-console/pom.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d7843fea/gremlin-server/pom.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d7843fea/pom.xml
----------------------------------------------------------------------


[16/47] tinkerpop git commit: Merge branch 'tp33'

Posted by sp...@apache.org.
Merge branch 'tp33'


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

Branch: refs/heads/TINKERPOP-1967
Commit: b0a68b8c04b3634d05abcecf6935d0626f7b6969
Parents: 8dba889 31a3b44
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Mon Jun 4 16:05:13 2018 +0200
Committer: Florian Hockmann <fh...@florian-hockmann.de>
Committed: Mon Jun 4 16:05:13 2018 +0200

----------------------------------------------------------------------
 .dockerignore                                   |  2 +
 CHANGELOG.asciidoc                              |  2 +-
 docker/hadoop/Dockerfile                        | 25 ++++++++
 .../developer/development-environment.asciidoc  | 22 ++++++-
 docs/src/dev/developer/release.asciidoc         |  8 ++-
 .../src/reference/gremlin-applications.asciidoc | 65 ++++++++++++++++++++
 gremlin-console/Dockerfile                      | 31 ++++++++++
 gremlin-console/pom.xml                         | 64 +++++++++++++++++++
 .../src/main/docker/docker-entrypoint.sh        | 24 ++++++++
 .../gremlin/driver/ResultQueueTest.java         |  2 +-
 gremlin-server/Dockerfile                       | 35 +++++++++++
 gremlin-server/pom.xml                          | 64 +++++++++++++++++++
 .../src/main/docker/docker-entrypoint.sh        | 31 ++++++++++
 pom.xml                                         | 35 +++++++++++
 14 files changed, 406 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b0a68b8c/CHANGELOG.asciidoc
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b0a68b8c/docs/src/reference/gremlin-applications.asciidoc
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b0a68b8c/gremlin-console/pom.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b0a68b8c/gremlin-server/pom.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b0a68b8c/pom.xml
----------------------------------------------------------------------


[23/47] tinkerpop git commit: Merge branch 'tp33'

Posted by sp...@apache.org.
Merge branch 'tp33'


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

Branch: refs/heads/TINKERPOP-1967
Commit: 8364047117bd6080cfe8184faafacf4ee7166113
Parents: 9eac7f7 edc0a46
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Jun 4 13:30:57 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Jun 4 13:30:57 2018 -0400

----------------------------------------------------------------------
 gremlin-console/src/main/docker/docker-entrypoint.sh | 0
 gremlin-server/src/main/docker/docker-entrypoint.sh  | 0
 2 files changed, 0 insertions(+), 0 deletions(-)
----------------------------------------------------------------------



[14/47] tinkerpop git commit: TINKERPOP-1897 Added -D equivalent of docker mvn profile and disabled jvm artifact deployment in that profile.

Posted by sp...@apache.org.
TINKERPOP-1897 Added -D equivalent of docker mvn profile and disabled jvm artifact deployment in that profile.


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

Branch: refs/heads/TINKERPOP-1967
Commit: 6f6d9417a4c938f42b8260b8bd5328d147106a0e
Parents: 8232158
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Jun 4 09:26:22 2018 -0400
Committer: Florian Hockmann <fh...@florian-hockmann.de>
Committed: Mon Jun 4 15:57:30 2018 +0200

----------------------------------------------------------------------
 .../developer/development-environment.asciidoc    |  9 +++++----
 docs/src/dev/developer/release.asciidoc           |  6 +++---
 gremlin-console/pom.xml                           | 18 +++++++++++++++++-
 gremlin-server/pom.xml                            | 18 +++++++++++++++++-
 4 files changed, 42 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6f6d9417/docs/src/dev/developer/development-environment.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/dev/developer/development-environment.asciidoc b/docs/src/dev/developer/development-environment.asciidoc
index ae97d1a..6b1dbd6 100644
--- a/docs/src/dev/developer/development-environment.asciidoc
+++ b/docs/src/dev/developer/development-environment.asciidoc
@@ -129,15 +129,16 @@ See the <<release-environment,Release Environment>> section for more information
 
 [[docker-environment]]
 === Docker Environment
-The build optionally requires Docker to build Docker images of Gremlin Server and Gremlin Console.
 
-The Docker images can be built from the command line with:
+The build optionally requires Docker to build Docker images of Gremlin Server and Gremlin Console. The Docker images
+can be built from the command line with:
+
 [source,text]
 ----
-mvn clean install -Pdocker-images
+mvn clean install -pl gremlin-server,gremlin-console -DdockerImages
 ----
-which enables the "docker-images" Maven profile.
 
+which enables the "docker-images" Maven profile.
 
 [[release-environment]]
 === Release Environment

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6f6d9417/docs/src/dev/developer/release.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/dev/developer/release.asciidoc b/docs/src/dev/developer/release.asciidoc
index eef4e3f..5496b31 100644
--- a/docs/src/dev/developer/release.asciidoc
+++ b/docs/src/dev/developer/release.asciidoc
@@ -111,7 +111,7 @@ under release is protected. Tweaks to documentation and other odds and ends rela
 during this period.
 . At some point during the week:
 .. Run the full integration test suite: `mvn clean install -DskipIntegrationTests=false -DincludeNeo4j`
-.. Build and test the Docker images: `mvn clean install -pl gremlin-server,gremlin-console -Pdocker-images`
+.. Build and test the Docker images: `mvn clean install -pl gremlin-server,gremlin-console -DdockerImages`
 .. Deploy a final SNAPSHOT to the snapshot repository as well as GLV and Docker image pre-releases.
 .. Review LICENSE and NOTICE files to make sure that no <<dependencies,changes are needed>>.
 .. Review javadoc filters on the "Core API" docs to be sure nothing needs to change.
@@ -235,8 +235,8 @@ for generating javadoc and without that the binary distributions won't contain t
 . Review the GLV releases at link:https://pypi.org/project/gremlinpython/[PyPi],
 link:https://www.nuget.org/packages/Gremlin.Net/[nuget] and link:https://www.npmjs.com/package/gremlin[npm]
 . Deploy the Docker images
-.. `mvn deploy -pl gremlin-console -DskipTests -Pdocker-images`
-.. `mvn deploy -pl gremlin-server -DskipTests -Pdocker-images`
+.. `mvn deploy -pl gremlin-console -DskipTests -DdockerImages`
+.. `mvn deploy -pl gremlin-server -DskipTests -DdockerImages`
 . Review the deployed Docker images at link:https://hub.docker.com/r/tinkerpop/gremlin-console/[Console]
 and link:https://hub.docker.com/r/tinkerpop/gremlin-server/[Server]
 . `svn co --depth empty https://dist.apache.org/repos/dist/dev/tinkerpop dev; svn up dev/xx.yy.zz`

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6f6d9417/gremlin-console/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-console/pom.xml b/gremlin-console/pom.xml
index b5dca0e..748360c 100644
--- a/gremlin-console/pom.xml
+++ b/gremlin-console/pom.xml
@@ -338,8 +338,24 @@ limitations under the License.
 
         <profile>
             <id>docker-images</id>
+            <activation>
+                <activeByDefault>false</activeByDefault>
+                <property>
+                    <name>dockerImages</name>
+                </property>
+            </activation>
             <build>
-                <plugins>                    
+                <plugins>
+                    <!--
+                    Deploying docker images will happen out of the normal jvm artifact deployment flow, so disable that
+                    -->
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-deploy-plugin</artifactId>
+                        <configuration>
+                            <skip>true</skip>
+                        </configuration>
+                    </plugin>
                     <plugin>
                         <groupId>com.spotify</groupId>
                         <artifactId>dockerfile-maven-plugin</artifactId>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6f6d9417/gremlin-server/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-server/pom.xml b/gremlin-server/pom.xml
index e361c9e..0d68e7b 100644
--- a/gremlin-server/pom.xml
+++ b/gremlin-server/pom.xml
@@ -246,8 +246,24 @@ limitations under the License.
 
         <profile>
             <id>docker-images</id>
+            <activation>
+                <activeByDefault>false</activeByDefault>
+                <property>
+                    <name>dockerImages</name>
+                </property>
+            </activation>
             <build>
-                <plugins>                    
+                <plugins>
+                    <!--
+                    Deploying docker images will happen out of the normal jvm artifact deployment flow, so disable that
+                    -->
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-deploy-plugin</artifactId>
+                        <configuration>
+                            <skip>true</skip>
+                        </configuration>
+                    </plugin>
                     <plugin>
                         <groupId>com.spotify</groupId>
                         <artifactId>dockerfile-maven-plugin</artifactId>


[36/47] tinkerpop git commit: Merge branch 'tp33'

Posted by sp...@apache.org.
Merge branch 'tp33'


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

Branch: refs/heads/TINKERPOP-1967
Commit: d5b54fe0fdb8a60d7af28702649896fdce94826d
Parents: 0e17304 a0b7ce5
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Jun 5 08:18:45 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Jun 5 08:18:45 2018 -0400

----------------------------------------------------------------------
 .../apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java   | 3 ---
 1 file changed, 3 deletions(-)
----------------------------------------------------------------------



[35/47] tinkerpop git commit: Remove deprecation from eval() method

Posted by sp...@apache.org.
Remove deprecation from eval() method

This method was never meant to be deprecated. It seems to have been deprecated as a result of a bad merge. Looking back at tp32 it's clear that a previously removed method on this tp33 branch was the original one to be deprecated and this one was meant to stay. CTR


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

Branch: refs/heads/TINKERPOP-1967
Commit: a0b7ce517a45b07535f526c8879e93003639d306
Parents: d7b756b
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Jun 5 08:17:23 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Jun 5 08:17:23 2018 -0400

----------------------------------------------------------------------
 .../apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java   | 3 ---
 1 file changed, 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a0b7ce51/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
index 15d3534..fc171bb 100644
--- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
+++ b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
@@ -329,10 +329,7 @@ public class GremlinExecutor implements AutoCloseable {
 
     /**
      * Evaluates bytecode with bindings for a specific language into a {@link Traversal}.
-     *
-     * @deprecated As of release 3.2.7, replaced by {@link #eval(Bytecode, Bindings, String, String)}
      */
-    @Deprecated
     public Traversal.Admin eval(final Bytecode bytecode, final Bindings boundVars, final String language, final String traversalSource) throws ScriptException {
         final String lang = Optional.ofNullable(language).orElse("gremlin-groovy");
 


[44/47] tinkerpop git commit: Merge branch 'tp32' into tp33

Posted by sp...@apache.org.
Merge branch 'tp32' into tp33


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

Branch: refs/heads/TINKERPOP-1967
Commit: d4c76a698c133c2f491ec6a358492cc4b5c140a3
Parents: 55fcbdc eba1df3
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Sat Jun 9 13:34:32 2018 +0200
Committer: Florian Hockmann <fh...@florian-hockmann.de>
Committed: Sat Jun 9 13:34:32 2018 +0200

----------------------------------------------------------------------
 .travis.yml | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)
----------------------------------------------------------------------



[41/47] tinkerpop git commit: Merge branch 'tp32' into tp33

Posted by sp...@apache.org.
Merge branch 'tp32' into tp33


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

Branch: refs/heads/TINKERPOP-1967
Commit: 55fcbdc45bf3c6a78d7ecbbe2b13fe24fbb5ba1c
Parents: a0b7ce5 e8e22af
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Thu Jun 7 07:37:35 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jun 7 07:37:35 2018 -0400

----------------------------------------------------------------------
 hadoop-gremlin/pom.xml | 18 ------------------
 1 file changed, 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/55fcbdc4/hadoop-gremlin/pom.xml
----------------------------------------------------------------------


[39/47] tinkerpop git commit: Minor javadoc fix CTR

Posted by sp...@apache.org.
Minor javadoc fix CTR


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

Branch: refs/heads/TINKERPOP-1967
Commit: a3677e2e82c7e4722518f4be9b9235300887357a
Parents: f6274ed
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Jun 6 15:45:17 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jun 6 15:45:17 2018 -0400

----------------------------------------------------------------------
 .../main/java/org/apache/tinkerpop/gremlin/structure/Graph.java    | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a3677e2e/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
index 494ca8c..2fbfe03 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Graph.java
@@ -1239,7 +1239,7 @@ public interface Graph extends AutoCloseable, Host {
         /**
          * The list of {@link GraphComputer} implementations by class name that a test should opt-out from using (i.e. other
          * graph computers not in this list will execute the test).  This setting should only be included when
-         * the test is one that uses the {@link ComputerTraversalEngine} - it will otherwise be ignored.  By
+         * the test is one that uses the {@code TraversalEngine.COMPUTER} - it will otherwise be ignored.  By
          * default, an empty array is assigned and it is thus assumed that all computers are excluded when an
          * {@code OptOut} annotation is used, therefore this value must be overridden to be more specific.
          */


[33/47] tinkerpop git commit: Merge branch 'tp33'

Posted by sp...@apache.org.
Merge branch 'tp33'


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

Branch: refs/heads/TINKERPOP-1967
Commit: 0e17304063078df378c62c4596edb1de3ffa1524
Parents: d7843fe d7b756b
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Jun 4 17:04:28 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Jun 4 17:04:28 2018 -0400

----------------------------------------------------------------------
 .../traversal/step/map/PropertyElementStep.java | 48 --------------------
 1 file changed, 48 deletions(-)
----------------------------------------------------------------------



[47/47] tinkerpop git commit: TINKERPOP-1967 Added connectedComponent() step

Posted by sp...@apache.org.
TINKERPOP-1967 Added connectedComponent() step

Deprecated the recipe for "Connected Components" but left the old content present as I felt it had educational value.


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

Branch: refs/heads/TINKERPOP-1967
Commit: b6ac445475af67910059c932f25657f7957b14a9
Parents: f3506ee
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Thu May 17 14:44:01 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Jun 12 16:41:35 2018 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |   1 +
 docs/src/recipes/connected-components.asciidoc  |   8 +-
 docs/src/reference/the-graphcomputer.asciidoc   |   6 +
 docs/src/reference/the-traversal.asciidoc       |  36 +++
 docs/src/upgrade/release-3.4.x.asciidoc         |  32 +++
 .../tinkerpop/gremlin/jsr223/CoreImports.java   |   1 +
 .../ConnectedComponentVertexProgram.java        | 234 +++++++++++++++++++
 .../ConnectedComponentVertexProgramStep.java    | 113 +++++++++
 .../gremlin/process/remote/RemoteGraph.java     |   4 +
 .../traversal/dsl/graph/GraphTraversal.java     |  15 ++
 .../traversal/dsl/graph/GraphTraversalTest.java |   2 +-
 .../Process/Traversal/GraphTraversal.cs         |   9 +
 .../lib/process/graph-traversal.js              |  10 +
 .../gremlin_python/process/graph_traversal.py   |   4 +
 .../gremlin/process/ProcessComputerSuite.java   |   2 +
 .../step/map/ConnectedComponentTest.java        | 117 ++++++++++
 .../computer/SparkHadoopGraphProvider.java      |   2 +
 17 files changed, 594 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b6ac4454/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index e886107..5a6479c 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -29,6 +29,7 @@ This release also includes changes from <<release-3-3-3, 3.3.3>>.
 * Replaced `Parameterizing.addPropertyMutations()` with `Configuring.configure()`.
 * Changed interface hierarchy for `Parameterizing` and `Mutating` interfaces as they are tightly related.
 * Introduced the `with()` step modulator which can supply configuration options to `Configuring` steps.
+* Added `connectedComponent()` step and related `VertexProgram`.
 * Added `supportsUpsert()` option to `VertexFeatures` and `EdgeFeatures`.
 * `min()` and `max()` now support all types implementing `Comparable`.
 * Change the `toString()` of `Path` to be standardized as other graph elements are.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b6ac4454/docs/src/recipes/connected-components.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/recipes/connected-components.asciidoc b/docs/src/recipes/connected-components.asciidoc
index 46d61eb..70abdbd 100644
--- a/docs/src/recipes/connected-components.asciidoc
+++ b/docs/src/recipes/connected-components.asciidoc
@@ -18,7 +18,13 @@ limitations under the License.
 == Connected Components
 
 Gremlin can be used to find link:https://en.wikipedia.org/wiki/Connected_component_(graph_theory)[connected components]
-in a graph. Consider the following graph which has three connected components:
+in a graph. As of TinkerPop 3.4.0, the process has been simplified to the `connectedComponent()`-step which is
+described in more detail in the link:
+link:http://tinkerpop.apache.org/docs/x.y.z/reference/#connectedcomponent-step[Reference Documentation].
+
+The `connectedComponent()`-step replaces the original recipe described below from earlier versions of TinkerPop,
+however the algorithm from that old recipe remains interesting for educational purposes and has thus not been removed.
+The original recipe considers the following graph which has three connected components:
 
 image:connected-components.png[width=600]
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b6ac4454/docs/src/reference/the-graphcomputer.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/reference/the-graphcomputer.asciidoc b/docs/src/reference/the-graphcomputer.asciidoc
index 4bf39d0..566651b 100644
--- a/docs/src/reference/the-graphcomputer.asciidoc
+++ b/docs/src/reference/the-graphcomputer.asciidoc
@@ -403,6 +403,12 @@ g.V().peerPressure().by('cluster').valueMap()
 g.V().peerPressure().by(outE('knows')).by('cluster').valueMap()
 ----
 
+[[connectedcomponentvertexprogram]]
+=== ConnectedComponentVertexProgram
+
+The `ConnectedComponentVertexProgram` identifies link:https://en.wikipedia.org/wiki/Connected_component_(graph_theory)[Connected Component]
+instances in a graph. See <<connectedcomponent-step,`connectedComponent()`>>-step for more information.
+
 [[bulkdumpervertexprogram]]
 === BulkDumperVertexProgram
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b6ac4454/docs/src/reference/the-traversal.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/reference/the-traversal.asciidoc b/docs/src/reference/the-traversal.asciidoc
index 0589203..0a71075 100644
--- a/docs/src/reference/the-traversal.asciidoc
+++ b/docs/src/reference/the-traversal.asciidoc
@@ -608,6 +608,42 @@ g.V().coin(1.0)
 
 link:++http://tinkerpop.apache.org/javadocs/x.y.z/core/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.html#coin-double-++[`coin(double)`]
 
+[[connectedcomponent-step]]
+=== ConnectedComponent Step
+
+The `connectedComponent()` step performs a computation to identify link:https://en.wikipedia.org/wiki/Connected_component_(graph_theory)[Connected Component]
+instances in a graph. When this step completes, the vertices will be labelled with a component identifier to denote
+the component to which they are associated.
+
+IMPORTANT: The `connectedComponent()`-step is a `VertexComputing`-step and as such, can only be used against a graph
+that supports `GraphComputer` (OLAP).
+
+[gremlin-groovy,modern]
+----
+g = graph.traversal().withComputer()
+g.V().
+  connectedComponent().
+    with(ConnectedComponent.PROPERTY_NAME, 'component').
+  project('name','component').
+    by('name').
+    by('component')
+g.V().hasLabel('person').
+  connectedComponent().
+    with(ConnectedComponent.PROPERTY_NAME, 'component').
+    with(ConnectedComponent.EDGES, outE('knows')).
+  project('name','component').
+    by('name').
+    by('component')
+----
+
+Note the use of the `with()` modulating step which provides configuration options to the algorithm. It takes
+configuration keys from the static `ConnectedComponent` inner class on `ConnectedComponentVertexProgramStep` and is
+automatically imported to the Gremlin Console.
+
+*Additional References*
+
+link:++http://tinkerpop.apache.org/javadocs/x.y.z/core/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.html#connectedComponent--++[`connectedComponent()`]
+
 [[constant-step]]
 === Constant Step
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b6ac4454/docs/src/upgrade/release-3.4.x.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/upgrade/release-3.4.x.asciidoc b/docs/src/upgrade/release-3.4.x.asciidoc
index 2568974..464afd6 100644
--- a/docs/src/upgrade/release-3.4.x.asciidoc
+++ b/docs/src/upgrade/release-3.4.x.asciidoc
@@ -65,6 +65,38 @@ release where breaking changes are allowed.
 See: link:https://issues.apache.org/jira/browse/TINKERPOP-1975[TINKERPOP-1975],
 link:http://tinkerpop.apache.org/docs/current/reference/#with-step[Reference Documentation]
 
+==== connectedComponent() Step
+
+In prior version of TinkerPop, it was recommended that the identification of
+link:https://en.wikipedia.org/wiki/Connected_component_(graph_theory)[Connected Component] instances in a graph be
+computed by way of a reasonably complex bit of Gremlin that looked something like this:
+
+[source,groovy]
+----
+g.V().emit(cyclicPath().or().not(both())).repeat(both()).until(cyclicPath()).
+  path().aggregate("p").
+  unfold().dedup().
+  map(__.as("v").select("p").unfold().
+         filter(unfold().where(eq("v"))).
+         unfold().dedup().order().by(id).fold()).
+  dedup()
+----
+
+The above approach had a number of drawbacks that included a large execution cost as well as incompatibilities in OLAP.
+To simplify usage of this commonly use graph algorithm, TinkerPop 3.4.0 introduces the `connectedComponent()` step
+which reduces the above operation to:
+
+[source,groovy]
+----
+g.withComputer().V().connectedComponent()
+----
+
+It is important to note that this step does require the use of a `GraphComputer` to work, as it utilizes a
+`VertexProgram` behind the scenes.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1967[TINKERPOP-1967],
+link:http://tinkerpop.apache.org/docs/x.y.z/reference/#connectedcomponent-step[Reference Documentation]
+
 ==== Removal of Giraph Support
 
 Support for Giraph has been removed as of this version. There were a number of reasons for this decision which were

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b6ac4454/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java
index 558d6ca..a01d170 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java
@@ -48,6 +48,7 @@ import org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankMa
 import org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankVertexProgram;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.MemoryTraversalSideEffects;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.ConnectedComponentVertexProgramStep;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.PageRank;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.PeerPressure;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy;

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b6ac4454/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/connected/ConnectedComponentVertexProgram.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/connected/ConnectedComponentVertexProgram.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/connected/ConnectedComponentVertexProgram.java
new file mode 100644
index 0000000..de718f1
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/clustering/connected/ConnectedComponentVertexProgram.java
@@ -0,0 +1,234 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.process.computer.clustering.connected;
+
+import org.apache.commons.configuration.BaseConfiguration;
+import org.apache.commons.configuration.Configuration;
+import org.apache.commons.configuration.ConfigurationUtils;
+import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
+import org.apache.tinkerpop.gremlin.process.computer.Memory;
+import org.apache.tinkerpop.gremlin.process.computer.MemoryComputeKey;
+import org.apache.tinkerpop.gremlin.process.computer.MessageScope;
+import org.apache.tinkerpop.gremlin.process.computer.Messenger;
+import org.apache.tinkerpop.gremlin.process.computer.VertexComputeKey;
+import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
+import org.apache.tinkerpop.gremlin.process.computer.util.AbstractVertexProgramBuilder;
+import org.apache.tinkerpop.gremlin.process.traversal.Operator;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.process.traversal.util.PureTraversal;
+import org.apache.tinkerpop.gremlin.structure.Direction;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.VertexProperty;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+/**
+ * Identifies "Connected Component" instances in a graph by assigning a component identifier (the lexicographically
+ * least string value of the vertex in the component) to each vertex.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ * @author Daniel Kuppitz (http://gremlin.guru)
+ */
+public class ConnectedComponentVertexProgram implements VertexProgram<String> {
+
+    public static final String COMPONENT = "gremlin.connectedComponentVertexProgram.component";
+    private static final String PROPERTY = "gremlin.connectedComponentVertexProgram.property";
+    private static final String EDGE_TRAVERSAL = "gremlin.pageRankVertexProgram.edgeTraversal";
+    private static final String HAS_HALTED = "gremlin.connectedComponentVertexProgram.hasHalted";
+    private static final String VOTE_TO_HALT = "gremlin.connectedComponentVertexProgram.voteToHalt";
+
+    private static final Set<MemoryComputeKey> MEMORY_COMPUTE_KEYS = Collections.singleton(MemoryComputeKey.of(VOTE_TO_HALT, Operator.and, false, true));
+    private MessageScope.Local<?> scope = MessageScope.Local.of(__::bothE);
+    private Set<MessageScope> scopes;
+    private String property = COMPONENT;
+    private boolean hasHalted = false;
+    private PureTraversal<Vertex, Edge> edgeTraversal = null;
+    private Configuration configuration;
+
+    private ConnectedComponentVertexProgram() {}
+
+    @Override
+    public void loadState(final Graph graph, final Configuration config) {
+        configuration = new BaseConfiguration();
+        if (config != null) {
+            ConfigurationUtils.copy(config, configuration);
+        }
+
+        if (configuration.containsKey(EDGE_TRAVERSAL)) {
+            this.edgeTraversal = PureTraversal.loadState(configuration, EDGE_TRAVERSAL, graph);
+            this.scope = MessageScope.Local.of(() -> this.edgeTraversal.get().clone());
+        }
+
+        scopes = new HashSet<>(Collections.singletonList(scope));
+
+        this.property = configuration.getString(PROPERTY, COMPONENT);
+        this.hasHalted = configuration.getBoolean(HAS_HALTED, false);
+    }
+
+    @Override
+    public void storeState(final Configuration config) {
+        VertexProgram.super.storeState(config);
+        if (configuration != null) {
+            ConfigurationUtils.copy(configuration, config);
+        }
+    }
+
+    @Override
+    public void setup(final Memory memory) {
+        memory.set(VOTE_TO_HALT, true);
+    }
+
+    @Override
+    public void execute(final Vertex vertex, final Messenger<String> messenger, final Memory memory) {
+        if (memory.isInitialIteration()) {
+            // on the first pass, just initialize the component to its own id then pass it to all adjacent vertices
+            // for evaluation
+            vertex.property(VertexProperty.Cardinality.single, property, vertex.id().toString());
+
+            // no need to send messages from traversers that were filtered - happens for stuff like
+            // g.V().hasLabel('software').connectedComponent() (i.e. when there is a TraversalVertexProgram in the mix
+            // halting traversers. only want to send messages from traversers that are still hanging about after
+            // the filter. the unfiltered vertices can only react to messages sent to them. of course, this can
+            // lead to weirdness in results. 
+            if (vertex.edges(Direction.BOTH).hasNext() && !(hasHalted && !vertex.property(TraversalVertexProgram.HALTED_TRAVERSERS).isPresent())) {
+                // since there was message passing we don't want to halt on the first round. this should only trigger
+                // a single pass finish if the graph is completely disconnected (technically, it won't even really
+                // work in cases where halted traversers come into play
+                messenger.sendMessage(scope, vertex.id().toString());
+                memory.add(VOTE_TO_HALT, false);
+            }
+        } else {
+            // by the second iteration all vertices that matter should have a component assigned
+            String currentComponent = vertex.value(property);
+            boolean different = false;
+
+            // iterate through messages received and determine if there is a component that has a lesser value than
+            // the currently assigned one
+            final Iterator<String> componentIterator = messenger.receiveMessages();
+            while(componentIterator.hasNext()) {
+                final String candidateComponent = componentIterator.next();
+                if (candidateComponent.compareTo(currentComponent) < 0) {
+                    currentComponent = candidateComponent;
+                    different = true;
+                }
+            }
+
+            // if there is a better component then assign it and notify adjacent vertices. triggering the message
+            // passing should not halt future executions
+            if (different) {
+                vertex.property(VertexProperty.Cardinality.single, property, currentComponent);
+                messenger.sendMessage(scope, currentComponent);
+                memory.add(VOTE_TO_HALT, false);
+            }
+        }
+    }
+
+    @Override
+    public Set<VertexComputeKey> getVertexComputeKeys() {
+        return new HashSet<>(Collections.singletonList(VertexComputeKey.of(property, false)));
+    }
+
+    @Override
+    public Set<MemoryComputeKey> getMemoryComputeKeys() {
+        return MEMORY_COMPUTE_KEYS;
+    }
+
+    @Override
+    public boolean terminate(final Memory memory) {
+        final boolean voteToHalt = memory.<Boolean>get(VOTE_TO_HALT);
+        if (voteToHalt) {
+            return true;
+        } else {
+            // it is basically always assumed that the program will want to halt, but if message passing occurs, the
+            // program will want to continue, thus reset false values to true for future iterations
+            memory.set(VOTE_TO_HALT, true);
+            return false;
+        }
+    }
+
+    @Override
+    public Set<MessageScope> getMessageScopes(final Memory memory) {
+        return scopes;
+    }
+
+    @Override
+    public GraphComputer.ResultGraph getPreferredResultGraph() {
+        return GraphComputer.ResultGraph.NEW;
+    }
+
+    @Override
+    public GraphComputer.Persist getPreferredPersist() {
+        return GraphComputer.Persist.VERTEX_PROPERTIES;
+    }
+
+
+    @Override
+    @SuppressWarnings("CloneDoesntCallSuperClone,CloneDoesntDeclareCloneNotSupportedException")
+    public ConnectedComponentVertexProgram clone() {
+        return this;
+    }
+
+    @Override
+    public Features getFeatures() {
+        return new Features() {
+            @Override
+            public boolean requiresLocalMessageScopes() {
+                return true;
+            }
+
+            @Override
+            public boolean requiresVertexPropertyAddition() {
+                return true;
+            }
+        };
+    }
+
+    public static ConnectedComponentVertexProgram.Builder build() {
+        return new ConnectedComponentVertexProgram.Builder();
+    }
+
+    public static final class Builder extends AbstractVertexProgramBuilder<ConnectedComponentVertexProgram.Builder> {
+
+        private Builder() {
+            super(ConnectedComponentVertexProgram.class);
+        }
+
+        public ConnectedComponentVertexProgram.Builder hasHalted(final boolean hasHalted) {
+            this.configuration.setProperty(HAS_HALTED, hasHalted);
+            return this;
+        }
+
+        public ConnectedComponentVertexProgram.Builder edges(final Traversal.Admin<Vertex, Edge> edgeTraversal) {
+            PureTraversal.storeState(this.configuration, EDGE_TRAVERSAL, edgeTraversal);
+            return this;
+        }
+
+        public ConnectedComponentVertexProgram.Builder property(final String key) {
+            this.configuration.setProperty(PROPERTY, key);
+            return this;
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b6ac4454/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ConnectedComponentVertexProgramStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ConnectedComponentVertexProgramStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ConnectedComponentVertexProgramStep.java
new file mode 100644
index 0000000..d7f761a
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/ConnectedComponentVertexProgramStep.java
@@ -0,0 +1,113 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tinkerpop.gremlin.process.computer.traversal.step.map;
+
+import org.apache.tinkerpop.gremlin.process.computer.GraphFilter;
+import org.apache.tinkerpop.gremlin.process.computer.Memory;
+import org.apache.tinkerpop.gremlin.process.computer.clustering.connected.ConnectedComponentVertexProgram;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Configuring;
+import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.Parameters;
+import org.apache.tinkerpop.gremlin.process.traversal.util.PureTraversal;
+import org.apache.tinkerpop.gremlin.structure.Edge;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public final class ConnectedComponentVertexProgramStep extends VertexProgramStep implements TraversalParent, Configuring {
+
+    private Parameters parameters = new Parameters();
+    private PureTraversal<Vertex, Edge> edgeTraversal;
+    private String clusterProperty = ConnectedComponentVertexProgram.COMPONENT;
+
+    public ConnectedComponentVertexProgramStep(final Traversal.Admin traversal) {
+        super(traversal);
+        this.configure(ConnectedComponent.EDGES, __.<Vertex>bothE());
+    }
+
+    @Override
+    public void configure(final Object... keyValues) {
+        if (keyValues[0].equals(ConnectedComponent.EDGES)) {
+            if (!(keyValues[1] instanceof Traversal))
+                throw new IllegalArgumentException("ConnectedComponent.EDGES requires a Traversal as its argument");
+            this.edgeTraversal = new PureTraversal<>(((Traversal<Vertex,Edge>) keyValues[1]).asAdmin());
+            this.integrateChild(this.edgeTraversal.get());
+        } else if (keyValues[0].equals(ConnectedComponent.PROPERTY_NAME)) {
+            if (!(keyValues[1] instanceof String))
+                throw new IllegalArgumentException("ConnectedComponent.PROPERTY_NAME requires a String as its argument");
+            this.clusterProperty = (String) keyValues[1];
+        } else {
+            this.parameters.set(this, keyValues);
+        }
+    }
+
+    @Override
+    public Parameters getParameters() {
+        return parameters;
+    }
+
+    @Override
+    public int hashCode() {
+        return super.hashCode() ^ this.clusterProperty.hashCode();
+    }
+
+    @Override
+    public String toString() {
+        return StringFactory.stepString(this, this.clusterProperty, new GraphFilter(this.computer));
+    }
+
+    @Override
+    public ConnectedComponentVertexProgram generateProgram(final Graph graph, final Memory memory) {
+        final Traversal.Admin<Vertex, Edge> detachedTraversal = this.edgeTraversal.getPure();
+        detachedTraversal.setStrategies(TraversalStrategies.GlobalCache.getStrategies(graph.getClass()));
+        return ConnectedComponentVertexProgram.build().
+                hasHalted(memory.exists(TraversalVertexProgram.HALTED_TRAVERSERS)).
+                edges(detachedTraversal).
+                property(this.clusterProperty).create(graph);
+    }
+
+    @Override
+    public ConnectedComponentVertexProgramStep clone() {
+        return (ConnectedComponentVertexProgramStep) super.clone();
+    }
+
+    /**
+     * Configuration options to be passed to the {@link GraphTraversal#with(String, Object)} step.
+     */
+    public static class ConnectedComponent {
+        /**
+         * Configures the edge to traverse when calculating the pagerank.
+         */
+        public static final String EDGES = Graph.Hidden.hide("tinkerpop.connectedComponent.edges");
+
+        /**
+         * Configures the name of the property within which to store the pagerank value.
+         */
+        public static final String PROPERTY_NAME = Graph.Hidden.hide("tinkerpop.connectedComponent.propertyName");
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b6ac4454/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java
index da12114..d2093e4 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java
@@ -57,6 +57,10 @@ import java.util.Iterator;
         method = "*",
         reason = "hmmmm")
 @Graph.OptOut(
+        test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.ConnectedComponentTest",
+        method = "*",
+        reason = "hmmmm")
+@Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.traversal.step.map.PageRankTest",
         method = "*",
         reason = "hmmmm")

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b6ac4454/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
----------------------------------------------------------------------
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 7d1e7e4..6fbe61d 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
@@ -19,6 +19,8 @@
 package org.apache.tinkerpop.gremlin.process.traversal.dsl.graph;
 
 import org.apache.tinkerpop.gremlin.process.computer.VertexProgram;
+import org.apache.tinkerpop.gremlin.process.computer.clustering.connected.ConnectedComponentVertexProgram;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.ConnectedComponentVertexProgramStep;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.PageRankVertexProgramStep;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.PeerPressureVertexProgramStep;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.ProgramVertexProgramStep;
@@ -2422,6 +2424,18 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
     }
 
     /**
+     * Executes a Connected Component algorithm over the graph.
+     *
+     * @return the traversal with the appended {@link ConnectedComponentVertexProgram}
+     * @see <a href="http://tinkerpop.apache.org/docs/${project.version}/reference/#connectedcomponent-step" target="_blank">Reference Documentation - ConnectedComponent Step</a>
+     * @since 3.4.0
+     */
+    public default GraphTraversal<S, E> connectedComponent() {
+        this.asAdmin().getBytecode().addStep(Symbols.connectedComponent);
+        return this.asAdmin().addStep((Step<E, E>) new ConnectedComponentVertexProgramStep(this.asAdmin()));
+    }
+
+    /**
      * Executes an arbitrary {@link VertexProgram} over the graph.
      *
      * @return the traversal with the appended {@link ProgramVertexProgramStep}
@@ -2817,6 +2831,7 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
 
         public static final String pageRank = "pageRank";
         public static final String peerPressure = "peerPressure";
+        public static final String connectedComponent = "connectedComponent";
         public static final String program = "program";
 
         public static final String by = "by";

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b6ac4454/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalTest.java
index 9009d0b..7ef9027 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalTest.java
@@ -42,7 +42,7 @@ import static org.junit.Assert.assertEquals;
 public class GraphTraversalTest {
     private static final Logger logger = LoggerFactory.getLogger(GraphTraversalTest.class);
 
-    private static Set<String> NO_GRAPH = new HashSet<>(Arrays.asList("asAdmin", "by", "with", "option", "iterate", "to", "from", "profile", "pageRank", "peerPressure", "program", "none"));
+    private static Set<String> NO_GRAPH = new HashSet<>(Arrays.asList("asAdmin", "by", "with", "option", "iterate", "to", "from", "profile", "pageRank", "connectedComponent", "peerPressure", "program", "none"));
     private static Set<String> NO_ANONYMOUS = new HashSet<>(Arrays.asList("start", "__"));
     private static Set<String> IGNORES_BYTECODE = new HashSet<>(Arrays.asList("asAdmin", "iterate", "mapValues", "mapKeys"));
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b6ac4454/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
index 537cdbe..a1936a7 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
@@ -401,6 +401,15 @@ namespace Gremlin.Net.Process.Traversal
         }
 
         /// <summary>
+        ///     Adds the connectedComponent step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
+        public GraphTraversal<S, E> ConnectedComponent ()
+        {
+            Bytecode.AddStep("connectedComponent");
+            return Wrap<S, E>(this);
+        }
+
+        /// <summary>
         ///     Adds the constant step to this <see cref="GraphTraversal{SType, EType}" />.
         /// </summary>
         public GraphTraversal<S, E2> Constant<E2> (E2 e)

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b6ac4454/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/graph-traversal.js
----------------------------------------------------------------------
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/graph-traversal.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/graph-traversal.js
index f143542..b18f515 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/graph-traversal.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/graph-traversal.js
@@ -343,6 +343,16 @@ class GraphTraversal extends Traversal {
   }
   
   /**
+   * Graph traversal connectedComponent method.
+   * @param {...Object} args
+   * @returns {GraphTraversal}
+   */
+  connectedComponent(...args) {
+    this.bytecode.addStep('connectedComponent', args);
+    return this;
+  }
+  
+  /**
    * Graph traversal constant method.
    * @param {...Object} args
    * @returns {GraphTraversal}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b6ac4454/gremlin-python/src/main/jython/gremlin_python/process/graph_traversal.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/process/graph_traversal.py b/gremlin-python/src/main/jython/gremlin_python/process/graph_traversal.py
index bb81d87..2410366 100644
--- a/gremlin-python/src/main/jython/gremlin_python/process/graph_traversal.py
+++ b/gremlin-python/src/main/jython/gremlin_python/process/graph_traversal.py
@@ -189,6 +189,10 @@ class GraphTraversal(Traversal):
         self.bytecode.add_step("coin", *args)
         return self
 
+    def connectedComponent(self, *args):
+        self.bytecode.add_step("connectedComponent", *args)
+        return self
+
     def constant(self, *args):
         self.bytecode.add_step("constant", *args)
         return self

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b6ac4454/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
index 3d51a94..c19d4c2 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/ProcessComputerSuite.java
@@ -49,6 +49,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.filter.TailTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.filter.WhereTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.AddEdgeTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.CoalesceTest;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.ConnectedComponentTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.ConstantTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.CountTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.FlatMapTest;
@@ -140,6 +141,7 @@ public class ProcessComputerSuite extends AbstractGremlinSuite {
 
             // map
             CoalesceTest.Traversals.class,
+            ConnectedComponentTest.Traversals.class,
             ConstantTest.Traversals.class,
             CountTest.Traversals.class,
             FlatMapTest.Traversals.class,

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b6ac4454/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ConnectedComponentTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ConnectedComponentTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ConnectedComponentTest.java
new file mode 100644
index 0000000..9d0b29f
--- /dev/null
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ConnectedComponentTest.java
@@ -0,0 +1,117 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.process.traversal.step.map;
+
+import org.apache.tinkerpop.gremlin.LoadGraphWith;
+import org.apache.tinkerpop.gremlin.process.computer.clustering.connected.ConnectedComponentVertexProgram;
+import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.ConnectedComponentVertexProgramStep.ConnectedComponent;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.junit.Test;
+
+import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
+import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.bothE;
+import static org.junit.Assert.assertEquals;
+
+/**
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public abstract class ConnectedComponentTest extends AbstractGremlinProcessTest {
+
+    public abstract Traversal<Vertex, Vertex> get_g_V_connectedComponent();
+
+    public abstract Traversal<Vertex, Vertex> get_g_V_hasLabelXsoftwareX_connectedComponent();
+
+    public abstract Traversal<Vertex, Vertex> get_g_V_connectedComponent_withXEDGES_bothEXknowsXX_withXPROPERTY_NAME_clusterX();
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_connectedComponent() {
+        final Traversal<Vertex, Vertex> traversal = get_g_V_connectedComponent();
+        printTraversalForm(traversal);
+        int counter = 0;
+        while (traversal.hasNext()) {
+            final Vertex vertex = traversal.next();
+            counter++;
+            assertEquals("1", vertex.value(ConnectedComponentVertexProgram.COMPONENT));
+        }
+        assertEquals(6, counter);
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_hasLabelXsoftwareX_connectedComponent() {
+        final Traversal<Vertex, Vertex> traversal = get_g_V_hasLabelXsoftwareX_connectedComponent();
+        printTraversalForm(traversal);
+        int counter = 0;
+        while (traversal.hasNext()) {
+            final Vertex vertex = traversal.next();
+            final String name = vertex.value("name");
+            switch (name) {
+                case "lop":
+                case "ripple":
+                    assertEquals("3", vertex.value(ConnectedComponentVertexProgram.COMPONENT));
+                    break;
+            }
+            counter++;
+        }
+        assertEquals(2, counter);
+    }
+
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_connectedComponent_withXEDGES_bothEXknowsXX_withXPROPERTY_NAME_clusterX() {
+        final Traversal<Vertex, Vertex> traversal = get_g_V_connectedComponent_withXEDGES_bothEXknowsXX_withXPROPERTY_NAME_clusterX();
+        printTraversalForm(traversal);
+        int counter = 0;
+        while (traversal.hasNext()) {
+            final Vertex vertex = traversal.next();
+            final String name = vertex.value("name");
+            switch (name) {
+                case "marko":
+                case "vadas":
+                case "josh":
+                    assertEquals("1", vertex.value("cluster"));
+                    break;
+                case "peter":
+                    assertEquals("6", vertex.value("cluster"));
+                    break;
+            }
+            counter++;
+        }
+        assertEquals(4, counter);
+    }
+
+    public static class Traversals extends ConnectedComponentTest {
+        @Override
+        public Traversal<Vertex, Vertex> get_g_V_connectedComponent() {
+            return g.V().connectedComponent();
+        }
+
+        @Override
+        public Traversal<Vertex, Vertex> get_g_V_hasLabelXsoftwareX_connectedComponent() {
+            return g.V().hasLabel("software").connectedComponent();
+        }
+        @Override
+        public Traversal<Vertex, Vertex> get_g_V_connectedComponent_withXEDGES_bothEXknowsXX_withXPROPERTY_NAME_clusterX() {
+            return g.V().hasLabel("person").connectedComponent().with(ConnectedComponent.EDGES, bothE("knows")).with(ConnectedComponent.PROPERTY_NAME, "cluster");
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b6ac4454/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkHadoopGraphProvider.java
----------------------------------------------------------------------
diff --git a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkHadoopGraphProvider.java b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkHadoopGraphProvider.java
index c778c6d..2f727c8 100644
--- a/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkHadoopGraphProvider.java
+++ b/spark-gremlin/src/test/java/org/apache/tinkerpop/gremlin/spark/process/computer/SparkHadoopGraphProvider.java
@@ -39,6 +39,7 @@ import org.apache.tinkerpop.gremlin.process.computer.Computer;
 import org.apache.tinkerpop.gremlin.process.computer.GraphComputer;
 import org.apache.tinkerpop.gremlin.process.computer.util.ComputerGraph;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.ConnectedComponentTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.PageRankTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.PeerPressureTest;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.ProgramTest;
@@ -115,6 +116,7 @@ public class SparkHadoopGraphProvider extends AbstractFileGraphProvider {
         if (null != loadGraphWith &&
                 !test.equals(ProgramTest.Traversals.class) &&
                 !test.equals(PageRankTest.Traversals.class) &&
+                !test.equals(ConnectedComponentTest.Traversals.class) &&
                 !test.equals(PeerPressureTest.Traversals.class) &&
                 !test.equals(FileSystemStorageCheck.class) &&
                 !testMethodName.equals("shouldSupportJobChaining") &&  // GraphComputerTest.shouldSupportJobChaining


[43/47] tinkerpop git commit: Install newest .NET Core SDK 2.1 version on Travis CTR

Posted by sp...@apache.org.
Install newest .NET Core SDK 2.1 version on Travis CTR

This hopefully fixes the CI problems we currently have where the key
couldn't be downloaded with a previous installation method.


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

Branch: refs/heads/TINKERPOP-1967
Commit: eba1df34989ea88a408648bb2a0cf1efbd46e00c
Parents: e8e22af
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Sat Jun 9 13:31:41 2018 +0200
Committer: Florian Hockmann <fh...@florian-hockmann.de>
Committed: Sat Jun 9 13:31:41 2018 +0200

----------------------------------------------------------------------
 .travis.yml | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eba1df34/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index 1c15c15..8ca1346 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -18,12 +18,11 @@ install:
   - mvn -version
 
 before_install:
-  - curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
-  - sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
-  - sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-trusty-prod trusty main" > /etc/apt/sources.list.d/dotnetdev.list'
+  - wget -q https://packages.microsoft.com/config/ubuntu/14.04/packages-microsoft-prod.deb
+  - sudo dpkg -i packages-microsoft-prod.deb
   - sudo apt-get install apt-transport-https
   - sudo apt-get update
-  - sudo apt-get install dotnet-sdk-2.1.101
+  - sudo apt-get install dotnet-sdk-2.1
 
 jobs:
   include:


[32/47] tinkerpop git commit: Merge branch 'tp32' into tp33

Posted by sp...@apache.org.
Merge branch 'tp32' into tp33


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

Branch: refs/heads/TINKERPOP-1967
Commit: d7b756b164c3d063741d2ea9d39d710d3bf7aadd
Parents: d4faa66 962093e
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Jun 4 17:04:19 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Jun 4 17:04:19 2018 -0400

----------------------------------------------------------------------
 .../traversal/step/map/PropertyElementStep.java | 48 --------------------
 1 file changed, 48 deletions(-)
----------------------------------------------------------------------



[17/47] tinkerpop git commit: Minor doc updates around docker CTR

Posted by sp...@apache.org.
Minor doc updates around docker CTR


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

Branch: refs/heads/TINKERPOP-1967
Commit: c2ff47ca5ff5dc4a6bef82f9ac1da3b24ff24d7f
Parents: 6f6d941
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Jun 4 10:56:20 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Jun 4 10:56:20 2018 -0400

----------------------------------------------------------------------
 docs/src/reference/gremlin-applications.asciidoc   |  2 ++
 docs/src/upgrade/release-3.2.x-incubating.asciidoc | 15 +++++++++++++++
 2 files changed, 17 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c2ff47ca/docs/src/reference/gremlin-applications.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/reference/gremlin-applications.asciidoc b/docs/src/reference/gremlin-applications.asciidoc
index 273e5c7..f044df8 100644
--- a/docs/src/reference/gremlin-applications.asciidoc
+++ b/docs/src/reference/gremlin-applications.asciidoc
@@ -355,6 +355,7 @@ Like, execution mode, it is also possible to pass multiple scripts by specifying
 
 [[gremlin-console-docker-image]]
 === Docker Image
+
 The Gremlin Console can also be started as a link:https://hub.docker.com/r/tinkerpop/gremlin-console/[Docker image]:
 
 [source,text]
@@ -1935,6 +1936,7 @@ immediately forget the script after execution. In this way, the function does no
 
 [[gremlin-server-docker-image]]
 === Docker Image
+
 The Gremlin Server can also be started as a link:https://hub.docker.com/r/tinkerpop/gremlin-server/[Docker image]:
 
 [source,text]

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c2ff47ca/docs/src/upgrade/release-3.2.x-incubating.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/upgrade/release-3.2.x-incubating.asciidoc b/docs/src/upgrade/release-3.2.x-incubating.asciidoc
index ccdf51a..593c631 100644
--- a/docs/src/upgrade/release-3.2.x-incubating.asciidoc
+++ b/docs/src/upgrade/release-3.2.x-incubating.asciidoc
@@ -29,6 +29,21 @@ Please see the link:https://github.com/apache/tinkerpop/blob/3.2.10/CHANGELOG.as
 
 === Upgrading for Users
 
+==== Docker Images
+
+Docker images are now available on link:https://hub.docker.com/u/tinkerpop/[Docker Hub] for Gremlin Console and Gremlin
+Server.
+
+[source,text]
+----
+$ docker run -it tinkerpop/gremlin-console:x.y.z
+$ docker run tinkerpop/gremlin-server:x.y.z
+----
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1897[TINKERPOP-1897],
+link:http://tinkerpop.apache.org/docs/current/reference#gremlin-console-docker-image[Reference Documentation - Gremlin Console],
+link:http://tinkerpop.apache.org/docs/current/reference#gremlin-server-docker-image[Reference Documentation - Gremlin Server],
+
 ==== TinkerFactory.createGratefulDead()
 
 The Grateful Dead dataset has been with TinkerPop since the early days of 1.x. It has always been available as a


[05/47] tinkerpop git commit: Add note to check Docker images before a release TINKERPOP-1897

Posted by sp...@apache.org.
Add note to check Docker images before a release TINKERPOP-1897


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

Branch: refs/heads/TINKERPOP-1967
Commit: 8232158eb51009ec0b434a4b46638c9149b14852
Parents: 0efeb4a
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Wed May 30 17:22:19 2018 +0200
Committer: Florian Hockmann <fh...@florian-hockmann.de>
Committed: Mon Jun 4 15:57:29 2018 +0200

----------------------------------------------------------------------
 docs/src/dev/developer/release.asciidoc | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8232158e/docs/src/dev/developer/release.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/dev/developer/release.asciidoc b/docs/src/dev/developer/release.asciidoc
index 7963004..eef4e3f 100644
--- a/docs/src/dev/developer/release.asciidoc
+++ b/docs/src/dev/developer/release.asciidoc
@@ -111,7 +111,8 @@ under release is protected. Tweaks to documentation and other odds and ends rela
 during this period.
 . At some point during the week:
 .. Run the full integration test suite: `mvn clean install -DskipIntegrationTests=false -DincludeNeo4j`
-.. Deploy a final SNAPSHOT to the snapshot repository as well as GLV pre-releases.
+.. Build and test the Docker images: `mvn clean install -pl gremlin-server,gremlin-console -Pdocker-images`
+.. Deploy a final SNAPSHOT to the snapshot repository as well as GLV and Docker image pre-releases.
 .. Review LICENSE and NOTICE files to make sure that no <<dependencies,changes are needed>>.
 .. Review javadoc filters on the "Core API" docs to be sure nothing needs to change.
 .. Review JIRA tickets in the release and ensure that:


[42/47] tinkerpop git commit: Merge branch 'tp33'

Posted by sp...@apache.org.
Merge branch 'tp33'


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

Branch: refs/heads/TINKERPOP-1967
Commit: ae2f304d47a0c9280ec7894ce53d32ad270b157f
Parents: a3677e2 55fcbdc
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Thu Jun 7 07:37:44 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jun 7 07:37:44 2018 -0400

----------------------------------------------------------------------
 hadoop-gremlin/pom.xml | 18 ------------------
 1 file changed, 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ae2f304d/hadoop-gremlin/pom.xml
----------------------------------------------------------------------


[15/47] tinkerpop git commit: Merge branch 'tp32' into tp33

Posted by sp...@apache.org.
Merge branch 'tp32' into tp33


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

Branch: refs/heads/TINKERPOP-1967
Commit: 31a3b444ec290b3868337edb664348efbbd567ee
Parents: f2e74ff 6f6d941
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Mon Jun 4 16:05:04 2018 +0200
Committer: Florian Hockmann <fh...@florian-hockmann.de>
Committed: Mon Jun 4 16:05:04 2018 +0200

----------------------------------------------------------------------
 .dockerignore                                   |  2 +
 CHANGELOG.asciidoc                              |  2 +-
 docker/hadoop/Dockerfile                        | 25 ++++++++
 .../developer/development-environment.asciidoc  | 22 ++++++-
 docs/src/dev/developer/release.asciidoc         |  8 ++-
 .../src/reference/gremlin-applications.asciidoc | 65 ++++++++++++++++++++
 gremlin-console/Dockerfile                      | 31 ++++++++++
 gremlin-console/pom.xml                         | 64 +++++++++++++++++++
 .../src/main/docker/docker-entrypoint.sh        | 24 ++++++++
 .../gremlin/driver/ResultQueueTest.java         |  2 +-
 gremlin-server/Dockerfile                       | 35 +++++++++++
 gremlin-server/pom.xml                          | 64 +++++++++++++++++++
 .../src/main/docker/docker-entrypoint.sh        | 31 ++++++++++
 pom.xml                                         | 35 +++++++++++
 14 files changed, 406 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/31a3b444/CHANGELOG.asciidoc
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/31a3b444/docs/src/dev/developer/development-environment.asciidoc
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/31a3b444/docs/src/dev/developer/release.asciidoc
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/31a3b444/docs/src/reference/gremlin-applications.asciidoc
----------------------------------------------------------------------
diff --cc docs/src/reference/gremlin-applications.asciidoc
index 26ec185,273e5c7..bf0875a
--- a/docs/src/reference/gremlin-applications.asciidoc
+++ b/docs/src/reference/gremlin-applications.asciidoc
@@@ -2080,9 -1930,42 +2112,42 @@@ $ curl -X POST -d "{\"gremlin\":\"divid
  {"message":"Error encountered evaluating script: divideIt(8, 2)"}
  ----
  
 -In the above REST-based requests, the bindings contain a special parameter that tells the `ScriptEngine` cache to
 +In the above HTTP-based requests, the bindings contain a special parameter that tells the `ScriptEngine` cache to
  immediately forget the script after execution. In this way, the function does not end up being globally available.
  
+ [[gremlin-server-docker-image]]
+ === Docker Image
+ The Gremlin Server can also be started as a link:https://hub.docker.com/r/tinkerpop/gremlin-server/[Docker image]:
+ 
+ [source,text]
+ ----
+ $ docker run tinkerpop/gremlin-server:x.y.z
+ [INFO] GremlinServer - 
+          \,,,/
+          (o o)
+ -----oOOo-(3)-oOOo-----
+ 
+ [INFO] GremlinServer - Configuring Gremlin Server from conf/gremlin-server.yaml
+ ...
+ [INFO] GremlinServer$1 - Gremlin Server configured with worker thread pool of 1, gremlin pool of 4 and boss thread pool of 1.
+ [INFO] GremlinServer$1 - Channel started at port 8182.
+ ----
+ 
+ By default, Gremlin Server listens on port 8182. So that port needs to be exposed if it should be reachable on the host:
+ 
+ [source,bash]
+ ----
+ $ docker run -p 8182:8182 tinkerpop/gremlin-server:x.y.z
+ ----
+ 
+ Arguments provided with `docker run` are forwarded to the script that starts Gremlin Server. This allows for example
+ to use an alternative config file:
+ 
+ [source,bash]
+ ----
+ $ docker run tinkerpop/gremlin-server:x.y.z conf/gremlin-server-secure.yaml
+ ----
+ 
  [[gremlin-plugins]]
  == Gremlin Plugins
  

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/31a3b444/gremlin-console/pom.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/31a3b444/gremlin-server/pom.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/31a3b444/pom.xml
----------------------------------------------------------------------


[03/47] tinkerpop git commit: Don't build docker images in docker build TINKERPOP-1897

Posted by sp...@apache.org.
Don't build docker images in docker build TINKERPOP-1897


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

Branch: refs/heads/TINKERPOP-1967
Commit: a5f1f74a42649275fa35157f9072b5aa5e7c7748
Parents: 5ac7816
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Mon Feb 26 21:17:46 2018 +0100
Committer: Florian Hockmann <fh...@florian-hockmann.de>
Committed: Mon Jun 4 15:57:28 2018 +0200

----------------------------------------------------------------------
 docker/scripts/build.sh | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a5f1f74a/docker/scripts/build.sh
----------------------------------------------------------------------
diff --git a/docker/scripts/build.sh b/docker/scripts/build.sh
index 5ef74fc..3d8f0d3 100755
--- a/docker/scripts/build.sh
+++ b/docker/scripts/build.sh
@@ -67,6 +67,9 @@ touch gremlin-python/.glv
 touch gremlin-dotnet/src/.glv
 touch gremlin-dotnet/test/.glv
 
+rm gremlin-console/.docker
+rm gremlin-server/.docker
+
 # use a custom maven settings.xml
 if [ -r "settings.xml" ]; then
   echo "Copying settings.xml"


[04/47] tinkerpop git commit: Add docker images for console and server TINKERPOP-1897

Posted by sp...@apache.org.
Add docker images for console and server TINKERPOP-1897


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

Branch: refs/heads/TINKERPOP-1967
Commit: 5ac78169ccd7c6674343204fa22e1af83d2fddcc
Parents: 1a0947b
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Sun Feb 25 18:14:03 2018 +0100
Committer: Florian Hockmann <fh...@florian-hockmann.de>
Committed: Mon Jun 4 15:57:28 2018 +0200

----------------------------------------------------------------------
 .dockerignore                                   |  2 +
 .gitignore                                      |  1 +
 CHANGELOG.asciidoc                              |  2 +-
 .../developer/development-environment.asciidoc  | 16 +++-
 .../src/reference/gremlin-applications.asciidoc | 89 ++++++++++++++++++++
 gremlin-console/Dockerfile                      | 31 +++++++
 gremlin-console/pom.xml                         | 34 ++++++++
 .../src/main/docker/docker-entrypoint.sh        | 24 ++++++
 gremlin-server/Dockerfile                       | 35 ++++++++
 gremlin-server/pom.xml                          | 34 ++++++++
 .../src/main/docker/docker-entrypoint.sh        | 31 +++++++
 pom.xml                                         |  6 ++
 12 files changed, 303 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5ac78169/.dockerignore
----------------------------------------------------------------------
diff --git a/.dockerignore b/.dockerignore
index afe0e54..50d6801 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -1,5 +1,7 @@
 **/*.log
 **/target
+!gremlin-server/target/apache-tinkerpop-gremlin-server-*
+!gremlin-console/target/apache-tinkerpop-gremlin-console-*
 *.iml
 .idea
 **/*.DS_Store

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5ac78169/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index 0109f82..10e5b4f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -20,6 +20,7 @@ __pycache__/
 *.py[cdo]
 __version__.py
 .glv
+.docker
 settings.xml
 tools/
 [Dd]ebug/

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5ac78169/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 6297210..a1d0963 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -23,6 +23,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 [[release-3-2-10]]
 === TinkerPop 3.2.10 (Release Date: NOT OFFICIALLY RELEASED YET)
 
+* Added Docker images for Gremlin Console and Gremlin Server
 * Fixed bug in `branch()` where reducing steps as options would produce incorrect results.
 * Removed recursive handling of streaming results from Gremlin-Python driver to avoid max recursion depth errors.
 * Improved performance of `TraversalVertexProgram` and related infrastructure.
@@ -56,7 +57,6 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 * TINKERPOP-1950 Traversal construction performance enhancements
 * TINKERPOP-1953 Bump to Groovy 2.4.15
 
-
 [[release-3-2-8]]
 === TinkerPop 3.2.8 (Release Date: April 2, 2018)
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5ac78169/docs/src/dev/developer/development-environment.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/dev/developer/development-environment.asciidoc b/docs/src/dev/developer/development-environment.asciidoc
index 4dfbcaa..cb19a65 100644
--- a/docs/src/dev/developer/development-environment.asciidoc
+++ b/docs/src/dev/developer/development-environment.asciidoc
@@ -106,7 +106,7 @@ The build optionally requires link:https://www.microsoft.com/net/core[.NET Core
 `gremlin-dotnet` module. If .NET Core SDK is not installed, TinkerPop will still build with Maven, but .NET projects
 will be skipped.
 
-`gremlin-dotnet` can be build and tested from the command line with:
+`gremlin-dotnet` can be built and tested from the command line with:
 
 [source,text]
 mvn clean install -Pgremlin-dotnet
@@ -127,6 +127,20 @@ other existing Node.js runtime instances in your machine.
 
 See the <<release-environment,Release Environment>> section for more information on release manager configurations.
 
+[[docker-environment]]
+=== Docker Environment
+The build optionally requires Docker to build Docker images of Gremlin Server and Gremlin Console.
+
+The Docker images can be built from the command line with:
+[source,text]
+----
+mvn clean install -Pdocker-images
+----
+which enables the "docker-images" Maven profile or in a more automated fashion simply add a `.docker` file to the
+directories of the `gremlin-server` and/or `gremlin-console` modules which will signify to Maven that Docker is present
+in the environment.
+
+
 [[release-environment]]
 === Release Environment
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5ac78169/docs/src/reference/gremlin-applications.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/reference/gremlin-applications.asciidoc b/docs/src/reference/gremlin-applications.asciidoc
index 522bcfd..80659af 100644
--- a/docs/src/reference/gremlin-applications.asciidoc
+++ b/docs/src/reference/gremlin-applications.asciidoc
@@ -353,6 +353,38 @@ variable initialization code into the console.
 Like, execution mode, it is also possible to pass multiple scripts by specifying multiple `-i` options. See the
 <<execution-mode, Execution Mode Section>> for more information on the specifics of that capability.
 
+[[gremlin-console-docker-image]]
+=== Docker Image
+The Gremlin Console can also be started as a link:https://hub.docker.com/r/tinkerpop/gremlin-console/[Docker image]:
+
+[source,text]
+----
+$ docker run -it tinkerpop/gremlin-console:x.y.z
+Feb 25, 2018 3:47:24 PM java.util.prefs.FileSystemPreferences$1 run
+INFO: Created user preferences directory.
+
+         \,,,/
+         (o o)
+-----oOOo-(3)-oOOo-----
+plugin activated: tinkerpop.server
+plugin activated: tinkerpop.utilities
+plugin activated: tinkerpop.tinkergraph
+gremlin>
+----
+
+The Docker image offers the same options as the standalone Console. It can be used for example to execute scripts:
+
+[source,bash]
+----
+$ docker run -it tinkerpop/gremlin-console:x.y.z -e gremlin.groovy
+v[1]
+v[2]
+v[3]
+v[4]
+v[5]
+v[6]
+----
+
 [[gremlin-server]]
 == Gremlin Server
 
@@ -1901,6 +1933,63 @@ $ curl -X POST -d "{\"gremlin\":\"divideIt(8, 2)\"}" "http://localhost:8182"
 In the above REST-based requests, the bindings contain a special parameter that tells the `ScriptEngine` cache to
 immediately forget the script after execution. In this way, the function does not end up being globally available.
 
+[[gremlin-server-docker-image]]
+=== Docker Image
+The Gremlin Server can also be started as a link:https://hub.docker.com/r/tinkerpop/gremlin-server/[Docker image]:
+
+[source,text]
+----
+$ docker run tinkerpop/gremlin-server:x.y.z
+[INFO] GremlinServer - 
+         \,,,/
+         (o o)
+-----oOOo-(3)-oOOo-----
+
+[INFO] GremlinServer - Configuring Gremlin Server from conf/gremlin-server.yaml
+[INFO] MetricManager - Configured Metrics ConsoleReporter configured with report interval=180000ms
+[INFO] MetricManager - Configured Metrics CsvReporter configured with report interval=180000ms to fileName=/tmp/gremlin-server-metrics.csv
+[INFO] MetricManager - Configured Metrics JmxReporter configured with domain= and agentId=
+[INFO] MetricManager - Configured Metrics Slf4jReporter configured with interval=180000ms and loggerName=org.apache.tinkerpop.gremlin.server.Settings$Slf4jReporterMetrics
+[INFO] DefaultGraphManager - Graph [graph] was successfully configured via [conf/tinkergraph-empty.properties].
+[INFO] ServerGremlinExecutor - Initialized Gremlin thread pool.  Threads in pool named with pattern gremlin-*
+[INFO] ScriptEngines - Loaded gremlin-groovy ScriptEngine
+[INFO] GremlinExecutor - Initialized gremlin-groovy ScriptEngine with scripts/empty-sample.groovy
+[INFO] ServerGremlinExecutor - Initialized GremlinExecutor and preparing GremlinScriptEngines instances.
+[INFO] ServerGremlinExecutor - Initialized gremlin-groovy GremlinScriptEngine and registered metrics
+[INFO] ServerGremlinExecutor - A GraphTraversalSource is now bound to [g] with graphtraversalsource[tinkergraph[vertices:0 edges:0], standard]
+[INFO] OpLoader - Adding the standard OpProcessor.
+[INFO] OpLoader - Adding the control OpProcessor.
+[INFO] OpLoader - Adding the session OpProcessor.
+[INFO] OpLoader - Adding the traversal OpProcessor.
+[INFO] TraversalOpProcessor - Initialized cache for TraversalOpProcessor with size 1000 and expiration time of 600000 ms
+[INFO] GremlinServer - Executing start up LifeCycleHook
+[INFO] Logger$info - Executed once at startup of Gremlin Server.
+[INFO] GremlinServer - idleConnectionTimeout was set to 0 which resolves to 0 seconds when configuring this value - this feature will be disabled
+[INFO] GremlinServer - keepAliveInterval was set to 0 which resolves to 0 seconds when configuring this value - this feature will be disabled
+[INFO] AbstractChannelizer - Configured application/vnd.gremlin-v1.0+gryo with org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0
+[INFO] AbstractChannelizer - Configured application/vnd.gremlin-v1.0+gryo-stringd with org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0
+[INFO] AbstractChannelizer - Configured application/vnd.gremlin-v1.0+json with org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0
+[INFO] AbstractChannelizer - Configured application/vnd.gremlin-v2.0+json with org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0
+[INFO] AbstractChannelizer - Configured application/json with org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0
+[INFO] GremlinServer$1 - Gremlin Server configured with worker thread pool of 1, gremlin pool of 4 and boss thread pool of 1.
+[INFO] GremlinServer$1 - Channel started at port 8182.
+----
+
+By default, Gremlin Server listens on port 8182. So that port should be exposed if it should be reachable on the host:
+
+[source,bash]
+----
+$ docker run -p 8182:8182 tinkerpop/gremlin-server:x.y.z
+----
+
+Arguments provided with `docker run` are forwarded to the script that starts Gremlin Server. This allows for example
+to use an alternative config file:
+
+[source,bash]
+----
+$ docker run tinkerpop/gremlin-server:x.y.z conf/gremlin-server-secure.yaml
+----
+
 [[gremlin-plugins]]
 == Gremlin Plugins
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5ac78169/gremlin-console/Dockerfile
----------------------------------------------------------------------
diff --git a/gremlin-console/Dockerfile b/gremlin-console/Dockerfile
new file mode 100644
index 0000000..909952f
--- /dev/null
+++ b/gremlin-console/Dockerfile
@@ -0,0 +1,31 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+FROM openjdk:8u151-jre-alpine3.7
+
+ARG GREMLIN_CONSOLE_DIR
+
+RUN apk add --update \
+    bash \
+    && rm -rf /var/cache/apk/*
+
+COPY src/main/docker/docker-entrypoint.sh /
+COPY ${GREMLIN_CONSOLE_DIR} /opt/gremlin-console
+
+WORKDIR /opt/gremlin-console
+
+ENTRYPOINT ["/docker-entrypoint.sh"]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5ac78169/gremlin-console/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-console/pom.xml b/gremlin-console/pom.xml
index 49e7f4a..b7933fb 100644
--- a/gremlin-console/pom.xml
+++ b/gremlin-console/pom.xml
@@ -335,5 +335,39 @@ limitations under the License.
                 </plugins>
             </build>
         </profile>
+
+        <profile>
+            <id>docker-images</id>
+            <activation>
+                <activeByDefault>false</activeByDefault>
+                <file>
+                    <exists>.docker</exists>
+                </file>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>com.spotify</groupId>
+                        <artifactId>dockerfile-maven-plugin</artifactId>
+                        <executions>
+                            <execution>
+                            <id>docker-image</id>
+                            <goals>
+                                <goal>build</goal>
+                                <goal>push</goal>
+                            </goals>
+                            </execution>
+                        </executions>
+                        <configuration>
+                            <repository>tinkerpop/gremlin-console</repository>
+                            <tag>${project.version}</tag>
+                            <buildArgs>
+                                <GREMLIN_CONSOLE_DIR>target/apache-tinkerpop-${project.artifactId}-${project.version}-standalone</GREMLIN_CONSOLE_DIR>
+                            </buildArgs>
+                        </configuration>
+                    </plugin>
+                </plugins>                
+            </build>
+        </profile>
     </profiles>
 </project>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5ac78169/gremlin-console/src/main/docker/docker-entrypoint.sh
----------------------------------------------------------------------
diff --git a/gremlin-console/src/main/docker/docker-entrypoint.sh b/gremlin-console/src/main/docker/docker-entrypoint.sh
new file mode 100644
index 0000000..2c8d204
--- /dev/null
+++ b/gremlin-console/src/main/docker/docker-entrypoint.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+#
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+set -e
+
+exec /opt/gremlin-console/bin/gremlin.sh "$@"
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5ac78169/gremlin-server/Dockerfile
----------------------------------------------------------------------
diff --git a/gremlin-server/Dockerfile b/gremlin-server/Dockerfile
new file mode 100644
index 0000000..c47e0cf
--- /dev/null
+++ b/gremlin-server/Dockerfile
@@ -0,0 +1,35 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+FROM openjdk:8u151-jre-alpine3.7
+
+ARG GREMLIN_SERVER_DIR
+
+RUN apk add --update \
+    bash \
+    perl \
+    && rm -rf /var/cache/apk/*
+
+COPY src/main/docker/docker-entrypoint.sh /
+COPY ${GREMLIN_SERVER_DIR} /opt/gremlin-server
+
+WORKDIR /opt/gremlin-server
+
+EXPOSE 8182
+
+ENTRYPOINT ["/docker-entrypoint.sh"]
+CMD ["conf/gremlin-server.yaml"]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5ac78169/gremlin-server/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-server/pom.xml b/gremlin-server/pom.xml
index 68733a9..dfc6570 100644
--- a/gremlin-server/pom.xml
+++ b/gremlin-server/pom.xml
@@ -243,5 +243,39 @@ limitations under the License.
                 </plugins>
             </build>
         </profile>
+
+        <profile>
+            <id>docker-images</id>
+            <activation>
+                <activeByDefault>false</activeByDefault>
+                <file>
+                    <exists>.docker</exists>
+                </file>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>com.spotify</groupId>
+                        <artifactId>dockerfile-maven-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>docker-image</id>
+                                <goals>
+                                    <goal>build</goal>
+                                    <goal>push</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                        <configuration>
+                            <repository>tinkerpop/gremlin-server</repository>
+                            <tag>${project.version}</tag>
+                            <buildArgs>
+                                <GREMLIN_SERVER_DIR>target/apache-tinkerpop-${project.artifactId}-${project.version}-standalone</GREMLIN_SERVER_DIR>
+                            </buildArgs>
+                        </configuration>
+                    </plugin>
+                </plugins>                
+            </build>
+        </profile>
     </profiles>
 </project>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5ac78169/gremlin-server/src/main/docker/docker-entrypoint.sh
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/docker/docker-entrypoint.sh b/gremlin-server/src/main/docker/docker-entrypoint.sh
new file mode 100644
index 0000000..d869b8c
--- /dev/null
+++ b/gremlin-server/src/main/docker/docker-entrypoint.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+#
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+set -e
+
+CONF_FILE=$1
+
+# IP substitution hack borrowed from:
+# https://github.com/htaox/NEAT/blob/94a004831cf89767e116d955192fc14ac82e5069/docker-scripts/gremlin-server-3.0.0/files/default_cmd#L5
+IP=$(ip -o -4 addr list eth0 | perl -n -e 'if (m{inet\s([\d\.]+)\/\d+\s}xms) { print $1 }')
+sed -i "s|^host:.*|host: $IP|" $CONF_FILE
+
+exec /opt/gremlin-server/bin/gremlin-server.sh "$@"
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5ac78169/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 9c4b507..5251de3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -319,6 +319,7 @@ limitations under the License.
                         <exclude>**/_bsp/**</exclude>
                         <exclude>DEPENDENCIES</exclude>
                         <exclude>**/.glv</exclude>
+                        <exclude>**/.docker</exclude>
                         <exclude>bin/gremlin.sh</exclude>
                         <exclude>gremlin-console/bin/gremlin.sh</exclude>
                         <exclude>**/Debug/**</exclude>
@@ -496,6 +497,11 @@ limitations under the License.
                     <artifactId>maven-jar-plugin</artifactId>
                     <version>3.0.2</version>
                 </plugin>
+                <plugin>
+                    <groupId>com.spotify</groupId>
+                    <artifactId>dockerfile-maven-plugin</artifactId>
+                    <version>1.3.7</version>
+                </plugin>
             </plugins>
         </pluginManagement>
     </build>


[27/47] tinkerpop git commit: TINKERPOP-1897 Prevent tagging of rc docker images with 3.2 CTR

Posted by sp...@apache.org.
TINKERPOP-1897 Prevent tagging of rc docker images with 3.2 CTR

Tags like 3.2 should only point to stable releases.


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

Branch: refs/heads/TINKERPOP-1967
Commit: aac534e11fa406bedc61dbc060d06740b898e170
Parents: 144c698
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Mon Jun 4 20:41:00 2018 +0200
Committer: Florian Hockmann <fh...@florian-hockmann.de>
Committed: Mon Jun 4 20:41:00 2018 +0200

----------------------------------------------------------------------
 gremlin-console/pom.xml |  4 ++--
 gremlin-server/pom.xml  |  4 ++--
 pom.xml                 | 16 ++++++++++++++++
 3 files changed, 20 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/aac534e1/gremlin-console/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-console/pom.xml b/gremlin-console/pom.xml
index 29df2a4..8a4a12c 100644
--- a/gremlin-console/pom.xml
+++ b/gremlin-console/pom.xml
@@ -379,7 +379,7 @@ limitations under the License.
                                 </goals>
                                 <configuration>
                                     <tag>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}</tag>
-                                    <skip>${only.when.is.snapshot.used}</skip>
+                                    <skip>${only.when.is.prerelease.version}</skip>
                                 </configuration>
                             </execution>
                             <execution>
@@ -401,7 +401,7 @@ limitations under the License.
                                 </goals>
                                 <configuration>
                                     <tag>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}</tag>
-                                    <skip>${only.when.is.snapshot.used}</skip>
+                                    <skip>${only.when.is.prerelease.version}</skip>
                                 </configuration>
                             </execution>
                         </executions>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/aac534e1/gremlin-server/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-server/pom.xml b/gremlin-server/pom.xml
index a75b6c5..517f029 100644
--- a/gremlin-server/pom.xml
+++ b/gremlin-server/pom.xml
@@ -287,7 +287,7 @@ limitations under the License.
                                 </goals>
                                 <configuration>
                                     <tag>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}</tag>
-                                    <skip>${only.when.is.snapshot.used}</skip>
+                                    <skip>${only.when.is.prerelease.version}</skip>
                                 </configuration>
                             </execution>
                             <execution>
@@ -309,7 +309,7 @@ limitations under the License.
                                 </goals>
                                 <configuration>
                                     <tag>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}</tag>
-                                    <skip>${only.when.is.snapshot.used}</skip>
+                                    <skip>${only.when.is.prerelease.version}</skip>
                                 </configuration>
                             </execution>
                         </executions>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/aac534e1/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index f2484f8..a9be62d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -286,6 +286,22 @@ limitations under the License.
                         </configuration>
                     </execution>
                     <execution>
+                        <!-- sets the only.when.is.prerelease.version property to true if a prerelease version was used, 
+                            to the project version otherwise -->
+                        <id>build-helper-regex-is-prerelease-version</id>
+                        <phase>validate</phase>
+                        <goals>
+                            <goal>regex-property</goal>
+                        </goals>
+                        <configuration>
+                            <name>only.when.is.prerelease.version</name>
+                            <value>${project.version}</value>
+                            <regex>.*-.*</regex>
+                            <replacement>true</replacement>
+                            <failIfNoMatch>false</failIfNoMatch>
+                        </configuration>
+                    </execution>
+                    <execution>
                         <id>parse-version</id>
                         <goals>
                             <goal>parse-version</goal>


[26/47] tinkerpop git commit: Merge branch 'tp33'

Posted by sp...@apache.org.
Merge branch 'tp33'


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

Branch: refs/heads/TINKERPOP-1967
Commit: 7702b4b83cc8fba8b806d269f879f3b791be30c6
Parents: 8364047 ee65d5f
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Jun 4 13:57:32 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Jun 4 13:57:32 2018 -0400

----------------------------------------------------------------------
 gremlin-console/pom.xml | 13 +++++++++++++
 gremlin-server/pom.xml  | 13 +++++++++++++
 2 files changed, 26 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7702b4b8/gremlin-console/pom.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7702b4b8/gremlin-server/pom.xml
----------------------------------------------------------------------


[09/47] tinkerpop git commit: Add description about Docker credentials TINKERPOP-1897

Posted by sp...@apache.org.
Add description about Docker credentials TINKERPOP-1897


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

Branch: refs/heads/TINKERPOP-1967
Commit: 5d2faa2759417ce3a5b1749d573707308523d191
Parents: 47f3c1c
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Mon Mar 5 19:52:28 2018 +0100
Committer: Florian Hockmann <fh...@florian-hockmann.de>
Committed: Mon Jun 4 15:57:29 2018 +0200

----------------------------------------------------------------------
 docs/src/dev/developer/development-environment.asciidoc | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5d2faa27/docs/src/dev/developer/development-environment.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/dev/developer/development-environment.asciidoc b/docs/src/dev/developer/development-environment.asciidoc
index cb19a65..c50b189 100644
--- a/docs/src/dev/developer/development-environment.asciidoc
+++ b/docs/src/dev/developer/development-environment.asciidoc
@@ -197,6 +197,11 @@ authentication information on the ~/.npmrc file. The easiest way to do that is t
 must be done only once, as the auth token doesn't have an expiration date and it's stored on your file system. If
 this account is newly created then request that a PMC member add your account to the "gremlin" package on npm.
 
+Deploying Docker images to link:https://hub.docker.com/[Docker Hub] requires authentication information in the
+`~/.docker/config.json` file. This information can simply be added with the `docker login` command which will ask for
+credentials. This must be done only once. Afterwards, `docker push` can be used to push images to Docker Hub which will
+be done automatically on `mvn deploy` or it can be triggered manually with `mvn dockerfile:push`.
+
 [[building-testing]]
 == Building and Testing
 


[13/47] tinkerpop git commit: TINKERPOP-1897 Move snapshot detection to root pom.xml

Posted by sp...@apache.org.
TINKERPOP-1897 Move snapshot detection to root pom.xml


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

Branch: refs/heads/TINKERPOP-1967
Commit: fd115177f2c3ebe72adb308e4505a633dc49bbe7
Parents: c125fc9
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Sun Apr 15 14:08:51 2018 +0200
Committer: Florian Hockmann <fh...@florian-hockmann.de>
Committed: Mon Jun 4 15:57:29 2018 +0200

----------------------------------------------------------------------
 gremlin-console/pom.xml | 25 +------------------------
 gremlin-server/pom.xml  | 25 +------------------------
 pom.xml                 | 29 ++++++++++++++++++++++++-----
 3 files changed, 26 insertions(+), 53 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fd115177/gremlin-console/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-console/pom.xml b/gremlin-console/pom.xml
index b24c772..db86d41 100644
--- a/gremlin-console/pom.xml
+++ b/gremlin-console/pom.xml
@@ -345,30 +345,7 @@ limitations under the License.
                 </file>
             </activation>
             <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.codehaus.mojo</groupId>
-                        <artifactId>build-helper-maven-plugin</artifactId>
-                        <executions>
-                            <execution>
-                                <!-- source: https://stackoverflow.com/a/39139979/6753576 -->
-                                <!-- sets the only.when.is.snapshot.used property to true if SNAPSHOT was used, 
-                                    to the project version otherwise -->
-                                <id>build-helper-regex-is-snapshot-used</id>
-                                <phase>validate</phase>
-                                <goals>
-                                    <goal>regex-property</goal>
-                                </goals>
-                                <configuration>
-                                    <name>only.when.is.snapshot.used</name>
-                                    <value>${project.version}</value>
-                                    <regex>.*-SNAPSHOT</regex>
-                                    <replacement>true</replacement>
-                                    <failIfNoMatch>false</failIfNoMatch>
-                                </configuration>
-                            </execution>
-                        </executions>
-                    </plugin>
+                <plugins>                    
                     <plugin>
                         <groupId>com.spotify</groupId>
                         <artifactId>dockerfile-maven-plugin</artifactId>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fd115177/gremlin-server/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-server/pom.xml b/gremlin-server/pom.xml
index e71f79b..ef2e609 100644
--- a/gremlin-server/pom.xml
+++ b/gremlin-server/pom.xml
@@ -253,30 +253,7 @@ limitations under the License.
                 </file>
             </activation>
             <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.codehaus.mojo</groupId>
-                        <artifactId>build-helper-maven-plugin</artifactId>
-                        <executions>
-                            <execution>
-                                <!-- source: https://stackoverflow.com/a/39139979/6753576 -->
-                                <!-- sets the only.when.is.snapshot.used property to true if SNAPSHOT was used, 
-                                    to the project version otherwise -->
-                                <id>build-helper-regex-is-snapshot-used</id>
-                                <phase>validate</phase>
-                                <goals>
-                                    <goal>regex-property</goal>
-                                </goals>
-                                <configuration>
-                                    <name>only.when.is.snapshot.used</name>
-                                    <value>${project.version}</value>
-                                    <regex>.*-SNAPSHOT</regex>
-                                    <replacement>true</replacement>
-                                    <failIfNoMatch>false</failIfNoMatch>
-                                </configuration>
-                            </execution>
-                        </executions>
-                    </plugin>
+                <plugins>                    
                     <plugin>
                         <groupId>com.spotify</groupId>
                         <artifactId>dockerfile-maven-plugin</artifactId>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fd115177/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 19866f0..9ff3f3a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -264,6 +264,30 @@ limitations under the License.
                 </executions>
             </plugin>
             <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <version>3.0.0</version>
+                <executions>
+                    <execution>
+                        <!-- source: https://stackoverflow.com/a/39139979/6753576 -->
+                        <!-- sets the only.when.is.snapshot.used property to true if SNAPSHOT was used, 
+                            to the project version otherwise -->
+                        <id>build-helper-regex-is-snapshot-used</id>
+                        <phase>validate</phase>
+                        <goals>
+                            <goal>regex-property</goal>
+                        </goals>
+                        <configuration>
+                            <name>only.when.is.snapshot.used</name>
+                            <value>${project.version}</value>
+                            <regex>.*-SNAPSHOT</regex>
+                            <replacement>true</replacement>
+                            <failIfNoMatch>false</failIfNoMatch>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-jar-plugin</artifactId>
                 <version>3.0.2</version>
@@ -502,11 +526,6 @@ limitations under the License.
                     <artifactId>dockerfile-maven-plugin</artifactId>
                     <version>1.3.7</version>
                 </plugin>
-                <plugin>
-                    <groupId>org.codehaus.mojo</groupId>
-                    <artifactId>build-helper-maven-plugin</artifactId>
-                    <version>3.0.0</version>
-                </plugin>
             </plugins>
         </pluginManagement>
     </build>


[40/47] tinkerpop git commit: Removed gmavenplus plugin from hadoop-gremlin

Posted by sp...@apache.org.
Removed gmavenplus plugin from hadoop-gremlin

Not building any groovy here or running any scripts so there doesn't seem to be a need for it. CTR


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

Branch: refs/heads/TINKERPOP-1967
Commit: e8e22af4332e33d12067ed3e12237284067871aa
Parents: 962093e
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Thu Jun 7 07:34:08 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jun 7 07:34:08 2018 -0400

----------------------------------------------------------------------
 hadoop-gremlin/pom.xml | 18 ------------------
 1 file changed, 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e8e22af4/hadoop-gremlin/pom.xml
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/pom.xml b/hadoop-gremlin/pom.xml
index b094470..489502d 100644
--- a/hadoop-gremlin/pom.xml
+++ b/hadoop-gremlin/pom.xml
@@ -218,24 +218,6 @@ limitations under the License.
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
             </plugin>
-            <plugin>
-                <groupId>org.codehaus.gmavenplus</groupId>
-                <artifactId>gmavenplus-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>addSources</goal>
-                            <goal>addTestSources</goal>
-                            <goal>generateStubs</goal>
-                            <goal>compile</goal>
-                            <goal>generateTestStubs</goal>
-                            <goal>compileTests</goal>
-                            <goal>removeStubs</goal>
-                            <goal>removeTestStubs</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
         </plugins>
     </build>
 </project>
\ No newline at end of file


[46/47] tinkerpop git commit: Fixed a bug in the CoreImports for pageRank() and peerPressure()

Posted by sp...@apache.org.
Fixed a bug in the CoreImports for pageRank() and peerPressure()

Docs weren't generating as a result of the imports. Tehcnically we needed a static class import which CoreImports didn't support so rather than try to re-work all that, I just pulled PageRank and PeerPressure into their own top-level classes so they would just work with what we had. Also, lower-cased the keys as that looked more consistent with Gremlin. CTR


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

Branch: refs/heads/TINKERPOP-1967
Commit: f3506ee3b9bb68725367a9e6826494e33c4eb9e5
Parents: d3b6a34
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Jun 12 16:36:01 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Jun 12 16:36:01 2018 -0400

----------------------------------------------------------------------
 docs/src/reference/the-traversal.asciidoc       | 16 ++++----
 docs/src/upgrade/release-3.4.x.asciidoc         |  6 +--
 .../tinkerpop/gremlin/jsr223/CoreImports.java   |  8 ++--
 .../computer/traversal/step/map/PageRank.java   | 43 ++++++++++++++++++++
 .../step/map/PageRankVertexProgramStep.java     | 41 +++++--------------
 .../traversal/step/map/PeerPressure.java        | 43 ++++++++++++++++++++
 .../step/map/PeerPressureVertexProgramStep.java | 40 +++++-------------
 .../traversal/step/map/PageRankTest.java        | 10 ++---
 .../traversal/step/map/PeerPressureTest.java    | 10 ++---
 9 files changed, 130 insertions(+), 87 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f3506ee3/docs/src/reference/the-traversal.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/reference/the-traversal.asciidoc b/docs/src/reference/the-traversal.asciidoc
index 0d7d67f..0589203 100644
--- a/docs/src/reference/the-traversal.asciidoc
+++ b/docs/src/reference/the-traversal.asciidoc
@@ -1705,14 +1705,13 @@ g = graph.traversal().withComputer()
 g.V().pageRank().by('pageRank').values('pageRank')
 g.V().hasLabel('person').
   pageRank().
-    with(PageRank.EDGES, __.outE('knows')).
-    with(PageRank.PROPERTY_NAME, 'friendRank').
+    with(PageRank.edges, __.outE('knows')).
+    with(PageRank.propertyName, 'friendRank').
   order().by('friendRank',desc).valueMap('name','friendRank')
 ----
 
 Note the use of the `with()` modulating step which provides configuration options to the algorithm. It takes
-configuration keys from the static `PageRank` inner class on `PageRankVertexProgramStep` and is automatically
-imported to the Gremlin Console.
+configuration keys from the `PageRank` and is automatically imported to the Gremlin Console.
 
 The <<explain-step,`explain()`>>-step can be used to understand how the traversal is compiled into multiple `GraphComputer` jobs.
 
@@ -1721,8 +1720,8 @@ The <<explain-step,`explain()`>>-step can be used to understand how the traversa
 g = graph.traversal().withComputer()
 g.V().hasLabel('person').
   pageRank().
-    with(PageRank.EDGES, __.outE('knows')).
-    with(PageRank.PROPERTY_NAME, 'friendRank').
+    with(PageRank.edges, __.outE('knows')).
+    with(PageRank.propertyName, 'friendRank').
   order().by('friendRank',desc).valueMap('name','friendRank').explain()
 ----
 
@@ -1817,15 +1816,14 @@ g = graph.traversal().withComputer()
 g.V().peerPressure().by('cluster').values('cluster')
 g.V().hasLabel('person').
   peerPressure().
-    with(PeerPressure.PROPERTY_NAME, 'cluster').
+    with(PeerPressure.propertyName, 'cluster').
   group().
     by('cluster').
     by('name')
 ----
 
 Note the use of the `with()` modulating step which provides configuration options to the algorithm. It takes
-configuration keys from the static `PeerPressure` inner class on `PeerPressureVertexProgramStep` and is automatically
-imported to the Gremlin Console.
+configuration keys from the `PeerPressure` class and is automatically imported to the Gremlin Console.
 
 *Additional References*
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f3506ee3/docs/src/upgrade/release-3.4.x.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/upgrade/release-3.4.x.asciidoc b/docs/src/upgrade/release-3.4.x.asciidoc
index 851d458..2568974 100644
--- a/docs/src/upgrade/release-3.4.x.asciidoc
+++ b/docs/src/upgrade/release-3.4.x.asciidoc
@@ -40,8 +40,8 @@ which now uses `with()` to replace the old `by()` options:
 ----
 g.V().hasLabel('person').
   pageRank().
-    with(PageRank.EDGES, __.outE('knows')).
-    with(PageRank.PROPERTY_NAME, 'friendRank').
+    with(PageRank.edges, __.outE('knows')).
+    with(PageRank.propertyName, 'friendRank').
   order().
     by('friendRank',desc).
   valueMap('name','friendRank')
@@ -53,7 +53,7 @@ A similar change was made for `peerPressure()` step:
 ----
 g.V().hasLabel('person').
   peerPressure().
-    with(PeerPressure.PROPERTY_NAME, 'cluster').
+    with(PeerPressure.propertyName, 'cluster').
   group().
     by('cluster').
     by('name')

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f3506ee3/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java
index 6158285..558d6ca 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java
@@ -48,8 +48,8 @@ import org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankMa
 import org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankVertexProgram;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.MemoryTraversalSideEffects;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.PageRankVertexProgramStep;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.PeerPressureVertexProgramStep;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.PageRank;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.PeerPressure;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.optimization.GraphFilterStrategy;
 import org.apache.tinkerpop.gremlin.process.remote.RemoteConnection;
@@ -259,11 +259,11 @@ public final class CoreImports {
         CLASS_IMPORTS.add(ClusterCountMapReduce.class);
         CLASS_IMPORTS.add(ClusterPopulationMapReduce.class);
         CLASS_IMPORTS.add(MemoryTraversalSideEffects.class);
+        CLASS_IMPORTS.add(PeerPressure.class);
         CLASS_IMPORTS.add(PeerPressureVertexProgram.class);
-        CLASS_IMPORTS.add(PeerPressureVertexProgramStep.PeerPressure.class);
+        CLASS_IMPORTS.add(PageRank.class);
         CLASS_IMPORTS.add(PageRankMapReduce.class);
         CLASS_IMPORTS.add(PageRankVertexProgram.class);
-        CLASS_IMPORTS.add(PageRankVertexProgramStep.PageRank.class);
         CLASS_IMPORTS.add(GraphFilterStrategy.class);
         CLASS_IMPORTS.add(TraversalVertexProgram.class);
         CLASS_IMPORTS.add(VertexProgramStrategy.class);

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f3506ee3/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PageRank.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PageRank.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PageRank.java
new file mode 100644
index 0000000..5f9a956
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PageRank.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.process.computer.traversal.step.map;
+
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+
+/**
+ * Configuration options to be passed to the {@link GraphTraversal#with(String, Object)} step on
+ * {@link GraphTraversal#pageRank()}.
+ */
+public final class PageRank {
+    /**
+     * Configures number of iterations that the algorithm should run.
+     */
+    public static final String times = Graph.Hidden.hide("tinkerpop.pageRank.times");
+
+    /**
+     * Configures the edge to traverse when calculating the pagerank.
+     */
+    public static final String edges = Graph.Hidden.hide("tinkerpop.pageRank.edges");
+
+    /**
+     * Configures the name of the property within which to store the pagerank value.
+     */
+    public static final String propertyName = Graph.Hidden.hide("tinkerpop.pageRank.propertyName");
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f3506ee3/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PageRankVertexProgramStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PageRankVertexProgramStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PageRankVertexProgramStep.java
index 1c5b364..277b4c6 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PageRankVertexProgramStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PageRankVertexProgramStep.java
@@ -23,9 +23,7 @@ import org.apache.tinkerpop.gremlin.process.computer.GraphFilter;
 import org.apache.tinkerpop.gremlin.process.computer.Memory;
 import org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankVertexProgram;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.lambda.HaltedTraversersCountTraversal;
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Configuring;
-import org.apache.tinkerpop.gremlin.process.traversal.step.Parameterizing;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
@@ -60,23 +58,23 @@ public final class PageRankVertexProgramStep extends VertexProgramStep
     public PageRankVertexProgramStep(final Traversal.Admin traversal, final double alpha) {
         super(traversal);
         this.alpha = alpha;
-        this.configure(PageRank.EDGES, __.<Vertex>outE().asAdmin());
+        this.configure(PageRank.edges, __.<Vertex>outE().asAdmin());
     }
 
     @Override
     public void configure(final Object... keyValues) {
-        if (keyValues[0].equals(PageRank.EDGES)) {
+        if (keyValues[0].equals(PageRank.edges)) {
             if (!(keyValues[1] instanceof Traversal))
-                throw new IllegalArgumentException("PageRank.EDGES requires a Traversal as its argument");
+                throw new IllegalArgumentException("PageRank.edges requires a Traversal as its argument");
             this.edgeTraversal = new PureTraversal<>(((Traversal<Vertex,Edge>) keyValues[1]).asAdmin());
             this.integrateChild(this.edgeTraversal.get());
-        } else if (keyValues[0].equals(PageRank.PROPERTY_NAME)) {
+        } else if (keyValues[0].equals(PageRank.propertyName)) {
             if (!(keyValues[1] instanceof String))
-                throw new IllegalArgumentException("PageRank.PROPERTY_NAME requires a String as its argument");
+                throw new IllegalArgumentException("PageRank.propertyName requires a String as its argument");
             this.pageRankProperty = (String) keyValues[1];
-        } else if (keyValues[0].equals(PageRank.TIMES)) {
+        } else if (keyValues[0].equals(PageRank.times)) {
             if (!(keyValues[1] instanceof Integer))
-                throw new IllegalArgumentException("PageRank.TIMES requires an Integer as its argument");
+                throw new IllegalArgumentException("PageRank.times requires an Integer as its argument");
             this.times = (int) keyValues[1];
         }else {
             this.parameters.set(this, keyValues);
@@ -94,7 +92,7 @@ public final class PageRankVertexProgramStep extends VertexProgramStep
     @Deprecated
     @Override
     public void modulateBy(final Traversal.Admin<?, ?> edgeTraversal) {
-        configure(PageRank.EDGES, edgeTraversal);
+        configure(PageRank.edges, edgeTraversal);
     }
 
     /**
@@ -103,7 +101,7 @@ public final class PageRankVertexProgramStep extends VertexProgramStep
     @Deprecated
     @Override
     public void modulateBy(final String pageRankProperty) {
-        configure(PageRank.PROPERTY_NAME, pageRankProperty);
+        configure(PageRank.propertyName, pageRankProperty);
     }
 
     /**
@@ -112,7 +110,7 @@ public final class PageRankVertexProgramStep extends VertexProgramStep
     @Deprecated
     @Override
     public void modulateTimes(int times) {
-        configure(PageRank.TIMES, times);
+        configure(PageRank.times, times);
     }
 
     @Override
@@ -162,23 +160,4 @@ public final class PageRankVertexProgramStep extends VertexProgramStep
         return super.hashCode() ^ this.edgeTraversal.hashCode() ^ this.pageRankProperty.hashCode() ^ this.times;
     }
 
-    /**
-     * Configuration options to be passed to the {@link GraphTraversal#with(String, Object)} step.
-     */
-    public static class PageRank {
-        /**
-         * Configures number of iterations that the algorithm should run.
-         */
-        public static final String TIMES = Graph.Hidden.hide("tinkerpop.pageRank.times");
-
-        /**
-         * Configures the edge to traverse when calculating the pagerank.
-         */
-        public static final String EDGES = Graph.Hidden.hide("tinkerpop.pageRank.edges");
-
-        /**
-         * Configures the name of the property within which to store the pagerank value.
-         */
-        public static final String PROPERTY_NAME = Graph.Hidden.hide("tinkerpop.pageRank.propertyName");
-    }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f3506ee3/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PeerPressure.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PeerPressure.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PeerPressure.java
new file mode 100644
index 0000000..c0051f2
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PeerPressure.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.process.computer.traversal.step.map;
+
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
+import org.apache.tinkerpop.gremlin.structure.Graph;
+
+/**
+ * Configuration options to be passed to the {@link GraphTraversal#with(String, Object)} step on
+ * {@link GraphTraversal#peerPressure()}.
+ */
+public final class PeerPressure {
+    /**
+     * Configures number of iterations that the algorithm should run.
+     */
+    public static final String times = Graph.Hidden.hide("tinkerpop.peerPressure.times");
+
+    /**
+     * Configures the edge to traverse when determining clusters.
+     */
+    public static final String edges = Graph.Hidden.hide("tinkerpop.peerPressure.edges");
+
+    /**
+     * Configures the name of the property within which to store the cluster value.
+     */
+    public static final String propertyName = Graph.Hidden.hide("tinkerpop.peerPressure.propertyName");
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f3506ee3/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PeerPressureVertexProgramStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PeerPressureVertexProgramStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PeerPressureVertexProgramStep.java
index be65f42..e1cba60 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PeerPressureVertexProgramStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PeerPressureVertexProgramStep.java
@@ -25,7 +25,6 @@ import org.apache.tinkerpop.gremlin.process.computer.clustering.peerpressure.Pee
 import org.apache.tinkerpop.gremlin.process.computer.traversal.lambda.HaltedTraversersCountTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.step.ByModulating;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Configuring;
@@ -57,23 +56,23 @@ public final class PeerPressureVertexProgramStep extends VertexProgramStep
 
     public PeerPressureVertexProgramStep(final Traversal.Admin traversal) {
         super(traversal);
-        this.configure(PeerPressure.EDGES, __.<Vertex>outE().asAdmin());
+        this.configure(PeerPressure.edges, __.<Vertex>outE().asAdmin());
     }
 
     @Override
     public void configure(final Object... keyValues) {
-        if (keyValues[0].equals(PeerPressureVertexProgramStep.PeerPressure.EDGES)) {
+        if (keyValues[0].equals(PeerPressure.edges)) {
             if (!(keyValues[1] instanceof Traversal))
-                throw new IllegalArgumentException("PeerPressure.EDGES requires a Traversal as its argument");
+                throw new IllegalArgumentException("PeerPressure.edges requires a Traversal as its argument");
             this.edgeTraversal = new PureTraversal<>(((Traversal<Vertex,Edge>) keyValues[1]).asAdmin());
             this.integrateChild(this.edgeTraversal.get());
-        } else if (keyValues[0].equals(PeerPressureVertexProgramStep.PeerPressure.PROPERTY_NAME)) {
+        } else if (keyValues[0].equals(PeerPressure.propertyName)) {
             if (!(keyValues[1] instanceof String))
-                throw new IllegalArgumentException("PeerPressure.PROPERTY_NAME requires a String as its argument");
+                throw new IllegalArgumentException("PeerPressure.propertyName requires a String as its argument");
             this.clusterProperty = (String) keyValues[1];
-        } else if (keyValues[0].equals(PeerPressureVertexProgramStep.PeerPressure.TIMES)) {
+        } else if (keyValues[0].equals(PeerPressure.times)) {
             if (!(keyValues[1] instanceof Integer))
-                throw new IllegalArgumentException("PeerPressure.TIMES requires an Integer as its argument");
+                throw new IllegalArgumentException("PeerPressure.times requires an Integer as its argument");
             this.times = (int) keyValues[1];
         }else {
             this.parameters.set(this, keyValues);
@@ -96,7 +95,7 @@ public final class PeerPressureVertexProgramStep extends VertexProgramStep
     @Deprecated
     @Override
     public void modulateBy(final Traversal.Admin<?, ?> edgeTraversal) {
-        configure(PeerPressure.EDGES, edgeTraversal);
+        configure(PeerPressure.edges, edgeTraversal);
     }
 
     /**
@@ -105,7 +104,7 @@ public final class PeerPressureVertexProgramStep extends VertexProgramStep
     @Deprecated
     @Override
     public void modulateBy(final String clusterProperty) {
-        configure(PeerPressure.PROPERTY_NAME, clusterProperty);
+        configure(PeerPressure.propertyName, clusterProperty);
     }
 
     /**
@@ -114,7 +113,7 @@ public final class PeerPressureVertexProgramStep extends VertexProgramStep
     @Deprecated
     @Override
     public void modulateTimes(int times) {
-        configure(PeerPressure.TIMES, times);
+        configure(PeerPressure.times, times);
     }
 
     @Override
@@ -158,23 +157,4 @@ public final class PeerPressureVertexProgramStep extends VertexProgramStep
         this.integrateChild(this.edgeTraversal.get());
     }
 
-    /**
-     * Configuration options to be passed to the {@link GraphTraversal#with(String, Object)} step.
-     */
-    public static class PeerPressure {
-        /**
-         * Configures number of iterations that the algorithm should run.
-         */
-        public static final String TIMES = Graph.Hidden.hide("tinkerpop.peerPressure.times");
-
-        /**
-         * Configures the edge to traverse when determining clusters.
-         */
-        public static final String EDGES = Graph.Hidden.hide("tinkerpop.peerPressure.edges");
-
-        /**
-         * Configures the name of the property within which to store the cluster value.
-         */
-        public static final String PROPERTY_NAME = Graph.Hidden.hide("tinkerpop.peerPressure.propertyName");
-    }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f3506ee3/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PageRankTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PageRankTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PageRankTest.java
index 325621e..2312967 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PageRankTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PageRankTest.java
@@ -23,7 +23,7 @@ import org.apache.tinkerpop.gremlin.LoadGraphWith;
 import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
 import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
 import org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankVertexProgram;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.PageRankVertexProgramStep.PageRank;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.PageRank;
 import org.apache.tinkerpop.gremlin.process.traversal.Order;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
@@ -64,7 +64,7 @@ public abstract class PageRankTest extends AbstractGremlinProcessTest {
 
     public abstract Traversal<Vertex, Map<String, List<Object>>> get_g_V_hasLabelXsoftwareX_hasXname_rippleX_pageRankX1X_byXinEXcreatedXX_timesX1X_byXpriorsX_inXcreatedX_unionXboth__identityX_valueMapXname_priorsX();
 
-    public abstract Traversal<Vertex, Map<Object, List<Vertex>>> get_g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_withXPROPERTY_NAME_pageRankXX_withXEDGES_inEXX_withXTIMES_1X_inXcreatedX_groupXmX_byXpageRankX_capXmX();
+    public abstract Traversal<Vertex, Map<Object, List<Vertex>>> get_g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_withXpropertyName_pageRankXX_withXedges_inEXX_withXtimes_1X_inXcreatedX_groupXmX_byXpageRankX_capXmX();
 
     public abstract Traversal<Vertex, Map<Object, List<Vertex>>> get_g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_byXpageRankX_byXinEX_timesX1X_inXcreatedX_groupXmX_byXpageRankX_capXmX();
 
@@ -245,7 +245,7 @@ public abstract class PageRankTest extends AbstractGremlinProcessTest {
     @LoadGraphWith(MODERN)
     public void g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_withXPROPERTY_NAME_pageRankXX_withXEDGES_inEXX_withXTIMES_1X_inXcreatedX_groupXmX_byXpageRankX_capXmX() {
         // [{2.0=[v[4], v[4], v[4], v[4]], 1.0=[v[6], v[6], v[6], v[1], v[1], v[1]], software=[v[5], v[3], v[3], v[3]]}]
-        final Traversal<Vertex, Map<Object, List<Vertex>>> traversal = get_g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_withXPROPERTY_NAME_pageRankXX_withXEDGES_inEXX_withXTIMES_1X_inXcreatedX_groupXmX_byXpageRankX_capXmX();
+        final Traversal<Vertex, Map<Object, List<Vertex>>> traversal = get_g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_withXpropertyName_pageRankXX_withXedges_inEXX_withXtimes_1X_inXcreatedX_groupXmX_byXpageRankX_capXmX();
         printTraversalForm(traversal);
         final Map<Object, List<Vertex>> map = traversal.next();
         assertFalse(traversal.hasNext());
@@ -322,8 +322,8 @@ public abstract class PageRankTest extends AbstractGremlinProcessTest {
         }
 
         @Override
-        public Traversal<Vertex, Map<Object, List<Vertex>>> get_g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_withXPROPERTY_NAME_pageRankXX_withXEDGES_inEXX_withXTIMES_1X_inXcreatedX_groupXmX_byXpageRankX_capXmX() {
-            return g.V().out("created").group("m").by(T.label).pageRank(1.0).with(PageRank.PROPERTY_NAME, "pageRank").with(PageRank.EDGES, __.inE()).with(PageRank.TIMES, 1).in("created").group("m").by("pageRank").cap("m");
+        public Traversal<Vertex, Map<Object, List<Vertex>>> get_g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_withXpropertyName_pageRankXX_withXedges_inEXX_withXtimes_1X_inXcreatedX_groupXmX_byXpageRankX_capXmX() {
+            return g.V().out("created").group("m").by(T.label).pageRank(1.0).with(PageRank.propertyName, "pageRank").with(PageRank.edges, __.inE()).with(PageRank.times, 1).in("created").group("m").by("pageRank").cap("m");
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f3506ee3/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PeerPressureTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PeerPressureTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PeerPressureTest.java
index c76941b..b70cb02 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PeerPressureTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PeerPressureTest.java
@@ -23,7 +23,7 @@ import org.apache.tinkerpop.gremlin.LoadGraphWith;
 import org.apache.tinkerpop.gremlin.TestHelper;
 import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
 import org.apache.tinkerpop.gremlin.process.computer.clustering.peerpressure.PeerPressureVertexProgram;
-import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.PeerPressureVertexProgramStep.PeerPressure;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.PeerPressure;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
@@ -51,7 +51,7 @@ public abstract class PeerPressureTest extends AbstractGremlinProcessTest {
 
     public abstract Traversal<Vertex, Map<String, List<Object>>> get_g_V_hasXname_rippleX_inXcreatedX_peerPressure_byXoutEX_byXclusterX_repeatXunionXidentity__bothX_timesX2X_dedup_valueMapXname_clusterX();
 
-    public abstract Traversal<Vertex, Map<String, List<Object>>> get_g_V_hasXname_rippleX_inXcreatedX_peerPressure_withXEDGES_outEX_withXPROPERTY_NAME_clusterX_repeatXunionXidentity__bothX_timesX2X_dedup_valueMapXname_clusterX();
+    public abstract Traversal<Vertex, Map<String, List<Object>>> get_g_V_hasXname_rippleX_inXcreatedX_peerPressure_withXedges_outEX_withXpropertyName_clusterX_repeatXunionXidentity__bothX_timesX2X_dedup_valueMapXname_clusterX();
 
     @Test
     @LoadGraphWith(MODERN)
@@ -107,7 +107,7 @@ public abstract class PeerPressureTest extends AbstractGremlinProcessTest {
     @LoadGraphWith(MODERN)
     public void g_V_hasXname_rippleX_inXcreatedX_peerPressure_withXEDGES_outEX_withXPROPERTY_NAME_clusterX_repeatXunionXidentity__bothX_timesX2X_dedup_valueMapXname_clusterX() {
         TestHelper.assumeNonDeterministic();
-        final Traversal<Vertex, Map<String, List<Object>>> traversal = get_g_V_hasXname_rippleX_inXcreatedX_peerPressure_withXEDGES_outEX_withXPROPERTY_NAME_clusterX_repeatXunionXidentity__bothX_timesX2X_dedup_valueMapXname_clusterX();
+        final Traversal<Vertex, Map<String, List<Object>>> traversal = get_g_V_hasXname_rippleX_inXcreatedX_peerPressure_withXedges_outEX_withXpropertyName_clusterX_repeatXunionXidentity__bothX_timesX2X_dedup_valueMapXname_clusterX();
         printTraversalForm(traversal);
         final List<Map<String, List<Object>>> results = traversal.toList();
         assertEquals(6, results.size());
@@ -143,8 +143,8 @@ public abstract class PeerPressureTest extends AbstractGremlinProcessTest {
         }
 
         @Override
-        public Traversal<Vertex, Map<String, List<Object>>> get_g_V_hasXname_rippleX_inXcreatedX_peerPressure_withXEDGES_outEX_withXPROPERTY_NAME_clusterX_repeatXunionXidentity__bothX_timesX2X_dedup_valueMapXname_clusterX() {
-            return g.V().has("name", "ripple").in("created").peerPressure().with(PeerPressure.EDGES,__.outE()).with(PeerPressure.PROPERTY_NAME, "cluster").repeat(__.union(__.identity(), __.both())).times(2).dedup().valueMap("name", "cluster");
+        public Traversal<Vertex, Map<String, List<Object>>> get_g_V_hasXname_rippleX_inXcreatedX_peerPressure_withXedges_outEX_withXpropertyName_clusterX_repeatXunionXidentity__bothX_timesX2X_dedup_valueMapXname_clusterX() {
+            return g.V().has("name", "ripple").in("created").peerPressure().with(PeerPressure.edges,__.outE()).with(PeerPressure.propertyName, "cluster").repeat(__.union(__.identity(), __.both())).times(2).dedup().valueMap("name", "cluster");
         }
     }
 }
\ No newline at end of file


[21/47] tinkerpop git commit: Minor doc updates around docker CTR

Posted by sp...@apache.org.
Minor doc updates around docker CTR


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

Branch: refs/heads/TINKERPOP-1967
Commit: 57ac99ec7d489e480fb73fa72ae544af130b76ae
Parents: 1c3f34f
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Jun 4 10:56:20 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Jun 4 13:30:31 2018 -0400

----------------------------------------------------------------------
 docs/src/reference/gremlin-applications.asciidoc   |  2 ++
 docs/src/upgrade/release-3.2.x-incubating.asciidoc | 15 +++++++++++++++
 2 files changed, 17 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/57ac99ec/docs/src/reference/gremlin-applications.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/reference/gremlin-applications.asciidoc b/docs/src/reference/gremlin-applications.asciidoc
index 273e5c7..f044df8 100644
--- a/docs/src/reference/gremlin-applications.asciidoc
+++ b/docs/src/reference/gremlin-applications.asciidoc
@@ -355,6 +355,7 @@ Like, execution mode, it is also possible to pass multiple scripts by specifying
 
 [[gremlin-console-docker-image]]
 === Docker Image
+
 The Gremlin Console can also be started as a link:https://hub.docker.com/r/tinkerpop/gremlin-console/[Docker image]:
 
 [source,text]
@@ -1935,6 +1936,7 @@ immediately forget the script after execution. In this way, the function does no
 
 [[gremlin-server-docker-image]]
 === Docker Image
+
 The Gremlin Server can also be started as a link:https://hub.docker.com/r/tinkerpop/gremlin-server/[Docker image]:
 
 [source,text]

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/57ac99ec/docs/src/upgrade/release-3.2.x-incubating.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/upgrade/release-3.2.x-incubating.asciidoc b/docs/src/upgrade/release-3.2.x-incubating.asciidoc
index ccdf51a..593c631 100644
--- a/docs/src/upgrade/release-3.2.x-incubating.asciidoc
+++ b/docs/src/upgrade/release-3.2.x-incubating.asciidoc
@@ -29,6 +29,21 @@ Please see the link:https://github.com/apache/tinkerpop/blob/3.2.10/CHANGELOG.as
 
 === Upgrading for Users
 
+==== Docker Images
+
+Docker images are now available on link:https://hub.docker.com/u/tinkerpop/[Docker Hub] for Gremlin Console and Gremlin
+Server.
+
+[source,text]
+----
+$ docker run -it tinkerpop/gremlin-console:x.y.z
+$ docker run tinkerpop/gremlin-server:x.y.z
+----
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1897[TINKERPOP-1897],
+link:http://tinkerpop.apache.org/docs/current/reference#gremlin-console-docker-image[Reference Documentation - Gremlin Console],
+link:http://tinkerpop.apache.org/docs/current/reference#gremlin-server-docker-image[Reference Documentation - Gremlin Server],
+
 ==== TinkerFactory.createGratefulDead()
 
 The Grateful Dead dataset has been with TinkerPop since the early days of 1.x. It has always been available as a


[45/47] tinkerpop git commit: Merge branch 'tp33'

Posted by sp...@apache.org.
Merge branch 'tp33'


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

Branch: refs/heads/TINKERPOP-1967
Commit: d3b6a340dbb9c89355c40089a5c083dc0dbd4c5b
Parents: ae2f304 d4c76a6
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Sat Jun 9 13:34:46 2018 +0200
Committer: Florian Hockmann <fh...@florian-hockmann.de>
Committed: Sat Jun 9 13:34:46 2018 +0200

----------------------------------------------------------------------
 .travis.yml | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)
----------------------------------------------------------------------



[20/47] tinkerpop git commit: Merge branch 'tp33'

Posted by sp...@apache.org.
Merge branch 'tp33'


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

Branch: refs/heads/TINKERPOP-1967
Commit: 9eac7f705eddd926f962151993a7a2d73a5748e4
Parents: b0a68b8 00f77fa
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Jun 4 13:28:58 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Jun 4 13:28:58 2018 -0400

----------------------------------------------------------------------
 docs/src/reference/gremlin-applications.asciidoc   |  2 ++
 docs/src/upgrade/release-3.2.x-incubating.asciidoc | 15 +++++++++++++++
 2 files changed, 17 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9eac7f70/docs/src/reference/gremlin-applications.asciidoc
----------------------------------------------------------------------


[37/47] tinkerpop git commit: Removed some previously deprecated structures

Posted by sp...@apache.org.
Removed some previously deprecated structures

These deprecations were typically pretty old, going back to 3.2.x and were generally for internal or provider usage. They were an odd mismatch of things so I didn't bother to createa JIRA for them, but documented them all fully in changelog and upgrade docs. CTR


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

Branch: refs/heads/TINKERPOP-1967
Commit: b75cfb8ec529aad957d5a631b15cc3afcf86186f
Parents: d5b54fe
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Jun 5 09:16:55 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Jun 5 09:16:55 2018 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  4 +
 docs/src/upgrade/release-3.4.x.asciidoc         |  9 ++-
 .../step/map/LambdaCollectingBarrierStep.java   | 13 ----
 .../traversal/step/util/HasContainer.java       | 18 -----
 .../Process/Traversal/GraphTraversal.cs         |  9 ---
 .../jsr223/GremlinGroovyScriptEngine.java       | 13 +---
 ...mlinGroovyScriptEngineCompileStaticTest.java | 29 ++++----
 ...remlinGroovyScriptEngineFileSandboxTest.java | 43 ++++++-----
 ...GroovyScriptEngineSandboxedStandardTest.java | 78 ++++++++++----------
 ...nGroovyScriptEngineTinkerPopSandboxTest.java | 17 +++--
 ...remlinGroovyScriptEngineTypeCheckedTest.java | 29 ++++----
 .../lib/process/graph-traversal.js              | 10 ---
 .../gremlin_python/process/graph_traversal.py   |  4 -
 .../hadoop/structure/HadoopConfiguration.java   | 24 ------
 14 files changed, 111 insertions(+), 189 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b75cfb8e/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 14b084c..75974c0 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -34,12 +34,16 @@ This release also includes changes from <<release-3-3-3, 3.3.3>>.
 * Removed previously deprecated Credentials DSL infrastructure.
 * Moved `TraversalEngine` to `gremlin-test` as it has long been only used in testing infrastructure.
 * Removed previously deprecated `OpSelectorHandler` constructor.
+* Removed previously deprecated `close()` from `GremlinGroovyScriptEngine` which no longer implements `AutoCloseable`.
+* Removed previously deprecated `getGraphInputFormat()` and `getGraphOutputFormat()` from `HadoopConfiguration`.
 * Removed previously deprecated `AbstractOpProcessor#makeFrame()` method.
 * Removed previously deprecated `AuthenticationSettings.className` configuration option in Gremlin Server.
 * Removed previously deprecated `GraphManager` methods `getGraphs()` and `getTraversalSources()`.
 * Removed previously deprecated Gremlin Server setting for `serializedResponseTimeout`.
 * Removed previously deprecated Structure API exceptions related to "element not found" situations.
 * Removed previously deprecated `rebindings` options from the Java driver API.
+* Removed previously deprecated `LambdaCollectingBarrierStep.Consumers` enum.
+* Removed previously deprecated `HasContainer#makeHasContainers(String, P)`
 * Removed support for Giraph.
 
 == TinkerPop 3.3.0 (Gremlin Symphony #40 in G Minor)

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b75cfb8e/docs/src/upgrade/release-3.4.x.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/upgrade/release-3.4.x.asciidoc b/docs/src/upgrade/release-3.4.x.asciidoc
index 3c881c3..98b6045 100644
--- a/docs/src/upgrade/release-3.4.x.asciidoc
+++ b/docs/src/upgrade/release-3.4.x.asciidoc
@@ -82,8 +82,10 @@ gremlin> g.V().values('name').max()
 The following deprecated classes, methods or fields have been removed in this version:
 
 * `gremlin-core`
-** `org.apache.tinkerpop.gremlin.process.traversal.engine.*`
 ** `org.apache.tinkerpop.gremlin.process.traversal.TraversalEngine`
+** `org.apache.tinkerpop.gremlin.process.traversal.engine.*`
+** `org.apache.tinkerpop.gremlin.process.traversal.step.map.LambdaCollectingBarrierStep.Consumers`
+** `org.apache.tinkerpop.gremlin.process.traversal.step.util.HasContainer#makeHasContainers(String, P)`
 ** `org.apache.tinkerpop.gremlin.structure.Element.Exceptions#elementAlreadyRemoved(Class, Object)`
 ** `org.apache.tinkerpop.gremlin.structure.Graph.Exceptions#elementNotFound(Class, Object)`
 ** `org.apache.tinkerpop.gremlin.structure.Graph.Exceptions#elementNotFound(Class, Object, Exception)`
@@ -91,6 +93,8 @@ The following deprecated classes, methods or fields have been removed in this ve
 ** `org.apache.tinkerpop.gremlin.driver.Client#rebind(String)`
 ** `org.apache.tinkerpop.gremlin.driver.Client.ReboundClusterdClient`
 ** `org.apache.tinkerpop.gremlin.driver.Tokens#ARGS_REBINDINGS`
+* `gremlin-groovy`
+** `org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine.close()` - no longer implements `AutoCloseable`
 * `gremlin-server`
 ** `org.apache.tinkerpop.gremlin.server.GraphManager#getGraphs()`
 ** `org.apache.tinkerpop.gremlin.server.GraphManager#getTraversalSources()`
@@ -98,6 +102,9 @@ The following deprecated classes, methods or fields have been removed in this ve
 ** `org.apache.tinkerpop.gremlin.server.Settings.AuthenticationSettings#className`
 ** `org.apache.tinkerpop.gremlin.server.handler.OpSelectorHandler(Settings, GraphManager, GremlinExecutor, ScheduledExecutorService)`
 ** `org.apache.tinkerpop.gremlin.server.op.AbstractOpProcessor#makeFrame(ChannelHandlerContext, RequestMessage, MessageSerializer serializer, boolean, List, ResponseStatusCode code)`
+* `hadoop-graph`
+** `org.apache.tinkerpop.gremlin.hadoop.structure.HadoopConfiguration#getGraphInputFormat()`
+** `org.apache.tinkerpop.gremlin.hadoop.structure.HadoopConfiguration#getGraphOutputFormat()`
 
 Please see the javadoc deprecation notes or upgrade documentation specific to when the deprecation took place to
 understand how to resolve this breaking change.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b75cfb8e/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/LambdaCollectingBarrierStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/LambdaCollectingBarrierStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/LambdaCollectingBarrierStep.java
index 9b500d4..ef41b61 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/LambdaCollectingBarrierStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/LambdaCollectingBarrierStep.java
@@ -32,19 +32,6 @@ import java.util.function.Consumer;
  */
 public final class LambdaCollectingBarrierStep<S> extends CollectingBarrierStep<S> implements LambdaHolder {
 
-    /**
-     * @deprecated As of release 3.2.0, replaced by use of {@link NoOpBarrierStep}.
-     */
-    @Deprecated
-    public enum Consumers implements Consumer<TraverserSet<Object>> {
-        noOp {
-            @Override
-            public void accept(final TraverserSet<Object> traverserSet) {
-
-            }
-        }
-    }
-
     private final Consumer<TraverserSet<S>> barrierConsumer;
 
     public LambdaCollectingBarrierStep(final Traversal.Admin traversal, final Consumer<TraverserSet<S>> barrierConsumer, final int maxBarrierSize) {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b75cfb8e/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/HasContainer.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/HasContainer.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/HasContainer.java
index 08ab389..9e3ab91 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/HasContainer.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/HasContainer.java
@@ -182,22 +182,4 @@ public class HasContainer implements Serializable, Cloneable, Predicate<Element>
         }
         return true;
     }
-
-
-    /**
-     * @deprecated As of release 3.2.4. Providers should handle composite {@link P#and} predicates and not rely on splitting.
-     */
-    @Deprecated
-    public static HasContainer[] makeHasContainers(final String key, final P<?> predicate) {
-        if (predicate instanceof AndP) {
-            final List<P<?>> predicates = ((AndP) predicate).getPredicates();
-            final HasContainer[] hasContainers = new HasContainer[predicates.size()];
-            for (int i = 0; i < predicates.size(); i++) {
-                hasContainers[i] = new HasContainer(key, predicates.get(i));
-            }
-            return hasContainers;
-        } else {
-            return new HasContainer[]{new HasContainer(key, predicate)};
-        }
-    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b75cfb8e/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
index bb3d5d8..9952455 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
@@ -1676,14 +1676,5 @@ namespace Gremlin.Net.Process.Traversal
             return Wrap<S, E>(this);
         }
 
-        /// <summary>
-        ///     Adds the with step to this <see cref="GraphTraversal{SType, EType}" />.
-        /// </summary>
-        public GraphTraversal<S, E> With (StepConfiguration modulation)
-        {
-            Bytecode.AddStep("with", modulation);
-            return Wrap<S, E>(this);
-        }
-
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b75cfb8e/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngine.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngine.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngine.java
index 03ea883..e2af3aa 100644
--- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngine.java
+++ b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngine.java
@@ -29,7 +29,6 @@ import groovy.lang.MissingMethodException;
 import groovy.lang.MissingPropertyException;
 import groovy.lang.Script;
 import groovy.lang.Tuple;
-import org.apache.commons.lang.exception.ExceptionUtils;
 import org.apache.tinkerpop.gremlin.groovy.loaders.GremlinLoader;
 import org.apache.tinkerpop.gremlin.jsr223.ConcurrentBindings;
 import org.apache.tinkerpop.gremlin.jsr223.CoreGremlinPlugin;
@@ -89,8 +88,7 @@ import java.util.stream.Collectors;
  * @author Stephen Mallette (http://stephen.genoprime.com)
  * @see org.apache.tinkerpop.gremlin.groovy.engine.GremlinExecutor
  */
-public class GremlinGroovyScriptEngine extends GroovyScriptEngineImpl
-        implements AutoCloseable, GremlinScriptEngine {
+public class GremlinGroovyScriptEngine extends GroovyScriptEngineImpl implements GremlinScriptEngine {
 
     private static final Logger log = LoggerFactory.getLogger(GremlinGroovyScriptEngine.class);
     /**
@@ -310,15 +308,6 @@ public class GremlinGroovyScriptEngine extends GroovyScriptEngineImpl
     }
 
     /**
-     * @deprecated As of release 3.2.4, not replaced as this class will not implement {@code AutoCloseable} in the
-     * future.
-     */
-    @Override
-    @Deprecated
-    public void close() throws Exception {
-    }
-
-    /**
      * Resets the entire {@code GremlinGroovyScriptEngine} by clearing script caches, recreating the classloader,
      * clearing bindings.
      */

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b75cfb8e/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineCompileStaticTest.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineCompileStaticTest.java b/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineCompileStaticTest.java
index b5949a2..f6bea6e 100644
--- a/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineCompileStaticTest.java
+++ b/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineCompileStaticTest.java
@@ -37,12 +37,12 @@ public class GremlinGroovyScriptEngineCompileStaticTest {
     @Test
     public void shouldCompileStatic() throws Exception {
         // with no type checking this should pass
-        try (GremlinGroovyScriptEngine scriptEngine = new GremlinGroovyScriptEngine()) {
-            assertEquals(255, scriptEngine.eval("((Object) new java.awt.Color(255, 255, 255)).getRed()"));
-        }
+        GremlinGroovyScriptEngine scriptEngine = new GremlinGroovyScriptEngine();
+        assertEquals(255, scriptEngine.eval("((Object) new java.awt.Color(255, 255, 255)).getRed()"));
 
         final CompileStaticGroovyCustomizer provider = new CompileStaticGroovyCustomizer();
-        try (GremlinGroovyScriptEngine scriptEngine = new GremlinGroovyScriptEngine(provider)) {
+        scriptEngine = new GremlinGroovyScriptEngine(provider);
+        try {
             scriptEngine.eval("((Object) new java.awt.Color(255, 255, 255)).getRed()");
             fail("Should have failed type checking");
         } catch (ScriptException se) {
@@ -56,13 +56,13 @@ public class GremlinGroovyScriptEngineCompileStaticTest {
     public void shouldCompileStaticWithExtension() throws Exception {
         // with no type checking extension this should pass
         final CompileStaticGroovyCustomizer providerNoExtension = new CompileStaticGroovyCustomizer();
-        try (GremlinGroovyScriptEngine scriptEngine = new GremlinGroovyScriptEngine(providerNoExtension)) {
-            assertEquals(255, scriptEngine.eval("def c = new java.awt.Color(255, 255, 255); c.red"));
-        }
+        GremlinGroovyScriptEngine scriptEngine = new GremlinGroovyScriptEngine(providerNoExtension);
+        assertEquals(255, scriptEngine.eval("def c = new java.awt.Color(255, 255, 255); c.red"));
 
         final CompileStaticGroovyCustomizer providerWithExtension = new CompileStaticGroovyCustomizer(
                 PrecompiledExtensions.PreventColorUsageExtension.class.getName());
-        try (GremlinGroovyScriptEngine scriptEngine = new GremlinGroovyScriptEngine(providerWithExtension)) {
+        scriptEngine = new GremlinGroovyScriptEngine(providerWithExtension);
+        try {
             scriptEngine.eval("def c = new java.awt.Color(255, 255, 255); c.red");
             fail("Should have failed type checking");
         } catch (ScriptException se) {
@@ -75,15 +75,15 @@ public class GremlinGroovyScriptEngineCompileStaticTest {
     public void shouldCompileStaticWithMultipleExtension() throws Exception {
         // with no type checking extension this should pass
         final CompileStaticGroovyCustomizer providerNoExtension = new CompileStaticGroovyCustomizer();
-        try (GremlinGroovyScriptEngine scriptEngine = new GremlinGroovyScriptEngine(providerNoExtension)) {
-            assertEquals(255, scriptEngine.eval("def c = new java.awt.Color(255, 255, 255); c.red"));
-            assertEquals(1l, scriptEngine.eval("def c = new java.util.concurrent.CountDownLatch(1); c.count"));
-        }
+        GremlinGroovyScriptEngine scriptEngine = new GremlinGroovyScriptEngine(providerNoExtension);
+        assertEquals(255, scriptEngine.eval("def c = new java.awt.Color(255, 255, 255); c.red"));
+        assertEquals(1l, scriptEngine.eval("def c = new java.util.concurrent.CountDownLatch(1); c.count"));
 
         final CompileStaticGroovyCustomizer providerWithExtension = new CompileStaticGroovyCustomizer(
                 PrecompiledExtensions.PreventColorUsageExtension.class.getName() +
                         "," + PrecompiledExtensions.PreventCountDownLatchUsageExtension.class.getName());
-        try (GremlinGroovyScriptEngine scriptEngine = new GremlinGroovyScriptEngine(providerWithExtension)) {
+        scriptEngine = new GremlinGroovyScriptEngine(providerWithExtension);
+        try {
             scriptEngine.eval("def c = new java.awt.Color(255, 255, 255); c.red");
             fail("Should have failed type checking");
         } catch (ScriptException se) {
@@ -91,7 +91,8 @@ public class GremlinGroovyScriptEngineCompileStaticTest {
             assertThat(se.getMessage(), containsString("Method call is not allowed!"));
         }
 
-        try (GremlinGroovyScriptEngine scriptEngine = new GremlinGroovyScriptEngine(providerWithExtension)) {
+        scriptEngine = new GremlinGroovyScriptEngine(providerWithExtension);
+        try {
             scriptEngine.eval("def c = new java.util.concurrent.CountDownLatch(1); c.count");
             fail("Should have failed type checking");
         } catch (ScriptException se) {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b75cfb8e/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineFileSandboxTest.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineFileSandboxTest.java b/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineFileSandboxTest.java
index 12925b8..c92581a 100644
--- a/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineFileSandboxTest.java
+++ b/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineFileSandboxTest.java
@@ -70,35 +70,33 @@ public class GremlinGroovyScriptEngineFileSandboxTest {
         final File f = TestHelper.generateTempFileFromResource(graph.getClass(), GremlinGroovyScriptEngineFileSandboxTest.class, "sandbox-empty-static-variable-types.yaml", ".yaml");
         System.setProperty(FileSandboxExtension.GREMLIN_SERVER_SANDBOX, f.getAbsolutePath());
         final CompileStaticGroovyCustomizer standardSandbox = new CompileStaticGroovyCustomizer(FileSandboxExtension.class.getName());
-        try (GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine(standardSandbox)) {
-            assertEquals(123, engine.eval("java.lang.Math.abs(-123)"));
-            assertThat(engine.eval("new Boolean(true)"), is(true));
-            assertThat(engine.eval("new Boolean(true).toString()"), is("true"));
-        }
+        final GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine(standardSandbox);
+        assertEquals(123, engine.eval("java.lang.Math.abs(-123)"));
+        assertThat(engine.eval("new Boolean(true)"), is(true));
+        assertThat(engine.eval("new Boolean(true).toString()"), is("true"));
     }
 
     @Test
     public void shouldEvalAsTheMethodIsWhiteListed() throws Exception {
         final CompileStaticGroovyCustomizer standardSandbox = new CompileStaticGroovyCustomizer(FileSandboxExtension.class.getName());
-        try (GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine(standardSandbox)) {
-            assertEquals(123, engine.eval("java.lang.Math.abs(-123)"));
-            assertThat(engine.eval("new Boolean(true)"), is(true));
-            assertThat(engine.eval("new Boolean(true).toString()"), is("true"));
-        }
+        final GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine(standardSandbox);
+        assertEquals(123, engine.eval("java.lang.Math.abs(-123)"));
+        assertThat(engine.eval("new Boolean(true)"), is(true));
+        assertThat(engine.eval("new Boolean(true).toString()"), is("true"));
     }
 
     @Test
     public void shouldEvalAsGroovyPropertiesWhenWhiteListed() throws Exception {
         final CompileStaticGroovyCustomizer standardSandbox = new CompileStaticGroovyCustomizer(FileSandboxExtension.class.getName());
-        try (GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine(standardSandbox)) {
-            assertThat(Arrays.equals("test".getBytes(), (byte[]) engine.eval("'test'.bytes")), is(true));
-        }
+        final GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine(standardSandbox);
+        assertThat(Arrays.equals("test".getBytes(), (byte[]) engine.eval("'test'.bytes")), is(true));
     }
 
     @Test
     public void shouldPreventMaliciousStuffWithSystemButAllowSomeMethodsOnSystem() throws Exception {
         final CompileStaticGroovyCustomizer standardSandbox = new CompileStaticGroovyCustomizer(FileSandboxExtension.class.getName());
-        try (GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine(standardSandbox)) {
+        final GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine(standardSandbox);
+        try {
             assertThat((long) engine.eval("System.currentTimeMillis()"), greaterThan(0L));
             assertThat((long) engine.eval("System.nanoTime()"), greaterThan(0L));
 
@@ -113,7 +111,8 @@ public class GremlinGroovyScriptEngineFileSandboxTest {
     @Test
     public void shouldPreventMaliciousStuffWithFile() throws Exception {
         final CompileStaticGroovyCustomizer standardSandbox = new CompileStaticGroovyCustomizer(FileSandboxExtension.class.getName());
-        try (GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine(standardSandbox)) {
+        final GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine(standardSandbox);
+        try {
             engine.eval("java.nio.file.FileSystems.getDefault()");
             fail("Should have a compile error because class/method is not white listed");
         } catch (Exception ex) {
@@ -126,13 +125,13 @@ public class GremlinGroovyScriptEngineFileSandboxTest {
     @LoadGraphWith(LoadGraphWith.GraphData.MODERN)
     public void shouldEvalOnGAsTheMethodIsWhiteListed() throws Exception {
         final CompileStaticGroovyCustomizer standardSandbox = new CompileStaticGroovyCustomizer(FileSandboxExtension.class.getName());
-        try (GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine(standardSandbox)) {
-            final Bindings bindings = engine.createBindings();
-            bindings.put("g", g);
-            bindings.put("marko", convertToVertexId(graph, "marko"));
-            assertEquals(g.V(convertToVertexId(graph, "marko")).next(), engine.eval("g.V(marko).next()", bindings));
-            assertEquals(g.V(convertToVertexId(graph, "marko")).out("created").count().next(), engine.eval("g.V(marko).out(\"created\").count().next()", bindings));
-        }
+        final GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine(standardSandbox);
+
+        final Bindings bindings = engine.createBindings();
+        bindings.put("g", g);
+        bindings.put("marko", convertToVertexId(graph, "marko"));
+        assertEquals(g.V(convertToVertexId(graph, "marko")).next(), engine.eval("g.V(marko).next()", bindings));
+        assertEquals(g.V(convertToVertexId(graph, "marko")).out("created").count().next(), engine.eval("g.V(marko).out(\"created\").count().next()", bindings));
     }
 
     private Object convertToVertexId(final Graph graph, final String vertexName) {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b75cfb8e/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineSandboxedStandardTest.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineSandboxedStandardTest.java b/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineSandboxedStandardTest.java
index c3bac74..b203ba8 100644
--- a/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineSandboxedStandardTest.java
+++ b/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineSandboxedStandardTest.java
@@ -61,15 +61,15 @@ public class GremlinGroovyScriptEngineSandboxedStandardTest {
     public void shouldEvalGraphTraversalSource() throws Exception {
         final Graph graph = TinkerFactory.createModern();
         final GraphTraversalSource g = graph.traversal();
-        try (GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine()) {
-            final Bindings bindings = engine.createBindings();
-            bindings.put("g", g);
-            bindings.put("marko", convertToVertexId(graph, "marko"));
-            assertEquals(g.V(convertToVertexId(graph, "marko")).next(), engine.eval("g.V(marko).next()", bindings));
-        }
-
-        try (GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine(notSandboxed)) {
-            final Bindings bindings = engine.createBindings();
+        GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine();
+        Bindings bindings = engine.createBindings();
+        bindings.put("g", g);
+        bindings.put("marko", convertToVertexId(graph, "marko"));
+        assertEquals(g.V(convertToVertexId(graph, "marko")).next(), engine.eval("g.V(marko).next()", bindings));
+
+        engine = new GremlinGroovyScriptEngine(notSandboxed);
+        try {
+            bindings = engine.createBindings();
             bindings.put("g", g);
             bindings.put("marko", convertToVertexId(graph, "marko"));
             engine.eval("g.V(marko).next()", bindings);
@@ -79,28 +79,27 @@ public class GremlinGroovyScriptEngineSandboxedStandardTest {
             assertThat(ex.getMessage(), containsString("The variable [g] is undeclared."));
         }
 
-        try (GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine(sandboxed)) {
-            final Bindings bindings = engine.createBindings();
-            bindings.put("g", g);
-            bindings.put("marko", convertToVertexId(graph, "marko"));
-            assertEquals(g.V(convertToVertexId(graph, "marko")).next(), engine.eval("g.V(marko).next()", bindings));
-            assertEquals(g.V(convertToVertexId(graph, "marko")).out("created").count().next(), engine.eval("g.V(marko).out(\"created\").count().next()", bindings));
-        }
+        engine = new GremlinGroovyScriptEngine(sandboxed);
+        bindings = engine.createBindings();
+        bindings.put("g", g);
+        bindings.put("marko", convertToVertexId(graph, "marko"));
+        assertEquals(g.V(convertToVertexId(graph, "marko")).next(), engine.eval("g.V(marko).next()", bindings));
+        assertEquals(g.V(convertToVertexId(graph, "marko")).out("created").count().next(), engine.eval("g.V(marko).out(\"created\").count().next()", bindings));
     }
 
     @Test
     public void shouldEvalGraph() throws Exception {
         final Graph graph = TinkerFactory.createModern();
         final GraphTraversalSource g = graph.traversal();
-        try (GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine()) {
-            final Bindings bindings = engine.createBindings();
-            bindings.put("graph", graph);
-            bindings.put("marko", convertToVertexId(graph, "marko"));
-            assertEquals(graph.vertices(convertToVertexId(graph, "marko")).next(), engine.eval("graph.vertices(marko).next()", bindings));
-        }
-
-        try (GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine(notSandboxed)) {
-            final Bindings bindings = engine.createBindings();
+        GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine();
+        Bindings bindings = engine.createBindings();
+        bindings.put("graph", graph);
+        bindings.put("marko", convertToVertexId(graph, "marko"));
+        assertEquals(graph.vertices(convertToVertexId(graph, "marko")).next(), engine.eval("graph.vertices(marko).next()", bindings));
+
+        engine = new GremlinGroovyScriptEngine(notSandboxed);
+        try {
+            bindings = engine.createBindings();
             bindings.put("graph", graph);
             bindings.put("marko", convertToVertexId(graph, "marko"));
             assertEquals(graph.vertices(convertToVertexId(graph, "marko")).next(), engine.eval("graph.vertices(marko).next()", bindings));
@@ -110,8 +109,9 @@ public class GremlinGroovyScriptEngineSandboxedStandardTest {
             assertThat(ex.getMessage(), containsString("The variable [graph] is undeclared."));
         }
 
-        try (GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine(notSandboxed)) {
-            final Bindings bindings = engine.createBindings();
+        engine = new GremlinGroovyScriptEngine(notSandboxed);
+        try {
+            bindings = engine.createBindings();
             bindings.put("graph", graph);
             bindings.put("x", convertToVertexId(graph, "marko"));
             assertEquals(graph.vertices(convertToVertexId(graph, "marko")).next(), engine.eval("graph.vertices(x).next()", bindings));
@@ -121,19 +121,17 @@ public class GremlinGroovyScriptEngineSandboxedStandardTest {
             assertThat(ex.getMessage(), containsString("The variable [graph] is undeclared."));
         }
 
-        try (GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine(sandboxed)) {
-            final Bindings bindings = engine.createBindings();
-            bindings.put("graph", graph);
-            bindings.put("marko", convertToVertexId(graph, "marko"));
-            assertEquals(graph.vertices(convertToVertexId(graph, "marko")).next(), engine.eval("graph.vertices(marko).next()", bindings));
-        }
-
-        try (GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine(sandboxed)) {
-            final Bindings bindings = engine.createBindings();
-            bindings.put("graph", graph);
-            bindings.put("x", convertToVertexId(graph, "marko"));
-            assertEquals(graph.vertices(convertToVertexId(graph, "marko")).next(), engine.eval("graph.vertices(x).next()", bindings));
-        }
+        engine = new GremlinGroovyScriptEngine(sandboxed);
+        bindings = engine.createBindings();
+        bindings.put("graph", graph);
+        bindings.put("marko", convertToVertexId(graph, "marko"));
+        assertEquals(graph.vertices(convertToVertexId(graph, "marko")).next(), engine.eval("graph.vertices(marko).next()", bindings));
+
+        engine = new GremlinGroovyScriptEngine(sandboxed);
+        bindings = engine.createBindings();
+        bindings.put("graph", graph);
+        bindings.put("x", convertToVertexId(graph, "marko"));
+        assertEquals(graph.vertices(convertToVertexId(graph, "marko")).next(), engine.eval("graph.vertices(x).next()", bindings));
     }
 
     private Object convertToVertexId(final Graph graph, final String vertexName) {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b75cfb8e/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineTinkerPopSandboxTest.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineTinkerPopSandboxTest.java b/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineTinkerPopSandboxTest.java
index c2d555f..fd36eaa 100644
--- a/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineTinkerPopSandboxTest.java
+++ b/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineTinkerPopSandboxTest.java
@@ -40,7 +40,8 @@ public class GremlinGroovyScriptEngineTinkerPopSandboxTest {
     @Test
     public void shouldNotEvalAsTheMethodIsNotWhiteListed() throws Exception {
         final CompileStaticGroovyCustomizer standardSandbox = new CompileStaticGroovyCustomizer(TinkerPopSandboxExtension.class.getName());
-        try (GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine(standardSandbox)) {
+        final GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine(standardSandbox);
+        try {
             engine.eval("java.lang.Math.abs(123)");
             fail("Should have a compile error because class/method is not white listed");
         } catch (Exception ex) {
@@ -54,13 +55,13 @@ public class GremlinGroovyScriptEngineTinkerPopSandboxTest {
         final Graph graph = TinkerFactory.createModern();
         final GraphTraversalSource g = graph.traversal();
         final CompileStaticGroovyCustomizer standardSandbox = new CompileStaticGroovyCustomizer(TinkerPopSandboxExtension.class.getName());
-        try (GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine(standardSandbox)) {
-            final Bindings bindings = engine.createBindings();
-            bindings.put("g", g);
-            bindings.put("marko", convertToVertexId(graph, "marko"));
-            assertEquals(g.V(convertToVertexId(graph, "marko")).next(), engine.eval("g.V(marko).next()", bindings));
-            assertEquals(g.V(convertToVertexId(graph, "marko")).out("created").count().next(), engine.eval("g.V(marko).out(\"created\").count().next()", bindings));
-        }
+        final GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine(standardSandbox);
+
+        final Bindings bindings = engine.createBindings();
+        bindings.put("g", g);
+        bindings.put("marko", convertToVertexId(graph, "marko"));
+        assertEquals(g.V(convertToVertexId(graph, "marko")).next(), engine.eval("g.V(marko).next()", bindings));
+        assertEquals(g.V(convertToVertexId(graph, "marko")).out("created").count().next(), engine.eval("g.V(marko).out(\"created\").count().next()", bindings));
     }
 
     private Object convertToVertexId(final Graph graph, final String vertexName) {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b75cfb8e/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineTypeCheckedTest.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineTypeCheckedTest.java b/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineTypeCheckedTest.java
index 70c7b68..6cfb7f4 100644
--- a/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineTypeCheckedTest.java
+++ b/gremlin-groovy/src/test/java/org/apache/tinkerpop/gremlin/groovy/jsr223/GremlinGroovyScriptEngineTypeCheckedTest.java
@@ -37,12 +37,12 @@ public class GremlinGroovyScriptEngineTypeCheckedTest {
     @Test
     public void shouldTypeCheck() throws Exception {
         // with no type checking this should pass
-        try (GremlinGroovyScriptEngine scriptEngine = new GremlinGroovyScriptEngine()) {
-            assertEquals(255, scriptEngine.eval("((Object) new java.awt.Color(255, 255, 255)).getRed()"));
-        }
+        GremlinGroovyScriptEngine scriptEngine = new GremlinGroovyScriptEngine();
+        assertEquals(255, scriptEngine.eval("((Object) new java.awt.Color(255, 255, 255)).getRed()"));
 
         final TypeCheckedGroovyCustomizer provider = new TypeCheckedGroovyCustomizer();
-        try (GremlinGroovyScriptEngine scriptEngine = new GremlinGroovyScriptEngine(provider)) {
+        scriptEngine = new GremlinGroovyScriptEngine(provider);
+        try {
             scriptEngine.eval("((Object) new java.awt.Color(255, 255, 255)).getRed()");
             fail("Should have failed type checking");
         } catch (ScriptException se) {
@@ -56,13 +56,13 @@ public class GremlinGroovyScriptEngineTypeCheckedTest {
     public void shouldTypeCheckWithExtension() throws Exception {
         // with no type checking extension this should pass
         final TypeCheckedGroovyCustomizer providerNoExtension = new TypeCheckedGroovyCustomizer();
-        try (GremlinGroovyScriptEngine scriptEngine = new GremlinGroovyScriptEngine(providerNoExtension)) {
-            assertEquals(255, scriptEngine.eval("def c = new java.awt.Color(255, 255, 255); c.red"));
-        }
+        GremlinGroovyScriptEngine scriptEngine = new GremlinGroovyScriptEngine(providerNoExtension);
+        assertEquals(255, scriptEngine.eval("def c = new java.awt.Color(255, 255, 255); c.red"));
 
         final TypeCheckedGroovyCustomizer providerWithExtension = new TypeCheckedGroovyCustomizer(
                 PrecompiledExtensions.PreventColorUsageExtension.class.getName());
-        try (GremlinGroovyScriptEngine scriptEngine = new GremlinGroovyScriptEngine(providerWithExtension)) {
+        scriptEngine = new GremlinGroovyScriptEngine(providerWithExtension);
+        try {
             scriptEngine.eval("def c = new java.awt.Color(255, 255, 255); c.red");
             fail("Should have failed type checking");
         } catch (ScriptException se) {
@@ -75,15 +75,15 @@ public class GremlinGroovyScriptEngineTypeCheckedTest {
     public void shouldTypeCheckWithMultipleExtension() throws Exception {
         // with no type checking extension this should pass
         final TypeCheckedGroovyCustomizer providerNoExtension = new TypeCheckedGroovyCustomizer();
-        try (GremlinGroovyScriptEngine scriptEngine = new GremlinGroovyScriptEngine(providerNoExtension)) {
-            assertEquals(255, scriptEngine.eval("def c = new java.awt.Color(255, 255, 255); c.red"));
-            assertEquals(1l, scriptEngine.eval("def c = new java.util.concurrent.CountDownLatch(1); c.count"));
-        }
+        GremlinGroovyScriptEngine scriptEngine = new GremlinGroovyScriptEngine(providerNoExtension);
+        assertEquals(255, scriptEngine.eval("def c = new java.awt.Color(255, 255, 255); c.red"));
+        assertEquals(1l, scriptEngine.eval("def c = new java.util.concurrent.CountDownLatch(1); c.count"));
 
         final TypeCheckedGroovyCustomizer providerWithExtension = new TypeCheckedGroovyCustomizer(
                 PrecompiledExtensions.PreventColorUsageExtension.class.getName() +
                         "," + PrecompiledExtensions.PreventCountDownLatchUsageExtension.class.getName());
-        try (GremlinGroovyScriptEngine scriptEngine = new GremlinGroovyScriptEngine(providerWithExtension)) {
+        scriptEngine = new GremlinGroovyScriptEngine(providerWithExtension);
+        try {
             scriptEngine.eval("def c = new java.awt.Color(255, 255, 255); c.red");
             fail("Should have failed type checking");
         } catch (ScriptException se) {
@@ -91,7 +91,8 @@ public class GremlinGroovyScriptEngineTypeCheckedTest {
             assertThat(se.getMessage(), containsString("Method call is not allowed!"));
         }
 
-        try (GremlinGroovyScriptEngine scriptEngine = new GremlinGroovyScriptEngine(providerWithExtension)) {
+        scriptEngine = new GremlinGroovyScriptEngine(providerWithExtension);
+        try {
             scriptEngine.eval("def c = new java.util.concurrent.CountDownLatch(1); c.count");
             fail("Should have failed type checking");
         } catch (ScriptException se) {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b75cfb8e/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/graph-traversal.js
----------------------------------------------------------------------
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/graph-traversal.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/graph-traversal.js
index 901f9b0..edeb2cb 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/graph-traversal.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/graph-traversal.js
@@ -1132,16 +1132,6 @@ class GraphTraversal extends Traversal {
     return this;
   }
   
-  /**
-   * Graph traversal with method.
-   * @param {...Object} args
-   * @returns {GraphTraversal}
-   */
-  with(...args) {
-    this.bytecode.addStep('with', args);
-    return this;
-  }
-  
 }
 
 function callOnEmptyTraversal(fnName, args) {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b75cfb8e/gremlin-python/src/main/jython/gremlin_python/process/graph_traversal.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/process/graph_traversal.py b/gremlin-python/src/main/jython/gremlin_python/process/graph_traversal.py
index a492f9c..d5630c0 100644
--- a/gremlin-python/src/main/jython/gremlin_python/process/graph_traversal.py
+++ b/gremlin-python/src/main/jython/gremlin_python/process/graph_traversal.py
@@ -505,10 +505,6 @@ class GraphTraversal(Traversal):
         self.bytecode.add_step("where", *args)
         return self
 
-    def with(self, *args):
-        self.bytecode.add_step("with", *args)
-        return self
-
 
 class __(object):
     graph_traversal = GraphTraversal

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b75cfb8e/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopConfiguration.java
----------------------------------------------------------------------
diff --git a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopConfiguration.java b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopConfiguration.java
index 9e31225..a8125ea 100644
--- a/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopConfiguration.java
+++ b/hadoop-gremlin/src/main/java/org/apache/tinkerpop/gremlin/hadoop/structure/HadoopConfiguration.java
@@ -98,30 +98,6 @@ public final class HadoopConfiguration extends AbstractConfiguration implements
         }
     }
 
-    /**
-     * @deprecated As of release 3.2.0, replaced by {@link HadoopConfiguration#getGraphReader()}.
-     */
-    @Deprecated
-    public Class<InputFormat<NullWritable, VertexWritable>> getGraphInputFormat() {
-        try {
-            return (Class) Class.forName(this.getString(Constants.GREMLIN_HADOOP_GRAPH_READER));
-        } catch (final ClassNotFoundException e) {
-            throw new RuntimeException(e.getMessage(), e);
-        }
-    }
-
-    /**
-     * @deprecated As of release 3.2.0, replaced by {@link HadoopConfiguration#getGraphWriter()}.
-     */
-    @Deprecated
-    public Class<OutputFormat<NullWritable, VertexWritable>> getGraphOutputFormat() {
-        try {
-            return (Class) Class.forName(this.getString(Constants.GREMLIN_HADOOP_GRAPH_WRITER));
-        } catch (final ClassNotFoundException e) {
-            throw new RuntimeException(e.getMessage(), e);
-        }
-    }
-
     public String getInputLocation() {
         return this.getString(Constants.GREMLIN_HADOOP_INPUT_LOCATION);
     }


[07/47] tinkerpop git commit: TINKERPOP-1897 Small rewording

Posted by sp...@apache.org.
TINKERPOP-1897 Small rewording


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

Branch: refs/heads/TINKERPOP-1967
Commit: c125fc9892fb786466cc0754b51761eb1c982c7a
Parents: 9c3d0f0
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Thu Mar 15 00:00:07 2018 +0100
Committer: Florian Hockmann <fh...@florian-hockmann.de>
Committed: Mon Jun 4 15:57:29 2018 +0200

----------------------------------------------------------------------
 docs/src/reference/gremlin-applications.asciidoc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c125fc98/docs/src/reference/gremlin-applications.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/reference/gremlin-applications.asciidoc b/docs/src/reference/gremlin-applications.asciidoc
index e0896ef..273e5c7 100644
--- a/docs/src/reference/gremlin-applications.asciidoc
+++ b/docs/src/reference/gremlin-applications.asciidoc
@@ -1951,7 +1951,7 @@ $ docker run tinkerpop/gremlin-server:x.y.z
 [INFO] GremlinServer$1 - Channel started at port 8182.
 ----
 
-By default, Gremlin Server listens on port 8182. So that port should be exposed if it should be reachable on the host:
+By default, Gremlin Server listens on port 8182. So that port needs to be exposed if it should be reachable on the host:
 
 [source,bash]
 ----


[19/47] tinkerpop git commit: Merge branch 'tp32' into tp33

Posted by sp...@apache.org.
Merge branch 'tp32' into tp33


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

Branch: refs/heads/TINKERPOP-1967
Commit: 00f77fad23f22c79014a2da8343e5f59e6a6f167
Parents: 31a3b44 c2ff47c
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Jun 4 13:28:49 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Jun 4 13:28:49 2018 -0400

----------------------------------------------------------------------
 docs/src/reference/gremlin-applications.asciidoc   |  2 ++
 docs/src/upgrade/release-3.2.x-incubating.asciidoc | 15 +++++++++++++++
 2 files changed, 17 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/00f77fad/docs/src/reference/gremlin-applications.asciidoc
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/00f77fad/docs/src/upgrade/release-3.2.x-incubating.asciidoc
----------------------------------------------------------------------


[34/47] tinkerpop git commit: TINKERPOP-1975 Introduced with() step and Configuring interface

Posted by sp...@apache.org.
TINKERPOP-1975 Introduced with() step and Configuring interface

Moved Parameterizing to the package containing the other step interfaces. Changed interface hierarchy with Parameterizing and Mutating now that Configuring is present. Both of those changes make this body of work a breaking change to existing APIs though it should really only affect graph providers and even then the fix is quite simple as described in the upgrade documentation.


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

Branch: refs/heads/TINKERPOP-1967
Commit: 160aef85649de26da94b54f024d7243ebb5de158
Parents: d7843fe
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Thu May 31 12:55:13 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Jun 5 06:34:49 2018 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  4 ++
 docker/hadoop/Dockerfile                        | 25 -------
 docs/src/reference/the-traversal.asciidoc       | 30 ++++++--
 docs/src/upgrade/release-3.4.x.asciidoc         | 49 +++++++++++++
 .../tinkerpop/gremlin/jsr223/CoreImports.java   |  4 ++
 .../step/map/PageRankVertexProgramStep.java     | 75 ++++++++++++++++++--
 .../step/map/PeerPressureVertexProgramStep.java | 74 +++++++++++++++++--
 .../process/traversal/Parameterizing.java       | 37 ----------
 .../traversal/dsl/graph/GraphTraversal.java     | 24 ++++++-
 .../process/traversal/step/Configuring.java     | 41 +++++++++++
 .../process/traversal/step/Mutating.java        |  5 +-
 .../process/traversal/step/Parameterizing.java  | 39 ++++++++++
 .../process/traversal/step/filter/DropStep.java |  9 ++-
 .../traversal/step/map/AddEdgeStartStep.java    |  6 +-
 .../process/traversal/step/map/AddEdgeStep.java |  7 +-
 .../traversal/step/map/AddVertexStartStep.java  |  7 +-
 .../traversal/step/map/AddVertexStep.java       |  6 +-
 .../traversal/step/map/EdgeOtherVertexStep.java | 15 +++-
 .../traversal/step/map/EdgeVertexStep.java      | 15 +++-
 .../process/traversal/step/map/GraphStep.java   | 15 +++-
 .../traversal/step/map/PropertiesStep.java      | 15 +++-
 .../process/traversal/step/map/VertexStep.java  | 15 +++-
 .../step/sideEffect/AddPropertyStep.java        |  9 +--
 .../process/traversal/step/util/Parameters.java |  2 +
 .../strategy/decoration/ElementIdStrategy.java  |  2 +-
 .../strategy/decoration/PartitionStrategy.java  |  6 +-
 .../traversal/dsl/graph/GraphTraversalTest.java |  2 +-
 .../Process/Traversal/GraphTraversal.cs         |  4 +-
 gremlin-javascript/glv/generate.groovy          |  3 +-
 .../lib/process/graph-traversal.js              |  2 +-
 gremlin-python/glv/generate.groovy              |  1 +
 .../gremlin_python/process/graph_traversal.py   |  2 +-
 .../traversal/step/map/PageRankTest.java        | 41 +++++++++++
 .../traversal/step/map/PeerPressureTest.java    | 31 +++++++-
 34 files changed, 498 insertions(+), 124 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 14b084c..15e12fd 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -25,6 +25,10 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima
 
 This release also includes changes from <<release-3-3-3, 3.3.3>>.
 
+* Moved `Parameterizing` interface to the `org.apache.tinkerpop.gremlin.process.traversal.step` package with other marker interfaces of its type.
+* Replaced `Parameterizing.addPropertyMutations()` with `Configuring.configure()`.
+* Changed interface hierarchy for `Parameterizing` and `Mutating` interfaces as they are tightly related.
+* Introduced the `with()` step modulator which can supply configuration options to `Configuring` steps.
 * Added `supportsUpsert()` option to `VertexFeatures` and `EdgeFeatures`.
 * `min()` and `max()` now support all types implementing `Comparable`.
 * Change the `toString()` of `Path` to be standardized as other graph elements are.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/docker/hadoop/Dockerfile
----------------------------------------------------------------------
diff --git a/docker/hadoop/Dockerfile b/docker/hadoop/Dockerfile
deleted file mode 100644
index 86b2598..0000000
--- a/docker/hadoop/Dockerfile
+++ /dev/null
@@ -1,25 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-FROM tinkerpop:base
-
-MAINTAINER Daniel Kuppitz <me...@gremlin.guru>
-
-ENV HADOOP_VERSION 2.7.2
-
-COPY install.sh /usr/local/sbin/install-hadoop.sh
-RUN /usr/local/sbin/install-hadoop.sh

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/docs/src/reference/the-traversal.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/reference/the-traversal.asciidoc b/docs/src/reference/the-traversal.asciidoc
index b3e5ef5..0d7d67f 100644
--- a/docs/src/reference/the-traversal.asciidoc
+++ b/docs/src/reference/the-traversal.asciidoc
@@ -1705,11 +1705,15 @@ g = graph.traversal().withComputer()
 g.V().pageRank().by('pageRank').values('pageRank')
 g.V().hasLabel('person').
   pageRank().
-    by(outE('knows')).
-    by('friendRank').
+    with(PageRank.EDGES, __.outE('knows')).
+    with(PageRank.PROPERTY_NAME, 'friendRank').
   order().by('friendRank',desc).valueMap('name','friendRank')
 ----
 
+Note the use of the `with()` modulating step which provides configuration options to the algorithm. It takes
+configuration keys from the static `PageRank` inner class on `PageRankVertexProgramStep` and is automatically
+imported to the Gremlin Console.
+
 The <<explain-step,`explain()`>>-step can be used to understand how the traversal is compiled into multiple `GraphComputer` jobs.
 
 [gremlin-groovy,modern]
@@ -1717,8 +1721,8 @@ The <<explain-step,`explain()`>>-step can be used to understand how the traversa
 g = graph.traversal().withComputer()
 g.V().hasLabel('person').
   pageRank().
-    by(outE('knows')).
-    by('friendRank').
+    with(PageRank.EDGES, __.outE('knows')).
+    with(PageRank.PROPERTY_NAME, 'friendRank').
   order().by('friendRank',desc).valueMap('name','friendRank').explain()
 ----
 
@@ -1812,10 +1816,17 @@ IMPORTANT: The `peerPressure()`-step is a `VertexComputing`-step and as such, ca
 g = graph.traversal().withComputer()
 g.V().peerPressure().by('cluster').values('cluster')
 g.V().hasLabel('person').
-  peerPressure().by('cluster').
-  group().by('cluster').by('name')
+  peerPressure().
+    with(PeerPressure.PROPERTY_NAME, 'cluster').
+  group().
+    by('cluster').
+    by('name')
 ----
 
+Note the use of the `with()` modulating step which provides configuration options to the algorithm. It takes
+configuration keys from the static `PeerPressure` inner class on `PeerPressureVertexProgramStep` and is automatically
+imported to the Gremlin Console.
+
 *Additional References*
 
 link:++http://tinkerpop.apache.org/javadocs/x.y.z/core/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.html#peerPressure--++[`peerPressure()`]
@@ -2970,6 +2981,13 @@ link:++http://tinkerpop.apache.org/javadocs/x.y.z/core/org/apache/tinkerpop/grem
 link:++http://tinkerpop.apache.org/javadocs/x.y.z/core/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.html#where-org.apache.tinkerpop.gremlin.process.traversal.Traversal-++[`where(Traversal)`],
 link:++http://tinkerpop.apache.org/javadocs/x.y.z/core/org/apache/tinkerpop/gremlin/process/traversal/P.html++[`P`]
 
+[[with-step]]
+=== With Step
+
+The `with()`-step is not an actual step, but is instead a "step modulator" which modifies the behavior of the step
+prior to it. The `with()`-step provides additional "configuration" information to steps that implement the `Configuring`
+interface. Steps that allow for this type of modulation will explicitly state so in their documentation.
+
 [[a-note-on-predicates]]
 == A Note on Predicates
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/docs/src/upgrade/release-3.4.x.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/upgrade/release-3.4.x.asciidoc b/docs/src/upgrade/release-3.4.x.asciidoc
index 3c881c3..f99a6d5 100644
--- a/docs/src/upgrade/release-3.4.x.asciidoc
+++ b/docs/src/upgrade/release-3.4.x.asciidoc
@@ -29,6 +29,42 @@ Please see the link:https://github.com/apache/tinkerpop/blob/3.4.0/CHANGELOG.asc
 
 === Upgrading for Users
 
+==== with() Step
+
+This version of TinkerPop introduces the `with()` step to Gremlin. It isn't really a step but is instead a step
+modulator. This modulator allows the step it is modifying to accept configurations that can be used to alter the
+behavior of the step itself. A good example of its usage is shown with the revised syntax of the `pageRank()` step
+which now uses `with()` to replace the old `by()` options:
+
+[groovy]
+----
+g.V().hasLabel('person').
+  pageRank().
+    with(PageRank.EDGES, __.outE('knows')).
+    with(PageRank.PROPERTY_NAME, 'friendRank').
+  order().
+    by('friendRank',desc).
+  valueMap('name','friendRank')
+----
+
+A similar change was made for `peerPressure()` step:
+
+[groovy]
+----
+g.V().hasLabel('person').
+  peerPressure().
+    with(PeerPressure.PROPERTY_NAME, 'cluster').
+  group().
+    by('cluster').
+    by('name')
+----
+
+Note that the `by()` modulators still work, but should be considered deprecated and open for removal in a future
+release where breaking changes are allowed.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1975[TINKERPOP-1975],
+link:http://tinkerpop.apache.org/docs/current/reference/#with-step[Reference Documentation]
+
 ==== Removal of Giraph Support
 
 Support for Giraph has been removed as of this version. There were a number of reasons for this decision which were
@@ -198,6 +234,19 @@ See: link:https://issues.apache.org/jira/browse/TINKERPOP-1522[TINKERPOP-1522]
 
 ==== Graph Database Providers
 
+===== Configuring Interface
+
+There were some changes to interfaces that were related to `Step`. A new `Configuring` interface was added that was
+helpful in the implementation of the `with()` step modulator. This new interface extends the `Parameterizing` interface
+(which moved to the `org.apache.tinkerpop.gremlin.process.traversal.step` package with the other step interfaces) and
+in turn is extended by the `Mutating` interface. Making this change meant that the `Mutating.addPropertyMutations()`
+method could be removed in favor of the new `Configuring.configure()` method.
+
+All of the changes above basically mean, that if the `Mutating` interface was being used in prior versions, the
+`addPropertyMutations()` method simply needs to be changed to `configure()`.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-1975[TINKERPOP-1975]
+
 ===== Removed hadoop-gremlin Test Artifact
 
 The `hadoop-gremlin` module no longer generates a test jar that can be used as a test dependency in other modules.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java
index 8839dcd..6158285 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/jsr223/CoreImports.java
@@ -48,6 +48,8 @@ import org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankMa
 import org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankVertexProgram;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.MemoryTraversalSideEffects;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.TraversalVertexProgram;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.PageRankVertexProgramStep;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.PeerPressureVertexProgramStep;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.optimization.GraphFilterStrategy;
 import org.apache.tinkerpop.gremlin.process.remote.RemoteConnection;
@@ -258,8 +260,10 @@ public final class CoreImports {
         CLASS_IMPORTS.add(ClusterPopulationMapReduce.class);
         CLASS_IMPORTS.add(MemoryTraversalSideEffects.class);
         CLASS_IMPORTS.add(PeerPressureVertexProgram.class);
+        CLASS_IMPORTS.add(PeerPressureVertexProgramStep.PeerPressure.class);
         CLASS_IMPORTS.add(PageRankMapReduce.class);
         CLASS_IMPORTS.add(PageRankVertexProgram.class);
+        CLASS_IMPORTS.add(PageRankVertexProgramStep.PageRank.class);
         CLASS_IMPORTS.add(GraphFilterStrategy.class);
         CLASS_IMPORTS.add(TraversalVertexProgram.class);
         CLASS_IMPORTS.add(VertexProgramStrategy.class);

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PageRankVertexProgramStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PageRankVertexProgramStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PageRankVertexProgramStep.java
index 2f67aeb..1c5b364 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PageRankVertexProgramStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PageRankVertexProgramStep.java
@@ -23,12 +23,16 @@ import org.apache.tinkerpop.gremlin.process.computer.GraphFilter;
 import org.apache.tinkerpop.gremlin.process.computer.Memory;
 import org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankVertexProgram;
 import org.apache.tinkerpop.gremlin.process.computer.traversal.lambda.HaltedTraversersCountTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Configuring;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Parameterizing;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.step.ByModulating;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TimesModulating;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.Parameters;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.process.traversal.util.PureTraversal;
 import org.apache.tinkerpop.gremlin.structure.Edge;
@@ -42,9 +46,12 @@ import java.util.Set;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
+ * @author Stephen Mallette (http://stephen.genoprime.com)
  */
-public final class PageRankVertexProgramStep extends VertexProgramStep implements TraversalParent, ByModulating, TimesModulating {
+public final class PageRankVertexProgramStep extends VertexProgramStep
+        implements TraversalParent, ByModulating, TimesModulating, Configuring {
 
+    private Parameters parameters = new Parameters();
     private PureTraversal<Vertex, Edge> edgeTraversal;
     private String pageRankProperty = PageRankVertexProgram.PAGE_RANK;
     private int times = 20;
@@ -53,23 +60,59 @@ public final class PageRankVertexProgramStep extends VertexProgramStep implement
     public PageRankVertexProgramStep(final Traversal.Admin traversal, final double alpha) {
         super(traversal);
         this.alpha = alpha;
-        this.modulateBy(__.<Vertex>outE().asAdmin());
+        this.configure(PageRank.EDGES, __.<Vertex>outE().asAdmin());
     }
 
     @Override
+    public void configure(final Object... keyValues) {
+        if (keyValues[0].equals(PageRank.EDGES)) {
+            if (!(keyValues[1] instanceof Traversal))
+                throw new IllegalArgumentException("PageRank.EDGES requires a Traversal as its argument");
+            this.edgeTraversal = new PureTraversal<>(((Traversal<Vertex,Edge>) keyValues[1]).asAdmin());
+            this.integrateChild(this.edgeTraversal.get());
+        } else if (keyValues[0].equals(PageRank.PROPERTY_NAME)) {
+            if (!(keyValues[1] instanceof String))
+                throw new IllegalArgumentException("PageRank.PROPERTY_NAME requires a String as its argument");
+            this.pageRankProperty = (String) keyValues[1];
+        } else if (keyValues[0].equals(PageRank.TIMES)) {
+            if (!(keyValues[1] instanceof Integer))
+                throw new IllegalArgumentException("PageRank.TIMES requires an Integer as its argument");
+            this.times = (int) keyValues[1];
+        }else {
+            this.parameters.set(this, keyValues);
+        }
+    }
+
+    @Override
+    public Parameters getParameters() {
+        return parameters;
+    }
+
+    /**
+     * @deprecated As of release 3.4.0, replaced by {@link #configure(Object...)}
+     */
+    @Deprecated
+    @Override
     public void modulateBy(final Traversal.Admin<?, ?> edgeTraversal) {
-        this.edgeTraversal = new PureTraversal<>((Traversal.Admin<Vertex, Edge>) edgeTraversal);
-        this.integrateChild(this.edgeTraversal.get());
+        configure(PageRank.EDGES, edgeTraversal);
     }
 
+    /**
+     * @deprecated As of release 3.4.0, replaced by {@link #configure(Object...)}
+     */
+    @Deprecated
     @Override
     public void modulateBy(final String pageRankProperty) {
-        this.pageRankProperty = pageRankProperty;
+        configure(PageRank.PROPERTY_NAME, pageRankProperty);
     }
 
+    /**
+     * @deprecated As of release 3.4.0, replaced by {@link #configure(Object...)}
+     */
+    @Deprecated
     @Override
     public void modulateTimes(int times) {
-        this.times = times;
+        configure(PageRank.TIMES, times);
     }
 
     @Override
@@ -118,4 +161,24 @@ public final class PageRankVertexProgramStep extends VertexProgramStep implement
     public int hashCode() {
         return super.hashCode() ^ this.edgeTraversal.hashCode() ^ this.pageRankProperty.hashCode() ^ this.times;
     }
+
+    /**
+     * Configuration options to be passed to the {@link GraphTraversal#with(String, Object)} step.
+     */
+    public static class PageRank {
+        /**
+         * Configures number of iterations that the algorithm should run.
+         */
+        public static final String TIMES = Graph.Hidden.hide("tinkerpop.pageRank.times");
+
+        /**
+         * Configures the edge to traverse when calculating the pagerank.
+         */
+        public static final String EDGES = Graph.Hidden.hide("tinkerpop.pageRank.edges");
+
+        /**
+         * Configures the name of the property within which to store the pagerank value.
+         */
+        public static final String PROPERTY_NAME = Graph.Hidden.hide("tinkerpop.pageRank.propertyName");
+    }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PeerPressureVertexProgramStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PeerPressureVertexProgramStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PeerPressureVertexProgramStep.java
index 47d4160..be65f42 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PeerPressureVertexProgramStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/computer/traversal/step/map/PeerPressureVertexProgramStep.java
@@ -25,10 +25,13 @@ import org.apache.tinkerpop.gremlin.process.computer.clustering.peerpressure.Pee
 import org.apache.tinkerpop.gremlin.process.computer.traversal.lambda.HaltedTraversersCountTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategies;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.process.traversal.step.ByModulating;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Configuring;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TimesModulating;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.Parameters;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.process.traversal.util.PureTraversal;
 import org.apache.tinkerpop.gremlin.structure.Edge;
@@ -42,16 +45,44 @@ import java.util.Set;
 
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
+ * @author Stephen Mallette (http://stephen.genoprime.com)
  */
-public final class PeerPressureVertexProgramStep extends VertexProgramStep implements TraversalParent, ByModulating, TimesModulating {
+public final class PeerPressureVertexProgramStep extends VertexProgramStep
+        implements TraversalParent, ByModulating, TimesModulating, Configuring {
 
+    private Parameters parameters = new Parameters();
     private PureTraversal<Vertex, Edge> edgeTraversal;
     private String clusterProperty = PeerPressureVertexProgram.CLUSTER;
     private int times = 30;
 
     public PeerPressureVertexProgramStep(final Traversal.Admin traversal) {
         super(traversal);
-        this.modulateBy(__.<Vertex>outE().asAdmin());
+        this.configure(PeerPressure.EDGES, __.<Vertex>outE().asAdmin());
+    }
+
+    @Override
+    public void configure(final Object... keyValues) {
+        if (keyValues[0].equals(PeerPressureVertexProgramStep.PeerPressure.EDGES)) {
+            if (!(keyValues[1] instanceof Traversal))
+                throw new IllegalArgumentException("PeerPressure.EDGES requires a Traversal as its argument");
+            this.edgeTraversal = new PureTraversal<>(((Traversal<Vertex,Edge>) keyValues[1]).asAdmin());
+            this.integrateChild(this.edgeTraversal.get());
+        } else if (keyValues[0].equals(PeerPressureVertexProgramStep.PeerPressure.PROPERTY_NAME)) {
+            if (!(keyValues[1] instanceof String))
+                throw new IllegalArgumentException("PeerPressure.PROPERTY_NAME requires a String as its argument");
+            this.clusterProperty = (String) keyValues[1];
+        } else if (keyValues[0].equals(PeerPressureVertexProgramStep.PeerPressure.TIMES)) {
+            if (!(keyValues[1] instanceof Integer))
+                throw new IllegalArgumentException("PeerPressure.TIMES requires an Integer as its argument");
+            this.times = (int) keyValues[1];
+        }else {
+            this.parameters.set(this, keyValues);
+        }
+    }
+
+    @Override
+    public Parameters getParameters() {
+        return parameters;
     }
 
     @Override
@@ -59,20 +90,31 @@ public final class PeerPressureVertexProgramStep extends VertexProgramStep imple
         return super.hashCode() ^ this.edgeTraversal.hashCode() ^ this.clusterProperty.hashCode() ^ this.times;
     }
 
+    /**
+     * @deprecated As of release 3.4.0, replaced by {@link #configure(Object...)}
+     */
+    @Deprecated
     @Override
     public void modulateBy(final Traversal.Admin<?, ?> edgeTraversal) {
-        this.edgeTraversal = new PureTraversal<>((Traversal.Admin<Vertex, Edge>) edgeTraversal);
-        this.integrateChild(this.edgeTraversal.get());
+        configure(PeerPressure.EDGES, edgeTraversal);
     }
 
+    /**
+     * @deprecated As of release 3.4.0, replaced by {@link #configure(Object...)}
+     */
+    @Deprecated
     @Override
     public void modulateBy(final String clusterProperty) {
-        this.clusterProperty = clusterProperty;
+        configure(PeerPressure.PROPERTY_NAME, clusterProperty);
     }
 
+    /**
+     * @deprecated As of release 3.4.0, replaced by {@link #configure(Object...)}
+     */
+    @Deprecated
     @Override
     public void modulateTimes(int times) {
-        this.times = times;
+        configure(PeerPressure.TIMES, times);
     }
 
     @Override
@@ -115,4 +157,24 @@ public final class PeerPressureVertexProgramStep extends VertexProgramStep imple
         super.setTraversal(parentTraversal);
         this.integrateChild(this.edgeTraversal.get());
     }
+
+    /**
+     * Configuration options to be passed to the {@link GraphTraversal#with(String, Object)} step.
+     */
+    public static class PeerPressure {
+        /**
+         * Configures number of iterations that the algorithm should run.
+         */
+        public static final String TIMES = Graph.Hidden.hide("tinkerpop.peerPressure.times");
+
+        /**
+         * Configures the edge to traverse when determining clusters.
+         */
+        public static final String EDGES = Graph.Hidden.hide("tinkerpop.peerPressure.edges");
+
+        /**
+         * Configures the name of the property within which to store the cluster value.
+         */
+        public static final String PROPERTY_NAME = Graph.Hidden.hide("tinkerpop.peerPressure.propertyName");
+    }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Parameterizing.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Parameterizing.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Parameterizing.java
deleted file mode 100644
index 9b7e088..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Parameterizing.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.traversal;
-
-import org.apache.tinkerpop.gremlin.process.traversal.step.util.Parameters;
-
-/**
- * An interface for {@link Step} implementations that hold a {@link Parameters} object, which fold in arguments from
- * other steps. It is typically used on mutating steps, such as {@code addV()}, where calls to {@code property(k,v)}
- * are folded in as parameters to that add vertex step.
- *
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- * @author Stephen Mallette (http://stephen.genoprime.com)
- */
-public interface Parameterizing {
-
-    /**
-     * Gets the parameters on the step.
-     */
-    public Parameters getParameters();
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java
----------------------------------------------------------------------
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 0fd3599..7d1e7e4 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
@@ -36,6 +36,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.lambda.LoopTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.lambda.PredicateTraverser;
 import org.apache.tinkerpop.gremlin.process.traversal.lambda.TrueTraversal;
 import org.apache.tinkerpop.gremlin.process.traversal.step.ByModulating;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Configuring;
 import org.apache.tinkerpop.gremlin.process.traversal.step.FromToModulating;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Mutating;
 import org.apache.tinkerpop.gremlin.process.traversal.step.TimesModulating;
@@ -2074,10 +2075,10 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
         final Step endStep = this.asAdmin().getEndStep();
         if ((endStep instanceof AddVertexStep || endStep instanceof AddEdgeStep || endStep instanceof AddVertexStartStep || endStep instanceof AddEdgeStartStep) &&
                 keyValues.length == 0 && null == cardinality) {
-            ((Mutating) endStep).addPropertyMutations(key, value);
+            ((Mutating) endStep).configure(key, value);
         } else {
             this.asAdmin().addStep(new AddPropertyStep(this.asAdmin(), cardinality, key, value));
-            ((AddPropertyStep) this.asAdmin().getEndStep()).addPropertyMutations(keyValues);
+            ((AddPropertyStep) this.asAdmin().getEndStep()).configure(keyValues);
         }
         return this;
     }
@@ -2496,6 +2497,24 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
         return this.asAdmin().addStep(new LambdaCollectingBarrierStep<>(this.asAdmin(), (Consumer) barrierConsumer, Integer.MAX_VALUE));
     }
 
+    //// WITH-MODULATOR
+
+    /**
+     * Provides a configuration to a step in the form of a key and value pair. The key of the configuration must be
+     * step specific and therefore a configuration could be supplied that is not known to be valid until execution.
+     *
+     * @param key the key of the configuration to apply to a step
+     * @param value the value of the configuration to apply to a step
+     * @return the traversal with a modulated step
+     * @see <a href="http://tinkerpop.apache.org/docs/${project.version}/reference/#with-step" target="_blank">Reference Documentation - With Step</a>
+     * @since 3.4.0
+     */
+    public default GraphTraversal<S,E> with(final String key, final Object value) {
+        this.asAdmin().getBytecode().addStep(Symbols.with, key, value);
+        final Object[] configPair = { key, value };
+        ((Configuring) this.asAdmin().getEndStep()).configure(configPair);
+        return this;
+    }
 
     //// BY-MODULATORS
 
@@ -2801,6 +2820,7 @@ public interface GraphTraversal<S, E> extends Traversal<S, E> {
         public static final String program = "program";
 
         public static final String by = "by";
+        public static final String with = "with";
         public static final String times = "times";
         public static final String as = "as";
         public static final String option = "option";

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Configuring.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Configuring.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Configuring.java
new file mode 100644
index 0000000..4ac6280
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Configuring.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.process.traversal.step;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.Parameters;
+
+/**
+ * Identifies a {@link Step} as one that can accept configurations via the {@link GraphTraversal#with(String, Object)}
+ * step modulator. The nature of the configuration allowed is specific to the implementation.
+ *
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public interface Configuring extends Parameterizing {
+
+    /**
+     * Accept a configuration to the {@link Step}. Note that this interface extends {@link Parameterizing} and so
+     * there is an expectation that the {@link Step} implementation will have a {@link Parameters} instance that will
+     * house any values passed to this method. Storing these configurations in {@link Parameters} is not a requirement
+     * however, IF the configuration is an expected option for the step and can be stored on a member field that can
+     * be accessed on the step by more direct means (i.e. like a getter method).
+     */
+    public void configure(final Object... keyValues);
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Mutating.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Mutating.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Mutating.java
index 50e415a..14553d9 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Mutating.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Mutating.java
@@ -28,13 +28,10 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.Event;
  * @author Stephen Mallette (http://stephen.genoprime.com)
  * @author Matt Frantz (http://github.com/mhfrantz)
  */
-public interface Mutating<E extends Event> {
+public interface Mutating<E extends Event> extends Configuring {
 
     /**
      * Gets the callback registry for events that the step raises.
      */
     public CallbackRegistry<E> getMutatingCallbackRegistry();
-
-    public void addPropertyMutations(final Object... keyValues);
-
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Parameterizing.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Parameterizing.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Parameterizing.java
new file mode 100644
index 0000000..9d8dc22
--- /dev/null
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Parameterizing.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tinkerpop.gremlin.process.traversal.step;
+
+import org.apache.tinkerpop.gremlin.process.traversal.Step;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.Parameters;
+
+/**
+ * An interface for {@link Step} implementations that hold a {@link Parameters} object, which fold in arguments from
+ * other steps. It is typically used on mutating steps, such as {@code addV()}, where calls to {@code property(k,v)}
+ * are folded in as parameters to that add vertex step, but it may be used for any step that could benefit from
+ * modulation.
+ *
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ * @author Stephen Mallette (http://stephen.genoprime.com)
+ */
+public interface Parameterizing {
+
+    /**
+     * Gets the parameters on the step.
+     */
+    public Parameters getParameters();
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DropStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DropStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DropStep.java
index cd95e48..e7e14bb 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DropStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/filter/DropStep.java
@@ -21,6 +21,7 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.filter;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Mutating;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.Parameters;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.CallbackRegistry;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.Event;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.event.ListCallbackRegistry;
@@ -94,7 +95,13 @@ public final class DropStep<S> extends FilterStep<S> implements Mutating<Event>
     /**
      * This method doesn't do anything as {@code drop()} doesn't take property mutation arguments.
      */
-    public void addPropertyMutations(final Object... keyValues) {
+    @Override
+    public void configure(final Object... keyValues) {
         // do nothing
     }
+
+    @Override
+    public Parameters getParameters() {
+        return Parameters.EMPTY;
+    }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStartStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStartStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStartStep.java
index 73f69a0..c6a2ef1 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStartStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStartStep.java
@@ -19,7 +19,7 @@
 
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
-import org.apache.tinkerpop.gremlin.process.traversal.Parameterizing;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Parameterizing;
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
@@ -51,7 +51,7 @@ import java.util.Set;
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public final class AddEdgeStartStep extends AbstractStep<Edge, Edge>
-        implements Mutating<Event.EdgeAddedEvent>, TraversalParent, Parameterizing, Scoping, FromToModulating {
+        implements Mutating<Event.EdgeAddedEvent>, TraversalParent, Scoping, FromToModulating {
 
     private static final String FROM = Graph.Hidden.hide("from");
     private static final String TO = Graph.Hidden.hide("to");
@@ -86,7 +86,7 @@ public final class AddEdgeStartStep extends AbstractStep<Edge, Edge>
     }
 
     @Override
-    public void addPropertyMutations(final Object... keyValues) {
+    public void configure(final Object... keyValues) {
         this.parameters.set(this, keyValues);
     }
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStep.java
index 81afd03..27197f4 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddEdgeStep.java
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
-import org.apache.tinkerpop.gremlin.process.traversal.Parameterizing;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Parameterizing;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.FromToModulating;
@@ -37,7 +37,6 @@ import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.Attachable;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
-import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory;
 import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
 
 import java.util.List;
@@ -48,7 +47,7 @@ import java.util.Set;
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
 public final class AddEdgeStep<S> extends MapStep<S, Edge>
-        implements Mutating<Event.EdgeAddedEvent>, TraversalParent, Parameterizing, Scoping, FromToModulating {
+        implements Mutating<Event.EdgeAddedEvent>, TraversalParent, Scoping, FromToModulating {
 
     private static final String FROM = Graph.Hidden.hide("from");
     private static final String TO = Graph.Hidden.hide("to");
@@ -82,7 +81,7 @@ public final class AddEdgeStep<S> extends MapStep<S, Edge>
     }
 
     @Override
-    public void addPropertyMutations(final Object... keyValues) {
+    public void configure(final Object... keyValues) {
         this.parameters.set(this, keyValues);
     }
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java
index 920fa45..f47e631 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStartStep.java
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
-import org.apache.tinkerpop.gremlin.process.traversal.Parameterizing;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Parameterizing;
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
@@ -37,7 +37,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementExce
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
-import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory;
 
 import java.util.List;
 import java.util.Set;
@@ -47,7 +46,7 @@ import java.util.Set;
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
 public final class AddVertexStartStep extends AbstractStep<Vertex, Vertex>
-        implements Mutating<Event.VertexAddedEvent>, TraversalParent, Parameterizing, Scoping {
+        implements Mutating<Event.VertexAddedEvent>, TraversalParent, Scoping {
 
     private Parameters parameters = new Parameters();
     private boolean first = true;
@@ -79,7 +78,7 @@ public final class AddVertexStartStep extends AbstractStep<Vertex, Vertex>
     }
 
     @Override
-    public void addPropertyMutations(final Object... keyValues) {
+    public void configure(final Object... keyValues) {
         this.parameters.set(this, keyValues);
     }
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStep.java
index 13e2fc8..0feecec 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/AddVertexStep.java
@@ -18,7 +18,6 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
-import org.apache.tinkerpop.gremlin.process.traversal.Parameterizing;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Mutating;
@@ -33,7 +32,6 @@ import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequire
 import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
-import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedFactory;
 
 import java.util.List;
 import java.util.Set;
@@ -43,7 +41,7 @@ import java.util.Set;
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
 public final class AddVertexStep<S> extends MapStep<S, Vertex>
-        implements Mutating<Event.VertexAddedEvent>, TraversalParent, Parameterizing, Scoping {
+        implements Mutating<Event.VertexAddedEvent>, TraversalParent, Scoping {
 
     private Parameters parameters = new Parameters();
     private CallbackRegistry<Event.VertexAddedEvent> callbackRegistry;
@@ -74,7 +72,7 @@ public final class AddVertexStep<S> extends MapStep<S, Vertex>
     }
 
     @Override
-    public void addPropertyMutations(final Object... keyValues) {
+    public void configure(final Object... keyValues) {
         this.parameters.set(this, keyValues);
     }
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/EdgeOtherVertexStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/EdgeOtherVertexStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/EdgeOtherVertexStep.java
index 3a5a73b..a53dd50 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/EdgeOtherVertexStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/EdgeOtherVertexStep.java
@@ -20,6 +20,8 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Configuring;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.Parameters;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
@@ -32,7 +34,8 @@ import java.util.Set;
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public class EdgeOtherVertexStep extends MapStep<Edge, Vertex> {
+public class EdgeOtherVertexStep extends MapStep<Edge, Vertex> implements Configuring {
+    protected Parameters parameters = new Parameters();
 
     public EdgeOtherVertexStep(final Traversal.Admin traversal) {
         super(traversal);
@@ -52,6 +55,16 @@ public class EdgeOtherVertexStep extends MapStep<Edge, Vertex> {
     }
 
     @Override
+    public Parameters getParameters() {
+        return this.parameters;
+    }
+
+    @Override
+    public void configure(final Object... keyValues) {
+        this.parameters.set(null, keyValues);
+    }
+
+    @Override
     public Set<TraverserRequirement> getRequirements() {
         return Collections.singleton(TraverserRequirement.PATH);
     }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/EdgeVertexStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/EdgeVertexStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/EdgeVertexStep.java
index 8bef835..c15c52a 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/EdgeVertexStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/EdgeVertexStep.java
@@ -20,6 +20,8 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Configuring;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.Parameters;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Edge;
@@ -33,8 +35,9 @@ import java.util.Set;
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public class EdgeVertexStep extends FlatMapStep<Edge, Vertex> implements AutoCloseable {
+public class EdgeVertexStep extends FlatMapStep<Edge, Vertex> implements AutoCloseable, Configuring {
 
+    protected Parameters parameters = new Parameters();
     protected Direction direction;
 
     public EdgeVertexStep(final Traversal.Admin traversal, final Direction direction) {
@@ -43,6 +46,16 @@ public class EdgeVertexStep extends FlatMapStep<Edge, Vertex> implements AutoClo
     }
 
     @Override
+    public Parameters getParameters() {
+        return this.parameters;
+    }
+
+    @Override
+    public void configure(final Object... keyValues) {
+        this.parameters.set(null, keyValues);
+    }
+
+    @Override
     protected Iterator<Vertex> flatMap(final Traverser.Admin<Edge> traverser) {
         return traverser.get().vertices(this.direction);
     }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStep.java
index e40271c..345eb42 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStep.java
@@ -24,9 +24,11 @@ import org.apache.tinkerpop.gremlin.process.traversal.Contains;
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Configuring;
 import org.apache.tinkerpop.gremlin.process.traversal.step.GraphComputing;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.HasContainer;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.Parameters;
 import org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementException;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Element;
@@ -46,8 +48,9 @@ import java.util.function.Supplier;
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  * @author Pieter Martin
  */
-public class GraphStep<S, E extends Element> extends AbstractStep<S, E> implements GraphComputing, AutoCloseable {
+public class GraphStep<S, E extends Element> extends AbstractStep<S, E> implements GraphComputing, AutoCloseable, Configuring {
 
+    protected Parameters parameters = new Parameters();
     protected final Class<E> returnClass;
     protected Object[] ids;
     protected transient Supplier<Iterator<E>> iteratorSupplier;
@@ -71,6 +74,16 @@ public class GraphStep<S, E extends Element> extends AbstractStep<S, E> implemen
         return StringFactory.stepString(this, this.returnClass.getSimpleName().toLowerCase(), Arrays.toString(this.ids));
     }
 
+    @Override
+    public Parameters getParameters() {
+        return this.parameters;
+    }
+
+    @Override
+    public void configure(final Object... keyValues) {
+        this.parameters.set(null, keyValues);
+    }
+
     public Class<E> getReturnClass() {
         return this.returnClass;
     }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PropertiesStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PropertiesStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PropertiesStep.java
index cbfc475..7cc193a 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PropertiesStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PropertiesStep.java
@@ -20,6 +20,8 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Configuring;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.Parameters;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.structure.Element;
 import org.apache.tinkerpop.gremlin.structure.PropertyType;
@@ -33,8 +35,9 @@ import java.util.Set;
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public class PropertiesStep<E> extends FlatMapStep<Element, E> implements AutoCloseable {
+public class PropertiesStep<E> extends FlatMapStep<Element, E> implements AutoCloseable, Configuring {
 
+    protected Parameters parameters = new Parameters();
     protected final String[] propertyKeys;
     protected final PropertyType returnType;
 
@@ -45,6 +48,16 @@ public class PropertiesStep<E> extends FlatMapStep<Element, E> implements AutoCl
     }
 
     @Override
+    public Parameters getParameters() {
+        return this.parameters;
+    }
+
+    @Override
+    public void configure(final Object... keyValues) {
+        this.parameters.set(null, keyValues);
+    }
+
+    @Override
     protected Iterator<E> flatMap(final Traverser.Admin<Element> traverser) {
         return this.returnType.equals(PropertyType.VALUE) ?
                 traverser.get().values(this.propertyKeys) :

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexStep.java
index 9ac6d0c..6825736 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexStep.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/VertexStep.java
@@ -20,6 +20,8 @@ package org.apache.tinkerpop.gremlin.process.traversal.step.map;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Configuring;
+import org.apache.tinkerpop.gremlin.process.traversal.step.util.Parameters;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Edge;
@@ -35,8 +37,9 @@ import java.util.Set;
 /**
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
-public class VertexStep<E extends Element> extends FlatMapStep<Vertex, E> implements AutoCloseable {
+public class VertexStep<E extends Element> extends FlatMapStep<Vertex, E> implements AutoCloseable, Configuring {
 
+    protected Parameters parameters = new Parameters();
     private final String[] edgeLabels;
     private Direction direction;
     private final Class<E> returnClass;
@@ -49,6 +52,16 @@ public class VertexStep<E extends Element> extends FlatMapStep<Vertex, E> implem
     }
 
     @Override
+    public Parameters getParameters() {
+        return this.parameters;
+    }
+
+    @Override
+    public void configure(final Object... keyValues) {
+        this.parameters.set(null, keyValues);
+    }
+
+    @Override
     protected Iterator<E> flatMap(final Traverser.Admin<Vertex> traverser) {
         return Vertex.class.isAssignableFrom(this.returnClass) ?
                 (Iterator<E>) traverser.get().vertices(this.direction, this.edgeLabels) :

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/sideEffect/AddPropertyStep.java
----------------------------------------------------------------------
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..04a8414 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
@@ -18,7 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect;
 
-import org.apache.tinkerpop.gremlin.process.traversal.Parameterizing;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Parameterizing;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.step.Mutating;
@@ -37,9 +37,6 @@ import org.apache.tinkerpop.gremlin.structure.T;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
 import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
-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.List;
 import java.util.Set;
@@ -48,7 +45,7 @@ import java.util.Set;
  * @author Marko A. Rodriguez (http://markorodriguez.com)
  */
 public final class AddPropertyStep<S extends Element> extends SideEffectStep<S>
-        implements Mutating<Event.ElementPropertyChangedEvent>, TraversalParent, Parameterizing, Scoping {
+        implements Mutating<Event.ElementPropertyChangedEvent>, TraversalParent, Scoping {
 
     private Parameters parameters = new Parameters();
     private final VertexProperty.Cardinality cardinality;
@@ -76,7 +73,7 @@ public final class AddPropertyStep<S extends Element> extends SideEffectStep<S>
     }
 
     @Override
-    public void addPropertyMutations(final Object... keyValues) {
+    public void configure(final Object... keyValues) {
         this.parameters.set(this, keyValues);
     }
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/Parameters.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/Parameters.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/Parameters.java
index d368322..40d9330 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/Parameters.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/util/Parameters.java
@@ -48,6 +48,8 @@ import java.util.function.Supplier;
  */
 public final class Parameters implements Cloneable, Serializable {
 
+    public static final Parameters EMPTY = new Parameters();
+
     private static final Object[] EMPTY_ARRAY = new Object[0];
 
     private Map<Object, List<Object>> parameters = new HashMap<>();

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategy.java
index c8f9d22..25a2833 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/ElementIdStrategy.java
@@ -21,7 +21,7 @@ package org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration;
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.MapConfiguration;
 import org.apache.tinkerpop.gremlin.process.traversal.P;
-import org.apache.tinkerpop.gremlin.process.traversal.Parameterizing;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Parameterizing;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.step.HasContainerHolder;

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategy.java
index 438d8b2..877c2df 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/decoration/PartitionStrategy.java
@@ -21,7 +21,7 @@ package org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration;
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.MapConfiguration;
 import org.apache.tinkerpop.gremlin.process.traversal.P;
-import org.apache.tinkerpop.gremlin.process.traversal.Parameterizing;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Parameterizing;
 import org.apache.tinkerpop.gremlin.process.traversal.Step;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
@@ -203,7 +203,7 @@ public final class PartitionStrategy extends AbstractTraversalStrategy<Traversal
             // ends up being a Vertex or not.  AddPropertyStep currently chooses to simply not bother
             // to use the additional "property mutations" if the Element being mutated is a Edge or
             // VertexProperty
-            ((Mutating) step).addPropertyMutations(partitionKey, writePartition);
+            ((Mutating) step).configure(partitionKey, writePartition);
 
             if (includeMetaProperties) {
                 // GraphTraversal folds g.addV().property('k','v') to just AddVertexStep/AddVertexStartStep so this
@@ -216,7 +216,7 @@ public final class PartitionStrategy extends AbstractTraversalStrategy<Traversal
                         final VertexProperty.Cardinality cardinality = vertexFeatures.getCardinality((String) k);
                         v.forEach(o -> {
                             final AddPropertyStep addPropertyStep = new AddPropertyStep(traversal, cardinality, k, o);
-                            addPropertyStep.addPropertyMutations(partitionKey, writePartition);
+                            addPropertyStep.configure(partitionKey, writePartition);
                             addPropertyStepsToAppend.add(addPropertyStep);
 
                             // need to remove the parameter from the AddVertex/StartStep because it's now being added

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalTest.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalTest.java
index 6decbe0..9009d0b 100644
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalTest.java
@@ -42,7 +42,7 @@ import static org.junit.Assert.assertEquals;
 public class GraphTraversalTest {
     private static final Logger logger = LoggerFactory.getLogger(GraphTraversalTest.class);
 
-    private static Set<String> NO_GRAPH = new HashSet<>(Arrays.asList("asAdmin", "by", "option", "iterate", "to", "from", "profile", "pageRank", "peerPressure", "program", "none"));
+    private static Set<String> NO_GRAPH = new HashSet<>(Arrays.asList("asAdmin", "by", "with", "option", "iterate", "to", "from", "profile", "pageRank", "peerPressure", "program", "none"));
     private static Set<String> NO_ANONYMOUS = new HashSet<>(Arrays.asList("start", "__"));
     private static Set<String> IGNORES_BYTECODE = new HashSet<>(Arrays.asList("asAdmin", "iterate", "mapValues", "mapKeys"));
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
index bb3d5d8..537cdbe 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
@@ -1679,9 +1679,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the with step to this <see cref="GraphTraversal{SType, EType}" />.
         /// </summary>
-        public GraphTraversal<S, E> With (StepConfiguration modulation)
+        public GraphTraversal<S, E> With (string key, object value)
         {
-            Bytecode.AddStep("with", modulation);
+            Bytecode.AddStep("with", key, value);
             return Wrap<S, E>(this);
         }
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/gremlin-javascript/glv/generate.groovy
----------------------------------------------------------------------
diff --git a/gremlin-javascript/glv/generate.groovy b/gremlin-javascript/glv/generate.groovy
index 8fd22e3..8778e89 100644
--- a/gremlin-javascript/glv/generate.groovy
+++ b/gremlin-javascript/glv/generate.groovy
@@ -28,7 +28,8 @@ import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
 import java.lang.reflect.Modifier
 
 def toJsMap = ["in": "in_",
-               "from": "from_"]
+               "from": "from_",
+               "with": "with_"]
 
 def toJs = { symbol -> toJsMap.getOrDefault(symbol, symbol) }
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/graph-traversal.js
----------------------------------------------------------------------
diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/graph-traversal.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/graph-traversal.js
index 901f9b0..f143542 100644
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/graph-traversal.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/graph-traversal.js
@@ -1137,7 +1137,7 @@ class GraphTraversal extends Traversal {
    * @param {...Object} args
    * @returns {GraphTraversal}
    */
-  with(...args) {
+  with_(...args) {
     this.bytecode.addStep('with', args);
     return this;
   }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/gremlin-python/glv/generate.groovy
----------------------------------------------------------------------
diff --git a/gremlin-python/glv/generate.groovy b/gremlin-python/glv/generate.groovy
index 58d0cd3..57cc9c9 100644
--- a/gremlin-python/glv/generate.groovy
+++ b/gremlin-python/glv/generate.groovy
@@ -30,6 +30,7 @@ def toPythonMap = ["global": "global_",
                    "as": "as_",
                    "in": "in_",
                    "and": "and_",
+                   "with": "with_",
                    "or": "or_",
                    "is": "is_",
                    "not": "not_",

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/gremlin-python/src/main/jython/gremlin_python/process/graph_traversal.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/process/graph_traversal.py b/gremlin-python/src/main/jython/gremlin_python/process/graph_traversal.py
index a492f9c..bb81d87 100644
--- a/gremlin-python/src/main/jython/gremlin_python/process/graph_traversal.py
+++ b/gremlin-python/src/main/jython/gremlin_python/process/graph_traversal.py
@@ -505,7 +505,7 @@ class GraphTraversal(Traversal):
         self.bytecode.add_step("where", *args)
         return self
 
-    def with(self, *args):
+    def with_(self, *args):
         self.bytecode.add_step("with", *args)
         return self
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PageRankTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PageRankTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PageRankTest.java
index 07a2b04..325621e 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PageRankTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PageRankTest.java
@@ -23,6 +23,7 @@ import org.apache.tinkerpop.gremlin.LoadGraphWith;
 import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
 import org.apache.tinkerpop.gremlin.process.GremlinProcessRunner;
 import org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankVertexProgram;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.PageRankVertexProgramStep.PageRank;
 import org.apache.tinkerpop.gremlin.process.traversal.Order;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
@@ -63,6 +64,8 @@ public abstract class PageRankTest extends AbstractGremlinProcessTest {
 
     public abstract Traversal<Vertex, Map<String, List<Object>>> get_g_V_hasLabelXsoftwareX_hasXname_rippleX_pageRankX1X_byXinEXcreatedXX_timesX1X_byXpriorsX_inXcreatedX_unionXboth__identityX_valueMapXname_priorsX();
 
+    public abstract Traversal<Vertex, Map<Object, List<Vertex>>> get_g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_withXPROPERTY_NAME_pageRankXX_withXEDGES_inEXX_withXTIMES_1X_inXcreatedX_groupXmX_byXpageRankX_capXmX();
+
     public abstract Traversal<Vertex, Map<Object, List<Vertex>>> get_g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_byXpageRankX_byXinEX_timesX1X_inXcreatedX_groupXmX_byXpageRankX_capXmX();
 
     @Test
@@ -238,6 +241,39 @@ public abstract class PageRankTest extends AbstractGremlinProcessTest {
         });
     }
 
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_withXPROPERTY_NAME_pageRankXX_withXEDGES_inEXX_withXTIMES_1X_inXcreatedX_groupXmX_byXpageRankX_capXmX() {
+        // [{2.0=[v[4], v[4], v[4], v[4]], 1.0=[v[6], v[6], v[6], v[1], v[1], v[1]], software=[v[5], v[3], v[3], v[3]]}]
+        final Traversal<Vertex, Map<Object, List<Vertex>>> traversal = get_g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_withXPROPERTY_NAME_pageRankXX_withXEDGES_inEXX_withXTIMES_1X_inXcreatedX_groupXmX_byXpageRankX_capXmX();
+        printTraversalForm(traversal);
+        final Map<Object, List<Vertex>> map = traversal.next();
+        assertFalse(traversal.hasNext());
+        assertEquals(3, map.size());
+        assertTrue(map.containsKey("software"));
+        map.forEach((k, v) -> {
+            boolean found = false;
+            if (!k.equals("software") && v.size() == 4) {
+                assertEquals(2.0d, ((Number) k).doubleValue(), 0.01d);
+                assertEquals(4, v.stream().filter(vertex -> vertex.id().equals(convertToVertexId(graph, "josh"))).count());
+                found = true;
+            } else if (v.size() == 6) {
+                assertEquals(1.0d, ((Number) k).doubleValue(), 0.01d);
+                assertEquals(3, v.stream().filter(vertex -> vertex.id().equals(convertToVertexId(graph, "peter"))).count());
+                assertEquals(3, v.stream().filter(vertex -> vertex.id().equals(convertToVertexId(graph, "marko"))).count());
+                found = true;
+            } else if (v.size() == 4) {
+                assertEquals("software", k);
+                assertEquals(3, v.stream().filter(vertex -> vertex.id().equals(convertToVertexId(graph, "lop"))).count());
+                assertEquals(1, v.stream().filter(vertex -> vertex.id().equals(convertToVertexId(graph, "ripple"))).count());
+                found = true;
+            }
+
+            if (!found)
+                fail("There are too many key/values: " + k + "--" + v);
+        });
+    }
+
     public static class Traversals extends PageRankTest {
 
         @Override
@@ -284,5 +320,10 @@ public abstract class PageRankTest extends AbstractGremlinProcessTest {
         public Traversal<Vertex, Map<Object, List<Vertex>>> get_g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_byXpageRankX_byXinEX_timesX1X_inXcreatedX_groupXmX_byXpageRankX_capXmX() {
             return g.V().out("created").group("m").by(T.label).pageRank(1.0).by("pageRank").by(__.inE()).times(1).in("created").group("m").by("pageRank").cap("m");
         }
+
+        @Override
+        public Traversal<Vertex, Map<Object, List<Vertex>>> get_g_V_outXcreatedX_groupXmX_byXlabelX_pageRankX1X_withXPROPERTY_NAME_pageRankXX_withXEDGES_inEXX_withXTIMES_1X_inXcreatedX_groupXmX_byXpageRankX_capXmX() {
+            return g.V().out("created").group("m").by(T.label).pageRank(1.0).with(PageRank.PROPERTY_NAME, "pageRank").with(PageRank.EDGES, __.inE()).with(PageRank.TIMES, 1).in("created").group("m").by("pageRank").cap("m");
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/160aef85/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PeerPressureTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PeerPressureTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PeerPressureTest.java
index f9615d5..c76941b 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PeerPressureTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PeerPressureTest.java
@@ -23,6 +23,7 @@ import org.apache.tinkerpop.gremlin.LoadGraphWith;
 import org.apache.tinkerpop.gremlin.TestHelper;
 import org.apache.tinkerpop.gremlin.process.AbstractGremlinProcessTest;
 import org.apache.tinkerpop.gremlin.process.computer.clustering.peerpressure.PeerPressureVertexProgram;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.step.map.PeerPressureVertexProgramStep.PeerPressure;
 import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
@@ -50,6 +51,8 @@ public abstract class PeerPressureTest extends AbstractGremlinProcessTest {
 
     public abstract Traversal<Vertex, Map<String, List<Object>>> get_g_V_hasXname_rippleX_inXcreatedX_peerPressure_byXoutEX_byXclusterX_repeatXunionXidentity__bothX_timesX2X_dedup_valueMapXname_clusterX();
 
+    public abstract Traversal<Vertex, Map<String, List<Object>>> get_g_V_hasXname_rippleX_inXcreatedX_peerPressure_withXEDGES_outEX_withXPROPERTY_NAME_clusterX_repeatXunionXidentity__bothX_timesX2X_dedup_valueMapXname_clusterX();
+
     @Test
     @LoadGraphWith(MODERN)
     public void g_V_peerPressure() {
@@ -100,7 +103,28 @@ public abstract class PeerPressureTest extends AbstractGremlinProcessTest {
         assertTrue(ids.contains(convertToVertexId("peter")));
     }
 
-
+    @Test
+    @LoadGraphWith(MODERN)
+    public void g_V_hasXname_rippleX_inXcreatedX_peerPressure_withXEDGES_outEX_withXPROPERTY_NAME_clusterX_repeatXunionXidentity__bothX_timesX2X_dedup_valueMapXname_clusterX() {
+        TestHelper.assumeNonDeterministic();
+        final Traversal<Vertex, Map<String, List<Object>>> traversal = get_g_V_hasXname_rippleX_inXcreatedX_peerPressure_withXEDGES_outEX_withXPROPERTY_NAME_clusterX_repeatXunionXidentity__bothX_timesX2X_dedup_valueMapXname_clusterX();
+        printTraversalForm(traversal);
+        final List<Map<String, List<Object>>> results = traversal.toList();
+        assertEquals(6, results.size());
+        final Map<String, Object> clusters = new HashMap<>();
+        results.forEach(m -> clusters.put((String) m.get("name").get(0), m.get("cluster").get(0)));
+        assertEquals(2, results.get(0).size());
+        assertEquals(6, clusters.size());
+        assertEquals(clusters.get("josh"), clusters.get("ripple"));
+        assertEquals(clusters.get("josh"), clusters.get("lop"));
+        final Set<Object> ids = new HashSet<>(clusters.values());
+        assertEquals(4, ids.size());
+        assertTrue(ids.contains(convertToVertexId("marko")));
+        assertTrue(ids.contains(convertToVertexId("vadas")));
+        assertTrue(ids.contains(convertToVertexId("josh")));
+        assertTrue(ids.contains(convertToVertexId("peter")));
+    }
+    
     public static class Traversals extends PeerPressureTest {
 
         @Override
@@ -117,5 +141,10 @@ public abstract class PeerPressureTest extends AbstractGremlinProcessTest {
         public Traversal<Vertex, Map<String, List<Object>>> get_g_V_hasXname_rippleX_inXcreatedX_peerPressure_byXoutEX_byXclusterX_repeatXunionXidentity__bothX_timesX2X_dedup_valueMapXname_clusterX() {
             return g.V().has("name", "ripple").in("created").peerPressure().by(__.outE()).by("cluster").repeat(__.union(__.identity(), __.both())).times(2).dedup().valueMap("name", "cluster");
         }
+
+        @Override
+        public Traversal<Vertex, Map<String, List<Object>>> get_g_V_hasXname_rippleX_inXcreatedX_peerPressure_withXEDGES_outEX_withXPROPERTY_NAME_clusterX_repeatXunionXidentity__bothX_timesX2X_dedup_valueMapXname_clusterX() {
+            return g.V().has("name", "ripple").in("created").peerPressure().with(PeerPressure.EDGES,__.outE()).with(PeerPressure.PROPERTY_NAME, "cluster").repeat(__.union(__.identity(), __.both())).times(2).dedup().valueMap("name", "cluster");
+        }
     }
 }
\ No newline at end of file


[10/47] tinkerpop git commit: Remove verbose log output TINKERPOP-1897

Posted by sp...@apache.org.
Remove verbose log output TINKERPOP-1897


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

Branch: refs/heads/TINKERPOP-1967
Commit: 47f3c1ccd697546ab2e5fd8d3c48904f53da1551
Parents: b829153
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Thu Mar 1 17:19:39 2018 +0100
Committer: Florian Hockmann <fh...@florian-hockmann.de>
Committed: Mon Jun 4 15:57:29 2018 +0200

----------------------------------------------------------------------
 .../src/reference/gremlin-applications.asciidoc | 26 +-------------------
 1 file changed, 1 insertion(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/47f3c1cc/docs/src/reference/gremlin-applications.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/reference/gremlin-applications.asciidoc b/docs/src/reference/gremlin-applications.asciidoc
index 80659af..e0896ef 100644
--- a/docs/src/reference/gremlin-applications.asciidoc
+++ b/docs/src/reference/gremlin-applications.asciidoc
@@ -1946,31 +1946,7 @@ $ docker run tinkerpop/gremlin-server:x.y.z
 -----oOOo-(3)-oOOo-----
 
 [INFO] GremlinServer - Configuring Gremlin Server from conf/gremlin-server.yaml
-[INFO] MetricManager - Configured Metrics ConsoleReporter configured with report interval=180000ms
-[INFO] MetricManager - Configured Metrics CsvReporter configured with report interval=180000ms to fileName=/tmp/gremlin-server-metrics.csv
-[INFO] MetricManager - Configured Metrics JmxReporter configured with domain= and agentId=
-[INFO] MetricManager - Configured Metrics Slf4jReporter configured with interval=180000ms and loggerName=org.apache.tinkerpop.gremlin.server.Settings$Slf4jReporterMetrics
-[INFO] DefaultGraphManager - Graph [graph] was successfully configured via [conf/tinkergraph-empty.properties].
-[INFO] ServerGremlinExecutor - Initialized Gremlin thread pool.  Threads in pool named with pattern gremlin-*
-[INFO] ScriptEngines - Loaded gremlin-groovy ScriptEngine
-[INFO] GremlinExecutor - Initialized gremlin-groovy ScriptEngine with scripts/empty-sample.groovy
-[INFO] ServerGremlinExecutor - Initialized GremlinExecutor and preparing GremlinScriptEngines instances.
-[INFO] ServerGremlinExecutor - Initialized gremlin-groovy GremlinScriptEngine and registered metrics
-[INFO] ServerGremlinExecutor - A GraphTraversalSource is now bound to [g] with graphtraversalsource[tinkergraph[vertices:0 edges:0], standard]
-[INFO] OpLoader - Adding the standard OpProcessor.
-[INFO] OpLoader - Adding the control OpProcessor.
-[INFO] OpLoader - Adding the session OpProcessor.
-[INFO] OpLoader - Adding the traversal OpProcessor.
-[INFO] TraversalOpProcessor - Initialized cache for TraversalOpProcessor with size 1000 and expiration time of 600000 ms
-[INFO] GremlinServer - Executing start up LifeCycleHook
-[INFO] Logger$info - Executed once at startup of Gremlin Server.
-[INFO] GremlinServer - idleConnectionTimeout was set to 0 which resolves to 0 seconds when configuring this value - this feature will be disabled
-[INFO] GremlinServer - keepAliveInterval was set to 0 which resolves to 0 seconds when configuring this value - this feature will be disabled
-[INFO] AbstractChannelizer - Configured application/vnd.gremlin-v1.0+gryo with org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0
-[INFO] AbstractChannelizer - Configured application/vnd.gremlin-v1.0+gryo-stringd with org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0
-[INFO] AbstractChannelizer - Configured application/vnd.gremlin-v1.0+json with org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0
-[INFO] AbstractChannelizer - Configured application/vnd.gremlin-v2.0+json with org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0
-[INFO] AbstractChannelizer - Configured application/json with org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0
+...
 [INFO] GremlinServer$1 - Gremlin Server configured with worker thread pool of 1, gremlin pool of 4 and boss thread pool of 1.
 [INFO] GremlinServer$1 - Channel started at port 8182.
 ----


[06/47] tinkerpop git commit: Remove .docker file activation option for Maven TINKERPOP-1897

Posted by sp...@apache.org.
Remove .docker file activation option for Maven TINKERPOP-1897


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

Branch: refs/heads/TINKERPOP-1967
Commit: 0efeb4a27cb0630cf71165e19681720a8f33ee84
Parents: 80931ce
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Wed May 23 20:33:19 2018 +0200
Committer: Florian Hockmann <fh...@florian-hockmann.de>
Committed: Mon Jun 4 15:57:29 2018 +0200

----------------------------------------------------------------------
 .gitignore                                      |  1 -
 docker/hadoop/Dockerfile                        | 25 ++++++++++++++++++++
 docker/scripts/build.sh                         |  3 ---
 .../developer/development-environment.asciidoc  |  4 +---
 gremlin-console/pom.xml                         |  6 -----
 gremlin-server/pom.xml                          |  6 -----
 pom.xml                                         |  1 -
 7 files changed, 26 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0efeb4a2/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index 10e5b4f..0109f82 100644
--- a/.gitignore
+++ b/.gitignore
@@ -20,7 +20,6 @@ __pycache__/
 *.py[cdo]
 __version__.py
 .glv
-.docker
 settings.xml
 tools/
 [Dd]ebug/

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0efeb4a2/docker/hadoop/Dockerfile
----------------------------------------------------------------------
diff --git a/docker/hadoop/Dockerfile b/docker/hadoop/Dockerfile
new file mode 100644
index 0000000..86b2598
--- /dev/null
+++ b/docker/hadoop/Dockerfile
@@ -0,0 +1,25 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+FROM tinkerpop:base
+
+MAINTAINER Daniel Kuppitz <me...@gremlin.guru>
+
+ENV HADOOP_VERSION 2.7.2
+
+COPY install.sh /usr/local/sbin/install-hadoop.sh
+RUN /usr/local/sbin/install-hadoop.sh

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0efeb4a2/docker/scripts/build.sh
----------------------------------------------------------------------
diff --git a/docker/scripts/build.sh b/docker/scripts/build.sh
index 3d8f0d3..5ef74fc 100755
--- a/docker/scripts/build.sh
+++ b/docker/scripts/build.sh
@@ -67,9 +67,6 @@ touch gremlin-python/.glv
 touch gremlin-dotnet/src/.glv
 touch gremlin-dotnet/test/.glv
 
-rm gremlin-console/.docker
-rm gremlin-server/.docker
-
 # use a custom maven settings.xml
 if [ -r "settings.xml" ]; then
   echo "Copying settings.xml"

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0efeb4a2/docs/src/dev/developer/development-environment.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/dev/developer/development-environment.asciidoc b/docs/src/dev/developer/development-environment.asciidoc
index cb20d4e..ae97d1a 100644
--- a/docs/src/dev/developer/development-environment.asciidoc
+++ b/docs/src/dev/developer/development-environment.asciidoc
@@ -136,9 +136,7 @@ The Docker images can be built from the command line with:
 ----
 mvn clean install -Pdocker-images
 ----
-which enables the "docker-images" Maven profile or in a more automated fashion simply add a `.docker` file to the
-directories of the `gremlin-server` and/or `gremlin-console` modules which will signify to Maven that Docker is present
-in the environment.
+which enables the "docker-images" Maven profile.
 
 
 [[release-environment]]

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0efeb4a2/gremlin-console/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-console/pom.xml b/gremlin-console/pom.xml
index 8e8b357..b5dca0e 100644
--- a/gremlin-console/pom.xml
+++ b/gremlin-console/pom.xml
@@ -338,12 +338,6 @@ limitations under the License.
 
         <profile>
             <id>docker-images</id>
-            <activation>
-                <activeByDefault>false</activeByDefault>
-                <file>
-                    <exists>.docker</exists>
-                </file>
-            </activation>
             <build>
                 <plugins>                    
                     <plugin>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0efeb4a2/gremlin-server/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-server/pom.xml b/gremlin-server/pom.xml
index b2c3435..e361c9e 100644
--- a/gremlin-server/pom.xml
+++ b/gremlin-server/pom.xml
@@ -246,12 +246,6 @@ limitations under the License.
 
         <profile>
             <id>docker-images</id>
-            <activation>
-                <activeByDefault>false</activeByDefault>
-                <file>
-                    <exists>.docker</exists>
-                </file>
-            </activation>
             <build>
                 <plugins>                    
                     <plugin>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0efeb4a2/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 398b931..f2484f8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -349,7 +349,6 @@ limitations under the License.
                         <exclude>**/_bsp/**</exclude>
                         <exclude>DEPENDENCIES</exclude>
                         <exclude>**/.glv</exclude>
-                        <exclude>**/.docker</exclude>
                         <exclude>bin/gremlin.sh</exclude>
                         <exclude>gremlin-console/bin/gremlin.sh</exclude>
                         <exclude>**/Debug/**</exclude>


[12/47] tinkerpop git commit: Replace hardcoded version tags by parsed version TINKERPOP-1897

Posted by sp...@apache.org.
Replace hardcoded version tags by parsed version TINKERPOP-1897


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

Branch: refs/heads/TINKERPOP-1967
Commit: e3c6ddeb30956ed661386b00889bb6e3e0b3c99f
Parents: fd11517
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Sat May 19 11:27:57 2018 +0200
Committer: Florian Hockmann <fh...@florian-hockmann.de>
Committed: Mon Jun 4 15:57:29 2018 +0200

----------------------------------------------------------------------
 gremlin-console/pom.xml | 10 +++++-----
 gremlin-server/pom.xml  | 10 +++++-----
 pom.xml                 |  6 ++++++
 3 files changed, 16 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e3c6ddeb/gremlin-console/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-console/pom.xml b/gremlin-console/pom.xml
index db86d41..8e8b357 100644
--- a/gremlin-console/pom.xml
+++ b/gremlin-console/pom.xml
@@ -367,9 +367,9 @@ limitations under the License.
                                 <goals>
                                     <goal>tag</goal>
                                 </goals>
-                                <configuration>                                                     
-                                    <tag>3.2</tag>
-                                    <skip>${only.when.is.snapshot.used}</skip>                                                     
+                                <configuration>
+                                    <tag>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}</tag>
+                                    <skip>${only.when.is.snapshot.used}</skip>
                                 </configuration>
                             </execution>
                             <execution>
@@ -377,9 +377,9 @@ limitations under the License.
                                 <goals>
                                     <goal>push</goal>
                                 </goals>
-                                <configuration>                                    
+                                <configuration>
                                     <skip>${only.when.is.snapshot.used}</skip>
-                                </configuration>                                
+                                </configuration>
                             </execution>
                         </executions>
                         <configuration>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e3c6ddeb/gremlin-server/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-server/pom.xml b/gremlin-server/pom.xml
index ef2e609..b2c3435 100644
--- a/gremlin-server/pom.xml
+++ b/gremlin-server/pom.xml
@@ -275,9 +275,9 @@ limitations under the License.
                                 <goals>
                                     <goal>tag</goal>
                                 </goals>
-                                <configuration>                                                     
-                                    <tag>3.2</tag>
-                                    <skip>${only.when.is.snapshot.used}</skip>                                                     
+                                <configuration>
+                                    <tag>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}</tag>
+                                    <skip>${only.when.is.snapshot.used}</skip>
                                 </configuration>
                             </execution>
                             <execution>
@@ -285,9 +285,9 @@ limitations under the License.
                                 <goals>
                                     <goal>push</goal>
                                 </goals>
-                                <configuration>                                    
+                                <configuration>
                                     <skip>${only.when.is.snapshot.used}</skip>
-                                </configuration>                                
+                                </configuration>
                             </execution>
                         </executions>
                         <configuration>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e3c6ddeb/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 9ff3f3a..398b931 100644
--- a/pom.xml
+++ b/pom.xml
@@ -285,6 +285,12 @@ limitations under the License.
                             <failIfNoMatch>false</failIfNoMatch>
                         </configuration>
                     </execution>
+                    <execution>
+                        <id>parse-version</id>
+                        <goals>
+                            <goal>parse-version</goal>
+                        </goals>
+                    </execution>
                 </executions>
             </plugin>
             <plugin>


[18/47] tinkerpop git commit: Make docker-entrypoint.sh scripts executable TINKERPOP-1897

Posted by sp...@apache.org.
Make docker-entrypoint.sh scripts executable TINKERPOP-1897


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

Branch: refs/heads/TINKERPOP-1967
Commit: 1c3f34f52b2651897aa2fe89527cae8d2357dcc6
Parents: 6f6d941
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Mon Jun 4 19:12:53 2018 +0200
Committer: Florian Hockmann <fh...@florian-hockmann.de>
Committed: Mon Jun 4 19:12:53 2018 +0200

----------------------------------------------------------------------
 gremlin-console/src/main/docker/docker-entrypoint.sh | 0
 gremlin-server/src/main/docker/docker-entrypoint.sh  | 0
 2 files changed, 0 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/1c3f34f5/gremlin-console/src/main/docker/docker-entrypoint.sh
----------------------------------------------------------------------
diff --git a/gremlin-console/src/main/docker/docker-entrypoint.sh b/gremlin-console/src/main/docker/docker-entrypoint.sh
old mode 100644
new mode 100755

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/1c3f34f5/gremlin-server/src/main/docker/docker-entrypoint.sh
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/docker/docker-entrypoint.sh b/gremlin-server/src/main/docker/docker-entrypoint.sh
old mode 100644
new mode 100755


[38/47] tinkerpop git commit: Merge branch 'TINKERPOP-1975'

Posted by sp...@apache.org.
Merge branch 'TINKERPOP-1975'

Conflicts:
	gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
	gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/graph-traversal.js
	gremlin-python/src/main/jython/gremlin_python/process/graph_traversal.py


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

Branch: refs/heads/TINKERPOP-1967
Commit: f6274ed18bdb61e7e8bf25174580a0693f5aaa08
Parents: b75cfb8 160aef8
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Jun 6 15:42:59 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jun 6 15:42:59 2018 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  4 ++
 docker/hadoop/Dockerfile                        | 25 -------
 docs/src/reference/the-traversal.asciidoc       | 30 ++++++--
 docs/src/upgrade/release-3.4.x.asciidoc         | 49 +++++++++++++
 .../tinkerpop/gremlin/jsr223/CoreImports.java   |  4 ++
 .../step/map/PageRankVertexProgramStep.java     | 75 ++++++++++++++++++--
 .../step/map/PeerPressureVertexProgramStep.java | 74 +++++++++++++++++--
 .../process/traversal/Parameterizing.java       | 37 ----------
 .../traversal/dsl/graph/GraphTraversal.java     | 24 ++++++-
 .../process/traversal/step/Configuring.java     | 41 +++++++++++
 .../process/traversal/step/Mutating.java        |  5 +-
 .../process/traversal/step/Parameterizing.java  | 39 ++++++++++
 .../process/traversal/step/filter/DropStep.java |  9 ++-
 .../traversal/step/map/AddEdgeStartStep.java    |  6 +-
 .../process/traversal/step/map/AddEdgeStep.java |  7 +-
 .../traversal/step/map/AddVertexStartStep.java  |  7 +-
 .../traversal/step/map/AddVertexStep.java       |  6 +-
 .../traversal/step/map/EdgeOtherVertexStep.java | 15 +++-
 .../traversal/step/map/EdgeVertexStep.java      | 15 +++-
 .../process/traversal/step/map/GraphStep.java   | 15 +++-
 .../traversal/step/map/PropertiesStep.java      | 15 +++-
 .../process/traversal/step/map/VertexStep.java  | 15 +++-
 .../step/sideEffect/AddPropertyStep.java        |  9 +--
 .../process/traversal/step/util/Parameters.java |  2 +
 .../strategy/decoration/ElementIdStrategy.java  |  2 +-
 .../strategy/decoration/PartitionStrategy.java  |  6 +-
 .../traversal/dsl/graph/GraphTraversalTest.java |  2 +-
 .../Process/Traversal/GraphTraversal.cs         |  9 +++
 gremlin-javascript/glv/generate.groovy          |  3 +-
 .../lib/process/graph-traversal.js              | 10 +++
 gremlin-python/glv/generate.groovy              |  1 +
 .../gremlin_python/process/graph_traversal.py   |  4 ++
 .../traversal/step/map/PageRankTest.java        | 41 +++++++++++
 .../traversal/step/map/PeerPressureTest.java    | 31 +++++++-
 34 files changed, 517 insertions(+), 120 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f6274ed1/CHANGELOG.asciidoc
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f6274ed1/docs/src/upgrade/release-3.4.x.asciidoc
----------------------------------------------------------------------


[22/47] tinkerpop git commit: Merge branch 'tp32' into tp33

Posted by sp...@apache.org.
Merge branch 'tp32' into tp33


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

Branch: refs/heads/TINKERPOP-1967
Commit: edc0a46d98904d190a6e17dde927ba80ec4773b8
Parents: 00f77fa 57ac99e
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Jun 4 13:30:41 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Jun 4 13:30:41 2018 -0400

----------------------------------------------------------------------
 gremlin-console/src/main/docker/docker-entrypoint.sh | 0
 gremlin-server/src/main/docker/docker-entrypoint.sh  | 0
 2 files changed, 0 insertions(+), 0 deletions(-)
----------------------------------------------------------------------



[25/47] tinkerpop git commit: Merge branch 'tp32' into tp33

Posted by sp...@apache.org.
Merge branch 'tp32' into tp33


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

Branch: refs/heads/TINKERPOP-1967
Commit: ee65d5f2ba191b65a383282695074bac38a4d885
Parents: edc0a46 144c698
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Jun 4 13:57:22 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Jun 4 13:57:22 2018 -0400

----------------------------------------------------------------------
 gremlin-console/pom.xml | 13 +++++++++++++
 gremlin-server/pom.xml  | 13 +++++++++++++
 2 files changed, 26 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ee65d5f2/gremlin-console/pom.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ee65d5f2/gremlin-server/pom.xml
----------------------------------------------------------------------


[31/47] tinkerpop git commit: Removed a dead bit of code

Posted by sp...@apache.org.
Removed a dead bit of code

Looks like a half-finished step of some sort. Had no connection to anything CTR


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

Branch: refs/heads/TINKERPOP-1967
Commit: 962093e66f6ae4266cd7604482c1bcb75428ad5f
Parents: aac534e
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Jun 4 17:03:32 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Jun 4 17:03:32 2018 -0400

----------------------------------------------------------------------
 .../traversal/step/map/PropertyElementStep.java | 48 --------------------
 1 file changed, 48 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/962093e6/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PropertyElementStep.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PropertyElementStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PropertyElementStep.java
deleted file mode 100644
index 6c8489a..0000000
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/PropertyElementStep.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tinkerpop.gremlin.process.traversal.step.map;
-
-import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
-import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
-import org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
-import org.apache.tinkerpop.gremlin.structure.Element;
-import org.apache.tinkerpop.gremlin.structure.Property;
-
-import java.util.Collections;
-import java.util.Set;
-
-/**
- * @author Marko A. Rodriguez (http://markorodriguez.com)
- */
-public final class PropertyElementStep<E> extends MapStep<Property<E>, Element> {
-
-    public PropertyElementStep(final Traversal.Admin traversal) {
-        super(traversal);
-    }
-
-    @Override
-    protected Element map(final Traverser.Admin<Property<E>> traverser) {
-        return traverser.get().element();
-    }
-
-    @Override
-    public Set<TraverserRequirement> getRequirements() {
-        return Collections.singleton(TraverserRequirement.OBJECT);
-    }
-}


[24/47] tinkerpop git commit: Need one execution per version to get both docker images to deploy

Posted by sp...@apache.org.
Need one execution per version to get both docker images to deploy

Given this https://github.com/spotify/dockerfile-maven/issues/10 CTR


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

Branch: refs/heads/TINKERPOP-1967
Commit: 144c69801de8135ac04663da4063260378c71336
Parents: 57ac99e
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Jun 4 13:49:34 2018 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Jun 4 13:49:34 2018 -0400

----------------------------------------------------------------------
 gremlin-console/pom.xml | 13 +++++++++++++
 gremlin-server/pom.xml  | 13 +++++++++++++
 2 files changed, 26 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/144c6980/gremlin-console/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-console/pom.xml b/gremlin-console/pom.xml
index 748360c..29df2a4 100644
--- a/gremlin-console/pom.xml
+++ b/gremlin-console/pom.xml
@@ -384,10 +384,23 @@ limitations under the License.
                             </execution>
                             <execution>
                                 <id>docker-image-push</id>
+                                <phase>deploy</phase>
                                 <goals>
                                     <goal>push</goal>
                                 </goals>
                                 <configuration>
+                                    <tag>${project.version}</tag>
+                                    <skip>${only.when.is.snapshot.used}</skip>
+                                </configuration>
+                            </execution>
+                            <execution>
+                                <id>docker-image-push-minor-version</id>
+                                <phase>deploy</phase>
+                                <goals>
+                                    <goal>push</goal>
+                                </goals>
+                                <configuration>
+                                    <tag>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}</tag>
                                     <skip>${only.when.is.snapshot.used}</skip>
                                 </configuration>
                             </execution>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/144c6980/gremlin-server/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-server/pom.xml b/gremlin-server/pom.xml
index 0d68e7b..a75b6c5 100644
--- a/gremlin-server/pom.xml
+++ b/gremlin-server/pom.xml
@@ -292,10 +292,23 @@ limitations under the License.
                             </execution>
                             <execution>
                                 <id>docker-image-push</id>
+                                <phase>deploy</phase>
                                 <goals>
                                     <goal>push</goal>
                                 </goals>
                                 <configuration>
+                                    <tag>${project.version}</tag>
+                                    <skip>${only.when.is.snapshot.used}</skip>
+                                </configuration>
+                            </execution>
+                            <execution>
+                                <id>docker-image-push-minor-version</id>
+                                <phase>deploy</phase>
+                                <goals>
+                                    <goal>push</goal>
+                                </goals>
+                                <configuration>
+                                    <tag>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}</tag>
                                     <skip>${only.when.is.snapshot.used}</skip>
                                 </configuration>
                             </execution>


[28/47] tinkerpop git commit: Merge branch 'tp32' into tp33

Posted by sp...@apache.org.
Merge branch 'tp32' into tp33


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

Branch: refs/heads/TINKERPOP-1967
Commit: 055f1d5ee33c6f0f49267ef48365eff9f0d0bafa
Parents: ee65d5f aac534e
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Mon Jun 4 20:41:28 2018 +0200
Committer: Florian Hockmann <fh...@florian-hockmann.de>
Committed: Mon Jun 4 20:41:28 2018 +0200

----------------------------------------------------------------------
 gremlin-console/pom.xml |  4 ++--
 gremlin-server/pom.xml  |  4 ++--
 pom.xml                 | 16 ++++++++++++++++
 3 files changed, 20 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/055f1d5e/gremlin-console/pom.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/055f1d5e/gremlin-server/pom.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/055f1d5e/pom.xml
----------------------------------------------------------------------


[08/47] tinkerpop git commit: TINKERPOP-1897 Avoid pushing of Docker images for SNAPSHOT versions

Posted by sp...@apache.org.
TINKERPOP-1897 Avoid pushing of Docker images for SNAPSHOT versions

This also adds the minor version as an additional tag for Docker images
when the version is not a SNAPSHOT version.


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

Branch: refs/heads/TINKERPOP-1967
Commit: 9c3d0f00fd77a80ba9f5df4eb49b850110adb4e7
Parents: 5d2faa2
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Wed Mar 14 22:41:55 2018 +0100
Committer: Florian Hockmann <fh...@florian-hockmann.de>
Committed: Mon Jun 4 15:57:29 2018 +0200

----------------------------------------------------------------------
 gremlin-console/pom.xml | 61 +++++++++++++++++++++++++++++++++++++-------
 gremlin-server/pom.xml  | 53 ++++++++++++++++++++++++++++++++++----
 pom.xml                 |  5 ++++
 3 files changed, 105 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9c3d0f00/gremlin-console/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-console/pom.xml b/gremlin-console/pom.xml
index b7933fb..b24c772 100644
--- a/gremlin-console/pom.xml
+++ b/gremlin-console/pom.xml
@@ -347,23 +347,66 @@ limitations under the License.
             <build>
                 <plugins>
                     <plugin>
+                        <groupId>org.codehaus.mojo</groupId>
+                        <artifactId>build-helper-maven-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <!-- source: https://stackoverflow.com/a/39139979/6753576 -->
+                                <!-- sets the only.when.is.snapshot.used property to true if SNAPSHOT was used, 
+                                    to the project version otherwise -->
+                                <id>build-helper-regex-is-snapshot-used</id>
+                                <phase>validate</phase>
+                                <goals>
+                                    <goal>regex-property</goal>
+                                </goals>
+                                <configuration>
+                                    <name>only.when.is.snapshot.used</name>
+                                    <value>${project.version}</value>
+                                    <regex>.*-SNAPSHOT</regex>
+                                    <replacement>true</replacement>
+                                    <failIfNoMatch>false</failIfNoMatch>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
                         <groupId>com.spotify</groupId>
                         <artifactId>dockerfile-maven-plugin</artifactId>
                         <executions>
                             <execution>
-                            <id>docker-image</id>
-                            <goals>
-                                <goal>build</goal>
-                                <goal>push</goal>
-                            </goals>
+                                <id>docker-image-build</id>
+                                <goals>
+                                    <goal>build</goal>
+                                </goals>
+                                <configuration>
+                                    <tag>${project.version}</tag>
+                                    <buildArgs>
+                                        <GREMLIN_CONSOLE_DIR>target/apache-tinkerpop-${project.artifactId}-${project.version}-standalone</GREMLIN_CONSOLE_DIR>
+                                    </buildArgs>
+                                </configuration>
+                            </execution>
+                            <execution>
+                                <id>docker-image-tag-minor-version</id>
+                                <goals>
+                                    <goal>tag</goal>
+                                </goals>
+                                <configuration>                                                     
+                                    <tag>3.2</tag>
+                                    <skip>${only.when.is.snapshot.used}</skip>                                                     
+                                </configuration>
+                            </execution>
+                            <execution>
+                                <id>docker-image-push</id>
+                                <goals>
+                                    <goal>push</goal>
+                                </goals>
+                                <configuration>                                    
+                                    <skip>${only.when.is.snapshot.used}</skip>
+                                </configuration>                                
                             </execution>
                         </executions>
                         <configuration>
                             <repository>tinkerpop/gremlin-console</repository>
-                            <tag>${project.version}</tag>
-                            <buildArgs>
-                                <GREMLIN_CONSOLE_DIR>target/apache-tinkerpop-${project.artifactId}-${project.version}-standalone</GREMLIN_CONSOLE_DIR>
-                            </buildArgs>
                         </configuration>
                     </plugin>
                 </plugins>                

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9c3d0f00/gremlin-server/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-server/pom.xml b/gremlin-server/pom.xml
index dfc6570..e71f79b 100644
--- a/gremlin-server/pom.xml
+++ b/gremlin-server/pom.xml
@@ -255,23 +255,66 @@ limitations under the License.
             <build>
                 <plugins>
                     <plugin>
+                        <groupId>org.codehaus.mojo</groupId>
+                        <artifactId>build-helper-maven-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <!-- source: https://stackoverflow.com/a/39139979/6753576 -->
+                                <!-- sets the only.when.is.snapshot.used property to true if SNAPSHOT was used, 
+                                    to the project version otherwise -->
+                                <id>build-helper-regex-is-snapshot-used</id>
+                                <phase>validate</phase>
+                                <goals>
+                                    <goal>regex-property</goal>
+                                </goals>
+                                <configuration>
+                                    <name>only.when.is.snapshot.used</name>
+                                    <value>${project.version}</value>
+                                    <regex>.*-SNAPSHOT</regex>
+                                    <replacement>true</replacement>
+                                    <failIfNoMatch>false</failIfNoMatch>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
                         <groupId>com.spotify</groupId>
                         <artifactId>dockerfile-maven-plugin</artifactId>
                         <executions>
                             <execution>
-                                <id>docker-image</id>
+                                <id>docker-image-build</id>
                                 <goals>
                                     <goal>build</goal>
+                                </goals>
+                                <configuration>
+                                    <tag>${project.version}</tag>
+                                    <buildArgs>
+                                        <GREMLIN_SERVER_DIR>target/apache-tinkerpop-${project.artifactId}-${project.version}-standalone</GREMLIN_SERVER_DIR>
+                                    </buildArgs>
+                                </configuration>
+                            </execution>
+                            <execution>
+                                <id>docker-image-tag-minor-version</id>
+                                <goals>
+                                    <goal>tag</goal>
+                                </goals>
+                                <configuration>                                                     
+                                    <tag>3.2</tag>
+                                    <skip>${only.when.is.snapshot.used}</skip>                                                     
+                                </configuration>
+                            </execution>
+                            <execution>
+                                <id>docker-image-push</id>
+                                <goals>
                                     <goal>push</goal>
                                 </goals>
+                                <configuration>                                    
+                                    <skip>${only.when.is.snapshot.used}</skip>
+                                </configuration>                                
                             </execution>
                         </executions>
                         <configuration>
                             <repository>tinkerpop/gremlin-server</repository>
-                            <tag>${project.version}</tag>
-                            <buildArgs>
-                                <GREMLIN_SERVER_DIR>target/apache-tinkerpop-${project.artifactId}-${project.version}-standalone</GREMLIN_SERVER_DIR>
-                            </buildArgs>
                         </configuration>
                     </plugin>
                 </plugins>                

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9c3d0f00/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 5251de3..19866f0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -502,6 +502,11 @@ limitations under the License.
                     <artifactId>dockerfile-maven-plugin</artifactId>
                     <version>1.3.7</version>
                 </plugin>
+                <plugin>
+                    <groupId>org.codehaus.mojo</groupId>
+                    <artifactId>build-helper-maven-plugin</artifactId>
+                    <version>3.0.0</version>
+                </plugin>
             </plugins>
         </pluginManagement>
     </build>