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 2017/07/18 13:08:38 UTC

[01/50] [abbrv] tinkerpop git commit: Clean-up Gremlin-DotNet project files

Repository: tinkerpop
Updated Branches:
  refs/heads/master 236b2b81a -> 8f5af95ce


Clean-up Gremlin-DotNet project files

This removes some obsolete configuration options and improves the package meta information. Especially the description was extended to reflect the current state of Gremlin-DotNet. This explanation can be removed as soon as the old Gremlin.Net driver is obsolete (probably when a first release version of Gremlin-DotNet is released).
The version is now 3.2.5-beta1.


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

Branch: refs/heads/master
Commit: 212a9c779e1d3eaf3a74cc5e40b51c895045e0f3
Parents: eb9ff71
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Thu Jun 15 18:25:56 2017 +0200
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jul 13 13:46:48 2017 -0400

----------------------------------------------------------------------
 .../src/Gremlin.Net/Gremlin.Net.csproj          | 44 ++++++++------------
 .../src/Gremlin.Net/Properties/AssemblyInfo.cs  | 44 --------------------
 .../Gremlin.Net.IntegrationTest.csproj          |  4 --
 .../Properties/AssemblyInfo.cs                  | 44 --------------------
 .../Gremlin.Net.UnitTest.csproj                 |  6 ---
 .../Properties/AssemblyInfo.cs                  | 44 --------------------
 6 files changed, 17 insertions(+), 169 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/212a9c77/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj b/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
index a1fc9ef..124bb96 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
+++ b/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
@@ -1,41 +1,31 @@
 <Project Sdk="Microsoft.NET.Sdk">
-  
-  <PropertyGroup>
-    <Description>Gremlin.Net is a cross-platform Gremlin Server driver for .NET that is written in C#. It uses WebSockets to communicate with Gremlin Server.</Description>
-    <AssemblyTitle>Gremlin.Net</AssemblyTitle>
-    <Authors>Apache TinkerPop</Authors>
+
+  <PropertyGroup Label="Build">
     <TargetFramework>netstandard1.3</TargetFramework>
-    <Version>3.2.5-SNAPSHOT</Version>
-    <AssemblyName>Gremlin.Net</AssemblyName>
+    <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
+  </PropertyGroup>
+
+  <PropertyGroup Label="Package">
+    <Version>3.2.5-beta1</Version>
+    <Title>Gremlin-DotNet</Title>
+    <Authors>Apache TinkerPop</Authors>
+    <Description>
+      Apache TinkerPop’s Gremlin-DotNet implements Gremlin within the C# language.
+
+Gremlin-DotNet is an extended version of the Gremlin.Net driver (versions &lt;= 0.X). It includes an implementation of Gremlin in C#. This extended version is now part of the Apache TinkerPop project.
+The 'old' Gremlin.Net driver is however still supported. Head to https://github.com/FlorianHockmann/Gremlin.Net for more information.
+    </Description>
     <PackageId>Gremlin.Net</PackageId>
-    <PackageTags>gremlin-dotnet;gremlin;tinkerpop;tinkerpop3</PackageTags>
+    <PackageTags>gremlin;tinkerpop;tinkerpop3</PackageTags>
     <PackageProjectUrl>http://tinkerpop.apache.org</PackageProjectUrl>
     <PackageLicenseUrl>https://github.com/apache/tinkerpop/blob/master/LICENSE</PackageLicenseUrl>
     <RepositoryUrl>https://github.com/apache/tinkerpop</RepositoryUrl>
-    <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
-    <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
-    <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
-    <GeneratePackageOnBuild>False</GeneratePackageOnBuild>
-  </PropertyGroup>
-
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
-    <DocumentationFile />
-  </PropertyGroup>
-
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
-    <DocumentationFile />
   </PropertyGroup>
 
-  <ItemGroup>
-    <PackageReference Include="System.Collections" Version="4.3.0" />
-    <PackageReference Include="System.Linq" Version="4.3.0" />
-    <PackageReference Include="System.Runtime" Version="4.3.0" />
-    <PackageReference Include="System.Runtime.InteropServices" Version="4.3.0" />
-    <PackageReference Include="System.Threading" Version="4.3.0" />
+  <ItemGroup Label="Package References">
     <PackageReference Include="Newtonsoft.Json" Version="9.0.1" />
     <PackageReference Include="System.Net.WebSockets" Version="4.3.0" />
     <PackageReference Include="System.Net.WebSockets.Client" Version="4.3.0" />
-    <PackageReference Include="System.Collections.Concurrent" Version="4.3.0" />
     <PackageReference Include="System.Reflection.TypeExtensions" Version="4.3.0" />
   </ItemGroup>
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/212a9c77/gremlin-dotnet/src/Gremlin.Net/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Properties/AssemblyInfo.cs b/gremlin-dotnet/src/Gremlin.Net/Properties/AssemblyInfo.cs
deleted file mode 100644
index 433db19..0000000
--- a/gremlin-dotnet/src/Gremlin.Net/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using System.Reflection;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("Gremlin.Net")]
-[assembly: AssemblyTrademark("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components.  If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-
-[assembly: Guid("6c1dd34d-e30f-4e37-aacc-beb8ad2320d8")]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/212a9c77/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gremlin.Net.IntegrationTest.csproj
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gremlin.Net.IntegrationTest.csproj b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gremlin.Net.IntegrationTest.csproj
index c5f29da..fed1c49 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gremlin.Net.IntegrationTest.csproj
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gremlin.Net.IntegrationTest.csproj
@@ -5,11 +5,7 @@
     <DebugType>portable</DebugType>
     <AssemblyName>Gremlin.Net.IntegrationTest</AssemblyName>
     <PackageId>Gremlin.Net.IntegrationTest</PackageId>
-    <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
     <RuntimeFrameworkVersion>1.0.4</RuntimeFrameworkVersion>
-    <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
-    <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
-    <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
   </PropertyGroup>
 
   <ItemGroup>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/212a9c77/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Properties/AssemblyInfo.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Properties/AssemblyInfo.cs
deleted file mode 100644
index 5dea6f0..0000000
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using System.Reflection;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("Gremlin.Net.IntegrationTest")]
-[assembly: AssemblyTrademark("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components.  If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-
-[assembly: Guid("cc54abe3-13d2-491c-81e2-4d0355abfa93")]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/212a9c77/gremlin-dotnet/test/Gremlin.Net.UnitTest/Gremlin.Net.UnitTest.csproj
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Gremlin.Net.UnitTest.csproj b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Gremlin.Net.UnitTest.csproj
index 6cf88ac..db36085 100644
--- a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Gremlin.Net.UnitTest.csproj
+++ b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Gremlin.Net.UnitTest.csproj
@@ -5,11 +5,7 @@
     <DebugType>portable</DebugType>
     <AssemblyName>Gremlin.Net.UnitTest</AssemblyName>
     <PackageId>Gremlin.Net.UnitTest</PackageId>
-    <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
     <RuntimeFrameworkVersion>1.0.4</RuntimeFrameworkVersion>
-    <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
-    <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
-    <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
   </PropertyGroup>
 
   <ItemGroup>
@@ -19,8 +15,6 @@
   <ItemGroup>
     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />
     <PackageReference Include="Moq" Version="4.7.1" />
-    <PackageReference Include="System.Runtime" Version="4.3.0" />
-    <PackageReference Include="System.Runtime.InteropServices" Version="4.3.0" />
     <PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
     <PackageReference Include="xunit" Version="2.2.0" />
     <PackageReference Include="OpenCover" Version="4.6.519" />

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/212a9c77/gremlin-dotnet/test/Gremlin.Net.UnitTest/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Properties/AssemblyInfo.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Properties/AssemblyInfo.cs
deleted file mode 100644
index f339aa0..0000000
--- a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using System.Reflection;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("Gremlin.Net.UnitTest")]
-[assembly: AssemblyTrademark("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components.  If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-
-[assembly: Guid("1fab781b-b857-4ad2-bec8-e20c214d9e21")]
\ No newline at end of file


[25/50] [abbrv] tinkerpop git commit: TINKERPOP-1552 Nuget publishing of SNAPSHOTs working now.

Posted by sp...@apache.org.
TINKERPOP-1552 Nuget publishing of SNAPSHOTs working now.

It's a bit hokey, but it works. There are some problems in the toolchain that makes this less nice that the gremlin-python setup. I almost wonder if we shouldn't copy the whole gremlin-dot-net source to target and operate on it in isolation so that we dont' have to muck with the source controlled csproj file. I suppose what I have here will work for now. As long as the documentation I wrote is followed I don't see any problems popping up, but we'll see.


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

Branch: refs/heads/master
Commit: 47973fb62f44f8f0eddb3b0ab7f062e051a245c2
Parents: 83e7496
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Jun 28 13:22:08 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jul 13 13:46:49 2017 -0400

----------------------------------------------------------------------
 docs/src/dev/developer/release.asciidoc        | 17 +++++-
 gremlin-dotnet/glv/Gremlin.Net.csproj.template | 64 +++++++++++++++++++++
 gremlin-dotnet/pom.xml                         | 14 +++++
 gremlin-dotnet/src/pom.xml                     | 48 +++++++++++++++-
 4 files changed, 140 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/47973fb6/docs/src/dev/developer/release.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/dev/developer/release.asciidoc b/docs/src/dev/developer/release.asciidoc
index 4e5db99..f83ab16 100644
--- a/docs/src/dev/developer/release.asciidoc
+++ b/docs/src/dev/developer/release.asciidoc
@@ -60,7 +60,7 @@ development artifacts must be generated and deployed separately with additional
 mvn clean install -Pglv-python
 mvn deploy -pl gremlin-python -Dpypi
 
-Python does not use the snapshot model that the JVM does, however, the build is smart in that it will dynamically
+Python does not use the snapshot model the JVM does, however, the build is smart in that it will dynamically
 generate a development version number for the Python artifacts when "-SNAPSHOT" is in the `pom.xml`. The previous
 command will push the development version to link:https://pypi.python.org/pypi/gremlinpython/[pypi] for distribution.
 Use the `testpypi` test environment by updating the `gremlin-python/pom.xml` to verify the `mvn deploy` command works.
@@ -69,6 +69,19 @@ IMPORTANT: The `clean` in the above commands is more important to the pypi deplo
 anything found in the `target/python-packaged/dist` directory. Since the names of the artifacts are based on
 timestamps, they will not overwrite one another and multiple artifacts will get uploaded.
 
+For .NET and NuGet, development artifacts can be created as follows:
+
+[source,text]
+mvn clean install -pl :gremlin-dotnet,:gremlin-dotnet-source -Dnuget
+mvn deploy -pl :gremlin-dotnet-source -Dnuget
+
+As with PyPi, NuGet does not support a snapshot model as Java does. The commands above will dynamically generate a
+version number when "-SNAPSHOT" is in the `pom.xml`. Use the `staging.nuget.org` environment by updating the
+`gremlin-dot-source/pom.xml` to ensure the `mvn deploy` command works.
+
+IMPORTANT: These commands will dynamically edit the `gremlin-dotnet-source/Gremlin.Net.csproj`. Take care to commit
+or not commit changes related to that as necessary.
+
 Release Manager Requirements
 ----------------------------
 
@@ -225,7 +238,7 @@ Release & Promote
 . Login to link:https://repository.apache.org/[Apache Nexus] and release the previously closed repository.
 . Deploy to link:https://pypi.python.org/pypi[pypi]
 .. This build will likely occur from the tag for the release, so be sure to checkout the tag first before executing this step.
-.. `mvn clean install -DskipTests`
+.. `mvn clean install -DskipTests -Dnuget`
 .. `mvn deploy -pl gremlin-python -DskipTests -Dpypi`
 .. `mvn deploy -pl :gremlin-dotnet-source -DskipTests -Dnuget`
 . `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/47973fb6/gremlin-dotnet/glv/Gremlin.Net.csproj.template
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/glv/Gremlin.Net.csproj.template b/gremlin-dotnet/glv/Gremlin.Net.csproj.template
new file mode 100644
index 0000000..b55eecb
--- /dev/null
+++ b/gremlin-dotnet/glv/Gremlin.Net.csproj.template
@@ -0,0 +1,64 @@
+<!--
+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.
+-->
+
+<!--  THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml -->
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup Label="Build">
+    <TargetFramework>netstandard1.3</TargetFramework>
+    <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
+    <GenerateDocumentationFile>true</GenerateDocumentationFile>
+  </PropertyGroup>
+
+  <PropertyGroup Label="Package">
+    <Version>${projectVersion}</Version>
+    <Title>Gremlin.Net</Title>
+    <Authors>Apache TinkerPop</Authors>
+    <Description>
+      Gremlin.Net for Apache TinkerPop™ is a language variant and driver for .NET.
+    </Description>
+    <Summary>
+      Apache TinkerPop™ is a graph computing framework for both graph databases (OLTP) and graph analytic systems (OLAP).
+      Gremlin is the graph traversal language of TinkerPop. It can be described as a functional, data-flow language
+      that enables users to succinctly express complex traversals on (or queries of) their application’s property graph.
+
+      Gremlin.Net implements Gremlin within .NET. C# syntax has the same constructs as Java including “dot notation”
+      for function chaining (a.b.c), round bracket function arguments (a(b,c))`, and support for global namespaces
+      (a(b()) vs a(__.b()))`. As such, anyone familiar with Gremlin-Java will immediately be able to work with
+      Gremlin.Net. Moreover, there are a few added constructs to Gremlin.Net that make traversals a bit more succinct.
+
+      Please see the reference documentation at Apache TinkerPop for more information on usage.
+
+      NOTE: Gremlin.Net is an extension of the Gremlin.Net driver by Florian Hockmann (versions &lt;= 0.X) and is now
+      included as part of the Apache TinkerPop project. The 'old' Gremlin.Net driver is however still supported.
+      Head to https://github.com/FlorianHockmann/Gremlin.Net for more information.
+    </Summary>
+    <PackageId>Gremlin.Net</PackageId>
+    <PackageTags>gremlin;tinkerpop;apache</PackageTags>
+    <PackageProjectUrl>http://tinkerpop.apache.org</PackageProjectUrl>
+    <PackageLicenseUrl>https://github.com/apache/tinkerpop/blob/master/LICENSE</PackageLicenseUrl>
+    <RepositoryUrl>https://github.com/apache/tinkerpop</RepositoryUrl>
+  </PropertyGroup>
+
+  <ItemGroup Label="Package References">
+    <PackageReference Include="Newtonsoft.Json" Version="9.0.1" />
+    <PackageReference Include="System.Net.WebSockets" Version="4.3.0" />
+    <PackageReference Include="System.Net.WebSockets.Client" Version="4.3.0" />
+    <PackageReference Include="System.Reflection.TypeExtensions" Version="4.3.0" />
+  </ItemGroup>
+
+</Project>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/47973fb6/gremlin-dotnet/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/pom.xml b/gremlin-dotnet/pom.xml
index 58ac2d6..20db3d8 100644
--- a/gremlin-dotnet/pom.xml
+++ b/gremlin-dotnet/pom.xml
@@ -260,6 +260,20 @@ def namingConversionsTemplate = engine.createTemplate(new File('${project.basedi
 def namingConversionsFile = new File('${project.basedir}/src/Gremlin.Net/Process/Traversal/NamingConversions.cs')
 namingConversionsFile.newWriter().withWriter{ it << namingConversionsTemplate }
 
+def determineVersion = {
+    def env = System.getenv()
+    def mavenVersion = env.containsKey("TP_RELEASE_VERSION") ? env.get("DOTNET_RELEASE_VERSION") : '${project.version}'
+
+    // only want to generate a timestamp for the version if this is a nuget deploy
+    if (!mavenVersion.endsWith("-SNAPSHOT") || null == System.getProperty("nuget")) return mavenVersion
+
+    return mavenVersion.replace("-SNAPSHOT", "-dev-" + System.currentTimeMillis())
+}
+
+def versionToUse = determineVersion()
+def csprojTemplate = engine.createTemplate(new File('${project.basedir}/glv/Gremlin.Net.csproj.template')).make(["projectVersion":versionToUse])
+def csprojFile = new File('${project.basedir}/src/Gremlin.Net/Gremlin.Net.csproj')
+csprojFile.newWriter().withWriter{ it << csprojTemplate }
 ]]>
                                 </script>
                             </scripts>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/47973fb6/gremlin-dotnet/src/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/pom.xml b/gremlin-dotnet/src/pom.xml
index 86a56af..d19170d 100644
--- a/gremlin-dotnet/src/pom.xml
+++ b/gremlin-dotnet/src/pom.xml
@@ -152,7 +152,7 @@ limitations under the License.
                                         the "ConfigFile" option to nuget.
                                         -->
                                         <exec dir="Gremlin.Net/bin" executable="mono" failonerror="true">
-                                            <arg line="nuget.exe push Gremlin.Net.3.2.6-beta1.nupkg -Source https://staging.nuget.org/api/v2/package -ConfigFile ${user.home}/.config/NuGet/NuGet.Config"/>
+                                            <arg line="nuget.exe push Gremlin.Net.*.nupkg -Source https://staging.nuget.org/api/v2/package -ConfigFile ${user.home}/.config/NuGet/NuGet.Config"/>
                                         </exec>
                                     </tasks>
                                 </configuration>
@@ -166,6 +166,52 @@ limitations under the License.
                             </dependency>
                         </dependencies>
                     </plugin>
+                    <plugin>
+                        <groupId>org.codehaus.gmavenplus</groupId>
+                        <artifactId>gmavenplus-plugin</artifactId>
+                        <dependencies>
+                            <dependency>
+                                <groupId>org.apache.tinkerpop</groupId>
+                                <artifactId>gremlin-core</artifactId>
+                                <version>${project.version}</version>
+                                <scope>runtime</scope>
+                            </dependency>
+                            <dependency>
+                                <groupId>org.codehaus.groovy</groupId>
+                                <artifactId>groovy-all</artifactId>
+                                <version>${groovy.version}</version>
+                                <scope>runtime</scope>
+                            </dependency>
+                            <dependency>
+                                <groupId>log4j</groupId>
+                                <artifactId>log4j</artifactId>
+                                <version>1.2.17</version>
+                                <scope>runtime</scope>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <id>generate-dsl</id>
+                                <phase>deploy</phase>
+                                <goals>
+                                    <goal>execute</goal>
+                                </goals>
+                                <configuration>
+                                    <scripts>
+                                        <script><![CDATA[
+// revert back the version after a SNAPSHOT deployment
+def versionToUse = '${project.version}'
+def engine = new groovy.text.GStringTemplateEngine()
+def csprojTemplate = engine.createTemplate(new File('${project.parent.basedir}/glv/Gremlin.Net.csproj.template')).make(["projectVersion":versionToUse])
+def csprojFile = new File('${project.basedir}/Gremlin.Net/Gremlin.Net.csproj')
+csprojFile.newWriter().withWriter{ it << csprojTemplate }
+]]>
+                                        </script>
+                                    </scripts>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
                 </plugins>
             </build>
         </profile>


[07/50] [abbrv] tinkerpop git commit: Fix method reference in XML comment

Posted by sp...@apache.org.
Fix method reference in XML comment


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

Branch: refs/heads/master
Commit: 54deea464cb66d774d203c434796f452d8428c61
Parents: 388ecad
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Tue Jun 6 19:03:09 2017 +0200
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jul 13 13:46:48 2017 -0400

----------------------------------------------------------------------
 .../src/Gremlin.Net/Process/Traversal/ITraversalSideEffects.cs     | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/54deea46/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversalSideEffects.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversalSideEffects.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversalSideEffects.cs
index 7e7b450..0378fe6 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversalSideEffects.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversalSideEffects.cs
@@ -32,7 +32,7 @@ namespace Gremlin.Net.Process.Traversal
     public interface ITraversalSideEffects : IDisposable
     {
         /// <summary>
-        ///     Retrieves the keys of the side-effect that can be supplied to <see cref="Get(string)" />.
+        ///     Retrieves the keys of the side-effect that can be supplied to <see cref="Get" />.
         /// </summary>
         /// <returns>The keys of the side-effect.</returns>
         IReadOnlyCollection<string> Keys();


[30/50] [abbrv] tinkerpop git commit: TINKERPOP-1552 Bump gremlin-dotnet to 3.3.0-SNAPSHOT

Posted by sp...@apache.org.
TINKERPOP-1552 Bump gremlin-dotnet to 3.3.0-SNAPSHOT


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

Branch: refs/heads/master
Commit: 0e045207e488c734433891bdd4742f8f8dc5cc14
Parents: cd50838
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Jul 12 08:35:19 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jul 13 13:47:19 2017 -0400

----------------------------------------------------------------------
 gremlin-dotnet/pom.xml                          |  2 +-
 .../src/Gremlin.Net/Gremlin.Net.csproj          |  2 +-
 .../Process/Traversal/GraphSONVersion.cs        |  3 ++-
 .../Process/Traversal/GraphTraversal.cs         | 22 ++++++++++++++++++--
 .../Process/Traversal/GryoVersion.cs            |  3 ++-
 .../Process/Traversal/NamingConversions.cs      |  3 +++
 .../src/Gremlin.Net/Process/Traversal/Pop.cs    |  3 ++-
 .../src/Gremlin.Net/Process/Traversal/__.cs     | 20 ++++++++++++++++--
 gremlin-dotnet/src/pom.xml                      |  2 +-
 gremlin-dotnet/test/pom.xml                     |  2 +-
 10 files changed, 51 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0e045207/gremlin-dotnet/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/pom.xml b/gremlin-dotnet/pom.xml
index aba4315..206f454 100644
--- a/gremlin-dotnet/pom.xml
+++ b/gremlin-dotnet/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>3.2.6-SNAPSHOT</version>
+        <version>3.3.0-SNAPSHOT</version>
     </parent>
     <artifactId>gremlin-dotnet</artifactId>
     <name>Apache TinkerPop :: Gremlin.Net</name>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0e045207/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj b/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
index 30e15a7..1cd286c 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
+++ b/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
@@ -25,7 +25,7 @@ limitations under the License.
   </PropertyGroup>
 
   <PropertyGroup Label="Package">
-    <Version>3.2.6-SNAPSHOT</Version>
+    <Version>3.3.0-SNAPSHOT</Version>
     <Title>Gremlin.Net</Title>
     <Authors>Apache TinkerPop</Authors>
     <Description>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0e045207/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphSONVersion.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphSONVersion.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphSONVersion.cs
index e978bc6..31187ac 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphSONVersion.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphSONVersion.cs
@@ -29,7 +29,8 @@ namespace Gremlin.Net.Process.Traversal
     public enum GraphSONVersion
     {
         V1_0,
-		V2_0
+		V2_0,
+		V3_0
     }
     
 #pragma warning restore 1591

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0e045207/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 2493864..07173e8 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
@@ -774,6 +774,15 @@ namespace Gremlin.Net.Process.Traversal
         }
 
         /// <summary>
+        ///     Adds the selectV3d2 step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
+        public GraphTraversal< S , IDictionary<string, E2> > SelectV3d2<E2> (params object[] args)
+        {
+            Bytecode.AddStep("selectV3d2", args);
+            return Wrap< S , IDictionary<string, E2> >(this);
+        }
+
+        /// <summary>
         ///     Adds the sideEffect step to this <see cref="GraphTraversal{SType, EType}" />.
         /// </summary>
         public GraphTraversal< S , E > SideEffect (params object[] args)
@@ -792,6 +801,15 @@ namespace Gremlin.Net.Process.Traversal
         }
 
         /// <summary>
+        ///     Adds the skip step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
+        public GraphTraversal< S , E2 > Skip<E2> (params object[] args)
+        {
+            Bytecode.AddStep("skip", args);
+            return Wrap< S , E2 >(this);
+        }
+
+        /// <summary>
         ///     Adds the store step to this <see cref="GraphTraversal{SType, EType}" />.
         /// </summary>
         public GraphTraversal< S , E > Store (params object[] args)
@@ -920,10 +938,10 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the valueMap step to this <see cref="GraphTraversal{SType, EType}" />.
         /// </summary>
-        public GraphTraversal< S , IDictionary<string, E2> > ValueMap<E2> (params object[] args)
+        public GraphTraversal< S , java.util.Map<java.lang.Object, E2> > ValueMap<E2> (params object[] args)
         {
             Bytecode.AddStep("valueMap", args);
-            return Wrap< S , IDictionary<string, E2> >(this);
+            return Wrap< S , java.util.Map<java.lang.Object, E2> >(this);
         }
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0e045207/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GryoVersion.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GryoVersion.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GryoVersion.cs
index 5ee7358..f2b025a 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GryoVersion.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GryoVersion.cs
@@ -28,7 +28,8 @@ namespace Gremlin.Net.Process.Traversal
 
     public enum GryoVersion
     {
-        V1_0
+        V1_0,
+		V3_0
     }
     
 #pragma warning restore 1591

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0e045207/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs
index aecdc57..b9bc2ae 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs
@@ -55,7 +55,9 @@ namespace Gremlin.Net.Process.Traversal
             {"Direction.Out", "OUT"},
             {"GraphSONVersion.V1_0", "V1_0"},
             {"GraphSONVersion.V2_0", "V2_0"},
+            {"GraphSONVersion.V3_0", "V3_0"},
             {"GryoVersion.V1_0", "V1_0"},
+            {"GryoVersion.V3_0", "V3_0"},
             {"Operator.AddAll", "addAll"},
             {"Operator.And", "and"},
             {"Operator.Assign", "assign"},
@@ -79,6 +81,7 @@ namespace Gremlin.Net.Process.Traversal
             {"Pop.All", "all"},
             {"Pop.First", "first"},
             {"Pop.Last", "last"},
+            {"Pop.Mixed", "mixed"},
             {"Scope.Global", "global"},
             {"Scope.Local", "local"},
             {"T.Id", "id"},

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0e045207/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs
index a7a8403..5f3881d 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs
@@ -30,7 +30,8 @@ namespace Gremlin.Net.Process.Traversal
     {
         All,
 		First,
-		Last
+		Last,
+		Mixed
     }
     
 #pragma warning restore 1591

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0e045207/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
index fd7a901..2080bed 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
@@ -617,6 +617,14 @@ namespace Gremlin.Net.Process.Traversal
         }
 
         /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the selectV3d2 step to that traversal.
+        /// </summary>
+        public static GraphTraversal<object, IDictionary<string, E2>> SelectV3d2<E2>(params object[] args)
+        {
+            return new GraphTraversal<object, object>().SelectV3d2<E2>(args);
+        }
+
+        /// <summary>
         ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the sideEffect step to that traversal.
         /// </summary>
         public static GraphTraversal<object, object> SideEffect(params object[] args)
@@ -633,6 +641,14 @@ namespace Gremlin.Net.Process.Traversal
         }
 
         /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the skip step to that traversal.
+        /// </summary>
+        public static GraphTraversal<object, object> Skip(params object[] args)
+        {
+            return new GraphTraversal<object, object>().Skip(args);
+        }
+
+        /// <summary>
         ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the store step to that traversal.
         /// </summary>
         public static GraphTraversal<object, object> Store(params object[] args)
@@ -747,9 +763,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the valueMap step to that traversal.
         /// </summary>
-        public static GraphTraversal<object, IDictionary<string, E2>> ValueMap<E2>(params object[] args)
+        public static GraphTraversal<object, java.util.Map<java.lang.Object, B>> ValueMap(params object[] args)
         {
-            return new GraphTraversal<object, object>().ValueMap<E2>(args);
+            return new GraphTraversal<object, object>().ValueMap(args);
         }
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0e045207/gremlin-dotnet/src/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/pom.xml b/gremlin-dotnet/src/pom.xml
index d19170d..5068a62 100644
--- a/gremlin-dotnet/src/pom.xml
+++ b/gremlin-dotnet/src/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>gremlin-dotnet</artifactId>
-        <version>3.2.6-SNAPSHOT</version>
+        <version>3.3.0-SNAPSHOT</version>
     </parent>
     <artifactId>gremlin-dotnet-source</artifactId>
     <name>Apache TinkerPop :: Gremlin.Net - Source</name>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0e045207/gremlin-dotnet/test/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/pom.xml b/gremlin-dotnet/test/pom.xml
index ab2a607..34f4cda 100644
--- a/gremlin-dotnet/test/pom.xml
+++ b/gremlin-dotnet/test/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>gremlin-dotnet</artifactId>
-        <version>3.2.6-SNAPSHOT</version>
+        <version>3.3.0-SNAPSHOT</version>
     </parent>
     <artifactId>gremlin-dotnet-tests</artifactId>
     <name>Apache TinkerPop :: Gremlin.Net - Tests</name>


[12/50] [abbrv] tinkerpop git commit: Reorganize Gremlin-DotNet

Posted by sp...@apache.org.
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.Net.Process.UnitTest/Traversal/TestTraversalStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.Process.UnitTest/Traversal/TestTraversalStrategy.cs b/gremlin-dotnet/test/Gremlin.Net.Process.UnitTest/Traversal/TestTraversalStrategy.cs
deleted file mode 100644
index d643440..0000000
--- a/gremlin-dotnet/test/Gremlin.Net.Process.UnitTest/Traversal/TestTraversalStrategy.cs
+++ /dev/null
@@ -1,50 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using System.Collections.Generic;
-using System.Threading.Tasks;
-using Gremlin.Net.Process.Traversal;
-
-namespace Gremlin.Net.Process.UnitTest.Traversal
-{
-    public class TestTraversalStrategy : ITraversalStrategy
-    {
-        private readonly IEnumerable<Traverser> _traversers;
-
-        public TestTraversalStrategy(IEnumerable<Traverser> traversersToAddOnApplication)
-        {
-            _traversers = traversersToAddOnApplication;
-        }
-
-        public void Apply(ITraversal traversal)
-        {
-            traversal.Traversers = _traversers;
-        }
-
-        public Task ApplyAsync(ITraversal traversal)
-        {
-            traversal.Traversers = _traversers;
-            return Task.CompletedTask;
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.Net.Process.UnitTest/Traversal/TraversalTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.Process.UnitTest/Traversal/TraversalTests.cs b/gremlin-dotnet/test/Gremlin.Net.Process.UnitTest/Traversal/TraversalTests.cs
deleted file mode 100644
index a823a5d..0000000
--- a/gremlin-dotnet/test/Gremlin.Net.Process.UnitTest/Traversal/TraversalTests.cs
+++ /dev/null
@@ -1,177 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using Gremlin.Net.Process.Traversal;
-using Moq;
-using Xunit;
-
-namespace Gremlin.Net.Process.UnitTest.Traversal
-{
-    public class TraversalTests
-    {
-        [Theory]
-        [InlineData(1)]
-        [InlineData("test")]
-        public void ShouldReturnAvailableTraverserObjWhenNextIsCalled(object traverserObj)
-        {
-            var traversal = new TestTraversal(new List<object> {traverserObj});
-
-            var actualObj = traversal.Next();
-
-            Assert.Equal(traverserObj, actualObj);
-        }
-
-        [Theory]
-        [InlineData(3)]
-        [InlineData(10)]
-        public void ShouldReturnCorrectNrOfResultObjsWhenNextIsCalledWithAmountArgument(int nrOfResults)
-        {
-            var objs = new List<object>(20);
-            for (var i = 0; i < 20; i++)
-                objs.Add(i);
-            var traversal = new TestTraversal(objs);
-
-            var traversedObjs = traversal.Next(nrOfResults);
-
-            var traversedObjsList = traversedObjs.ToList();
-            Assert.Equal(nrOfResults, traversedObjsList.Count);
-            for (var i = 0; i < nrOfResults; i++)
-                Assert.Equal(objs[i], traversedObjsList[i]);
-        }
-
-        private List<object> UnfoldBulks(IReadOnlyList<object> objs, IReadOnlyList<long> bulks)
-        {
-            var unfoldedObjs = new List<object>();
-            for (var traverserIdx = 0; traverserIdx < objs.Count; traverserIdx++)
-            for (var currentBulkObjIdx = 0; currentBulkObjIdx < bulks[traverserIdx]; currentBulkObjIdx++)
-                unfoldedObjs.Add(objs[traverserIdx]);
-            return unfoldedObjs;
-        }
-
-        [Fact]
-        public void ShouldDrainAllTraversersWhenIterateIsCalled()
-        {
-            var someObjs = new List<object> {1, 2, 3};
-            var traversal = new TestTraversal(someObjs);
-
-            var drainedTraversal = traversal.Iterate();
-
-            Assert.Null(drainedTraversal.Next());
-        }
-
-        [Fact]
-        public void ShouldReturnNullWhenNextIsCalledAndNoTraverserIsAvailable()
-        {
-            var expectedFirstObj = 1;
-            var traversal = new TestTraversal(new List<object> {expectedFirstObj});
-
-            var actualFirstObj = traversal.Next();
-            var actualSecondObj = traversal.Next();
-
-            Assert.Equal(expectedFirstObj, actualFirstObj);
-            Assert.Null(actualSecondObj);
-        }
-
-        [Fact]
-        public void ShouldReturnTraversalsTraverserWhenNextTraverserIsCalled()
-        {
-            var someObjs = new List<object> {1, 2, 3};
-            var traversal = new TestTraversal(someObjs);
-
-            var traverser = traversal.NextTraverser();
-
-            Assert.Equal(traversal.Traversers.First(), traverser);
-        }
-
-        [Fact]
-        public void ShouldThrowNotSupportedExceptionWhenResetIsCalled()
-        {
-            var someObjs = new List<object> {1, 2, 3};
-            var traversal = new TestTraversal(someObjs);
-
-            Assert.Throws<NotSupportedException>(() => traversal.Reset());
-        }
-
-        [Fact]
-        public void ShouldReturnAllTraverserObjsWhenToListIsCalled()
-        {
-            var expectedObjs = new List<object> {1, 2, 3};
-            var traversal = new TestTraversal(expectedObjs);
-
-            var traversedObjs = traversal.ToList();
-
-            Assert.Equal(expectedObjs, traversedObjs);
-        }
-
-        [Fact]
-        public void ShouldReturnAllTraverserObjWithoutDuplicatesWhenToSetIsCalled()
-        {
-            var traverserObjs = new List<object> {1, 1, 2, 3};
-            var traversal = new TestTraversal(traverserObjs);
-
-            var traversedObjSet = traversal.ToSet();
-
-            Assert.Equal(3, traversedObjSet.Count);
-            Assert.Equal(new HashSet<object>(traverserObjs), traversedObjSet);
-        }
-
-        [Fact]
-        public void ShouldApplyStrategiesWhenNextIsCalledAndNoTraversersPresent()
-        {
-            const int expectedObj = 531;
-            var testStrategy = new TestTraversalStrategy(new List<Traverser> {new Traverser(expectedObj)});
-            var testTraversal = new TestTraversal(new List<ITraversalStrategy> {testStrategy});
-
-            var actualObj = testTraversal.Next();
-
-            Assert.Equal(expectedObj, actualObj);
-        }
-
-        [Fact]
-        public void ShouldBeUnfoldTraverserBulksWhenToListIsCalled()
-        {
-            var objs = new List<object> {1, 2, 3};
-            var bulks = new List<long> {3, 2, 1};
-            var traversal = new TestTraversal(objs, bulks);
-
-            var traversedObjs = traversal.ToList();
-
-            var expectedObjs = UnfoldBulks(objs, bulks);
-            Assert.Equal(expectedObjs, traversedObjs);
-        }
-
-        [Fact]
-        public void ShouldDisposeSideEffectsWhenDisposeIsCalled()
-        {
-            var sideEffectsMock = new Mock<ITraversalSideEffects>();
-            var traversal = new TestTraversal(new List<object>()) {SideEffects = sideEffectsMock.Object};
-
-            traversal.Dispose();
-
-            sideEffectsMock.Verify(m => m.Dispose());
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.Net.Process.UnitTest/Traversal/TraverserTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.Process.UnitTest/Traversal/TraverserTests.cs b/gremlin-dotnet/test/Gremlin.Net.Process.UnitTest/Traversal/TraverserTests.cs
deleted file mode 100644
index 4f6d2b5..0000000
--- a/gremlin-dotnet/test/Gremlin.Net.Process.UnitTest/Traversal/TraverserTests.cs
+++ /dev/null
@@ -1,75 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using Gremlin.Net.Process.Traversal;
-using Xunit;
-
-namespace Gremlin.Net.Process.UnitTest.Traversal
-{
-    public class TraverserTests
-    {
-        [Fact]
-        public void ShouldReturnFalseForEqualsWhereOtherIsNull()
-        {
-            var traverser = new Traverser("anObject");
-
-            var areEqual = traverser.Equals(null);
-
-            Assert.False(areEqual);
-        }
-
-        [Fact]
-        public void ShouldReturnTrueForEqualsWithSameObjectAndDifferentBulk()
-        {
-            var firstTraverser = new Traverser("anObject", 1234);
-            var secondTraverser = new Traverser("anObject", 9876);
-
-            var areEqual = firstTraverser.Equals(secondTraverser);
-
-            Assert.True(areEqual);
-        }
-
-        [Fact]
-        public void ShouldReturnTrueForEqualsObjectWithSameObjectAndDifferentBulk()
-        {
-            var firstTraverser = new Traverser("anObject", 1234);
-            object secondTraverser = new Traverser("anObject", 9876);
-
-            var areEqual = firstTraverser.Equals(secondTraverser);
-
-            Assert.True(areEqual);
-        }
-
-        [Fact]
-        public void ShouldReturnEqualHashcodesForTraversersWithSameObjectAndDifferentBulk()
-        {
-            var firstTraverser = new Traverser("anObject", 1234);
-            var secondTraverser = new Traverser("anObject", 9876);
-
-            var firstHashCode = firstTraverser.GetHashCode();
-            var secondHashCode = secondTraverser.GetHashCode();
-
-            Assert.Equal(firstHashCode, secondHashCode);
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.Net.UnitTest/Gremlin.Net.UnitTest.csproj
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Gremlin.Net.UnitTest.csproj b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Gremlin.Net.UnitTest.csproj
index 3d2da0d..6cf88ac 100644
--- a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Gremlin.Net.UnitTest.csproj
+++ b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Gremlin.Net.UnitTest.csproj
@@ -13,7 +13,6 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <ProjectReference Include="..\..\src\Gremlin.Net.Process\Gremlin.Net.Process.csproj" />
     <ProjectReference Include="..\..\src\Gremlin.Net\Gremlin.Net.csproj" />
   </ItemGroup>
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/BytecodeTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/BytecodeTests.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/BytecodeTests.cs
new file mode 100644
index 0000000..da77223
--- /dev/null
+++ b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/BytecodeTests.cs
@@ -0,0 +1,44 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using Gremlin.Net.Process.Traversal;
+using Xunit;
+
+namespace Gremlin.Net.UnitTest.Process.Traversal
+{
+    public class BytecodeTests
+    {
+        [Fact]
+        public void ShouldUseBingings()
+        {
+            var bytecode = new Bytecode();
+            var bindings = new Bindings();
+
+            bytecode.AddStep("hasLabel", bindings.Of("label", "testLabel"));
+
+            var arg = bytecode.StepInstructions[0].Arguments[0];
+            var binding = arg as Binding;
+            Assert.Equal(new Binding("label", "testLabel"), binding);
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/GraphTraversalSourceTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/GraphTraversalSourceTests.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/GraphTraversalSourceTests.cs
new file mode 100644
index 0000000..1ce1ec0
--- /dev/null
+++ b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/GraphTraversalSourceTests.cs
@@ -0,0 +1,68 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using Gremlin.Net.Structure;
+using Xunit;
+
+namespace Gremlin.Net.UnitTest.Process.Traversal
+{
+    public class GraphTraversalSourceTests
+    {
+        [Fact]
+        public void ShouldBeIndependentFromReturnedGraphTraversalModififyingBytecode()
+        {
+            var graph = new Graph();
+            var g = graph.Traversal();
+
+            g.V().Has("someKey", "someValue").Drop();
+
+            Assert.Equal(0, g.Bytecode.StepInstructions.Count);
+            Assert.Equal(0, g.Bytecode.SourceInstructions.Count);
+        }
+
+        [Fact]
+        public void ShouldBeIndependentFromReturnedGraphTraversalSourceModififyingBytecode()
+        {
+            var graph = new Graph();
+            var g1 = graph.Traversal();
+
+            var g2 = g1.WithSideEffect("someSideEffectKey", "someSideEffectValue");
+
+            Assert.Equal(0, g1.Bytecode.SourceInstructions.Count);
+            Assert.Equal(0, g1.Bytecode.StepInstructions.Count);
+            Assert.Equal(1, g2.Bytecode.SourceInstructions.Count);
+        }
+
+        [Fact]
+        public void ShouldBeIndependentFromReturnedGraphTraversalSourceModififyingTraversalStrategies()
+        {
+            var graph = new Graph();
+            var gLocal = graph.Traversal();
+
+            var gRemote = gLocal.WithRemote(null);
+
+            Assert.Equal(0, gLocal.TraversalStrategies.Count);
+            Assert.Equal(1, gRemote.TraversalStrategies.Count);
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/PredicateTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/PredicateTests.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/PredicateTests.cs
new file mode 100644
index 0000000..59af681
--- /dev/null
+++ b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/PredicateTests.cs
@@ -0,0 +1,50 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using Gremlin.Net.Process.Traversal;
+using Xunit;
+
+namespace Gremlin.Net.UnitTest.Process.Traversal
+{
+    public class PredicateTests
+    {
+        [Fact]
+        public void ShouldKeepOrderForNestedPredicate()
+        {
+            Assert.Equal("and(eq(a),lt(b))", P.Eq("a").And(P.Lt("b")).ToString());
+        }
+
+        [Fact]
+        public void ShouldKeepOrderForDoubleNestedPredicate()
+        {
+            Assert.Equal("and(or(lt(b),gt(c)),neq(d))", P.Lt("b").Or(P.Gt("c")).And(P.Neq("d")).ToString());
+        }
+
+        [Fact]
+        public void ShouldKeepOrderForTripleNestedPredicate()
+        {
+            Assert.Equal("and(or(lt(b),gt(c)),or(neq(d),gte(e)))",
+                P.Lt("b").Or(P.Gt("c")).And(P.Neq("d").Or(P.Gte("e"))).ToString());
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/Strategy/StrategyTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/Strategy/StrategyTests.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/Strategy/StrategyTests.cs
new file mode 100644
index 0000000..47adb29
--- /dev/null
+++ b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/Strategy/StrategyTests.cs
@@ -0,0 +1,109 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using Gremlin.Net.Process.Traversal.Strategy;
+using Gremlin.Net.Process.Traversal.Strategy.Optimization;
+using Gremlin.Net.Process.Traversal.Strategy.Verification;
+using Xunit;
+
+namespace Gremlin.Net.UnitTest.Process.Traversal.Strategy
+{
+    public class StrategyTests
+    {
+        [Fact]
+        public void ShouldReturnFalseForEqualsOfStrategiesWithDifferentStrategyNames()
+        {
+            var firstStrategy = new TestStrategy("aConfigKey", "aConfigValue");
+            var secondStrategy = new IncidentToAdjacentStrategy();
+
+            var areEqual = firstStrategy.Equals(secondStrategy);
+
+            Assert.False(areEqual);
+        }
+
+        [Fact]
+        public void ShouldReturnTrueForEqualsOfStrategiesWithEqualNamesButDifferentConfigurations()
+        {
+            var firstStrategy = new TestStrategy("aConfigKey", "aConfigValue");
+            var secondStrategy = new TestStrategy("anotherKey", "anotherValue");
+
+            var areEqual = firstStrategy.Equals(secondStrategy);
+
+            Assert.True(areEqual);
+        }
+
+        [Fact]
+        public void ShouldReturnDifferentHashcodesForStrategiesWithDifferentNames()
+        {
+            var firstStrategy = new TestStrategy();
+            var secondStrategy = new ReadOnlyStrategy();
+
+            var firstHashCode = firstStrategy.GetHashCode();
+            var secondHashCode = secondStrategy.GetHashCode();
+
+            Assert.NotEqual(firstHashCode, secondHashCode);
+        }
+
+        [Fact]
+        public void ShouldReturnEqualHashcodesForStrategiesWithEqualNamesButDifferentConfigurations()
+        {
+            var firstStrategy = new TestStrategy("aConfigKey", "aConfigValue");
+            var secondStrategy = new TestStrategy("anotherKey", "anotherValue");
+
+            var firstHashCode = firstStrategy.GetHashCode();
+            var secondHashCode = secondStrategy.GetHashCode();
+
+            Assert.Equal(firstHashCode, secondHashCode);
+        }
+
+        [Fact]
+        public void ShouldReturnClassNameForStrategyNameProperty()
+        {
+            var testStrategy = new TestStrategy();
+
+            Assert.Equal("TestStrategy", testStrategy.StrategyName);
+        }
+
+        [Fact]
+        public void ShouldReturnStrategyNameWhenForToString()
+        {
+            var testStrategy = new TestStrategy();
+
+            var strategyStr = testStrategy.ToString();
+
+            Assert.Equal("TestStrategy", strategyStr);
+        }
+    }
+
+    internal class TestStrategy : AbstractTraversalStrategy
+    {
+        public TestStrategy()
+        {
+        }
+
+        public TestStrategy(string configKey, dynamic configValue)
+        {
+            Configuration[configKey] = configValue;
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TestTraversal.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TestTraversal.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TestTraversal.cs
new file mode 100644
index 0000000..4be6823
--- /dev/null
+++ b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TestTraversal.cs
@@ -0,0 +1,51 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System.Collections.Generic;
+using System.Linq;
+using Gremlin.Net.Process.Traversal;
+
+namespace Gremlin.Net.UnitTest.Process.Traversal
+{
+    public class TestTraversal : DefaultTraversal
+    {
+        public TestTraversal(List<object> traverserObjs)
+        {
+            var traversers = new List<Traverser>(traverserObjs.Count);
+            traverserObjs.ForEach(o => traversers.Add(new Traverser(o)));
+            Traversers = traversers;
+        }
+
+        public TestTraversal(IReadOnlyList<object> traverserObjs, IReadOnlyList<long> traverserBulks)
+        {
+            var traversers = new List<Traverser>(traverserObjs.Count);
+            traversers.AddRange(traverserObjs.Select((t, i) => new Traverser(t, traverserBulks[i])));
+            Traversers = traversers;
+        }
+
+        public TestTraversal(IList<ITraversalStrategy> traversalStrategies)
+        {
+            TraversalStrategies = traversalStrategies;
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TestTraversalStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TestTraversalStrategy.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TestTraversalStrategy.cs
new file mode 100644
index 0000000..111469c
--- /dev/null
+++ b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TestTraversalStrategy.cs
@@ -0,0 +1,50 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Gremlin.Net.Process.Traversal;
+
+namespace Gremlin.Net.UnitTest.Process.Traversal
+{
+    public class TestTraversalStrategy : ITraversalStrategy
+    {
+        private readonly IEnumerable<Traverser> _traversers;
+
+        public TestTraversalStrategy(IEnumerable<Traverser> traversersToAddOnApplication)
+        {
+            _traversers = traversersToAddOnApplication;
+        }
+
+        public void Apply(ITraversal traversal)
+        {
+            traversal.Traversers = _traversers;
+        }
+
+        public Task ApplyAsync(ITraversal traversal)
+        {
+            traversal.Traversers = _traversers;
+            return Task.CompletedTask;
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TraversalTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TraversalTests.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TraversalTests.cs
new file mode 100644
index 0000000..f32b567
--- /dev/null
+++ b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TraversalTests.cs
@@ -0,0 +1,177 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using Moq;
+using Xunit;
+using Gremlin.Net.Process.Traversal;
+
+namespace Gremlin.Net.UnitTest.Process.Traversal
+{
+    public class TraversalTests
+    {
+        [Theory]
+        [InlineData(1)]
+        [InlineData("test")]
+        public void ShouldReturnAvailableTraverserObjWhenNextIsCalled(object traverserObj)
+        {
+            var traversal = new TestTraversal(new List<object> {traverserObj});
+
+            var actualObj = traversal.Next();
+
+            Assert.Equal(traverserObj, actualObj);
+        }
+
+        [Theory]
+        [InlineData(3)]
+        [InlineData(10)]
+        public void ShouldReturnCorrectNrOfResultObjsWhenNextIsCalledWithAmountArgument(int nrOfResults)
+        {
+            var objs = new List<object>(20);
+            for (var i = 0; i < 20; i++)
+                objs.Add(i);
+            var traversal = new TestTraversal(objs);
+
+            var traversedObjs = traversal.Next(nrOfResults);
+
+            var traversedObjsList = traversedObjs.ToList();
+            Assert.Equal(nrOfResults, traversedObjsList.Count);
+            for (var i = 0; i < nrOfResults; i++)
+                Assert.Equal(objs[i], traversedObjsList[i]);
+        }
+
+        private List<object> UnfoldBulks(IReadOnlyList<object> objs, IReadOnlyList<long> bulks)
+        {
+            var unfoldedObjs = new List<object>();
+            for (var traverserIdx = 0; traverserIdx < objs.Count; traverserIdx++)
+            for (var currentBulkObjIdx = 0; currentBulkObjIdx < bulks[traverserIdx]; currentBulkObjIdx++)
+                unfoldedObjs.Add(objs[traverserIdx]);
+            return unfoldedObjs;
+        }
+
+        [Fact]
+        public void ShouldDrainAllTraversersWhenIterateIsCalled()
+        {
+            var someObjs = new List<object> {1, 2, 3};
+            var traversal = new TestTraversal(someObjs);
+
+            var drainedTraversal = traversal.Iterate();
+
+            Assert.Null(drainedTraversal.Next());
+        }
+
+        [Fact]
+        public void ShouldReturnNullWhenNextIsCalledAndNoTraverserIsAvailable()
+        {
+            var expectedFirstObj = 1;
+            var traversal = new TestTraversal(new List<object> {expectedFirstObj});
+
+            var actualFirstObj = traversal.Next();
+            var actualSecondObj = traversal.Next();
+
+            Assert.Equal(expectedFirstObj, actualFirstObj);
+            Assert.Null(actualSecondObj);
+        }
+
+        [Fact]
+        public void ShouldReturnTraversalsTraverserWhenNextTraverserIsCalled()
+        {
+            var someObjs = new List<object> {1, 2, 3};
+            var traversal = new TestTraversal(someObjs);
+
+            var traverser = traversal.NextTraverser();
+
+            Assert.Equal(traversal.Traversers.First(), traverser);
+        }
+
+        [Fact]
+        public void ShouldThrowNotSupportedExceptionWhenResetIsCalled()
+        {
+            var someObjs = new List<object> {1, 2, 3};
+            var traversal = new TestTraversal(someObjs);
+
+            Assert.Throws<NotSupportedException>(() => traversal.Reset());
+        }
+
+        [Fact]
+        public void ShouldReturnAllTraverserObjsWhenToListIsCalled()
+        {
+            var expectedObjs = new List<object> {1, 2, 3};
+            var traversal = new TestTraversal(expectedObjs);
+
+            var traversedObjs = traversal.ToList();
+
+            Assert.Equal(expectedObjs, traversedObjs);
+        }
+
+        [Fact]
+        public void ShouldReturnAllTraverserObjWithoutDuplicatesWhenToSetIsCalled()
+        {
+            var traverserObjs = new List<object> {1, 1, 2, 3};
+            var traversal = new TestTraversal(traverserObjs);
+
+            var traversedObjSet = traversal.ToSet();
+
+            Assert.Equal(3, traversedObjSet.Count);
+            Assert.Equal(new HashSet<object>(traverserObjs), traversedObjSet);
+        }
+
+        [Fact]
+        public void ShouldApplyStrategiesWhenNextIsCalledAndNoTraversersPresent()
+        {
+            const int expectedObj = 531;
+            var testStrategy = new TestTraversalStrategy(new List<Traverser> {new Traverser(expectedObj)});
+            var testTraversal = new TestTraversal(new List<ITraversalStrategy> {testStrategy});
+
+            var actualObj = testTraversal.Next();
+
+            Assert.Equal(expectedObj, actualObj);
+        }
+
+        [Fact]
+        public void ShouldBeUnfoldTraverserBulksWhenToListIsCalled()
+        {
+            var objs = new List<object> {1, 2, 3};
+            var bulks = new List<long> {3, 2, 1};
+            var traversal = new TestTraversal(objs, bulks);
+
+            var traversedObjs = traversal.ToList();
+
+            var expectedObjs = UnfoldBulks(objs, bulks);
+            Assert.Equal(expectedObjs, traversedObjs);
+        }
+
+        [Fact]
+        public void ShouldDisposeSideEffectsWhenDisposeIsCalled()
+        {
+            var sideEffectsMock = new Mock<ITraversalSideEffects>();
+            var traversal = new TestTraversal(new List<object>()) {SideEffects = sideEffectsMock.Object};
+
+            traversal.Dispose();
+
+            sideEffectsMock.Verify(m => m.Dispose());
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TraverserTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TraverserTests.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TraverserTests.cs
new file mode 100644
index 0000000..f8963d3
--- /dev/null
+++ b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TraverserTests.cs
@@ -0,0 +1,75 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using Gremlin.Net.Process.Traversal;
+using Xunit;
+
+namespace Gremlin.Net.UnitTest.Process.Traversal
+{
+    public class TraverserTests
+    {
+        [Fact]
+        public void ShouldReturnFalseForEqualsWhereOtherIsNull()
+        {
+            var traverser = new Traverser("anObject");
+
+            var areEqual = traverser.Equals(null);
+
+            Assert.False(areEqual);
+        }
+
+        [Fact]
+        public void ShouldReturnTrueForEqualsWithSameObjectAndDifferentBulk()
+        {
+            var firstTraverser = new Traverser("anObject", 1234);
+            var secondTraverser = new Traverser("anObject", 9876);
+
+            var areEqual = firstTraverser.Equals(secondTraverser);
+
+            Assert.True(areEqual);
+        }
+
+        [Fact]
+        public void ShouldReturnTrueForEqualsObjectWithSameObjectAndDifferentBulk()
+        {
+            var firstTraverser = new Traverser("anObject", 1234);
+            object secondTraverser = new Traverser("anObject", 9876);
+
+            var areEqual = firstTraverser.Equals(secondTraverser);
+
+            Assert.True(areEqual);
+        }
+
+        [Fact]
+        public void ShouldReturnEqualHashcodesForTraversersWithSameObjectAndDifferentBulk()
+        {
+            var firstTraverser = new Traverser("anObject", 1234);
+            var secondTraverser = new Traverser("anObject", 9876);
+
+            var firstHashCode = firstTraverser.GetHashCode();
+            var secondHashCode = secondTraverser.GetHashCode();
+
+            Assert.Equal(firstHashCode, secondHashCode);
+        }
+    }
+}
\ No newline at end of file


[40/50] [abbrv] tinkerpop git commit: Remove methods from GraphTraversal and TraversalSource.

Posted by sp...@apache.org.
Remove methods from GraphTraversal and TraversalSource.

- Remove AddInE() and AddOutE() from GraphTraversal
- Remove WithBindings() filter from TraversalSource.


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

Branch: refs/heads/master
Commit: 5c3cc5acd4d6c3c16c0839228871dca236c46a53
Parents: cbcb640
Author: Jorge Bay Gondra <jo...@gmail.com>
Authored: Fri Jul 14 12:31:09 2017 +0200
Committer: Jorge Bay Gondra <jo...@gmail.com>
Committed: Fri Jul 14 12:31:09 2017 +0200

----------------------------------------------------------------------
 gremlin-dotnet/pom.xml                          |  1 -
 .../Process/Traversal/GraphTraversal.cs         | 36 --------------------
 .../src/Gremlin.Net/Process/Traversal/__.cs     | 32 -----------------
 3 files changed, 69 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5c3cc5ac/gremlin-dotnet/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/pom.xml b/gremlin-dotnet/pom.xml
index 319bb9c..da4e88a 100644
--- a/gremlin-dotnet/pom.xml
+++ b/gremlin-dotnet/pom.xml
@@ -160,7 +160,6 @@ def binding = ["pmethods": P.class.getMethods().
                                         findAll { GraphTraversalSource.class.equals(it.returnType) }.
                                         findAll {
                                             !it.name.equals("clone") &&
-                                                    !it.name.equals(TraversalSource.Symbols.withBindings) &&
                                                     !it.name.equals(TraversalSource.Symbols.withRemote) &&
                                                     !it.name.equals(TraversalSource.Symbols.withComputer)
                                         }.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5c3cc5ac/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 8f22888..329941d 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
@@ -81,24 +81,6 @@ namespace Gremlin.Net.Process.Traversal
         }
 
         /// <summary>
-        ///     Adds the addInE step to this <see cref="GraphTraversal{SType, EType}" />.
-        /// </summary>
-        public GraphTraversal< S , Edge > AddInE (params object[] args)
-        {
-            Bytecode.AddStep("addInE", args);
-            return Wrap< S , Edge >(this);
-        }
-
-        /// <summary>
-        ///     Adds the addOutE step to this <see cref="GraphTraversal{SType, EType}" />.
-        /// </summary>
-        public GraphTraversal< S , Edge > AddOutE (params object[] args)
-        {
-            Bytecode.AddStep("addOutE", args);
-            return Wrap< S , Edge >(this);
-        }
-
-        /// <summary>
         ///     Adds the addV step to this <see cref="GraphTraversal{SType, EType}" />.
         /// </summary>
         public GraphTraversal< S , Vertex > AddV (params object[] args)
@@ -513,24 +495,6 @@ namespace Gremlin.Net.Process.Traversal
         }
 
         /// <summary>
-        ///     Adds the mapKeys step to this <see cref="GraphTraversal{SType, EType}" />.
-        /// </summary>
-        public GraphTraversal< S , E2 > MapKeys<E2> (params object[] args)
-        {
-            Bytecode.AddStep("mapKeys", args);
-            return Wrap< S , E2 >(this);
-        }
-
-        /// <summary>
-        ///     Adds the mapValues step to this <see cref="GraphTraversal{SType, EType}" />.
-        /// </summary>
-        public GraphTraversal< S , E2 > MapValues<E2> (params object[] args)
-        {
-            Bytecode.AddStep("mapValues", args);
-            return Wrap< S , E2 >(this);
-        }
-
-        /// <summary>
         ///     Adds the match step to this <see cref="GraphTraversal{SType, EType}" />.
         /// </summary>
         public GraphTraversal< S , IDictionary<string, E2> > Match<E2> (params object[] args)

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5c3cc5ac/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
index c1aed20..cf40c11 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
@@ -57,22 +57,6 @@ namespace Gremlin.Net.Process.Traversal
         }
 
         /// <summary>
-        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the addInE step to that traversal.
-        /// </summary>
-        public static GraphTraversal<object, Edge> AddInE(params object[] args)
-        {
-            return new GraphTraversal<object, object>().AddInE(args);
-        }
-
-        /// <summary>
-        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the addOutE step to that traversal.
-        /// </summary>
-        public static GraphTraversal<object, Edge> AddOutE(params object[] args)
-        {
-            return new GraphTraversal<object, object>().AddOutE(args);
-        }
-
-        /// <summary>
         ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the addV step to that traversal.
         /// </summary>
         public static GraphTraversal<object, Vertex> AddV(params object[] args)
@@ -425,22 +409,6 @@ namespace Gremlin.Net.Process.Traversal
         }
 
         /// <summary>
-        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the mapKeys step to that traversal.
-        /// </summary>
-        public static GraphTraversal<object, E2> MapKeys<E2>(params object[] args)
-        {
-            return new GraphTraversal<object, object>().MapKeys<E2>(args);
-        }
-
-        /// <summary>
-        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the mapValues step to that traversal.
-        /// </summary>
-        public static GraphTraversal<object, E2> MapValues<E2>(params object[] args)
-        {
-            return new GraphTraversal<object, object>().MapValues<E2>(args);
-        }
-
-        /// <summary>
         ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the match step to that traversal.
         /// </summary>
         public static GraphTraversal<object, IDictionary<string, E2>> Match<E2>(params object[] args)


[16/50] [abbrv] tinkerpop git commit: Reorganize Gremlin-DotNet

Posted by sp...@apache.org.
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Remote/IRemoteConnection.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Remote/IRemoteConnection.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Remote/IRemoteConnection.cs
deleted file mode 100644
index 8555cb3..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Remote/IRemoteConnection.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using System.Threading.Tasks;
-using Gremlin.Net.Process.Traversal;
-
-namespace Gremlin.Net.Process.Remote
-{
-    /// <summary>
-    ///     A simple abstraction of a "connection" to a "server".
-    /// </summary>
-    public interface IRemoteConnection
-    {
-        /// <summary>
-        ///     Submits <see cref="ITraversal" /> <see cref="Bytecode" /> to a server and returns a
-        ///     <see cref="ITraversal" />.
-        /// </summary>
-        /// <param name="bytecode">The <see cref="Bytecode" /> to send.</param>
-        /// <returns>The <see cref="ITraversal" /> with the results and optional side-effects.</returns>
-        Task<ITraversal> SubmitAsync(Bytecode bytecode);
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Remote/RemoteStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Remote/RemoteStrategy.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Remote/RemoteStrategy.cs
deleted file mode 100644
index 4826113..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Remote/RemoteStrategy.cs
+++ /dev/null
@@ -1,61 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using System.Threading.Tasks;
-using Gremlin.Net.Process.Traversal;
-
-namespace Gremlin.Net.Process.Remote
-{
-    /// <summary>
-    ///     Reconstructs a <see cref="ITraversal" /> by submitting it to a remote server via an
-    ///     <see cref="IRemoteConnection" /> instance.
-    /// </summary>
-    public class RemoteStrategy : ITraversalStrategy
-    {
-        private readonly IRemoteConnection _remoteConnection;
-
-        /// <summary>
-        ///     Initializes a new instance of the <see cref="RemoteStrategy" /> class.
-        /// </summary>
-        /// <param name="remoteConnection">The <see cref="IRemoteConnection" /> that should be used.</param>
-        public RemoteStrategy(IRemoteConnection remoteConnection)
-        {
-            _remoteConnection = remoteConnection;
-        }
-
-        /// <inheritdoc />
-        public void Apply(ITraversal traversal)
-        {
-            ApplyAsync(traversal).Wait();
-        }
-
-        /// <inheritdoc />
-        public async Task ApplyAsync(ITraversal traversal)
-        {
-            if (traversal.Traversers != null) return;
-            var remoteTraversal = await _remoteConnection.SubmitAsync(traversal.Bytecode).ConfigureAwait(false);
-            traversal.SideEffects = remoteTraversal.SideEffects;
-            traversal.Traversers = remoteTraversal.Traversers;
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Binding.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Binding.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Binding.cs
deleted file mode 100644
index 80c8269..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Binding.cs
+++ /dev/null
@@ -1,80 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using System;
-
-namespace Gremlin.Net.Process.Traversal
-{
-    /// <summary>
-    ///     Associates a variable with a value.
-    /// </summary>
-    public class Binding : IEquatable<Binding>
-    {
-        /// <summary>
-        ///     Initializes a new instance of the <see cref="Binding" /> class.
-        /// </summary>
-        /// <param name="key">The key that identifies the <see cref="Binding" />.</param>
-        /// <param name="value">The value of the <see cref="Binding" />.</param>
-        public Binding(string key, object value)
-        {
-            Key = key;
-            Value = value;
-        }
-
-        /// <summary>
-        ///     Gets the key that identifies the <see cref="Binding" />.
-        /// </summary>
-        public string Key { get; }
-
-        /// <summary>
-        ///     Gets the value of the <see cref="Binding" />.
-        /// </summary>
-        public object Value { get; }
-
-        /// <inheritdoc />
-        public bool Equals(Binding other)
-        {
-            if (other == null)
-                return false;
-            return Key == other.Key && Value.Equals(other.Value);
-        }
-
-        /// <inheritdoc />
-        public override bool Equals(object other)
-        {
-            if (ReferenceEquals(null, other)) return false;
-            if (ReferenceEquals(this, other)) return true;
-            if (other.GetType() != GetType()) return false;
-            return Equals(other as Binding);
-        }
-
-        /// <inheritdoc />
-        public override int GetHashCode()
-        {
-            unchecked
-            {
-                return ((Key?.GetHashCode() ?? 0) * 397) ^ (Value?.GetHashCode() ?? 0);
-            }
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Bindings.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Bindings.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Bindings.cs
deleted file mode 100644
index 985369e..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Bindings.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.Net.Process.Traversal
-{
-    /// <summary>
-    ///     Bindings are used to associate a variable with a value.
-    /// </summary>
-    public class Bindings
-    {
-        /// <summary>
-        ///     Binds the variable to the specified value.
-        /// </summary>
-        /// <param name="variable">The variable to bind.</param>
-        /// <param name="value">The value to which the variable should be bound.</param>
-        /// <returns>The bound value.</returns>
-        public Binding Of(string variable, object value)
-        {
-            return new Binding(variable, value);
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Bytecode.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Bytecode.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Bytecode.cs
deleted file mode 100644
index b35e8db..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Bytecode.cs
+++ /dev/null
@@ -1,85 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using System.Collections.Generic;
-
-namespace Gremlin.Net.Process.Traversal
-{
-    /// <summary>
-    ///     A language agnostic representation of <see cref="ITraversal" /> mutations.
-    /// </summary>
-    /// <remarks>
-    ///     Bytecode is simply a list of ordered instructions.
-    ///     Bytecode can be serialized between environments and machines by way of a GraphSON representation.
-    ///     Thus, Gremlin-CSharp can create bytecode in C# and ship it to Gremlin-Java for evaluation in Java.
-    /// </remarks>
-    public class Bytecode
-    {
-        /// <summary>
-        ///     Initializes a new instance of the <see cref="Bytecode" /> class.
-        /// </summary>
-        public Bytecode()
-        {
-        }
-
-        /// <summary>
-        ///     Initializes a new instance of the <see cref="Bytecode" /> class.
-        /// </summary>
-        /// <param name="byteCode">Already existing <see cref="Bytecode" /> that should be cloned.</param>
-        public Bytecode(Bytecode byteCode)
-        {
-            SourceInstructions = new List<Instruction>(byteCode.SourceInstructions);
-            StepInstructions = new List<Instruction>(byteCode.StepInstructions);
-        }
-
-        /// <summary>
-        ///     Gets the traversal source instructions.
-        /// </summary>
-        public List<Instruction> SourceInstructions { get; } = new List<Instruction>();
-
-        /// <summary>
-        ///     Gets the <see cref="ITraversal" /> instructions.
-        /// </summary>
-        public List<Instruction> StepInstructions { get; } = new List<Instruction>();
-
-        /// <summary>
-        ///     Add a traversal source instruction to the bytecode.
-        /// </summary>
-        /// <param name="sourceName">The traversal source method name (e.g. withSack()).</param>
-        /// <param name="args">The traversal source method arguments.</param>
-        public void AddSource(string sourceName, params object[] args)
-        {
-            SourceInstructions.Add(new Instruction(sourceName, args));
-        }
-
-        /// <summary>
-        ///     Adds a <see cref="ITraversal" /> instruction to the bytecode.
-        /// </summary>
-        /// <param name="stepName">The traversal method name (e.g. out()).</param>
-        /// <param name="args">The traversal method arguments.</param>
-        public void AddStep(string stepName, params object[] args)
-        {
-            StepInstructions.Add(new Instruction(stepName, args));
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/DefaultTraversal.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/DefaultTraversal.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/DefaultTraversal.cs
deleted file mode 100644
index 86c636c..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/DefaultTraversal.cs
+++ /dev/null
@@ -1,195 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Threading.Tasks;
-
-namespace Gremlin.Net.Process.Traversal
-{
-    /// <summary>
-    ///     A traversal represents a directed walk over a graph.
-    /// </summary>
-    public abstract class DefaultTraversal : ITraversal
-    {
-        private IEnumerator<Traverser> _traverserEnumerator;
-
-        /// <summary>
-        ///     Gets the <see cref="Bytecode" /> representation of this traversal.
-        /// </summary>
-        public Bytecode Bytecode { get; protected set; }
-
-        /// <summary>
-        ///     Gets or sets the <see cref="ITraversalSideEffects" /> of this traversal.
-        /// </summary>
-        public ITraversalSideEffects SideEffects { get; set; }
-
-        /// <summary>
-        ///     Gets or sets the <see cref="Traverser" />'s of this traversal that hold the results of the traversal.
-        /// </summary>
-        public IEnumerable<Traverser> Traversers { get; set; }
-
-        /// <summary>
-        ///     Gets or sets the <see cref="ITraversalStrategy" /> strategies of this traversal.
-        /// </summary>
-        protected ICollection<ITraversalStrategy> TraversalStrategies { get; set; } = new List<ITraversalStrategy>();
-
-        private IEnumerator<Traverser> TraverserEnumerator
-            => _traverserEnumerator ?? (_traverserEnumerator = GetTraverserEnumerator());
-
-        /// <inheritdoc />
-        public void Dispose()
-        {
-            Dispose(true);
-        }
-
-        /// <inheritdoc />
-        public bool MoveNext()
-        {
-            var currentTraverser = TraverserEnumerator.Current;
-            if (currentTraverser?.Bulk > 1)
-            {
-                currentTraverser.Bulk--;
-                return true;
-            }
-            return TraverserEnumerator.MoveNext();
-        }
-
-        /// <summary>
-        ///     Reset is not supported.
-        /// </summary>
-        /// <exception cref="NotSupportedException">Thrown always as this operation is not supported.</exception>
-        public void Reset()
-        {
-            throw new NotSupportedException();
-        }
-
-        /// <inheritdoc />
-        public object Current => TraverserEnumerator.Current?.Object;
-
-        private IEnumerator<Traverser> GetTraverserEnumerator()
-        {
-            if (Traversers == null)
-                ApplyStrategies();
-            return Traversers.GetEnumerator();
-        }
-
-        private void ApplyStrategies()
-        {
-            foreach (var strategy in TraversalStrategies)
-                strategy.Apply(this);
-        }
-
-        private async Task ApplyStrategiesAsync()
-        {
-            foreach (var strategy in TraversalStrategies)
-                await strategy.ApplyAsync(this).ConfigureAwait(false);
-        }
-
-        /// <summary>
-        ///     Gets the next result from the traversal.
-        /// </summary>
-        /// <returns>The result.</returns>
-        public object Next()
-        {
-            MoveNext();
-            return Current;
-        }
-
-        /// <summary>
-        ///     Gets the next n-number of results from the traversal.
-        /// </summary>
-        /// <param name="amount">The number of results to get.</param>
-        /// <returns>The n-results.</returns>
-        public IEnumerable<object> Next(int amount)
-        {
-            for (var i = 0; i < amount; i++)
-                yield return Next();
-        }
-
-        /// <summary>
-        ///     Iterates all <see cref="Traverser" /> instances in the traversal.
-        /// </summary>
-        /// <returns>The fully drained traversal.</returns>
-        public ITraversal Iterate()
-        {
-            while (MoveNext())
-            {
-            }
-            return this;
-        }
-
-        /// <summary>
-        ///     Gets the next <see cref="Traverser" />.
-        /// </summary>
-        /// <returns>The next <see cref="Traverser" />.</returns>
-        public Traverser NextTraverser()
-        {
-            TraverserEnumerator.MoveNext();
-            return TraverserEnumerator.Current;
-        }
-
-        /// <summary>
-        ///     Puts all the results into a <see cref="List{T}" />.
-        /// </summary>
-        /// <returns>The results in a list.</returns>
-        public List<object> ToList()
-        {
-            var objs = new List<object>();
-            while (MoveNext())
-                objs.Add(Current);
-            return objs;
-        }
-
-        /// <summary>
-        ///     Puts all the results into a <see cref="HashSet{T}" />.
-        /// </summary>
-        /// <returns>The results in a set.</returns>
-        public HashSet<object> ToSet()
-        {
-            var objs = new HashSet<object>();
-            while (MoveNext())
-                objs.Add(Current);
-            return objs;
-        }
-
-        /// <inheritdoc />
-        protected virtual void Dispose(bool disposing)
-        {
-            if (disposing)
-                SideEffects?.Dispose();
-        }
-
-        /// <summary>
-        ///     Starts a promise to execute a function on the current traversal that will be completed in the future.
-        /// </summary>
-        /// <typeparam name="TReturn">The return type of the <paramref name="callback" />.</typeparam>
-        /// <param name="callback">The function to execute on the current traversal.</param>
-        /// <returns>The result of the executed <paramref name="callback" />.</returns>
-        public async Task<TReturn> Promise<TReturn>(Func<ITraversal, TReturn> callback)
-        {
-            await ApplyStrategiesAsync().ConfigureAwait(false);
-            return callback(this);
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/ITraversal.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/ITraversal.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/ITraversal.cs
deleted file mode 100644
index cb472b7..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/ITraversal.cs
+++ /dev/null
@@ -1,96 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Threading.Tasks;
-
-namespace Gremlin.Net.Process.Traversal
-{
-    /// <summary>
-    ///     A traversal represents a directed walk over a graph.
-    /// </summary>
-    public interface ITraversal : IDisposable, IEnumerator
-    {
-        /// <summary>
-        ///     Gets the <see cref="Bytecode" /> representation of this traversal.
-        /// </summary>
-        Bytecode Bytecode { get; }
-
-        /// <summary>
-        ///     Gets or sets the <see cref="ITraversalSideEffects" /> of this traversal.
-        /// </summary>
-        ITraversalSideEffects SideEffects { get; set; }
-
-        /// <summary>
-        ///     Gets or sets the <see cref="Traverser" />'s of this traversal that hold the results of the traversal.
-        /// </summary>
-        IEnumerable<Traverser> Traversers { get; set; }
-
-        /// <summary>
-        ///     Gets the next result from the traversal.
-        /// </summary>
-        /// <returns>The result.</returns>
-        object Next();
-
-        /// <summary>
-        ///     Gets the next n-number of results from the traversal.
-        /// </summary>
-        /// <param name="amount">The number of results to get.</param>
-        /// <returns>The n-results.</returns>
-        IEnumerable<object> Next(int amount);
-
-        /// <summary>
-        ///     Iterates all <see cref="Traverser" /> instances in the traversal.
-        /// </summary>
-        /// <returns>The fully drained traversal.</returns>
-        ITraversal Iterate();
-
-        /// <summary>
-        ///     Gets the next <see cref="Traverser" />.
-        /// </summary>
-        /// <returns>The next <see cref="Traverser" />.</returns>
-        Traverser NextTraverser();
-
-        /// <summary>
-        ///     Puts all the results into a <see cref="List{T}" />.
-        /// </summary>
-        /// <returns>The results in a list.</returns>
-        List<object> ToList();
-
-        /// <summary>
-        ///     Puts all the results into a <see cref="HashSet{T}" />.
-        /// </summary>
-        /// <returns>The results in a set.</returns>
-        HashSet<object> ToSet();
-
-        /// <summary>
-        ///     Starts a promise to execute a function on the current traversal that will be completed in the future.
-        /// </summary>
-        /// <typeparam name="TReturn">The return type of the <paramref name="callback" />.</typeparam>
-        /// <param name="callback">The function to execute on the current traversal.</param>
-        /// <returns>The result of the executed <paramref name="callback" />.</returns>
-        Task<TReturn> Promise<TReturn>(Func<ITraversal, TReturn> callback);
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/ITraversalSideEffects.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/ITraversalSideEffects.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/ITraversalSideEffects.cs
deleted file mode 100644
index 0378fe6..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/ITraversalSideEffects.cs
+++ /dev/null
@@ -1,52 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using System;
-using System.Collections.Generic;
-
-namespace Gremlin.Net.Process.Traversal
-{
-    /// <summary>
-    ///     A <see cref="ITraversal" /> can maintain global sideEffects.
-    /// </summary>
-    public interface ITraversalSideEffects : IDisposable
-    {
-        /// <summary>
-        ///     Retrieves the keys of the side-effect that can be supplied to <see cref="Get" />.
-        /// </summary>
-        /// <returns>The keys of the side-effect.</returns>
-        IReadOnlyCollection<string> Keys();
-
-        /// <summary>
-        ///     Gets the side-effect associated with the provided key.
-        /// </summary>
-        /// <param name="key">The key to get the value for.</param>
-        /// <returns>The value associated with key.</returns>
-        object Get(string key);
-
-        /// <summary>
-        ///     Invalidates the side effect cache for traversal.
-        /// </summary>
-        void Close();
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/ITraversalStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/ITraversalStrategy.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/ITraversalStrategy.cs
deleted file mode 100644
index 991a807..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/ITraversalStrategy.cs
+++ /dev/null
@@ -1,46 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using System.Threading.Tasks;
-
-namespace Gremlin.Net.Process.Traversal
-{
-    /// <summary>
-    ///     A <see cref="ITraversalStrategy" /> defines a particular atomic operation for mutating a
-    ///     <see cref="ITraversal" /> prior to its evaluation.
-    /// </summary>
-    public interface ITraversalStrategy
-    {
-        /// <summary>
-        ///     Applies the strategy to the given <see cref="ITraversal" />.
-        /// </summary>
-        /// <param name="traversal">The <see cref="ITraversal" /> the strategy should be applied to.</param>
-        void Apply(ITraversal traversal);
-
-        /// <summary>
-        ///     Applies the strategy to the given <see cref="ITraversal" /> asynchronously.
-        /// </summary>
-        /// <param name="traversal">The <see cref="ITraversal" /> the strategy should be applied to.</param>
-        Task ApplyAsync(ITraversal traversal);
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Instruction.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Instruction.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Instruction.cs
deleted file mode 100644
index 195b7bf..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Instruction.cs
+++ /dev/null
@@ -1,52 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.Net.Process.Traversal
-{
-    /// <summary>
-    ///     Represents a <see cref="Bytecode" /> instruction by an operator name and its arguments.
-    /// </summary>
-    public class Instruction
-    {
-        /// <summary>
-        ///     Initializes a new instance of the <see cref="Instruction" /> class.
-        /// </summary>
-        /// <param name="operatorName">The name of the operator.</param>
-        /// <param name="arguments">The arguments.</param>
-        public Instruction(string operatorName, params dynamic[] arguments)
-        {
-            OperatorName = operatorName;
-            Arguments = arguments;
-        }
-
-        /// <summary>
-        ///     Gets the name of the operator.
-        /// </summary>
-        public string OperatorName { get; }
-
-        /// <summary>
-        ///     Gets the arguments.
-        /// </summary>
-        public dynamic[] Arguments { get; }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/AbstractTraversalStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/AbstractTraversalStrategy.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/AbstractTraversalStrategy.cs
deleted file mode 100644
index 8c9666c..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/AbstractTraversalStrategy.cs
+++ /dev/null
@@ -1,86 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Threading.Tasks;
-
-namespace Gremlin.Net.Process.Traversal.Strategy
-{
-    /// <summary>
-    ///     Provides a common base class for strategies that are only included in <see cref="Bytecode" />
-    ///     to be applied remotely.
-    /// </summary>
-    public abstract class AbstractTraversalStrategy : ITraversalStrategy, IEquatable<AbstractTraversalStrategy>
-    {
-        /// <summary>
-        ///     Gets the name of the strategy.
-        /// </summary>
-        public string StrategyName => GetType().Name;
-
-        /// <summary>
-        ///     Gets the configuration of the strategy.
-        /// </summary>
-        public Dictionary<string, dynamic> Configuration { get; } = new Dictionary<string, dynamic>();
-
-        /// <inheritdoc />
-        public bool Equals(AbstractTraversalStrategy other)
-        {
-            if (ReferenceEquals(null, other)) return false;
-            if (ReferenceEquals(this, other)) return true;
-            return StrategyName == other.StrategyName;
-        }
-
-        /// <inheritdoc />
-        public virtual void Apply(ITraversal traversal)
-        {
-        }
-
-        /// <inheritdoc />
-        public virtual Task ApplyAsync(ITraversal traversal)
-        {
-            return Task.CompletedTask;
-        }
-
-        /// <inheritdoc />
-        public override bool Equals(object obj)
-        {
-            if (ReferenceEquals(null, obj)) return false;
-            if (ReferenceEquals(this, obj)) return true;
-            if (obj.GetType() != GetType()) return false;
-            return Equals((AbstractTraversalStrategy) obj);
-        }
-
-        /// <inheritdoc />
-        public override int GetHashCode()
-        {
-            return StrategyName.GetHashCode();
-        }
-
-        /// <inheritdoc />
-        public override string ToString()
-        {
-            return StrategyName;
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Decoration/ConnectiveStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Decoration/ConnectiveStrategy.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Decoration/ConnectiveStrategy.cs
deleted file mode 100644
index 2bca7c2..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Decoration/ConnectiveStrategy.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.Net.Process.Traversal.Strategy.Decoration
-{
-    /// <summary>
-    ///     ConnectiveStrategy rewrites the binary conjunction form of <c>a.and().b</c> into an AndStep of
-    ///     <c>and(a, b)</c> (likewise for OrStep).
-    /// </summary>
-    public class ConnectiveStrategy : AbstractTraversalStrategy
-    {
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Decoration/ElementIdStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Decoration/ElementIdStrategy.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Decoration/ElementIdStrategy.cs
deleted file mode 100644
index 6079f58..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Decoration/ElementIdStrategy.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.Net.Process.Traversal.Strategy.Decoration
-{
-    /// <summary>
-    ///     Provides a degree of control over element identifier assignment as some graphs don't provide that feature.
-    /// </summary>
-    public class ElementIdStrategy : AbstractTraversalStrategy
-    {
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Decoration/HaltedTraverserStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Decoration/HaltedTraverserStrategy.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Decoration/HaltedTraverserStrategy.cs
deleted file mode 100644
index 98f949c..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Decoration/HaltedTraverserStrategy.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.Net.Process.Traversal.Strategy.Decoration
-{
-    public class HaltedTraverserStrategy : AbstractTraversalStrategy
-    {
-        public HaltedTraverserStrategy(string haltedTraverserFactoryName = null)
-        {
-            if (haltedTraverserFactoryName != null)
-                Configuration["haltedTraverserFactory"] = haltedTraverserFactoryName;
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Decoration/PartitionStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Decoration/PartitionStrategy.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Decoration/PartitionStrategy.cs
deleted file mode 100644
index f89037b..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Decoration/PartitionStrategy.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using System.Collections.Generic;
-
-namespace Gremlin.Net.Process.Traversal.Strategy.Decoration
-{
-    /// <summary>
-    ///     Partitions the vertices, edges and vertex properties of a graph into String named partitions.
-    /// </summary>
-    public class PartitionStrategy : AbstractTraversalStrategy
-    {
-        /// <summary>
-        ///     Initializes a new instance of the <see cref="PartitionStrategy" /> class.
-        /// </summary>
-        /// <param name="partitionKey">Specifies the partition key name.</param>
-        /// <param name="writePartition">
-        ///     Specifies the name of the partition to write when adding vertices, edges and vertex
-        ///     properties.
-        /// </param>
-        /// <param name="readPartitions">Specifies the partition of the graph to read from.</param>
-        /// <param name="includeMetaProperties">Set to true if vertex properties should get assigned to partitions.</param>
-        public PartitionStrategy(string partitionKey = null, string writePartition = null,
-            IEnumerable<string> readPartitions = null, bool? includeMetaProperties = null)
-        {
-            if (partitionKey != null)
-                Configuration["partitionKey"] = partitionKey;
-            if (writePartition != null)
-                Configuration["writePartition"] = writePartition;
-            if (readPartitions != null)
-                Configuration["readPartitions"] = readPartitions;
-            if (includeMetaProperties != null)
-                Configuration["includeMetaProperties"] = includeMetaProperties.Value;
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Decoration/SubgraphStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Decoration/SubgraphStrategy.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Decoration/SubgraphStrategy.cs
deleted file mode 100644
index 2f0d23e..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Decoration/SubgraphStrategy.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.Net.Process.Traversal.Strategy.Decoration
-{
-    /// <summary>
-    ///     Provides a way to limit the view of a <see cref="ITraversal" />.
-    /// </summary>
-    public class SubgraphStrategy : AbstractTraversalStrategy
-    {
-        /// <summary>
-        ///     Initializes a new instance of the <see cref="SubgraphStrategy" /> class.
-        /// </summary>
-        /// <param name="vertexCriterion">Constrains vertices for the <see cref="ITraversal" />.</param>
-        /// <param name="edgeCriterion">Constrains edges for the <see cref="ITraversal" />.</param>
-        /// <param name="vertexPropertyCriterion">Constrains vertex properties for the <see cref="ITraversal" />.</param>
-        public SubgraphStrategy(ITraversal vertexCriterion = null, ITraversal edgeCriterion = null,
-            ITraversal vertexPropertyCriterion = null)
-        {
-            if (vertexCriterion != null)
-                Configuration["vertices"] = vertexCriterion;
-            if (edgeCriterion != null)
-                Configuration["edges"] = edgeCriterion;
-            if (vertexPropertyCriterion != null)
-                Configuration["vertexProperties"] = vertexPropertyCriterion;
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Decoration/VertexProgramStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Decoration/VertexProgramStrategy.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Decoration/VertexProgramStrategy.cs
deleted file mode 100644
index 1c5b5f2..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Decoration/VertexProgramStrategy.cs
+++ /dev/null
@@ -1,50 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using System.Collections.Generic;
-using System.Linq;
-
-namespace Gremlin.Net.Process.Traversal.Strategy.Decoration
-{
-    public class VertexProgramStrategy : AbstractTraversalStrategy
-    {
-        public VertexProgramStrategy(string graphComputer = null, int? workers = null, string persist = null,
-            string result = null, ITraversal vertices = null, ITraversal edges = null,
-            Dictionary<string, dynamic> configuration = null)
-        {
-            if (graphComputer != null)
-                Configuration["graphComputer"] = graphComputer;
-            if (workers != null)
-                Configuration["workers"] = workers;
-            if (persist != null)
-                Configuration["persist"] = persist;
-            if (result != null)
-                Configuration["result"] = result;
-            if (vertices != null)
-                Configuration["vertices"] = vertices;
-            if (edges != null)
-                Configuration["edges"] = edges;
-            configuration?.ToList().ForEach(x => Configuration[x.Key] = x.Value);
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Finalization/MatchAlgorithmStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Finalization/MatchAlgorithmStrategy.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Finalization/MatchAlgorithmStrategy.cs
deleted file mode 100644
index 11a9e2c..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Finalization/MatchAlgorithmStrategy.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.Net.Process.Traversal.Strategy.Finalization
-{
-    public class MatchAlgorithmStrategy : AbstractTraversalStrategy
-    {
-        public MatchAlgorithmStrategy(string matchAlgorithm = null)
-        {
-            if (matchAlgorithm != null)
-                Configuration["matchAlgorithm"] = matchAlgorithm;
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/AdjacentToIncidentStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/AdjacentToIncidentStrategy.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/AdjacentToIncidentStrategy.cs
deleted file mode 100644
index bae85d7..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/AdjacentToIncidentStrategy.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.Net.Process.Traversal.Strategy.Optimization
-{
-    /// <summary>
-    ///     Optimizes vertex- and value-emitting steps.
-    /// </summary>
-    public class AdjacentToIncidentStrategy : AbstractTraversalStrategy
-    {
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/FilterRankingStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/FilterRankingStrategy.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/FilterRankingStrategy.cs
deleted file mode 100644
index 3443e71..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/FilterRankingStrategy.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.Net.Process.Traversal.Strategy.Optimization
-{
-    /// <summary>
-    ///     Reorders filter- and order-steps according to their rank.
-    /// </summary>
-    public class FilterRankingStrategy : AbstractTraversalStrategy
-    {
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/GraphFilterStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/GraphFilterStrategy.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/GraphFilterStrategy.cs
deleted file mode 100644
index aaaee2c..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/GraphFilterStrategy.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.Net.Process.Traversal.Strategy.Optimization
-{
-    public class GraphFilterStrategy : AbstractTraversalStrategy
-    {
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/IdentityRemovalStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/IdentityRemovalStrategy.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/IdentityRemovalStrategy.cs
deleted file mode 100644
index 08a4c46..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/IdentityRemovalStrategy.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.Net.Process.Traversal.Strategy.Optimization
-{
-    /// <summary>
-    ///     Looks for <c>Identity()</c>-steps and removes them.
-    /// </summary>
-    public class IdentityRemovalStrategy : AbstractTraversalStrategy
-    {
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/IncidentToAdjacentStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/IncidentToAdjacentStrategy.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/IncidentToAdjacentStrategy.cs
deleted file mode 100644
index 75b98c2..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/IncidentToAdjacentStrategy.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.Net.Process.Traversal.Strategy.Optimization
-{
-    /// <summary>
-    ///     Replaces <c>.OutE().InV()</c> with <c>.Out()</c>, <c>.InE().OutV()</c> with <c>In()</c> and <c>.BothE().BothV()</c>
-    ///     with <c>Both()</c>.
-    /// </summary>
-    public class IncidentToAdjacentStrategy : AbstractTraversalStrategy
-    {
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/InlineFilterStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/InlineFilterStrategy.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/InlineFilterStrategy.cs
deleted file mode 100644
index 8eade84..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/InlineFilterStrategy.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.Net.Process.Traversal.Strategy.Optimization
-{
-    /// <summary>
-    ///     Analyzes filter-steps with child traversals that themselves are pure filters.
-    /// </summary>
-    public class InlineFilterStrategy : AbstractTraversalStrategy
-    {
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/LazyBarrierStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/LazyBarrierStrategy.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/LazyBarrierStrategy.cs
deleted file mode 100644
index b5cac4a..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/LazyBarrierStrategy.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.Net.Process.Traversal.Strategy.Optimization
-{
-    /// <summary>
-    ///     Inserts <c>Barrier()</c>-steps into a <see cref="ITraversal" /> where appropriate in order to gain the "bulking
-    ///     optimization".
-    /// </summary>
-    public class LazyBarrierStrategy : AbstractTraversalStrategy
-    {
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/MatchPredicateStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/MatchPredicateStrategy.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/MatchPredicateStrategy.cs
deleted file mode 100644
index d535963..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/MatchPredicateStrategy.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.Net.Process.Traversal.Strategy.Optimization
-{
-    /// <summary>
-    ///     Folds any post<c>Where()</c> step that maintains a traversal constraint into <c>Match()</c>.
-    /// </summary>
-    public class MatchPredicateStrategy : AbstractTraversalStrategy
-    {
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/OrderLimitStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/OrderLimitStrategy.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/OrderLimitStrategy.cs
deleted file mode 100644
index 82a8df9..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/OrderLimitStrategy.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.Net.Process.Traversal.Strategy.Optimization
-{
-    public class OrderLimitStrategy : AbstractTraversalStrategy
-    {
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/PathProcessorStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/PathProcessorStrategy.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/PathProcessorStrategy.cs
deleted file mode 100644
index 2c8e106..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/PathProcessorStrategy.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.Net.Process.Traversal.Strategy.Optimization
-{
-    /// <summary>
-    ///     Helps to ensure that more traversals meet the local child constraint imposed on OLAP traversals.
-    /// </summary>
-    public class PathProcessorStrategy : AbstractTraversalStrategy
-    {
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/PathRetractionStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/PathRetractionStrategy.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/PathRetractionStrategy.cs
deleted file mode 100644
index e54fbb5..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/PathRetractionStrategy.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.Net.Process.Traversal.Strategy.Optimization
-{
-    public class PathRetractionStrategy : AbstractTraversalStrategy
-    {
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/RangeByIsCountStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/RangeByIsCountStrategy.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/RangeByIsCountStrategy.cs
deleted file mode 100644
index e3024bc..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/RangeByIsCountStrategy.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.Net.Process.Traversal.Strategy.Optimization
-{
-    /// <summary>
-    ///     Optimizes any occurrence of <c>Count()</c>-step followed by an <c>Is()</c>-step.
-    /// </summary>
-    public class RangeByIsCountStrategy : AbstractTraversalStrategy
-    {
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/RepeatUnrollStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/RepeatUnrollStrategy.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/RepeatUnrollStrategy.cs
deleted file mode 100644
index 6cac454..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Optimization/RepeatUnrollStrategy.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.Net.Process.Traversal.Strategy.Optimization
-{
-    public class RepeatUnrollStrategy : AbstractTraversalStrategy
-    {
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Verification/LambdaRestrictionStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Verification/LambdaRestrictionStrategy.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Verification/LambdaRestrictionStrategy.cs
deleted file mode 100644
index 0f488ab..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Verification/LambdaRestrictionStrategy.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.Net.Process.Traversal.Strategy.Verification
-{
-    /// <summary>
-    ///     Does not allow lambdas to be used in a <see cref="ITraversal" />.
-    /// </summary>
-    public class LambdaRestrictionStrategy : AbstractTraversalStrategy
-    {
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Verification/ReadOnlyStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Verification/ReadOnlyStrategy.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Verification/ReadOnlyStrategy.cs
deleted file mode 100644
index a703e18..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Strategy/Verification/ReadOnlyStrategy.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.Net.Process.Traversal.Strategy.Verification
-{
-    /// <summary>
-    ///     Detects mutating steps and throws an exception if one is found.
-    /// </summary>
-    public class ReadOnlyStrategy : AbstractTraversalStrategy
-    {
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/TraversalPredicate.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/TraversalPredicate.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/TraversalPredicate.cs
deleted file mode 100644
index b854213..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/TraversalPredicate.cs
+++ /dev/null
@@ -1,85 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.Net.Process.Traversal
-{
-    /// <summary>
-    ///     Represents a predicate (boolean-valued function) used in a <see cref="ITraversal" />.
-    /// </summary>
-    public class TraversalPredicate
-    {
-        /// <summary>
-        ///     Initializes a new instance of the <see cref="TraversalPredicate" /> class.
-        /// </summary>
-        /// <param name="operatorName">The name of the predicate.</param>
-        /// <param name="value">The value of the predicate.</param>
-        /// <param name="other">An optional other predicate that is used as an argument for this predicate.</param>
-        public TraversalPredicate(string operatorName, dynamic value, TraversalPredicate other = null)
-        {
-            OperatorName = operatorName;
-            Value = value;
-            Other = other;
-        }
-
-        /// <summary>
-        ///     Gets the name of the predicate.
-        /// </summary>
-        public string OperatorName { get; }
-
-        /// <summary>
-        ///     Gets the value of the predicate.
-        /// </summary>
-        public dynamic Value { get; }
-
-        /// <summary>
-        ///     Gets an optional other predicate that is used as an argument for this predicate.
-        /// </summary>
-        public TraversalPredicate Other { get; }
-
-        /// <summary>
-        ///     Returns a composed predicate that represents a logical AND of this predicate and another.
-        /// </summary>
-        /// <param name="otherPredicate">A predicate that will be logically-ANDed with this predicate.</param>
-        /// <returns>The composed predicate.</returns>
-        public TraversalPredicate And(TraversalPredicate otherPredicate)
-        {
-            return new TraversalPredicate("and", this, otherPredicate);
-        }
-
-        /// <summary>
-        ///     Returns a composed predicate that represents a logical OR of this predicate and another.
-        /// </summary>
-        /// <param name="otherPredicate">A predicate that will be logically-ORed with this predicate.</param>
-        /// <returns>The composed predicate.</returns>
-        public TraversalPredicate Or(TraversalPredicate otherPredicate)
-        {
-            return new TraversalPredicate("or", this, otherPredicate);
-        }
-
-        /// <inheritdoc />
-        public override string ToString()
-        {
-            return Other == null ? $"{OperatorName}({Value})" : $"{OperatorName}({Value},{Other})";
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Traverser.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Traverser.cs b/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Traverser.cs
deleted file mode 100644
index 573e57f..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Traversal/Traverser.cs
+++ /dev/null
@@ -1,75 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.Net.Process.Traversal
-{
-    /// <summary>
-    ///     A traverser represents the current state of an object flowing through a <see cref="ITraversal" />.
-    /// </summary>
-    public class Traverser
-    {
-        /// <summary>
-        ///     Initializes a new instance of the <see cref="Traverser" /> class.
-        /// </summary>
-        /// <param name="obj">The object of the traverser.</param>
-        /// <param name="bulk">The number of traversers represented in this traverser.</param>
-        public Traverser(dynamic obj, long bulk = 1)
-        {
-            Object = obj;
-            Bulk = bulk;
-        }
-
-        /// <summary>
-        ///     Gets the object of this traverser.
-        /// </summary>
-        public dynamic Object { get; }
-
-        /// <summary>
-        ///     Gets the number of traversers represented in this traverser.
-        /// </summary>
-        public long Bulk { get; internal set; }
-
-        /// <inheritdoc />
-        public bool Equals(Traverser other)
-        {
-            if (ReferenceEquals(null, other)) return false;
-            if (ReferenceEquals(this, other)) return true;
-            return Equals(Object, other.Object);
-        }
-
-        /// <inheritdoc />
-        public override bool Equals(object obj)
-        {
-            if (ReferenceEquals(null, obj)) return false;
-            if (ReferenceEquals(this, obj)) return true;
-            if (obj.GetType() != GetType()) return false;
-            return Equals((Traverser) obj);
-        }
-
-        /// <inheritdoc />
-        public override int GetHashCode()
-        {
-            return Object != null ? Object.GetHashCode() : 0;
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj b/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
index a909ad1..a1fc9ef 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
+++ b/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
@@ -6,7 +6,6 @@
     <Authors>Apache TinkerPop</Authors>
     <TargetFramework>netstandard1.3</TargetFramework>
     <Version>3.2.5-SNAPSHOT</Version>
-    <GenerateDocumentationFile>true</GenerateDocumentationFile>
     <AssemblyName>Gremlin.Net</AssemblyName>
     <PackageId>Gremlin.Net</PackageId>
     <PackageTags>gremlin-dotnet;gremlin;tinkerpop;tinkerpop3</PackageTags>
@@ -23,6 +22,10 @@
     <DocumentationFile />
   </PropertyGroup>
 
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
+    <DocumentationFile />
+  </PropertyGroup>
+
   <ItemGroup>
     <PackageReference Include="System.Collections" Version="4.3.0" />
     <PackageReference Include="System.Linq" Version="4.3.0" />
@@ -36,8 +39,4 @@
     <PackageReference Include="System.Reflection.TypeExtensions" Version="4.3.0" />
   </ItemGroup>
 
-  <ItemGroup>
-    <ProjectReference Include="..\Gremlin.Net.Process\Gremlin.Net.Process.csproj" />
-  </ItemGroup>
-
 </Project>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Remote/IRemoteConnection.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Remote/IRemoteConnection.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Remote/IRemoteConnection.cs
new file mode 100644
index 0000000..8555cb3
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Remote/IRemoteConnection.cs
@@ -0,0 +1,42 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System.Threading.Tasks;
+using Gremlin.Net.Process.Traversal;
+
+namespace Gremlin.Net.Process.Remote
+{
+    /// <summary>
+    ///     A simple abstraction of a "connection" to a "server".
+    /// </summary>
+    public interface IRemoteConnection
+    {
+        /// <summary>
+        ///     Submits <see cref="ITraversal" /> <see cref="Bytecode" /> to a server and returns a
+        ///     <see cref="ITraversal" />.
+        /// </summary>
+        /// <param name="bytecode">The <see cref="Bytecode" /> to send.</param>
+        /// <returns>The <see cref="ITraversal" /> with the results and optional side-effects.</returns>
+        Task<ITraversal> SubmitAsync(Bytecode bytecode);
+    }
+}
\ No newline at end of file


[47/50] [abbrv] tinkerpop git commit: TINKERPOP-1552 Fully defaulted to GraphSON 2.x for gremlin .net

Posted by sp...@apache.org.
TINKERPOP-1552 Fully defaulted to GraphSON 2.x for gremlin .net

I thought I'd gotten all of those references to GraphSON 3.x reverted to 2.x before but I guess I'd missed a couple. It looks like we've copied the pattern gremlin-python has for its driver. I'm not sure I see the point of specifying a different reader/writer version. I tend to think that version should be driven purely by some specified mime type, but that's a different issue for sure. at least all tests are passing now.


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

Branch: refs/heads/master
Commit: 202617d3c7b8242faf7e49375776c1531867325c
Parents: ab1dc62
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Jul 18 08:56:22 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Jul 18 08:56:22 2017 -0400

----------------------------------------------------------------------
 gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs           | 4 ++--
 .../Structure/IO/GraphSON/RequestMessageSerializer.cs            | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/202617d3/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs
index 5db58e9..064770f 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs
@@ -51,8 +51,8 @@ namespace Gremlin.Net.Driver
         public GremlinClient(GremlinServer gremlinServer, GraphSONReader graphSONReader = null,
                              GraphSONWriter graphSONWriter = null, string mimeType = null)
         {
-            var reader = graphSONReader ?? new GraphSON3Reader();
-            var writer = graphSONWriter ?? new GraphSON3Writer();
+            var reader = graphSONReader ?? new GraphSON2Reader();
+            var writer = graphSONWriter ?? new GraphSON2Writer();
             var connectionFactory = new ConnectionFactory(gremlinServer, reader, writer, mimeType ?? DefaultMimeType);
             _connectionPool = new ConnectionPool(connectionFactory);
         }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/202617d3/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/RequestMessageSerializer.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/RequestMessageSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/RequestMessageSerializer.cs
index b796423..396de01 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/RequestMessageSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/RequestMessageSerializer.cs
@@ -33,7 +33,7 @@ namespace Gremlin.Net.Structure.IO.GraphSON
             RequestMessage msg = objectData;
             return new Dictionary<string, dynamic>
             {
-                {"requestId", writer.ToDict(msg.RequestId)},
+                {"requestId", msg.RequestId},
                 {"op", msg.Operation},
                 {"processor", msg.Processor},
                 {"args", writer.ToDict(msg.Arguments)}


[21/50] [abbrv] tinkerpop git commit: TINKERPOP-1552 Cleaned up the poms for the dotnet GLV

Posted by sp...@apache.org.
TINKERPOP-1552 Cleaned up the poms for the dotnet GLV

Removed a bunch of uncessary declarations. Build still seems to work nicely after all the deleting and moving stuff around.


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

Branch: refs/heads/master
Commit: 2f70fb0091322bf0fadae7ed5ca31c882d98d5e4
Parents: 21e775c
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Thu Jun 8 11:50:31 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jul 13 13:46:48 2017 -0400

----------------------------------------------------------------------
 gremlin-dotnet/pom.xml      |  9 -------
 gremlin-dotnet/src/pom.xml  |  7 ++----
 gremlin-dotnet/test/pom.xml | 53 ++++++----------------------------------
 3 files changed, 10 insertions(+), 59 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2f70fb00/gremlin-dotnet/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/pom.xml b/gremlin-dotnet/pom.xml
index 9bdff54..ea3ae12 100644
--- a/gremlin-dotnet/pom.xml
+++ b/gremlin-dotnet/pom.xml
@@ -23,7 +23,6 @@ limitations under the License.
         <artifactId>tinkerpop</artifactId>
         <version>3.2.5-SNAPSHOT</version>
     </parent>
-    <groupId>org.apache.tinkerpop</groupId>
     <artifactId>gremlin-dotnet</artifactId>
     <name>Apache TinkerPop :: Gremlin-DotNet</name>
     <packaging>pom</packaging>
@@ -41,14 +40,6 @@ limitations under the License.
                 <extensions>true</extensions>
                 <version>0.14</version>
             </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.gmavenplus</groupId>
-                <artifactId>gmavenplus-plugin</artifactId>
-            </plugin>
         </plugins>
     </build>
 </project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2f70fb00/gremlin-dotnet/src/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/pom.xml b/gremlin-dotnet/src/pom.xml
index 2d05d7f..3b0bf68 100644
--- a/gremlin-dotnet/src/pom.xml
+++ b/gremlin-dotnet/src/pom.xml
@@ -23,7 +23,8 @@ limitations under the License.
         <artifactId>gremlin-dotnet</artifactId>
         <version>3.2.5-SNAPSHOT</version>
     </parent>
-    <artifactId>Gremlin-DotNet-Source</artifactId>
+    <artifactId>gremlin-dotnet-source</artifactId>
+    <name>Apache TinkerPop :: Gremlin-DotNet - Source</name>
     <packaging>${packaging.type}</packaging>
     <profiles>
         <profile>
@@ -52,10 +53,6 @@ limitations under the License.
                 <finalName>${project.artifactId}-${project.version}</finalName>
                 <plugins>
                     <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-surefire-plugin</artifactId>
-                    </plugin>
-                    <plugin>
                         <groupId>org.eobjects.build</groupId>
                         <artifactId>dotnet-maven-plugin</artifactId>
                         <extensions>true</extensions>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2f70fb00/gremlin-dotnet/test/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/pom.xml b/gremlin-dotnet/test/pom.xml
index d91ca85..6bd2441 100644
--- a/gremlin-dotnet/test/pom.xml
+++ b/gremlin-dotnet/test/pom.xml
@@ -23,7 +23,8 @@ limitations under the License.
         <artifactId>gremlin-dotnet</artifactId>
         <version>3.2.5-SNAPSHOT</version>
     </parent>
-    <artifactId>Gremlin-DotNet-Tests</artifactId>
+    <artifactId>gremlin-dotnet-tests</artifactId>
+    <name>Apache TinkerPop :: Gremlin-DotNet - Tests</name>
     <packaging>${packaging.type}</packaging>
     <properties>
         <!-- provides a way to convert maven.test.skip value to skipTests for use in skipping dotnet tests -->
@@ -32,44 +33,6 @@ limitations under the License.
         <!-- this path only works when maven is started from the direct parent directory, this should be fixed -->
         <gremlin.server.dir>${project.parent.parent.basedir}/gremlin-server</gremlin.server.dir>
     </properties>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.tinkerpop</groupId>
-            <artifactId>gremlin-core</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.codehaus.groovy</groupId>
-            <artifactId>groovy</artifactId>
-            <version>${groovy.version}</version>
-            <classifier>indy</classifier>
-        </dependency>
-        <!-- TESTING -->
-        <dependency>
-            <groupId>org.apache.tinkerpop</groupId>
-            <artifactId>tinkergraph-gremlin</artifactId>
-            <version>${project.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.tinkerpop</groupId>
-            <artifactId>gremlin-test</artifactId>
-            <version>${project.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.tinkerpop</groupId>
-            <artifactId>gremlin-server</artifactId>
-            <version>${project.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-log4j12</artifactId>
-            <scope>test</scope>
-            <version>${slf4j.version}</version>
-        </dependency>
-    </dependencies>
 
     <profiles>
         <profile>
@@ -114,17 +77,17 @@ limitations under the License.
                         <artifactId>gmavenplus-plugin</artifactId>
                         <dependencies>
                             <dependency>
-                                <groupId>org.codehaus.groovy</groupId>
-                                <artifactId>groovy-all</artifactId>
-                                <version>${groovy.version}</version>
-                                <scope>runtime</scope>
-                            </dependency>
-                            <dependency>
                                 <groupId>log4j</groupId>
                                 <artifactId>log4j</artifactId>
                                 <version>1.2.17</version>
                                 <scope>runtime</scope>
                             </dependency>
+                            <dependency>
+                                <groupId>org.apache.tinkerpop</groupId>
+                                <artifactId>gremlin-server</artifactId>
+                                <version>${project.version}</version>
+                                <scope>runtime</scope>
+                            </dependency>
                         </dependencies>
                         <executions>
                             <execution>


[27/50] [abbrv] tinkerpop git commit: TINKERPOP-1552 Added basic deployment options for nuget

Posted by sp...@apache.org.
TINKERPOP-1552 Added basic deployment options for nuget

Can't use the dotnet maven plugin on linux. it makes direct calls to nuget, which on linux requires mono. Used antrun plugin instead which is what was used with gremlin-python and works fine. Accomplished a basic push to the nuget staging environment. Still some bumps to sort out before this is good.


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

Branch: refs/heads/master
Commit: 49f03cbf3a05af4629013161e75f600b8b0a0c4b
Parents: 1081a9c
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Jun 23 15:43:40 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jul 13 13:46:49 2017 -0400

----------------------------------------------------------------------
 .../developer/development-environment.asciidoc  |  6 +-
 docs/src/dev/developer/release.asciidoc         |  1 +
 gremlin-dotnet/pom.xml                          | 10 +++
 .../src/Gremlin.Net/Gremlin.Net.csproj          | 25 ++++--
 gremlin-dotnet/src/pom.xml                      | 86 +++++++++++++++++++-
 gremlin-dotnet/test/pom.xml                     | 10 +++
 6 files changed, 130 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/49f03cbf/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 128cee1..26428c1 100644
--- a/docs/src/dev/developer/development-environment.asciidoc
+++ b/docs/src/dev/developer/development-environment.asciidoc
@@ -117,7 +117,11 @@ mvn clean install -Pgremlin-dotnet
 which enables the "gremlin-dotnet" Maven profile or in a more automated fashion simply add a `.glv` file to the `src`
 and `test` directories of the `gremlin-dotnet` module  which will signify to Maven that the environment is .NET-ready.
 The `.glv` file need not have any contents and is ignored by Git. A standard `mvn clean install` will then build
-`gremlin-dotnet` in full. 
+`gremlin-dotnet` in full.
+
+For those who will release TinkerPop, it is also necessary to install link:http://www.mono-project.com/[Mono]. The
+release process is known to work with 5.0.1, so it is best to probably install that version if possible. See release
+documentation for more information on configuration for release.
 
 [[release-environment]]
 Release Environment

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/49f03cbf/docs/src/dev/developer/release.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/dev/developer/release.asciidoc b/docs/src/dev/developer/release.asciidoc
index 9f2088a..4e5db99 100644
--- a/docs/src/dev/developer/release.asciidoc
+++ b/docs/src/dev/developer/release.asciidoc
@@ -227,6 +227,7 @@ Release & Promote
 .. This build will likely occur from the tag for the release, so be sure to checkout the tag first before executing this step.
 .. `mvn clean install -DskipTests`
 .. `mvn deploy -pl gremlin-python -DskipTests -Dpypi`
+.. `mvn deploy -pl :gremlin-dotnet-source -DskipTests -Dnuget`
 . `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`.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/49f03cbf/gremlin-dotnet/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/pom.xml b/gremlin-dotnet/pom.xml
index 3360bbc..6cd7da3 100644
--- a/gremlin-dotnet/pom.xml
+++ b/gremlin-dotnet/pom.xml
@@ -267,6 +267,16 @@ namingConversionsFile.newWriter().withWriter{ it << namingConversionsTemplate }
                     </execution>
                 </executions>
             </plugin>
+            <!--
+            there is no point to deploying the jvm stuff - there is no java source really - just poms
+            -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-deploy-plugin</artifactId>
+                <configuration>
+                    <skip>true</skip>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 </project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/49f03cbf/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj b/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
index 0ff4537..7ac6f8d 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
+++ b/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
@@ -8,16 +8,29 @@
 
   <PropertyGroup Label="Package">
     <Version>3.2.6-beta1</Version>
-    <Title>Gremlin-DotNet</Title>
+    <Title>Gremlin.Net</Title>
     <Authors>Apache TinkerPop</Authors>
     <Description>
-      Apache TinkerPop’s Gremlin-DotNet implements Gremlin within the C# language.
-
-Gremlin-DotNet is an extended version of the Gremlin.Net driver (versions &lt;= 0.X). It includes an implementation of Gremlin in C#. This extended version is now part of the Apache TinkerPop project.
-The 'old' Gremlin.Net driver is however still supported. Head to https://github.com/FlorianHockmann/Gremlin.Net for more information.
+      Gremlin.Net for Apache TinkerPop™ is a language variant and driver for .NET.
     </Description>
+    <Summary>
+      Apache TinkerPop™ is a graph computing framework for both graph databases (OLTP) and graph analytic systems (OLAP).
+      Gremlin is the graph traversal language of TinkerPop. It can be described as a functional, data-flow language
+      that enables users to succinctly express complex traversals on (or queries of) their application’s property graph.
+
+      Gremlin.Net implements Gremlin within .NET. C# syntax has the same constructs as Java including “dot notation”
+      for function chaining (a.b.c), round bracket function arguments (a(b,c))`, and support for global namespaces
+      (a(b()) vs a(__.b()))`. As such, anyone familiar with Gremlin-Java will immediately be able to work with
+      Gremlin-DotNet. Moreover, there are a few added constructs to Gremlin-DotNet that make traversals a bit more succinct.
+
+      Please see the reference documentation at Apache TinkerPop for more information on usage.
+
+      NOTE: Gremlin.Net is an extension of the Gremlin.Net driver by Florian Hockmann (versions &lt;= 0.X) and is now
+      included as part of the Apache TinkerPop project. The 'old' Gremlin.Net driver is however still supported.
+      Head to https://github.com/FlorianHockmann/Gremlin.Net for more information.
+    </Summary>
     <PackageId>Gremlin.Net</PackageId>
-    <PackageTags>gremlin;tinkerpop;tinkerpop3</PackageTags>
+    <PackageTags>gremlin;tinkerpop;apache</PackageTags>
     <PackageProjectUrl>http://tinkerpop.apache.org</PackageProjectUrl>
     <PackageLicenseUrl>https://github.com/apache/tinkerpop/blob/master/LICENSE</PackageLicenseUrl>
     <RepositoryUrl>https://github.com/apache/tinkerpop</RepositoryUrl>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/49f03cbf/gremlin-dotnet/src/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/pom.xml b/gremlin-dotnet/src/pom.xml
index 50d4d56..645921f 100644
--- a/gremlin-dotnet/src/pom.xml
+++ b/gremlin-dotnet/src/pom.xml
@@ -40,6 +40,16 @@ limitations under the License.
                     </execution>
                 </executions>
             </plugin>
+            <!--
+            there is no point to deploying the jvm stuff - there is no java source really - just poms
+            -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-deploy-plugin</artifactId>
+                <configuration>
+                    <skip>true</skip>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 
@@ -74,11 +84,85 @@ limitations under the License.
                         <artifactId>dotnet-maven-plugin</artifactId>
                         <extensions>true</extensions>
                         <configuration>
-                            <packOutput>${project.parent.basedir}/target/nuget</packOutput>
+                            <packEnabled>true</packEnabled>
+                            <nugetPushEnabled>false</nugetPushEnabled>
+                            <nugetAddEnabled>false</nugetAddEnabled>
                         </configuration>
                     </plugin>
                 </plugins>
             </build>
         </profile>
+        <!--
+        Provides a way to deploy the gremlin-dotnet GLV to nuget. This cannot be part of the standard maven execution
+        because nuget does not have a staging environment like sonatype for releases. As soon as the release is
+        published it is public. In our release workflow, deploy occurs prior to vote on the release and we can't
+        make this stuff public until the vote is over.
+        -->
+        <profile>
+            <id>glv-dotnet-deploy</id>
+            <activation>
+                <activeByDefault>false</activeByDefault>
+                <property>
+                    <name>nuget</name>
+                </property>
+            </activation>
+            <properties>
+                <packaging.type>dotnet-library</packaging.type>
+            </properties>
+            <build>
+                <plugins>
+                    <!--
+                      not seeing much point to making this OS agnostic really. as far as it is known, no one who does
+                      deployments will do so from a windows machine. this part of the build requires mono. note that
+                      the "correct" version of nuget is downloaded as part of the process.
+                     -->
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-antrun-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>deploy-nuget</id>
+                                <phase>deploy</phase>
+                                <goals>
+                                    <goal>run</goal>
+                                </goals>
+                                <configuration>
+                                    <tasks>
+                                        <taskdef resource="net/sf/antcontrib/antcontrib.properties" />
+                                        <if>
+                                            <available file="Gremlin.Net/bin/nuget.exe"/>
+                                            <then>
+                                                <echo>nuget.exe already downloaded and at Gremlin.Net/bin/nuget.exe.</echo>
+                                            </then>
+
+                                            <else>
+                                                <!--
+                                                specifically using 3.4.4 given some bug that seems to pin us to this
+                                                version - https://github.com/NuGet/Home/issues/4090 - it might work
+                                                with newer versions but definitely failed with 4.1.0
+                                                -->
+                                                <exec dir="Gremlin.Net/bin" executable="wget" failonerror="true">
+                                                    <arg line="https://dist.nuget.org/win-x86-commandline/v3.4.4/nuget.exe"/>
+                                                </exec>
+                                            </else>
+                                        </if>
+                                        <exec dir="Gremlin.Net/bin" executable="mono" failonerror="true">
+                                            <arg line="nuget.exe push Gremlin.Net.3.2.6-beta1.nupkg -Source https://staging.nuget.org/api/v2/package"/>
+                                        </exec>
+                                    </tasks>
+                                </configuration>
+                            </execution>
+                        </executions>
+                        <dependencies>
+                            <dependency>
+                                <groupId>ant-contrib</groupId>
+                                <artifactId>ant-contrib</artifactId>
+                                <version>20020829</version>
+                            </dependency>
+                        </dependencies>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
     </profiles>
 </project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/49f03cbf/gremlin-dotnet/test/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/pom.xml b/gremlin-dotnet/test/pom.xml
index 2cf2785..7fa75fa 100644
--- a/gremlin-dotnet/test/pom.xml
+++ b/gremlin-dotnet/test/pom.xml
@@ -47,6 +47,16 @@ limitations under the License.
                     </execution>
                 </executions>
             </plugin>
+            <!--
+            there is no point to deploying the jvm stuff - there is no java source really - just poms
+            -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-deploy-plugin</artifactId>
+                <configuration>
+                    <skip>true</skip>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 


[11/50] [abbrv] tinkerpop git commit: Rename gremlin-csharp-generator to gremlin-dotnet-generator

Posted by sp...@apache.org.
Rename gremlin-csharp-generator to gremlin-dotnet-generator


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

Branch: refs/heads/master
Commit: 388ecad88949b2b912072f9a29bd7965ec466b6d
Parents: fec3ca5
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Tue Jun 6 17:50:55 2017 +0200
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jul 13 13:46:48 2017 -0400

----------------------------------------------------------------------
 gremlin-csharp-generator/pom.xml                |  75 ----------
 .../csharp/AnonymousTraversalGenerator.groovy   |  71 ----------
 .../gremlin/csharp/CommonContentHelper.groovy   |  49 -------
 .../gremlin/csharp/EnumGenerator.groovy         |  62 ---------
 .../gremlin/csharp/GenerateGremlinCSharp.groovy |  32 -----
 .../csharp/GraphTraversalGenerator.groovy       |  76 ----------
 .../csharp/GraphTraversalSourceGenerator.groovy | 139 -------------------
 .../gremlin/csharp/PredicateGenerator.groovy    |  65 ---------
 .../gremlin/csharp/SymbolHelper.groovy          |  31 -----
 gremlin-dotnet-generator/pom.xml                |  75 ++++++++++
 .../dotnet/AnonymousTraversalGenerator.groovy   |  71 ++++++++++
 .../gremlin/dotnet/CommonContentHelper.groovy   |  49 +++++++
 .../gremlin/dotnet/EnumGenerator.groovy         |  62 +++++++++
 .../gremlin/dotnet/GenerateGremlinDotNet.groovy |  32 +++++
 .../dotnet/GraphTraversalGenerator.groovy       |  76 ++++++++++
 .../dotnet/GraphTraversalSourceGenerator.groovy | 139 +++++++++++++++++++
 .../gremlin/dotnet/PredicateGenerator.groovy    |  65 +++++++++
 .../gremlin/dotnet/SymbolHelper.groovy          |  31 +++++
 pom.xml                                         |   2 +-
 19 files changed, 601 insertions(+), 601 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/388ecad8/gremlin-csharp-generator/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-csharp-generator/pom.xml b/gremlin-csharp-generator/pom.xml
deleted file mode 100644
index 4e8989a..0000000
--- a/gremlin-csharp-generator/pom.xml
+++ /dev/null
@@ -1,75 +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.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.apache.tinkerpop</groupId>
-        <artifactId>tinkerpop</artifactId>
-        <version>3.2.5-SNAPSHOT</version>
-    </parent>
-    <artifactId>gremlin-csharp-generator</artifactId>
-    <name>Apache TinkerPop :: Gremlin-CSharp Generator</name>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.tinkerpop</groupId>
-            <artifactId>gremlin-core</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.codehaus.groovy</groupId>
-            <artifactId>groovy</artifactId>
-            <version>${groovy.version}</version>
-            <classifier>indy</classifier>
-        </dependency>
-    </dependencies>
-    <build>
-        <directory>${basedir}/target</directory>
-        <finalName>${project.artifactId}-${project.version}</finalName>
-        <plugins>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>exec-maven-plugin</artifactId>
-                <version>1.2.1</version>
-                <executions>
-                    <execution>
-                        <id>generate-csharp</id>
-                        <phase>generate-test-resources</phase>
-                        <goals>
-                            <goal>java</goal>
-                        </goals>
-                        <configuration>
-                            <mainClass>org.apache.tinkerpop.gremlin.csharp.GenerateGremlinCSharp</mainClass>
-                            <arguments>
-                                <argument>${project.parent.basedir}/gremlin-dotnet/src/Gremlin.Net</argument>
-                            </arguments>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.gmavenplus</groupId>
-                <artifactId>gmavenplus-plugin</artifactId>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
-</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/388ecad8/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/AnonymousTraversalGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/AnonymousTraversalGenerator.groovy b/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/AnonymousTraversalGenerator.groovy
deleted file mode 100644
index ccb22fc..0000000
--- a/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/AnonymousTraversalGenerator.groovy
+++ /dev/null
@@ -1,71 +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.csharp
-
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
-
-import java.lang.reflect.Modifier
-
-class AnonymousTraversalGenerator {
-
-    public static void create(final String anonymousTraversalFile) {
-
-        final StringBuilder csharpClass = new StringBuilder()
-
-        csharpClass.append(CommonContentHelper.getLicense())
-
-        csharpClass.append(
-"""
-namespace Gremlin.Net.Process.Traversal
-{
-    public static class __
-    {
-        public static GraphTraversal Start()
-        {
-            return new GraphTraversal();
-        }
-""")
-        __.getMethods().
-                findAll { GraphTraversal.class.equals(it.returnType) }.
-                findAll { Modifier.isStatic(it.getModifiers()) }.
-                collect { it.name }.
-                findAll { !it.equals("__") && !it.equals("start") }.
-                unique().
-                sort { a, b -> a <=> b }.
-                forEach { javaMethodName ->
-                    String sharpMethodName = SymbolHelper.toCSharp(javaMethodName)
-
-                    csharpClass.append(
-"""
-        public static GraphTraversal ${sharpMethodName}(params object[] args)
-        {
-            return new GraphTraversal().${sharpMethodName}(args);
-        }
-""")
-                }
-        csharpClass.append("\t}\n")
-        csharpClass.append("}")
-
-        final File file = new File(anonymousTraversalFile);
-        file.delete()
-        csharpClass.eachLine { file.append(it + "\n") }
-    }
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/388ecad8/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/CommonContentHelper.groovy
----------------------------------------------------------------------
diff --git a/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/CommonContentHelper.groovy b/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/CommonContentHelper.groovy
deleted file mode 100644
index c44bcfa..0000000
--- a/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/CommonContentHelper.groovy
+++ /dev/null
@@ -1,49 +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.csharp
-
-public final class CommonContentHelper {
-
-    public static String getLicense() {
-        return """#region License
-
-/*
- * 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.
- */
-
-#endregion
-"""
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/388ecad8/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/EnumGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/EnumGenerator.groovy b/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/EnumGenerator.groovy
deleted file mode 100644
index 9214e0f..0000000
--- a/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/EnumGenerator.groovy
+++ /dev/null
@@ -1,62 +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.csharp
-
-import org.apache.tinkerpop.gremlin.util.CoreImports
-
-class EnumGenerator {
-
-    public static void create(final String enumDirectory) {
-
-        for (final Class<? extends Enum> enumClass : CoreImports.getClassImports()
-                .findAll { Enum.class.isAssignableFrom(it) }
-                .sort { a, b -> a.getSimpleName() <=> b.getSimpleName() }
-                .collect()) {
-            createEnum(enumDirectory, enumClass)
-        }
-    }
-
-    private static void createEnum(final String enumDirectory, final Class<? extends Enum> enumClass){
-        final StringBuilder csharpEnum = new StringBuilder()
-
-        csharpEnum.append(CommonContentHelper.getLicense())
-
-        csharpEnum.append(
-                """
-namespace Gremlin.Net.Process.Traversal
-{
-    public enum ${enumClass.getSimpleName()}
-    {
-""")
-        enumClass.getEnumConstants()
-                .sort { a, b -> a.name() <=> b.name() }
-                .each { value -> csharpEnum.append("        ${value.name()},\n"); }
-        csharpEnum.deleteCharAt(csharpEnum.length() - 2)
-
-        csharpEnum.append("    }\n")
-        csharpEnum.append("}")
-
-        final String enumFileName = "${enumDirectory}/${enumClass.getSimpleName()}.cs"
-        final File file = new File(enumFileName);
-        file.delete()
-        csharpEnum.eachLine { file.append(it + "\n") }
-    }
-}
-

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/388ecad8/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/GenerateGremlinCSharp.groovy
----------------------------------------------------------------------
diff --git a/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/GenerateGremlinCSharp.groovy b/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/GenerateGremlinCSharp.groovy
deleted file mode 100644
index 53eba17..0000000
--- a/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/GenerateGremlinCSharp.groovy
+++ /dev/null
@@ -1,32 +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.csharp
-
-public class GenerateGremlinCSharp {
-
-    public static void main(String[] args) {
-        final String csharpDirectory = args[0]
-        GraphTraversalSourceGenerator.create(csharpDirectory + "/Process/Traversal/" + "GraphTraversalSource.cs")
-        GraphTraversalGenerator.create(csharpDirectory + "/Process/Traversal/" + "GraphTraversal.cs")
-        AnonymousTraversalGenerator.create(csharpDirectory + "/Process/Traversal/" + "__.cs")
-        EnumGenerator.create(csharpDirectory + "/Process/Traversal/")
-        PredicateGenerator.create(csharpDirectory + "/Process/Traversal/" + "P.cs")
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/388ecad8/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/GraphTraversalGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/GraphTraversalGenerator.groovy b/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/GraphTraversalGenerator.groovy
deleted file mode 100644
index f8ecfb1..0000000
--- a/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/GraphTraversalGenerator.groovy
+++ /dev/null
@@ -1,76 +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.csharp
-
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal
-
-class GraphTraversalGenerator {
-
-    public static void create(final String graphTraversalFile) {
-
-        final StringBuilder csharpClass = new StringBuilder()
-
-        csharpClass.append(CommonContentHelper.getLicense())
-
-        csharpClass.append(
-"""
-using System.Collections.Generic;
-
-namespace Gremlin.Net.Process.Traversal
-{
-    public class GraphTraversal : DefaultTraversal
-    {
-        public GraphTraversal()
-            : this(new List<ITraversalStrategy>(), new Bytecode())
-        {
-        }
-
-        public GraphTraversal(ICollection<ITraversalStrategy> traversalStrategies, Bytecode bytecode)
-        {
-            TraversalStrategies = traversalStrategies;
-            Bytecode = bytecode;
-        }
-""")
-        GraphTraversal.getMethods().
-                findAll { GraphTraversal.class.equals(it.returnType) }.
-                findAll { !it.name.equals("clone") && !it.name.equals("iterate") }.
-                collect { it.name }.
-                unique().
-                sort { a, b -> a <=> b }.
-                forEach { javaMethodName ->
-                    String sharpMethodName = SymbolHelper.toCSharp(javaMethodName)
-
-                    csharpClass.append(
-                            """
-        public GraphTraversal ${sharpMethodName}(params object[] args)
-        {
-            Bytecode.AddStep("${javaMethodName}", args);
-            return this;
-        }
-""")
-                }
-        csharpClass.append("\t}\n")
-        csharpClass.append("}")
-
-        final File file = new File(graphTraversalFile);
-        file.delete()
-        csharpClass.eachLine { file.append(it + "\n") }
-    }
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/388ecad8/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/GraphTraversalSourceGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/GraphTraversalSourceGenerator.groovy b/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/GraphTraversalSourceGenerator.groovy
deleted file mode 100644
index 6b93d73..0000000
--- a/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/GraphTraversalSourceGenerator.groovy
+++ /dev/null
@@ -1,139 +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.csharp
-
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource
-
-
-class GraphTraversalSourceGenerator {
-
-    public static void create(final String graphTraversalSourceFile) {
-
-        final StringBuilder csharpClass = new StringBuilder()
-
-        csharpClass.append(CommonContentHelper.getLicense())
-
-        csharpClass.append(
-"""
-using System.Collections.Generic;
-using Gremlin.Net.Process.Remote;
-using Gremlin.Net.Process.Traversal.Strategy.Decoration;
-
-namespace Gremlin.Net.Process.Traversal
-{
-    public class GraphTraversalSource
-    {
-        public ICollection<ITraversalStrategy> TraversalStrategies { get; set; }
-        public Bytecode Bytecode { get; set; }
-
-         public GraphTraversalSource()
-            : this(new List<ITraversalStrategy>(), new Bytecode())
-        {
-        }
-
-        public GraphTraversalSource(ICollection<ITraversalStrategy> traversalStrategies, Bytecode bytecode)
-        {
-            TraversalStrategies = traversalStrategies;
-            Bytecode = bytecode;
-        }
-"""
-        )
-
-        // Hold the list of methods with their overloads, so we do not create duplicates
-        HashMap<String, ArrayList<String>> sharpMethods = new HashMap<String, ArrayList<String>>()
-
-        GraphTraversalSource.getMethods(). // SOURCE STEPS
-                findAll { GraphTraversalSource.class.equals(it.returnType) }.
-                findAll {
-                    !it.name.equals("clone") &&
-                            // replace by TraversalSource.Symbols.XXX
-                            !it.name.equals("withBindings") &&
-                            !it.name.equals("withRemote") &&
-                            !it.name.equals("withComputer")
-                }.
-                collect { it.name }.
-                unique().
-                sort { a, b -> a <=> b }.
-                forEach { javaMethodName ->
-                    String sharpMethodName = SymbolHelper.toCSharp(javaMethodName)
-
-                    csharpClass.append(
-"""
-        public GraphTraversalSource ${sharpMethodName}(params object[] args)
-        {
-            var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
-                new Bytecode(Bytecode));
-            source.Bytecode.AddSource("${javaMethodName}\", args);
-            return source;
-        }
-""")
-                }
-
-        csharpClass.append(
-                """
-        public GraphTraversalSource WithBindings(object bindings)
-        {
-            return this;
-        }
-
-        public GraphTraversalSource WithRemote(IRemoteConnection remoteConnection)
-        {
-            var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
-                new Bytecode(Bytecode));
-            source.TraversalStrategies.Add(new RemoteStrategy(remoteConnection));
-            return source;
-        }
-        
-        public GraphTraversalSource WithComputer(string graphComputer = null, int? workers = null, string persist = null,
-            string result = null, ITraversal vertices = null, ITraversal edges = null,
-            Dictionary<string, dynamic> configuration = null)
-        {
-            return WithStrategies(new VertexProgramStrategy(graphComputer, workers, persist, result, vertices, edges, configuration));
-        }
-""")
-
-        GraphTraversalSource.getMethods(). // SPAWN STEPS
-                findAll { GraphTraversal.class.equals(it.returnType) }.
-                collect { it.name }.
-                unique().
-                sort { a, b -> a <=> b }.
-                forEach { javaMethodName ->
-                    String sharpMethodName = SymbolHelper.toCSharp(javaMethodName)
-
-                    csharpClass.append(
-                            """
-        public GraphTraversal ${sharpMethodName}(params object[] args)
-        {
-            var traversal = new GraphTraversal(TraversalStrategies, new Bytecode(Bytecode));
-            traversal.Bytecode.AddStep("${javaMethodName}\", args);
-            return traversal;
-        }
-""")
-                }
-
-        csharpClass.append("\t}\n")
-        csharpClass.append("}")
-
-        final File file = new File(graphTraversalSourceFile);
-        file.delete()
-        csharpClass.eachLine { file.append(it + "\n") }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/388ecad8/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/PredicateGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/PredicateGenerator.groovy b/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/PredicateGenerator.groovy
deleted file mode 100644
index 0748ae9..0000000
--- a/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/PredicateGenerator.groovy
+++ /dev/null
@@ -1,65 +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.csharp
-
-import org.apache.tinkerpop.gremlin.process.traversal.P
-
-import java.lang.reflect.Modifier
-
-class PredicateGenerator {
-
-    public static void create(final String predicateFile) {
-
-        final StringBuilder csharpClass = new StringBuilder()
-
-        csharpClass.append(CommonContentHelper.getLicense())
-
-        csharpClass.append(
-"""
-
-namespace Gremlin.Net.Process.Traversal
-{
-    public class P
-    {""")
-        P.class.getMethods().
-                findAll { Modifier.isStatic(it.getModifiers()) }.
-                findAll { P.class.isAssignableFrom(it.returnType) }.
-                collect { it.name }.
-                unique().
-                sort { a, b -> a <=> b }.
-                each { javaMethodName ->
-                    String sharpMethodName = SymbolHelper.toCSharp(javaMethodName)
-                    csharpClass.append(
-"""
-        public static TraversalPredicate ${sharpMethodName}(params object[] args)
-        {
-            var value = args.Length == 1 ? args[0] : args;
-            return new TraversalPredicate("${javaMethodName}", value);
-        }
-""")
-                }
-        csharpClass.append("\t}\n")
-        csharpClass.append("}")
-
-        final File file = new File(predicateFile)
-        file.delete()
-        csharpClass.eachLine { file.append(it + "\n") }
-    }
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/388ecad8/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/SymbolHelper.groovy
----------------------------------------------------------------------
diff --git a/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/SymbolHelper.groovy b/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/SymbolHelper.groovy
deleted file mode 100644
index 10591d7..0000000
--- a/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/SymbolHelper.groovy
+++ /dev/null
@@ -1,31 +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.csharp
-
-public final class SymbolHelper {
-
-    public static String toCSharp(final String symbol) {
-        return (String) Character.toUpperCase(symbol.charAt(0)) + symbol.substring(1)
-    }
-
-    public static String toJava(final String symbol) {
-        return (String) Character.toLowerCase(symbol.charAt(0)) + symbol.substring(1)
-    }
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/388ecad8/gremlin-dotnet-generator/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet-generator/pom.xml b/gremlin-dotnet-generator/pom.xml
new file mode 100644
index 0000000..a0a9ff6
--- /dev/null
+++ b/gremlin-dotnet-generator/pom.xml
@@ -0,0 +1,75 @@
+<!--
+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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.tinkerpop</groupId>
+        <artifactId>tinkerpop</artifactId>
+        <version>3.2.5-SNAPSHOT</version>
+    </parent>
+    <artifactId>gremlin-dotnet-generator</artifactId>
+    <name>Apache TinkerPop :: Gremlin-DotNet Generator</name>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.tinkerpop</groupId>
+            <artifactId>gremlin-core</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.groovy</groupId>
+            <artifactId>groovy</artifactId>
+            <version>${groovy.version}</version>
+            <classifier>indy</classifier>
+        </dependency>
+    </dependencies>
+    <build>
+        <directory>${basedir}/target</directory>
+        <finalName>${project.artifactId}-${project.version}</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>exec-maven-plugin</artifactId>
+                <version>1.2.1</version>
+                <executions>
+                    <execution>
+                        <id>generate-dotnet</id>
+                        <phase>generate-test-resources</phase>
+                        <goals>
+                            <goal>java</goal>
+                        </goals>
+                        <configuration>
+                            <mainClass>org.apache.tinkerpop.gremlin.dotnet.GenerateGremlinDotNet</mainClass>
+                            <arguments>
+                                <argument>${project.parent.basedir}/gremlin-dotnet/src/Gremlin.Net</argument>
+                            </arguments>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.gmavenplus</groupId>
+                <artifactId>gmavenplus-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/388ecad8/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/AnonymousTraversalGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/AnonymousTraversalGenerator.groovy b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/AnonymousTraversalGenerator.groovy
new file mode 100644
index 0000000..ca5fadb
--- /dev/null
+++ b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/AnonymousTraversalGenerator.groovy
@@ -0,0 +1,71 @@
+/*
+ *  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.dotnet
+
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
+
+import java.lang.reflect.Modifier
+
+class AnonymousTraversalGenerator {
+
+    public static void create(final String anonymousTraversalFile) {
+
+        final StringBuilder csharpClass = new StringBuilder()
+
+        csharpClass.append(CommonContentHelper.getLicense())
+
+        csharpClass.append(
+"""
+namespace Gremlin.Net.Process.Traversal
+{
+    public static class __
+    {
+        public static GraphTraversal Start()
+        {
+            return new GraphTraversal();
+        }
+""")
+        __.getMethods().
+                findAll { GraphTraversal.class.equals(it.returnType) }.
+                findAll { Modifier.isStatic(it.getModifiers()) }.
+                collect { it.name }.
+                findAll { !it.equals("__") && !it.equals("start") }.
+                unique().
+                sort { a, b -> a <=> b }.
+                forEach { javaMethodName ->
+                    String sharpMethodName = SymbolHelper.toCSharp(javaMethodName)
+
+                    csharpClass.append(
+"""
+        public static GraphTraversal ${sharpMethodName}(params object[] args)
+        {
+            return new GraphTraversal().${sharpMethodName}(args);
+        }
+""")
+                }
+        csharpClass.append("\t}\n")
+        csharpClass.append("}")
+
+        final File file = new File(anonymousTraversalFile);
+        file.delete()
+        csharpClass.eachLine { file.append(it + "\n") }
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/388ecad8/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/CommonContentHelper.groovy
----------------------------------------------------------------------
diff --git a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/CommonContentHelper.groovy b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/CommonContentHelper.groovy
new file mode 100644
index 0000000..825e230
--- /dev/null
+++ b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/CommonContentHelper.groovy
@@ -0,0 +1,49 @@
+/*
+ *  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.dotnet
+
+public final class CommonContentHelper {
+
+    public static String getLicense() {
+        return """#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+"""
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/388ecad8/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/EnumGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/EnumGenerator.groovy b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/EnumGenerator.groovy
new file mode 100644
index 0000000..799e001
--- /dev/null
+++ b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/EnumGenerator.groovy
@@ -0,0 +1,62 @@
+/*
+ *  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.dotnet
+
+import org.apache.tinkerpop.gremlin.util.CoreImports
+
+class EnumGenerator {
+
+    public static void create(final String enumDirectory) {
+
+        for (final Class<? extends Enum> enumClass : CoreImports.getClassImports()
+                .findAll { Enum.class.isAssignableFrom(it) }
+                .sort { a, b -> a.getSimpleName() <=> b.getSimpleName() }
+                .collect()) {
+            createEnum(enumDirectory, enumClass)
+        }
+    }
+
+    private static void createEnum(final String enumDirectory, final Class<? extends Enum> enumClass){
+        final StringBuilder csharpEnum = new StringBuilder()
+
+        csharpEnum.append(CommonContentHelper.getLicense())
+
+        csharpEnum.append(
+                """
+namespace Gremlin.Net.Process.Traversal
+{
+    public enum ${enumClass.getSimpleName()}
+    {
+""")
+        enumClass.getEnumConstants()
+                .sort { a, b -> a.name() <=> b.name() }
+                .each { value -> csharpEnum.append("        ${value.name()},\n"); }
+        csharpEnum.deleteCharAt(csharpEnum.length() - 2)
+
+        csharpEnum.append("    }\n")
+        csharpEnum.append("}")
+
+        final String enumFileName = "${enumDirectory}/${enumClass.getSimpleName()}.cs"
+        final File file = new File(enumFileName);
+        file.delete()
+        csharpEnum.eachLine { file.append(it + "\n") }
+    }
+}
+

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/388ecad8/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GenerateGremlinDotNet.groovy
----------------------------------------------------------------------
diff --git a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GenerateGremlinDotNet.groovy b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GenerateGremlinDotNet.groovy
new file mode 100644
index 0000000..0d09d5b
--- /dev/null
+++ b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GenerateGremlinDotNet.groovy
@@ -0,0 +1,32 @@
+/*
+ *  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.dotnet
+
+public class GenerateGremlinDotNet {
+
+    public static void main(String[] args) {
+        final String dotnetDirectory = args[0]
+        GraphTraversalSourceGenerator.create(dotnetDirectory + "/Process/Traversal/" + "GraphTraversalSource.cs")
+        GraphTraversalGenerator.create(dotnetDirectory + "/Process/Traversal/" + "GraphTraversal.cs")
+        AnonymousTraversalGenerator.create(dotnetDirectory + "/Process/Traversal/" + "__.cs")
+        EnumGenerator.create(dotnetDirectory + "/Process/Traversal/")
+        PredicateGenerator.create(dotnetDirectory + "/Process/Traversal/" + "P.cs")
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/388ecad8/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GraphTraversalGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GraphTraversalGenerator.groovy b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GraphTraversalGenerator.groovy
new file mode 100644
index 0000000..58a3991
--- /dev/null
+++ b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GraphTraversalGenerator.groovy
@@ -0,0 +1,76 @@
+/*
+ *  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.dotnet
+
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal
+
+class GraphTraversalGenerator {
+
+    public static void create(final String graphTraversalFile) {
+
+        final StringBuilder csharpClass = new StringBuilder()
+
+        csharpClass.append(CommonContentHelper.getLicense())
+
+        csharpClass.append(
+"""
+using System.Collections.Generic;
+
+namespace Gremlin.Net.Process.Traversal
+{
+    public class GraphTraversal : DefaultTraversal
+    {
+        public GraphTraversal()
+            : this(new List<ITraversalStrategy>(), new Bytecode())
+        {
+        }
+
+        public GraphTraversal(ICollection<ITraversalStrategy> traversalStrategies, Bytecode bytecode)
+        {
+            TraversalStrategies = traversalStrategies;
+            Bytecode = bytecode;
+        }
+""")
+        GraphTraversal.getMethods().
+                findAll { GraphTraversal.class.equals(it.returnType) }.
+                findAll { !it.name.equals("clone") && !it.name.equals("iterate") }.
+                collect { it.name }.
+                unique().
+                sort { a, b -> a <=> b }.
+                forEach { javaMethodName ->
+                    String sharpMethodName = SymbolHelper.toCSharp(javaMethodName)
+
+                    csharpClass.append(
+                            """
+        public GraphTraversal ${sharpMethodName}(params object[] args)
+        {
+            Bytecode.AddStep("${javaMethodName}", args);
+            return this;
+        }
+""")
+                }
+        csharpClass.append("\t}\n")
+        csharpClass.append("}")
+
+        final File file = new File(graphTraversalFile);
+        file.delete()
+        csharpClass.eachLine { file.append(it + "\n") }
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/388ecad8/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GraphTraversalSourceGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GraphTraversalSourceGenerator.groovy b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GraphTraversalSourceGenerator.groovy
new file mode 100644
index 0000000..fce4b70
--- /dev/null
+++ b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GraphTraversalSourceGenerator.groovy
@@ -0,0 +1,139 @@
+/*
+ *  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.dotnet
+
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource
+
+
+class GraphTraversalSourceGenerator {
+
+    public static void create(final String graphTraversalSourceFile) {
+
+        final StringBuilder csharpClass = new StringBuilder()
+
+        csharpClass.append(CommonContentHelper.getLicense())
+
+        csharpClass.append(
+"""
+using System.Collections.Generic;
+using Gremlin.Net.Process.Remote;
+using Gremlin.Net.Process.Traversal.Strategy.Decoration;
+
+namespace Gremlin.Net.Process.Traversal
+{
+    public class GraphTraversalSource
+    {
+        public ICollection<ITraversalStrategy> TraversalStrategies { get; set; }
+        public Bytecode Bytecode { get; set; }
+
+         public GraphTraversalSource()
+            : this(new List<ITraversalStrategy>(), new Bytecode())
+        {
+        }
+
+        public GraphTraversalSource(ICollection<ITraversalStrategy> traversalStrategies, Bytecode bytecode)
+        {
+            TraversalStrategies = traversalStrategies;
+            Bytecode = bytecode;
+        }
+"""
+        )
+
+        // Hold the list of methods with their overloads, so we do not create duplicates
+        HashMap<String, ArrayList<String>> sharpMethods = new HashMap<String, ArrayList<String>>()
+
+        GraphTraversalSource.getMethods(). // SOURCE STEPS
+                findAll { GraphTraversalSource.class.equals(it.returnType) }.
+                findAll {
+                    !it.name.equals("clone") &&
+                            // replace by TraversalSource.Symbols.XXX
+                            !it.name.equals("withBindings") &&
+                            !it.name.equals("withRemote") &&
+                            !it.name.equals("withComputer")
+                }.
+                collect { it.name }.
+                unique().
+                sort { a, b -> a <=> b }.
+                forEach { javaMethodName ->
+                    String sharpMethodName = SymbolHelper.toCSharp(javaMethodName)
+
+                    csharpClass.append(
+"""
+        public GraphTraversalSource ${sharpMethodName}(params object[] args)
+        {
+            var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
+                new Bytecode(Bytecode));
+            source.Bytecode.AddSource("${javaMethodName}\", args);
+            return source;
+        }
+""")
+                }
+
+        csharpClass.append(
+                """
+        public GraphTraversalSource WithBindings(object bindings)
+        {
+            return this;
+        }
+
+        public GraphTraversalSource WithRemote(IRemoteConnection remoteConnection)
+        {
+            var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
+                new Bytecode(Bytecode));
+            source.TraversalStrategies.Add(new RemoteStrategy(remoteConnection));
+            return source;
+        }
+        
+        public GraphTraversalSource WithComputer(string graphComputer = null, int? workers = null, string persist = null,
+            string result = null, ITraversal vertices = null, ITraversal edges = null,
+            Dictionary<string, dynamic> configuration = null)
+        {
+            return WithStrategies(new VertexProgramStrategy(graphComputer, workers, persist, result, vertices, edges, configuration));
+        }
+""")
+
+        GraphTraversalSource.getMethods(). // SPAWN STEPS
+                findAll { GraphTraversal.class.equals(it.returnType) }.
+                collect { it.name }.
+                unique().
+                sort { a, b -> a <=> b }.
+                forEach { javaMethodName ->
+                    String sharpMethodName = SymbolHelper.toCSharp(javaMethodName)
+
+                    csharpClass.append(
+                            """
+        public GraphTraversal ${sharpMethodName}(params object[] args)
+        {
+            var traversal = new GraphTraversal(TraversalStrategies, new Bytecode(Bytecode));
+            traversal.Bytecode.AddStep("${javaMethodName}\", args);
+            return traversal;
+        }
+""")
+                }
+
+        csharpClass.append("\t}\n")
+        csharpClass.append("}")
+
+        final File file = new File(graphTraversalSourceFile);
+        file.delete()
+        csharpClass.eachLine { file.append(it + "\n") }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/388ecad8/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/PredicateGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/PredicateGenerator.groovy b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/PredicateGenerator.groovy
new file mode 100644
index 0000000..2633de6
--- /dev/null
+++ b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/PredicateGenerator.groovy
@@ -0,0 +1,65 @@
+/*
+ *  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.dotnet
+
+import org.apache.tinkerpop.gremlin.process.traversal.P
+
+import java.lang.reflect.Modifier
+
+class PredicateGenerator {
+
+    public static void create(final String predicateFile) {
+
+        final StringBuilder csharpClass = new StringBuilder()
+
+        csharpClass.append(CommonContentHelper.getLicense())
+
+        csharpClass.append(
+"""
+
+namespace Gremlin.Net.Process.Traversal
+{
+    public class P
+    {""")
+        P.class.getMethods().
+                findAll { Modifier.isStatic(it.getModifiers()) }.
+                findAll { P.class.isAssignableFrom(it.returnType) }.
+                collect { it.name }.
+                unique().
+                sort { a, b -> a <=> b }.
+                each { javaMethodName ->
+                    String sharpMethodName = SymbolHelper.toCSharp(javaMethodName)
+                    csharpClass.append(
+"""
+        public static TraversalPredicate ${sharpMethodName}(params object[] args)
+        {
+            var value = args.Length == 1 ? args[0] : args;
+            return new TraversalPredicate("${javaMethodName}", value);
+        }
+""")
+                }
+        csharpClass.append("\t}\n")
+        csharpClass.append("}")
+
+        final File file = new File(predicateFile)
+        file.delete()
+        csharpClass.eachLine { file.append(it + "\n") }
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/388ecad8/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/SymbolHelper.groovy
----------------------------------------------------------------------
diff --git a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/SymbolHelper.groovy b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/SymbolHelper.groovy
new file mode 100644
index 0000000..6c237e8
--- /dev/null
+++ b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/SymbolHelper.groovy
@@ -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.
+ */
+
+package org.apache.tinkerpop.gremlin.dotnet
+
+public final class SymbolHelper {
+
+    public static String toCSharp(final String symbol) {
+        return (String) Character.toUpperCase(symbol.charAt(0)) + symbol.substring(1)
+    }
+
+    public static String toJava(final String symbol) {
+        return (String) Character.toLowerCase(symbol.charAt(0)) + symbol.substring(1)
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/388ecad8/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index b681c7c..2414ef8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -119,7 +119,7 @@ limitations under the License.
         <module>gremlin-groovy</module>
         <module>tinkergraph-gremlin</module>
         <module>gremlin-python</module>
-        <module>gremlin-csharp-generator</module>
+        <module>gremlin-dotnet-generator</module>
         <module>gremlin-dotnet</module>
         <module>hadoop-gremlin</module>
         <module>spark-gremlin</module>


[41/50] [abbrv] tinkerpop git commit: Gremlin .NET: GraphSON3 Deserialization

Posted by sp...@apache.org.
Gremlin .NET: GraphSON3 Deserialization


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

Branch: refs/heads/master
Commit: 6b3fdcb8dc076f2d4c8e00f0058ff4aa0c665ce5
Parents: 5c3cc5a
Author: Jorge Bay Gondra <jo...@gmail.com>
Authored: Fri Jul 14 16:53:19 2017 +0200
Committer: Jorge Bay Gondra <jo...@gmail.com>
Committed: Fri Jul 14 16:53:19 2017 +0200

----------------------------------------------------------------------
 .../src/Gremlin.Net/Driver/ConnectionFactory.cs |   5 +-
 .../src/Gremlin.Net/Driver/GremlinClient.cs     |   2 +-
 .../Structure/IO/GraphSON/GraphSON2Reader.cs    |  50 ++++++
 .../Structure/IO/GraphSON/GraphSON3Reader.cs    |  66 +++++++
 .../Structure/IO/GraphSON/GraphSON3Writer.cs    |  57 ++++++
 .../Structure/IO/GraphSON/GraphSONReader.cs     |  19 +-
 .../Structure/IO/GraphSON/GraphSONWriter.cs     |  17 +-
 .../Structure/IO/GraphSON/ListSerializer.cs     |  54 ++++++
 .../Structure/IO/GraphSON/MapSerializer.cs      |  52 ++++++
 .../Structure/IO/GraphSON/SetSerializer.cs      |  48 +++++
 .../IO/GraphSON/GraphSONReaderTests.cs          | 173 +++++++++++++------
 11 files changed, 473 insertions(+), 70 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6b3fdcb8/gremlin-dotnet/src/Gremlin.Net/Driver/ConnectionFactory.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/ConnectionFactory.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/ConnectionFactory.cs
index 0041a67..e3fd068 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/ConnectionFactory.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/ConnectionFactory.cs
@@ -21,6 +21,7 @@
 
 #endregion
 
+using System;
 using Gremlin.Net.Structure.IO.GraphSON;
 
 namespace Gremlin.Net.Driver
@@ -35,8 +36,8 @@ namespace Gremlin.Net.Driver
             GraphSONWriter graphSONWriter)
         {
             _gremlinServer = gremlinServer;
-            _graphSONReader = graphSONReader;
-            _graphSONWriter = graphSONWriter;
+            _graphSONReader = graphSONReader ?? throw new ArgumentNullException(nameof(graphSONReader));
+            _graphSONWriter = graphSONWriter ?? throw new ArgumentNullException(nameof(graphSONWriter));
         }
 
         public Connection CreateConnection()

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6b3fdcb8/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs
index 46dd8a6..a81c17e 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs
@@ -45,7 +45,7 @@ namespace Gremlin.Net.Driver
         public GremlinClient(GremlinServer gremlinServer, GraphSONReader graphSONReader = null,
             GraphSONWriter graphSONWriter = null)
         {
-            var reader = graphSONReader ?? new GraphSONReader();
+            var reader = graphSONReader ?? new GraphSON3Reader();
             var writer = graphSONWriter ?? new GraphSONWriter();
             var connectionFactory = new ConnectionFactory(gremlinServer, reader, writer);
             _connectionPool = new ConnectionPool(connectionFactory);

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6b3fdcb8/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON2Reader.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON2Reader.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON2Reader.cs
new file mode 100644
index 0000000..90c9e4d
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON2Reader.cs
@@ -0,0 +1,50 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System.Collections.Generic;
+
+namespace Gremlin.Net.Structure.IO.GraphSON
+{
+    /// <summary>
+    /// Handles deserialization of GraphSON3 data.
+    /// </summary>
+    public class GraphSON2Reader : GraphSONReader
+    {
+        /// <summary>
+        /// Creates a new instance of <see cref="GraphSON2Reader"/>.
+        /// </summary>
+        public GraphSON2Reader()
+        {
+            
+        }
+
+        /// <summary>
+        /// Creates a new instance of <see cref="GraphSON2Reader"/>.
+        /// </summary>
+        public GraphSON2Reader(IReadOnlyDictionary<string, IGraphSONDeserializer> deserializerByGraphSONType) : 
+            base(deserializerByGraphSONType)
+        {
+            
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6b3fdcb8/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON3Reader.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON3Reader.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON3Reader.cs
new file mode 100644
index 0000000..4bc7878
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON3Reader.cs
@@ -0,0 +1,66 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System.Collections.Generic;
+
+namespace Gremlin.Net.Structure.IO.GraphSON
+{
+    /// <summary>
+    /// Handles deserialization of GraphSON3 data.
+    /// </summary>
+    public class GraphSON3Reader : GraphSONReader
+    {
+        private static readonly IDictionary<string, IGraphSONDeserializer> GraphSON3SpecificDeserializers =
+            new Dictionary<string, IGraphSONDeserializer>
+            {
+                { "g:List", new ListSerializer() },
+                { "g:Set", new SetSerializer() },
+                { "g:Map", new MapSerializer() }
+            };
+        
+        /// <summary>
+        ///     Creates a new instance of <see cref="GraphSON3Reader"/>.
+        /// </summary>
+        public GraphSON3Reader()
+        {
+            foreach (var kv in GraphSON3SpecificDeserializers)
+            {
+                Deserializers[kv.Key] = kv.Value;
+            }
+        }
+
+        /// <summary>
+        ///     Creates a new instance of <see cref="GraphSON3Reader"/>.
+        /// </summary>
+        /// <param name="deserializerByGraphSONType">
+        ///     Overrides <see cref="IGraphSONDeserializer" /> instances by their type identifier.
+        /// </param>
+        public GraphSON3Reader(IReadOnlyDictionary<string, IGraphSONDeserializer> deserializerByGraphSONType) : this()
+        {
+            foreach (var deserializerAndGraphSONType in deserializerByGraphSONType)
+            {
+                Deserializers[deserializerAndGraphSONType.Key] = deserializerAndGraphSONType.Value;   
+            }
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6b3fdcb8/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON3Writer.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON3Writer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON3Writer.cs
new file mode 100644
index 0000000..96c303c
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON3Writer.cs
@@ -0,0 +1,57 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace Gremlin.Net.Structure.IO.GraphSON
+{
+    /// <summary>
+    /// Handles deserialization of GraphSON3 data.
+    /// </summary>
+    public class GraphSON3Writer : GraphSONWriter
+    {
+        /// <summary>
+        /// Creates a new instance of <see cref="GraphSON3Writer"/>.
+        /// </summary>
+        public GraphSON3Writer()
+        {
+            // TODO: Include GraphSON3 specific serializers
+        }
+
+        /// <summary>
+        ///     Creates a new instance of <see cref="GraphSON3Writer"/>.
+        /// </summary>
+        /// <param name="customSerializerByType">
+        ///     <see cref="IGraphSONSerializer" /> serializers identified by their
+        ///     <see cref="Type" />.
+        /// </param>
+        public GraphSON3Writer(IReadOnlyDictionary<Type, IGraphSONSerializer> customSerializerByType) : this()
+        {
+            foreach (var serializerAndType in customSerializerByType)
+            {
+                Serializers[serializerAndType.Key] = serializerAndType.Value;
+            }
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6b3fdcb8/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONReader.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONReader.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONReader.cs
index aa1fc48..ee54a9b 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONReader.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONReader.cs
@@ -31,9 +31,12 @@ namespace Gremlin.Net.Structure.IO.GraphSON
     /// <summary>
     ///     Allows to deserialize GraphSON to objects.
     /// </summary>
-    public class GraphSONReader
+    public abstract class GraphSONReader
     {
-        private readonly Dictionary<string, IGraphSONDeserializer> _deserializerByGraphSONType = new Dictionary
+        /// <summary>
+        /// Contains the <see cref="IGraphSONDeserializer" /> instances by their type identifier. 
+        /// </summary>
+        protected readonly Dictionary<string, IGraphSONDeserializer> Deserializers = new Dictionary
             <string, IGraphSONDeserializer>
             {
                 {"g:Traverser", new TraverserReader()},
@@ -54,7 +57,7 @@ namespace Gremlin.Net.Structure.IO.GraphSON
         /// <summary>
         ///     Initializes a new instance of the <see cref="GraphSONReader" /> class.
         /// </summary>
-        public GraphSONReader()
+        protected GraphSONReader()
         {
         }
 
@@ -65,10 +68,10 @@ namespace Gremlin.Net.Structure.IO.GraphSON
         ///     <see cref="IGraphSONDeserializer" /> deserializers identified by their
         ///     GraphSON type.
         /// </param>
-        public GraphSONReader(IReadOnlyDictionary<string, IGraphSONDeserializer> deserializerByGraphSONType)
+        protected GraphSONReader(IReadOnlyDictionary<string, IGraphSONDeserializer> deserializerByGraphSONType)
         {
             foreach (var deserializerAndGraphSONType in deserializerByGraphSONType)
-                _deserializerByGraphSONType[deserializerAndGraphSONType.Key] = deserializerAndGraphSONType.Value;
+                Deserializers[deserializerAndGraphSONType.Key] = deserializerAndGraphSONType.Value;
         }
 
         /// <summary>
@@ -76,7 +79,7 @@ namespace Gremlin.Net.Structure.IO.GraphSON
         /// </summary>
         /// <param name="graphSonData">The GraphSON collection to deserialize.</param>
         /// <returns>The deserialized object.</returns>
-        public dynamic ToObject(IEnumerable<JToken> graphSonData)
+        public virtual dynamic ToObject(IEnumerable<JToken> graphSonData)
         {
             return graphSonData.Select(graphson => ToObject(graphson));
         }
@@ -86,7 +89,7 @@ namespace Gremlin.Net.Structure.IO.GraphSON
         /// </summary>
         /// <param name="jToken">The GraphSON to deserialize.</param>
         /// <returns>The deserialized object.</returns>
-        public dynamic ToObject(JToken jToken)
+        public virtual dynamic ToObject(JToken jToken)
         {
             if (jToken is JArray)
                 return jToken.Select(t => ToObject(t));
@@ -104,7 +107,7 @@ namespace Gremlin.Net.Structure.IO.GraphSON
         private dynamic ReadTypedValue(JToken typedValue)
         {
             var graphSONType = (string) typedValue[GraphSONTokens.TypeKey];
-            return _deserializerByGraphSONType[graphSONType].Objectify(typedValue[GraphSONTokens.ValueKey], this);
+            return Deserializers[graphSONType].Objectify(typedValue[GraphSONTokens.ValueKey], this);
         }
 
         private dynamic ReadDictionary(JToken jtokenDict)

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6b3fdcb8/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONWriter.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONWriter.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONWriter.cs
index ba632b1..db0ae7d 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONWriter.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONWriter.cs
@@ -38,7 +38,10 @@ namespace Gremlin.Net.Structure.IO.GraphSON
     /// </summary>
     public class GraphSONWriter
     {
-        private readonly Dictionary<Type, IGraphSONSerializer> _serializerByType = new Dictionary
+        /// <summary>
+        /// Contains the information of serializers by type.
+        /// </summary>
+        protected readonly Dictionary<Type, IGraphSONSerializer> Serializers = new Dictionary
             <Type, IGraphSONSerializer>
             {
                 {typeof(ITraversal), new TraversalSerializer()},
@@ -77,7 +80,7 @@ namespace Gremlin.Net.Structure.IO.GraphSON
         public GraphSONWriter(IReadOnlyDictionary<Type, IGraphSONSerializer> customSerializerByType)
         {
             foreach (var serializerAndType in customSerializerByType)
-                _serializerByType[serializerAndType.Key] = serializerAndType.Value;
+                Serializers[serializerAndType.Key] = serializerAndType.Value;
         }
 
         /// <summary>
@@ -85,7 +88,7 @@ namespace Gremlin.Net.Structure.IO.GraphSON
         /// </summary>
         /// <param name="objectData">The object to serialize.</param>
         /// <returns>The serialized GraphSON.</returns>
-        public string WriteObject(dynamic objectData)
+        public virtual string WriteObject(dynamic objectData)
         {
             return JsonConvert.SerializeObject(ToDict(objectData));
         }
@@ -104,15 +107,15 @@ namespace Gremlin.Net.Structure.IO.GraphSON
 
         private bool TryGetSerializerFor(out IGraphSONSerializer serializer, Type type)
         {
-            if (_serializerByType.ContainsKey(type))
+            if (Serializers.ContainsKey(type))
             {
-                serializer = _serializerByType[type];
+                serializer = Serializers[type];
                 return true;
             }
-            foreach (var supportedType in _serializerByType.Keys)
+            foreach (var supportedType in Serializers.Keys)
                 if (supportedType.IsAssignableFrom(type))
                 {
-                    serializer = _serializerByType[supportedType];
+                    serializer = Serializers[supportedType];
                     return true;
                 }
             serializer = null;

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6b3fdcb8/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/ListSerializer.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/ListSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/ListSerializer.cs
new file mode 100644
index 0000000..f738ac8
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/ListSerializer.cs
@@ -0,0 +1,54 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System.Collections.Generic;
+using Newtonsoft.Json.Linq;
+
+namespace Gremlin.Net.Structure.IO.GraphSON
+{
+    internal class ListSerializer : IGraphSONDeserializer, IGraphSONSerializer
+    {
+        private static readonly IReadOnlyList<object> EmptyList = new object[0];
+        
+        public dynamic Objectify(JToken graphsonObject, GraphSONReader reader)
+        {
+            var jArray = graphsonObject as JArray;
+            if (jArray == null)
+            {
+                return EmptyList;
+            }
+            var result = new object[jArray.Count];
+            for (var i = 0; i < result.Length; i++)
+            {
+                result[i] = reader.ToObject(jArray[i]);
+            }
+            // object[] implements IList<object>
+            return result;
+        }
+
+        public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
+        {
+            throw new System.NotImplementedException();
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6b3fdcb8/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/MapSerializer.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/MapSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/MapSerializer.cs
new file mode 100644
index 0000000..5f9c326
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/MapSerializer.cs
@@ -0,0 +1,52 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System.Collections.Generic;
+using Newtonsoft.Json.Linq;
+
+namespace Gremlin.Net.Structure.IO.GraphSON
+{
+    internal class MapSerializer : IGraphSONDeserializer, IGraphSONSerializer
+    {
+        public dynamic Objectify(JToken graphsonObject, GraphSONReader reader)
+        {
+            var jArray = graphsonObject as JArray;
+            if (jArray == null)
+            {
+                return new Dictionary<object, object>(0);
+            }
+            var result = new Dictionary<object, object>(jArray.Count / 2);
+            for (var i = 0; i < jArray.Count; i += 2)
+            {
+                result[reader.ToObject(jArray[i])] = reader.ToObject(jArray[i + 1]);
+            }
+            // IDictionary<object, object>
+            return result;
+        }
+        
+        public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
+        {
+            throw new System.NotImplementedException();
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6b3fdcb8/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/SetSerializer.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/SetSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/SetSerializer.cs
new file mode 100644
index 0000000..ed2a973
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/SetSerializer.cs
@@ -0,0 +1,48 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System.Collections.Generic;
+using System.Linq;
+using Newtonsoft.Json.Linq;
+
+namespace Gremlin.Net.Structure.IO.GraphSON
+{
+    internal class SetSerializer : IGraphSONDeserializer, IGraphSONSerializer
+    {
+        public dynamic Objectify(JToken graphsonObject, GraphSONReader reader)
+        {
+            var jArray = graphsonObject as JArray;
+            if (jArray == null)
+            {
+                return new HashSet<object>();
+            }
+            // ISet<object>
+            return new HashSet<object>(jArray.Select(reader.ToObject));
+        }
+
+        public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
+        {
+            throw new System.NotImplementedException();
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6b3fdcb8/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONReaderTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONReaderTests.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONReaderTests.cs
index 747a94e..e2c6dc9 100644
--- a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONReaderTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONReaderTests.cs
@@ -33,9 +33,30 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
 {
     public class GraphSONReaderTests
     {
-        private GraphSONReader CreateStandardGraphSONReader()
+        /// <summary>
+        /// Parameters for each test supporting multiple versions of GraphSON
+        /// </summary>
+        public static IEnumerable<object[]> Versions => new []
         {
-            return new GraphSONReader();
+            new object[] { 2 },
+            new object[] { 3 }
+        };
+        
+        /// <summary>
+        /// Parameters for each collections test supporting multiple versions of GraphSON
+        /// </summary>
+        public static IEnumerable<object[]> VersionsSupportingCollections => new []
+        {
+            new object[] { 3 }
+        };
+        
+        private GraphSONReader CreateStandardGraphSONReader(int version)
+        {
+            if (version == 3)
+            {
+                return new GraphSON3Reader();
+            }
+            return new GraphSON2Reader();
         }
 
         [Fact]
@@ -45,7 +66,7 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             {
                 {"NS:TestClass", new TestGraphSONDeserializer()}
             };
-            var reader = new GraphSONReader(deserializerByGraphSONType);
+            var reader = new GraphSON2Reader(deserializerByGraphSONType);
             var graphSON = "{\"@type\":\"NS:TestClass\",\"@value\":\"test\"}";
 
             var jObject = JObject.Parse(graphSON);
@@ -63,7 +84,7 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             {
                 {overrideTypeString, customSerializerMock.Object}
             };
-            var reader = new GraphSONReader(customSerializerByType);
+            var reader = new GraphSON2Reader(customSerializerByType);
 
 
             reader.ToObject(JObject.Parse($"{{\"@type\":\"{overrideTypeString}\",\"@value\":12}}"));
@@ -71,11 +92,11 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             customSerializerMock.Verify(m => m.Objectify(It.IsAny<JToken>(), It.IsAny<GraphSONReader>()));
         }
 
-        [Fact]
-        public void ShouldDeserializeDateToDateTime()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldDeserializeDateToDateTime(int version)
         {
             var graphSon = "{\"@type\":\"g:Date\",\"@value\":1475583442552}";
-            var reader = CreateStandardGraphSONReader();
+            var reader = CreateStandardGraphSONReader(version);
 
             DateTime readDateTime = reader.ToObject(JObject.Parse(graphSon));
 
@@ -83,11 +104,12 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal(expectedDateTime, readDateTime);
         }
 
-        [Fact]
-        public void ShouldDeserializeDictionary()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldDeserializeDictionary(int version)
         {
+            Console.WriteLine("Starting");
             var serializedDict = "{\"age\":[{\"@type\":\"g:Int32\",\"@value\":29}],\"name\":[\"marko\"]}";
-            var reader = CreateStandardGraphSONReader();
+            var reader = CreateStandardGraphSONReader(version);
 
             var jObject = JObject.Parse(serializedDict);
             var deserializedDict = reader.ToObject(jObject);
@@ -100,12 +122,12 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal(expectedDict, deserializedDict);
         }
 
-        [Fact]
-        public void ShouldDeserializeEdge()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldDeserializeEdge(int version)
         {
             var graphSon =
                 "{\"@type\":\"g:Edge\", \"@value\":{\"id\":{\"@type\":\"g:Int64\",\"@value\":17},\"label\":\"knows\",\"inV\":\"x\",\"outV\":\"y\",\"inVLabel\":\"xLab\",\"properties\":{\"aKey\":\"aValue\",\"bKey\":true}}}";
-            var reader = CreateStandardGraphSONReader();
+            var reader = CreateStandardGraphSONReader(version);
 
             Edge readEdge = reader.ToObject(JObject.Parse(graphSon));
 
@@ -115,11 +137,11 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal(new Vertex("y"), readEdge.OutV);
         }
 
-        [Fact]
-        public void ShouldDeserializeInt()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldDeserializeInt(int version)
         {
             var serializedValue = "{\"@type\":\"g:Int32\",\"@value\":5}";
-            var reader = CreateStandardGraphSONReader();
+            var reader = CreateStandardGraphSONReader(version);
 
             var jObject = JObject.Parse(serializedValue);
             var deserializedValue = reader.ToObject(jObject);
@@ -127,11 +149,11 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal(5, deserializedValue);
         }
 
-        [Fact]
-        public void ShouldDeserializeLong()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldDeserializeLong(int version)
         {
             var serializedValue = "{\"@type\":\"g:Int64\",\"@value\":5}";
-            var reader = CreateStandardGraphSONReader();
+            var reader = CreateStandardGraphSONReader(version);
 
             var jObject = JObject.Parse(serializedValue);
             var deserializedValue = reader.ToObject(jObject);
@@ -139,11 +161,11 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal((long) 5, deserializedValue);
         }
 
-        [Fact]
-        public void ShouldDeserializeFloat()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldDeserializeFloat(int version)
         {
             var serializedValue = "{\"@type\":\"g:Float\",\"@value\":31.3}";
-            var reader = CreateStandardGraphSONReader();
+            var reader = CreateStandardGraphSONReader(version);
 
             var jObject = JObject.Parse(serializedValue);
             var deserializedValue = reader.ToObject(jObject);
@@ -151,11 +173,11 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal((float) 31.3, deserializedValue);
         }
 
-        [Fact]
-        public void ShouldDeserializeDouble()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldDeserializeDouble(int version)
         {
             var serializedValue = "{\"@type\":\"g:Double\",\"@value\":31.2}";
-            var reader = CreateStandardGraphSONReader();
+            var reader = CreateStandardGraphSONReader(version);
 
             var jObject = JObject.Parse(serializedValue);
             var deserializedValue = reader.ToObject(jObject);
@@ -163,11 +185,11 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal(31.2, deserializedValue);
         }
 
-        [Fact]
-        public void ShouldDeserializeList()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldDeserializeList(int version)
         {
             var serializedValue = "[{\"@type\":\"g:Int32\",\"@value\":5},{\"@type\":\"g:Int32\",\"@value\":6}]";
-            var reader = CreateStandardGraphSONReader();
+            var reader = CreateStandardGraphSONReader(version);
 
             var jObject = JArray.Parse(serializedValue);
             var deserializedValue = reader.ToObject(jObject);
@@ -175,12 +197,12 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal(new List<object> {5, 6}, deserializedValue);
         }
 
-        [Fact]
-        public void ShouldDeserializePath()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldDeserializePath(int version)
         {
             var graphSon =
                 "{\"@type\":\"g:Path\",\"@value\":{\"labels\":[[\"a\"],[\"b\",\"c\"],[]],\"objects\":[{\"@type\":\"g:Vertex\",\"@value\":{\"id\":{\"@type\":\"g:Int32\",\"@value\":1},\"label\":\"person\",\"properties\":{\"name\":[{\"@type\":\"g:VertexProperty\",\"@value\":{\"id\":{\"@type\":\"g:Int64\",\"@value\":0},\"value\":\"marko\",\"label\":\"name\"}}],\"age\":[{\"@type\":\"g:VertexProperty\",\"@value\":{\"id\":{\"@type\":\"g:Int64\",\"@value\":1},\"value\":{\"@type\":\"g:Int32\",\"@value\":29},\"label\":\"age\"}}]}}},{\"@type\":\"g:Vertex\",\"@value\":{\"id\":{\"@type\":\"g:Int32\",\"@value\":3},\"label\":\"software\",\"properties\":{\"name\":[{\"@type\":\"g:VertexProperty\",\"@value\":{\"id\":{\"@type\":\"g:Int64\",\"@value\":4},\"value\":\"lop\",\"label\":\"name\"}}],\"lang\":[{\"@type\":\"g:VertexProperty\",\"@value\":{\"id\":{\"@type\":\"g:Int64\",\"@value\":5},\"value\":\"java\",\"label\":\"lang\"}}]}}},\"lop\"]}}";
-            var reader = CreateStandardGraphSONReader();
+            var reader = CreateStandardGraphSONReader(version);
 
             Path readPath = reader.ToObject(JObject.Parse(graphSon));
 
@@ -191,12 +213,12 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal(3, readPath.Count);
         }
 
-        [Fact]
-        public void ShouldDeserializePropertyWithEdgeElement()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldDeserializePropertyWithEdgeElement(int version)
         {
             var graphSon =
                 "{\"@type\":\"g:Property\",\"@value\":{\"key\":\"aKey\",\"value\":{\"@type\":\"g:Int64\",\"@value\":17},\"element\":{\"@type\":\"g:Edge\",\"@value\":{\"id\":{\"@type\":\"g:Int64\",\"@value\":122},\"label\":\"knows\",\"inV\":\"x\",\"outV\":\"y\",\"inVLabel\":\"xLab\"}}}}";
-            var reader = CreateStandardGraphSONReader();
+            var reader = CreateStandardGraphSONReader(version);
 
             Property readProperty = reader.ToObject(JObject.Parse(graphSon));
 
@@ -210,11 +232,11 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal("y", edge.OutV.Id);
         }
 
-        [Fact]
-        public void ShouldDeserializeTimestampToDateTime()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldDeserializeTimestampToDateTime(int version)
         {
             var graphSon = "{\"@type\":\"g:Timestamp\",\"@value\":1475583442558}";
-            var reader = CreateStandardGraphSONReader();
+            var reader = CreateStandardGraphSONReader(version);
 
             DateTime readDateTime = reader.ToObject(JObject.Parse(graphSon));
 
@@ -222,23 +244,23 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal(expectedDateTime, readDateTime);
         }
 
-        [Fact]
-        public void ShouldDeserializeGuid()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldDeserializeGuid(int version)
         {
             var graphSon = "{\"@type\":\"g:UUID\",\"@value\":\"41d2e28a-20a4-4ab0-b379-d810dede3786\"}";
-            var reader = CreateStandardGraphSONReader();
+            var reader = CreateStandardGraphSONReader(version);
 
             Guid readGuid = reader.ToObject(JObject.Parse(graphSon));
 
             Assert.Equal(Guid.Parse("41d2e28a-20a4-4ab0-b379-d810dede3786"), readGuid);
         }
 
-        [Fact]
-        public void ShouldDeserializeVertexProperty()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldDeserializeVertexProperty(int version)
         {
             var graphSon =
                 "{\"@type\":\"g:VertexProperty\",\"@value\":{\"id\":\"anId\",\"label\":\"aKey\",\"value\":true,\"vertex\":{\"@type\":\"g:Int32\",\"@value\":9}}}";
-            var reader = CreateStandardGraphSONReader();
+            var reader = CreateStandardGraphSONReader(version);
 
             VertexProperty readVertexProperty = reader.ToObject(JObject.Parse(graphSon));
 
@@ -248,12 +270,12 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.NotNull(readVertexProperty.Vertex);
         }
 
-        [Fact]
-        public void ShouldDeserializeVertexPropertyWithLabel()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldDeserializeVertexPropertyWithLabel(int version)
         {
             var graphSon =
                 "{\"@type\":\"g:VertexProperty\", \"@value\":{\"id\":{\"@type\":\"g:Int32\",\"@value\":1},\"label\":\"name\",\"value\":\"marko\"}}";
-            var reader = CreateStandardGraphSONReader();
+            var reader = CreateStandardGraphSONReader(version);
 
             VertexProperty readVertexProperty = reader.ToObject(JObject.Parse(graphSon));
 
@@ -263,23 +285,23 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Null(readVertexProperty.Vertex);
         }
 
-        [Fact]
-        public void ShouldDeserializeVertex()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldDeserializeVertex(int version)
         {
             var graphSon = "{\"@type\":\"g:Vertex\", \"@value\":{\"id\":{\"@type\":\"g:Float\",\"@value\":45.23}}}";
-            var reader = CreateStandardGraphSONReader();
+            var reader = CreateStandardGraphSONReader(version);
 
             var readVertex = reader.ToObject(JObject.Parse(graphSon));
 
             Assert.Equal(new Vertex(45.23f), readVertex);
         }
 
-        [Fact]
-        public void ShouldDeserializeVertexWithEdges()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldDeserializeVertexWithEdges(int version)
         {
             var graphSon =
                 "{\"@type\":\"g:Vertex\", \"@value\":{\"id\":{\"@type\":\"g:Int32\",\"@value\":1},\"label\":\"person\",\"outE\":{\"created\":[{\"id\":{\"@type\":\"g:Int32\",\"@value\":9},\"inV\":{\"@type\":\"g:Int32\",\"@value\":3},\"properties\":{\"weight\":{\"@type\":\"g:Double\",\"@value\":0.4}}}],\"knows\":[{\"id\":{\"@type\":\"g:Int32\",\"@value\":7},\"inV\":{\"@type\":\"g:Int32\",\"@value\":2},\"properties\":{\"weight\":{\"@type\":\"g:Double\",\"@value\":0.5}}},{\"id\":{\"@type\":\"g:Int32\",\"@value\":8},\"inV\":{\"@type\":\"g:Int32\",\"@value\":4},\"properties\":{\"weight\":{\"@type\":\"g:Double\",\"@value\":1.0}}}]},\"properties\":{\"name\":[{\"id\":{\"@type\":\"g:Int64\",\"@value\":0},\"value\":\"marko\"}],\"age\":[{\"id\":{\"@type\":\"g:Int64\",\"@value\":1},\"value\":{\"@type\":\"g:Int32\",\"@value\":29}}]}}}";
-            var reader = CreateStandardGraphSONReader();
+            var reader = CreateStandardGraphSONReader(version);
 
             var readVertex = reader.ToObject(JObject.Parse(graphSon));
 
@@ -288,6 +310,53 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal(typeof(int), readVertex.Id.GetType());
         }
 
+        [Theory, MemberData(nameof(VersionsSupportingCollections))]
+        public void ShouldDeserializeEmptyGList(int version)
+        {
+            var graphSon =
+                "{\"@type\":\"g:List\", \"@value\": []}";
+            var reader = CreateStandardGraphSONReader(version);
+
+            var deserializedValue = reader.ToObject(JObject.Parse(graphSon));
+            Assert.Equal(new object[0], deserializedValue);
+        }
+
+        [Theory, MemberData(nameof(VersionsSupportingCollections))]
+        public void ShouldDeserializeGList(int version)
+        {
+            const string json = "{\"@type\":\"g:List\", \"@value\": [{\"@type\": \"g:Int32\", \"@value\": 1}," +
+                                "{\"@type\": \"g:Int32\", \"@value\": 2}, {\"@type\": \"g:Int32\", \"@value\": 3}]}";
+            var reader = CreateStandardGraphSONReader(version);
+
+            var deserializedValue = reader.ToObject(JObject.Parse(json));
+                
+            Assert.Equal((IList<object>)new object[] { 1, 2, 3}, deserializedValue);
+        }
+
+        [Theory, MemberData(nameof(VersionsSupportingCollections))]
+        public void ShouldDeserializeGSet(int version)
+        {
+            const string json = "{\"@type\":\"g:Set\", \"@value\": [{\"@type\": \"g:Int32\", \"@value\": 1}," +
+                                "{\"@type\": \"g:Int32\", \"@value\": 2}, {\"@type\": \"g:Int32\", \"@value\": 3}]}";
+            var reader = CreateStandardGraphSONReader(version);
+
+            var deserializedValue = reader.ToObject(JObject.Parse(json));
+                
+            Assert.Equal((ISet<object>)new HashSet<object>{ 1, 2, 3}, deserializedValue);
+        }
+
+        [Theory, MemberData(nameof(VersionsSupportingCollections))]
+        public void ShouldDeserializeGMap(int version)
+        {
+            const string json = "{\"@type\":\"g:Map\", \"@value\": [\"a\",{\"@type\": \"g:Int32\", \"@value\": 1}, " +
+                                "\"b\", {\"@type\": \"g:Int32\", \"@value\": 2}]}";
+            var reader = CreateStandardGraphSONReader(version);
+
+            var deserializedValue = reader.ToObject(JObject.Parse(json));
+                
+            Assert.Equal(new Dictionary<object, object>{ { "a", 1 }, { "b", 2 }}, deserializedValue);
+        }
+
         [Fact]
         public void ShouldDeserializeTraverser()
         {


[44/50] [abbrv] tinkerpop git commit: TINKERPOP-1552 Added graphson 2.0 serializer to test server settings for .net

Posted by sp...@apache.org.
TINKERPOP-1552 Added graphson 2.0 serializer to test server settings for .net


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

Branch: refs/heads/master
Commit: f03235e1ade10169d8b16b481aa4603c4dd8d680
Parents: 8fd4c8c
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Jul 14 13:39:36 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Jul 14 13:39:36 2017 -0400

----------------------------------------------------------------------
 gremlin-dotnet/test/pom.xml | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f03235e1/gremlin-dotnet/test/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/pom.xml b/gremlin-dotnet/test/pom.xml
index 2b09d26..524bed0 100644
--- a/gremlin-dotnet/test/pom.xml
+++ b/gremlin-dotnet/test/pom.xml
@@ -134,6 +134,7 @@ limitations under the License.
 import org.apache.tinkerpop.gremlin.server.GremlinServer
 import org.apache.tinkerpop.gremlin.server.Settings
 import org.apache.tinkerpop.gremlin.server.Settings.ScriptEngineSettings
+import org.apache.tinkerpop.gremlin.server.Settings.SerializerSettings
 
 if (${skipTests}) return
 
@@ -141,6 +142,7 @@ log.info("Starting Gremlin Server instances for native testing of gremlin-dotnet
 def settings = Settings.read("${gremlin.server.dir}/conf/gremlin-server-modern.yaml")
 settings.graphs.graph = "${gremlin.server.dir}/conf/tinkergraph-empty.properties"
 settings.scriptEngines["gremlin-groovy"].plugins["org.apache.tinkerpop.gremlin.jsr223.ScriptFileGremlinPlugin"].files = ["${gremlin.server.dir}/scripts/generate-modern.groovy"]
+settings.serializers << new SerializerSettings("org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0", [:])
 settings.port = 45950
 
 def server = new GremlinServer(settings)
@@ -152,6 +154,7 @@ log.info("Gremlin Server with no authentication started on port 45950")
 def settingsSecure = Settings.read("${gremlin.server.dir}/conf/gremlin-server-modern.yaml")
 settingsSecure.graphs.graph = "${gremlin.server.dir}/conf/tinkergraph-empty.properties"
 settingsSecure.scriptEngines["gremlin-groovy"].plugins["org.apache.tinkerpop.gremlin.jsr223.ScriptFileGremlinPlugin"].files = ["${gremlin.server.dir}/scripts/generate-modern.groovy"]
+settingsSecure.serializers << new SerializerSettings("org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0", [:])
 settingsSecure.port = 45951
 settingsSecure.authentication.className = "org.apache.tinkerpop.gremlin.server.auth.SimpleAuthenticator"
 settingsSecure.authentication.config = [credentialsDb: "${gremlin.server.dir}/conf/tinkergraph-credentials.properties", credentialsDbLocation: "${gremlin.server.dir}/data/credentials.kryo"]


[24/50] [abbrv] tinkerpop git commit: Minor code cleanup for Gremlin.Net

Posted by sp...@apache.org.
Minor code cleanup for Gremlin.Net

This mainly removes explicit type casting that are now obsolete thanks to changes from the pull request #620. It also makes the Dictionary CSharpToJavaEnums in NamingConversions private to avoid direct access to it as GetEnumJavaName should be used instead.


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

Branch: refs/heads/master
Commit: e02ddcb4206d0a4016d2487d8faaf8c17d5c0f23
Parents: e6539d8
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Fri Jun 9 16:14:49 2017 +0200
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jul 13 13:46:48 2017 -0400

----------------------------------------------------------------------
 .../src/Gremlin.Net/Process/Traversal/ITraversal.cs   |  1 -
 .../Process/Traversal/NamingConversions.cs            |  2 +-
 .../Traversal/DriverRemoteConnection/EnumTests.cs     |  2 +-
 .../DriverRemoteConnection/GraphTraversalTests.cs     | 12 ++++++------
 .../DriverRemoteConnection/PredicateTests.cs          |  4 ++--
 .../DriverRemoteConnection/StrategiesTests.cs         | 14 +++++++-------
 6 files changed, 17 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e02ddcb4/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversal.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversal.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversal.cs
index cb1c80e..c519ee6 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversal.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversal.cs
@@ -22,7 +22,6 @@
 #endregion
 
 using System;
-using System.Collections;
 using System.Collections.Generic;
 using System.Threading.Tasks;
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e02ddcb4/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs
index 6f5fec5..2e95da1 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs
@@ -41,7 +41,7 @@ namespace Gremlin.Net.Process.Traversal
             return javaName;
         }
 
-        internal static readonly IDictionary<string, string> CSharpToJavaEnums = new Dictionary<string, string>
+        private static readonly IDictionary<string, string> CSharpToJavaEnums = new Dictionary<string, string>
         {
             {"T.Value", "value"},
             {"Order.Decr", "decr"},

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e02ddcb4/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/EnumTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/EnumTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/EnumTests.cs
index 562aa6e..00541ad 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/EnumTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/EnumTests.cs
@@ -53,7 +53,7 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
 
             var personsCount = g.V().Has(T.Label, "person").Count().Next();
 
-            Assert.Equal((long) 4, personsCount);
+            Assert.Equal(4, personsCount);
         }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e02ddcb4/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
index e1e4338..2156ff3 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
@@ -43,7 +43,7 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
 
             var count = g.V().Count().Next();
 
-            Assert.Equal((long) 6, count);
+            Assert.Equal(6, count);
         }
 
         [Fact]
@@ -53,7 +53,7 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
             var connection = _connectionFactory.CreateRemoteConnection();
             var g = graph.Traversal().WithRemote(connection);
 
-            var vertex = (Vertex) g.V(1).Next();
+            var vertex = g.V(1).Next();
 
             Assert.Equal(new Vertex((long) 1), vertex);
             Assert.Equal((long) 1, vertex.Id);
@@ -135,9 +135,9 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
             var g = graph.Traversal().WithRemote(connection);
 
             var shortestPath =
-                (Path)g.V(5).Repeat(__.Both().SimplePath()).Until(__.HasId(6)).Limit<object>(1).Path().Next();
+                g.V(5).Repeat(__.Both().SimplePath()).Until(__.HasId(6)).Limit<object>(1).Path().Next();
 
-            Assert.Equal((long) 4, shortestPath.Count);
+            Assert.Equal(4, shortestPath.Count);
             Assert.Equal(new Vertex((long) 6), shortestPath[3]);
         }
 
@@ -151,7 +151,7 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
             var b = new Bindings();
             var count = g.V().Has(b.Of("propertyKey", "name"), b.Of("propertyValue", "marko")).OutE().Count().Next();
 
-            Assert.Equal((long) 3, count);
+            Assert.Equal(3, count);
         }
 
         [Fact]
@@ -163,7 +163,7 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
 
             var count = await g.V().Count().Promise(t => t.Next());
 
-            Assert.Equal((long) 6, count);
+            Assert.Equal(6, count);
         }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e02ddcb4/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/PredicateTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/PredicateTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/PredicateTests.cs
index 88587f6..9ab53a4 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/PredicateTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/PredicateTests.cs
@@ -40,7 +40,7 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
 
             var count = g.V().Has("age", P.Gt(30).And(P.Lt(35))).Count().Next();
 
-            Assert.Equal((long) 1, count);
+            Assert.Equal(1, count);
         }
 
         [Fact]
@@ -52,7 +52,7 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
 
             var count = g.V().Has("name", P.Within("josh", "vadas")).Count().Next();
 
-            Assert.Equal((long) 2, count);
+            Assert.Equal(2, count);
         }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e02ddcb4/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/StrategiesTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/StrategiesTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/StrategiesTests.cs
index ba56de9..21aee57 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/StrategiesTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/StrategiesTests.cs
@@ -47,7 +47,7 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
 
             var count = g.V().Count().Next();
 
-            Assert.Equal((long) 4, count);
+            Assert.Equal(4, count);
         }
 
         [Fact]
@@ -63,7 +63,7 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
 
             var count = g.E().Count().Next();
 
-            Assert.Equal((long)0, count);
+            Assert.Equal(0, count);
         }
 
         [Fact]
@@ -78,7 +78,7 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
 
             var count = g.V().Label().Dedup().Count().Next();
 
-            Assert.Equal((long)1, count);
+            Assert.Equal(1, count);
         }
 
         [Fact]
@@ -108,7 +108,7 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
 
             var count = g.V().Count().Next();
 
-            Assert.Equal((long)1, count);
+            Assert.Equal(1, count);
         }
 
         [Fact]
@@ -123,7 +123,7 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
 
             var count = g.E().Count().Next();
 
-            Assert.Equal((long)0, count);
+            Assert.Equal(0, count);
         }
 
         [Fact]
@@ -165,7 +165,7 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
 
             var count = g.V().Count().Next();
 
-            Assert.Equal((long)6, count);
+            Assert.Equal(6, count);
         }
 
         [Fact]
@@ -177,7 +177,7 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
 
             var count = g.E().Count().Next();
 
-            Assert.Equal((long)6, count);
+            Assert.Equal(6, count);
         }
 
         [Fact]


[28/50] [abbrv] tinkerpop git commit: TINKERPOP-1552 Polish up nuget deploy to work with NuGet.Config

Posted by sp...@apache.org.
TINKERPOP-1552 Polish up nuget deploy to work with NuGet.Config


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

Branch: refs/heads/master
Commit: e72aaae7f8d89ac15e5a056c337a89ab20b55d5f
Parents: 0b2f83d
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Jun 28 11:45:17 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jul 13 13:46:49 2017 -0400

----------------------------------------------------------------------
 .gitignore                                         |  2 ++
 .../dev/developer/development-environment.asciidoc | 17 +++++++++++++++--
 gremlin-dotnet/src/pom.xml                         |  7 ++++++-
 pom.xml                                            |  1 +
 4 files changed, 24 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e72aaae7/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index b16e11b..c9a8ee8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -29,3 +29,5 @@ tools/
 .vscode/
 .vs/
 *nupkg
+NuGet.Config
+nuget.exe

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e72aaae7/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 26428c1..6e3d350 100644
--- a/docs/src/dev/developer/development-environment.asciidoc
+++ b/docs/src/dev/developer/development-environment.asciidoc
@@ -120,8 +120,21 @@ The `.glv` file need not have any contents and is ignored by Git. A standard 
 `gremlin-dotnet` in full.
 
 For those who will release TinkerPop, it is also necessary to install link:http://www.mono-project.com/[Mono]. The
-release process is known to work with 5.0.1, so it is best to probably install that version if possible. See release
-documentation for more information on configuration for release.
+release process is known to work with 5.0.1, so it is best to probably install that version. Release managers should
+probably also do an install of link:https://dist.nuget.org/win-x86-commandline/v3.4.4/nuget.exe[nuget 3.4.4] as it
+will help with environmental setup. To get an environment ready to deploy to NuGet, it is necessary to have a
+NuGet API key (PMC members who have NuGet accounts can help with that). The API key should be added to `NuGet.Config`
+with the following:
+
+[source,text]
+----
+mono nuget.exe setApiKey [your-api-key]
+----
+
+This should update `~/.config/NuGet/NuGet.Config` a file with an entry containing the encrypted API key. On
+`mvn deploy`, this file will be referenced on the automated `nuget push`.
+
+See release documentation for more information on configuration for release.
 
 [[release-environment]]
 Release Environment

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e72aaae7/gremlin-dotnet/src/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/pom.xml b/gremlin-dotnet/src/pom.xml
index 8f9007e..86a56af 100644
--- a/gremlin-dotnet/src/pom.xml
+++ b/gremlin-dotnet/src/pom.xml
@@ -146,8 +146,13 @@ limitations under the License.
                                                 </exec>
                                             </else>
                                         </if>
+
+                                        <!--
+                                        until https://github.com/NuGet/Home/issues/4095 we have to have to specify
+                                        the "ConfigFile" option to nuget.
+                                        -->
                                         <exec dir="Gremlin.Net/bin" executable="mono" failonerror="true">
-                                            <arg line="nuget.exe push Gremlin.Net.3.2.6-beta1.nupkg -Source https://staging.nuget.org/api/v2/package"/>
+                                            <arg line="nuget.exe push Gremlin.Net.3.2.6-beta1.nupkg -Source https://staging.nuget.org/api/v2/package -ConfigFile ${user.home}/.config/NuGet/NuGet.Config"/>
                                         </exec>
                                     </tasks>
                                 </configuration>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e72aaae7/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index a31c912..8c81199 100644
--- a/pom.xml
+++ b/pom.xml
@@ -328,6 +328,7 @@ limitations under the License.
                         <exclude>**/*.user</exclude>
                         <exclude>**/*.csproj</exclude>
                         <exclude>**/.vs/**</exclude>
+                        <exclude>**/NuGet.Config</exclude>
                     </excludes>
                     <licenses>
                         <license implementation="org.apache.rat.analysis.license.ApacheSoftwareLicense20"/>


[32/50] [abbrv] tinkerpop git commit: TINKERPOP-1552 Added a warning to docs about Gremlin.Net

Posted by sp...@apache.org.
TINKERPOP-1552 Added a warning to docs about Gremlin.Net


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

Branch: refs/heads/master
Commit: 089ee6b565e9b9f6cd4d6cce05be0dfbba5df0c8
Parents: bd87e36
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Thu Jun 29 07:08:24 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jul 13 13:47:19 2017 -0400

----------------------------------------------------------------------
 docs/src/reference/gremlin-variants.asciidoc | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/089ee6b5/docs/src/reference/gremlin-variants.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/reference/gremlin-variants.asciidoc b/docs/src/reference/gremlin-variants.asciidoc
index 6cb7fa5..ce6d109 100644
--- a/docs/src/reference/gremlin-variants.asciidoc
+++ b/docs/src/reference/gremlin-variants.asciidoc
@@ -355,8 +355,12 @@ connection = DriverRemoteConnection('ws://localhost:8182/gremlin', 'g',
 ----
 
 [[gremlin-DotNet]]
-Gremlin-DotNet
---------------
+Gremlin.Net
+-----------
+
+WARNING: Gremlin.Net does not yet have an official release. It is for developers who want to experiment with TinkerPop
+in the .NET ecosystem.
+
 Apache TinkerPop's Gremlin-DotNet implements Gremlin within the C# language. It targets .NET Standard and can
 therefore be used on different operating systems and with different .NET frameworks, such as .NET Framework
 and link:https://www.microsoft.com/net/core[.NET Core]. Since the C# syntax is very similar to that of Java, it should be very easy to switch between


[05/50] [abbrv] tinkerpop git commit: Improve comments in Gremlin-DotNet, especially for the GLV part

Posted by sp...@apache.org.
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eb9ff718/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
index aaf61aa..fd7a901 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
@@ -24,468 +24,745 @@
 using System.Collections.Generic;
 using Gremlin.Net.Structure;
 
+// THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
     /// <summary>
-    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
+    ///     An anonymous <see cref="GraphTraversal{SType, EType}" />.
     /// </summary>
     public static class __
     {
+        /// <summary>
+        ///     Starts an empty <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public static GraphTraversal<object, object> Start()
         {
             return new GraphTraversal<object, object>();
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the V step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, Vertex> V(params object[] args)
         {
             return new GraphTraversal<object, object>().V(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the addE step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, Edge> AddE(params object[] args)
         {
             return new GraphTraversal<object, object>().AddE(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the addInE step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, Edge> AddInE(params object[] args)
         {
             return new GraphTraversal<object, object>().AddInE(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the addOutE step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, Edge> AddOutE(params object[] args)
         {
             return new GraphTraversal<object, object>().AddOutE(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the addV step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, Vertex> AddV(params object[] args)
         {
             return new GraphTraversal<object, object>().AddV(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the aggregate step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> Aggregate(params object[] args)
         {
             return new GraphTraversal<object, object>().Aggregate(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the and step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> And(params object[] args)
         {
             return new GraphTraversal<object, object>().And(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the as step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> As(params object[] args)
         {
             return new GraphTraversal<object, object>().As(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the barrier step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> Barrier(params object[] args)
         {
             return new GraphTraversal<object, object>().Barrier(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the both step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, Vertex> Both(params object[] args)
         {
             return new GraphTraversal<object, object>().Both(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the bothE step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, Edge> BothE(params object[] args)
         {
             return new GraphTraversal<object, object>().BothE(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the bothV step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, Vertex> BothV(params object[] args)
         {
             return new GraphTraversal<object, object>().BothV(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the branch step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, E2> Branch<E2>(params object[] args)
         {
             return new GraphTraversal<object, object>().Branch<E2>(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the cap step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, E2> Cap<E2>(params object[] args)
         {
             return new GraphTraversal<object, object>().Cap<E2>(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the choose step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, E2> Choose<E2>(params object[] args)
         {
             return new GraphTraversal<object, object>().Choose<E2>(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the coalesce step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, E2> Coalesce<E2>(params object[] args)
         {
             return new GraphTraversal<object, object>().Coalesce<E2>(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the coin step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> Coin(params object[] args)
         {
             return new GraphTraversal<object, object>().Coin(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the constant step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, E2> Constant<E2>(params object[] args)
         {
             return new GraphTraversal<object, object>().Constant<E2>(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the count step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, long> Count(params object[] args)
         {
             return new GraphTraversal<object, object>().Count(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the cyclicPath step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> CyclicPath(params object[] args)
         {
             return new GraphTraversal<object, object>().CyclicPath(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the dedup step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> Dedup(params object[] args)
         {
             return new GraphTraversal<object, object>().Dedup(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the drop step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> Drop(params object[] args)
         {
             return new GraphTraversal<object, object>().Drop(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the emit step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> Emit(params object[] args)
         {
             return new GraphTraversal<object, object>().Emit(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the filter step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> Filter(params object[] args)
         {
             return new GraphTraversal<object, object>().Filter(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the flatMap step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, E2> FlatMap<E2>(params object[] args)
         {
             return new GraphTraversal<object, object>().FlatMap<E2>(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the fold step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, E2> Fold<E2>(params object[] args)
         {
             return new GraphTraversal<object, object>().Fold<E2>(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the group step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> Group(params object[] args)
         {
             return new GraphTraversal<object, object>().Group(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the groupCount step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> GroupCount(params object[] args)
         {
             return new GraphTraversal<object, object>().GroupCount(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the groupV3d0 step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> GroupV3d0(params object[] args)
         {
             return new GraphTraversal<object, object>().GroupV3d0(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the has step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> Has(params object[] args)
         {
             return new GraphTraversal<object, object>().Has(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the hasId step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> HasId(params object[] args)
         {
             return new GraphTraversal<object, object>().HasId(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the hasKey step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> HasKey(params object[] args)
         {
             return new GraphTraversal<object, object>().HasKey(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the hasLabel step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> HasLabel(params object[] args)
         {
             return new GraphTraversal<object, object>().HasLabel(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the hasNot step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> HasNot(params object[] args)
         {
             return new GraphTraversal<object, object>().HasNot(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the hasValue step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> HasValue(params object[] args)
         {
             return new GraphTraversal<object, object>().HasValue(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the id step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> Id(params object[] args)
         {
             return new GraphTraversal<object, object>().Id(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the identity step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> Identity(params object[] args)
         {
             return new GraphTraversal<object, object>().Identity(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the in step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, Vertex> In(params object[] args)
         {
             return new GraphTraversal<object, object>().In(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the inE step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, Edge> InE(params object[] args)
         {
             return new GraphTraversal<object, object>().InE(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the inV step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, Vertex> InV(params object[] args)
         {
             return new GraphTraversal<object, object>().InV(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the inject step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> Inject(params object[] args)
         {
             return new GraphTraversal<object, object>().Inject(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the is step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> Is(params object[] args)
         {
             return new GraphTraversal<object, object>().Is(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the key step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, string> Key(params object[] args)
         {
             return new GraphTraversal<object, object>().Key(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the label step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, string> Label(params object[] args)
         {
             return new GraphTraversal<object, object>().Label(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the limit step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, E2> Limit<E2>(params object[] args)
         {
             return new GraphTraversal<object, object>().Limit<E2>(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the local step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, E2> Local<E2>(params object[] args)
         {
             return new GraphTraversal<object, object>().Local<E2>(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the loops step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, int> Loops(params object[] args)
         {
             return new GraphTraversal<object, object>().Loops(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the map step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, E2> Map<E2>(params object[] args)
         {
             return new GraphTraversal<object, object>().Map<E2>(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the mapKeys step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, E2> MapKeys<E2>(params object[] args)
         {
             return new GraphTraversal<object, object>().MapKeys<E2>(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the mapValues step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, E2> MapValues<E2>(params object[] args)
         {
             return new GraphTraversal<object, object>().MapValues<E2>(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the match step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, IDictionary<string, E2>> Match<E2>(params object[] args)
         {
             return new GraphTraversal<object, object>().Match<E2>(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the max step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, E2> Max<E2>(params object[] args)
         {
             return new GraphTraversal<object, object>().Max<E2>(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the mean step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, E2> Mean<E2>(params object[] args)
         {
             return new GraphTraversal<object, object>().Mean<E2>(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the min step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, E2> Min<E2>(params object[] args)
         {
             return new GraphTraversal<object, object>().Min<E2>(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the not step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> Not(params object[] args)
         {
             return new GraphTraversal<object, object>().Not(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the optional step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, E2> Optional<E2>(params object[] args)
         {
             return new GraphTraversal<object, object>().Optional<E2>(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the or step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> Or(params object[] args)
         {
             return new GraphTraversal<object, object>().Or(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the order step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> Order(params object[] args)
         {
             return new GraphTraversal<object, object>().Order(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the otherV step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, Vertex> OtherV(params object[] args)
         {
             return new GraphTraversal<object, object>().OtherV(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the out step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, Vertex> Out(params object[] args)
         {
             return new GraphTraversal<object, object>().Out(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the outE step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, Edge> OutE(params object[] args)
         {
             return new GraphTraversal<object, object>().OutE(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the outV step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, Vertex> OutV(params object[] args)
         {
             return new GraphTraversal<object, object>().OutV(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the path step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, Path> Path(params object[] args)
         {
             return new GraphTraversal<object, object>().Path(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the project step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, IDictionary<string, E2>> Project<E2>(params object[] args)
         {
             return new GraphTraversal<object, object>().Project<E2>(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the properties step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, E2> Properties<E2>(params object[] args)
         {
             return new GraphTraversal<object, object>().Properties<E2>(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the property step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> Property(params object[] args)
         {
             return new GraphTraversal<object, object>().Property(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the propertyMap step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, IDictionary<string, E2>> PropertyMap<E2>(params object[] args)
         {
             return new GraphTraversal<object, object>().PropertyMap<E2>(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the range step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, E2> Range<E2>(params object[] args)
         {
             return new GraphTraversal<object, object>().Range<E2>(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the repeat step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> Repeat(params object[] args)
         {
             return new GraphTraversal<object, object>().Repeat(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the sack step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> Sack(params object[] args)
         {
             return new GraphTraversal<object, object>().Sack(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the sample step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> Sample(params object[] args)
         {
             return new GraphTraversal<object, object>().Sample(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the select step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, IDictionary<string, E2>> Select<E2>(params object[] args)
         {
             return new GraphTraversal<object, object>().Select<E2>(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the sideEffect step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> SideEffect(params object[] args)
         {
             return new GraphTraversal<object, object>().SideEffect(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the simplePath step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> SimplePath(params object[] args)
         {
             return new GraphTraversal<object, object>().SimplePath(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the store step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> Store(params object[] args)
         {
             return new GraphTraversal<object, object>().Store(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the subgraph step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, Edge> Subgraph(params object[] args)
         {
             return new GraphTraversal<object, object>().Subgraph(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the sum step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, E2> Sum<E2>(params object[] args)
         {
             return new GraphTraversal<object, object>().Sum<E2>(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the tail step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, E2> Tail<E2>(params object[] args)
         {
             return new GraphTraversal<object, object>().Tail<E2>(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the timeLimit step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> TimeLimit(params object[] args)
         {
             return new GraphTraversal<object, object>().TimeLimit(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the times step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> Times(params object[] args)
         {
             return new GraphTraversal<object, object>().Times(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the to step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, Vertex> To(params object[] args)
         {
             return new GraphTraversal<object, object>().To(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the toE step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, Edge> ToE(params object[] args)
         {
             return new GraphTraversal<object, object>().ToE(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the toV step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, Vertex> ToV(params object[] args)
         {
             return new GraphTraversal<object, object>().ToV(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the tree step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> Tree(params object[] args)
         {
             return new GraphTraversal<object, object>().Tree(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the unfold step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, E2> Unfold<E2>(params object[] args)
         {
             return new GraphTraversal<object, object>().Unfold<E2>(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the union step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, E2> Union<E2>(params object[] args)
         {
             return new GraphTraversal<object, object>().Union<E2>(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the until step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> Until(params object[] args)
         {
             return new GraphTraversal<object, object>().Until(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the value step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, E2> Value<E2>(params object[] args)
         {
             return new GraphTraversal<object, object>().Value<E2>(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the valueMap step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, IDictionary<string, E2>> ValueMap<E2>(params object[] args)
         {
             return new GraphTraversal<object, object>().ValueMap<E2>(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the values step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, E2> Values<E2>(params object[] args)
         {
             return new GraphTraversal<object, object>().Values<E2>(args);
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the where step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, object> Where(params object[] args)
         {
             return new GraphTraversal<object, object>().Where(args);

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eb9ff718/gremlin-dotnet/src/Gremlin.Net/Structure/Graph.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/Graph.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/Graph.cs
index 0a07763..10b2549 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/Graph.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/Graph.cs
@@ -25,8 +25,16 @@ using Gremlin.Net.Process.Traversal;
 
 namespace Gremlin.Net.Structure
 {
+    /// <summary>
+    ///     A <see cref="Graph" /> is a container object for a collection of <see cref="Vertex" />, <see cref="Edge" />,
+    ///     <see cref="VertexProperty" />, and <see cref="Property" /> objects.
+    /// </summary>
     public class Graph
     {
+        /// <summary>
+        ///     Generates a reusable <see cref="GraphTraversalSource" /> instance.
+        /// </summary>
+        /// <returns>A graph traversal source.</returns>
         public GraphTraversalSource Traversal()
         {
             return new GraphTraversalSource();


[14/50] [abbrv] tinkerpop git commit: Reorganize Gremlin-DotNet

Posted by sp...@apache.org.
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/AdjacentToIncidentStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/AdjacentToIncidentStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/AdjacentToIncidentStrategy.cs
new file mode 100644
index 0000000..bae85d7
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/AdjacentToIncidentStrategy.cs
@@ -0,0 +1,32 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal.Strategy.Optimization
+{
+    /// <summary>
+    ///     Optimizes vertex- and value-emitting steps.
+    /// </summary>
+    public class AdjacentToIncidentStrategy : AbstractTraversalStrategy
+    {
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/FilterRankingStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/FilterRankingStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/FilterRankingStrategy.cs
new file mode 100644
index 0000000..3443e71
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/FilterRankingStrategy.cs
@@ -0,0 +1,32 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal.Strategy.Optimization
+{
+    /// <summary>
+    ///     Reorders filter- and order-steps according to their rank.
+    /// </summary>
+    public class FilterRankingStrategy : AbstractTraversalStrategy
+    {
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/GraphFilterStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/GraphFilterStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/GraphFilterStrategy.cs
new file mode 100644
index 0000000..aaaee2c
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/GraphFilterStrategy.cs
@@ -0,0 +1,29 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal.Strategy.Optimization
+{
+    public class GraphFilterStrategy : AbstractTraversalStrategy
+    {
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/IdentityRemovalStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/IdentityRemovalStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/IdentityRemovalStrategy.cs
new file mode 100644
index 0000000..08a4c46
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/IdentityRemovalStrategy.cs
@@ -0,0 +1,32 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal.Strategy.Optimization
+{
+    /// <summary>
+    ///     Looks for <c>Identity()</c>-steps and removes them.
+    /// </summary>
+    public class IdentityRemovalStrategy : AbstractTraversalStrategy
+    {
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/IncidentToAdjacentStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/IncidentToAdjacentStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/IncidentToAdjacentStrategy.cs
new file mode 100644
index 0000000..75b98c2
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/IncidentToAdjacentStrategy.cs
@@ -0,0 +1,33 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal.Strategy.Optimization
+{
+    /// <summary>
+    ///     Replaces <c>.OutE().InV()</c> with <c>.Out()</c>, <c>.InE().OutV()</c> with <c>In()</c> and <c>.BothE().BothV()</c>
+    ///     with <c>Both()</c>.
+    /// </summary>
+    public class IncidentToAdjacentStrategy : AbstractTraversalStrategy
+    {
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/InlineFilterStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/InlineFilterStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/InlineFilterStrategy.cs
new file mode 100644
index 0000000..8eade84
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/InlineFilterStrategy.cs
@@ -0,0 +1,32 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal.Strategy.Optimization
+{
+    /// <summary>
+    ///     Analyzes filter-steps with child traversals that themselves are pure filters.
+    /// </summary>
+    public class InlineFilterStrategy : AbstractTraversalStrategy
+    {
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/LazyBarrierStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/LazyBarrierStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/LazyBarrierStrategy.cs
new file mode 100644
index 0000000..b5cac4a
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/LazyBarrierStrategy.cs
@@ -0,0 +1,33 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal.Strategy.Optimization
+{
+    /// <summary>
+    ///     Inserts <c>Barrier()</c>-steps into a <see cref="ITraversal" /> where appropriate in order to gain the "bulking
+    ///     optimization".
+    /// </summary>
+    public class LazyBarrierStrategy : AbstractTraversalStrategy
+    {
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/MatchPredicateStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/MatchPredicateStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/MatchPredicateStrategy.cs
new file mode 100644
index 0000000..d535963
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/MatchPredicateStrategy.cs
@@ -0,0 +1,32 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal.Strategy.Optimization
+{
+    /// <summary>
+    ///     Folds any post<c>Where()</c> step that maintains a traversal constraint into <c>Match()</c>.
+    /// </summary>
+    public class MatchPredicateStrategy : AbstractTraversalStrategy
+    {
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/OrderLimitStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/OrderLimitStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/OrderLimitStrategy.cs
new file mode 100644
index 0000000..82a8df9
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/OrderLimitStrategy.cs
@@ -0,0 +1,29 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal.Strategy.Optimization
+{
+    public class OrderLimitStrategy : AbstractTraversalStrategy
+    {
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/PathProcessorStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/PathProcessorStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/PathProcessorStrategy.cs
new file mode 100644
index 0000000..2c8e106
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/PathProcessorStrategy.cs
@@ -0,0 +1,32 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal.Strategy.Optimization
+{
+    /// <summary>
+    ///     Helps to ensure that more traversals meet the local child constraint imposed on OLAP traversals.
+    /// </summary>
+    public class PathProcessorStrategy : AbstractTraversalStrategy
+    {
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/PathRetractionStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/PathRetractionStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/PathRetractionStrategy.cs
new file mode 100644
index 0000000..e54fbb5
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/PathRetractionStrategy.cs
@@ -0,0 +1,29 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal.Strategy.Optimization
+{
+    public class PathRetractionStrategy : AbstractTraversalStrategy
+    {
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/RangeByIsCountStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/RangeByIsCountStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/RangeByIsCountStrategy.cs
new file mode 100644
index 0000000..e3024bc
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/RangeByIsCountStrategy.cs
@@ -0,0 +1,32 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal.Strategy.Optimization
+{
+    /// <summary>
+    ///     Optimizes any occurrence of <c>Count()</c>-step followed by an <c>Is()</c>-step.
+    /// </summary>
+    public class RangeByIsCountStrategy : AbstractTraversalStrategy
+    {
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/RepeatUnrollStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/RepeatUnrollStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/RepeatUnrollStrategy.cs
new file mode 100644
index 0000000..6cac454
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/RepeatUnrollStrategy.cs
@@ -0,0 +1,29 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal.Strategy.Optimization
+{
+    public class RepeatUnrollStrategy : AbstractTraversalStrategy
+    {
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Verification/LambdaRestrictionStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Verification/LambdaRestrictionStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Verification/LambdaRestrictionStrategy.cs
new file mode 100644
index 0000000..0f488ab
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Verification/LambdaRestrictionStrategy.cs
@@ -0,0 +1,32 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal.Strategy.Verification
+{
+    /// <summary>
+    ///     Does not allow lambdas to be used in a <see cref="ITraversal" />.
+    /// </summary>
+    public class LambdaRestrictionStrategy : AbstractTraversalStrategy
+    {
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Verification/ReadOnlyStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Verification/ReadOnlyStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Verification/ReadOnlyStrategy.cs
new file mode 100644
index 0000000..a703e18
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Verification/ReadOnlyStrategy.cs
@@ -0,0 +1,32 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal.Strategy.Verification
+{
+    /// <summary>
+    ///     Detects mutating steps and throws an exception if one is found.
+    /// </summary>
+    public class ReadOnlyStrategy : AbstractTraversalStrategy
+    {
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs
new file mode 100644
index 0000000..50c15d9
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs
@@ -0,0 +1,33 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal
+{
+    public enum T
+    {
+        id,
+        key,
+        label,
+        value
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/TraversalPredicate.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/TraversalPredicate.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/TraversalPredicate.cs
new file mode 100644
index 0000000..b854213
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/TraversalPredicate.cs
@@ -0,0 +1,85 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal
+{
+    /// <summary>
+    ///     Represents a predicate (boolean-valued function) used in a <see cref="ITraversal" />.
+    /// </summary>
+    public class TraversalPredicate
+    {
+        /// <summary>
+        ///     Initializes a new instance of the <see cref="TraversalPredicate" /> class.
+        /// </summary>
+        /// <param name="operatorName">The name of the predicate.</param>
+        /// <param name="value">The value of the predicate.</param>
+        /// <param name="other">An optional other predicate that is used as an argument for this predicate.</param>
+        public TraversalPredicate(string operatorName, dynamic value, TraversalPredicate other = null)
+        {
+            OperatorName = operatorName;
+            Value = value;
+            Other = other;
+        }
+
+        /// <summary>
+        ///     Gets the name of the predicate.
+        /// </summary>
+        public string OperatorName { get; }
+
+        /// <summary>
+        ///     Gets the value of the predicate.
+        /// </summary>
+        public dynamic Value { get; }
+
+        /// <summary>
+        ///     Gets an optional other predicate that is used as an argument for this predicate.
+        /// </summary>
+        public TraversalPredicate Other { get; }
+
+        /// <summary>
+        ///     Returns a composed predicate that represents a logical AND of this predicate and another.
+        /// </summary>
+        /// <param name="otherPredicate">A predicate that will be logically-ANDed with this predicate.</param>
+        /// <returns>The composed predicate.</returns>
+        public TraversalPredicate And(TraversalPredicate otherPredicate)
+        {
+            return new TraversalPredicate("and", this, otherPredicate);
+        }
+
+        /// <summary>
+        ///     Returns a composed predicate that represents a logical OR of this predicate and another.
+        /// </summary>
+        /// <param name="otherPredicate">A predicate that will be logically-ORed with this predicate.</param>
+        /// <returns>The composed predicate.</returns>
+        public TraversalPredicate Or(TraversalPredicate otherPredicate)
+        {
+            return new TraversalPredicate("or", this, otherPredicate);
+        }
+
+        /// <inheritdoc />
+        public override string ToString()
+        {
+            return Other == null ? $"{OperatorName}({Value})" : $"{OperatorName}({Value},{Other})";
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Traverser.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Traverser.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Traverser.cs
new file mode 100644
index 0000000..573e57f
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Traverser.cs
@@ -0,0 +1,75 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal
+{
+    /// <summary>
+    ///     A traverser represents the current state of an object flowing through a <see cref="ITraversal" />.
+    /// </summary>
+    public class Traverser
+    {
+        /// <summary>
+        ///     Initializes a new instance of the <see cref="Traverser" /> class.
+        /// </summary>
+        /// <param name="obj">The object of the traverser.</param>
+        /// <param name="bulk">The number of traversers represented in this traverser.</param>
+        public Traverser(dynamic obj, long bulk = 1)
+        {
+            Object = obj;
+            Bulk = bulk;
+        }
+
+        /// <summary>
+        ///     Gets the object of this traverser.
+        /// </summary>
+        public dynamic Object { get; }
+
+        /// <summary>
+        ///     Gets the number of traversers represented in this traverser.
+        /// </summary>
+        public long Bulk { get; internal set; }
+
+        /// <inheritdoc />
+        public bool Equals(Traverser other)
+        {
+            if (ReferenceEquals(null, other)) return false;
+            if (ReferenceEquals(this, other)) return true;
+            return Equals(Object, other.Object);
+        }
+
+        /// <inheritdoc />
+        public override bool Equals(object obj)
+        {
+            if (ReferenceEquals(null, obj)) return false;
+            if (ReferenceEquals(this, obj)) return true;
+            if (obj.GetType() != GetType()) return false;
+            return Equals((Traverser) obj);
+        }
+
+        /// <inheritdoc />
+        public override int GetHashCode()
+        {
+            return Object != null ? Object.GetHashCode() : 0;
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
new file mode 100644
index 0000000..e120372
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
@@ -0,0 +1,488 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal
+{
+    public static class __
+    {
+        public static GraphTraversal Start()
+        {
+            return new GraphTraversal();
+        }
+
+        public static GraphTraversal V(params object[] args)
+        {
+            return new GraphTraversal().V(args);
+        }
+
+        public static GraphTraversal AddE(params object[] args)
+        {
+            return new GraphTraversal().AddE(args);
+        }
+
+        public static GraphTraversal AddInE(params object[] args)
+        {
+            return new GraphTraversal().AddInE(args);
+        }
+
+        public static GraphTraversal AddOutE(params object[] args)
+        {
+            return new GraphTraversal().AddOutE(args);
+        }
+
+        public static GraphTraversal AddV(params object[] args)
+        {
+            return new GraphTraversal().AddV(args);
+        }
+
+        public static GraphTraversal Aggregate(params object[] args)
+        {
+            return new GraphTraversal().Aggregate(args);
+        }
+
+        public static GraphTraversal And(params object[] args)
+        {
+            return new GraphTraversal().And(args);
+        }
+
+        public static GraphTraversal As(params object[] args)
+        {
+            return new GraphTraversal().As(args);
+        }
+
+        public static GraphTraversal Barrier(params object[] args)
+        {
+            return new GraphTraversal().Barrier(args);
+        }
+
+        public static GraphTraversal Both(params object[] args)
+        {
+            return new GraphTraversal().Both(args);
+        }
+
+        public static GraphTraversal BothE(params object[] args)
+        {
+            return new GraphTraversal().BothE(args);
+        }
+
+        public static GraphTraversal BothV(params object[] args)
+        {
+            return new GraphTraversal().BothV(args);
+        }
+
+        public static GraphTraversal Branch(params object[] args)
+        {
+            return new GraphTraversal().Branch(args);
+        }
+
+        public static GraphTraversal Cap(params object[] args)
+        {
+            return new GraphTraversal().Cap(args);
+        }
+
+        public static GraphTraversal Choose(params object[] args)
+        {
+            return new GraphTraversal().Choose(args);
+        }
+
+        public static GraphTraversal Coalesce(params object[] args)
+        {
+            return new GraphTraversal().Coalesce(args);
+        }
+
+        public static GraphTraversal Coin(params object[] args)
+        {
+            return new GraphTraversal().Coin(args);
+        }
+
+        public static GraphTraversal Constant(params object[] args)
+        {
+            return new GraphTraversal().Constant(args);
+        }
+
+        public static GraphTraversal Count(params object[] args)
+        {
+            return new GraphTraversal().Count(args);
+        }
+
+        public static GraphTraversal CyclicPath(params object[] args)
+        {
+            return new GraphTraversal().CyclicPath(args);
+        }
+
+        public static GraphTraversal Dedup(params object[] args)
+        {
+            return new GraphTraversal().Dedup(args);
+        }
+
+        public static GraphTraversal Drop(params object[] args)
+        {
+            return new GraphTraversal().Drop(args);
+        }
+
+        public static GraphTraversal Emit(params object[] args)
+        {
+            return new GraphTraversal().Emit(args);
+        }
+
+        public static GraphTraversal Filter(params object[] args)
+        {
+            return new GraphTraversal().Filter(args);
+        }
+
+        public static GraphTraversal FlatMap(params object[] args)
+        {
+            return new GraphTraversal().FlatMap(args);
+        }
+
+        public static GraphTraversal Fold(params object[] args)
+        {
+            return new GraphTraversal().Fold(args);
+        }
+
+        public static GraphTraversal Group(params object[] args)
+        {
+            return new GraphTraversal().Group(args);
+        }
+
+        public static GraphTraversal GroupCount(params object[] args)
+        {
+            return new GraphTraversal().GroupCount(args);
+        }
+
+        public static GraphTraversal GroupV3d0(params object[] args)
+        {
+            return new GraphTraversal().GroupV3d0(args);
+        }
+
+        public static GraphTraversal Has(params object[] args)
+        {
+            return new GraphTraversal().Has(args);
+        }
+
+        public static GraphTraversal HasId(params object[] args)
+        {
+            return new GraphTraversal().HasId(args);
+        }
+
+        public static GraphTraversal HasKey(params object[] args)
+        {
+            return new GraphTraversal().HasKey(args);
+        }
+
+        public static GraphTraversal HasLabel(params object[] args)
+        {
+            return new GraphTraversal().HasLabel(args);
+        }
+
+        public static GraphTraversal HasNot(params object[] args)
+        {
+            return new GraphTraversal().HasNot(args);
+        }
+
+        public static GraphTraversal HasValue(params object[] args)
+        {
+            return new GraphTraversal().HasValue(args);
+        }
+
+        public static GraphTraversal Id(params object[] args)
+        {
+            return new GraphTraversal().Id(args);
+        }
+
+        public static GraphTraversal Identity(params object[] args)
+        {
+            return new GraphTraversal().Identity(args);
+        }
+
+        public static GraphTraversal In(params object[] args)
+        {
+            return new GraphTraversal().In(args);
+        }
+
+        public static GraphTraversal InE(params object[] args)
+        {
+            return new GraphTraversal().InE(args);
+        }
+
+        public static GraphTraversal InV(params object[] args)
+        {
+            return new GraphTraversal().InV(args);
+        }
+
+        public static GraphTraversal Inject(params object[] args)
+        {
+            return new GraphTraversal().Inject(args);
+        }
+
+        public static GraphTraversal Is(params object[] args)
+        {
+            return new GraphTraversal().Is(args);
+        }
+
+        public static GraphTraversal Key(params object[] args)
+        {
+            return new GraphTraversal().Key(args);
+        }
+
+        public static GraphTraversal Label(params object[] args)
+        {
+            return new GraphTraversal().Label(args);
+        }
+
+        public static GraphTraversal Limit(params object[] args)
+        {
+            return new GraphTraversal().Limit(args);
+        }
+
+        public static GraphTraversal Local(params object[] args)
+        {
+            return new GraphTraversal().Local(args);
+        }
+
+        public static GraphTraversal Loops(params object[] args)
+        {
+            return new GraphTraversal().Loops(args);
+        }
+
+        public static GraphTraversal Map(params object[] args)
+        {
+            return new GraphTraversal().Map(args);
+        }
+
+        public static GraphTraversal MapKeys(params object[] args)
+        {
+            return new GraphTraversal().MapKeys(args);
+        }
+
+        public static GraphTraversal MapValues(params object[] args)
+        {
+            return new GraphTraversal().MapValues(args);
+        }
+
+        public static GraphTraversal Match(params object[] args)
+        {
+            return new GraphTraversal().Match(args);
+        }
+
+        public static GraphTraversal Max(params object[] args)
+        {
+            return new GraphTraversal().Max(args);
+        }
+
+        public static GraphTraversal Mean(params object[] args)
+        {
+            return new GraphTraversal().Mean(args);
+        }
+
+        public static GraphTraversal Min(params object[] args)
+        {
+            return new GraphTraversal().Min(args);
+        }
+
+        public static GraphTraversal Not(params object[] args)
+        {
+            return new GraphTraversal().Not(args);
+        }
+
+        public static GraphTraversal Optional(params object[] args)
+        {
+            return new GraphTraversal().Optional(args);
+        }
+
+        public static GraphTraversal Or(params object[] args)
+        {
+            return new GraphTraversal().Or(args);
+        }
+
+        public static GraphTraversal Order(params object[] args)
+        {
+            return new GraphTraversal().Order(args);
+        }
+
+        public static GraphTraversal OtherV(params object[] args)
+        {
+            return new GraphTraversal().OtherV(args);
+        }
+
+        public static GraphTraversal Out(params object[] args)
+        {
+            return new GraphTraversal().Out(args);
+        }
+
+        public static GraphTraversal OutE(params object[] args)
+        {
+            return new GraphTraversal().OutE(args);
+        }
+
+        public static GraphTraversal OutV(params object[] args)
+        {
+            return new GraphTraversal().OutV(args);
+        }
+
+        public static GraphTraversal Path(params object[] args)
+        {
+            return new GraphTraversal().Path(args);
+        }
+
+        public static GraphTraversal Project(params object[] args)
+        {
+            return new GraphTraversal().Project(args);
+        }
+
+        public static GraphTraversal Properties(params object[] args)
+        {
+            return new GraphTraversal().Properties(args);
+        }
+
+        public static GraphTraversal Property(params object[] args)
+        {
+            return new GraphTraversal().Property(args);
+        }
+
+        public static GraphTraversal PropertyMap(params object[] args)
+        {
+            return new GraphTraversal().PropertyMap(args);
+        }
+
+        public static GraphTraversal Range(params object[] args)
+        {
+            return new GraphTraversal().Range(args);
+        }
+
+        public static GraphTraversal Repeat(params object[] args)
+        {
+            return new GraphTraversal().Repeat(args);
+        }
+
+        public static GraphTraversal Sack(params object[] args)
+        {
+            return new GraphTraversal().Sack(args);
+        }
+
+        public static GraphTraversal Sample(params object[] args)
+        {
+            return new GraphTraversal().Sample(args);
+        }
+
+        public static GraphTraversal Select(params object[] args)
+        {
+            return new GraphTraversal().Select(args);
+        }
+
+        public static GraphTraversal SideEffect(params object[] args)
+        {
+            return new GraphTraversal().SideEffect(args);
+        }
+
+        public static GraphTraversal SimplePath(params object[] args)
+        {
+            return new GraphTraversal().SimplePath(args);
+        }
+
+        public static GraphTraversal Store(params object[] args)
+        {
+            return new GraphTraversal().Store(args);
+        }
+
+        public static GraphTraversal Subgraph(params object[] args)
+        {
+            return new GraphTraversal().Subgraph(args);
+        }
+
+        public static GraphTraversal Sum(params object[] args)
+        {
+            return new GraphTraversal().Sum(args);
+        }
+
+        public static GraphTraversal Tail(params object[] args)
+        {
+            return new GraphTraversal().Tail(args);
+        }
+
+        public static GraphTraversal TimeLimit(params object[] args)
+        {
+            return new GraphTraversal().TimeLimit(args);
+        }
+
+        public static GraphTraversal Times(params object[] args)
+        {
+            return new GraphTraversal().Times(args);
+        }
+
+        public static GraphTraversal To(params object[] args)
+        {
+            return new GraphTraversal().To(args);
+        }
+
+        public static GraphTraversal ToE(params object[] args)
+        {
+            return new GraphTraversal().ToE(args);
+        }
+
+        public static GraphTraversal ToV(params object[] args)
+        {
+            return new GraphTraversal().ToV(args);
+        }
+
+        public static GraphTraversal Tree(params object[] args)
+        {
+            return new GraphTraversal().Tree(args);
+        }
+
+        public static GraphTraversal Unfold(params object[] args)
+        {
+            return new GraphTraversal().Unfold(args);
+        }
+
+        public static GraphTraversal Union(params object[] args)
+        {
+            return new GraphTraversal().Union(args);
+        }
+
+        public static GraphTraversal Until(params object[] args)
+        {
+            return new GraphTraversal().Until(args);
+        }
+
+        public static GraphTraversal Value(params object[] args)
+        {
+            return new GraphTraversal().Value(args);
+        }
+
+        public static GraphTraversal ValueMap(params object[] args)
+        {
+            return new GraphTraversal().ValueMap(args);
+        }
+
+        public static GraphTraversal Values(params object[] args)
+        {
+            return new GraphTraversal().Values(args);
+        }
+
+        public static GraphTraversal Where(params object[] args)
+        {
+            return new GraphTraversal().Where(args);
+        }
+	}
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Structure/Graph.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/Graph.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/Graph.cs
new file mode 100644
index 0000000..0a07763
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/Graph.cs
@@ -0,0 +1,35 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using Gremlin.Net.Process.Traversal;
+
+namespace Gremlin.Net.Structure
+{
+    public class Graph
+    {
+        public GraphTraversalSource Traversal()
+        {
+            return new GraphTraversalSource();
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/BytecodeGeneration/BytecodeGenerationTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/BytecodeGeneration/BytecodeGenerationTests.cs b/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/BytecodeGeneration/BytecodeGenerationTests.cs
deleted file mode 100644
index 672ff35..0000000
--- a/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/BytecodeGeneration/BytecodeGenerationTests.cs
+++ /dev/null
@@ -1,76 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using Gremlin.CSharp.Process;
-using Gremlin.CSharp.Structure;
-using Xunit;
-
-namespace Gremlin.CSharp.IntegrationTest.BytecodeGeneration
-{
-    public class BytecodeGenerationTests
-    {
-        [Fact]
-        public void g_V_OutXcreatedX()
-        {
-            var g = new Graph().Traversal();
-
-            var bytecode = g.V().Out("created").Bytecode;
-
-            Assert.Equal(0, bytecode.SourceInstructions.Count);
-            Assert.Equal(2, bytecode.StepInstructions.Count);
-            Assert.Equal("V", bytecode.StepInstructions[0].OperatorName);
-            Assert.Equal("out", bytecode.StepInstructions[1].OperatorName);
-            Assert.Equal("created", bytecode.StepInstructions[1].Arguments[0]);
-            Assert.Equal(1, bytecode.StepInstructions[1].Arguments.Length);
-        }
-
-        [Fact]
-        public void g_WithSackX1X_E_GroupCount_ByXweightX()
-        {
-            var g = new Graph().Traversal();
-
-            var bytecode = g.WithSack(1).E().GroupCount().By("weight").Bytecode;
-
-            Assert.Equal(1, bytecode.SourceInstructions.Count);
-            Assert.Equal("withSack", bytecode.SourceInstructions[0].OperatorName);
-            Assert.Equal(1, bytecode.SourceInstructions[0].Arguments[0]);
-            Assert.Equal(3, bytecode.StepInstructions.Count);
-            Assert.Equal("E", bytecode.StepInstructions[0].OperatorName);
-            Assert.Equal("groupCount", bytecode.StepInstructions[1].OperatorName);
-            Assert.Equal("by", bytecode.StepInstructions[2].OperatorName);
-            Assert.Equal("weight", bytecode.StepInstructions[2].Arguments[0]);
-            Assert.Equal(0, bytecode.StepInstructions[0].Arguments.Length);
-            Assert.Equal(0, bytecode.StepInstructions[1].Arguments.Length);
-            Assert.Equal(1, bytecode.StepInstructions[2].Arguments.Length);
-        }
-
-        [Fact]
-        public void AnonymousTraversal_Start_EmptyBytecode()
-        {
-            var bytecode = __.Start().Bytecode;
-
-            Assert.Equal(0, bytecode.SourceInstructions.Count);
-            Assert.Equal(0, bytecode.StepInstructions.Count);
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/BytecodeGeneration/StrategiesTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/BytecodeGeneration/StrategiesTests.cs b/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/BytecodeGeneration/StrategiesTests.cs
deleted file mode 100644
index 6afda71..0000000
--- a/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/BytecodeGeneration/StrategiesTests.cs
+++ /dev/null
@@ -1,170 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using System.Collections.Generic;
-using Gremlin.CSharp.Process;
-using Gremlin.CSharp.Structure;
-using Gremlin.Net.Process.Traversal.Strategy.Decoration;
-using Gremlin.Net.Process.Traversal.Strategy.Finalization;
-using Gremlin.Net.Process.Traversal.Strategy.Optimization;
-using Gremlin.Net.Process.Traversal.Strategy.Verification;
-using Xunit;
-
-namespace Gremlin.CSharp.IntegrationTest.BytecodeGeneration
-{
-    public class StrategiesTests
-    {
-        [Fact]
-        public void TraversalWithoutStrategies_AfterWithStrategiesWasCalled_WithStrategiesNotAffected()
-        {
-            var graph = new Graph();
-            var g = graph.Traversal().WithStrategies(new ReadOnlyStrategy(), new IncidentToAdjacentStrategy());
-
-            var bytecode = g.WithoutStrategies(new ReadOnlyStrategy()).Bytecode;
-
-            Assert.Equal(2, bytecode.SourceInstructions.Count);
-            Assert.Equal("withStrategies", bytecode.SourceInstructions[0].OperatorName);
-            Assert.Equal(2, bytecode.SourceInstructions[0].Arguments.Length);
-            Assert.Equal(new ReadOnlyStrategy(), bytecode.SourceInstructions[0].Arguments[0]);
-            Assert.Equal(new IncidentToAdjacentStrategy(), bytecode.SourceInstructions[0].Arguments[1]);
-
-            Assert.Equal("withoutStrategies", bytecode.SourceInstructions[1].OperatorName);
-            Assert.Equal(1, bytecode.SourceInstructions[1].Arguments.Length);
-            Assert.Equal(new ReadOnlyStrategy(), bytecode.SourceInstructions[1].Arguments[0]);
-        }
-
-        [Fact]
-        public void ShouldIncludeMultipleStrategiesInBytecodeWhenGivenToWithoutStrategies()
-        {
-            var graph = new Graph();
-            var g = graph.Traversal();
-
-            var bytecode = g.WithoutStrategies(new ReadOnlyStrategy(), new LazyBarrierStrategy()).Bytecode;
-
-            Assert.Equal(1, bytecode.SourceInstructions.Count);
-            Assert.Equal(2, bytecode.SourceInstructions[0].Arguments.Length);
-            Assert.Equal("withoutStrategies", bytecode.SourceInstructions[0].OperatorName);
-            Assert.Equal(new ReadOnlyStrategy(), bytecode.SourceInstructions[0].Arguments[0]);
-            Assert.Equal(new LazyBarrierStrategy(), bytecode.SourceInstructions[0].Arguments[1]);
-        }
-
-        [Fact]
-        public void ShouldIncludeOneStrategyInBytecodeWhenGivenToWithoutStrategies()
-        {
-            var graph = new Graph();
-            var g = graph.Traversal();
-
-            var bytecode = g.WithoutStrategies(new ReadOnlyStrategy()).Bytecode;
-
-            Assert.Equal(1, bytecode.SourceInstructions.Count);
-            Assert.Equal(1, bytecode.SourceInstructions[0].Arguments.Length);
-            Assert.Equal("withoutStrategies", bytecode.SourceInstructions[0].OperatorName);
-            Assert.Equal(new ReadOnlyStrategy(), bytecode.SourceInstructions[0].Arguments[0]);
-        }
-
-        [Fact]
-        public void ShouldIncludeConfigurationInBytecodeWhenGivenToWithStrategies()
-        {
-            var graph = new Graph();
-            var g = graph.Traversal();
-
-            var bytecode = g.WithStrategies(new MatchAlgorithmStrategy("greedy")).Bytecode;
-
-            Assert.Equal(1, bytecode.SourceInstructions.Count);
-            Assert.Equal(1, bytecode.SourceInstructions[0].Arguments.Length);
-            Assert.Equal("withStrategies", bytecode.SourceInstructions[0].OperatorName);
-            Assert.Equal(new MatchAlgorithmStrategy(), bytecode.SourceInstructions[0].Arguments[0]);
-            Assert.Contains("greedy",
-                ((MatchAlgorithmStrategy) bytecode.SourceInstructions[0].Arguments[0]).Configuration.Values);
-        }
-
-        [Fact]
-        public void ShouldIncludeMultipleStrategiesInBytecodeWhenGivenToWithStrategies()
-        {
-            var graph = new Graph();
-            var g = graph.Traversal();
-
-            var bytecode = g.WithStrategies(new ReadOnlyStrategy(), new IncidentToAdjacentStrategy()).Bytecode;
-
-            Assert.Equal(1, bytecode.SourceInstructions.Count);
-            Assert.Equal(2, bytecode.SourceInstructions[0].Arguments.Length);
-            Assert.Equal("withStrategies", bytecode.SourceInstructions[0].OperatorName);
-            Assert.Equal(new ReadOnlyStrategy(), bytecode.SourceInstructions[0].Arguments[0]);
-            Assert.Equal(new IncidentToAdjacentStrategy(), bytecode.SourceInstructions[0].Arguments[1]);
-        }
-
-        [Fact]
-        public void ShouldIncludeOneStrategyInBytecodeWhenGivenToWithStrategies()
-        {
-            var graph = new Graph();
-            var g = graph.Traversal();
-
-            var bytecode = g.WithStrategies(new ReadOnlyStrategy()).Bytecode;
-
-            Assert.Equal(1, bytecode.SourceInstructions.Count);
-            Assert.Equal(1, bytecode.SourceInstructions[0].Arguments.Length);
-            Assert.Equal("withStrategies", bytecode.SourceInstructions[0].OperatorName);
-            Assert.Equal(new ReadOnlyStrategy(), bytecode.SourceInstructions[0].Arguments[0]);
-            Assert.Equal("ReadOnlyStrategy", bytecode.SourceInstructions[0].Arguments[0].ToString());
-            Assert.Equal(new ReadOnlyStrategy().GetHashCode(), bytecode.SourceInstructions[0].Arguments[0].GetHashCode());
-            Assert.Equal(0, g.TraversalStrategies.Count);
-        }
-
-        [Fact]
-        public void TraversalWithStrategies_Strategies_ApplyToReusedGraphTraversalSource()
-        {
-            var graph = new Graph();
-            var g = graph.Traversal().WithStrategies(new ReadOnlyStrategy(), new IncidentToAdjacentStrategy());
-
-            var bytecode = g.V().Bytecode;
-
-            Assert.Equal(1, bytecode.SourceInstructions.Count);
-            Assert.Equal(2, bytecode.SourceInstructions[0].Arguments.Length);
-            Assert.Equal("withStrategies", bytecode.SourceInstructions[0].OperatorName);
-            Assert.Equal(new ReadOnlyStrategy(), bytecode.SourceInstructions[0].Arguments[0]);
-            Assert.Equal(new IncidentToAdjacentStrategy(), bytecode.SourceInstructions[0].Arguments[1]);
-            Assert.Equal(1, bytecode.StepInstructions.Count);
-            Assert.Equal("V", bytecode.StepInstructions[0].OperatorName);
-        }
-
-        [Fact]
-        public void TraversalWithStrategies_StrategyWithTraversalInConfig_IncludeTraversalInInConfigInBytecode()
-        {
-            var graph = new Graph();
-            var g = graph.Traversal();
-
-            var bytecode = g.WithStrategies(new SubgraphStrategy(__.Has("name", "marko"))).Bytecode;
-
-            Assert.Equal(1, bytecode.SourceInstructions.Count);
-            Assert.Equal(1, bytecode.SourceInstructions[0].Arguments.Length);
-            Assert.Equal("withStrategies", bytecode.SourceInstructions[0].OperatorName);
-            Assert.Equal(new SubgraphStrategy(), bytecode.SourceInstructions[0].Arguments[0]);
-            SubgraphStrategy strategy = bytecode.SourceInstructions[0].Arguments[0];
-            Assert.Equal(1, strategy.Configuration.Count);
-            Assert.Equal(typeof(GraphTraversal), strategy.Configuration["vertices"].GetType());
-            GraphTraversal traversal = strategy.Configuration["vertices"];
-            Assert.Equal("has", traversal.Bytecode.StepInstructions[0].OperatorName);
-            Assert.Equal(new List<string> {"name", "marko"}, traversal.Bytecode.StepInstructions[0].Arguments);
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/ConfigProvider.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/ConfigProvider.cs b/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/ConfigProvider.cs
deleted file mode 100644
index 27e7009..0000000
--- a/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/ConfigProvider.cs
+++ /dev/null
@@ -1,47 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using System.IO;
-using Microsoft.Extensions.Configuration;
-
-namespace Gremlin.CSharp.IntegrationTest
-{
-    public static class ConfigProvider
-    {
-        static ConfigProvider()
-        {
-            Configuration = GetConfig();
-        }
-
-        public static IConfiguration Configuration { get; }
-
-        private static IConfiguration GetConfig()
-        {
-            var configFile = Path.Combine(Directory.GetCurrentDirectory(), "appsettings.json");
-            var builder = new ConfigurationBuilder()
-                .AddJsonFile(configFile, false, false);
-
-            return builder.Build();
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/DriverRemoteConnection/EnumTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/DriverRemoteConnection/EnumTests.cs b/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/DriverRemoteConnection/EnumTests.cs
deleted file mode 100644
index a49a09d..0000000
--- a/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/DriverRemoteConnection/EnumTests.cs
+++ /dev/null
@@ -1,59 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using System.Collections.Generic;
-using Gremlin.CSharp.Process;
-using Gremlin.CSharp.Structure;
-using Xunit;
-
-namespace Gremlin.CSharp.IntegrationTest.DriverRemoteConnection
-{
-    public class EnumTests
-    {
-        private readonly RemoteConnectionFactory _connectionFactory = new RemoteConnectionFactory();
-
-        [Fact]
-        public void ShouldUseOrderDecrInByStep()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g = graph.Traversal().WithRemote(connection);
-
-            var orderedAges = g.V().Values("age").Order().By(Order.decr).ToList();
-
-            Assert.Equal(new List<object> {35, 32, 29, 27}, orderedAges);
-        }
-
-        [Fact]
-        public void ShouldUseTLabelInHasStep()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g = graph.Traversal().WithRemote(connection);
-
-            var personsCount = g.V().Has(T.label, "person").Count().Next();
-
-            Assert.Equal((long) 4, personsCount);
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/DriverRemoteConnection/GraphTraversalSourceTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/DriverRemoteConnection/GraphTraversalSourceTests.cs b/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/DriverRemoteConnection/GraphTraversalSourceTests.cs
deleted file mode 100644
index f8c12e2..0000000
--- a/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/DriverRemoteConnection/GraphTraversalSourceTests.cs
+++ /dev/null
@@ -1,55 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using System.Collections.Generic;
-using Gremlin.CSharp.Process;
-using Gremlin.CSharp.Structure;
-using Xunit;
-
-namespace Gremlin.CSharp.IntegrationTest.DriverRemoteConnection
-{
-    public class GraphTraversalSourceTests
-    {
-        private readonly RemoteConnectionFactory _connectionFactory = new RemoteConnectionFactory();
-
-        [Fact]
-        public void ShouldUseSideEffectSpecifiedInWithSideEffect()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g = graph.Traversal().WithRemote(connection);
-
-            var results = g.WithSideEffect("a", new List<string> {"josh", "peter"})
-                .V(1)
-                .Out("created")
-                .In("created")
-                .Values("name")
-                .Where(P.Within("a"))
-                .ToList();
-
-            Assert.Equal(2, results.Count);
-            Assert.Contains("josh", results);
-            Assert.Contains("peter", results);
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/DriverRemoteConnection/GraphTraversalTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/DriverRemoteConnection/GraphTraversalTests.cs b/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/DriverRemoteConnection/GraphTraversalTests.cs
deleted file mode 100644
index 91a41ba..0000000
--- a/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/DriverRemoteConnection/GraphTraversalTests.cs
+++ /dev/null
@@ -1,171 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using Gremlin.CSharp.Process;
-using Gremlin.CSharp.Structure;
-using Gremlin.Net.Process.Traversal;
-using Gremlin.Net.Structure;
-using Xunit;
-
-namespace Gremlin.CSharp.IntegrationTest.DriverRemoteConnection
-{
-    public class GraphTraversalTests
-    {
-        private readonly RemoteConnectionFactory _connectionFactory = new RemoteConnectionFactory();
-
-        [Fact]
-        public void g_V_Count()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g = graph.Traversal().WithRemote(connection);
-
-            var count = g.V().Count().Next();
-
-            Assert.Equal((long) 6, count);
-        }
-
-        [Fact]
-        public void g_VX1X_Next()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g = graph.Traversal().WithRemote(connection);
-
-            var vertex = (Vertex) g.V(1).Next();
-
-            Assert.Equal(new Vertex((long) 1), vertex);
-            Assert.Equal((long) 1, vertex.Id);
-        }
-
-        [Fact]
-        public void g_VX1X_NextTraverser()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g = graph.Traversal().WithRemote(connection);
-
-            var traverser = g.V(1).NextTraverser();
-
-            Assert.Equal(new Traverser(new Vertex((long)1)), traverser);
-        }
-
-        [Fact]
-        public void g_VX1X_ToList()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g = graph.Traversal().WithRemote(connection);
-
-            var list = g.V(1).ToList();
-
-            Assert.Equal(1, list.Count);
-        }
-
-        [Fact]
-        public void g_V_RepeatXBothX_TimesX5X_NextX10X()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g = graph.Traversal().WithRemote(connection);
-
-            var result = g.V().Repeat(__.Both()).Times(5).Next(10);
-
-            Assert.Equal(10, result.Count());
-        }
-
-        [Fact]
-        public void g_V_HasXname_markoX_ValueMap_Next()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g = graph.Traversal().WithRemote(connection);
-
-            var receivedValueMap = g.V().Has("name", "marko").ValueMap().Next();
-
-            var expectedValueMap = new Dictionary<string, dynamic>
-            {
-                {"age", new List<object> {29}},
-                {"name", new List<object> {"marko"}}
-            };
-            Assert.Equal(expectedValueMap, receivedValueMap);
-        }
-
-        [Fact]
-        public void g_V_RepeatXOutX_TimesX2X_ValuesXNameX()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g = graph.Traversal().WithRemote(connection);
-
-            var t = g.V().Repeat(__.Out()).Times(2).Values("name");
-            var names = t.ToList();
-
-            Assert.Equal((long) 2, names.Count);
-            Assert.Contains("lop", names);
-            Assert.Contains("ripple", names);
-        }
-
-        [Fact]
-        public void ShortestPathTest()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g = graph.Traversal().WithRemote(connection);
-
-            var shortestPath =
-                (Path) g.V(5).Repeat(__.Both().SimplePath()).Until(__.HasId(6)).Limit(1).Path().Next();
-
-            Assert.Equal((long) 4, shortestPath.Count);
-            Assert.Equal(new Vertex((long) 6), shortestPath[3]);
-        }
-
-        [Fact]
-        public void ShouldUseBindingsInTraversal()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g = graph.Traversal().WithRemote(connection);
-
-            var b = new Bindings();
-            var count = g.V().Has(b.Of("propertyKey", "name"), b.Of("propertyValue", "marko")).OutE().Count().Next();
-
-            Assert.Equal((long) 3, count);
-        }
-
-        [Fact]
-        public async Task ShouldExecuteAsynchronouslyWhenPromiseIsCalled()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g = graph.Traversal().WithRemote(connection);
-
-            var count = await g.V().Count().Promise(t => t.Next());
-
-            Assert.Equal((long) 6, count);
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/DriverRemoteConnection/PredicateTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/DriverRemoteConnection/PredicateTests.cs b/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/DriverRemoteConnection/PredicateTests.cs
deleted file mode 100644
index 8dffa43..0000000
--- a/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/DriverRemoteConnection/PredicateTests.cs
+++ /dev/null
@@ -1,58 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using Gremlin.CSharp.Process;
-using Gremlin.CSharp.Structure;
-using Xunit;
-
-namespace Gremlin.CSharp.IntegrationTest.DriverRemoteConnection
-{
-    public class PredicateTests
-    {
-        private readonly RemoteConnectionFactory _connectionFactory = new RemoteConnectionFactory();
-
-        [Fact]
-        public void ShouldUsePredicatesCombinedWithPAndInHasStep()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g = graph.Traversal().WithRemote(connection);
-
-            var count = g.V().Has("age", P.Gt(30).And(P.Lt(35))).Count().Next();
-
-            Assert.Equal((long) 1, count);
-        }
-
-        [Fact]
-        public void ShouldUsePWithinInHasStep()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g = graph.Traversal().WithRemote(connection);
-
-            var count = g.V().Has("name", P.Within("josh", "vadas")).Count().Next();
-
-            Assert.Equal((long) 2, count);
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/DriverRemoteConnection/RemoteConnectionFactory.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/DriverRemoteConnection/RemoteConnectionFactory.cs b/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/DriverRemoteConnection/RemoteConnectionFactory.cs
deleted file mode 100644
index 53b6e50..0000000
--- a/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/DriverRemoteConnection/RemoteConnectionFactory.cs
+++ /dev/null
@@ -1,41 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using System;
-using Gremlin.Net.Driver;
-using Gremlin.Net.Process.Remote;
-
-namespace Gremlin.CSharp.IntegrationTest.DriverRemoteConnection
-{
-    internal class RemoteConnectionFactory
-    {
-        private static readonly string TestHost = ConfigProvider.Configuration["TestServerIpAddress"];
-        private static readonly int TestPort = Convert.ToInt32(ConfigProvider.Configuration["TestServerPort"]);
-
-        public IRemoteConnection CreateRemoteConnection()
-        {
-            return new Net.Driver.Remote.DriverRemoteConnection(
-                new GremlinClient(new GremlinServer(TestHost, TestPort)));
-        }
-    }
-}
\ No newline at end of file


[09/50] [abbrv] tinkerpop git commit: C# GLV: Generics and enum generation

Posted by sp...@apache.org.
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
index e120372..f2e6162 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
@@ -21,468 +21,471 @@
 
 #endregion
 
+using System.Collections.Generic;
+using Gremlin.Net.Structure;
+
 namespace Gremlin.Net.Process.Traversal
 {
     public static class __
     {
-        public static GraphTraversal Start()
+        public static GraphTraversal<object, object> Start()
         {
-            return new GraphTraversal();
+            return new GraphTraversal<object, object>();
         }
 
-        public static GraphTraversal V(params object[] args)
+        public static GraphTraversal<object, Vertex> V(params object[] args)
         {
-            return new GraphTraversal().V(args);
+            return new GraphTraversal<object, object>().V(args);
         }
 
-        public static GraphTraversal AddE(params object[] args)
+        public static GraphTraversal<object, Edge> AddE(params object[] args)
         {
-            return new GraphTraversal().AddE(args);
+            return new GraphTraversal<object, object>().AddE(args);
         }
 
-        public static GraphTraversal AddInE(params object[] args)
+        public static GraphTraversal<object, Edge> AddInE(params object[] args)
         {
-            return new GraphTraversal().AddInE(args);
+            return new GraphTraversal<object, object>().AddInE(args);
         }
 
-        public static GraphTraversal AddOutE(params object[] args)
+        public static GraphTraversal<object, Edge> AddOutE(params object[] args)
         {
-            return new GraphTraversal().AddOutE(args);
+            return new GraphTraversal<object, object>().AddOutE(args);
         }
 
-        public static GraphTraversal AddV(params object[] args)
+        public static GraphTraversal<object, Vertex> AddV(params object[] args)
         {
-            return new GraphTraversal().AddV(args);
+            return new GraphTraversal<object, object>().AddV(args);
         }
 
-        public static GraphTraversal Aggregate(params object[] args)
+        public static GraphTraversal<object, object> Aggregate(params object[] args)
         {
-            return new GraphTraversal().Aggregate(args);
+            return new GraphTraversal<object, object>().Aggregate(args);
         }
 
-        public static GraphTraversal And(params object[] args)
+        public static GraphTraversal<object, object> And(params object[] args)
         {
-            return new GraphTraversal().And(args);
+            return new GraphTraversal<object, object>().And(args);
         }
 
-        public static GraphTraversal As(params object[] args)
+        public static GraphTraversal<object, object> As(params object[] args)
         {
-            return new GraphTraversal().As(args);
+            return new GraphTraversal<object, object>().As(args);
         }
 
-        public static GraphTraversal Barrier(params object[] args)
+        public static GraphTraversal<object, object> Barrier(params object[] args)
         {
-            return new GraphTraversal().Barrier(args);
+            return new GraphTraversal<object, object>().Barrier(args);
         }
 
-        public static GraphTraversal Both(params object[] args)
+        public static GraphTraversal<object, Vertex> Both(params object[] args)
         {
-            return new GraphTraversal().Both(args);
+            return new GraphTraversal<object, object>().Both(args);
         }
 
-        public static GraphTraversal BothE(params object[] args)
+        public static GraphTraversal<object, Edge> BothE(params object[] args)
         {
-            return new GraphTraversal().BothE(args);
+            return new GraphTraversal<object, object>().BothE(args);
         }
 
-        public static GraphTraversal BothV(params object[] args)
+        public static GraphTraversal<object, Vertex> BothV(params object[] args)
         {
-            return new GraphTraversal().BothV(args);
+            return new GraphTraversal<object, object>().BothV(args);
         }
 
-        public static GraphTraversal Branch(params object[] args)
+        public static GraphTraversal<object, E2> Branch<E2>(params object[] args)
         {
-            return new GraphTraversal().Branch(args);
+            return new GraphTraversal<object, object>().Branch<E2>(args);
         }
 
-        public static GraphTraversal Cap(params object[] args)
+        public static GraphTraversal<object, E2> Cap<E2>(params object[] args)
         {
-            return new GraphTraversal().Cap(args);
+            return new GraphTraversal<object, object>().Cap<E2>(args);
         }
 
-        public static GraphTraversal Choose(params object[] args)
+        public static GraphTraversal<object, E2> Choose<E2>(params object[] args)
         {
-            return new GraphTraversal().Choose(args);
+            return new GraphTraversal<object, object>().Choose<E2>(args);
         }
 
-        public static GraphTraversal Coalesce(params object[] args)
+        public static GraphTraversal<object, E2> Coalesce<E2>(params object[] args)
         {
-            return new GraphTraversal().Coalesce(args);
+            return new GraphTraversal<object, object>().Coalesce<E2>(args);
         }
 
-        public static GraphTraversal Coin(params object[] args)
+        public static GraphTraversal<object, object> Coin(params object[] args)
         {
-            return new GraphTraversal().Coin(args);
+            return new GraphTraversal<object, object>().Coin(args);
         }
 
-        public static GraphTraversal Constant(params object[] args)
+        public static GraphTraversal<object, E2> Constant<E2>(params object[] args)
         {
-            return new GraphTraversal().Constant(args);
+            return new GraphTraversal<object, object>().Constant<E2>(args);
         }
 
-        public static GraphTraversal Count(params object[] args)
+        public static GraphTraversal<object, long> Count(params object[] args)
         {
-            return new GraphTraversal().Count(args);
+            return new GraphTraversal<object, object>().Count(args);
         }
 
-        public static GraphTraversal CyclicPath(params object[] args)
+        public static GraphTraversal<object, object> CyclicPath(params object[] args)
         {
-            return new GraphTraversal().CyclicPath(args);
+            return new GraphTraversal<object, object>().CyclicPath(args);
         }
 
-        public static GraphTraversal Dedup(params object[] args)
+        public static GraphTraversal<object, object> Dedup(params object[] args)
         {
-            return new GraphTraversal().Dedup(args);
+            return new GraphTraversal<object, object>().Dedup(args);
         }
 
-        public static GraphTraversal Drop(params object[] args)
+        public static GraphTraversal<object, object> Drop(params object[] args)
         {
-            return new GraphTraversal().Drop(args);
+            return new GraphTraversal<object, object>().Drop(args);
         }
 
-        public static GraphTraversal Emit(params object[] args)
+        public static GraphTraversal<object, object> Emit(params object[] args)
         {
-            return new GraphTraversal().Emit(args);
+            return new GraphTraversal<object, object>().Emit(args);
         }
 
-        public static GraphTraversal Filter(params object[] args)
+        public static GraphTraversal<object, object> Filter(params object[] args)
         {
-            return new GraphTraversal().Filter(args);
+            return new GraphTraversal<object, object>().Filter(args);
         }
 
-        public static GraphTraversal FlatMap(params object[] args)
+        public static GraphTraversal<object, E2> FlatMap<E2>(params object[] args)
         {
-            return new GraphTraversal().FlatMap(args);
+            return new GraphTraversal<object, object>().FlatMap<E2>(args);
         }
 
-        public static GraphTraversal Fold(params object[] args)
+        public static GraphTraversal<object, E2> Fold<E2>(params object[] args)
         {
-            return new GraphTraversal().Fold(args);
+            return new GraphTraversal<object, object>().Fold<E2>(args);
         }
 
-        public static GraphTraversal Group(params object[] args)
+        public static GraphTraversal<object, object> Group(params object[] args)
         {
-            return new GraphTraversal().Group(args);
+            return new GraphTraversal<object, object>().Group(args);
         }
 
-        public static GraphTraversal GroupCount(params object[] args)
+        public static GraphTraversal<object, object> GroupCount(params object[] args)
         {
-            return new GraphTraversal().GroupCount(args);
+            return new GraphTraversal<object, object>().GroupCount(args);
         }
 
-        public static GraphTraversal GroupV3d0(params object[] args)
+        public static GraphTraversal<object, object> GroupV3d0(params object[] args)
         {
-            return new GraphTraversal().GroupV3d0(args);
+            return new GraphTraversal<object, object>().GroupV3d0(args);
         }
 
-        public static GraphTraversal Has(params object[] args)
+        public static GraphTraversal<object, object> Has(params object[] args)
         {
-            return new GraphTraversal().Has(args);
+            return new GraphTraversal<object, object>().Has(args);
         }
 
-        public static GraphTraversal HasId(params object[] args)
+        public static GraphTraversal<object, object> HasId(params object[] args)
         {
-            return new GraphTraversal().HasId(args);
+            return new GraphTraversal<object, object>().HasId(args);
         }
 
-        public static GraphTraversal HasKey(params object[] args)
+        public static GraphTraversal<object, object> HasKey(params object[] args)
         {
-            return new GraphTraversal().HasKey(args);
+            return new GraphTraversal<object, object>().HasKey(args);
         }
 
-        public static GraphTraversal HasLabel(params object[] args)
+        public static GraphTraversal<object, object> HasLabel(params object[] args)
         {
-            return new GraphTraversal().HasLabel(args);
+            return new GraphTraversal<object, object>().HasLabel(args);
         }
 
-        public static GraphTraversal HasNot(params object[] args)
+        public static GraphTraversal<object, object> HasNot(params object[] args)
         {
-            return new GraphTraversal().HasNot(args);
+            return new GraphTraversal<object, object>().HasNot(args);
         }
 
-        public static GraphTraversal HasValue(params object[] args)
+        public static GraphTraversal<object, object> HasValue(params object[] args)
         {
-            return new GraphTraversal().HasValue(args);
+            return new GraphTraversal<object, object>().HasValue(args);
         }
 
-        public static GraphTraversal Id(params object[] args)
+        public static GraphTraversal<object, object> Id(params object[] args)
         {
-            return new GraphTraversal().Id(args);
+            return new GraphTraversal<object, object>().Id(args);
         }
 
-        public static GraphTraversal Identity(params object[] args)
+        public static GraphTraversal<object, object> Identity(params object[] args)
         {
-            return new GraphTraversal().Identity(args);
+            return new GraphTraversal<object, object>().Identity(args);
         }
 
-        public static GraphTraversal In(params object[] args)
+        public static GraphTraversal<object, Vertex> In(params object[] args)
         {
-            return new GraphTraversal().In(args);
+            return new GraphTraversal<object, object>().In(args);
         }
 
-        public static GraphTraversal InE(params object[] args)
+        public static GraphTraversal<object, Edge> InE(params object[] args)
         {
-            return new GraphTraversal().InE(args);
+            return new GraphTraversal<object, object>().InE(args);
         }
 
-        public static GraphTraversal InV(params object[] args)
+        public static GraphTraversal<object, Vertex> InV(params object[] args)
         {
-            return new GraphTraversal().InV(args);
+            return new GraphTraversal<object, object>().InV(args);
         }
 
-        public static GraphTraversal Inject(params object[] args)
+        public static GraphTraversal<object, object> Inject(params object[] args)
         {
-            return new GraphTraversal().Inject(args);
+            return new GraphTraversal<object, object>().Inject(args);
         }
 
-        public static GraphTraversal Is(params object[] args)
+        public static GraphTraversal<object, object> Is(params object[] args)
         {
-            return new GraphTraversal().Is(args);
+            return new GraphTraversal<object, object>().Is(args);
         }
 
-        public static GraphTraversal Key(params object[] args)
+        public static GraphTraversal<object, string> Key(params object[] args)
         {
-            return new GraphTraversal().Key(args);
+            return new GraphTraversal<object, object>().Key(args);
         }
 
-        public static GraphTraversal Label(params object[] args)
+        public static GraphTraversal<object, string> Label(params object[] args)
         {
-            return new GraphTraversal().Label(args);
+            return new GraphTraversal<object, object>().Label(args);
         }
 
-        public static GraphTraversal Limit(params object[] args)
+        public static GraphTraversal<object, E2> Limit<E2>(params object[] args)
         {
-            return new GraphTraversal().Limit(args);
+            return new GraphTraversal<object, object>().Limit<E2>(args);
         }
 
-        public static GraphTraversal Local(params object[] args)
+        public static GraphTraversal<object, E2> Local<E2>(params object[] args)
         {
-            return new GraphTraversal().Local(args);
+            return new GraphTraversal<object, object>().Local<E2>(args);
         }
 
-        public static GraphTraversal Loops(params object[] args)
+        public static GraphTraversal<object, int> Loops(params object[] args)
         {
-            return new GraphTraversal().Loops(args);
+            return new GraphTraversal<object, object>().Loops(args);
         }
 
-        public static GraphTraversal Map(params object[] args)
+        public static GraphTraversal<object, E2> Map<E2>(params object[] args)
         {
-            return new GraphTraversal().Map(args);
+            return new GraphTraversal<object, object>().Map<E2>(args);
         }
 
-        public static GraphTraversal MapKeys(params object[] args)
+        public static GraphTraversal<object, E2> MapKeys<E2>(params object[] args)
         {
-            return new GraphTraversal().MapKeys(args);
+            return new GraphTraversal<object, object>().MapKeys<E2>(args);
         }
 
-        public static GraphTraversal MapValues(params object[] args)
+        public static GraphTraversal<object, E2> MapValues<E2>(params object[] args)
         {
-            return new GraphTraversal().MapValues(args);
+            return new GraphTraversal<object, object>().MapValues<E2>(args);
         }
 
-        public static GraphTraversal Match(params object[] args)
+        public static GraphTraversal<object, IDictionary<string, E2>> Match<E2>(params object[] args)
         {
-            return new GraphTraversal().Match(args);
+            return new GraphTraversal<object, object>().Match<E2>(args);
         }
 
-        public static GraphTraversal Max(params object[] args)
+        public static GraphTraversal<object, E2> Max<E2>(params object[] args)
         {
-            return new GraphTraversal().Max(args);
+            return new GraphTraversal<object, object>().Max<E2>(args);
         }
 
-        public static GraphTraversal Mean(params object[] args)
+        public static GraphTraversal<object, E2> Mean<E2>(params object[] args)
         {
-            return new GraphTraversal().Mean(args);
+            return new GraphTraversal<object, object>().Mean<E2>(args);
         }
 
-        public static GraphTraversal Min(params object[] args)
+        public static GraphTraversal<object, E2> Min<E2>(params object[] args)
         {
-            return new GraphTraversal().Min(args);
+            return new GraphTraversal<object, object>().Min<E2>(args);
         }
 
-        public static GraphTraversal Not(params object[] args)
+        public static GraphTraversal<object, object> Not(params object[] args)
         {
-            return new GraphTraversal().Not(args);
+            return new GraphTraversal<object, object>().Not(args);
         }
 
-        public static GraphTraversal Optional(params object[] args)
+        public static GraphTraversal<object, E2> Optional<E2>(params object[] args)
         {
-            return new GraphTraversal().Optional(args);
+            return new GraphTraversal<object, object>().Optional<E2>(args);
         }
 
-        public static GraphTraversal Or(params object[] args)
+        public static GraphTraversal<object, object> Or(params object[] args)
         {
-            return new GraphTraversal().Or(args);
+            return new GraphTraversal<object, object>().Or(args);
         }
 
-        public static GraphTraversal Order(params object[] args)
+        public static GraphTraversal<object, object> Order(params object[] args)
         {
-            return new GraphTraversal().Order(args);
+            return new GraphTraversal<object, object>().Order(args);
         }
 
-        public static GraphTraversal OtherV(params object[] args)
+        public static GraphTraversal<object, Vertex> OtherV(params object[] args)
         {
-            return new GraphTraversal().OtherV(args);
+            return new GraphTraversal<object, object>().OtherV(args);
         }
 
-        public static GraphTraversal Out(params object[] args)
+        public static GraphTraversal<object, Vertex> Out(params object[] args)
         {
-            return new GraphTraversal().Out(args);
+            return new GraphTraversal<object, object>().Out(args);
         }
 
-        public static GraphTraversal OutE(params object[] args)
+        public static GraphTraversal<object, Edge> OutE(params object[] args)
         {
-            return new GraphTraversal().OutE(args);
+            return new GraphTraversal<object, object>().OutE(args);
         }
 
-        public static GraphTraversal OutV(params object[] args)
+        public static GraphTraversal<object, Vertex> OutV(params object[] args)
         {
-            return new GraphTraversal().OutV(args);
+            return new GraphTraversal<object, object>().OutV(args);
         }
 
-        public static GraphTraversal Path(params object[] args)
+        public static GraphTraversal<object, Path> Path(params object[] args)
         {
-            return new GraphTraversal().Path(args);
+            return new GraphTraversal<object, object>().Path(args);
         }
 
-        public static GraphTraversal Project(params object[] args)
+        public static GraphTraversal<object, IDictionary<string, E2>> Project<E2>(params object[] args)
         {
-            return new GraphTraversal().Project(args);
+            return new GraphTraversal<object, object>().Project<E2>(args);
         }
 
-        public static GraphTraversal Properties(params object[] args)
+        public static GraphTraversal<object, E2> Properties<E2>(params object[] args)
         {
-            return new GraphTraversal().Properties(args);
+            return new GraphTraversal<object, object>().Properties<E2>(args);
         }
 
-        public static GraphTraversal Property(params object[] args)
+        public static GraphTraversal<object, object> Property(params object[] args)
         {
-            return new GraphTraversal().Property(args);
+            return new GraphTraversal<object, object>().Property(args);
         }
 
-        public static GraphTraversal PropertyMap(params object[] args)
+        public static GraphTraversal<object, IDictionary<string, E2>> PropertyMap<E2>(params object[] args)
         {
-            return new GraphTraversal().PropertyMap(args);
+            return new GraphTraversal<object, object>().PropertyMap<E2>(args);
         }
 
-        public static GraphTraversal Range(params object[] args)
+        public static GraphTraversal<object, E2> Range<E2>(params object[] args)
         {
-            return new GraphTraversal().Range(args);
+            return new GraphTraversal<object, object>().Range<E2>(args);
         }
 
-        public static GraphTraversal Repeat(params object[] args)
+        public static GraphTraversal<object, object> Repeat(params object[] args)
         {
-            return new GraphTraversal().Repeat(args);
+            return new GraphTraversal<object, object>().Repeat(args);
         }
 
-        public static GraphTraversal Sack(params object[] args)
+        public static GraphTraversal<object, object> Sack(params object[] args)
         {
-            return new GraphTraversal().Sack(args);
+            return new GraphTraversal<object, object>().Sack(args);
         }
 
-        public static GraphTraversal Sample(params object[] args)
+        public static GraphTraversal<object, object> Sample(params object[] args)
         {
-            return new GraphTraversal().Sample(args);
+            return new GraphTraversal<object, object>().Sample(args);
         }
 
-        public static GraphTraversal Select(params object[] args)
+        public static GraphTraversal<object, IDictionary<string, E2>> Select<E2>(params object[] args)
         {
-            return new GraphTraversal().Select(args);
+            return new GraphTraversal<object, object>().Select<E2>(args);
         }
 
-        public static GraphTraversal SideEffect(params object[] args)
+        public static GraphTraversal<object, object> SideEffect(params object[] args)
         {
-            return new GraphTraversal().SideEffect(args);
+            return new GraphTraversal<object, object>().SideEffect(args);
         }
 
-        public static GraphTraversal SimplePath(params object[] args)
+        public static GraphTraversal<object, object> SimplePath(params object[] args)
         {
-            return new GraphTraversal().SimplePath(args);
+            return new GraphTraversal<object, object>().SimplePath(args);
         }
 
-        public static GraphTraversal Store(params object[] args)
+        public static GraphTraversal<object, object> Store(params object[] args)
         {
-            return new GraphTraversal().Store(args);
+            return new GraphTraversal<object, object>().Store(args);
         }
 
-        public static GraphTraversal Subgraph(params object[] args)
+        public static GraphTraversal<object, Edge> Subgraph(params object[] args)
         {
-            return new GraphTraversal().Subgraph(args);
+            return new GraphTraversal<object, object>().Subgraph(args);
         }
 
-        public static GraphTraversal Sum(params object[] args)
+        public static GraphTraversal<object, E2> Sum<E2>(params object[] args)
         {
-            return new GraphTraversal().Sum(args);
+            return new GraphTraversal<object, object>().Sum<E2>(args);
         }
 
-        public static GraphTraversal Tail(params object[] args)
+        public static GraphTraversal<object, E2> Tail<E2>(params object[] args)
         {
-            return new GraphTraversal().Tail(args);
+            return new GraphTraversal<object, object>().Tail<E2>(args);
         }
 
-        public static GraphTraversal TimeLimit(params object[] args)
+        public static GraphTraversal<object, object> TimeLimit(params object[] args)
         {
-            return new GraphTraversal().TimeLimit(args);
+            return new GraphTraversal<object, object>().TimeLimit(args);
         }
 
-        public static GraphTraversal Times(params object[] args)
+        public static GraphTraversal<object, object> Times(params object[] args)
         {
-            return new GraphTraversal().Times(args);
+            return new GraphTraversal<object, object>().Times(args);
         }
 
-        public static GraphTraversal To(params object[] args)
+        public static GraphTraversal<object, Vertex> To(params object[] args)
         {
-            return new GraphTraversal().To(args);
+            return new GraphTraversal<object, object>().To(args);
         }
 
-        public static GraphTraversal ToE(params object[] args)
+        public static GraphTraversal<object, Edge> ToE(params object[] args)
         {
-            return new GraphTraversal().ToE(args);
+            return new GraphTraversal<object, object>().ToE(args);
         }
 
-        public static GraphTraversal ToV(params object[] args)
+        public static GraphTraversal<object, Vertex> ToV(params object[] args)
         {
-            return new GraphTraversal().ToV(args);
+            return new GraphTraversal<object, object>().ToV(args);
         }
 
-        public static GraphTraversal Tree(params object[] args)
+        public static GraphTraversal<object, object> Tree(params object[] args)
         {
-            return new GraphTraversal().Tree(args);
+            return new GraphTraversal<object, object>().Tree(args);
         }
 
-        public static GraphTraversal Unfold(params object[] args)
+        public static GraphTraversal<object, E2> Unfold<E2>(params object[] args)
         {
-            return new GraphTraversal().Unfold(args);
+            return new GraphTraversal<object, object>().Unfold<E2>(args);
         }
 
-        public static GraphTraversal Union(params object[] args)
+        public static GraphTraversal<object, E2> Union<E2>(params object[] args)
         {
-            return new GraphTraversal().Union(args);
+            return new GraphTraversal<object, object>().Union<E2>(args);
         }
 
-        public static GraphTraversal Until(params object[] args)
+        public static GraphTraversal<object, object> Until(params object[] args)
         {
-            return new GraphTraversal().Until(args);
+            return new GraphTraversal<object, object>().Until(args);
         }
 
-        public static GraphTraversal Value(params object[] args)
+        public static GraphTraversal<object, E2> Value<E2>(params object[] args)
         {
-            return new GraphTraversal().Value(args);
+            return new GraphTraversal<object, object>().Value<E2>(args);
         }
 
-        public static GraphTraversal ValueMap(params object[] args)
+        public static GraphTraversal<object, IDictionary<string, E2>> ValueMap<E2>(params object[] args)
         {
-            return new GraphTraversal().ValueMap(args);
+            return new GraphTraversal<object, object>().ValueMap<E2>(args);
         }
 
-        public static GraphTraversal Values(params object[] args)
+        public static GraphTraversal<object, E2> Values<E2>(params object[] args)
         {
-            return new GraphTraversal().Values(args);
+            return new GraphTraversal<object, object>().Values<E2>(args);
         }
 
-        public static GraphTraversal Where(params object[] args)
+        public static GraphTraversal<object, object> Where(params object[] args)
         {
-            return new GraphTraversal().Where(args);
+            return new GraphTraversal<object, object>().Where(args);
         }
-	}
+    }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/EnumSerializer.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/EnumSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/EnumSerializer.cs
index 6ed3cd4..b4ab870 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/EnumSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/EnumSerializer.cs
@@ -22,6 +22,7 @@
 #endregion
 
 using System.Collections.Generic;
+using Gremlin.Net.Process.Traversal;
 
 namespace Gremlin.Net.Structure.IO.GraphSON
 {
@@ -30,8 +31,8 @@ namespace Gremlin.Net.Structure.IO.GraphSON
         public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
         {
             var enumName = objectData.GetType().Name;
-            var enumValue = objectData.ToString();
-            return GraphSONUtil.ToTypedValue(enumName, enumValue);
+            var valueJavaName = NamingConversions.GetEnumJavaName(enumName, objectData.ToString());
+            return GraphSONUtil.ToTypedValue(enumName, valueJavaName);
         }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Remote/RemoteStrategyTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Remote/RemoteStrategyTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Remote/RemoteStrategyTests.cs
index de91152..7b99371 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Remote/RemoteStrategyTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Remote/RemoteStrategyTests.cs
@@ -1,4 +1,4 @@
-#region License
+#region License
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -66,7 +66,7 @@ namespace Gremlin.Net.IntegrationTest.Process.Remote
             Assert.Equal(expectedResult, actualResult);
         }
 
-        private DefaultTraversal CreateTraversalWithRemoteStrategy(Bytecode bytecode)
+        private DefaultTraversal<object, object> CreateTraversalWithRemoteStrategy(Bytecode bytecode)
         {
             var remoteStrategy =
                 new RemoteStrategy(new DriverRemoteConnection(new GremlinClient(new GremlinServer(TestHost, TestPort))));
@@ -74,7 +74,7 @@ namespace Gremlin.Net.IntegrationTest.Process.Remote
         }
     }
 
-    internal class TestTraversal : DefaultTraversal
+    internal class TestTraversal : DefaultTraversal<object, object>
     {
         public TestTraversal(ITraversalStrategy traversalStrategy, Bytecode bytecode)
         {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/BytecodeGeneration/StrategiesTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/BytecodeGeneration/StrategiesTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/BytecodeGeneration/StrategiesTests.cs
index 418b0e2..ba01526 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/BytecodeGeneration/StrategiesTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/BytecodeGeneration/StrategiesTests.cs
@@ -1,4 +1,4 @@
-#region License
+#region License
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -161,8 +161,8 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.BytecodeGeneration
             Assert.Equal(new SubgraphStrategy(), bytecode.SourceInstructions[0].Arguments[0]);
             SubgraphStrategy strategy = bytecode.SourceInstructions[0].Arguments[0];
             Assert.Equal(1, strategy.Configuration.Count);
-            Assert.Equal(typeof(GraphTraversal), strategy.Configuration["vertices"].GetType());
-            GraphTraversal traversal = strategy.Configuration["vertices"];
+            Assert.Equal(typeof(GraphTraversal<object, object>), strategy.Configuration["vertices"].GetType());
+            ITraversal traversal = strategy.Configuration["vertices"];
             Assert.Equal("has", traversal.Bytecode.StepInstructions[0].OperatorName);
             Assert.Equal(new List<string> {"name", "marko"}, traversal.Bytecode.StepInstructions[0].Arguments);
         }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/EnumTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/EnumTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/EnumTests.cs
index 6d0f529..562aa6e 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/EnumTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/EnumTests.cs
@@ -39,9 +39,9 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
             var connection = _connectionFactory.CreateRemoteConnection();
             var g = graph.Traversal().WithRemote(connection);
 
-            var orderedAges = g.V().Values("age").Order().By(Order.decr).ToList();
+            var orderedAges = g.V().Values<int>("age").Order().By(Order.Decr).ToList();
 
-            Assert.Equal(new List<object> {35, 32, 29, 27}, orderedAges);
+            Assert.Equal(new List<int> {35, 32, 29, 27}, orderedAges);
         }
 
         [Fact]
@@ -51,7 +51,7 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
             var connection = _connectionFactory.CreateRemoteConnection();
             var g = graph.Traversal().WithRemote(connection);
 
-            var personsCount = g.V().Has(T.label, "person").Count().Next();
+            var personsCount = g.V().Has(T.Label, "person").Count().Next();
 
             Assert.Equal((long) 4, personsCount);
         }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalSourceTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalSourceTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalSourceTests.cs
index 0e56c2e..d471af3 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalSourceTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalSourceTests.cs
@@ -1,4 +1,4 @@
-#region License
+#region License
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -43,7 +43,7 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
                 .V(1)
                 .Out("created")
                 .In("created")
-                .Values("name")
+                .Values<string>("name")
                 .Where(P.Within("a"))
                 .ToList();
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
index ba999f3..51efa7f 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
@@ -98,13 +98,18 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
         [Fact]
         public void g_V_HasXname_markoX_ValueMap_Next()
         {
+            //Unable to cast object of type 
+            //'System.Collections.Generic.Dictionary`2[System.String,System.Object]' to type 
+            //'System.Collections.Generic.IDictionary`2[System.String,System.Collections.Generic.IList`1[System.Object]]'.
+
+
             var graph = new Graph();
             var connection = _connectionFactory.CreateRemoteConnection();
             var g = graph.Traversal().WithRemote(connection);
 
-            var receivedValueMap = g.V().Has("name", "marko").ValueMap().Next();
+            var receivedValueMap = g.V().Has("name", "marko").ValueMap<object>().Next();
 
-            var expectedValueMap = new Dictionary<string, dynamic>
+            var expectedValueMap = new Dictionary<string, object>
             {
                 {"age", new List<object> {29}},
                 {"name", new List<object> {"marko"}}
@@ -119,7 +124,7 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
             var connection = _connectionFactory.CreateRemoteConnection();
             var g = graph.Traversal().WithRemote(connection);
 
-            var t = g.V().Repeat(__.Out()).Times(2).Values("name");
+            var t = g.V().Repeat(__.Out()).Times(2).Values<string>("name");
             var names = t.ToList();
 
             Assert.Equal((long) 2, names.Count);
@@ -135,7 +140,7 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
             var g = graph.Traversal().WithRemote(connection);
 
             var shortestPath =
-                (Path) g.V(5).Repeat(__.Both().SimplePath()).Until(__.HasId(6)).Limit(1).Path().Next();
+                (Path)g.V(5).Repeat(__.Both().SimplePath()).Until(__.HasId(6)).Limit<object>(1).Path().Next();
 
             Assert.Equal((long) 4, shortestPath.Count);
             Assert.Equal(new Vertex((long) 6), shortestPath[3]);

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/SideEffectTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/SideEffectTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/SideEffectTests.cs
index c3629bc..f100e04 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/SideEffectTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/SideEffectTests.cs
@@ -1,4 +1,4 @@
-#region License
+#region License
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -123,7 +123,7 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
             var connection = _connectionFactory.CreateRemoteConnection();
             var g = graph.Traversal().WithRemote(connection);
 
-            var t = g.V().Out("created").GroupCount("m").By("name").Values("name").Aggregate("n").Iterate();
+            var t = g.V().Out("created").GroupCount("m").By("name").Values<string>("name").Aggregate("n").Iterate();
 
             var keys = t.SideEffects.Keys().ToList();
             Assert.Equal(2, keys.Count);

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/StrategiesTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/StrategiesTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/StrategiesTests.cs
index 6c7d8b6..ba56de9 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/StrategiesTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/StrategiesTests.cs
@@ -1,4 +1,4 @@
-#region License
+#region License
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -119,7 +119,7 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
             var g =
                 graph.Traversal()
                     .WithRemote(connection)
-                    .WithStrategies(new SubgraphStrategy(edgeCriterion: __.Limit(0)));
+                    .WithStrategies(new SubgraphStrategy(edgeCriterion: __.Limit<object>(0)));
 
             var count = g.E().Count().Next();
 
@@ -151,7 +151,7 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
                     .WithRemote(connection)
                     .WithStrategies(new SubgraphStrategy(vertexCriterion: __.Has("name", "marko")));
 
-            var name = g.V().Values("name").Next();
+            var name = g.V().Values<string>("name").Next();
 
             Assert.Equal("marko", name);
         }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TestTraversal.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TestTraversal.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TestTraversal.cs
index 4be6823..bf9b6d1 100644
--- a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TestTraversal.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TestTraversal.cs
@@ -1,4 +1,4 @@
-#region License
+#region License
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -27,7 +27,7 @@ using Gremlin.Net.Process.Traversal;
 
 namespace Gremlin.Net.UnitTest.Process.Traversal
 {
-    public class TestTraversal : DefaultTraversal
+    public class TestTraversal : DefaultTraversal<object, object>
     {
         public TestTraversal(List<object> traverserObjs)
         {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TestTraversalStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TestTraversalStrategy.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TestTraversalStrategy.cs
index 111469c..ded419d 100644
--- a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TestTraversalStrategy.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/TestTraversalStrategy.cs
@@ -1,4 +1,4 @@
-#region License
+#region License
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -36,12 +36,12 @@ namespace Gremlin.Net.UnitTest.Process.Traversal
             _traversers = traversersToAddOnApplication;
         }
 
-        public void Apply(ITraversal traversal)
+        public void Apply<S, E>(ITraversal<S, E> traversal)
         {
             traversal.Traversers = _traversers;
         }
 
-        public Task ApplyAsync(ITraversal traversal)
+        public Task ApplyAsync<S, E>(ITraversal<S, E> traversal)
         {
             traversal.Traversers = _traversers;
             return Task.CompletedTask;

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/BytecodeGraphSONSerializerTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/BytecodeGraphSONSerializerTests.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/BytecodeGraphSONSerializerTests.cs
index e367124..8ed7a3d 100644
--- a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/BytecodeGraphSONSerializerTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/BytecodeGraphSONSerializerTests.cs
@@ -1,4 +1,4 @@
-#region License
+#region License
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -143,7 +143,7 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
         }
     }
 
-    internal class TestTraversal : DefaultTraversal
+    internal class TestTraversal : DefaultTraversal<object, object>
     {
         public TestTraversal(Bytecode bytecode)
         {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONWriterTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONWriterTests.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONWriterTests.cs
index 49786d7..77af255 100644
--- a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONWriterTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONWriterTests.cs
@@ -189,9 +189,9 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
         {
             var writer = CreateStandardGraphSONWriter();
 
-            var serializedEnum = writer.WriteObject(T.label);
+            var serializedEnum = writer.WriteObject(Direction.Both);
 
-            var expectedGraphSON = "{\"@type\":\"g:T\",\"@value\":\"label\"}";
+            var expectedGraphSON = "{\"@type\":\"g:Direction\",\"@value\":\"BOTH\"}";
             Assert.Equal(expectedGraphSON, serializedEnum);
         }
 
@@ -312,11 +312,6 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
         }
     }
 
-    internal enum T
-    {
-        label
-    }
-
     internal class TestGraphSONSerializer : IGraphSONSerializer
     {
         public string TestNamespace { get; set; }


[18/50] [abbrv] tinkerpop git commit: TINKERPOP-1552 Removed the dotnet generator module

Posted by sp...@apache.org.
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/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 0f3fbb7..5aaaef0 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
@@ -26,6 +26,9 @@ using Gremlin.Net.Structure;
 
 namespace Gremlin.Net.Process.Traversal
 {
+    /// <summary>
+    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
+    /// </summary>
     public class GraphTraversal<S, E> : DefaultTraversal<S, E>
     {
         public GraphTraversal()
@@ -50,592 +53,594 @@ namespace Gremlin.Net.Process.Traversal
         }
 
 
-        public GraphTraversal<S, Vertex> V(params object[] args)
+        public GraphTraversal< S , Vertex > V (params object[] args)
         {
             Bytecode.AddStep("V", args);
-            return Wrap<S, Vertex>(this);
+            return Wrap< S , Vertex >(this);
         }
 
-        public GraphTraversal<S, Edge> AddE(params object[] args)
+        public GraphTraversal< S , Edge > AddE (params object[] args)
         {
             Bytecode.AddStep("addE", args);
-            return Wrap<S, Edge>(this);
+            return Wrap< S , Edge >(this);
         }
 
-        public GraphTraversal<S, Edge> AddInE(params object[] args)
+        public GraphTraversal< S , Edge > AddInE (params object[] args)
         {
             Bytecode.AddStep("addInE", args);
-            return Wrap<S, Edge>(this);
+            return Wrap< S , Edge >(this);
         }
 
-        public GraphTraversal<S, Edge> AddOutE(params object[] args)
+        public GraphTraversal< S , Edge > AddOutE (params object[] args)
         {
             Bytecode.AddStep("addOutE", args);
-            return Wrap<S, Edge>(this);
+            return Wrap< S , Edge >(this);
         }
 
-        public GraphTraversal<S, Vertex> AddV(params object[] args)
+        public GraphTraversal< S , Vertex > AddV (params object[] args)
         {
             Bytecode.AddStep("addV", args);
-            return Wrap<S, Vertex>(this);
+            return Wrap< S , Vertex >(this);
         }
 
-        public GraphTraversal<S, E> Aggregate(params object[] args)
+        public GraphTraversal< S , E > Aggregate (params object[] args)
         {
             Bytecode.AddStep("aggregate", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E> And(params object[] args)
+        public GraphTraversal< S , E > And (params object[] args)
         {
             Bytecode.AddStep("and", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E> As(params object[] args)
+        public GraphTraversal< S , E > As (params object[] args)
         {
             Bytecode.AddStep("as", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E> Barrier(params object[] args)
+        public GraphTraversal< S , E > Barrier (params object[] args)
         {
             Bytecode.AddStep("barrier", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, Vertex> Both(params object[] args)
+        public GraphTraversal< S , Vertex > Both (params object[] args)
         {
             Bytecode.AddStep("both", args);
-            return Wrap<S, Vertex>(this);
+            return Wrap< S , Vertex >(this);
         }
 
-        public GraphTraversal<S, Edge> BothE(params object[] args)
+        public GraphTraversal< S , Edge > BothE (params object[] args)
         {
             Bytecode.AddStep("bothE", args);
-            return Wrap<S, Edge>(this);
+            return Wrap< S , Edge >(this);
         }
 
-        public GraphTraversal<S, Vertex> BothV(params object[] args)
+        public GraphTraversal< S , Vertex > BothV (params object[] args)
         {
             Bytecode.AddStep("bothV", args);
-            return Wrap<S, Vertex>(this);
+            return Wrap< S , Vertex >(this);
         }
 
-        public GraphTraversal<S, E2> Branch<E2>(params object[] args)
+        public GraphTraversal< S , E2 > Branch<E2> (params object[] args)
         {
             Bytecode.AddStep("branch", args);
-            return Wrap<S, E2>(this);
+            return Wrap< S , E2 >(this);
         }
 
-        public GraphTraversal<S, E> By(params object[] args)
+        public GraphTraversal< S , E > By (params object[] args)
         {
             Bytecode.AddStep("by", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E2> Cap<E2>(params object[] args)
+        public GraphTraversal< S , E2 > Cap<E2> (params object[] args)
         {
             Bytecode.AddStep("cap", args);
-            return Wrap<S, E2>(this);
+            return Wrap< S , E2 >(this);
         }
 
-        public GraphTraversal<S, E2> Choose<E2>(params object[] args)
+        public GraphTraversal< S , E2 > Choose<E2> (params object[] args)
         {
             Bytecode.AddStep("choose", args);
-            return Wrap<S, E2>(this);
+            return Wrap< S , E2 >(this);
         }
 
-        public GraphTraversal<S, E2> Coalesce<E2>(params object[] args)
+        public GraphTraversal< S , E2 > Coalesce<E2> (params object[] args)
         {
             Bytecode.AddStep("coalesce", args);
-            return Wrap<S, E2>(this);
+            return Wrap< S , E2 >(this);
         }
 
-        public GraphTraversal<S, E> Coin(params object[] args)
+        public GraphTraversal< S , E > Coin (params object[] args)
         {
             Bytecode.AddStep("coin", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E2> Constant<E2>(params object[] args)
+        public GraphTraversal< S , E2 > Constant<E2> (params object[] args)
         {
             Bytecode.AddStep("constant", args);
-            return Wrap<S, E2>(this);
+            return Wrap< S , E2 >(this);
         }
 
-        public GraphTraversal<S, long> Count(params object[] args)
+        public GraphTraversal< S , long > Count (params object[] args)
         {
             Bytecode.AddStep("count", args);
-            return Wrap<S, long>(this);
+            return Wrap< S , long >(this);
         }
 
-        public GraphTraversal<S, E> CyclicPath(params object[] args)
+        public GraphTraversal< S , E > CyclicPath (params object[] args)
         {
             Bytecode.AddStep("cyclicPath", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E> Dedup(params object[] args)
+        public GraphTraversal< S , E > Dedup (params object[] args)
         {
             Bytecode.AddStep("dedup", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E> Drop(params object[] args)
+        public GraphTraversal< S , E > Drop (params object[] args)
         {
             Bytecode.AddStep("drop", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E> Emit(params object[] args)
+        public GraphTraversal< S , E > Emit (params object[] args)
         {
             Bytecode.AddStep("emit", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E> Filter(params object[] args)
+        public GraphTraversal< S , E > Filter (params object[] args)
         {
             Bytecode.AddStep("filter", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E2> FlatMap<E2>(params object[] args)
+        public GraphTraversal< S , E2 > FlatMap<E2> (params object[] args)
         {
             Bytecode.AddStep("flatMap", args);
-            return Wrap<S, E2>(this);
+            return Wrap< S , E2 >(this);
         }
 
-        public GraphTraversal<S, E2> Fold<E2>(params object[] args)
+        public GraphTraversal< S , E2 > Fold<E2> (params object[] args)
         {
             Bytecode.AddStep("fold", args);
-            return Wrap<S, E2>(this);
+            return Wrap< S , E2 >(this);
         }
 
-        public GraphTraversal<S, E> From(params object[] args)
+        public GraphTraversal< S , E > From (params object[] args)
         {
             Bytecode.AddStep("from", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E> Group(params object[] args)
+        public GraphTraversal< S , E > Group (params object[] args)
         {
             Bytecode.AddStep("group", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E> GroupCount(params object[] args)
+        public GraphTraversal< S , E > GroupCount (params object[] args)
         {
             Bytecode.AddStep("groupCount", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E> GroupV3d0(params object[] args)
+        public GraphTraversal< S , E > GroupV3d0 (params object[] args)
         {
             Bytecode.AddStep("groupV3d0", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E> Has(params object[] args)
+        public GraphTraversal< S , E > Has (params object[] args)
         {
             Bytecode.AddStep("has", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E> HasId(params object[] args)
+        public GraphTraversal< S , E > HasId (params object[] args)
         {
             Bytecode.AddStep("hasId", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E> HasKey(params object[] args)
+        public GraphTraversal< S , E > HasKey (params object[] args)
         {
             Bytecode.AddStep("hasKey", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E> HasLabel(params object[] args)
+        public GraphTraversal< S , E > HasLabel (params object[] args)
         {
             Bytecode.AddStep("hasLabel", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E> HasNot(params object[] args)
+        public GraphTraversal< S , E > HasNot (params object[] args)
         {
             Bytecode.AddStep("hasNot", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E> HasValue(params object[] args)
+        public GraphTraversal< S , E > HasValue (params object[] args)
         {
             Bytecode.AddStep("hasValue", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, object> Id(params object[] args)
+        public GraphTraversal< S , object > Id (params object[] args)
         {
             Bytecode.AddStep("id", args);
-            return Wrap<S, object>(this);
+            return Wrap< S , object >(this);
         }
 
-        public GraphTraversal<S, E> Identity(params object[] args)
+        public GraphTraversal< S , E > Identity (params object[] args)
         {
             Bytecode.AddStep("identity", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, Vertex> In(params object[] args)
+        public GraphTraversal< S , Vertex > In (params object[] args)
         {
             Bytecode.AddStep("in", args);
-            return Wrap<S, Vertex>(this);
+            return Wrap< S , Vertex >(this);
         }
 
-        public GraphTraversal<S, Edge> InE(params object[] args)
+        public GraphTraversal< S , Edge > InE (params object[] args)
         {
             Bytecode.AddStep("inE", args);
-            return Wrap<S, Edge>(this);
+            return Wrap< S , Edge >(this);
         }
 
-        public GraphTraversal<S, Vertex> InV(params object[] args)
+        public GraphTraversal< S , Vertex > InV (params object[] args)
         {
             Bytecode.AddStep("inV", args);
-            return Wrap<S, Vertex>(this);
+            return Wrap< S , Vertex >(this);
         }
 
-        public GraphTraversal<S, E> Inject(params object[] args)
+        public GraphTraversal< S , E > Inject (params object[] args)
         {
             Bytecode.AddStep("inject", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E> Is(params object[] args)
+        public GraphTraversal< S , E > Is (params object[] args)
         {
             Bytecode.AddStep("is", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, string> Key(params object[] args)
+        public GraphTraversal< S , string > Key (params object[] args)
         {
             Bytecode.AddStep("key", args);
-            return Wrap<S, string>(this);
+            return Wrap< S , string >(this);
         }
 
-        public GraphTraversal<S, string> Label(params object[] args)
+        public GraphTraversal< S , string > Label (params object[] args)
         {
             Bytecode.AddStep("label", args);
-            return Wrap<S, string>(this);
+            return Wrap< S , string >(this);
         }
 
-        public GraphTraversal<S, E2> Limit<E2>(params object[] args)
+        public GraphTraversal< S , E2 > Limit<E2> (params object[] args)
         {
             Bytecode.AddStep("limit", args);
-            return Wrap<S, E2>(this);
+            return Wrap< S , E2 >(this);
         }
 
-        public GraphTraversal<S, E2> Local<E2>(params object[] args)
+        public GraphTraversal< S , E2 > Local<E2> (params object[] args)
         {
             Bytecode.AddStep("local", args);
-            return Wrap<S, E2>(this);
+            return Wrap< S , E2 >(this);
         }
 
-        public GraphTraversal<S, int> Loops(params object[] args)
+        public GraphTraversal< S , int > Loops (params object[] args)
         {
             Bytecode.AddStep("loops", args);
-            return Wrap<S, int>(this);
+            return Wrap< S , int >(this);
         }
 
-        public GraphTraversal<S, E2> Map<E2>(params object[] args)
+        public GraphTraversal< S , E2 > Map<E2> (params object[] args)
         {
             Bytecode.AddStep("map", args);
-            return Wrap<S, E2>(this);
+            return Wrap< S , E2 >(this);
         }
 
-        public GraphTraversal<S, E2> MapKeys<E2>(params object[] args)
+        public GraphTraversal< S , E2 > MapKeys<E2> (params object[] args)
         {
             Bytecode.AddStep("mapKeys", args);
-            return Wrap<S, E2>(this);
+            return Wrap< S , E2 >(this);
         }
 
-        public GraphTraversal<S, E2> MapValues<E2>(params object[] args)
+        public GraphTraversal< S , E2 > MapValues<E2> (params object[] args)
         {
             Bytecode.AddStep("mapValues", args);
-            return Wrap<S, E2>(this);
+            return Wrap< S , E2 >(this);
         }
 
-        public GraphTraversal<S, IDictionary<string, E2>> Match<E2>(params object[] args)
+        public GraphTraversal< S , IDictionary<string, E2> > Match<E2> (params object[] args)
         {
             Bytecode.AddStep("match", args);
-            return Wrap<S, IDictionary<string, E2>>(this);
+            return Wrap< S , IDictionary<string, E2> >(this);
         }
 
-        public GraphTraversal<S, E2> Max<E2>(params object[] args)
+        public GraphTraversal< S , E2 > Max<E2> (params object[] args)
         {
             Bytecode.AddStep("max", args);
-            return Wrap<S, E2>(this);
+            return Wrap< S , E2 >(this);
         }
 
-        public GraphTraversal<S, E2> Mean<E2>(params object[] args)
+        public GraphTraversal< S , E2 > Mean<E2> (params object[] args)
         {
             Bytecode.AddStep("mean", args);
-            return Wrap<S, E2>(this);
+            return Wrap< S , E2 >(this);
         }
 
-        public GraphTraversal<S, E2> Min<E2>(params object[] args)
+        public GraphTraversal< S , E2 > Min<E2> (params object[] args)
         {
             Bytecode.AddStep("min", args);
-            return Wrap<S, E2>(this);
+            return Wrap< S , E2 >(this);
         }
 
-        public GraphTraversal<S, E> Not(params object[] args)
+        public GraphTraversal< S , E > Not (params object[] args)
         {
             Bytecode.AddStep("not", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E> Option(params object[] args)
+        public GraphTraversal< S , E > Option (params object[] args)
         {
             Bytecode.AddStep("option", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E2> Optional<E2>(params object[] args)
+        public GraphTraversal< S , E2 > Optional<E2> (params object[] args)
         {
             Bytecode.AddStep("optional", args);
-            return Wrap<S, E2>(this);
+            return Wrap< S , E2 >(this);
         }
 
-        public GraphTraversal<S, E> Or(params object[] args)
+        public GraphTraversal< S , E > Or (params object[] args)
         {
             Bytecode.AddStep("or", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E> Order(params object[] args)
+        public GraphTraversal< S , E > Order (params object[] args)
         {
             Bytecode.AddStep("order", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, Vertex> OtherV(params object[] args)
+        public GraphTraversal< S , Vertex > OtherV (params object[] args)
         {
             Bytecode.AddStep("otherV", args);
-            return Wrap<S, Vertex>(this);
+            return Wrap< S , Vertex >(this);
         }
 
-        public GraphTraversal<S, Vertex> Out(params object[] args)
+        public GraphTraversal< S , Vertex > Out (params object[] args)
         {
             Bytecode.AddStep("out", args);
-            return Wrap<S, Vertex>(this);
+            return Wrap< S , Vertex >(this);
         }
 
-        public GraphTraversal<S, Edge> OutE(params object[] args)
+        public GraphTraversal< S , Edge > OutE (params object[] args)
         {
             Bytecode.AddStep("outE", args);
-            return Wrap<S, Edge>(this);
+            return Wrap< S , Edge >(this);
         }
 
-        public GraphTraversal<S, Vertex> OutV(params object[] args)
+        public GraphTraversal< S , Vertex > OutV (params object[] args)
         {
             Bytecode.AddStep("outV", args);
-            return Wrap<S, Vertex>(this);
+            return Wrap< S , Vertex >(this);
         }
 
-        public GraphTraversal<S, E> PageRank(params object[] args)
+        public GraphTraversal< S , E > PageRank (params object[] args)
         {
             Bytecode.AddStep("pageRank", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, Path> Path(params object[] args)
+        public GraphTraversal< S , Path > Path (params object[] args)
         {
             Bytecode.AddStep("path", args);
-            return Wrap<S, Path>(this);
+            return Wrap< S , Path >(this);
         }
 
-        public GraphTraversal<S, E> PeerPressure(params object[] args)
+        public GraphTraversal< S , E > PeerPressure (params object[] args)
         {
             Bytecode.AddStep("peerPressure", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E> Profile(params object[] args)
+        public GraphTraversal< S , E > Profile (params object[] args)
         {
             Bytecode.AddStep("profile", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E> Program(params object[] args)
+        public GraphTraversal< S , E > Program (params object[] args)
         {
             Bytecode.AddStep("program", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, IDictionary<string, E2>> Project<E2>(params object[] args)
+        public GraphTraversal< S , IDictionary<string, E2> > Project<E2> (params object[] args)
         {
             Bytecode.AddStep("project", args);
-            return Wrap<S, IDictionary<string, E2>>(this);
+            return Wrap< S , IDictionary<string, E2> >(this);
         }
 
-        public GraphTraversal<S, E2> Properties<E2>(params object[] args)
+        public GraphTraversal< S , E2 > Properties<E2> (params object[] args)
         {
             Bytecode.AddStep("properties", args);
-            return Wrap<S, E2>(this);
+            return Wrap< S , E2 >(this);
         }
 
-        public GraphTraversal<S, E> Property(params object[] args)
+        public GraphTraversal< S , E > Property (params object[] args)
         {
             Bytecode.AddStep("property", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, IDictionary<string, E2>> PropertyMap<E2>(params object[] args)
+        public GraphTraversal< S , IDictionary<string, E2> > PropertyMap<E2> (params object[] args)
         {
             Bytecode.AddStep("propertyMap", args);
-            return Wrap<S, IDictionary<string, E2>>(this);
+            return Wrap< S , IDictionary<string, E2> >(this);
         }
 
-        public GraphTraversal<S, E2> Range<E2>(params object[] args)
+        public GraphTraversal< S , E2 > Range<E2> (params object[] args)
         {
             Bytecode.AddStep("range", args);
-            return Wrap<S, E2>(this);
+            return Wrap< S , E2 >(this);
         }
 
-        public GraphTraversal<S, E> Repeat(params object[] args)
+        public GraphTraversal< S , E > Repeat (params object[] args)
         {
             Bytecode.AddStep("repeat", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E> Sack(params object[] args)
+        public GraphTraversal< S , E > Sack (params object[] args)
         {
             Bytecode.AddStep("sack", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E> Sample(params object[] args)
+        public GraphTraversal< S , E > Sample (params object[] args)
         {
             Bytecode.AddStep("sample", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, IDictionary<string, E2>> Select<E2>(params object[] args)
+        public GraphTraversal< S , IDictionary<string, E2> > Select<E2> (params object[] args)
         {
             Bytecode.AddStep("select", args);
-            return Wrap<S, IDictionary<string, E2>>(this);
+            return Wrap< S , IDictionary<string, E2> >(this);
         }
 
-        public GraphTraversal<S, E> SideEffect(params object[] args)
+        public GraphTraversal< S , E > SideEffect (params object[] args)
         {
             Bytecode.AddStep("sideEffect", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E> SimplePath(params object[] args)
+        public GraphTraversal< S , E > SimplePath (params object[] args)
         {
             Bytecode.AddStep("simplePath", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E> Store(params object[] args)
+        public GraphTraversal< S , E > Store (params object[] args)
         {
             Bytecode.AddStep("store", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, Edge> Subgraph(params object[] args)
+        public GraphTraversal< S , Edge > Subgraph (params object[] args)
         {
             Bytecode.AddStep("subgraph", args);
-            return Wrap<S, Edge>(this);
+            return Wrap< S , Edge >(this);
         }
 
-        public GraphTraversal<S, E2> Sum<E2>(params object[] args)
+        public GraphTraversal< S , E2 > Sum<E2> (params object[] args)
         {
             Bytecode.AddStep("sum", args);
-            return Wrap<S, E2>(this);
+            return Wrap< S , E2 >(this);
         }
 
-        public GraphTraversal<S, E2> Tail<E2>(params object[] args)
+        public GraphTraversal< S , E2 > Tail<E2> (params object[] args)
         {
             Bytecode.AddStep("tail", args);
-            return Wrap<S, E2>(this);
+            return Wrap< S , E2 >(this);
         }
 
-        public GraphTraversal<S, E> TimeLimit(params object[] args)
+        public GraphTraversal< S , E > TimeLimit (params object[] args)
         {
             Bytecode.AddStep("timeLimit", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E> Times(params object[] args)
+        public GraphTraversal< S , E > Times (params object[] args)
         {
             Bytecode.AddStep("times", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, Vertex> To(params object[] args)
+        public GraphTraversal< S , Vertex > To (params object[] args)
         {
             Bytecode.AddStep("to", args);
-            return Wrap<S, Vertex>(this);
+            return Wrap< S , Vertex >(this);
         }
 
-        public GraphTraversal<S, Edge> ToE(params object[] args)
+        public GraphTraversal< S , Edge > ToE (params object[] args)
         {
             Bytecode.AddStep("toE", args);
-            return Wrap<S, Edge>(this);
+            return Wrap< S , Edge >(this);
         }
 
-        public GraphTraversal<S, Vertex> ToV(params object[] args)
+        public GraphTraversal< S , Vertex > ToV (params object[] args)
         {
             Bytecode.AddStep("toV", args);
-            return Wrap<S, Vertex>(this);
+            return Wrap< S , Vertex >(this);
         }
 
-        public GraphTraversal<S, E> Tree(params object[] args)
+        public GraphTraversal< S , E > Tree (params object[] args)
         {
             Bytecode.AddStep("tree", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E2> Unfold<E2>(params object[] args)
+        public GraphTraversal< S , E2 > Unfold<E2> (params object[] args)
         {
             Bytecode.AddStep("unfold", args);
-            return Wrap<S, E2>(this);
+            return Wrap< S , E2 >(this);
         }
 
-        public GraphTraversal<S, E2> Union<E2>(params object[] args)
+        public GraphTraversal< S , E2 > Union<E2> (params object[] args)
         {
             Bytecode.AddStep("union", args);
-            return Wrap<S, E2>(this);
+            return Wrap< S , E2 >(this);
         }
 
-        public GraphTraversal<S, E> Until(params object[] args)
+        public GraphTraversal< S , E > Until (params object[] args)
         {
             Bytecode.AddStep("until", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
 
-        public GraphTraversal<S, E2> Value<E2>(params object[] args)
+        public GraphTraversal< S , E2 > Value<E2> (params object[] args)
         {
             Bytecode.AddStep("value", args);
-            return Wrap<S, E2>(this);
+            return Wrap< S , E2 >(this);
         }
 
-        public GraphTraversal<S, IDictionary<string, E2>> ValueMap<E2>(params object[] args)
+        public GraphTraversal< S , IDictionary<string, E2> > ValueMap<E2> (params object[] args)
         {
             Bytecode.AddStep("valueMap", args);
-            return Wrap<S, IDictionary<string, E2>>(this);
+            return Wrap< S , IDictionary<string, E2> >(this);
         }
 
-        public GraphTraversal<S, E2> Values<E2>(params object[] args)
+        public GraphTraversal< S , E2 > Values<E2> (params object[] args)
         {
             Bytecode.AddStep("values", args);
-            return Wrap<S, E2>(this);
+            return Wrap< S , E2 >(this);
         }
 
-        public GraphTraversal<S, E> Where(params object[] args)
+        public GraphTraversal< S , E > Where (params object[] args)
         {
             Bytecode.AddStep("where", args);
-            return Wrap<S, E>(this);
+            return Wrap< S , E >(this);
         }
+
+
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs
index 07d98fb..1380be7 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs
@@ -28,6 +28,9 @@ using Gremlin.Net.Structure;
 
 namespace Gremlin.Net.Process.Traversal
 {
+    /// <summary>
+    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
+    /// </summary>
     public class GraphTraversalSource
     {
         public ICollection<ITraversalStrategy> TraversalStrategies { get; set; }
@@ -44,10 +47,11 @@ namespace Gremlin.Net.Process.Traversal
             Bytecode = bytecode;
         }
 
+
         public GraphTraversalSource WithBulk(params object[] args)
         {
             var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
-                new Bytecode(Bytecode));
+                                                  new Bytecode(Bytecode));
             source.Bytecode.AddSource("withBulk", args);
             return source;
         }
@@ -55,7 +59,7 @@ namespace Gremlin.Net.Process.Traversal
         public GraphTraversalSource WithPath(params object[] args)
         {
             var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
-                new Bytecode(Bytecode));
+                                                  new Bytecode(Bytecode));
             source.Bytecode.AddSource("withPath", args);
             return source;
         }
@@ -63,7 +67,7 @@ namespace Gremlin.Net.Process.Traversal
         public GraphTraversalSource WithSack(params object[] args)
         {
             var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
-                new Bytecode(Bytecode));
+                                                  new Bytecode(Bytecode));
             source.Bytecode.AddSource("withSack", args);
             return source;
         }
@@ -71,7 +75,7 @@ namespace Gremlin.Net.Process.Traversal
         public GraphTraversalSource WithSideEffect(params object[] args)
         {
             var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
-                new Bytecode(Bytecode));
+                                                  new Bytecode(Bytecode));
             source.Bytecode.AddSource("withSideEffect", args);
             return source;
         }
@@ -79,7 +83,7 @@ namespace Gremlin.Net.Process.Traversal
         public GraphTraversalSource WithStrategies(params object[] args)
         {
             var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
-                new Bytecode(Bytecode));
+                                                  new Bytecode(Bytecode));
             source.Bytecode.AddSource("withStrategies", args);
             return source;
         }
@@ -87,7 +91,7 @@ namespace Gremlin.Net.Process.Traversal
         public GraphTraversalSource WithoutStrategies(params object[] args)
         {
             var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
-                new Bytecode(Bytecode));
+                                                  new Bytecode(Bytecode));
             source.Bytecode.AddSource("withoutStrategies", args);
             return source;
         }
@@ -104,7 +108,7 @@ namespace Gremlin.Net.Process.Traversal
             source.TraversalStrategies.Add(new RemoteStrategy(remoteConnection));
             return source;
         }
-        
+
         public GraphTraversalSource WithComputer(string graphComputer = null, int? workers = null, string persist = null,
             string result = null, ITraversal vertices = null, ITraversal edges = null,
             Dictionary<string, dynamic> configuration = null)
@@ -112,25 +116,27 @@ namespace Gremlin.Net.Process.Traversal
             return WithStrategies(new VertexProgramStrategy(graphComputer, workers, persist, result, vertices, edges, configuration));
         }
 
-        public GraphTraversal<Edge, Edge> E(params object[] args)
+
+        public GraphTraversal< Edge,Edge > E(params object[] args)
         {
-            var traversal = new GraphTraversal<Edge, Edge>(TraversalStrategies, new Bytecode(Bytecode));
+            var traversal = new GraphTraversal< Edge,Edge >(TraversalStrategies, new Bytecode(Bytecode));
             traversal.Bytecode.AddStep("E", args);
             return traversal;
         }
 
-        public GraphTraversal<Vertex, Vertex> V(params object[] args)
+        public GraphTraversal< Vertex,Vertex > V(params object[] args)
         {
-            var traversal = new GraphTraversal<Vertex, Vertex>(TraversalStrategies, new Bytecode(Bytecode));
+            var traversal = new GraphTraversal< Vertex,Vertex >(TraversalStrategies, new Bytecode(Bytecode));
             traversal.Bytecode.AddStep("V", args);
             return traversal;
         }
 
-        public GraphTraversal<Vertex, Vertex> AddV(params object[] args)
+        public GraphTraversal< Vertex,Vertex > AddV(params object[] args)
         {
-            var traversal = new GraphTraversal<Vertex, Vertex>(TraversalStrategies, new Bytecode(Bytecode));
+            var traversal = new GraphTraversal< Vertex,Vertex >(TraversalStrategies, new Bytecode(Bytecode));
             traversal.Bytecode.AddStep("addV", args);
             return traversal;
         }
+
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GryoVersion.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GryoVersion.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GryoVersion.cs
new file mode 100644
index 0000000..c271a9f
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GryoVersion.cs
@@ -0,0 +1,33 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal
+{
+    /// <summary>
+    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
+    /// </summary>
+    public enum GryoVersion
+    {
+        V1_0
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs
index 2e95da1..bfee0da 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs
@@ -25,6 +25,9 @@ using System.Collections.Generic;
 
 namespace Gremlin.Net.Process.Traversal
 {
+    /// <summary>
+    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
+    /// </summary>
     internal static class NamingConversions
     {
         /// <summary>
@@ -41,46 +44,50 @@ namespace Gremlin.Net.Process.Traversal
             return javaName;
         }
 
-        private static readonly IDictionary<string, string> CSharpToJavaEnums = new Dictionary<string, string>
+        internal static readonly IDictionary<string, string> CSharpToJavaEnums = new Dictionary<string, string>
         {
-            {"T.Value", "value"},
-            {"Order.Decr", "decr"},
-            {"Order.KeyDecr", "keyDecr"},
-            {"T.Key", "key"},
-            {"Column.Values", "values"},
-            {"Order.KeyIncr", "keyIncr"},
-            {"Operator.Or", "or"},
-            {"Order.ValueIncr", "valueIncr"},
+            {"Barrier.NormSack", "normSack"},
             {"Cardinality.List", "list"},
-            {"Order.Incr", "incr"},
-            {"Pop.All", "all"},
-            {"Operator.SumLong", "sumLong"},
-            {"Pop.First", "first"},
-            {"T.Label", "label"},
             {"Cardinality.Set", "set"},
-            {"Order.Shuffle", "shuffle"},
-            {"Direction.In", "IN"},
+            {"Cardinality.Single", "single"},
+            {"Column.Keys", "keys"},
+            {"Column.Values", "values"},
             {"Direction.Both", "BOTH"},
-            {"Scope.Local", "local"},
-            {"Operator.Max", "max"},
+            {"Direction.In", "IN"},
             {"Direction.Out", "OUT"},
-            {"Scope.Global", "global"},
-            {"Pick.Any", "any"},
-            {"Order.ValueDecr", "valueDecr"},
-            {"Column.Keys", "keys"},
+            {"GraphSONVersion.V1_0", "V1_0"},
+            {"GraphSONVersion.V2_0", "V2_0"},
+            {"GryoVersion.V1_0", "V1_0"},
             {"Operator.AddAll", "addAll"},
+            {"Operator.And", "and"},
+            {"Operator.Assign", "assign"},
+            {"Operator.Div", "div"},
+            {"Operator.Max", "max"},
+            {"Operator.Min", "min"},
+            {"Operator.Minus", "minus"},
             {"Operator.Mult", "mult"},
+            {"Operator.Or", "or"},
+            {"Operator.Sum", "sum"},
+            {"Operator.SumLong", "sumLong"},
+            {"Order.Decr", "decr"},
+            {"Order.Incr", "incr"},
+            {"Order.KeyDecr", "keyDecr"},
+            {"Order.KeyIncr", "keyIncr"},
+            {"Order.Shuffle", "shuffle"},
+            {"Order.ValueDecr", "valueDecr"},
+            {"Order.ValueIncr", "valueIncr"},
+            {"Pick.Any", "any"},
             {"Pick.None", "none"},
+            {"Pop.All", "all"},
+            {"Pop.First", "first"},
             {"Pop.Last", "last"},
-            {"Operator.And", "and"},
+            {"Scope.Global", "global"},
+            {"Scope.Local", "local"},
             {"T.Id", "id"},
-            {"Operator.Min", "min"},
-            {"Barrier.NormSack", "normSack"},
-            {"Operator.Minus", "minus"},
-            {"Cardinality.Single", "single"},
-            {"Operator.Assign", "assign"},
-            {"Operator.Div", "div"},
-            {"Operator.Sum", "sum"}
+            {"T.Key", "key"},
+            {"T.Label", "label"},
+            {"T.Value", "value"}
+
         };
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Operator.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Operator.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Operator.cs
index 17b44a4..a7a01ee 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Operator.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Operator.cs
@@ -23,18 +23,11 @@
 
 namespace Gremlin.Net.Process.Traversal
 {
+    /// <summary>
+    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
+    /// </summary>
     public enum Operator
     {
-        AddAll,
-        And,
-        Assign,
-        Div,
-        Max,
-        Min,
-        Minus,
-        Mult,
-        Or,
-        Sum,
-        SumLong
+        AddAll,And,Assign,Div,Max,Min,Minus,Mult,Or,Sum,SumLong
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs
index 179182b..a59daf5 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs
@@ -23,14 +23,11 @@
 
 namespace Gremlin.Net.Process.Traversal
 {
+    /// <summary>
+    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
+    /// </summary>
     public enum Order
     {
-        Decr,
-        Incr,
-        KeyDecr,
-        KeyIncr,
-        Shuffle,
-        ValueDecr,
-        ValueIncr
+        Decr,Incr,KeyDecr,KeyIncr,Shuffle,ValueDecr,ValueIncr
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/P.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/P.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/P.cs
index cf388bd..ee184e6 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/P.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/P.cs
@@ -21,11 +21,14 @@
 
 #endregion
 
-
 namespace Gremlin.Net.Process.Traversal
 {
+    /// <summary>
+    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
+    /// </summary>
     public class P
     {
+
         public static TraversalPredicate Between(params object[] args)
         {
             var value = args.Length == 1 ? args[0] : args;
@@ -103,5 +106,6 @@ namespace Gremlin.Net.Process.Traversal
             var value = args.Length == 1 ? args[0] : args;
             return new TraversalPredicate("without", value);
         }
+
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pick.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pick.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pick.cs
index 624f66e..2306cc0 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pick.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pick.cs
@@ -23,9 +23,11 @@
 
 namespace Gremlin.Net.Process.Traversal
 {
+    /// <summary>
+    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
+    /// </summary>
     public enum Pick
     {
-        Any,
-        None
+        Any,None
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs
index dcbe698..72ea8d9 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs
@@ -23,10 +23,11 @@
 
 namespace Gremlin.Net.Process.Traversal
 {
+    /// <summary>
+    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
+    /// </summary>
     public enum Pop
     {
-        All,
-        First,
-        Last
+        All,First,Last
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Scope.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Scope.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Scope.cs
index f27725e..b19d709 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Scope.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Scope.cs
@@ -23,9 +23,11 @@
 
 namespace Gremlin.Net.Process.Traversal
 {
+    /// <summary>
+    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
+    /// </summary>
     public enum Scope
     {
-        Global,
-        Local
+        Global,Local
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs
index 76ca40f..ccd0242 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs
@@ -23,11 +23,11 @@
 
 namespace Gremlin.Net.Process.Traversal
 {
+    /// <summary>
+    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
+    /// </summary>
     public enum T
     {
-        Id,
-        Key,
-        Label,
-        Value
+        Id,Key,Label,Value
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
index f2e6162..aaf61aa 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
@@ -26,6 +26,9 @@ using Gremlin.Net.Structure;
 
 namespace Gremlin.Net.Process.Traversal
 {
+    /// <summary>
+    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
+    /// </summary>
     public static class __
     {
         public static GraphTraversal<object, object> Start()
@@ -487,5 +490,6 @@ namespace Gremlin.Net.Process.Traversal
         {
             return new GraphTraversal<object, object>().Where(args);
         }
+
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet/src/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/pom.xml b/gremlin-dotnet/src/pom.xml
index 3b0bf68..dd43b1f 100644
--- a/gremlin-dotnet/src/pom.xml
+++ b/gremlin-dotnet/src/pom.xml
@@ -26,6 +26,23 @@ limitations under the License.
     <artifactId>gremlin-dotnet-source</artifactId>
     <name>Apache TinkerPop :: Gremlin-DotNet - Source</name>
     <packaging>${packaging.type}</packaging>
+
+    <build>
+        <plugins>
+            <!-- Override the execution from gremlin-dotnet to disable code generation from happening a second time -->
+            <plugin>
+                <groupId>org.codehaus.gmavenplus</groupId>
+                <artifactId>gmavenplus-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>generate-dsl</id>
+                        <phase/>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
     <profiles>
         <profile>
             <id>gremlin-dotnet-standard</id>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet/test/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/pom.xml b/gremlin-dotnet/test/pom.xml
index d062620..8cdffa9 100644
--- a/gremlin-dotnet/test/pom.xml
+++ b/gremlin-dotnet/test/pom.xml
@@ -34,6 +34,22 @@ limitations under the License.
         <gremlin.server.dir>${project.parent.parent.basedir}/gremlin-server</gremlin.server.dir>
     </properties>
 
+    <build>
+        <plugins>
+            <!-- Override the execution from gremlin-dotnet to disable code generation from happening a second time -->
+            <plugin>
+                <groupId>org.codehaus.gmavenplus</groupId>
+                <artifactId>gmavenplus-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>generate-dsl</id>
+                        <phase/>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
     <profiles>
         <profile>
             <id>gremlin-dotnet-standard</id>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 2414ef8..a31c912 100644
--- a/pom.xml
+++ b/pom.xml
@@ -119,7 +119,6 @@ limitations under the License.
         <module>gremlin-groovy</module>
         <module>tinkergraph-gremlin</module>
         <module>gremlin-python</module>
-        <module>gremlin-dotnet-generator</module>
         <module>gremlin-dotnet</module>
         <module>hadoop-gremlin</module>
         <module>spark-gremlin</module>


[36/50] [abbrv] tinkerpop git commit: TINKERPOP-1552 Fixed templates for 3.3.0 and got tests running

Posted by sp...@apache.org.
TINKERPOP-1552 Fixed templates for 3.3.0 and got tests running


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

Branch: refs/heads/master
Commit: 02327f58afb1f4e2e7eec3476e44e8627aedf035
Parents: 62554a8
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Jul 12 09:46:20 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jul 13 13:47:20 2017 -0400

----------------------------------------------------------------------
 gremlin-dotnet/pom.xml                                       | 3 +++
 .../src/Gremlin.Net/Process/Traversal/GraphTraversal.cs      | 4 ++--
 gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs       | 8 ++++----
 .../Traversal/DriverRemoteConnection/GraphTraversalTests.cs  | 4 ++--
 gremlin-dotnet/test/pom.xml                                  | 4 ++--
 gremlin-python/pom.xml                                       | 2 --
 6 files changed, 13 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/02327f58/gremlin-dotnet/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/pom.xml b/gremlin-dotnet/pom.xml
index 206f454..2ba30ec 100644
--- a/gremlin-dotnet/pom.xml
+++ b/gremlin-dotnet/pom.xml
@@ -88,6 +88,8 @@ def toCSharpTypeMap = ["Long": "long",
                        "Object": "object",
                        "java.util.Map<java.lang.String, E2>": "IDictionary<string, E2>",
                        "java.util.Map<java.lang.String, B>": "IDictionary<string, E2>",
+                       "java.util.Map<java.lang.Object, E2>": "IDictionary<object, E2>",
+                       "java.util.Map<java.lang.Object, B>": "IDictionary<object, E2>",
                        "java.util.List<E>": "IList<E>",
                        "java.util.Map<K, V>": "IDictionary<K, V>",
                        "java.util.Collection<E2>": "ICollection<E2>",
@@ -102,6 +104,7 @@ def methodsWithSpecificTypes = ["constant": useE2,
                                 "optional": useE2,
                                 "range": useE2,
                                 "select": ["IDictionary<string, E2>", "E2"],
+                                "skip": useE2,
                                 "sum": useE2,
                                 "tail": useE2,
                                 "tree": ["object"],

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/02327f58/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 07173e8..8f5b48c 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
@@ -938,10 +938,10 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the valueMap step to this <see cref="GraphTraversal{SType, EType}" />.
         /// </summary>
-        public GraphTraversal< S , java.util.Map<java.lang.Object, E2> > ValueMap<E2> (params object[] args)
+        public GraphTraversal< S , IDictionary<object, E2> > ValueMap<E2> (params object[] args)
         {
             Bytecode.AddStep("valueMap", args);
-            return Wrap< S , java.util.Map<java.lang.Object, E2> >(this);
+            return Wrap< S , IDictionary<object, E2> >(this);
         }
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/02327f58/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
index 2080bed..e0e6e42 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
@@ -643,9 +643,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the skip step to that traversal.
         /// </summary>
-        public static GraphTraversal<object, object> Skip(params object[] args)
+        public static GraphTraversal<object, E2> Skip<E2>(params object[] args)
         {
-            return new GraphTraversal<object, object>().Skip(args);
+            return new GraphTraversal<object, object>().Skip<E2>(args);
         }
 
         /// <summary>
@@ -763,9 +763,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the valueMap step to that traversal.
         /// </summary>
-        public static GraphTraversal<object, java.util.Map<java.lang.Object, B>> ValueMap(params object[] args)
+        public static GraphTraversal<object, IDictionary<object, E2>> ValueMap<E2>(params object[] args)
         {
-            return new GraphTraversal<object, object>().ValueMap(args);
+            return new GraphTraversal<object, object>().ValueMap<E2>(args);
         }
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/02327f58/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
index 2156ff3..24c75b0 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
@@ -104,7 +104,7 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
 
             var receivedValueMap = g.V().Has("name", "marko").ValueMap<object>().Next();
 
-            var expectedValueMap = new Dictionary<string, object>
+            var expectedValueMap = new Dictionary<object, object>
             {
                 {"age", new List<object> {29}},
                 {"name", new List<object> {"marko"}}
@@ -166,4 +166,4 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
             Assert.Equal(6, count);
         }
     }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/02327f58/gremlin-dotnet/test/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/pom.xml b/gremlin-dotnet/test/pom.xml
index 34f4cda..2b09d26 100644
--- a/gremlin-dotnet/test/pom.xml
+++ b/gremlin-dotnet/test/pom.xml
@@ -140,7 +140,7 @@ if (${skipTests}) return
 log.info("Starting Gremlin Server instances for native testing of gremlin-dotnet")
 def settings = Settings.read("${gremlin.server.dir}/conf/gremlin-server-modern.yaml")
 settings.graphs.graph = "${gremlin.server.dir}/conf/tinkergraph-empty.properties"
-settings.scriptEngines["gremlin-groovy"].scripts = ["${gremlin.server.dir}/scripts/generate-modern.groovy"]
+settings.scriptEngines["gremlin-groovy"].plugins["org.apache.tinkerpop.gremlin.jsr223.ScriptFileGremlinPlugin"].files = ["${gremlin.server.dir}/scripts/generate-modern.groovy"]
 settings.port = 45950
 
 def server = new GremlinServer(settings)
@@ -151,7 +151,7 @@ log.info("Gremlin Server with no authentication started on port 45950")
 
 def settingsSecure = Settings.read("${gremlin.server.dir}/conf/gremlin-server-modern.yaml")
 settingsSecure.graphs.graph = "${gremlin.server.dir}/conf/tinkergraph-empty.properties"
-settingsSecure.scriptEngines["gremlin-groovy"].scripts = ["${gremlin.server.dir}/scripts/generate-modern.groovy"]
+settingsSecure.scriptEngines["gremlin-groovy"].plugins["org.apache.tinkerpop.gremlin.jsr223.ScriptFileGremlinPlugin"].files = ["${gremlin.server.dir}/scripts/generate-modern.groovy"]
 settingsSecure.port = 45951
 settingsSecure.authentication.className = "org.apache.tinkerpop.gremlin.server.auth.SimpleAuthenticator"
 settingsSecure.authentication.config = [credentialsDb: "${gremlin.server.dir}/conf/tinkergraph-credentials.properties", credentialsDbLocation: "${gremlin.server.dir}/data/credentials.kryo"]

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/02327f58/gremlin-python/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-python/pom.xml b/gremlin-python/pom.xml
index 7f2a19b..ebc75fd 100644
--- a/gremlin-python/pom.xml
+++ b/gremlin-python/pom.xml
@@ -589,8 +589,6 @@ settings.scriptEngines["gremlin-groovy"].plugins["org.apache.tinkerpop.gremlin.j
 settings.serializers << new SerializerSettings("org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0", [:])
 settings.port = 45940
 
-println settings.scriptEngines["gremlin-groovy"].plugins["org.apache.tinkerpop.gremlin.jsr223.ScriptFileGremlinPlugin"].files
-
 def server = new GremlinServer(settings)
 server.start().join()
 


[04/50] [abbrv] tinkerpop git commit: TINKERPOP-1552 Bump to 3.2.6 in gremlin-dotnet

Posted by sp...@apache.org.
TINKERPOP-1552 Bump to 3.2.6 in gremlin-dotnet


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

Branch: refs/heads/master
Commit: 1081a9cde78c209495fa17bfc095982a452b8386
Parents: 278cea8
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Jun 23 13:07:45 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jul 13 13:46:48 2017 -0400

----------------------------------------------------------------------
 gremlin-dotnet/pom.xml                            | 2 +-
 gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj | 2 +-
 gremlin-dotnet/src/pom.xml                        | 2 +-
 gremlin-dotnet/test/pom.xml                       | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/1081a9cd/gremlin-dotnet/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/pom.xml b/gremlin-dotnet/pom.xml
index 4bdf1e3..3360bbc 100644
--- a/gremlin-dotnet/pom.xml
+++ b/gremlin-dotnet/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>tinkerpop</artifactId>
-        <version>3.2.5-SNAPSHOT</version>
+        <version>3.2.6-SNAPSHOT</version>
     </parent>
     <artifactId>gremlin-dotnet</artifactId>
     <name>Apache TinkerPop :: Gremlin-DotNet</name>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/1081a9cd/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj b/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
index 93f135c..0ff4537 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
+++ b/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
@@ -7,7 +7,7 @@
   </PropertyGroup>
 
   <PropertyGroup Label="Package">
-    <Version>3.2.5-beta1</Version>
+    <Version>3.2.6-beta1</Version>
     <Title>Gremlin-DotNet</Title>
     <Authors>Apache TinkerPop</Authors>
     <Description>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/1081a9cd/gremlin-dotnet/src/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/pom.xml b/gremlin-dotnet/src/pom.xml
index dd43b1f..50d4d56 100644
--- a/gremlin-dotnet/src/pom.xml
+++ b/gremlin-dotnet/src/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>gremlin-dotnet</artifactId>
-        <version>3.2.5-SNAPSHOT</version>
+        <version>3.2.6-SNAPSHOT</version>
     </parent>
     <artifactId>gremlin-dotnet-source</artifactId>
     <name>Apache TinkerPop :: Gremlin-DotNet - Source</name>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/1081a9cd/gremlin-dotnet/test/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/pom.xml b/gremlin-dotnet/test/pom.xml
index 8cdffa9..2cf2785 100644
--- a/gremlin-dotnet/test/pom.xml
+++ b/gremlin-dotnet/test/pom.xml
@@ -21,7 +21,7 @@ limitations under the License.
     <parent>
         <groupId>org.apache.tinkerpop</groupId>
         <artifactId>gremlin-dotnet</artifactId>
-        <version>3.2.5-SNAPSHOT</version>
+        <version>3.2.6-SNAPSHOT</version>
     </parent>
     <artifactId>gremlin-dotnet-tests</artifactId>
     <name>Apache TinkerPop :: Gremlin-DotNet - Tests</name>


[17/50] [abbrv] tinkerpop git commit: Reorganize Gremlin-DotNet

Posted by sp...@apache.org.
Reorganize Gremlin-DotNet

This merges the formerly three .NET projects into just one: Gremlin.Net. For more information see the discussion in TINKERPOP-1552.


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

Branch: refs/heads/master
Commit: fec3ca5cfea1ef7648cfca72afb1bd09585933d4
Parents: 10b9904
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Tue Jun 6 17:41:10 2017 +0200
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jul 13 13:46:48 2017 -0400

----------------------------------------------------------------------
 docs/src/reference/gremlin-variants.asciidoc    |  42 +-
 gremlin-csharp-generator/pom.xml                |   2 +-
 .../csharp/AnonymousTraversalGenerator.groovy   |   2 +-
 .../gremlin/csharp/EnumGenerator.groovy         |   2 +-
 .../gremlin/csharp/GenerateGremlinCSharp.groovy |  10 +-
 .../csharp/GraphTraversalGenerator.groovy       |   3 +-
 .../csharp/GraphTraversalSourceGenerator.groovy |   3 +-
 .../gremlin/csharp/PredicateGenerator.groovy    |   3 +-
 gremlin-dotnet/Gremlin.Net.sln                  |  37 +-
 .../src/Gremlin.CSharp/Gremlin.CSharp.csproj    |  21 -
 .../src/Gremlin.CSharp/Process/Barrier.cs       |  30 -
 .../src/Gremlin.CSharp/Process/Cardinality.cs   |  32 -
 .../src/Gremlin.CSharp/Process/Column.cs        |  31 -
 .../src/Gremlin.CSharp/Process/Direction.cs     |  32 -
 .../Gremlin.CSharp/Process/GraphTraversal.cs    | 630 -------------------
 .../Process/GraphTraversalSource.cs             | 143 -----
 .../src/Gremlin.CSharp/Process/Operator.cs      |  40 --
 .../src/Gremlin.CSharp/Process/Order.cs         |  36 --
 gremlin-dotnet/src/Gremlin.CSharp/Process/P.cs  | 108 ----
 .../src/Gremlin.CSharp/Process/Pick.cs          |  31 -
 .../src/Gremlin.CSharp/Process/Pop.cs           |  32 -
 .../src/Gremlin.CSharp/Process/Scope.cs         |  31 -
 gremlin-dotnet/src/Gremlin.CSharp/Process/T.cs  |  33 -
 gremlin-dotnet/src/Gremlin.CSharp/Process/__.cs | 488 --------------
 .../src/Gremlin.CSharp/Structure/Graph.cs       |  35 --
 .../Gremlin.Net.Process.csproj                  |  24 -
 .../Remote/IRemoteConnection.cs                 |  42 --
 .../Remote/RemoteStrategy.cs                    |  61 --
 .../Gremlin.Net.Process/Traversal/Binding.cs    |  80 ---
 .../Gremlin.Net.Process/Traversal/Bindings.cs   |  42 --
 .../Gremlin.Net.Process/Traversal/Bytecode.cs   |  85 ---
 .../Traversal/DefaultTraversal.cs               | 195 ------
 .../Gremlin.Net.Process/Traversal/ITraversal.cs |  96 ---
 .../Traversal/ITraversalSideEffects.cs          |  52 --
 .../Traversal/ITraversalStrategy.cs             |  46 --
 .../Traversal/Instruction.cs                    |  52 --
 .../Strategy/AbstractTraversalStrategy.cs       |  86 ---
 .../Strategy/Decoration/ConnectiveStrategy.cs   |  33 -
 .../Strategy/Decoration/ElementIdStrategy.cs    |  32 -
 .../Decoration/HaltedTraverserStrategy.cs       |  34 -
 .../Strategy/Decoration/PartitionStrategy.cs    |  56 --
 .../Strategy/Decoration/SubgraphStrategy.cs     |  48 --
 .../Decoration/VertexProgramStrategy.cs         |  50 --
 .../Finalization/MatchAlgorithmStrategy.cs      |  34 -
 .../Optimization/AdjacentToIncidentStrategy.cs  |  32 -
 .../Optimization/FilterRankingStrategy.cs       |  32 -
 .../Optimization/GraphFilterStrategy.cs         |  29 -
 .../Optimization/IdentityRemovalStrategy.cs     |  32 -
 .../Optimization/IncidentToAdjacentStrategy.cs  |  33 -
 .../Optimization/InlineFilterStrategy.cs        |  32 -
 .../Optimization/LazyBarrierStrategy.cs         |  33 -
 .../Optimization/MatchPredicateStrategy.cs      |  32 -
 .../Strategy/Optimization/OrderLimitStrategy.cs |  29 -
 .../Optimization/PathProcessorStrategy.cs       |  32 -
 .../Optimization/PathRetractionStrategy.cs      |  29 -
 .../Optimization/RangeByIsCountStrategy.cs      |  32 -
 .../Optimization/RepeatUnrollStrategy.cs        |  29 -
 .../Verification/LambdaRestrictionStrategy.cs   |  32 -
 .../Strategy/Verification/ReadOnlyStrategy.cs   |  32 -
 .../Traversal/TraversalPredicate.cs             |  85 ---
 .../Gremlin.Net.Process/Traversal/Traverser.cs  |  75 ---
 .../src/Gremlin.Net/Gremlin.Net.csproj          |   9 +-
 .../Process/Remote/IRemoteConnection.cs         |  42 ++
 .../Process/Remote/RemoteStrategy.cs            |  61 ++
 .../Gremlin.Net/Process/Traversal/Barrier.cs    |  30 +
 .../Gremlin.Net/Process/Traversal/Binding.cs    |  80 +++
 .../Gremlin.Net/Process/Traversal/Bindings.cs   |  42 ++
 .../Gremlin.Net/Process/Traversal/Bytecode.cs   |  85 +++
 .../Process/Traversal/Cardinality.cs            |  32 +
 .../src/Gremlin.Net/Process/Traversal/Column.cs |  31 +
 .../Process/Traversal/DefaultTraversal.cs       | 195 ++++++
 .../Gremlin.Net/Process/Traversal/Direction.cs  |  32 +
 .../Process/Traversal/GraphTraversal.cs         | 629 ++++++++++++++++++
 .../Process/Traversal/GraphTraversalSource.cs   | 142 +++++
 .../Gremlin.Net/Process/Traversal/ITraversal.cs |  96 +++
 .../Process/Traversal/ITraversalSideEffects.cs  |  52 ++
 .../Process/Traversal/ITraversalStrategy.cs     |  46 ++
 .../Process/Traversal/Instruction.cs            |  52 ++
 .../Gremlin.Net/Process/Traversal/Operator.cs   |  40 ++
 .../src/Gremlin.Net/Process/Traversal/Order.cs  |  36 ++
 .../src/Gremlin.Net/Process/Traversal/P.cs      | 107 ++++
 .../src/Gremlin.Net/Process/Traversal/Pick.cs   |  31 +
 .../src/Gremlin.Net/Process/Traversal/Pop.cs    |  32 +
 .../src/Gremlin.Net/Process/Traversal/Scope.cs  |  31 +
 .../Strategy/AbstractTraversalStrategy.cs       |  86 +++
 .../Strategy/Decoration/ConnectiveStrategy.cs   |  33 +
 .../Strategy/Decoration/ElementIdStrategy.cs    |  32 +
 .../Decoration/HaltedTraverserStrategy.cs       |  34 +
 .../Strategy/Decoration/PartitionStrategy.cs    |  56 ++
 .../Strategy/Decoration/SubgraphStrategy.cs     |  48 ++
 .../Decoration/VertexProgramStrategy.cs         |  50 ++
 .../Finalization/MatchAlgorithmStrategy.cs      |  34 +
 .../Optimization/AdjacentToIncidentStrategy.cs  |  32 +
 .../Optimization/FilterRankingStrategy.cs       |  32 +
 .../Optimization/GraphFilterStrategy.cs         |  29 +
 .../Optimization/IdentityRemovalStrategy.cs     |  32 +
 .../Optimization/IncidentToAdjacentStrategy.cs  |  33 +
 .../Optimization/InlineFilterStrategy.cs        |  32 +
 .../Optimization/LazyBarrierStrategy.cs         |  33 +
 .../Optimization/MatchPredicateStrategy.cs      |  32 +
 .../Strategy/Optimization/OrderLimitStrategy.cs |  29 +
 .../Optimization/PathProcessorStrategy.cs       |  32 +
 .../Optimization/PathRetractionStrategy.cs      |  29 +
 .../Optimization/RangeByIsCountStrategy.cs      |  32 +
 .../Optimization/RepeatUnrollStrategy.cs        |  29 +
 .../Verification/LambdaRestrictionStrategy.cs   |  32 +
 .../Strategy/Verification/ReadOnlyStrategy.cs   |  32 +
 .../src/Gremlin.Net/Process/Traversal/T.cs      |  33 +
 .../Process/Traversal/TraversalPredicate.cs     |  85 +++
 .../Gremlin.Net/Process/Traversal/Traverser.cs  |  75 +++
 .../src/Gremlin.Net/Process/Traversal/__.cs     | 488 ++++++++++++++
 .../src/Gremlin.Net/Structure/Graph.cs          |  35 ++
 .../BytecodeGenerationTests.cs                  |  76 ---
 .../BytecodeGeneration/StrategiesTests.cs       | 170 -----
 .../ConfigProvider.cs                           |  47 --
 .../DriverRemoteConnection/EnumTests.cs         |  59 --
 .../GraphTraversalSourceTests.cs                |  55 --
 .../GraphTraversalTests.cs                      | 171 -----
 .../DriverRemoteConnection/PredicateTests.cs    |  58 --
 .../RemoteConnectionFactory.cs                  |  41 --
 .../DriverRemoteConnection/SideEffectTests.cs   | 221 -------
 .../DriverRemoteConnection/StrategiesTests.cs   | 193 ------
 .../GraphSONWriterTests.cs                      |  50 --
 .../Gremlin.CSharp.IntegrationTest.csproj       |  38 --
 .../Properties/AssemblyInfo.cs                  |  44 --
 .../appsettings.json                            |   4 -
 .../GraphTraversalSourceTests.cs                |  68 --
 .../Gremlin.CSharp.UnitTest.csproj              |  21 -
 .../Gremlin.CSharp.UnitTest/PredicateTests.cs   |  50 --
 .../Gremlin.Net.IntegrationTest.csproj          |   1 -
 .../BytecodeGenerationTests.cs                  |  76 +++
 .../BytecodeGeneration/StrategiesTests.cs       | 170 +++++
 .../DriverRemoteConnection/EnumTests.cs         |  59 ++
 .../GraphTraversalSourceTests.cs                |  55 ++
 .../GraphTraversalTests.cs                      | 169 +++++
 .../DriverRemoteConnection/PredicateTests.cs    |  58 ++
 .../RemoteConnectionFactory.cs                  |  41 ++
 .../DriverRemoteConnection/SideEffectTests.cs   | 221 +++++++
 .../DriverRemoteConnection/StrategiesTests.cs   | 193 ++++++
 .../Process/Traversal/GraphSONWriterTests.cs    |  50 ++
 .../Gremlin.Net.Process.UnitTest.csproj         |  22 -
 .../Traversal/BytecodeTests.cs                  |  44 --
 .../Traversal/Strategy/StrategyTests.cs         | 109 ----
 .../Traversal/TestTraversal.cs                  |  51 --
 .../Traversal/TestTraversalStrategy.cs          |  50 --
 .../Traversal/TraversalTests.cs                 | 177 ------
 .../Traversal/TraverserTests.cs                 |  75 ---
 .../Gremlin.Net.UnitTest.csproj                 |   1 -
 .../Process/Traversal/BytecodeTests.cs          |  44 ++
 .../Traversal/GraphTraversalSourceTests.cs      |  68 ++
 .../Process/Traversal/PredicateTests.cs         |  50 ++
 .../Process/Traversal/Strategy/StrategyTests.cs | 109 ++++
 .../Process/Traversal/TestTraversal.cs          |  51 ++
 .../Process/Traversal/TestTraversalStrategy.cs  |  50 ++
 .../Process/Traversal/TraversalTests.cs         | 177 ++++++
 .../Process/Traversal/TraverserTests.cs         |  75 +++
 156 files changed, 5231 insertions(+), 5508 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/docs/src/reference/gremlin-variants.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/reference/gremlin-variants.asciidoc b/docs/src/reference/gremlin-variants.asciidoc
index b494450..6cb7fa5 100644
--- a/docs/src/reference/gremlin-variants.asciidoc
+++ b/docs/src/reference/gremlin-variants.asciidoc
@@ -354,40 +354,30 @@ connection = DriverRemoteConnection('ws://localhost:8182/gremlin', 'g',
                                      graphson_writer=graphson_writer)
 ----
 
-[[gremlin-csharp]]
-Gremlin-CSharp
+[[gremlin-DotNet]]
+Gremlin-DotNet
 --------------
-Apache TinkerPop's Gremlin-CSharp implements Gremlin within the C# language. It targets .NET Standard and can
+Apache TinkerPop's Gremlin-DotNet implements Gremlin within the C# language. It targets .NET Standard and can
 therefore be used on different operating systems and with different .NET frameworks, such as .NET Framework
 and link:https://www.microsoft.com/net/core[.NET Core]. Since the C# syntax is very similar to that of Java, it should be very easy to switch between
-Gremlin-Java and Gremlin-CSharp. The only major syntactical difference is that all method names in Gremlin-CSharp
+Gremlin-Java and Gremlin-DotNet. The only major syntactical difference is that all method names in Gremlin-DotNet
 use PascalCase as opposed to camelCase in Gremlin-Java in order to comply with .NET conventions.
 
 [source,powershell]
-nuget install Gremlin.CSharp
+nuget install Gremlin.Net
 
-In Gremlin-CSharp there exists `GraphTraversalSource`, `GraphTraversal`, and `__` which mirror the respective classes
+In Gremlin-DotNet there exists `GraphTraversalSource`, `GraphTraversal`, and `__` which mirror the respective classes
 in Gremlin-Java. The `GraphTraversalSource` requires a driver in order to communicate with <<gremlin-server,GremlinServer>> (or any
 RemoteConnection-enabled server).
 
-Gremlin-CSharp and Gremlin-DotNet
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Gremlin-CSharp is the C# language variant of Gremlin, but it needs a driver to communicate with a remote
-Gremlin Server. Such a driver is provided as part of Apache TinkerPop’s Gremlin-DotNet that also includes other
-useful functionality to work with Gremlin in .NET.
-Gremlin-DotNet is currently distributed in two NuGet packages:
-
-* `Gremlin.Net.Process` contains core functionality for Gremlin language variants and defines interfaces for drivers.
-Gremlin-CSharp depends on this package. So it will be installed automatically when you install Gremlin-CSharp.
-* `Gremlin.Net` contains a driver that allows Gremlin-CSharp to be used with a remote server and GraphSON serializers and deserializers.
+The `Gremlin.Net.Driver.Remote.DriverRemoteConnection` is provided as part of Apache TinkerPop’s Gremlin-DotNet.
 
 IMPORTANT: For developers wishing to provide another driver implementation, be sure to implement `IRemoteConnection` in
-`Gremlin.Net.Process.Remote` so it can then be used by Gremlin-CSharp’s `GraphTraversal`.
+`Gremlin.Net.Process.Remote` so it can then be used by Gremlin-DotNet’s `GraphTraversal`.
 
-When Gremlin Server is running, Gremlin-CSharp can communicate with Gremlin Server by sending traversals serialized as `Bytecode`.
+When Gremlin Server is running, Gremlin-DotNet can communicate with Gremlin Server by sending traversals serialized as `Bytecode`.
 
-IMPORTANT: Gremlin-CSharp is compatible with GraphSON 2.0 only, so this serializer must be configured in Gremlin Server.
+IMPORTANT: Gremlin-DotNet is compatible with GraphSON 2.0 only, so this serializer must be configured in Gremlin Server.
 
 A traversal source can be spawned with `RemoteStrategy` from an empty `Graph`.
 
@@ -399,7 +389,7 @@ var g = graph.Traversal().WithRemote(new DriverRemoteConnection(new GremlinClien
 
 When a traversal from the `GraphTraversalSource` is iterated, the traversal’s `Bytecode` is sent over the wire via the registered
 `IRemoteConnection`. The bytecode is used to construct the equivalent traversal at the remote traversal source.
-Since Gremlin-CSharp currently doesn't support lambda expressions, all traversals can be translated to Gremlin-Java on the remote
+Since Gremlin-DotNet currently doesn't support lambda expressions, all traversals can be translated to Gremlin-Java on the remote
 location (e.g. Gremlin Server).
 
 IMPORTANT: Gremlin-DotNet’s `ITraversal` interface supports the standard Gremlin methods such as `Next()`, `NextTraverser()`, `ToSet()`,
@@ -420,7 +410,7 @@ terminal/action methods off of `ITraversal`.
 Static Enums and Methods
 ~~~~~~~~~~~~~~~~~~~~~~~~
 
-Gremlin has various tokens (e.g. `T`, `P`, `Order`, `Operator`, etc.) that are represented in Gremlin-CSharp as Enums.
+Gremlin has various tokens (e.g. `T`, `P`, `Order`, `Operator`, etc.) that are represented in Gremlin-DotNet as Enums.
 
 These can be used analogously to how they are used in Gremlin-Java.
 
@@ -431,8 +421,8 @@ Moreover, the class prefixes can be ommitted with a `using static`.
 
 [source,csharp]
 ----
-using static Gremlin.CSharp.Process.P;
-using static Gremlin.CSharp.Process.Order;
+using static Gremlin.Net.Process.Traversal.P;
+using static Gremlin.Net.Process.Traversal.Order;
 ----
 
 Then it is possible to represent the above traversal as below.
@@ -451,10 +441,10 @@ Bindings
 When a traversal bytecode is sent over a `IRemoteConnection` (e.g. Gremlin Server), it will be translated, compiled, 
 and then executed. If the same traversal is sent again, translation and compilation can be skipped as the previously 
 compiled version should be cached. Many traversals are unique up to some parameterization. For instance,
-`g.V(1).Out("created").Values("name")` is considered different from `g.V(4).Out('created').Values("Name")`
+`g.V(1).Out("created").Values("name")` is considered different from `g.V(4).Out("created").Values("Name")`
 as they have different script "string" representations. However, `g.V(x).Out("created").Values("name")` with bindings of 
 `{x : 1}` and `{x : 4}` are considered the same. If a traversal is going to be executed repeatedly, but with different 
-parameters, then bindings should be used. In Gremlin-CSharp, bindings are objects that can be created as follows.
+parameters, then bindings should be used. In Gremlin-DotNet, bindings are objects that can be created as follows.
 
 [source,csharp]
 ----

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-csharp-generator/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-csharp-generator/pom.xml b/gremlin-csharp-generator/pom.xml
index af0ae60..4e8989a 100644
--- a/gremlin-csharp-generator/pom.xml
+++ b/gremlin-csharp-generator/pom.xml
@@ -56,7 +56,7 @@ limitations under the License.
                         <configuration>
                             <mainClass>org.apache.tinkerpop.gremlin.csharp.GenerateGremlinCSharp</mainClass>
                             <arguments>
-                                <argument>${project.parent.basedir}/gremlin-dotnet/src/Gremlin.CSharp</argument>
+                                <argument>${project.parent.basedir}/gremlin-dotnet/src/Gremlin.Net</argument>
                             </arguments>
                         </configuration>
                     </execution>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/AnonymousTraversalGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/AnonymousTraversalGenerator.groovy b/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/AnonymousTraversalGenerator.groovy
index 6e2e191..ccb22fc 100644
--- a/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/AnonymousTraversalGenerator.groovy
+++ b/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/AnonymousTraversalGenerator.groovy
@@ -34,7 +34,7 @@ class AnonymousTraversalGenerator {
 
         csharpClass.append(
 """
-namespace Gremlin.CSharp.Process
+namespace Gremlin.Net.Process.Traversal
 {
     public static class __
     {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/EnumGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/EnumGenerator.groovy b/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/EnumGenerator.groovy
index a389f9b..9214e0f 100644
--- a/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/EnumGenerator.groovy
+++ b/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/EnumGenerator.groovy
@@ -40,7 +40,7 @@ class EnumGenerator {
 
         csharpEnum.append(
                 """
-namespace Gremlin.CSharp.Process
+namespace Gremlin.Net.Process.Traversal
 {
     public enum ${enumClass.getSimpleName()}
     {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/GenerateGremlinCSharp.groovy
----------------------------------------------------------------------
diff --git a/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/GenerateGremlinCSharp.groovy b/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/GenerateGremlinCSharp.groovy
index 7b03e5a..53eba17 100644
--- a/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/GenerateGremlinCSharp.groovy
+++ b/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/GenerateGremlinCSharp.groovy
@@ -23,10 +23,10 @@ public class GenerateGremlinCSharp {
 
     public static void main(String[] args) {
         final String csharpDirectory = args[0]
-        GraphTraversalSourceGenerator.create(csharpDirectory + "/Process/" + "GraphTraversalSource.cs")
-        GraphTraversalGenerator.create(csharpDirectory + "/Process/" + "GraphTraversal.cs")
-        AnonymousTraversalGenerator.create(csharpDirectory + "/Process/" + "__.cs")
-        EnumGenerator.create(csharpDirectory + "/Process/")
-        PredicateGenerator.create(csharpDirectory + "/Process/" + "P.cs")
+        GraphTraversalSourceGenerator.create(csharpDirectory + "/Process/Traversal/" + "GraphTraversalSource.cs")
+        GraphTraversalGenerator.create(csharpDirectory + "/Process/Traversal/" + "GraphTraversal.cs")
+        AnonymousTraversalGenerator.create(csharpDirectory + "/Process/Traversal/" + "__.cs")
+        EnumGenerator.create(csharpDirectory + "/Process/Traversal/")
+        PredicateGenerator.create(csharpDirectory + "/Process/Traversal/" + "P.cs")
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/GraphTraversalGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/GraphTraversalGenerator.groovy b/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/GraphTraversalGenerator.groovy
index 54183a3..f8ecfb1 100644
--- a/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/GraphTraversalGenerator.groovy
+++ b/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/GraphTraversalGenerator.groovy
@@ -32,9 +32,8 @@ class GraphTraversalGenerator {
         csharpClass.append(
 """
 using System.Collections.Generic;
-using Gremlin.Net.Process.Traversal;
 
-namespace Gremlin.CSharp.Process
+namespace Gremlin.Net.Process.Traversal
 {
     public class GraphTraversal : DefaultTraversal
     {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/GraphTraversalSourceGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/GraphTraversalSourceGenerator.groovy b/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/GraphTraversalSourceGenerator.groovy
index aaa35fb..6b93d73 100644
--- a/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/GraphTraversalSourceGenerator.groovy
+++ b/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/GraphTraversalSourceGenerator.groovy
@@ -35,10 +35,9 @@ class GraphTraversalSourceGenerator {
 """
 using System.Collections.Generic;
 using Gremlin.Net.Process.Remote;
-using Gremlin.Net.Process.Traversal;
 using Gremlin.Net.Process.Traversal.Strategy.Decoration;
 
-namespace Gremlin.CSharp.Process
+namespace Gremlin.Net.Process.Traversal
 {
     public class GraphTraversalSource
     {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/PredicateGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/PredicateGenerator.groovy b/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/PredicateGenerator.groovy
index 72e3dba..0748ae9 100644
--- a/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/PredicateGenerator.groovy
+++ b/gremlin-csharp-generator/src/main/groovy/org/apache/tinkerpop/gremlin/csharp/PredicateGenerator.groovy
@@ -33,9 +33,8 @@ class PredicateGenerator {
 
         csharpClass.append(
 """
-using Gremlin.Net.Process.Traversal;
 
-namespace Gremlin.CSharp.Process
+namespace Gremlin.Net.Process.Traversal
 {
     public class P
     {""")

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/Gremlin.Net.sln
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/Gremlin.Net.sln b/gremlin-dotnet/Gremlin.Net.sln
index bfd565f..b1a5d19 100644
--- a/gremlin-dotnet/Gremlin.Net.sln
+++ b/gremlin-dotnet/Gremlin.Net.sln
@@ -1,7 +1,7 @@
 
 Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio 15
-VisualStudioVersion = 15.0.26228.4
+VisualStudioVersion = 15.0.26430.12
 MinimumVisualStudioVersion = 10.0.40219.1
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{584F838B-DAE2-44F5-868C-1F532949C827}"
 EndProject
@@ -15,16 +15,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Gremlin.Net.UnitTest", "tes
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Gremlin.Net.IntegrationTest", "test\Gremlin.Net.IntegrationTest\Gremlin.Net.IntegrationTest.csproj", "{CC54ABE3-13D2-491C-81E2-4D0355ABFA93}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Gremlin.CSharp", "src\Gremlin.CSharp\Gremlin.CSharp.csproj", "{709D235A-CA13-434F-9AF9-8C8C009B11D7}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Gremlin.CSharp.IntegrationTest", "test\Gremlin.CSharp.IntegrationTest\Gremlin.CSharp.IntegrationTest.csproj", "{232F0F2B-178E-4214-99C7-CC4DC6710F44}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Gremlin.Net.Process", "src\Gremlin.Net.Process\Gremlin.Net.Process.csproj", "{4949181B-C97D-4BB4-A312-9C1506EC7DA7}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Gremlin.Net.Process.UnitTest", "test\Gremlin.Net.Process.UnitTest\Gremlin.Net.Process.UnitTest.csproj", "{D97CA283-AC86-4EC9-9E1D-5F9A97977687}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Gremlin.CSharp.UnitTest", "test\Gremlin.CSharp.UnitTest\Gremlin.CSharp.UnitTest.csproj", "{F2D976C2-D5EC-4BE5-9F6F-FCFAA9F59858}"
-EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -43,26 +33,6 @@ Global
 		{CC54ABE3-13D2-491C-81E2-4D0355ABFA93}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{CC54ABE3-13D2-491C-81E2-4D0355ABFA93}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{CC54ABE3-13D2-491C-81E2-4D0355ABFA93}.Release|Any CPU.Build.0 = Release|Any CPU
-		{709D235A-CA13-434F-9AF9-8C8C009B11D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{709D235A-CA13-434F-9AF9-8C8C009B11D7}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{709D235A-CA13-434F-9AF9-8C8C009B11D7}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{709D235A-CA13-434F-9AF9-8C8C009B11D7}.Release|Any CPU.Build.0 = Release|Any CPU
-		{232F0F2B-178E-4214-99C7-CC4DC6710F44}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{232F0F2B-178E-4214-99C7-CC4DC6710F44}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{232F0F2B-178E-4214-99C7-CC4DC6710F44}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{232F0F2B-178E-4214-99C7-CC4DC6710F44}.Release|Any CPU.Build.0 = Release|Any CPU
-		{4949181B-C97D-4BB4-A312-9C1506EC7DA7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{4949181B-C97D-4BB4-A312-9C1506EC7DA7}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{4949181B-C97D-4BB4-A312-9C1506EC7DA7}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{4949181B-C97D-4BB4-A312-9C1506EC7DA7}.Release|Any CPU.Build.0 = Release|Any CPU
-		{D97CA283-AC86-4EC9-9E1D-5F9A97977687}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{D97CA283-AC86-4EC9-9E1D-5F9A97977687}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{D97CA283-AC86-4EC9-9E1D-5F9A97977687}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{D97CA283-AC86-4EC9-9E1D-5F9A97977687}.Release|Any CPU.Build.0 = Release|Any CPU
-		{F2D976C2-D5EC-4BE5-9F6F-FCFAA9F59858}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{F2D976C2-D5EC-4BE5-9F6F-FCFAA9F59858}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{F2D976C2-D5EC-4BE5-9F6F-FCFAA9F59858}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{F2D976C2-D5EC-4BE5-9F6F-FCFAA9F59858}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -71,10 +41,5 @@ Global
 		{6C1DD34D-E30F-4E37-AACC-BEB8AD2320D8} = {584F838B-DAE2-44F5-868C-1F532949C827}
 		{1FAB781B-B857-4AD2-BEC8-E20C214D9E21} = {1B54FAC2-5411-4BB6-B450-FE2FFD8C4782}
 		{CC54ABE3-13D2-491C-81E2-4D0355ABFA93} = {1B54FAC2-5411-4BB6-B450-FE2FFD8C4782}
-		{709D235A-CA13-434F-9AF9-8C8C009B11D7} = {584F838B-DAE2-44F5-868C-1F532949C827}
-		{232F0F2B-178E-4214-99C7-CC4DC6710F44} = {1B54FAC2-5411-4BB6-B450-FE2FFD8C4782}
-		{4949181B-C97D-4BB4-A312-9C1506EC7DA7} = {584F838B-DAE2-44F5-868C-1F532949C827}
-		{D97CA283-AC86-4EC9-9E1D-5F9A97977687} = {1B54FAC2-5411-4BB6-B450-FE2FFD8C4782}
-		{F2D976C2-D5EC-4BE5-9F6F-FCFAA9F59858} = {1B54FAC2-5411-4BB6-B450-FE2FFD8C4782}
 	EndGlobalSection
 EndGlobal

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.CSharp/Gremlin.CSharp.csproj
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.CSharp/Gremlin.CSharp.csproj b/gremlin-dotnet/src/Gremlin.CSharp/Gremlin.CSharp.csproj
deleted file mode 100644
index 82291fc..0000000
--- a/gremlin-dotnet/src/Gremlin.CSharp/Gremlin.CSharp.csproj
+++ /dev/null
@@ -1,21 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>
-    <Version>3.2.5-SNAPSHOT</Version>
-    <TargetFramework>netstandard1.3</TargetFramework>
-    <AssemblyName>Gremlin.CSharp</AssemblyName>
-    <PackageId>Gremlin.CSharp</PackageId>
-    <GeneratePackageOnBuild>False</GeneratePackageOnBuild>
-    <PackageProjectUrl>http://tinkerpop.apache.org</PackageProjectUrl>
-    <PackageLicenseUrl>https://github.com/apache/tinkerpop/blob/master/LICENSE</PackageLicenseUrl>
-    <RepositoryUrl>https://github.com/apache/tinkerpop</RepositoryUrl>
-    <Description>Apache TinkerPop’s Gremlin-CSharp implements Gremlin within C# and can be used on any platform.</Description>
-    <PackageTags>gremlin-csharp;gremlin;tinkerpop</PackageTags>
-    <Authors>Apache TinkerPop</Authors>
-  </PropertyGroup>
-
-  <ItemGroup>
-    <ProjectReference Include="..\Gremlin.Net.Process\Gremlin.Net.Process.csproj" />
-  </ItemGroup>
-
-</Project>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.CSharp/Process/Barrier.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.CSharp/Process/Barrier.cs b/gremlin-dotnet/src/Gremlin.CSharp/Process/Barrier.cs
deleted file mode 100644
index a74b47a..0000000
--- a/gremlin-dotnet/src/Gremlin.CSharp/Process/Barrier.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.CSharp.Process
-{
-    public enum Barrier
-    {
-        normSack
-    }
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.CSharp/Process/Cardinality.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.CSharp/Process/Cardinality.cs b/gremlin-dotnet/src/Gremlin.CSharp/Process/Cardinality.cs
deleted file mode 100644
index 4b9fae8..0000000
--- a/gremlin-dotnet/src/Gremlin.CSharp/Process/Cardinality.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.CSharp.Process
-{
-    public enum Cardinality
-    {
-        list,
-        set,
-        single
-    }
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.CSharp/Process/Column.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.CSharp/Process/Column.cs b/gremlin-dotnet/src/Gremlin.CSharp/Process/Column.cs
deleted file mode 100644
index c397b69..0000000
--- a/gremlin-dotnet/src/Gremlin.CSharp/Process/Column.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.CSharp.Process
-{
-    public enum Column
-    {
-        keys,
-        values
-    }
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.CSharp/Process/Direction.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.CSharp/Process/Direction.cs b/gremlin-dotnet/src/Gremlin.CSharp/Process/Direction.cs
deleted file mode 100644
index abdf7a2..0000000
--- a/gremlin-dotnet/src/Gremlin.CSharp/Process/Direction.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.CSharp.Process
-{
-    public enum Direction
-    {
-        BOTH,
-        IN,
-        OUT
-    }
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.CSharp/Process/GraphTraversal.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.CSharp/Process/GraphTraversal.cs b/gremlin-dotnet/src/Gremlin.CSharp/Process/GraphTraversal.cs
deleted file mode 100644
index 4397838..0000000
--- a/gremlin-dotnet/src/Gremlin.CSharp/Process/GraphTraversal.cs
+++ /dev/null
@@ -1,630 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using System.Collections.Generic;
-using Gremlin.Net.Process.Traversal;
-
-namespace Gremlin.CSharp.Process
-{
-    public class GraphTraversal : DefaultTraversal
-    {
-        public GraphTraversal()
-            : this(new List<ITraversalStrategy>(), new Bytecode())
-        {
-        }
-
-        public GraphTraversal(ICollection<ITraversalStrategy> traversalStrategies, Bytecode bytecode)
-        {
-            TraversalStrategies = traversalStrategies;
-            Bytecode = bytecode;
-        }
-
-        public GraphTraversal V(params object[] args)
-        {
-            Bytecode.AddStep("V", args);
-            return this;
-        }
-
-        public GraphTraversal AddE(params object[] args)
-        {
-            Bytecode.AddStep("addE", args);
-            return this;
-        }
-
-        public GraphTraversal AddInE(params object[] args)
-        {
-            Bytecode.AddStep("addInE", args);
-            return this;
-        }
-
-        public GraphTraversal AddOutE(params object[] args)
-        {
-            Bytecode.AddStep("addOutE", args);
-            return this;
-        }
-
-        public GraphTraversal AddV(params object[] args)
-        {
-            Bytecode.AddStep("addV", args);
-            return this;
-        }
-
-        public GraphTraversal Aggregate(params object[] args)
-        {
-            Bytecode.AddStep("aggregate", args);
-            return this;
-        }
-
-        public GraphTraversal And(params object[] args)
-        {
-            Bytecode.AddStep("and", args);
-            return this;
-        }
-
-        public GraphTraversal As(params object[] args)
-        {
-            Bytecode.AddStep("as", args);
-            return this;
-        }
-
-        public GraphTraversal Barrier(params object[] args)
-        {
-            Bytecode.AddStep("barrier", args);
-            return this;
-        }
-
-        public GraphTraversal Both(params object[] args)
-        {
-            Bytecode.AddStep("both", args);
-            return this;
-        }
-
-        public GraphTraversal BothE(params object[] args)
-        {
-            Bytecode.AddStep("bothE", args);
-            return this;
-        }
-
-        public GraphTraversal BothV(params object[] args)
-        {
-            Bytecode.AddStep("bothV", args);
-            return this;
-        }
-
-        public GraphTraversal Branch(params object[] args)
-        {
-            Bytecode.AddStep("branch", args);
-            return this;
-        }
-
-        public GraphTraversal By(params object[] args)
-        {
-            Bytecode.AddStep("by", args);
-            return this;
-        }
-
-        public GraphTraversal Cap(params object[] args)
-        {
-            Bytecode.AddStep("cap", args);
-            return this;
-        }
-
-        public GraphTraversal Choose(params object[] args)
-        {
-            Bytecode.AddStep("choose", args);
-            return this;
-        }
-
-        public GraphTraversal Coalesce(params object[] args)
-        {
-            Bytecode.AddStep("coalesce", args);
-            return this;
-        }
-
-        public GraphTraversal Coin(params object[] args)
-        {
-            Bytecode.AddStep("coin", args);
-            return this;
-        }
-
-        public GraphTraversal Constant(params object[] args)
-        {
-            Bytecode.AddStep("constant", args);
-            return this;
-        }
-
-        public GraphTraversal Count(params object[] args)
-        {
-            Bytecode.AddStep("count", args);
-            return this;
-        }
-
-        public GraphTraversal CyclicPath(params object[] args)
-        {
-            Bytecode.AddStep("cyclicPath", args);
-            return this;
-        }
-
-        public GraphTraversal Dedup(params object[] args)
-        {
-            Bytecode.AddStep("dedup", args);
-            return this;
-        }
-
-        public GraphTraversal Drop(params object[] args)
-        {
-            Bytecode.AddStep("drop", args);
-            return this;
-        }
-
-        public GraphTraversal Emit(params object[] args)
-        {
-            Bytecode.AddStep("emit", args);
-            return this;
-        }
-
-        public GraphTraversal Filter(params object[] args)
-        {
-            Bytecode.AddStep("filter", args);
-            return this;
-        }
-
-        public GraphTraversal FlatMap(params object[] args)
-        {
-            Bytecode.AddStep("flatMap", args);
-            return this;
-        }
-
-        public GraphTraversal Fold(params object[] args)
-        {
-            Bytecode.AddStep("fold", args);
-            return this;
-        }
-
-        public GraphTraversal From(params object[] args)
-        {
-            Bytecode.AddStep("from", args);
-            return this;
-        }
-
-        public GraphTraversal Group(params object[] args)
-        {
-            Bytecode.AddStep("group", args);
-            return this;
-        }
-
-        public GraphTraversal GroupCount(params object[] args)
-        {
-            Bytecode.AddStep("groupCount", args);
-            return this;
-        }
-
-        public GraphTraversal GroupV3d0(params object[] args)
-        {
-            Bytecode.AddStep("groupV3d0", args);
-            return this;
-        }
-
-        public GraphTraversal Has(params object[] args)
-        {
-            Bytecode.AddStep("has", args);
-            return this;
-        }
-
-        public GraphTraversal HasId(params object[] args)
-        {
-            Bytecode.AddStep("hasId", args);
-            return this;
-        }
-
-        public GraphTraversal HasKey(params object[] args)
-        {
-            Bytecode.AddStep("hasKey", args);
-            return this;
-        }
-
-        public GraphTraversal HasLabel(params object[] args)
-        {
-            Bytecode.AddStep("hasLabel", args);
-            return this;
-        }
-
-        public GraphTraversal HasNot(params object[] args)
-        {
-            Bytecode.AddStep("hasNot", args);
-            return this;
-        }
-
-        public GraphTraversal HasValue(params object[] args)
-        {
-            Bytecode.AddStep("hasValue", args);
-            return this;
-        }
-
-        public GraphTraversal Id(params object[] args)
-        {
-            Bytecode.AddStep("id", args);
-            return this;
-        }
-
-        public GraphTraversal Identity(params object[] args)
-        {
-            Bytecode.AddStep("identity", args);
-            return this;
-        }
-
-        public GraphTraversal In(params object[] args)
-        {
-            Bytecode.AddStep("in", args);
-            return this;
-        }
-
-        public GraphTraversal InE(params object[] args)
-        {
-            Bytecode.AddStep("inE", args);
-            return this;
-        }
-
-        public GraphTraversal InV(params object[] args)
-        {
-            Bytecode.AddStep("inV", args);
-            return this;
-        }
-
-        public GraphTraversal Inject(params object[] args)
-        {
-            Bytecode.AddStep("inject", args);
-            return this;
-        }
-
-        public GraphTraversal Is(params object[] args)
-        {
-            Bytecode.AddStep("is", args);
-            return this;
-        }
-
-        public GraphTraversal Key(params object[] args)
-        {
-            Bytecode.AddStep("key", args);
-            return this;
-        }
-
-        public GraphTraversal Label(params object[] args)
-        {
-            Bytecode.AddStep("label", args);
-            return this;
-        }
-
-        public GraphTraversal Limit(params object[] args)
-        {
-            Bytecode.AddStep("limit", args);
-            return this;
-        }
-
-        public GraphTraversal Local(params object[] args)
-        {
-            Bytecode.AddStep("local", args);
-            return this;
-        }
-
-        public GraphTraversal Loops(params object[] args)
-        {
-            Bytecode.AddStep("loops", args);
-            return this;
-        }
-
-        public GraphTraversal Map(params object[] args)
-        {
-            Bytecode.AddStep("map", args);
-            return this;
-        }
-
-        public GraphTraversal MapKeys(params object[] args)
-        {
-            Bytecode.AddStep("mapKeys", args);
-            return this;
-        }
-
-        public GraphTraversal MapValues(params object[] args)
-        {
-            Bytecode.AddStep("mapValues", args);
-            return this;
-        }
-
-        public GraphTraversal Match(params object[] args)
-        {
-            Bytecode.AddStep("match", args);
-            return this;
-        }
-
-        public GraphTraversal Max(params object[] args)
-        {
-            Bytecode.AddStep("max", args);
-            return this;
-        }
-
-        public GraphTraversal Mean(params object[] args)
-        {
-            Bytecode.AddStep("mean", args);
-            return this;
-        }
-
-        public GraphTraversal Min(params object[] args)
-        {
-            Bytecode.AddStep("min", args);
-            return this;
-        }
-
-        public GraphTraversal Not(params object[] args)
-        {
-            Bytecode.AddStep("not", args);
-            return this;
-        }
-
-        public GraphTraversal Option(params object[] args)
-        {
-            Bytecode.AddStep("option", args);
-            return this;
-        }
-
-        public GraphTraversal Optional(params object[] args)
-        {
-            Bytecode.AddStep("optional", args);
-            return this;
-        }
-
-        public GraphTraversal Or(params object[] args)
-        {
-            Bytecode.AddStep("or", args);
-            return this;
-        }
-
-        public GraphTraversal Order(params object[] args)
-        {
-            Bytecode.AddStep("order", args);
-            return this;
-        }
-
-        public GraphTraversal OtherV(params object[] args)
-        {
-            Bytecode.AddStep("otherV", args);
-            return this;
-        }
-
-        public GraphTraversal Out(params object[] args)
-        {
-            Bytecode.AddStep("out", args);
-            return this;
-        }
-
-        public GraphTraversal OutE(params object[] args)
-        {
-            Bytecode.AddStep("outE", args);
-            return this;
-        }
-
-        public GraphTraversal OutV(params object[] args)
-        {
-            Bytecode.AddStep("outV", args);
-            return this;
-        }
-
-        public GraphTraversal PageRank(params object[] args)
-        {
-            Bytecode.AddStep("pageRank", args);
-            return this;
-        }
-
-        public GraphTraversal Path(params object[] args)
-        {
-            Bytecode.AddStep("path", args);
-            return this;
-        }
-
-        public GraphTraversal PeerPressure(params object[] args)
-        {
-            Bytecode.AddStep("peerPressure", args);
-            return this;
-        }
-
-        public GraphTraversal Profile(params object[] args)
-        {
-            Bytecode.AddStep("profile", args);
-            return this;
-        }
-
-        public GraphTraversal Program(params object[] args)
-        {
-            Bytecode.AddStep("program", args);
-            return this;
-        }
-
-        public GraphTraversal Project(params object[] args)
-        {
-            Bytecode.AddStep("project", args);
-            return this;
-        }
-
-        public GraphTraversal Properties(params object[] args)
-        {
-            Bytecode.AddStep("properties", args);
-            return this;
-        }
-
-        public GraphTraversal Property(params object[] args)
-        {
-            Bytecode.AddStep("property", args);
-            return this;
-        }
-
-        public GraphTraversal PropertyMap(params object[] args)
-        {
-            Bytecode.AddStep("propertyMap", args);
-            return this;
-        }
-
-        public GraphTraversal Range(params object[] args)
-        {
-            Bytecode.AddStep("range", args);
-            return this;
-        }
-
-        public GraphTraversal Repeat(params object[] args)
-        {
-            Bytecode.AddStep("repeat", args);
-            return this;
-        }
-
-        public GraphTraversal Sack(params object[] args)
-        {
-            Bytecode.AddStep("sack", args);
-            return this;
-        }
-
-        public GraphTraversal Sample(params object[] args)
-        {
-            Bytecode.AddStep("sample", args);
-            return this;
-        }
-
-        public GraphTraversal Select(params object[] args)
-        {
-            Bytecode.AddStep("select", args);
-            return this;
-        }
-
-        public GraphTraversal SideEffect(params object[] args)
-        {
-            Bytecode.AddStep("sideEffect", args);
-            return this;
-        }
-
-        public GraphTraversal SimplePath(params object[] args)
-        {
-            Bytecode.AddStep("simplePath", args);
-            return this;
-        }
-
-        public GraphTraversal Store(params object[] args)
-        {
-            Bytecode.AddStep("store", args);
-            return this;
-        }
-
-        public GraphTraversal Subgraph(params object[] args)
-        {
-            Bytecode.AddStep("subgraph", args);
-            return this;
-        }
-
-        public GraphTraversal Sum(params object[] args)
-        {
-            Bytecode.AddStep("sum", args);
-            return this;
-        }
-
-        public GraphTraversal Tail(params object[] args)
-        {
-            Bytecode.AddStep("tail", args);
-            return this;
-        }
-
-        public GraphTraversal TimeLimit(params object[] args)
-        {
-            Bytecode.AddStep("timeLimit", args);
-            return this;
-        }
-
-        public GraphTraversal Times(params object[] args)
-        {
-            Bytecode.AddStep("times", args);
-            return this;
-        }
-
-        public GraphTraversal To(params object[] args)
-        {
-            Bytecode.AddStep("to", args);
-            return this;
-        }
-
-        public GraphTraversal ToE(params object[] args)
-        {
-            Bytecode.AddStep("toE", args);
-            return this;
-        }
-
-        public GraphTraversal ToV(params object[] args)
-        {
-            Bytecode.AddStep("toV", args);
-            return this;
-        }
-
-        public GraphTraversal Tree(params object[] args)
-        {
-            Bytecode.AddStep("tree", args);
-            return this;
-        }
-
-        public GraphTraversal Unfold(params object[] args)
-        {
-            Bytecode.AddStep("unfold", args);
-            return this;
-        }
-
-        public GraphTraversal Union(params object[] args)
-        {
-            Bytecode.AddStep("union", args);
-            return this;
-        }
-
-        public GraphTraversal Until(params object[] args)
-        {
-            Bytecode.AddStep("until", args);
-            return this;
-        }
-
-        public GraphTraversal Value(params object[] args)
-        {
-            Bytecode.AddStep("value", args);
-            return this;
-        }
-
-        public GraphTraversal ValueMap(params object[] args)
-        {
-            Bytecode.AddStep("valueMap", args);
-            return this;
-        }
-
-        public GraphTraversal Values(params object[] args)
-        {
-            Bytecode.AddStep("values", args);
-            return this;
-        }
-
-        public GraphTraversal Where(params object[] args)
-        {
-            Bytecode.AddStep("where", args);
-            return this;
-        }
-	}
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.CSharp/Process/GraphTraversalSource.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.CSharp/Process/GraphTraversalSource.cs b/gremlin-dotnet/src/Gremlin.CSharp/Process/GraphTraversalSource.cs
deleted file mode 100644
index e68fdee..0000000
--- a/gremlin-dotnet/src/Gremlin.CSharp/Process/GraphTraversalSource.cs
+++ /dev/null
@@ -1,143 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using System.Collections.Generic;
-using Gremlin.Net.Process.Remote;
-using Gremlin.Net.Process.Traversal;
-using Gremlin.Net.Process.Traversal.Strategy.Decoration;
-
-namespace Gremlin.CSharp.Process
-{
-    public class GraphTraversalSource
-    {
-        public ICollection<ITraversalStrategy> TraversalStrategies { get; set; }
-        public Bytecode Bytecode { get; set; }
-
-         public GraphTraversalSource()
-            : this(new List<ITraversalStrategy>(), new Bytecode())
-        {
-        }
-
-        public GraphTraversalSource(ICollection<ITraversalStrategy> traversalStrategies, Bytecode bytecode)
-        {
-            TraversalStrategies = traversalStrategies;
-            Bytecode = bytecode;
-        }
-
-        public GraphTraversalSource WithBulk(params object[] args)
-        {
-            var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
-                new Bytecode(Bytecode));
-            source.Bytecode.AddSource("withBulk", args);
-            return source;
-        }
-
-        public GraphTraversalSource WithPath(params object[] args)
-        {
-            var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
-                new Bytecode(Bytecode));
-            source.Bytecode.AddSource("withPath", args);
-            return source;
-        }
-
-        public GraphTraversalSource WithSack(params object[] args)
-        {
-            var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
-                new Bytecode(Bytecode));
-            source.Bytecode.AddSource("withSack", args);
-            return source;
-        }
-
-        public GraphTraversalSource WithSideEffect(params object[] args)
-        {
-            var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
-                new Bytecode(Bytecode));
-            source.Bytecode.AddSource("withSideEffect", args);
-            return source;
-        }
-
-        public GraphTraversalSource WithStrategies(params object[] args)
-        {
-            var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
-                new Bytecode(Bytecode));
-            source.Bytecode.AddSource("withStrategies", args);
-            return source;
-        }
-
-        public GraphTraversalSource WithoutStrategies(params object[] args)
-        {
-            var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
-                new Bytecode(Bytecode));
-            source.Bytecode.AddSource("withoutStrategies", args);
-            return source;
-        }
-
-        public GraphTraversalSource WithBindings(object bindings)
-        {
-            return this;
-        }
-
-        public GraphTraversalSource WithRemote(IRemoteConnection remoteConnection)
-        {
-            var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
-                new Bytecode(Bytecode));
-            source.TraversalStrategies.Add(new RemoteStrategy(remoteConnection));
-            return source;
-        }
-        
-        public GraphTraversalSource WithComputer(string graphComputer = null, int? workers = null, string persist = null,
-            string result = null, ITraversal vertices = null, ITraversal edges = null,
-            Dictionary<string, dynamic> configuration = null)
-        {
-            return WithStrategies(new VertexProgramStrategy(graphComputer, workers, persist, result, vertices, edges, configuration));
-        }
-
-        public GraphTraversal E(params object[] args)
-        {
-            var traversal = new GraphTraversal(TraversalStrategies, new Bytecode(Bytecode));
-            traversal.Bytecode.AddStep("E", args);
-            return traversal;
-        }
-
-        public GraphTraversal V(params object[] args)
-        {
-            var traversal = new GraphTraversal(TraversalStrategies, new Bytecode(Bytecode));
-            traversal.Bytecode.AddStep("V", args);
-            return traversal;
-        }
-
-        public GraphTraversal AddV(params object[] args)
-        {
-            var traversal = new GraphTraversal(TraversalStrategies, new Bytecode(Bytecode));
-            traversal.Bytecode.AddStep("addV", args);
-            return traversal;
-        }
-
-        public GraphTraversal Inject(params object[] args)
-        {
-            var traversal = new GraphTraversal(TraversalStrategies, new Bytecode(Bytecode));
-            traversal.Bytecode.AddStep("inject", args);
-            return traversal;
-        }
-	}
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.CSharp/Process/Operator.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.CSharp/Process/Operator.cs b/gremlin-dotnet/src/Gremlin.CSharp/Process/Operator.cs
deleted file mode 100644
index 5a9f805..0000000
--- a/gremlin-dotnet/src/Gremlin.CSharp/Process/Operator.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.CSharp.Process
-{
-    public enum Operator
-    {
-        addAll,
-        and,
-        assign,
-        div,
-        max,
-        min,
-        minus,
-        mult,
-        or,
-        sum,
-        sumLong
-    }
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.CSharp/Process/Order.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.CSharp/Process/Order.cs b/gremlin-dotnet/src/Gremlin.CSharp/Process/Order.cs
deleted file mode 100644
index 1a30c7d..0000000
--- a/gremlin-dotnet/src/Gremlin.CSharp/Process/Order.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.CSharp.Process
-{
-    public enum Order
-    {
-        decr,
-        incr,
-        keyDecr,
-        keyIncr,
-        shuffle,
-        valueDecr,
-        valueIncr
-    }
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.CSharp/Process/P.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.CSharp/Process/P.cs b/gremlin-dotnet/src/Gremlin.CSharp/Process/P.cs
deleted file mode 100644
index 62282b7..0000000
--- a/gremlin-dotnet/src/Gremlin.CSharp/Process/P.cs
+++ /dev/null
@@ -1,108 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using Gremlin.Net.Process.Traversal;
-
-namespace Gremlin.CSharp.Process
-{
-    public class P
-    {
-        public static TraversalPredicate Between(params object[] args)
-        {
-            var value = args.Length == 1 ? args[0] : args;
-            return new TraversalPredicate("between", value);
-        }
-
-        public static TraversalPredicate Eq(params object[] args)
-        {
-            var value = args.Length == 1 ? args[0] : args;
-            return new TraversalPredicate("eq", value);
-        }
-
-        public static TraversalPredicate Gt(params object[] args)
-        {
-            var value = args.Length == 1 ? args[0] : args;
-            return new TraversalPredicate("gt", value);
-        }
-
-        public static TraversalPredicate Gte(params object[] args)
-        {
-            var value = args.Length == 1 ? args[0] : args;
-            return new TraversalPredicate("gte", value);
-        }
-
-        public static TraversalPredicate Inside(params object[] args)
-        {
-            var value = args.Length == 1 ? args[0] : args;
-            return new TraversalPredicate("inside", value);
-        }
-
-        public static TraversalPredicate Lt(params object[] args)
-        {
-            var value = args.Length == 1 ? args[0] : args;
-            return new TraversalPredicate("lt", value);
-        }
-
-        public static TraversalPredicate Lte(params object[] args)
-        {
-            var value = args.Length == 1 ? args[0] : args;
-            return new TraversalPredicate("lte", value);
-        }
-
-        public static TraversalPredicate Neq(params object[] args)
-        {
-            var value = args.Length == 1 ? args[0] : args;
-            return new TraversalPredicate("neq", value);
-        }
-
-        public static TraversalPredicate Not(params object[] args)
-        {
-            var value = args.Length == 1 ? args[0] : args;
-            return new TraversalPredicate("not", value);
-        }
-
-        public static TraversalPredicate Outside(params object[] args)
-        {
-            var value = args.Length == 1 ? args[0] : args;
-            return new TraversalPredicate("outside", value);
-        }
-
-        public static TraversalPredicate Test(params object[] args)
-        {
-            var value = args.Length == 1 ? args[0] : args;
-            return new TraversalPredicate("test", value);
-        }
-
-        public static TraversalPredicate Within(params object[] args)
-        {
-            var value = args.Length == 1 ? args[0] : args;
-            return new TraversalPredicate("within", value);
-        }
-
-        public static TraversalPredicate Without(params object[] args)
-        {
-            var value = args.Length == 1 ? args[0] : args;
-            return new TraversalPredicate("without", value);
-        }
-	}
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.CSharp/Process/Pick.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.CSharp/Process/Pick.cs b/gremlin-dotnet/src/Gremlin.CSharp/Process/Pick.cs
deleted file mode 100644
index 17c27d7..0000000
--- a/gremlin-dotnet/src/Gremlin.CSharp/Process/Pick.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.CSharp.Process
-{
-    public enum Pick
-    {
-        any,
-        none
-    }
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.CSharp/Process/Pop.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.CSharp/Process/Pop.cs b/gremlin-dotnet/src/Gremlin.CSharp/Process/Pop.cs
deleted file mode 100644
index 4e14d94..0000000
--- a/gremlin-dotnet/src/Gremlin.CSharp/Process/Pop.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.CSharp.Process
-{
-    public enum Pop
-    {
-        all,
-        first,
-        last
-    }
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.CSharp/Process/Scope.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.CSharp/Process/Scope.cs b/gremlin-dotnet/src/Gremlin.CSharp/Process/Scope.cs
deleted file mode 100644
index a9578ee..0000000
--- a/gremlin-dotnet/src/Gremlin.CSharp/Process/Scope.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.CSharp.Process
-{
-    public enum Scope
-    {
-        global,
-        local
-    }
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.CSharp/Process/T.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.CSharp/Process/T.cs b/gremlin-dotnet/src/Gremlin.CSharp/Process/T.cs
deleted file mode 100644
index 4bf9062..0000000
--- a/gremlin-dotnet/src/Gremlin.CSharp/Process/T.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.CSharp.Process
-{
-    public enum T
-    {
-        id,
-        key,
-        label,
-        value
-    }
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.CSharp/Process/__.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.CSharp/Process/__.cs b/gremlin-dotnet/src/Gremlin.CSharp/Process/__.cs
deleted file mode 100644
index 2db0082..0000000
--- a/gremlin-dotnet/src/Gremlin.CSharp/Process/__.cs
+++ /dev/null
@@ -1,488 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-namespace Gremlin.CSharp.Process
-{
-    public static class __
-    {
-        public static GraphTraversal Start()
-        {
-            return new GraphTraversal();
-        }
-
-        public static GraphTraversal V(params object[] args)
-        {
-            return new GraphTraversal().V(args);
-        }
-
-        public static GraphTraversal AddE(params object[] args)
-        {
-            return new GraphTraversal().AddE(args);
-        }
-
-        public static GraphTraversal AddInE(params object[] args)
-        {
-            return new GraphTraversal().AddInE(args);
-        }
-
-        public static GraphTraversal AddOutE(params object[] args)
-        {
-            return new GraphTraversal().AddOutE(args);
-        }
-
-        public static GraphTraversal AddV(params object[] args)
-        {
-            return new GraphTraversal().AddV(args);
-        }
-
-        public static GraphTraversal Aggregate(params object[] args)
-        {
-            return new GraphTraversal().Aggregate(args);
-        }
-
-        public static GraphTraversal And(params object[] args)
-        {
-            return new GraphTraversal().And(args);
-        }
-
-        public static GraphTraversal As(params object[] args)
-        {
-            return new GraphTraversal().As(args);
-        }
-
-        public static GraphTraversal Barrier(params object[] args)
-        {
-            return new GraphTraversal().Barrier(args);
-        }
-
-        public static GraphTraversal Both(params object[] args)
-        {
-            return new GraphTraversal().Both(args);
-        }
-
-        public static GraphTraversal BothE(params object[] args)
-        {
-            return new GraphTraversal().BothE(args);
-        }
-
-        public static GraphTraversal BothV(params object[] args)
-        {
-            return new GraphTraversal().BothV(args);
-        }
-
-        public static GraphTraversal Branch(params object[] args)
-        {
-            return new GraphTraversal().Branch(args);
-        }
-
-        public static GraphTraversal Cap(params object[] args)
-        {
-            return new GraphTraversal().Cap(args);
-        }
-
-        public static GraphTraversal Choose(params object[] args)
-        {
-            return new GraphTraversal().Choose(args);
-        }
-
-        public static GraphTraversal Coalesce(params object[] args)
-        {
-            return new GraphTraversal().Coalesce(args);
-        }
-
-        public static GraphTraversal Coin(params object[] args)
-        {
-            return new GraphTraversal().Coin(args);
-        }
-
-        public static GraphTraversal Constant(params object[] args)
-        {
-            return new GraphTraversal().Constant(args);
-        }
-
-        public static GraphTraversal Count(params object[] args)
-        {
-            return new GraphTraversal().Count(args);
-        }
-
-        public static GraphTraversal CyclicPath(params object[] args)
-        {
-            return new GraphTraversal().CyclicPath(args);
-        }
-
-        public static GraphTraversal Dedup(params object[] args)
-        {
-            return new GraphTraversal().Dedup(args);
-        }
-
-        public static GraphTraversal Drop(params object[] args)
-        {
-            return new GraphTraversal().Drop(args);
-        }
-
-        public static GraphTraversal Emit(params object[] args)
-        {
-            return new GraphTraversal().Emit(args);
-        }
-
-        public static GraphTraversal Filter(params object[] args)
-        {
-            return new GraphTraversal().Filter(args);
-        }
-
-        public static GraphTraversal FlatMap(params object[] args)
-        {
-            return new GraphTraversal().FlatMap(args);
-        }
-
-        public static GraphTraversal Fold(params object[] args)
-        {
-            return new GraphTraversal().Fold(args);
-        }
-
-        public static GraphTraversal Group(params object[] args)
-        {
-            return new GraphTraversal().Group(args);
-        }
-
-        public static GraphTraversal GroupCount(params object[] args)
-        {
-            return new GraphTraversal().GroupCount(args);
-        }
-
-        public static GraphTraversal GroupV3d0(params object[] args)
-        {
-            return new GraphTraversal().GroupV3d0(args);
-        }
-
-        public static GraphTraversal Has(params object[] args)
-        {
-            return new GraphTraversal().Has(args);
-        }
-
-        public static GraphTraversal HasId(params object[] args)
-        {
-            return new GraphTraversal().HasId(args);
-        }
-
-        public static GraphTraversal HasKey(params object[] args)
-        {
-            return new GraphTraversal().HasKey(args);
-        }
-
-        public static GraphTraversal HasLabel(params object[] args)
-        {
-            return new GraphTraversal().HasLabel(args);
-        }
-
-        public static GraphTraversal HasNot(params object[] args)
-        {
-            return new GraphTraversal().HasNot(args);
-        }
-
-        public static GraphTraversal HasValue(params object[] args)
-        {
-            return new GraphTraversal().HasValue(args);
-        }
-
-        public static GraphTraversal Id(params object[] args)
-        {
-            return new GraphTraversal().Id(args);
-        }
-
-        public static GraphTraversal Identity(params object[] args)
-        {
-            return new GraphTraversal().Identity(args);
-        }
-
-        public static GraphTraversal In(params object[] args)
-        {
-            return new GraphTraversal().In(args);
-        }
-
-        public static GraphTraversal InE(params object[] args)
-        {
-            return new GraphTraversal().InE(args);
-        }
-
-        public static GraphTraversal InV(params object[] args)
-        {
-            return new GraphTraversal().InV(args);
-        }
-
-        public static GraphTraversal Inject(params object[] args)
-        {
-            return new GraphTraversal().Inject(args);
-        }
-
-        public static GraphTraversal Is(params object[] args)
-        {
-            return new GraphTraversal().Is(args);
-        }
-
-        public static GraphTraversal Key(params object[] args)
-        {
-            return new GraphTraversal().Key(args);
-        }
-
-        public static GraphTraversal Label(params object[] args)
-        {
-            return new GraphTraversal().Label(args);
-        }
-
-        public static GraphTraversal Limit(params object[] args)
-        {
-            return new GraphTraversal().Limit(args);
-        }
-
-        public static GraphTraversal Local(params object[] args)
-        {
-            return new GraphTraversal().Local(args);
-        }
-
-        public static GraphTraversal Loops(params object[] args)
-        {
-            return new GraphTraversal().Loops(args);
-        }
-
-        public static GraphTraversal Map(params object[] args)
-        {
-            return new GraphTraversal().Map(args);
-        }
-
-        public static GraphTraversal MapKeys(params object[] args)
-        {
-            return new GraphTraversal().MapKeys(args);
-        }
-
-        public static GraphTraversal MapValues(params object[] args)
-        {
-            return new GraphTraversal().MapValues(args);
-        }
-
-        public static GraphTraversal Match(params object[] args)
-        {
-            return new GraphTraversal().Match(args);
-        }
-
-        public static GraphTraversal Max(params object[] args)
-        {
-            return new GraphTraversal().Max(args);
-        }
-
-        public static GraphTraversal Mean(params object[] args)
-        {
-            return new GraphTraversal().Mean(args);
-        }
-
-        public static GraphTraversal Min(params object[] args)
-        {
-            return new GraphTraversal().Min(args);
-        }
-
-        public static GraphTraversal Not(params object[] args)
-        {
-            return new GraphTraversal().Not(args);
-        }
-
-        public static GraphTraversal Optional(params object[] args)
-        {
-            return new GraphTraversal().Optional(args);
-        }
-
-        public static GraphTraversal Or(params object[] args)
-        {
-            return new GraphTraversal().Or(args);
-        }
-
-        public static GraphTraversal Order(params object[] args)
-        {
-            return new GraphTraversal().Order(args);
-        }
-
-        public static GraphTraversal OtherV(params object[] args)
-        {
-            return new GraphTraversal().OtherV(args);
-        }
-
-        public static GraphTraversal Out(params object[] args)
-        {
-            return new GraphTraversal().Out(args);
-        }
-
-        public static GraphTraversal OutE(params object[] args)
-        {
-            return new GraphTraversal().OutE(args);
-        }
-
-        public static GraphTraversal OutV(params object[] args)
-        {
-            return new GraphTraversal().OutV(args);
-        }
-
-        public static GraphTraversal Path(params object[] args)
-        {
-            return new GraphTraversal().Path(args);
-        }
-
-        public static GraphTraversal Project(params object[] args)
-        {
-            return new GraphTraversal().Project(args);
-        }
-
-        public static GraphTraversal Properties(params object[] args)
-        {
-            return new GraphTraversal().Properties(args);
-        }
-
-        public static GraphTraversal Property(params object[] args)
-        {
-            return new GraphTraversal().Property(args);
-        }
-
-        public static GraphTraversal PropertyMap(params object[] args)
-        {
-            return new GraphTraversal().PropertyMap(args);
-        }
-
-        public static GraphTraversal Range(params object[] args)
-        {
-            return new GraphTraversal().Range(args);
-        }
-
-        public static GraphTraversal Repeat(params object[] args)
-        {
-            return new GraphTraversal().Repeat(args);
-        }
-
-        public static GraphTraversal Sack(params object[] args)
-        {
-            return new GraphTraversal().Sack(args);
-        }
-
-        public static GraphTraversal Sample(params object[] args)
-        {
-            return new GraphTraversal().Sample(args);
-        }
-
-        public static GraphTraversal Select(params object[] args)
-        {
-            return new GraphTraversal().Select(args);
-        }
-
-        public static GraphTraversal SideEffect(params object[] args)
-        {
-            return new GraphTraversal().SideEffect(args);
-        }
-
-        public static GraphTraversal SimplePath(params object[] args)
-        {
-            return new GraphTraversal().SimplePath(args);
-        }
-
-        public static GraphTraversal Store(params object[] args)
-        {
-            return new GraphTraversal().Store(args);
-        }
-
-        public static GraphTraversal Subgraph(params object[] args)
-        {
-            return new GraphTraversal().Subgraph(args);
-        }
-
-        public static GraphTraversal Sum(params object[] args)
-        {
-            return new GraphTraversal().Sum(args);
-        }
-
-        public static GraphTraversal Tail(params object[] args)
-        {
-            return new GraphTraversal().Tail(args);
-        }
-
-        public static GraphTraversal TimeLimit(params object[] args)
-        {
-            return new GraphTraversal().TimeLimit(args);
-        }
-
-        public static GraphTraversal Times(params object[] args)
-        {
-            return new GraphTraversal().Times(args);
-        }
-
-        public static GraphTraversal To(params object[] args)
-        {
-            return new GraphTraversal().To(args);
-        }
-
-        public static GraphTraversal ToE(params object[] args)
-        {
-            return new GraphTraversal().ToE(args);
-        }
-
-        public static GraphTraversal ToV(params object[] args)
-        {
-            return new GraphTraversal().ToV(args);
-        }
-
-        public static GraphTraversal Tree(params object[] args)
-        {
-            return new GraphTraversal().Tree(args);
-        }
-
-        public static GraphTraversal Unfold(params object[] args)
-        {
-            return new GraphTraversal().Unfold(args);
-        }
-
-        public static GraphTraversal Union(params object[] args)
-        {
-            return new GraphTraversal().Union(args);
-        }
-
-        public static GraphTraversal Until(params object[] args)
-        {
-            return new GraphTraversal().Until(args);
-        }
-
-        public static GraphTraversal Value(params object[] args)
-        {
-            return new GraphTraversal().Value(args);
-        }
-
-        public static GraphTraversal ValueMap(params object[] args)
-        {
-            return new GraphTraversal().ValueMap(args);
-        }
-
-        public static GraphTraversal Values(params object[] args)
-        {
-            return new GraphTraversal().Values(args);
-        }
-
-        public static GraphTraversal Where(params object[] args)
-        {
-            return new GraphTraversal().Where(args);
-        }
-	}
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.CSharp/Structure/Graph.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.CSharp/Structure/Graph.cs b/gremlin-dotnet/src/Gremlin.CSharp/Structure/Graph.cs
deleted file mode 100644
index 3ae5bef..0000000
--- a/gremlin-dotnet/src/Gremlin.CSharp/Structure/Graph.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using Gremlin.CSharp.Process;
-
-namespace Gremlin.CSharp.Structure
-{
-    public class Graph
-    {
-        public GraphTraversalSource Traversal()
-        {
-            return new GraphTraversalSource();
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net.Process/Gremlin.Net.Process.csproj
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net.Process/Gremlin.Net.Process.csproj b/gremlin-dotnet/src/Gremlin.Net.Process/Gremlin.Net.Process.csproj
deleted file mode 100644
index 5e2d7fc..0000000
--- a/gremlin-dotnet/src/Gremlin.Net.Process/Gremlin.Net.Process.csproj
+++ /dev/null
@@ -1,24 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>
-    <Version>3.2.5-SNAPSHOT</Version>
-    <TargetFramework>netstandard1.3</TargetFramework>
-    <GeneratePackageOnBuild>False</GeneratePackageOnBuild>
-    <PackageProjectUrl>http://tinkerpop.apache.org</PackageProjectUrl>
-    <PackageLicenseUrl>https://github.com/apache/tinkerpop/blob/master/LICENSE</PackageLicenseUrl>
-    <RepositoryUrl>https://github.com/apache/tinkerpop</RepositoryUrl>
-    <Authors>Apache TinkerPop</Authors>
-    <PackageTags>gremlin;tinkerpop;gremlin-dotnet</PackageTags>
-    <Description>This package provides implementations and interfaces for Gremlin language variants.</Description>
-  </PropertyGroup>
-
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
-    <DocumentationFile></DocumentationFile>
-  </PropertyGroup>
-
-  <ItemGroup>
-    <PackageReference Include="Microsoft.CSharp" Version="4.3.0" />
-    <PackageReference Include="System.Dynamic.Runtime" Version="4.3.0" />
-  </ItemGroup>
-
-</Project>
\ No newline at end of file


[19/50] [abbrv] tinkerpop git commit: TINKERPOP-1552 Removed the dotnet generator module

Posted by sp...@apache.org.
TINKERPOP-1552 Removed the dotnet generator module

Moved GLV generation to the gremlin-dotnet pom and gmaveplus plugin.


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

Branch: refs/heads/master
Commit: d0d9e138c77f5b0916a29b06862f45f8e9ffc860
Parents: 88415ee
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Jun 13 13:07:55 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jul 13 13:46:48 2017 -0400

----------------------------------------------------------------------
 gremlin-dotnet-generator/pom.xml                |  75 ----
 .../dotnet/AnonymousTraversalGenerator.groovy   |  98 -----
 .../gremlin/dotnet/CommonContentHelper.groovy   |  49 ---
 .../gremlin/dotnet/EnumGenerator.groovy         | 112 ------
 .../gremlin/dotnet/GenerateGremlinDotNet.groovy |  32 --
 .../dotnet/GraphTraversalGenerator.groovy       |  90 -----
 .../dotnet/GraphTraversalSourceGenerator.groovy | 142 -------
 .../gremlin/dotnet/PredicateGenerator.groovy    |  64 ---
 .../gremlin/dotnet/SymbolHelper.groovy          |  89 -----
 gremlin-dotnet/glv/AnonymousTraversal.template  |  45 +++
 gremlin-dotnet/glv/Enum.template                |  33 ++
 gremlin-dotnet/glv/GraphTraversal.template      |  64 +++
 .../glv/GraphTraversalSource.template           |  88 ++++
 gremlin-dotnet/glv/NamingConversions.template   |  52 +++
 gremlin-dotnet/glv/P.template                   |  39 ++
 gremlin-dotnet/pom.xml                          | 229 ++++++++++-
 .../Gremlin.Net/Process/Traversal/Barrier.cs    |   5 +-
 .../Process/Traversal/Cardinality.cs            |   9 +-
 .../src/Gremlin.Net/Process/Traversal/Column.cs |   8 +-
 .../Gremlin.Net/Process/Traversal/Direction.cs  |   9 +-
 .../Process/Traversal/GraphSONVersion.cs        |  33 ++
 .../Process/Traversal/GraphTraversal.cs         | 399 ++++++++++---------
 .../Process/Traversal/GraphTraversalSource.cs   |  34 +-
 .../Process/Traversal/GryoVersion.cs            |  33 ++
 .../Process/Traversal/NamingConversions.cs      |  67 ++--
 .../Gremlin.Net/Process/Traversal/Operator.cs   |  17 +-
 .../src/Gremlin.Net/Process/Traversal/Order.cs  |  13 +-
 .../src/Gremlin.Net/Process/Traversal/P.cs      |   8 +-
 .../src/Gremlin.Net/Process/Traversal/Pick.cs   |   8 +-
 .../src/Gremlin.Net/Process/Traversal/Pop.cs    |   9 +-
 .../src/Gremlin.Net/Process/Traversal/Scope.cs  |   8 +-
 .../src/Gremlin.Net/Process/Traversal/T.cs      |  10 +-
 .../src/Gremlin.Net/Process/Traversal/__.cs     |   6 +-
 gremlin-dotnet/src/pom.xml                      |  17 +
 gremlin-dotnet/test/pom.xml                     |  16 +
 pom.xml                                         |   1 -
 36 files changed, 967 insertions(+), 1044 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet-generator/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet-generator/pom.xml b/gremlin-dotnet-generator/pom.xml
deleted file mode 100644
index a0a9ff6..0000000
--- a/gremlin-dotnet-generator/pom.xml
+++ /dev/null
@@ -1,75 +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.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.apache.tinkerpop</groupId>
-        <artifactId>tinkerpop</artifactId>
-        <version>3.2.5-SNAPSHOT</version>
-    </parent>
-    <artifactId>gremlin-dotnet-generator</artifactId>
-    <name>Apache TinkerPop :: Gremlin-DotNet Generator</name>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.tinkerpop</groupId>
-            <artifactId>gremlin-core</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.codehaus.groovy</groupId>
-            <artifactId>groovy</artifactId>
-            <version>${groovy.version}</version>
-            <classifier>indy</classifier>
-        </dependency>
-    </dependencies>
-    <build>
-        <directory>${basedir}/target</directory>
-        <finalName>${project.artifactId}-${project.version}</finalName>
-        <plugins>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>exec-maven-plugin</artifactId>
-                <version>1.2.1</version>
-                <executions>
-                    <execution>
-                        <id>generate-dotnet</id>
-                        <phase>generate-test-resources</phase>
-                        <goals>
-                            <goal>java</goal>
-                        </goals>
-                        <configuration>
-                            <mainClass>org.apache.tinkerpop.gremlin.dotnet.GenerateGremlinDotNet</mainClass>
-                            <arguments>
-                                <argument>${project.parent.basedir}/gremlin-dotnet/src/Gremlin.Net</argument>
-                            </arguments>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.gmavenplus</groupId>
-                <artifactId>gmavenplus-plugin</artifactId>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
-</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/AnonymousTraversalGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/AnonymousTraversalGenerator.groovy b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/AnonymousTraversalGenerator.groovy
deleted file mode 100644
index b65b2b0..0000000
--- a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/AnonymousTraversalGenerator.groovy
+++ /dev/null
@@ -1,98 +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.dotnet
-
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
-
-import java.lang.reflect.Modifier
-
-class AnonymousTraversalGenerator {
-
-    private static final Map<String, String[]> METHODS_WITH_SPECIFIC_TYPES = new HashMap<>();
-
-    static {
-        String[] useE2 = ["E2", "E2"];
-        METHODS_WITH_SPECIFIC_TYPES.put("constant", useE2);
-        METHODS_WITH_SPECIFIC_TYPES.put("limit", useE2);
-        METHODS_WITH_SPECIFIC_TYPES.put("mean", useE2);
-        METHODS_WITH_SPECIFIC_TYPES.put("optional", useE2);
-        METHODS_WITH_SPECIFIC_TYPES.put("range", useE2);
-        METHODS_WITH_SPECIFIC_TYPES.put("select", ["IDictionary<string, E2>", "E2"] as String[]);
-        METHODS_WITH_SPECIFIC_TYPES.put("sum", useE2);
-        METHODS_WITH_SPECIFIC_TYPES.put("tail", useE2);
-        METHODS_WITH_SPECIFIC_TYPES.put("tree", ["object"] as String[]);
-        METHODS_WITH_SPECIFIC_TYPES.put("unfold", useE2);
-    }
-
-    public static void create(final String anonymousTraversalFile) {
-
-
-        final StringBuilder csharpClass = new StringBuilder()
-
-        csharpClass.append(CommonContentHelper.getLicense())
-
-        csharpClass.append(
-"""
-using System.Collections.Generic;
-using Gremlin.Net.Structure;
-
-namespace Gremlin.Net.Process.Traversal
-{
-    public static class __
-    {
-        public static GraphTraversal<object, object> Start()
-        {
-            return new GraphTraversal<object, object>();
-        }
-""")
-        __.getMethods().
-                findAll { GraphTraversal.class.equals(it.returnType) }.
-                findAll { Modifier.isStatic(it.getModifiers()) }.
-                findAll { !it.name.equals("__") && !it.name.equals("start") }.
-                groupBy { it.name }.
-                // Select unique by name, with the most amount of parameters
-                collect { it.value.sort { a, b -> b.parameterCount <=> a.parameterCount }.first() }.
-                sort { it.name }.
-                forEach { javaMethod ->
-                    String sharpMethodName = SymbolHelper.toCSharp(javaMethod.name);
-                    String[] typeNames = SymbolHelper.getJavaParameterTypeNames(javaMethod);
-                    def t2 = SymbolHelper.toCSharpType(typeNames[1]);
-                    def tParam = SymbolHelper.getCSharpGenericTypeParam(t2);
-                    def specificTypes = METHODS_WITH_SPECIFIC_TYPES.get(javaMethod.name);
-                    if (specificTypes) {
-                        t2 = specificTypes[0];
-                        tParam = specificTypes.length > 1 ? "<" + specificTypes[1] + ">" : "";
-                    }
-                    csharpClass.append(
-"""
-        public static GraphTraversal<object, $t2> $sharpMethodName$tParam(params object[] args)
-        {
-            return new GraphTraversal<object, object>().$sharpMethodName$tParam(args);
-        }
-""")
-                }
-        csharpClass.append("    }\n}")
-
-        final File file = new File(anonymousTraversalFile);
-        file.delete()
-        csharpClass.eachLine { file.append(it + "\n") }
-    }
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/CommonContentHelper.groovy
----------------------------------------------------------------------
diff --git a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/CommonContentHelper.groovy b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/CommonContentHelper.groovy
deleted file mode 100644
index 825e230..0000000
--- a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/CommonContentHelper.groovy
+++ /dev/null
@@ -1,49 +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.dotnet
-
-public final class CommonContentHelper {
-
-    public static String getLicense() {
-        return """#region License
-
-/*
- * 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.
- */
-
-#endregion
-"""
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/EnumGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/EnumGenerator.groovy b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/EnumGenerator.groovy
deleted file mode 100644
index 840b604..0000000
--- a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/EnumGenerator.groovy
+++ /dev/null
@@ -1,112 +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.dotnet
-
-import org.apache.tinkerpop.gremlin.util.CoreImports
-import org.apache.tinkerpop.gremlin.structure.Direction
-
-class EnumGenerator {
-
-    public static void create(final String enumDirectory) {
-
-        Map<String, String> enumCSharpToJavaNames = new HashMap<String, String>();
-        for (final Class<? extends Enum> enumClass : CoreImports.getClassImports()
-                .findAll { Enum.class.isAssignableFrom(it) }
-                .sort { a, b -> a.getSimpleName() <=> b.getSimpleName() }
-                .collect()) {
-            createEnum(enumDirectory, enumClass, enumCSharpToJavaNames)
-        }
-
-        // Write a file containing the equivalence in names between Java and C#
-        final String enumCSharpToJavaFile = "$enumDirectory/NamingConversions.cs"
-        final File file = new File(enumCSharpToJavaFile);
-        file.delete();
-        file.append(CommonContentHelper.getLicense());
-        file.append("""
-using System.Collections.Generic;
-
-namespace Gremlin.Net.Process.Traversal
-{
-    internal static class NamingConversions
-    {
-        /// <summary>
-        /// Gets the Java name equivalent for a given enum value
-        /// </summary>
-        internal static string GetEnumJavaName(string typeName, string value)
-        {
-            var key = \$"{typeName}.{value}";
-            string javaName;
-            if (!CSharpToJavaEnums.TryGetValue(key, out javaName))
-            {
-                throw new KeyNotFoundException(\$"Java name for {key} not found");
-            }
-            return javaName;
-        }
-
-        internal static readonly IDictionary<string, string> CSharpToJavaEnums = new Dictionary<string, string>
-        {
-"""     );
-        def lastIndex = (enumCSharpToJavaNames.size() - 1);
-        enumCSharpToJavaNames.eachWithIndex{ node, i ->
-            file.append("""            {"$node.key", "$node.value"}${i == lastIndex ? "" : ","}\n""")
-        }
-        file.append("        };\n    }\n}");
-
-    }
-
-    public static String toCSharpName(final Class<? extends Enum> enumClass, String itemName) {
-        if (enumClass.equals(Direction.class)) {
-            itemName = itemName.toLowerCase();
-        }
-        return itemName.substring(0, 1).toUpperCase() + itemName.substring(1);
-    }
-
-    private static void createEnum(final String enumDirectory, final Class<? extends Enum> enumClass,
-                                   final Map<String, String> csharpToJava) {
-        final StringBuilder csharpEnum = new StringBuilder()
-
-        csharpEnum.append(CommonContentHelper.getLicense())
-
-        csharpEnum.append(
-                """
-namespace Gremlin.Net.Process.Traversal
-{
-    public enum ${enumClass.getSimpleName()}
-    {
-""")
-        enumClass.getEnumConstants().
-                sort { a, b -> a.name() <=> b.name() }.
-                each { value ->
-                    def csharpName = toCSharpName(enumClass, value.name());
-                    csharpEnum.append("        $csharpName,\n");
-                    csharpToJava.put(enumClass.simpleName + "." + csharpName, value.name());
-                }
-        csharpEnum.deleteCharAt(csharpEnum.length() - 2)
-
-        csharpEnum.append("    }\n")
-        csharpEnum.append("}")
-
-        final String enumFileName = "${enumDirectory}/${enumClass.getSimpleName()}.cs"
-        final File file = new File(enumFileName);
-        file.delete()
-        csharpEnum.eachLine { file.append(it + "\n") }
-    }
-}
-

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GenerateGremlinDotNet.groovy
----------------------------------------------------------------------
diff --git a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GenerateGremlinDotNet.groovy b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GenerateGremlinDotNet.groovy
deleted file mode 100644
index 0d09d5b..0000000
--- a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GenerateGremlinDotNet.groovy
+++ /dev/null
@@ -1,32 +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.dotnet
-
-public class GenerateGremlinDotNet {
-
-    public static void main(String[] args) {
-        final String dotnetDirectory = args[0]
-        GraphTraversalSourceGenerator.create(dotnetDirectory + "/Process/Traversal/" + "GraphTraversalSource.cs")
-        GraphTraversalGenerator.create(dotnetDirectory + "/Process/Traversal/" + "GraphTraversal.cs")
-        AnonymousTraversalGenerator.create(dotnetDirectory + "/Process/Traversal/" + "__.cs")
-        EnumGenerator.create(dotnetDirectory + "/Process/Traversal/")
-        PredicateGenerator.create(dotnetDirectory + "/Process/Traversal/" + "P.cs")
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GraphTraversalGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GraphTraversalGenerator.groovy b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GraphTraversalGenerator.groovy
deleted file mode 100644
index d3bade5..0000000
--- a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GraphTraversalGenerator.groovy
+++ /dev/null
@@ -1,90 +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.dotnet
-
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal
-
-class GraphTraversalGenerator {
-
-    public static void create(final String graphTraversalFile) {
-
-        final StringBuilder csharpClass = new StringBuilder()
-
-        csharpClass.append(CommonContentHelper.getLicense())
-
-        csharpClass.append(
-"""
-using System.Collections.Generic;
-using Gremlin.Net.Structure;
-
-namespace Gremlin.Net.Process.Traversal
-{
-    public class GraphTraversal<S, E> : DefaultTraversal<S, E>
-    {
-        public GraphTraversal()
-            : this(new List<ITraversalStrategy>(), new Bytecode())
-        {
-        }
-
-        public GraphTraversal(ICollection<ITraversalStrategy> traversalStrategies, Bytecode bytecode)
-        {
-            TraversalStrategies = traversalStrategies;
-            Bytecode = bytecode;
-        }
-
-        private static GraphTraversal<S2, E2> Wrap<S2, E2>(GraphTraversal<S, E> traversal)
-        {
-            if (typeof(S2) == typeof(S) && typeof(E2) == typeof(E))
-            {
-                return traversal as GraphTraversal<S2, E2>;
-            }
-            // New wrapper
-            return new GraphTraversal<S2, E2>(traversal.TraversalStrategies, traversal.Bytecode);
-        }
-
-""")
-        GraphTraversal.getMethods().
-                findAll { GraphTraversal.class.equals(it.returnType) }.
-                findAll { !it.name.equals("clone") && !it.name.equals("iterate") }.
-                groupBy { it.name }.
-                // Select unique by name, with the most amount of parameters
-                collect { it.value.sort { a, b -> b.parameterCount <=> a.parameterCount }.first() }.
-                sort { it.name }.
-                forEach { javaMethod ->
-                    String[] typeNames = SymbolHelper.getJavaParameterTypeNames(javaMethod);
-                    def t1 = SymbolHelper.toCSharpType(typeNames[0]);
-                    def t2 = SymbolHelper.toCSharpType(typeNames[1]);
-                    def tParam = SymbolHelper.getCSharpGenericTypeParam(t2);
-                    csharpClass.append(
-"""
-        public GraphTraversal<$t1, $t2> ${SymbolHelper.toCSharp(javaMethod.name)}$tParam(params object[] args)
-        {
-            Bytecode.AddStep("$javaMethod.name", args);
-            return Wrap<$t1, $t2>(this);
-        }
-""")
-                }
-        csharpClass.append("    }\n}")
-
-        final File file = new File(graphTraversalFile);
-        file.delete()
-        csharpClass.eachLine { file.append(it + "\n") }
-    }
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GraphTraversalSourceGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GraphTraversalSourceGenerator.groovy b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GraphTraversalSourceGenerator.groovy
deleted file mode 100644
index 7cb41da..0000000
--- a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GraphTraversalSourceGenerator.groovy
+++ /dev/null
@@ -1,142 +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.dotnet
-
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal
-import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource
-import java.lang.reflect.*
-
-class GraphTraversalSourceGenerator {
-
-    public static void create(final String graphTraversalSourceFile) {
-
-        final StringBuilder csharpClass = new StringBuilder()
-
-        csharpClass.append(CommonContentHelper.getLicense())
-
-        csharpClass.append(
-"""
-using System.Collections.Generic;
-using Gremlin.Net.Process.Remote;
-using Gremlin.Net.Process.Traversal.Strategy.Decoration;
-using Gremlin.Net.Structure;
-
-namespace Gremlin.Net.Process.Traversal
-{
-    public class GraphTraversalSource
-    {
-        public ICollection<ITraversalStrategy> TraversalStrategies { get; set; }
-        public Bytecode Bytecode { get; set; }
-
-         public GraphTraversalSource()
-            : this(new List<ITraversalStrategy>(), new Bytecode())
-        {
-        }
-
-        public GraphTraversalSource(ICollection<ITraversalStrategy> traversalStrategies, Bytecode bytecode)
-        {
-            TraversalStrategies = traversalStrategies;
-            Bytecode = bytecode;
-        }
-"""
-        )
-
-        GraphTraversalSource.getMethods(). // SOURCE STEPS
-                findAll { GraphTraversalSource.class.equals(it.returnType) }.
-                findAll {
-                    !it.name.equals("clone") &&
-                            // replace by TraversalSource.Symbols.XXX
-                            !it.name.equals("withBindings") &&
-                            !it.name.equals("withRemote") &&
-                            !it.name.equals("withComputer")
-                }.
-                collect { it.name }.
-                unique().
-                sort { a, b -> a <=> b }.
-                forEach { javaMethodName ->
-                    String sharpMethodName = SymbolHelper.toCSharp(javaMethodName)
-
-                    csharpClass.append(
-"""
-        public GraphTraversalSource ${sharpMethodName}(params object[] args)
-        {
-            var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
-                new Bytecode(Bytecode));
-            source.Bytecode.AddSource("${javaMethodName}\", args);
-            return source;
-        }
-""")
-                }
-
-        csharpClass.append(
-                """
-        public GraphTraversalSource WithBindings(object bindings)
-        {
-            return this;
-        }
-
-        public GraphTraversalSource WithRemote(IRemoteConnection remoteConnection)
-        {
-            var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
-                new Bytecode(Bytecode));
-            source.TraversalStrategies.Add(new RemoteStrategy(remoteConnection));
-            return source;
-        }
-        
-        public GraphTraversalSource WithComputer(string graphComputer = null, int? workers = null, string persist = null,
-            string result = null, ITraversal vertices = null, ITraversal edges = null,
-            Dictionary<string, dynamic> configuration = null)
-        {
-            return WithStrategies(new VertexProgramStrategy(graphComputer, workers, persist, result, vertices, edges, configuration));
-        }
-""")
-
-        GraphTraversalSource.getMethods().
-                findAll { GraphTraversal.class.equals(it.returnType) }.
-                unique{ a -> a.name }.
-                sort { a, b -> a.name <=> b.name }.
-                forEach { javaMethod ->
-                    String sharpMethodName = SymbolHelper.toCSharp(javaMethod.name);
-                    Type[] typeArguments = ((ParameterizedType)javaMethod.getGenericReturnType()).actualTypeArguments;
-                    if (typeArguments.length != 2 || !(typeArguments[0] instanceof Class)) {
-                        return;
-                    }
-                    def returnType = """GraphTraversal<${
-                        ((Class)typeArguments[0]).getSimpleName()}, ${((Class)typeArguments[1]).getSimpleName()}>""";
-
-
-                    csharpClass.append(
-                            """
-        public ${returnType} ${sharpMethodName}(params object[] args)
-        {
-            var traversal = new ${returnType}(TraversalStrategies, new Bytecode(Bytecode));
-            traversal.Bytecode.AddStep("${javaMethod.name}\", args);
-            return traversal;
-        }
-""")
-                }
-
-        csharpClass.append("    }\n}")
-
-        final File file = new File(graphTraversalSourceFile);
-        file.delete()
-        csharpClass.eachLine { file.append(it + "\n") }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/PredicateGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/PredicateGenerator.groovy b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/PredicateGenerator.groovy
deleted file mode 100644
index c5c9c10..0000000
--- a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/PredicateGenerator.groovy
+++ /dev/null
@@ -1,64 +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.dotnet
-
-import org.apache.tinkerpop.gremlin.process.traversal.P
-
-import java.lang.reflect.Modifier
-
-class PredicateGenerator {
-
-    public static void create(final String predicateFile) {
-
-        final StringBuilder csharpClass = new StringBuilder()
-
-        csharpClass.append(CommonContentHelper.getLicense())
-
-        csharpClass.append(
-"""
-
-namespace Gremlin.Net.Process.Traversal
-{
-    public class P
-    {""")
-        P.class.getMethods().
-                findAll { Modifier.isStatic(it.getModifiers()) }.
-                findAll { P.class.isAssignableFrom(it.returnType) }.
-                collect { it.name }.
-                unique().
-                sort { a, b -> a <=> b }.
-                each { javaMethodName ->
-                    String sharpMethodName = SymbolHelper.toCSharp(javaMethodName)
-                    csharpClass.append(
-"""
-        public static TraversalPredicate ${sharpMethodName}(params object[] args)
-        {
-            var value = args.Length == 1 ? args[0] : args;
-            return new TraversalPredicate("${javaMethodName}", value);
-        }
-""")
-                }
-        csharpClass.append("    }\n}")
-
-        final File file = new File(predicateFile)
-        file.delete()
-        csharpClass.eachLine { file.append(it + "\n") }
-    }
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/SymbolHelper.groovy
----------------------------------------------------------------------
diff --git a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/SymbolHelper.groovy b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/SymbolHelper.groovy
deleted file mode 100644
index c041062..0000000
--- a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/SymbolHelper.groovy
+++ /dev/null
@@ -1,89 +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.dotnet
-
-import java.lang.reflect.Method;
-import java.lang.reflect.ParameterizedType;
-
-public final class SymbolHelper {
-
-    private static final Map<String, String> TO_CSHARP_TYPE_MAP = new HashMap<>();
-
-    static {
-        TO_CSHARP_TYPE_MAP.put("Long", "long");
-        TO_CSHARP_TYPE_MAP.put("Integer", "int");
-        TO_CSHARP_TYPE_MAP.put("String", "string");
-        TO_CSHARP_TYPE_MAP.put("Object", "object");
-        TO_CSHARP_TYPE_MAP.put("java.util.Map<java.lang.String, E2>", "IDictionary<string, E2>");
-        TO_CSHARP_TYPE_MAP.put("java.util.Map<java.lang.String, B>", "IDictionary<string, E2>")
-        TO_CSHARP_TYPE_MAP.put("java.util.List<E>", "IList<E>");
-        TO_CSHARP_TYPE_MAP.put("java.util.List<A>", "IList<object>");
-        TO_CSHARP_TYPE_MAP.put("java.util.Map<K, V>", "IDictionary<K, V>");
-        TO_CSHARP_TYPE_MAP.put("java.util.Collection<E2>", "ICollection<E2>");
-        TO_CSHARP_TYPE_MAP.put("java.util.Collection<B>", "ICollection<E2>")
-        TO_CSHARP_TYPE_MAP.put("java.util.Map<K, java.lang.Long>", "IDictionary<K, long>");
-        TO_CSHARP_TYPE_MAP.put("TraversalMetrics", "E2");
-    }
-
-    public static String toCSharp(final String symbol) {
-        return (String) Character.toUpperCase(symbol.charAt(0)) + symbol.substring(1)
-    }
-
-    public static String toJava(final String symbol) {
-        return (String) Character.toLowerCase(symbol.charAt(0)) + symbol.substring(1)
-    }
-
-    public static String toCSharpType(final String name) {
-        String typeName = TO_CSHARP_TYPE_MAP.getOrDefault(name, name);
-        if (typeName.equals(name) && (typeName.contains("? extends") || typeName.equals("Tree"))) {
-            typeName = "E2";
-        }
-        return typeName;
-    }
-
-    public static String[] getJavaParameterTypeNames(final Method method) {
-        def typeArguments = ((ParameterizedType)method.genericReturnType).actualTypeArguments;
-        return typeArguments.
-                collect { (it instanceof Class) ? ((Class)it).simpleName : it.typeName }.
-                collect { name ->
-                    if (name.equals("A")) {
-                        name = "object";
-                    }
-                    else if (name.equals("B")) {
-                        name = "E2";
-                    }
-                    name;
-                };
-    }
-
-    public static String getCSharpGenericTypeParam(String typeName) {
-        def tParam = "";
-        if (typeName.contains("E2")) {
-            tParam = "<E2>";
-        }
-        else if (typeName.contains("<K, V>")) {
-            tParam = "<K, V>";
-        }
-        else if (typeName.contains("<K, ")) {
-            tParam = "<K>";
-        }
-        return tParam;
-    }
-}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet/glv/AnonymousTraversal.template
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/glv/AnonymousTraversal.template b/gremlin-dotnet/glv/AnonymousTraversal.template
new file mode 100644
index 0000000..33002bf
--- /dev/null
+++ b/gremlin-dotnet/glv/AnonymousTraversal.template
@@ -0,0 +1,45 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System.Collections.Generic;
+using Gremlin.Net.Structure;
+
+namespace Gremlin.Net.Process.Traversal
+{
+    /// <summary>
+    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
+    /// </summary>
+    public static class __
+    {
+        public static GraphTraversal<object, object> Start()
+        {
+            return new GraphTraversal<object, object>();
+        }
+<% anonStepMethods.each { method -> %>
+        public static GraphTraversal<object, <%= method.t2 %>> <%= toCSharpMethodName.call(method.methodName) %><%= method.tParam %>(params object[] args)
+        {
+            return new GraphTraversal<object, object>().<%= toCSharpMethodName.call(method.methodName) %><%= method.tParam %>(args);
+        }
+<% } %>
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet/glv/Enum.template
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/glv/Enum.template b/gremlin-dotnet/glv/Enum.template
new file mode 100644
index 0000000..664db45
--- /dev/null
+++ b/gremlin-dotnet/glv/Enum.template
@@ -0,0 +1,33 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal
+{
+    /// <summary>
+    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
+    /// </summary>
+    public enum <%= enumClass.simpleName %>
+    {
+        <%= constants %>
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet/glv/GraphTraversal.template
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/glv/GraphTraversal.template b/gremlin-dotnet/glv/GraphTraversal.template
new file mode 100644
index 0000000..b782ffa
--- /dev/null
+++ b/gremlin-dotnet/glv/GraphTraversal.template
@@ -0,0 +1,64 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System.Collections.Generic;
+using Gremlin.Net.Structure;
+
+namespace Gremlin.Net.Process.Traversal
+{
+    /// <summary>
+    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
+    /// </summary>
+    public class GraphTraversal<S, E> : DefaultTraversal<S, E>
+    {
+        public GraphTraversal()
+            : this(new List<ITraversalStrategy>(), new Bytecode())
+        {
+        }
+
+        public GraphTraversal(ICollection<ITraversalStrategy> traversalStrategies, Bytecode bytecode)
+        {
+            TraversalStrategies = traversalStrategies;
+            Bytecode = bytecode;
+        }
+
+        private static GraphTraversal<S2, E2> Wrap<S2, E2>(GraphTraversal<S, E> traversal)
+        {
+            if (typeof(S2) == typeof(S) && typeof(E2) == typeof(E))
+            {
+                return traversal as GraphTraversal<S2, E2>;
+            }
+            // New wrapper
+            return new GraphTraversal<S2, E2>(traversal.TraversalStrategies, traversal.Bytecode);
+        }
+
+<% graphStepMethods.each { method -> %>
+        public GraphTraversal< <%= method.t1 %> , <%= method.t2 %> > <%= toCSharpMethodName.call(method.methodName) %><%= method.tParam %> (params object[] args)
+        {
+            Bytecode.AddStep("<%= method.methodName %>", args);
+            return Wrap< <%= method.t1 %> , <%= method.t2 %> >(this);
+        }
+<% } %>
+
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet/glv/GraphTraversalSource.template
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/glv/GraphTraversalSource.template b/gremlin-dotnet/glv/GraphTraversalSource.template
new file mode 100644
index 0000000..880f793
--- /dev/null
+++ b/gremlin-dotnet/glv/GraphTraversalSource.template
@@ -0,0 +1,88 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System.Collections.Generic;
+using Gremlin.Net.Process.Remote;
+using Gremlin.Net.Process.Traversal.Strategy.Decoration;
+using Gremlin.Net.Structure;
+
+namespace Gremlin.Net.Process.Traversal
+{
+    /// <summary>
+    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
+    /// </summary>
+    public class GraphTraversalSource
+    {
+        public ICollection<ITraversalStrategy> TraversalStrategies { get; set; }
+        public Bytecode Bytecode { get; set; }
+
+         public GraphTraversalSource()
+            : this(new List<ITraversalStrategy>(), new Bytecode())
+        {
+        }
+
+        public GraphTraversalSource(ICollection<ITraversalStrategy> traversalStrategies, Bytecode bytecode)
+        {
+            TraversalStrategies = traversalStrategies;
+            Bytecode = bytecode;
+        }
+
+<% sourceStepMethods.each{ method -> %>
+        public GraphTraversalSource <%= toCSharpMethodName.call(method) %>(params object[] args)
+        {
+            var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
+                                                  new Bytecode(Bytecode));
+            source.Bytecode.AddSource("<%= method %>", args);
+            return source;
+        }
+<% } %>
+        public GraphTraversalSource WithBindings(object bindings)
+        {
+            return this;
+        }
+
+        public GraphTraversalSource WithRemote(IRemoteConnection remoteConnection)
+        {
+            var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
+                new Bytecode(Bytecode));
+            source.TraversalStrategies.Add(new RemoteStrategy(remoteConnection));
+            return source;
+        }
+
+        public GraphTraversalSource WithComputer(string graphComputer = null, int? workers = null, string persist = null,
+            string result = null, ITraversal vertices = null, ITraversal edges = null,
+            Dictionary<string, dynamic> configuration = null)
+        {
+            return WithStrategies(new VertexProgramStrategy(graphComputer, workers, persist, result, vertices, edges, configuration));
+        }
+
+<% sourceSpawnMethods.each { method -> %>
+        public GraphTraversal< <%= method.typeArguments.join(",") %> > <%= toCSharpMethodName.call(method.methodName) %>(params object[] args)
+        {
+            var traversal = new GraphTraversal< <%= method.typeArguments.join(",") %> >(TraversalStrategies, new Bytecode(Bytecode));
+            traversal.Bytecode.AddStep("<%= method.methodName %>", args);
+            return traversal;
+        }
+<% } %>
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet/glv/NamingConversions.template
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/glv/NamingConversions.template b/gremlin-dotnet/glv/NamingConversions.template
new file mode 100644
index 0000000..b997dee
--- /dev/null
+++ b/gremlin-dotnet/glv/NamingConversions.template
@@ -0,0 +1,52 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System.Collections.Generic;
+
+namespace Gremlin.Net.Process.Traversal
+{
+    /// <summary>
+    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
+    /// </summary>
+    internal static class NamingConversions
+    {
+        /// <summary>
+        /// Gets the Java name equivalent for a given enum value
+        /// </summary>
+        internal static string GetEnumJavaName(string typeName, string value)
+        {
+            var key = \$"{typeName}.{value}";
+            string javaName;
+            if (!CSharpToJavaEnums.TryGetValue(key, out javaName))
+            {
+                throw new KeyNotFoundException(\$"Java name for {key} not found");
+            }
+            return javaName;
+        }
+
+        internal static readonly IDictionary<string, string> CSharpToJavaEnums = new Dictionary<string, string>
+        {
+            <%= body %>
+        };
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet/glv/P.template
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/glv/P.template b/gremlin-dotnet/glv/P.template
new file mode 100644
index 0000000..5be695d
--- /dev/null
+++ b/gremlin-dotnet/glv/P.template
@@ -0,0 +1,39 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal
+{
+    /// <summary>
+    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
+    /// </summary>
+    public class P
+    {
+<% pmethods.each { method -> %>
+        public static TraversalPredicate <%= toCSharpMethodName.call(method) %>(params object[] args)
+        {
+            var value = args.Length == 1 ? args[0] : args;
+            return new TraversalPredicate("<%= method %>", value);
+        }
+<% } %>
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/pom.xml b/gremlin-dotnet/pom.xml
index ea3ae12..4bdf1e3 100644
--- a/gremlin-dotnet/pom.xml
+++ b/gremlin-dotnet/pom.xml
@@ -28,8 +28,8 @@ limitations under the License.
     <packaging>pom</packaging>
 
     <modules>
-        <module>test</module>
         <module>src</module>
+        <module>test</module>
     </modules>
 
     <build>
@@ -40,6 +40,233 @@ limitations under the License.
                 <extensions>true</extensions>
                 <version>0.14</version>
             </plugin>
+            <plugin>
+                <groupId>org.codehaus.gmavenplus</groupId>
+                <artifactId>gmavenplus-plugin</artifactId>
+                <dependencies>
+                    <dependency>
+                        <groupId>org.apache.tinkerpop</groupId>
+                        <artifactId>gremlin-core</artifactId>
+                        <version>${project.version}</version>
+                        <scope>runtime</scope>
+                    </dependency>
+                    <dependency>
+                        <groupId>org.codehaus.groovy</groupId>
+                        <artifactId>groovy-all</artifactId>
+                        <version>${groovy.version}</version>
+                        <scope>runtime</scope>
+                    </dependency>
+                    <dependency>
+                        <groupId>log4j</groupId>
+                        <artifactId>log4j</artifactId>
+                        <version>1.2.17</version>
+                        <scope>runtime</scope>
+                    </dependency>
+                </dependencies>
+                <executions>
+                    <execution>
+                        <id>generate-dsl</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>execute</goal>
+                        </goals>
+                        <configuration>
+                            <scripts>
+                                <script><![CDATA[
+import org.apache.tinkerpop.gremlin.jsr223.CoreImports
+import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource
+import org.apache.tinkerpop.gremlin.process.traversal.P
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
+import org.apache.tinkerpop.gremlin.structure.Direction
+import java.lang.reflect.Modifier
+
+def toCSharpTypeMap = ["Long": "long",
+                       "Integer": "int",
+                       "String": "string",
+                       "Object": "object",
+                       "java.util.Map<java.lang.String, E2>": "IDictionary<string, E2>",
+                       "java.util.Map<java.lang.String, B>": "IDictionary<string, E2>",
+                       "java.util.List<E>": "IList<E>",
+                       "java.util.Map<K, V>": "IDictionary<K, V>",
+                       "java.util.Collection<E2>": "ICollection<E2>",
+                       "java.util.Collection<B>": "ICollection<E2>",
+                       "java.util.Map<K, java.lang.Long>": "IDictionary<K, long>",
+                       "TraversalMetrics": "E2"]
+
+def useE2 = ["E2", "E2"];
+def methodsWithSpecificTypes = ["constant": useE2,
+                                "limit": useE2,
+                                "mean": useE2,
+                                "optional": useE2,
+                                "range": useE2,
+                                "select": ["IDictionary<string, E2>", "E2"],
+                                "sum": useE2,
+                                "tail": useE2,
+                                "tree": ["object"],
+                                "unfold": useE2]
+
+def getCSharpGenericTypeParam = { typeName ->
+    def tParam = ""
+    if (typeName.contains("E2")) {
+        tParam = "<E2>"
+    }
+    else if (typeName.contains("<K, V>")) {
+        tParam = "<K, V>"
+    }
+    else if (typeName.contains("<K, ")) {
+        tParam = "<K>"
+    }
+    return tParam
+}
+
+def toCSharpType = { name ->
+    String typeName = toCSharpTypeMap.getOrDefault(name, name);
+    if (typeName.equals(name) && (typeName.contains("? extends") || typeName.equals("Tree"))) {
+        typeName = "E2"
+    }
+    return typeName;
+}
+
+def toCSharpMethodName = { symbol -> (String) Character.toUpperCase(symbol.charAt(0)) + symbol.substring(1) }
+
+def getJavaParameterTypeNames = { method ->
+    def typeArguments = method.genericReturnType.actualTypeArguments;
+    return typeArguments.
+            collect { (it instanceof Class) ? ((Class)it).simpleName : it.typeName }.
+            collect { name ->
+                if (name.equals("A")) {
+                    name = "object"
+                }
+                else if (name.equals("B")) {
+                    name = "E2";
+                }
+                name
+            }
+}
+
+def binding = ["pmethods": P.class.getMethods().
+                                 findAll { Modifier.isStatic(it.getModifiers()) }.
+                                 findAll { P.class.isAssignableFrom(it.returnType) }.
+                                 collect { it.name }.
+                                 unique().
+                                 sort { a, b -> a <=> b },
+               "sourceStepMethods": GraphTraversalSource.getMethods(). // SOURCE STEPS
+                                        findAll { GraphTraversalSource.class.equals(it.returnType) }.
+                                        findAll {
+                                            !it.name.equals("clone") &&
+                                                    !it.name.equals(TraversalSource.Symbols.withBindings) &&
+                                                    !it.name.equals(TraversalSource.Symbols.withRemote) &&
+                                                    !it.name.equals(TraversalSource.Symbols.withComputer)
+                                        }.
+                                        collect { it.name }.
+                                        unique().
+                                        sort { a, b -> a <=> b },
+               "sourceSpawnMethods": GraphTraversalSource.getMethods(). // SPAWN STEPS
+                                        findAll { GraphTraversal.class.equals(it.returnType) && !it.name.equals('inject')}.
+                                        collect { [methodName: it.name, typeArguments: it.genericReturnType.actualTypeArguments.collect{t -> ((java.lang.Class)t).simpleName}] }.
+                                        unique().
+                                        sort { a, b -> a.methodName <=> b.methodName },
+               "graphStepMethods": GraphTraversal.getMethods().
+                                        findAll { GraphTraversal.class.equals(it.returnType) }.
+                                        findAll { !it.name.equals("clone") && !it.name.equals("iterate") }.
+                                        groupBy { it.name }.
+                                        // Select unique by name, with the most amount of parameters
+                                        collect { it.value.sort { a, b -> b.parameterCount <=> a.parameterCount }.first() }.
+                                        sort { a, b -> a.name <=> b.name }.
+                                        collect { javaMethod ->
+                                            def typeNames = getJavaParameterTypeNames(javaMethod)
+                                            def t1 = toCSharpType(typeNames[0])
+                                            def t2 = toCSharpType(typeNames[1])
+                                            def tParam = getCSharpGenericTypeParam(t2)
+                                            return ["methodName": javaMethod.name, "t1":t1, "t2":t2, "tParam":tParam]
+                                        },
+               "anonStepMethods": __.class.getMethods().
+                                        findAll { GraphTraversal.class.equals(it.returnType) }.
+                                        findAll { Modifier.isStatic(it.getModifiers()) }.
+                                        findAll { !it.name.equals("__") && !it.name.equals("start") }.
+                                        groupBy { it.name }.
+                                        // Select unique by name, with the most amount of parameters
+                                        collect { it.value.sort { a, b -> b.parameterCount <=> a.parameterCount }.first() }.
+                                        sort { it.name }.
+                                        collect { javaMethod ->
+                                            def typeNames = getJavaParameterTypeNames(javaMethod)
+                                            def t2 = toCSharpType(typeNames[1])
+                                            def tParam = getCSharpGenericTypeParam(t2)
+                                            def specificTypes = methodsWithSpecificTypes.get(javaMethod.name)
+                                            if (specificTypes) {
+                                                t2 = specificTypes[0]
+                                                tParam = specificTypes.size() > 1 ? "<" + specificTypes[1] + ">" : ""
+                                            }
+                                            return ["methodName": javaMethod.name, "t2":t2, "tParam":tParam]
+                                        },
+               "toCSharpMethodName": toCSharpMethodName]
+
+def engine = new groovy.text.GStringTemplateEngine()
+def traversalTemplate = engine.createTemplate(new File('${project.basedir}/glv/GraphTraversal.template')).make(binding)
+def traversalFile = new File('${project.basedir}/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs')
+traversalFile.newWriter().withWriter{ it << traversalTemplate }
+
+def graphTraversalTemplate = engine.createTemplate(new File('${project.basedir}/glv/GraphTraversalSource.template')).make(binding)
+def graphTraversalFile = new File('${project.basedir}/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs')
+graphTraversalFile.newWriter().withWriter{ it << graphTraversalTemplate }
+
+def anonymousTraversalTemplate = engine.createTemplate(new File('${project.basedir}/glv/AnonymousTraversal.template')).make(binding)
+def anonymousTraversalFile = new File('${project.basedir}/src/Gremlin.Net/Process/Traversal/__.cs')
+anonymousTraversalFile.newWriter().withWriter{ it << anonymousTraversalTemplate }
+
+def pTemplate = engine.createTemplate(new File('${project.basedir}/glv/P.template')).make(binding)
+def pFile = new File('${project.basedir}/src/Gremlin.Net/Process/Traversal/P.cs')
+pFile.newWriter().withWriter{ it << pTemplate }
+
+// Process enums
+def toCSharpName = { enumClass, itemName ->
+    if (enumClass.equals(Direction.class)) {
+        itemName = itemName.toLowerCase()
+    }
+
+    return itemName.substring(0, 1).toUpperCase() + itemName.substring(1)
+}
+
+def createEnum = { enumClass, csharpToJava ->
+    def b = ["enumClass": enumClass,
+             "constants": enumClass.getEnumConstants().
+                                    sort { a, b -> a.name() <=> b.name() }.
+                                    collect { value ->
+                                        def csharpName = toCSharpName(enumClass, value.name())
+                                        csharpToJava.put(enumClass.simpleName + "." + csharpName, value.name())
+                                        return csharpName
+                                    }.join(",")]
+
+    def enumTemplate = engine.createTemplate(new File('${project.basedir}/glv/Enum.template')).make(b)
+    def enumFile = new File('${project.basedir}/src/Gremlin.Net/Process/Traversal/' + enumClass.getSimpleName() + '.cs')
+    enumFile.newWriter().withWriter{ it << enumTemplate }
+}
+
+def enumCSharpToJavaNames = [:]
+CoreImports.getClassImports().findAll { Enum.class.isAssignableFrom(it) }.
+                             sort { a, b -> a.getSimpleName() <=> b.getSimpleName() }.
+                             each { createEnum(it, enumCSharpToJavaNames) }
+
+def lastIndex = (enumCSharpToJavaNames.size() - 1);
+def body = new StringBuilder()
+enumCSharpToJavaNames.eachWithIndex{ node, i ->
+    body.append("""{"$node.key", "$node.value"}""")
+    body.append(i == lastIndex ? "\n" : ",\n            ")
+}
+
+def namingConversionsTemplate = engine.createTemplate(new File('${project.basedir}/glv/NamingConversions.template')).make(["body":body])
+def namingConversionsFile = new File('${project.basedir}/src/Gremlin.Net/Process/Traversal/NamingConversions.cs')
+namingConversionsFile.newWriter().withWriter{ it << namingConversionsTemplate }
+
+]]>
+                                </script>
+                            </scripts>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
     </build>
 </project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Barrier.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Barrier.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Barrier.cs
index 6ef1d4f..543fda6 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Barrier.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Barrier.cs
@@ -23,8 +23,11 @@
 
 namespace Gremlin.Net.Process.Traversal
 {
+    /// <summary>
+    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
+    /// </summary>
     public enum Barrier
     {
         NormSack
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs
index b158d09..b47dd32 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs
@@ -23,10 +23,11 @@
 
 namespace Gremlin.Net.Process.Traversal
 {
+    /// <summary>
+    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
+    /// </summary>
     public enum Cardinality
     {
-        List,
-        Set,
-        Single
+        List,Set,Single
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Column.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Column.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Column.cs
index 0f3556c..063c26e 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Column.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Column.cs
@@ -23,9 +23,11 @@
 
 namespace Gremlin.Net.Process.Traversal
 {
+    /// <summary>
+    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
+    /// </summary>
     public enum Column
     {
-        Keys,
-        Values
+        Keys,Values
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Direction.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Direction.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Direction.cs
index 100296c..5f6717e 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Direction.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Direction.cs
@@ -23,10 +23,11 @@
 
 namespace Gremlin.Net.Process.Traversal
 {
+    /// <summary>
+    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
+    /// </summary>
     public enum Direction
     {
-        Both,
-        In,
-        Out
+        Both,In,Out
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d0d9e138/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphSONVersion.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphSONVersion.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphSONVersion.cs
new file mode 100644
index 0000000..c72ae8e
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphSONVersion.cs
@@ -0,0 +1,33 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal
+{
+    /// <summary>
+    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
+    /// </summary>
+    public enum GraphSONVersion
+    {
+        V1_0,V2_0
+    }
+}
\ No newline at end of file


[38/50] [abbrv] tinkerpop git commit: DotNet: Generate ValueMap() method with 2 type parameters

Posted by sp...@apache.org.
DotNet: Generate ValueMap() method with 2 type parameters


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

Branch: refs/heads/master
Commit: c074ea05bae2c0b94d0c8c0e2a2790c1779d1d0e
Parents: 6115cf4
Author: Jorge Bay Gondra <jo...@gmail.com>
Authored: Wed Jul 12 17:11:42 2017 +0200
Committer: Jorge Bay Gondra <jo...@gmail.com>
Committed: Fri Jul 14 11:57:50 2017 +0200

----------------------------------------------------------------------
 gremlin-dotnet/pom.xml                                       | 8 +++++++-
 .../src/Gremlin.Net/Process/Traversal/GraphTraversal.cs      | 8 ++++----
 gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs       | 4 ++--
 .../Traversal/DriverRemoteConnection/GraphTraversalTests.cs  | 4 ++--
 4 files changed, 15 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c074ea05/gremlin-dotnet/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/pom.xml b/gremlin-dotnet/pom.xml
index 2ba30ec..319bb9c 100644
--- a/gremlin-dotnet/pom.xml
+++ b/gremlin-dotnet/pom.xml
@@ -108,7 +108,8 @@ def methodsWithSpecificTypes = ["constant": useE2,
                                 "sum": useE2,
                                 "tail": useE2,
                                 "tree": ["object"],
-                                "unfold": useE2]
+                                "unfold": useE2,
+                                "valueMap": ["IDictionary<TKey, TValue>", "TKey, TValue"],]
 
 def getCSharpGenericTypeParam = { typeName ->
     def tParam = ""
@@ -183,6 +184,11 @@ def binding = ["pmethods": P.class.getMethods().
                                             def t1 = toCSharpType(typeNames[0])
                                             def t2 = toCSharpType(typeNames[1])
                                             def tParam = getCSharpGenericTypeParam(t2)
+                                            def specificTypes = methodsWithSpecificTypes.get(javaMethod.name)
+                                            if (specificTypes) {
+                                                t2 = specificTypes[0]
+                                                tParam = specificTypes.size() > 1 ? "<" + specificTypes[1] + ">" : ""
+                                            }
                                             return ["methodName": javaMethod.name, "t1":t1, "t2":t2, "tParam":tParam]
                                         },
                "anonStepMethods": __.class.getMethods().

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c074ea05/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 8f5b48c..8f22888 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
@@ -893,10 +893,10 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the tree step to this <see cref="GraphTraversal{SType, EType}" />.
         /// </summary>
-        public GraphTraversal< S , E > Tree (params object[] args)
+        public GraphTraversal< S , object > Tree (params object[] args)
         {
             Bytecode.AddStep("tree", args);
-            return Wrap< S , E >(this);
+            return Wrap< S , object >(this);
         }
 
         /// <summary>
@@ -938,10 +938,10 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Adds the valueMap step to this <see cref="GraphTraversal{SType, EType}" />.
         /// </summary>
-        public GraphTraversal< S , IDictionary<object, E2> > ValueMap<E2> (params object[] args)
+        public GraphTraversal< S , IDictionary<TKey, TValue> > ValueMap<TKey, TValue> (params object[] args)
         {
             Bytecode.AddStep("valueMap", args);
-            return Wrap< S , IDictionary<object, E2> >(this);
+            return Wrap< S , IDictionary<TKey, TValue> >(this);
         }
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c074ea05/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
index e0e6e42..c1aed20 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
@@ -763,9 +763,9 @@ namespace Gremlin.Net.Process.Traversal
         /// <summary>
         ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the valueMap step to that traversal.
         /// </summary>
-        public static GraphTraversal<object, IDictionary<object, E2>> ValueMap<E2>(params object[] args)
+        public static GraphTraversal<object, IDictionary<TKey, TValue>> ValueMap<TKey, TValue>(params object[] args)
         {
-            return new GraphTraversal<object, object>().ValueMap<E2>(args);
+            return new GraphTraversal<object, object>().ValueMap<TKey, TValue>(args);
         }
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c074ea05/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
index 24c75b0..11190ce 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
@@ -102,9 +102,9 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
             var connection = _connectionFactory.CreateRemoteConnection();
             var g = graph.Traversal().WithRemote(connection);
 
-            var receivedValueMap = g.V().Has("name", "marko").ValueMap<object>().Next();
+            var receivedValueMap = g.V().Has("name", "marko").ValueMap<string, object>().Next();
 
-            var expectedValueMap = new Dictionary<object, object>
+            var expectedValueMap = new Dictionary<string, object>
             {
                 {"age", new List<object> {29}},
                 {"name", new List<object> {"marko"}}


[50/50] [abbrv] tinkerpop git commit: Merge branch 'tp32'

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


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

Branch: refs/heads/master
Commit: 8f5af95cea5ffe38ac461de747d8ec55103f921e
Parents: 43d855d 779399a
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Jul 18 09:05:29 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Jul 18 09:05:29 2017 -0400

----------------------------------------------------------------------

----------------------------------------------------------------------



[48/50] [abbrv] tinkerpop git commit: Merge branch 'TINKERPOP-1552' into tp32

Posted by sp...@apache.org.
Merge branch 'TINKERPOP-1552' into tp32

Conflicts:
	CHANGELOG.asciidoc


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

Branch: refs/heads/master
Commit: 779399a8b49b85a22fbbdf97bb35e329cac16b6d
Parents: a5d60c6 426d141
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Jul 18 09:00:00 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Jul 18 09:00:00 2017 -0400

----------------------------------------------------------------------
 .gitignore                                      |  11 +
 .travis.yml                                     |   5 +
 CHANGELOG.asciidoc                              |   1 +
 docker/Dockerfile                               |   6 +-
 .../developer/development-environment.asciidoc  |  35 +
 docs/src/dev/developer/release.asciidoc         |  18 +-
 docs/src/reference/gremlin-variants.asciidoc    | 190 ++++
 gremlin-dotnet/Gremlin.Net.sln                  |  45 +
 gremlin-dotnet/glv/AnonymousTraversal.template  |  52 +
 gremlin-dotnet/glv/Enum.template                |  35 +
 gremlin-dotnet/glv/GraphTraversal.template      |  75 ++
 .../glv/GraphTraversalSource.template           | 132 +++
 gremlin-dotnet/glv/Gremlin.Net.csproj.template  |  64 ++
 gremlin-dotnet/glv/NamingConversions.template   |  50 +
 gremlin-dotnet/glv/P.template                   |  45 +
 gremlin-dotnet/pom.xml                          | 296 ++++++
 .../src/Gremlin.Net/Driver/Connection.cs        | 162 ++++
 .../src/Gremlin.Net/Driver/ConnectionFactory.cs |  48 +
 .../src/Gremlin.Net/Driver/ConnectionPool.cs    | 114 +++
 .../Driver/Exceptions/ResponseException.cs      |  37 +
 .../src/Gremlin.Net/Driver/GremlinClient.cs     |  95 ++
 .../Driver/GremlinClientExtensions.cs           | 140 +++
 .../src/Gremlin.Net/Driver/GremlinServer.cs     |  70 ++
 .../src/Gremlin.Net/Driver/IConnection.cs       |  35 +
 .../src/Gremlin.Net/Driver/IGremlinClient.cs    |  48 +
 .../Gremlin.Net/Driver/JsonMessageSerializer.cs |  49 +
 .../Driver/Messages/RequestMessage.cs           | 143 +++
 .../Driver/Messages/ResponseMessage.cs          |  40 +
 .../Driver/Messages/ResponseResult.cs           |  37 +
 .../Driver/Messages/ResponseStatus.cs           |  50 +
 .../Driver/Messages/ResponseStatusCode.cs       |  67 ++
 .../src/Gremlin.Net/Driver/ProxyConnection.cs   |  52 +
 .../Driver/Remote/DriverRemoteConnection.cs     |  80 ++
 .../Driver/Remote/DriverRemoteTraversal.cs      |  39 +
 .../Remote/DriverRemoteTraversalSideEffects.cs  | 126 +++
 .../ResultsAggregation/AggregatorFactory.cs     |  44 +
 .../ResultsAggregation/DefaultAggregator.cs     |  42 +
 .../ResultsAggregation/DictionaryAggregator.cs  |  44 +
 .../Driver/ResultsAggregation/IAggregator.cs    |  31 +
 .../ResultsAggregation/TraverserAggregator.cs   |  44 +
 gremlin-dotnet/src/Gremlin.Net/Driver/Tokens.cs | 125 +++
 .../Gremlin.Net/Driver/WebSocketConnection.cs   |  96 ++
 .../src/Gremlin.Net/Gremlin.Net.csproj          |  64 ++
 .../Process/Remote/IRemoteConnection.cs         |  42 +
 .../Process/Remote/RemoteStrategy.cs            |  61 ++
 .../Gremlin.Net/Process/Traversal/Barrier.cs    |  35 +
 .../Gremlin.Net/Process/Traversal/Binding.cs    |  80 ++
 .../Gremlin.Net/Process/Traversal/Bindings.cs   |  42 +
 .../Gremlin.Net/Process/Traversal/Bytecode.cs   |  85 ++
 .../Process/Traversal/Cardinality.cs            |  37 +
 .../src/Gremlin.Net/Process/Traversal/Column.cs |  36 +
 .../Process/Traversal/DefaultTraversal.cs       | 198 ++++
 .../Gremlin.Net/Process/Traversal/Direction.cs  |  37 +
 .../Process/Traversal/GraphSONVersion.cs        |  36 +
 .../Process/Traversal/GraphTraversal.cs         | 948 +++++++++++++++++++
 .../Process/Traversal/GraphTraversalSource.cs   | 194 ++++
 .../Process/Traversal/GryoVersion.cs            |  35 +
 .../Gremlin.Net/Process/Traversal/ITraversal.cs | 102 ++
 .../Process/Traversal/ITraversalSideEffects.cs  |  52 +
 .../Process/Traversal/ITraversalStrategy.cs     |  46 +
 .../Process/Traversal/Instruction.cs            |  52 +
 .../Process/Traversal/NamingConversions.cs      |  91 ++
 .../Gremlin.Net/Process/Traversal/Operator.cs   |  45 +
 .../src/Gremlin.Net/Process/Traversal/Order.cs  |  41 +
 .../src/Gremlin.Net/Process/Traversal/P.cs      | 117 +++
 .../src/Gremlin.Net/Process/Traversal/Pick.cs   |  36 +
 .../src/Gremlin.Net/Process/Traversal/Pop.cs    |  37 +
 .../src/Gremlin.Net/Process/Traversal/Scope.cs  |  36 +
 .../Strategy/AbstractTraversalStrategy.cs       |  86 ++
 .../Strategy/Decoration/ConnectiveStrategy.cs   |  33 +
 .../Strategy/Decoration/ElementIdStrategy.cs    |  32 +
 .../Decoration/HaltedTraverserStrategy.cs       |  36 +
 .../Strategy/Decoration/PartitionStrategy.cs    |  56 ++
 .../Strategy/Decoration/SubgraphStrategy.cs     |  48 +
 .../Decoration/VertexProgramStrategy.cs         |  52 +
 .../Finalization/MatchAlgorithmStrategy.cs      |  36 +
 .../Optimization/AdjacentToIncidentStrategy.cs  |  32 +
 .../Optimization/FilterRankingStrategy.cs       |  32 +
 .../Optimization/GraphFilterStrategy.cs         |  31 +
 .../Optimization/IdentityRemovalStrategy.cs     |  32 +
 .../Optimization/IncidentToAdjacentStrategy.cs  |  33 +
 .../Optimization/InlineFilterStrategy.cs        |  32 +
 .../Optimization/LazyBarrierStrategy.cs         |  33 +
 .../Optimization/MatchPredicateStrategy.cs      |  32 +
 .../Strategy/Optimization/OrderLimitStrategy.cs |  31 +
 .../Optimization/PathProcessorStrategy.cs       |  32 +
 .../Optimization/PathRetractionStrategy.cs      |  31 +
 .../Optimization/RangeByIsCountStrategy.cs      |  32 +
 .../Optimization/RepeatUnrollStrategy.cs        |  31 +
 .../Verification/LambdaRestrictionStrategy.cs   |  32 +
 .../Strategy/Verification/ReadOnlyStrategy.cs   |  32 +
 .../src/Gremlin.Net/Process/Traversal/T.cs      |  38 +
 .../Process/Traversal/TraversalPredicate.cs     |  85 ++
 .../Gremlin.Net/Process/Traversal/Traverser.cs  |  75 ++
 .../src/Gremlin.Net/Process/Traversal/__.cs     | 772 +++++++++++++++
 .../src/Gremlin.Net/Structure/Edge.cs           |  61 ++
 .../src/Gremlin.Net/Structure/Element.cs        |  77 ++
 .../src/Gremlin.Net/Structure/Graph.cs          |  43 +
 .../Structure/IO/GraphSON/BindingSerializer.cs  |  42 +
 .../Structure/IO/GraphSON/BytecodeSerializer.cs |  58 ++
 .../Structure/IO/GraphSON/DateDeserializer.cs   |  43 +
 .../Structure/IO/GraphSON/DateSerializer.cs     |  43 +
 .../Structure/IO/GraphSON/DoubleConverter.cs    |  33 +
 .../Structure/IO/GraphSON/EdgeDeserializer.cs   |  43 +
 .../Structure/IO/GraphSON/EdgeSerializer.cs     |  45 +
 .../Structure/IO/GraphSON/EnumSerializer.cs     |  38 +
 .../Structure/IO/GraphSON/FloatConverter.cs     |  33 +
 .../Structure/IO/GraphSON/GraphSONReader.cs     | 123 +++
 .../Structure/IO/GraphSON/GraphSONTokens.cs     |  32 +
 .../Structure/IO/GraphSON/GraphSONUtil.cs       |  62 ++
 .../Structure/IO/GraphSON/GraphSONWriter.cs     | 146 +++
 .../IO/GraphSON/IGraphSONDeserializer.cs        |  41 +
 .../IO/GraphSON/IGraphSONSerializer.cs          |  41 +
 .../Structure/IO/GraphSON/Int32Converter.cs     |  33 +
 .../Structure/IO/GraphSON/Int64Converter.cs     |  33 +
 .../Structure/IO/GraphSON/NumberConverter.cs    |  45 +
 .../Structure/IO/GraphSON/PathDeserializer.cs   |  41 +
 .../IO/GraphSON/PropertyDeserializer.cs         |  38 +
 .../Structure/IO/GraphSON/PropertySerializer.cs |  64 ++
 .../IO/GraphSON/RequestMessageSerializer.cs     |  43 +
 .../IO/GraphSON/TraversalPredicateSerializer.cs |  45 +
 .../IO/GraphSON/TraversalSerializer.cs          |  38 +
 .../IO/GraphSON/TraversalStrategySerializer.cs  |  37 +
 .../Structure/IO/GraphSON/TraverserReader.cs    |  38 +
 .../Structure/IO/GraphSON/UuidDeserializer.cs   |  36 +
 .../Structure/IO/GraphSON/UuidSerializer.cs     |  37 +
 .../Structure/IO/GraphSON/VertexDeserializer.cs |  37 +
 .../IO/GraphSON/VertexPropertyDeserializer.cs   |  41 +
 .../IO/GraphSON/VertexPropertySerializer.cs     |  43 +
 .../Structure/IO/GraphSON/VertexSerializer.cs   |  41 +
 .../src/Gremlin.Net/Structure/Path.cs           | 193 ++++
 .../src/Gremlin.Net/Structure/Property.cs       |  96 ++
 .../src/Gremlin.Net/Structure/Vertex.cs         |  52 +
 .../src/Gremlin.Net/Structure/VertexProperty.cs |  66 ++
 gremlin-dotnet/src/pom.xml                      | 219 +++++
 .../ConfigProvider.cs                           |  47 +
 .../Driver/ConnectionPoolTests.cs               |  90 ++
 .../Driver/GremlinClientAuthenticationTests.cs  |  86 ++
 .../Driver/GremlinClientTests.cs                | 212 +++++
 .../Driver/MessagesTests.cs                     | 147 +++
 .../Gremlin.Net.IntegrationTest.csproj          |  36 +
 .../Process/Remote/RemoteStrategyTests.cs       |  85 ++
 .../BytecodeGenerationTests.cs                  |  76 ++
 .../BytecodeGeneration/StrategiesTests.cs       | 170 ++++
 .../DriverRemoteConnection/EnumTests.cs         |  59 ++
 .../GraphTraversalSourceTests.cs                |  55 ++
 .../GraphTraversalTests.cs                      | 169 ++++
 .../DriverRemoteConnection/PredicateTests.cs    |  58 ++
 .../RemoteConnectionFactory.cs                  |  41 +
 .../DriverRemoteConnection/SideEffectTests.cs   | 221 +++++
 .../DriverRemoteConnection/StrategiesTests.cs   | 193 ++++
 .../Process/Traversal/GraphSONWriterTests.cs    |  50 +
 .../Util/RequestMessageProvider.cs              |  54 ++
 .../appsettings.json                            |   5 +
 .../Driver/DriverRemoteConnectionTests.cs       |  51 +
 .../Driver/GremlinServerTests.cs                |  66 ++
 .../Driver/RequestMessageBuilderTests.cs        |  41 +
 .../Gremlin.Net.UnitTest.csproj                 |  28 +
 .../Process/Traversal/BytecodeTests.cs          |  44 +
 .../Traversal/GraphTraversalSourceTests.cs      |  68 ++
 .../Process/Traversal/PredicateTests.cs         |  50 +
 .../Process/Traversal/Strategy/StrategyTests.cs | 109 +++
 .../Process/Traversal/TestTraversal.cs          |  51 +
 .../Process/Traversal/TestTraversalStrategy.cs  |  50 +
 .../Process/Traversal/TraversalTests.cs         | 177 ++++
 .../Process/Traversal/TraverserTests.cs         |  75 ++
 .../Gremlin.Net.UnitTest/Structure/EdgeTests.cs |  57 ++
 .../GraphSON/BytecodeGraphSONSerializerTests.cs | 153 +++
 .../IO/GraphSON/GraphSONReaderTests.cs          | 308 ++++++
 .../IO/GraphSON/GraphSONWriterTests.cs          | 324 +++++++
 .../IO/GraphSON/StrategyWriterTests.cs          |  66 ++
 .../Structure/IO/GraphSON/TestClass.cs          |  30 +
 .../Structure/IO/GraphSON/TestUtils.cs          |  36 +
 .../Gremlin.Net.UnitTest/Structure/PathTests.cs | 416 ++++++++
 .../Structure/PropertyTests.cs                  | 165 ++++
 .../Structure/VertexPropertyTests.cs            |  69 ++
 .../Structure/VertexTests.cs                    |  80 ++
 gremlin-dotnet/test/pom.xml                     | 205 ++++
 pom.xml                                         |   9 +
 179 files changed, 14228 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/779399a8/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --cc CHANGELOG.asciidoc
index 1d57828,1c14ca6..52d289b
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@@ -28,14 -28,9 +28,15 @@@ TinkerPop 3.2.6 (Release Date: NOT OFFI
  
  This release also includes changes from <<release-3-1-8, 3.1.8>>.
  
 -* Added Gremlin.Net.
++* Added Gremlin.Net as an early preview.
 +* `ProfileTest` is now less stringent about assertions which will reduce burdens on providers.
 +* `GremlinExecutor` begins timeout of script evaluation at the time the script was submitted and not from the time it began evaluation.
 +* `ReferenceFactory` and `DetachedFactory` now detach elements in collections accordingly.
 +* Deprecated `GryoLiteMessageSerializerV1d0` in favor of `HaltedTraverserStrategy`.
  * Deprecated the `useMapperFromGraph` configuration option for Gremlin Server serializers.
 +* `JavaTranslator` is now smart about handling `BulkSet` and `Tree`.
  * Added annotations to the traversal metrics pretty print.
 +* `EdgeOtherVertexStep` is no longer final and can be extended by providers.
  * `EdgeVertexStep` is no longer final and can be extended by providers.
  * Deprecated `Transaction.submit(Function)`.
  * Fixed `HADOOP_GREMLIN_LIBS` parsing for Windows.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/779399a8/docs/src/reference/gremlin-variants.asciidoc
----------------------------------------------------------------------


[03/50] [abbrv] tinkerpop git commit: TINKERPOP-1552 Minor dev docs formatting

Posted by sp...@apache.org.
TINKERPOP-1552 Minor dev docs formatting


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

Branch: refs/heads/master
Commit: 10b99048e5e2b13086c006462ef26d4c3e2a9908
Parents: 56d5af9
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Thu May 18 16:42:16 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jul 13 13:46:48 2017 -0400

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


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/10b99048/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 d3eea8e..d3ce4bf 100644
--- a/docs/src/dev/developer/development-environment.asciidoc
+++ b/docs/src/dev/developer/development-environment.asciidoc
@@ -106,7 +106,7 @@ mvn clean install -pl gremlin-console -DskipIntegrationTests=false
 ~~~~~~~~~~~~~~~~
 
 The build optionally requires link:https://www.microsoft.com/net/core[.NET Core SDK] (>=1.1.0) to work with the
-gremlin-dotnet module. If .NET Core SDK is not installed, TinkerPop will still build with Maven, but .NET projects
+`gremlin-dotnet` module. If .NET Core SDK is not installed, TinkerPop will still build with Maven, but .NET projects
 will be skipped.
 
 `gremlin-dotnet` which also includes Gremlin-Csharp can be build and tested from the command line with:
@@ -114,7 +114,7 @@ will be skipped.
 [source,text]
 mvn clean install -Pgremlin-dotnet
 
-which enables the „gremlin-dotnet“ Maven profile or in a more automated fashion simply add a `.glv` file to the `src`
+which enables the "gremlin-dotnet" Maven profile or in a more automated fashion simply add a `.glv` file to the `src`
 and `test` directories of the `gremlin-dotnet` module  which will signify to Maven that the environment is .NET-ready.
 The `.glv` file need not have any contents and is ignored by Git. A standard `mvn clean install` will then build
 `gremlin-dotnet` in full. 


[33/50] [abbrv] tinkerpop git commit: TINKERPOP-1552 Bumped to dotnet-dev-1.0.4

Posted by sp...@apache.org.
TINKERPOP-1552 Bumped to dotnet-dev-1.0.4


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

Branch: refs/heads/master
Commit: 6ce5e136cf16c09b265ec6062ef69b9bbeb3b339
Parents: 089ee6b
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Jul 5 11:51:01 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jul 13 13:47:19 2017 -0400

----------------------------------------------------------------------
 .travis.yml       | 2 +-
 docker/Dockerfile | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6ce5e136/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index 55930da..ef1270d 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -25,7 +25,7 @@ before_install:
   - sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ trusty main" > /etc/apt/sources.list.d/dotnetdev.list'
   - sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 417A0893
   - sudo apt-get update
-  - sudo apt-get install dotnet-dev-1.0.1
+  - sudo apt-get install dotnet-dev-1.0.4
 script: 
   - "mvn clean install -Dci"
 #notifications:

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6ce5e136/docker/Dockerfile
----------------------------------------------------------------------
diff --git a/docker/Dockerfile b/docker/Dockerfile
index d68f893..35dd35e 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -26,7 +26,7 @@ RUN apt-get update \
     && sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ trusty main" > /etc/apt/sources.list.d/dotnetdev.list' \
     && apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 417A0893 \
     && apt-get update \
-    && apt-get install -y oracle-java8-installer curl gawk git maven openssh-server dotnet-dev-1.0.1 subversion \
+    && apt-get install -y oracle-java8-installer curl gawk git maven openssh-server dotnet-dev-1.0.4 subversion \
     && apt-get install -y python python-dev python-pip build-essential \
     && pip install virtualenv virtualenvwrapper \
     && pip install --upgrade pip \


[13/50] [abbrv] tinkerpop git commit: Reorganize Gremlin-DotNet

Posted by sp...@apache.org.
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/DriverRemoteConnection/SideEffectTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/DriverRemoteConnection/SideEffectTests.cs b/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/DriverRemoteConnection/SideEffectTests.cs
deleted file mode 100644
index 8051167..0000000
--- a/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/DriverRemoteConnection/SideEffectTests.cs
+++ /dev/null
@@ -1,221 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using Gremlin.CSharp.Structure;
-using Xunit;
-
-namespace Gremlin.CSharp.IntegrationTest.DriverRemoteConnection
-{
-    public class SideEffectTests
-    {
-        private readonly RemoteConnectionFactory _connectionFactory = new RemoteConnectionFactory();
-
-        [Fact]
-        public void ShouldReturnCachedSideEffectWhenGetIsCalledAfterClose()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g = graph.Traversal().WithRemote(connection);
-            var t = g.V().Aggregate("a").Iterate();
-
-            t.SideEffects.Get("a");
-            t.SideEffects.Close();
-            var results = t.SideEffects.Get("a");
-
-            Assert.NotNull(results);
-        }
-
-        [Fact]
-        public void ShouldThrowWhenGetIsCalledAfterCloseAndNoSideEffectsAreCachec()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g = graph.Traversal().WithRemote(connection);
-            var t = g.V().Aggregate("a").Iterate();
-
-            t.SideEffects.Close();
-            Assert.Throws<InvalidOperationException>(() => t.SideEffects.Get("a"));
-        }
-
-        [Fact]
-        public void ShouldThrowWhenGetIsCalledAfterDisposeAndNoSideEffectsAreCachec()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g = graph.Traversal().WithRemote(connection);
-            var t = g.V().Aggregate("a").Iterate();
-
-            t.SideEffects.Dispose();
-            Assert.Throws<InvalidOperationException>(() => t.SideEffects.Get("a"));
-        }
-
-        [Fact]
-        public void ShouldReturnSideEffectValueWhenGetIsCalledForGroupCountTraversal()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g = graph.Traversal().WithRemote(connection);
-            var t = g.V().Out("created").GroupCount("m").By("name").Iterate();
-            t.SideEffects.Keys();
-
-            var m = t.SideEffects.Get("m") as Dictionary<string, dynamic>;
-
-            Assert.Equal(2, m.Count);
-            Assert.Equal((long) 3, m["lop"]);
-            Assert.Equal((long) 1, m["ripple"]);
-        }
-
-        [Fact]
-        public void ShouldReturnSideEffectValueWhenGetIsCalledOnATraversalWithSideEffect()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g = graph.Traversal().WithRemote(connection);
-            var t = g.WithSideEffect("a", new List<string> {"first", "second"}).V().Iterate();
-            t.SideEffects.Keys();
-
-            var a = t.SideEffects.Get("a") as List<object>;
-
-            Assert.Equal(2, a.Count);
-            Assert.Equal("first", a[0]);
-            Assert.Equal("second", a[1]);
-        }
-
-        [Fact]
-        public void ShouldThrowWhenGetIsCalledWithAnUnknownKey()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g = graph.Traversal().WithRemote(connection);
-            var t = g.V().Iterate();
-
-            Assert.Throws<KeyNotFoundException>(() => t.SideEffects.Get("m"));
-        }
-
-        [Fact]
-        public void ShouldReturnBothSideEffectForTraversalWithTwoSideEffects_()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g = graph.Traversal().WithRemote(connection);
-
-            var t = g.V().Out("created").GroupCount("m").By("name").Values("name").Aggregate("n").Iterate();
-
-            var keys = t.SideEffects.Keys().ToList();
-            Assert.Equal(2, keys.Count);
-            Assert.Contains("m", keys);
-            Assert.Contains("n", keys);
-            var n = (Dictionary<object, long>) t.SideEffects.Get("n");
-            Assert.Equal(2, n.Count);
-            Assert.Equal(3, n["lop"]);
-            Assert.Equal(1, n["ripple"]);
-        }
-
-        [Fact]
-        public void ShouldReturnAnEmptyCollectionWhenKeysIsCalledForTraversalWithoutSideEffect()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g = graph.Traversal().WithRemote(connection);
-
-            var t = g.V().Iterate();
-            var keys = t.SideEffects.Keys();
-
-            Assert.Equal(0, keys.Count);
-        }
-
-        [Fact]
-        public void ShouldReturnCachedKeysWhenForCloseAfterSomeGet()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g = graph.Traversal().WithRemote(connection);
-            var t = g.V().Aggregate("a").Aggregate("b").Iterate();
-
-            t.SideEffects.Get("a");
-            t.SideEffects.Close();
-            var keys = t.SideEffects.Keys();
-
-            Assert.Equal(2, keys.Count);
-            Assert.Contains("a", keys);
-            Assert.Contains("b", keys);
-        }
-
-        [Fact]
-        public void ShouldReturnSideEffectKeyWhenKeysIsCalledForNamedGroupCount()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g = graph.Traversal().WithRemote(connection);
-            var t = g.V().Out("created").GroupCount("m").By("name").Iterate();
-
-            var keys = t.SideEffects.Keys();
-
-            var keysList = keys.ToList();
-            Assert.Equal(1, keysList.Count);
-            Assert.Contains("m", keysList);
-        }
-
-        [Fact]
-        public async Task ShouldReturnSideEffectsKeysWhenKeysIsCalledOnTraversalThatExecutedAsynchronously()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g = graph.Traversal().WithRemote(connection);
-
-            var t = await g.V().Aggregate("a").Promise(x => x);
-            var keys = t.SideEffects.Keys();
-
-            Assert.Equal(1, keys.Count);
-            Assert.Contains("a", keys);
-        }
-
-        [Fact]
-        public async Task ShouldReturnSideEffectValueWhenGetIsCalledOnTraversalThatExecutedAsynchronously()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g = graph.Traversal().WithRemote(connection);
-
-            var t = await g.V().Aggregate("a").Promise(x => x);
-            var value = t.SideEffects.Get("a");
-
-            Assert.NotNull(value);
-        }
-
-        [Fact]
-        public async Task ShouldNotThrowWhenCloseIsCalledOnTraversalThatExecutedAsynchronously()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g = graph.Traversal().WithRemote(connection);
-
-            var t = await g.V().Aggregate("a").Promise(x => x);
-            t.SideEffects.Close();
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/DriverRemoteConnection/StrategiesTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/DriverRemoteConnection/StrategiesTests.cs b/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/DriverRemoteConnection/StrategiesTests.cs
deleted file mode 100644
index 59e2092..0000000
--- a/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/DriverRemoteConnection/StrategiesTests.cs
+++ /dev/null
@@ -1,193 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using System.Threading.Tasks;
-using Gremlin.CSharp.Process;
-using Gremlin.CSharp.Structure;
-using Gremlin.Net.Driver.Exceptions;
-using Gremlin.Net.Process.Traversal.Strategy.Decoration;
-using Gremlin.Net.Process.Traversal.Strategy.Verification;
-using Xunit;
-
-namespace Gremlin.CSharp.IntegrationTest.DriverRemoteConnection
-{
-    public class StrategiesTests
-    {
-        private readonly RemoteConnectionFactory _connectionFactory = new RemoteConnectionFactory();
-
-        [Fact]
-        public void g_V_Count_Next_WithVertexLabelSubgraphStrategy()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g =
-                graph.Traversal()
-                    .WithRemote(connection)
-                    .WithStrategies(new SubgraphStrategy(vertexCriterion: __.HasLabel("person")));
-
-            var count = g.V().Count().Next();
-
-            Assert.Equal((long) 4, count);
-        }
-
-        [Fact]
-        public void g_E_Count_Next_WithVertexAndEdgeLabelSubgraphStrategy()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g =
-                graph.Traversal()
-                    .WithRemote(connection)
-                    .WithStrategies(new SubgraphStrategy(vertexCriterion: __.HasLabel("person"),
-                        edgeCriterion: __.HasLabel("created")));
-
-            var count = g.E().Count().Next();
-
-            Assert.Equal((long)0, count);
-        }
-
-        [Fact]
-        public void g_V_Label_Dedup_Count_Next_WithVertexLabelSubgraphStrategy()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g =
-                graph.Traversal()
-                    .WithRemote(connection)
-                    .WithStrategies(new SubgraphStrategy(vertexCriterion: __.HasLabel("person")));
-
-            var count = g.V().Label().Dedup().Count().Next();
-
-            Assert.Equal((long)1, count);
-        }
-
-        [Fact]
-        public void g_V_Label_Dedup_Next_WWithVertexLabelSubgraphStrategy()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g =
-                graph.Traversal()
-                    .WithRemote(connection)
-                    .WithStrategies(new SubgraphStrategy(vertexCriterion: __.HasLabel("person")));
-
-            var label = g.V().Label().Dedup().Next();
-
-            Assert.Equal("person", label);
-        }
-
-        [Fact]
-        public void g_V_Count_Next_WithVertexHasPropertySubgraphStrategy()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g =
-                graph.Traversal()
-                    .WithRemote(connection)
-                    .WithStrategies(new SubgraphStrategy(vertexCriterion: __.Has("name", "marko")));
-
-            var count = g.V().Count().Next();
-
-            Assert.Equal((long)1, count);
-        }
-
-        [Fact]
-        public void g_E_Count_Next_WithEdgeLimitSubgraphStrategy()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g =
-                graph.Traversal()
-                    .WithRemote(connection)
-                    .WithStrategies(new SubgraphStrategy(edgeCriterion: __.Limit(0)));
-
-            var count = g.E().Count().Next();
-
-            Assert.Equal((long)0, count);
-        }
-
-        [Fact]
-        public void g_V_Label_Dedup_Next_WithVertexHasPropertySubgraphStrategy()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g =
-                graph.Traversal()
-                    .WithRemote(connection)
-                    .WithStrategies(new SubgraphStrategy(vertexCriterion: __.Has("name", "marko")));
-
-            var label = g.V().Label().Dedup().Next();
-
-            Assert.Equal("person", label);
-        }
-
-        [Fact]
-        public void g_V_ValuesXnameX_Next_WithVertexHasPropertySubgraphStrategy()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g =
-                graph.Traversal()
-                    .WithRemote(connection)
-                    .WithStrategies(new SubgraphStrategy(vertexCriterion: __.Has("name", "marko")));
-
-            var name = g.V().Values("name").Next();
-
-            Assert.Equal("marko", name);
-        }
-
-        [Fact]
-        public void g_V_Count_Next_WithComputer()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g = graph.Traversal().WithRemote(connection).WithComputer();
-
-            var count = g.V().Count().Next();
-
-            Assert.Equal((long)6, count);
-        }
-
-        [Fact]
-        public void g_E_Count_Next_WithComputer()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g = graph.Traversal().WithRemote(connection).WithComputer();
-
-            var count = g.E().Count().Next();
-
-            Assert.Equal((long)6, count);
-        }
-
-        [Fact]
-        public async Task ShouldThrowWhenModifyingTraversalSourceWithReadOnlyStrategy()
-        {
-            var graph = new Graph();
-            var connection = _connectionFactory.CreateRemoteConnection();
-            var g = graph.Traversal().WithRemote(connection).WithStrategies(new ReadOnlyStrategy());
-
-            await Assert.ThrowsAsync<ResponseException>(async () => await g.AddV("person").Promise(t => t.Next()));
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/GraphSONWriterTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/GraphSONWriterTests.cs b/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/GraphSONWriterTests.cs
deleted file mode 100644
index 99a1b65..0000000
--- a/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/GraphSONWriterTests.cs
+++ /dev/null
@@ -1,50 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using Gremlin.CSharp.Process;
-using Gremlin.Net.Structure.IO.GraphSON;
-using Xunit;
-
-namespace Gremlin.CSharp.IntegrationTest
-{
-    public class GraphSONWriterTests
-    {
-        [Fact]
-        public void ShouldSerializeLongPredicateCorrectly()
-        {
-            var writer = CreateStandardGraphSONWriter();
-            var predicate = P.Lt("b").Or(P.Gt("c")).And(P.Neq("d"));
-
-            var graphSon = writer.WriteObject(predicate);
-
-            const string expected =
-                "{\"@type\":\"g:P\",\"@value\":{\"predicate\":\"and\",\"value\":[{\"@type\":\"g:P\",\"@value\":{\"predicate\":\"or\",\"value\":[{\"@type\":\"g:P\",\"@value\":{\"predicate\":\"lt\",\"value\":\"b\"}},{\"@type\":\"g:P\",\"@value\":{\"predicate\":\"gt\",\"value\":\"c\"}}]}},{\"@type\":\"g:P\",\"@value\":{\"predicate\":\"neq\",\"value\":\"d\"}}]}}";
-            Assert.Equal(expected, graphSon);
-        }
-
-        private GraphSONWriter CreateStandardGraphSONWriter()
-        {
-            return new GraphSONWriter();
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/Gremlin.CSharp.IntegrationTest.csproj
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/Gremlin.CSharp.IntegrationTest.csproj b/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/Gremlin.CSharp.IntegrationTest.csproj
deleted file mode 100644
index 1e7a7d2..0000000
--- a/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/Gremlin.CSharp.IntegrationTest.csproj
+++ /dev/null
@@ -1,38 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>
-    <TargetFramework>netcoreapp1.0</TargetFramework>
-    <AssemblyName>Gremlin.CSharp.IntegrationTest</AssemblyName>
-    <PackageId>Gremlin.CSharp.IntegrationTest</PackageId>
-    <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
-    <RuntimeFrameworkVersion>1.0.4</RuntimeFrameworkVersion>
-    <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
-    <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
-    <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
-  </PropertyGroup>
-
-  <ItemGroup>
-    <ProjectReference Include="..\..\src\Gremlin.CSharp\Gremlin.CSharp.csproj" />
-    <ProjectReference Include="..\..\src\Gremlin.Net.Process\Gremlin.Net.Process.csproj" />
-    <ProjectReference Include="..\..\src\Gremlin.Net\Gremlin.Net.csproj" />
-  </ItemGroup>
-
-  <ItemGroup>
-    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />
-    <PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
-    <PackageReference Include="xunit" Version="2.2.0" />
-    <PackageReference Include="Microsoft.Extensions.Configuration" Version="1.1.1" />
-    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="1.1.1" />
-  </ItemGroup>
-
-  <ItemGroup>
-    <Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
-  </ItemGroup>
-
-  <ItemGroup>
-    <None Update="appsettings.json">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
-  </ItemGroup>
-
-</Project>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/Properties/AssemblyInfo.cs b/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/Properties/AssemblyInfo.cs
deleted file mode 100644
index 579426b..0000000
--- a/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using System.Reflection;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("Gremlin.CSharp.IntegrationTest")]
-[assembly: AssemblyTrademark("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components.  If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-
-[assembly: Guid("232f0f2b-178e-4214-99c7-cc4dc6710f44")]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/appsettings.json
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/appsettings.json b/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/appsettings.json
deleted file mode 100644
index 38007ec..0000000
--- a/gremlin-dotnet/test/Gremlin.CSharp.IntegrationTest/appsettings.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "TestServerIpAddress": "localhost",
-  "TestServerPort": 45950
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.CSharp.UnitTest/GraphTraversalSourceTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.CSharp.UnitTest/GraphTraversalSourceTests.cs b/gremlin-dotnet/test/Gremlin.CSharp.UnitTest/GraphTraversalSourceTests.cs
deleted file mode 100644
index bac2d55..0000000
--- a/gremlin-dotnet/test/Gremlin.CSharp.UnitTest/GraphTraversalSourceTests.cs
+++ /dev/null
@@ -1,68 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using Gremlin.CSharp.Structure;
-using Xunit;
-
-namespace Gremlin.CSharp.UnitTest
-{
-    public class GraphTraversalSourceTests
-    {
-        [Fact]
-        public void ShouldBeIndependentFromReturnedGraphTraversalModififyingBytecode()
-        {
-            var graph = new Graph();
-            var g = graph.Traversal();
-
-            g.V().Has("someKey", "someValue").Drop();
-
-            Assert.Equal(0, g.Bytecode.StepInstructions.Count);
-            Assert.Equal(0, g.Bytecode.SourceInstructions.Count);
-        }
-
-        [Fact]
-        public void ShouldBeIndependentFromReturnedGraphTraversalSourceModififyingBytecode()
-        {
-            var graph = new Graph();
-            var g1 = graph.Traversal();
-
-            var g2 = g1.WithSideEffect("someSideEffectKey", "someSideEffectValue");
-
-            Assert.Equal(0, g1.Bytecode.SourceInstructions.Count);
-            Assert.Equal(0, g1.Bytecode.StepInstructions.Count);
-            Assert.Equal(1, g2.Bytecode.SourceInstructions.Count);
-        }
-
-        [Fact]
-        public void ShouldBeIndependentFromReturnedGraphTraversalSourceModififyingTraversalStrategies()
-        {
-            var graph = new Graph();
-            var gLocal = graph.Traversal();
-
-            var gRemote = gLocal.WithRemote(null);
-
-            Assert.Equal(0, gLocal.TraversalStrategies.Count);
-            Assert.Equal(1, gRemote.TraversalStrategies.Count);
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.CSharp.UnitTest/Gremlin.CSharp.UnitTest.csproj
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.CSharp.UnitTest/Gremlin.CSharp.UnitTest.csproj b/gremlin-dotnet/test/Gremlin.CSharp.UnitTest/Gremlin.CSharp.UnitTest.csproj
deleted file mode 100644
index ea81928..0000000
--- a/gremlin-dotnet/test/Gremlin.CSharp.UnitTest/Gremlin.CSharp.UnitTest.csproj
+++ /dev/null
@@ -1,21 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>    
-    <TargetFramework>netcoreapp1.1</TargetFramework>
-  </PropertyGroup>
-
-  <ItemGroup>
-    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />
-    <PackageReference Include="xunit" Version="2.2.0" />
-    <PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
-  </ItemGroup>
-
-  <ItemGroup>
-    <ProjectReference Include="..\..\src\Gremlin.CSharp\Gremlin.CSharp.csproj" />
-  </ItemGroup>
-
-  <ItemGroup>
-    <Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
-  </ItemGroup>
-
-</Project>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.CSharp.UnitTest/PredicateTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.CSharp.UnitTest/PredicateTests.cs b/gremlin-dotnet/test/Gremlin.CSharp.UnitTest/PredicateTests.cs
deleted file mode 100644
index c06fb68..0000000
--- a/gremlin-dotnet/test/Gremlin.CSharp.UnitTest/PredicateTests.cs
+++ /dev/null
@@ -1,50 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using Gremlin.CSharp.Process;
-using Xunit;
-
-namespace Gremlin.CSharp.UnitTest
-{
-    public class PredicateTests
-    {
-        [Fact]
-        public void ShouldKeepOrderForNestedPredicate()
-        {
-            Assert.Equal("and(eq(a),lt(b))", P.Eq("a").And(P.Lt("b")).ToString());
-        }
-
-        [Fact]
-        public void ShouldKeepOrderForDoubleNestedPredicate()
-        {
-            Assert.Equal("and(or(lt(b),gt(c)),neq(d))", P.Lt("b").Or(P.Gt("c")).And(P.Neq("d")).ToString());
-        }
-
-        [Fact]
-        public void ShouldKeepOrderForTripleNestedPredicate()
-        {
-            Assert.Equal("and(or(lt(b),gt(c)),or(neq(d),gte(e)))",
-                P.Lt("b").Or(P.Gt("c")).And(P.Neq("d").Or(P.Gte("e"))).ToString());
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gremlin.Net.IntegrationTest.csproj
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gremlin.Net.IntegrationTest.csproj b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gremlin.Net.IntegrationTest.csproj
index f8407a9..c5f29da 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gremlin.Net.IntegrationTest.csproj
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gremlin.Net.IntegrationTest.csproj
@@ -19,7 +19,6 @@
   </ItemGroup>
 
   <ItemGroup>
-    <ProjectReference Include="..\..\src\Gremlin.Net.Process\Gremlin.Net.Process.csproj" />
     <ProjectReference Include="..\..\src\Gremlin.Net\Gremlin.Net.csproj" />
   </ItemGroup>
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/BytecodeGeneration/BytecodeGenerationTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/BytecodeGeneration/BytecodeGenerationTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/BytecodeGeneration/BytecodeGenerationTests.cs
new file mode 100644
index 0000000..1afb7bb
--- /dev/null
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/BytecodeGeneration/BytecodeGenerationTests.cs
@@ -0,0 +1,76 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using Gremlin.Net.Process.Traversal;
+using Gremlin.Net.Structure;
+using Xunit;
+
+namespace Gremlin.Net.IntegrationTest.Process.Traversal.BytecodeGeneration
+{
+    public class BytecodeGenerationTests
+    {
+        [Fact]
+        public void g_V_OutXcreatedX()
+        {
+            var g = new Graph().Traversal();
+
+            var bytecode = g.V().Out("created").Bytecode;
+
+            Assert.Equal(0, bytecode.SourceInstructions.Count);
+            Assert.Equal(2, bytecode.StepInstructions.Count);
+            Assert.Equal("V", bytecode.StepInstructions[0].OperatorName);
+            Assert.Equal("out", bytecode.StepInstructions[1].OperatorName);
+            Assert.Equal("created", bytecode.StepInstructions[1].Arguments[0]);
+            Assert.Equal(1, bytecode.StepInstructions[1].Arguments.Length);
+        }
+
+        [Fact]
+        public void g_WithSackX1X_E_GroupCount_ByXweightX()
+        {
+            var g = new Graph().Traversal();
+
+            var bytecode = g.WithSack(1).E().GroupCount().By("weight").Bytecode;
+
+            Assert.Equal(1, bytecode.SourceInstructions.Count);
+            Assert.Equal("withSack", bytecode.SourceInstructions[0].OperatorName);
+            Assert.Equal(1, bytecode.SourceInstructions[0].Arguments[0]);
+            Assert.Equal(3, bytecode.StepInstructions.Count);
+            Assert.Equal("E", bytecode.StepInstructions[0].OperatorName);
+            Assert.Equal("groupCount", bytecode.StepInstructions[1].OperatorName);
+            Assert.Equal("by", bytecode.StepInstructions[2].OperatorName);
+            Assert.Equal("weight", bytecode.StepInstructions[2].Arguments[0]);
+            Assert.Equal(0, bytecode.StepInstructions[0].Arguments.Length);
+            Assert.Equal(0, bytecode.StepInstructions[1].Arguments.Length);
+            Assert.Equal(1, bytecode.StepInstructions[2].Arguments.Length);
+        }
+
+        [Fact]
+        public void AnonymousTraversal_Start_EmptyBytecode()
+        {
+            var bytecode = __.Start().Bytecode;
+
+            Assert.Equal(0, bytecode.SourceInstructions.Count);
+            Assert.Equal(0, bytecode.StepInstructions.Count);
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/BytecodeGeneration/StrategiesTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/BytecodeGeneration/StrategiesTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/BytecodeGeneration/StrategiesTests.cs
new file mode 100644
index 0000000..418b0e2
--- /dev/null
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/BytecodeGeneration/StrategiesTests.cs
@@ -0,0 +1,170 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System.Collections.Generic;
+using Gremlin.Net.Process.Traversal;
+using Gremlin.Net.Process.Traversal.Strategy.Decoration;
+using Gremlin.Net.Process.Traversal.Strategy.Finalization;
+using Gremlin.Net.Process.Traversal.Strategy.Optimization;
+using Gremlin.Net.Process.Traversal.Strategy.Verification;
+using Gremlin.Net.Structure;
+using Xunit;
+
+namespace Gremlin.Net.IntegrationTest.Process.Traversal.BytecodeGeneration
+{
+    public class StrategiesTests
+    {
+        [Fact]
+        public void TraversalWithoutStrategies_AfterWithStrategiesWasCalled_WithStrategiesNotAffected()
+        {
+            var graph = new Graph();
+            var g = graph.Traversal().WithStrategies(new ReadOnlyStrategy(), new IncidentToAdjacentStrategy());
+
+            var bytecode = g.WithoutStrategies(new ReadOnlyStrategy()).Bytecode;
+
+            Assert.Equal(2, bytecode.SourceInstructions.Count);
+            Assert.Equal("withStrategies", bytecode.SourceInstructions[0].OperatorName);
+            Assert.Equal(2, bytecode.SourceInstructions[0].Arguments.Length);
+            Assert.Equal(new ReadOnlyStrategy(), bytecode.SourceInstructions[0].Arguments[0]);
+            Assert.Equal(new IncidentToAdjacentStrategy(), bytecode.SourceInstructions[0].Arguments[1]);
+
+            Assert.Equal("withoutStrategies", bytecode.SourceInstructions[1].OperatorName);
+            Assert.Equal(1, bytecode.SourceInstructions[1].Arguments.Length);
+            Assert.Equal(new ReadOnlyStrategy(), bytecode.SourceInstructions[1].Arguments[0]);
+        }
+
+        [Fact]
+        public void ShouldIncludeMultipleStrategiesInBytecodeWhenGivenToWithoutStrategies()
+        {
+            var graph = new Graph();
+            var g = graph.Traversal();
+
+            var bytecode = g.WithoutStrategies(new ReadOnlyStrategy(), new LazyBarrierStrategy()).Bytecode;
+
+            Assert.Equal(1, bytecode.SourceInstructions.Count);
+            Assert.Equal(2, bytecode.SourceInstructions[0].Arguments.Length);
+            Assert.Equal("withoutStrategies", bytecode.SourceInstructions[0].OperatorName);
+            Assert.Equal(new ReadOnlyStrategy(), bytecode.SourceInstructions[0].Arguments[0]);
+            Assert.Equal(new LazyBarrierStrategy(), bytecode.SourceInstructions[0].Arguments[1]);
+        }
+
+        [Fact]
+        public void ShouldIncludeOneStrategyInBytecodeWhenGivenToWithoutStrategies()
+        {
+            var graph = new Graph();
+            var g = graph.Traversal();
+
+            var bytecode = g.WithoutStrategies(new ReadOnlyStrategy()).Bytecode;
+
+            Assert.Equal(1, bytecode.SourceInstructions.Count);
+            Assert.Equal(1, bytecode.SourceInstructions[0].Arguments.Length);
+            Assert.Equal("withoutStrategies", bytecode.SourceInstructions[0].OperatorName);
+            Assert.Equal(new ReadOnlyStrategy(), bytecode.SourceInstructions[0].Arguments[0]);
+        }
+
+        [Fact]
+        public void ShouldIncludeConfigurationInBytecodeWhenGivenToWithStrategies()
+        {
+            var graph = new Graph();
+            var g = graph.Traversal();
+
+            var bytecode = g.WithStrategies(new MatchAlgorithmStrategy("greedy")).Bytecode;
+
+            Assert.Equal(1, bytecode.SourceInstructions.Count);
+            Assert.Equal(1, bytecode.SourceInstructions[0].Arguments.Length);
+            Assert.Equal("withStrategies", bytecode.SourceInstructions[0].OperatorName);
+            Assert.Equal(new MatchAlgorithmStrategy(), bytecode.SourceInstructions[0].Arguments[0]);
+            Assert.Contains("greedy",
+                ((MatchAlgorithmStrategy) bytecode.SourceInstructions[0].Arguments[0]).Configuration.Values);
+        }
+
+        [Fact]
+        public void ShouldIncludeMultipleStrategiesInBytecodeWhenGivenToWithStrategies()
+        {
+            var graph = new Graph();
+            var g = graph.Traversal();
+
+            var bytecode = g.WithStrategies(new ReadOnlyStrategy(), new IncidentToAdjacentStrategy()).Bytecode;
+
+            Assert.Equal(1, bytecode.SourceInstructions.Count);
+            Assert.Equal(2, bytecode.SourceInstructions[0].Arguments.Length);
+            Assert.Equal("withStrategies", bytecode.SourceInstructions[0].OperatorName);
+            Assert.Equal(new ReadOnlyStrategy(), bytecode.SourceInstructions[0].Arguments[0]);
+            Assert.Equal(new IncidentToAdjacentStrategy(), bytecode.SourceInstructions[0].Arguments[1]);
+        }
+
+        [Fact]
+        public void ShouldIncludeOneStrategyInBytecodeWhenGivenToWithStrategies()
+        {
+            var graph = new Graph();
+            var g = graph.Traversal();
+
+            var bytecode = g.WithStrategies(new ReadOnlyStrategy()).Bytecode;
+
+            Assert.Equal(1, bytecode.SourceInstructions.Count);
+            Assert.Equal(1, bytecode.SourceInstructions[0].Arguments.Length);
+            Assert.Equal("withStrategies", bytecode.SourceInstructions[0].OperatorName);
+            Assert.Equal(new ReadOnlyStrategy(), bytecode.SourceInstructions[0].Arguments[0]);
+            Assert.Equal("ReadOnlyStrategy", bytecode.SourceInstructions[0].Arguments[0].ToString());
+            Assert.Equal(new ReadOnlyStrategy().GetHashCode(), bytecode.SourceInstructions[0].Arguments[0].GetHashCode());
+            Assert.Equal(0, g.TraversalStrategies.Count);
+        }
+
+        [Fact]
+        public void TraversalWithStrategies_Strategies_ApplyToReusedGraphTraversalSource()
+        {
+            var graph = new Graph();
+            var g = graph.Traversal().WithStrategies(new ReadOnlyStrategy(), new IncidentToAdjacentStrategy());
+
+            var bytecode = g.V().Bytecode;
+
+            Assert.Equal(1, bytecode.SourceInstructions.Count);
+            Assert.Equal(2, bytecode.SourceInstructions[0].Arguments.Length);
+            Assert.Equal("withStrategies", bytecode.SourceInstructions[0].OperatorName);
+            Assert.Equal(new ReadOnlyStrategy(), bytecode.SourceInstructions[0].Arguments[0]);
+            Assert.Equal(new IncidentToAdjacentStrategy(), bytecode.SourceInstructions[0].Arguments[1]);
+            Assert.Equal(1, bytecode.StepInstructions.Count);
+            Assert.Equal("V", bytecode.StepInstructions[0].OperatorName);
+        }
+
+        [Fact]
+        public void TraversalWithStrategies_StrategyWithTraversalInConfig_IncludeTraversalInInConfigInBytecode()
+        {
+            var graph = new Graph();
+            var g = graph.Traversal();
+
+            var bytecode = g.WithStrategies(new SubgraphStrategy(__.Has("name", "marko"))).Bytecode;
+
+            Assert.Equal(1, bytecode.SourceInstructions.Count);
+            Assert.Equal(1, bytecode.SourceInstructions[0].Arguments.Length);
+            Assert.Equal("withStrategies", bytecode.SourceInstructions[0].OperatorName);
+            Assert.Equal(new SubgraphStrategy(), bytecode.SourceInstructions[0].Arguments[0]);
+            SubgraphStrategy strategy = bytecode.SourceInstructions[0].Arguments[0];
+            Assert.Equal(1, strategy.Configuration.Count);
+            Assert.Equal(typeof(GraphTraversal), strategy.Configuration["vertices"].GetType());
+            GraphTraversal traversal = strategy.Configuration["vertices"];
+            Assert.Equal("has", traversal.Bytecode.StepInstructions[0].OperatorName);
+            Assert.Equal(new List<string> {"name", "marko"}, traversal.Bytecode.StepInstructions[0].Arguments);
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/EnumTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/EnumTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/EnumTests.cs
new file mode 100644
index 0000000..6d0f529
--- /dev/null
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/EnumTests.cs
@@ -0,0 +1,59 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System.Collections.Generic;
+using Gremlin.Net.Process.Traversal;
+using Gremlin.Net.Structure;
+using Xunit;
+
+namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
+{
+    public class EnumTests
+    {
+        private readonly RemoteConnectionFactory _connectionFactory = new RemoteConnectionFactory();
+
+        [Fact]
+        public void ShouldUseOrderDecrInByStep()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g = graph.Traversal().WithRemote(connection);
+
+            var orderedAges = g.V().Values("age").Order().By(Order.decr).ToList();
+
+            Assert.Equal(new List<object> {35, 32, 29, 27}, orderedAges);
+        }
+
+        [Fact]
+        public void ShouldUseTLabelInHasStep()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g = graph.Traversal().WithRemote(connection);
+
+            var personsCount = g.V().Has(T.label, "person").Count().Next();
+
+            Assert.Equal((long) 4, personsCount);
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalSourceTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalSourceTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalSourceTests.cs
new file mode 100644
index 0000000..0e56c2e
--- /dev/null
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalSourceTests.cs
@@ -0,0 +1,55 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System.Collections.Generic;
+using Gremlin.Net.Process.Traversal;
+using Gremlin.Net.Structure;
+using Xunit;
+
+namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
+{
+    public class GraphTraversalSourceTests
+    {
+        private readonly RemoteConnectionFactory _connectionFactory = new RemoteConnectionFactory();
+
+        [Fact]
+        public void ShouldUseSideEffectSpecifiedInWithSideEffect()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g = graph.Traversal().WithRemote(connection);
+
+            var results = g.WithSideEffect("a", new List<string> {"josh", "peter"})
+                .V(1)
+                .Out("created")
+                .In("created")
+                .Values("name")
+                .Where(P.Within("a"))
+                .ToList();
+
+            Assert.Equal(2, results.Count);
+            Assert.Contains("josh", results);
+            Assert.Contains("peter", results);
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
new file mode 100644
index 0000000..ba999f3
--- /dev/null
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
@@ -0,0 +1,169 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using Gremlin.Net.Process.Traversal;
+using Gremlin.Net.Structure;
+using Xunit;
+
+namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
+{
+    public class GraphTraversalTests
+    {
+        private readonly RemoteConnectionFactory _connectionFactory = new RemoteConnectionFactory();
+
+        [Fact]
+        public void g_V_Count()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g = graph.Traversal().WithRemote(connection);
+
+            var count = g.V().Count().Next();
+
+            Assert.Equal((long) 6, count);
+        }
+
+        [Fact]
+        public void g_VX1X_Next()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g = graph.Traversal().WithRemote(connection);
+
+            var vertex = (Vertex) g.V(1).Next();
+
+            Assert.Equal(new Vertex((long) 1), vertex);
+            Assert.Equal((long) 1, vertex.Id);
+        }
+
+        [Fact]
+        public void g_VX1X_NextTraverser()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g = graph.Traversal().WithRemote(connection);
+
+            var traverser = g.V(1).NextTraverser();
+
+            Assert.Equal(new Traverser(new Vertex((long)1)), traverser);
+        }
+
+        [Fact]
+        public void g_VX1X_ToList()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g = graph.Traversal().WithRemote(connection);
+
+            var list = g.V(1).ToList();
+
+            Assert.Equal(1, list.Count);
+        }
+
+        [Fact]
+        public void g_V_RepeatXBothX_TimesX5X_NextX10X()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g = graph.Traversal().WithRemote(connection);
+
+            var result = g.V().Repeat(__.Both()).Times(5).Next(10);
+
+            Assert.Equal(10, result.Count());
+        }
+
+        [Fact]
+        public void g_V_HasXname_markoX_ValueMap_Next()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g = graph.Traversal().WithRemote(connection);
+
+            var receivedValueMap = g.V().Has("name", "marko").ValueMap().Next();
+
+            var expectedValueMap = new Dictionary<string, dynamic>
+            {
+                {"age", new List<object> {29}},
+                {"name", new List<object> {"marko"}}
+            };
+            Assert.Equal(expectedValueMap, receivedValueMap);
+        }
+
+        [Fact]
+        public void g_V_RepeatXOutX_TimesX2X_ValuesXNameX()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g = graph.Traversal().WithRemote(connection);
+
+            var t = g.V().Repeat(__.Out()).Times(2).Values("name");
+            var names = t.ToList();
+
+            Assert.Equal((long) 2, names.Count);
+            Assert.Contains("lop", names);
+            Assert.Contains("ripple", names);
+        }
+
+        [Fact]
+        public void ShortestPathTest()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g = graph.Traversal().WithRemote(connection);
+
+            var shortestPath =
+                (Path) g.V(5).Repeat(__.Both().SimplePath()).Until(__.HasId(6)).Limit(1).Path().Next();
+
+            Assert.Equal((long) 4, shortestPath.Count);
+            Assert.Equal(new Vertex((long) 6), shortestPath[3]);
+        }
+
+        [Fact]
+        public void ShouldUseBindingsInTraversal()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g = graph.Traversal().WithRemote(connection);
+
+            var b = new Bindings();
+            var count = g.V().Has(b.Of("propertyKey", "name"), b.Of("propertyValue", "marko")).OutE().Count().Next();
+
+            Assert.Equal((long) 3, count);
+        }
+
+        [Fact]
+        public async Task ShouldExecuteAsynchronouslyWhenPromiseIsCalled()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g = graph.Traversal().WithRemote(connection);
+
+            var count = await g.V().Count().Promise(t => t.Next());
+
+            Assert.Equal((long) 6, count);
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/PredicateTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/PredicateTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/PredicateTests.cs
new file mode 100644
index 0000000..88587f6
--- /dev/null
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/PredicateTests.cs
@@ -0,0 +1,58 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using Gremlin.Net.Process.Traversal;
+using Gremlin.Net.Structure;
+using Xunit;
+
+namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
+{
+    public class PredicateTests
+    {
+        private readonly RemoteConnectionFactory _connectionFactory = new RemoteConnectionFactory();
+
+        [Fact]
+        public void ShouldUsePredicatesCombinedWithPAndInHasStep()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g = graph.Traversal().WithRemote(connection);
+
+            var count = g.V().Has("age", P.Gt(30).And(P.Lt(35))).Count().Next();
+
+            Assert.Equal((long) 1, count);
+        }
+
+        [Fact]
+        public void ShouldUsePWithinInHasStep()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g = graph.Traversal().WithRemote(connection);
+
+            var count = g.V().Has("name", P.Within("josh", "vadas")).Count().Next();
+
+            Assert.Equal((long) 2, count);
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/RemoteConnectionFactory.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/RemoteConnectionFactory.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/RemoteConnectionFactory.cs
new file mode 100644
index 0000000..ab67c26
--- /dev/null
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/RemoteConnectionFactory.cs
@@ -0,0 +1,41 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System;
+using Gremlin.Net.Driver;
+using Gremlin.Net.Process.Remote;
+
+namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
+{
+    internal class RemoteConnectionFactory
+    {
+        private static readonly string TestHost = ConfigProvider.Configuration["TestServerIpAddress"];
+        private static readonly int TestPort = Convert.ToInt32(ConfigProvider.Configuration["TestServerPort"]);
+
+        public IRemoteConnection CreateRemoteConnection()
+        {
+            return new Net.Driver.Remote.DriverRemoteConnection(
+                new GremlinClient(new GremlinServer(TestHost, TestPort)));
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/SideEffectTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/SideEffectTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/SideEffectTests.cs
new file mode 100644
index 0000000..c3629bc
--- /dev/null
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/SideEffectTests.cs
@@ -0,0 +1,221 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using Gremlin.Net.Structure;
+using Xunit;
+
+namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
+{
+    public class SideEffectTests
+    {
+        private readonly RemoteConnectionFactory _connectionFactory = new RemoteConnectionFactory();
+
+        [Fact]
+        public void ShouldReturnCachedSideEffectWhenGetIsCalledAfterClose()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g = graph.Traversal().WithRemote(connection);
+            var t = g.V().Aggregate("a").Iterate();
+
+            t.SideEffects.Get("a");
+            t.SideEffects.Close();
+            var results = t.SideEffects.Get("a");
+
+            Assert.NotNull(results);
+        }
+
+        [Fact]
+        public void ShouldThrowWhenGetIsCalledAfterCloseAndNoSideEffectsAreCachec()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g = graph.Traversal().WithRemote(connection);
+            var t = g.V().Aggregate("a").Iterate();
+
+            t.SideEffects.Close();
+            Assert.Throws<InvalidOperationException>(() => t.SideEffects.Get("a"));
+        }
+
+        [Fact]
+        public void ShouldThrowWhenGetIsCalledAfterDisposeAndNoSideEffectsAreCachec()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g = graph.Traversal().WithRemote(connection);
+            var t = g.V().Aggregate("a").Iterate();
+
+            t.SideEffects.Dispose();
+            Assert.Throws<InvalidOperationException>(() => t.SideEffects.Get("a"));
+        }
+
+        [Fact]
+        public void ShouldReturnSideEffectValueWhenGetIsCalledForGroupCountTraversal()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g = graph.Traversal().WithRemote(connection);
+            var t = g.V().Out("created").GroupCount("m").By("name").Iterate();
+            t.SideEffects.Keys();
+
+            var m = t.SideEffects.Get("m") as Dictionary<string, dynamic>;
+
+            Assert.Equal(2, m.Count);
+            Assert.Equal((long) 3, m["lop"]);
+            Assert.Equal((long) 1, m["ripple"]);
+        }
+
+        [Fact]
+        public void ShouldReturnSideEffectValueWhenGetIsCalledOnATraversalWithSideEffect()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g = graph.Traversal().WithRemote(connection);
+            var t = g.WithSideEffect("a", new List<string> {"first", "second"}).V().Iterate();
+            t.SideEffects.Keys();
+
+            var a = t.SideEffects.Get("a") as List<object>;
+
+            Assert.Equal(2, a.Count);
+            Assert.Equal("first", a[0]);
+            Assert.Equal("second", a[1]);
+        }
+
+        [Fact]
+        public void ShouldThrowWhenGetIsCalledWithAnUnknownKey()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g = graph.Traversal().WithRemote(connection);
+            var t = g.V().Iterate();
+
+            Assert.Throws<KeyNotFoundException>(() => t.SideEffects.Get("m"));
+        }
+
+        [Fact]
+        public void ShouldReturnBothSideEffectForTraversalWithTwoSideEffects_()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g = graph.Traversal().WithRemote(connection);
+
+            var t = g.V().Out("created").GroupCount("m").By("name").Values("name").Aggregate("n").Iterate();
+
+            var keys = t.SideEffects.Keys().ToList();
+            Assert.Equal(2, keys.Count);
+            Assert.Contains("m", keys);
+            Assert.Contains("n", keys);
+            var n = (Dictionary<object, long>) t.SideEffects.Get("n");
+            Assert.Equal(2, n.Count);
+            Assert.Equal(3, n["lop"]);
+            Assert.Equal(1, n["ripple"]);
+        }
+
+        [Fact]
+        public void ShouldReturnAnEmptyCollectionWhenKeysIsCalledForTraversalWithoutSideEffect()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g = graph.Traversal().WithRemote(connection);
+
+            var t = g.V().Iterate();
+            var keys = t.SideEffects.Keys();
+
+            Assert.Equal(0, keys.Count);
+        }
+
+        [Fact]
+        public void ShouldReturnCachedKeysWhenForCloseAfterSomeGet()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g = graph.Traversal().WithRemote(connection);
+            var t = g.V().Aggregate("a").Aggregate("b").Iterate();
+
+            t.SideEffects.Get("a");
+            t.SideEffects.Close();
+            var keys = t.SideEffects.Keys();
+
+            Assert.Equal(2, keys.Count);
+            Assert.Contains("a", keys);
+            Assert.Contains("b", keys);
+        }
+
+        [Fact]
+        public void ShouldReturnSideEffectKeyWhenKeysIsCalledForNamedGroupCount()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g = graph.Traversal().WithRemote(connection);
+            var t = g.V().Out("created").GroupCount("m").By("name").Iterate();
+
+            var keys = t.SideEffects.Keys();
+
+            var keysList = keys.ToList();
+            Assert.Equal(1, keysList.Count);
+            Assert.Contains("m", keysList);
+        }
+
+        [Fact]
+        public async Task ShouldReturnSideEffectsKeysWhenKeysIsCalledOnTraversalThatExecutedAsynchronously()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g = graph.Traversal().WithRemote(connection);
+
+            var t = await g.V().Aggregate("a").Promise(x => x);
+            var keys = t.SideEffects.Keys();
+
+            Assert.Equal(1, keys.Count);
+            Assert.Contains("a", keys);
+        }
+
+        [Fact]
+        public async Task ShouldReturnSideEffectValueWhenGetIsCalledOnTraversalThatExecutedAsynchronously()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g = graph.Traversal().WithRemote(connection);
+
+            var t = await g.V().Aggregate("a").Promise(x => x);
+            var value = t.SideEffects.Get("a");
+
+            Assert.NotNull(value);
+        }
+
+        [Fact]
+        public async Task ShouldNotThrowWhenCloseIsCalledOnTraversalThatExecutedAsynchronously()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g = graph.Traversal().WithRemote(connection);
+
+            var t = await g.V().Aggregate("a").Promise(x => x);
+            t.SideEffects.Close();
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/StrategiesTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/StrategiesTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/StrategiesTests.cs
new file mode 100644
index 0000000..6c7d8b6
--- /dev/null
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/StrategiesTests.cs
@@ -0,0 +1,193 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System.Threading.Tasks;
+using Gremlin.Net.Driver.Exceptions;
+using Gremlin.Net.Process.Traversal;
+using Gremlin.Net.Process.Traversal.Strategy.Decoration;
+using Gremlin.Net.Process.Traversal.Strategy.Verification;
+using Gremlin.Net.Structure;
+using Xunit;
+
+namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
+{
+    public class StrategiesTests
+    {
+        private readonly RemoteConnectionFactory _connectionFactory = new RemoteConnectionFactory();
+
+        [Fact]
+        public void g_V_Count_Next_WithVertexLabelSubgraphStrategy()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g =
+                graph.Traversal()
+                    .WithRemote(connection)
+                    .WithStrategies(new SubgraphStrategy(vertexCriterion: __.HasLabel("person")));
+
+            var count = g.V().Count().Next();
+
+            Assert.Equal((long) 4, count);
+        }
+
+        [Fact]
+        public void g_E_Count_Next_WithVertexAndEdgeLabelSubgraphStrategy()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g =
+                graph.Traversal()
+                    .WithRemote(connection)
+                    .WithStrategies(new SubgraphStrategy(vertexCriterion: __.HasLabel("person"),
+                        edgeCriterion: __.HasLabel("created")));
+
+            var count = g.E().Count().Next();
+
+            Assert.Equal((long)0, count);
+        }
+
+        [Fact]
+        public void g_V_Label_Dedup_Count_Next_WithVertexLabelSubgraphStrategy()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g =
+                graph.Traversal()
+                    .WithRemote(connection)
+                    .WithStrategies(new SubgraphStrategy(vertexCriterion: __.HasLabel("person")));
+
+            var count = g.V().Label().Dedup().Count().Next();
+
+            Assert.Equal((long)1, count);
+        }
+
+        [Fact]
+        public void g_V_Label_Dedup_Next_WWithVertexLabelSubgraphStrategy()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g =
+                graph.Traversal()
+                    .WithRemote(connection)
+                    .WithStrategies(new SubgraphStrategy(vertexCriterion: __.HasLabel("person")));
+
+            var label = g.V().Label().Dedup().Next();
+
+            Assert.Equal("person", label);
+        }
+
+        [Fact]
+        public void g_V_Count_Next_WithVertexHasPropertySubgraphStrategy()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g =
+                graph.Traversal()
+                    .WithRemote(connection)
+                    .WithStrategies(new SubgraphStrategy(vertexCriterion: __.Has("name", "marko")));
+
+            var count = g.V().Count().Next();
+
+            Assert.Equal((long)1, count);
+        }
+
+        [Fact]
+        public void g_E_Count_Next_WithEdgeLimitSubgraphStrategy()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g =
+                graph.Traversal()
+                    .WithRemote(connection)
+                    .WithStrategies(new SubgraphStrategy(edgeCriterion: __.Limit(0)));
+
+            var count = g.E().Count().Next();
+
+            Assert.Equal((long)0, count);
+        }
+
+        [Fact]
+        public void g_V_Label_Dedup_Next_WithVertexHasPropertySubgraphStrategy()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g =
+                graph.Traversal()
+                    .WithRemote(connection)
+                    .WithStrategies(new SubgraphStrategy(vertexCriterion: __.Has("name", "marko")));
+
+            var label = g.V().Label().Dedup().Next();
+
+            Assert.Equal("person", label);
+        }
+
+        [Fact]
+        public void g_V_ValuesXnameX_Next_WithVertexHasPropertySubgraphStrategy()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g =
+                graph.Traversal()
+                    .WithRemote(connection)
+                    .WithStrategies(new SubgraphStrategy(vertexCriterion: __.Has("name", "marko")));
+
+            var name = g.V().Values("name").Next();
+
+            Assert.Equal("marko", name);
+        }
+
+        [Fact]
+        public void g_V_Count_Next_WithComputer()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g = graph.Traversal().WithRemote(connection).WithComputer();
+
+            var count = g.V().Count().Next();
+
+            Assert.Equal((long)6, count);
+        }
+
+        [Fact]
+        public void g_E_Count_Next_WithComputer()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g = graph.Traversal().WithRemote(connection).WithComputer();
+
+            var count = g.E().Count().Next();
+
+            Assert.Equal((long)6, count);
+        }
+
+        [Fact]
+        public async Task ShouldThrowWhenModifyingTraversalSourceWithReadOnlyStrategy()
+        {
+            var graph = new Graph();
+            var connection = _connectionFactory.CreateRemoteConnection();
+            var g = graph.Traversal().WithRemote(connection).WithStrategies(new ReadOnlyStrategy());
+
+            await Assert.ThrowsAsync<ResponseException>(async () => await g.AddV("person").Promise(t => t.Next()));
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/GraphSONWriterTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/GraphSONWriterTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/GraphSONWriterTests.cs
new file mode 100644
index 0000000..d8ccabe
--- /dev/null
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/GraphSONWriterTests.cs
@@ -0,0 +1,50 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using Gremlin.Net.Process.Traversal;
+using Gremlin.Net.Structure.IO.GraphSON;
+using Xunit;
+
+namespace Gremlin.Net.IntegrationTest.Process.Traversal
+{
+    public class GraphSONWriterTests
+    {
+        [Fact]
+        public void ShouldSerializeLongPredicateCorrectly()
+        {
+            var writer = CreateStandardGraphSONWriter();
+            var predicate = P.Lt("b").Or(P.Gt("c")).And(P.Neq("d"));
+
+            var graphSon = writer.WriteObject(predicate);
+
+            const string expected =
+                "{\"@type\":\"g:P\",\"@value\":{\"predicate\":\"and\",\"value\":[{\"@type\":\"g:P\",\"@value\":{\"predicate\":\"or\",\"value\":[{\"@type\":\"g:P\",\"@value\":{\"predicate\":\"lt\",\"value\":\"b\"}},{\"@type\":\"g:P\",\"@value\":{\"predicate\":\"gt\",\"value\":\"c\"}}]}},{\"@type\":\"g:P\",\"@value\":{\"predicate\":\"neq\",\"value\":\"d\"}}]}}";
+            Assert.Equal(expected, graphSon);
+        }
+
+        private GraphSONWriter CreateStandardGraphSONWriter()
+        {
+            return new GraphSONWriter();
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.Net.Process.UnitTest/Gremlin.Net.Process.UnitTest.csproj
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.Process.UnitTest/Gremlin.Net.Process.UnitTest.csproj b/gremlin-dotnet/test/Gremlin.Net.Process.UnitTest/Gremlin.Net.Process.UnitTest.csproj
deleted file mode 100644
index 2345f31..0000000
--- a/gremlin-dotnet/test/Gremlin.Net.Process.UnitTest/Gremlin.Net.Process.UnitTest.csproj
+++ /dev/null
@@ -1,22 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>    
-    <TargetFramework>netcoreapp1.1</TargetFramework>
-  </PropertyGroup>
-
-  <ItemGroup>
-    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />
-    <PackageReference Include="Moq" Version="4.7.1" />
-    <PackageReference Include="xunit" Version="2.2.0" />
-    <PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
-  </ItemGroup>
-
-  <ItemGroup>
-    <ProjectReference Include="..\..\src\Gremlin.Net.Process\Gremlin.Net.Process.csproj" />
-  </ItemGroup>
-
-  <ItemGroup>
-    <Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
-  </ItemGroup>
-
-</Project>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.Net.Process.UnitTest/Traversal/BytecodeTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.Process.UnitTest/Traversal/BytecodeTests.cs b/gremlin-dotnet/test/Gremlin.Net.Process.UnitTest/Traversal/BytecodeTests.cs
deleted file mode 100644
index de0a0b7..0000000
--- a/gremlin-dotnet/test/Gremlin.Net.Process.UnitTest/Traversal/BytecodeTests.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using Gremlin.Net.Process.Traversal;
-using Xunit;
-
-namespace Gremlin.Net.Process.UnitTest.Traversal
-{
-    public class BytecodeTests
-    {
-        [Fact]
-        public void ShouldUseBingings()
-        {
-            var bytecode = new Bytecode();
-            var bindings = new Bindings();
-
-            bytecode.AddStep("hasLabel", bindings.Of("label", "testLabel"));
-
-            var arg = bytecode.StepInstructions[0].Arguments[0];
-            var binding = arg as Binding;
-            Assert.Equal(new Binding("label", "testLabel"), binding);
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.Net.Process.UnitTest/Traversal/Strategy/StrategyTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.Process.UnitTest/Traversal/Strategy/StrategyTests.cs b/gremlin-dotnet/test/Gremlin.Net.Process.UnitTest/Traversal/Strategy/StrategyTests.cs
deleted file mode 100644
index 2e7dc5e..0000000
--- a/gremlin-dotnet/test/Gremlin.Net.Process.UnitTest/Traversal/Strategy/StrategyTests.cs
+++ /dev/null
@@ -1,109 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using Gremlin.Net.Process.Traversal.Strategy;
-using Gremlin.Net.Process.Traversal.Strategy.Optimization;
-using Gremlin.Net.Process.Traversal.Strategy.Verification;
-using Xunit;
-
-namespace Gremlin.Net.Process.UnitTest.Traversal.Strategy
-{
-    public class StrategyTests
-    {
-        [Fact]
-        public void ShouldReturnFalseForEqualsOfStrategiesWithDifferentStrategyNames()
-        {
-            var firstStrategy = new TestStrategy("aConfigKey", "aConfigValue");
-            var secondStrategy = new IncidentToAdjacentStrategy();
-
-            var areEqual = firstStrategy.Equals(secondStrategy);
-
-            Assert.False(areEqual);
-        }
-
-        [Fact]
-        public void ShouldReturnTrueForEqualsOfStrategiesWithEqualNamesButDifferentConfigurations()
-        {
-            var firstStrategy = new TestStrategy("aConfigKey", "aConfigValue");
-            var secondStrategy = new TestStrategy("anotherKey", "anotherValue");
-
-            var areEqual = firstStrategy.Equals(secondStrategy);
-
-            Assert.True(areEqual);
-        }
-
-        [Fact]
-        public void ShouldReturnDifferentHashcodesForStrategiesWithDifferentNames()
-        {
-            var firstStrategy = new TestStrategy();
-            var secondStrategy = new ReadOnlyStrategy();
-
-            var firstHashCode = firstStrategy.GetHashCode();
-            var secondHashCode = secondStrategy.GetHashCode();
-
-            Assert.NotEqual(firstHashCode, secondHashCode);
-        }
-
-        [Fact]
-        public void ShouldReturnEqualHashcodesForStrategiesWithEqualNamesButDifferentConfigurations()
-        {
-            var firstStrategy = new TestStrategy("aConfigKey", "aConfigValue");
-            var secondStrategy = new TestStrategy("anotherKey", "anotherValue");
-
-            var firstHashCode = firstStrategy.GetHashCode();
-            var secondHashCode = secondStrategy.GetHashCode();
-
-            Assert.Equal(firstHashCode, secondHashCode);
-        }
-
-        [Fact]
-        public void ShouldReturnClassNameForStrategyNameProperty()
-        {
-            var testStrategy = new TestStrategy();
-
-            Assert.Equal("TestStrategy", testStrategy.StrategyName);
-        }
-
-        [Fact]
-        public void ShouldReturnStrategyNameWhenForToString()
-        {
-            var testStrategy = new TestStrategy();
-
-            var strategyStr = testStrategy.ToString();
-
-            Assert.Equal("TestStrategy", strategyStr);
-        }
-    }
-
-    internal class TestStrategy : AbstractTraversalStrategy
-    {
-        public TestStrategy()
-        {
-        }
-
-        public TestStrategy(string configKey, dynamic configValue)
-        {
-            Configuration[configKey] = configValue;
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/test/Gremlin.Net.Process.UnitTest/Traversal/TestTraversal.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.Process.UnitTest/Traversal/TestTraversal.cs b/gremlin-dotnet/test/Gremlin.Net.Process.UnitTest/Traversal/TestTraversal.cs
deleted file mode 100644
index 34f88df..0000000
--- a/gremlin-dotnet/test/Gremlin.Net.Process.UnitTest/Traversal/TestTraversal.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-#region License
-
-/*
- * 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.
- */
-
-#endregion
-
-using System.Collections.Generic;
-using System.Linq;
-using Gremlin.Net.Process.Traversal;
-
-namespace Gremlin.Net.Process.UnitTest.Traversal
-{
-    public class TestTraversal : Process.Traversal.DefaultTraversal
-    {
-        public TestTraversal(List<object> traverserObjs)
-        {
-            var traversers = new List<Traverser>(traverserObjs.Count);
-            traverserObjs.ForEach(o => traversers.Add(new Traverser(o)));
-            Traversers = traversers;
-        }
-
-        public TestTraversal(IReadOnlyList<object> traverserObjs, IReadOnlyList<long> traverserBulks)
-        {
-            var traversers = new List<Traverser>(traverserObjs.Count);
-            traversers.AddRange(traverserObjs.Select((t, i) => new Traverser(t, traverserBulks[i])));
-            Traversers = traversers;
-        }
-
-        public TestTraversal(IList<ITraversalStrategy> traversalStrategies)
-        {
-            TraversalStrategies = traversalStrategies;
-        }
-    }
-}
\ No newline at end of file


[29/50] [abbrv] tinkerpop git commit: TINKERPOP-1552 Make csproj version match maven pom versions

Posted by sp...@apache.org.
TINKERPOP-1552 Make csproj version match maven pom versions


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

Branch: refs/heads/master
Commit: 83e7496c805eaf2781d93ba3ca909169e7a2e5c2
Parents: e72aaae
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Jun 28 12:42:09 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jul 13 13:46:49 2017 -0400

----------------------------------------------------------------------
 .../src/Gremlin.Net/Gremlin.Net.csproj          | 22 ++++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/83e7496c/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj b/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
index 361ce9e..30e15a7 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
+++ b/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
@@ -1,4 +1,22 @@
-<Project Sdk="Microsoft.NET.Sdk">
+<!--
+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.
+-->
+
+<!--  THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml -->
+<Project Sdk="Microsoft.NET.Sdk">
 
   <PropertyGroup Label="Build">
     <TargetFramework>netstandard1.3</TargetFramework>
@@ -7,7 +25,7 @@
   </PropertyGroup>
 
   <PropertyGroup Label="Package">
-    <Version>3.2.6-beta1</Version>
+    <Version>3.2.6-SNAPSHOT</Version>
     <Title>Gremlin.Net</Title>
     <Authors>Apache TinkerPop</Authors>
     <Description>


[42/50] [abbrv] tinkerpop git commit: Gremlin .NET: GraphSON3 Serialization

Posted by sp...@apache.org.
Gremlin .NET: GraphSON3 Serialization


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

Branch: refs/heads/master
Commit: 8cdc941f084ffc0a8d1013d09cd9a44993b44a40
Parents: 6b3fdcb
Author: Jorge Bay Gondra <jo...@gmail.com>
Authored: Fri Jul 14 17:56:41 2017 +0200
Committer: Jorge Bay Gondra <jo...@gmail.com>
Committed: Fri Jul 14 17:56:41 2017 +0200

----------------------------------------------------------------------
 .../src/Gremlin.Net/Driver/GremlinClient.cs     |   2 +-
 .../Structure/IO/GraphSON/GraphSON2Writer.cs    |  51 +++++
 .../Structure/IO/GraphSON/GraphSON3Writer.cs    |  15 +-
 .../Structure/IO/GraphSON/GraphSONUtil.cs       |  21 +++
 .../Structure/IO/GraphSON/GraphSONWriter.cs     |   6 +-
 .../Structure/IO/GraphSON/ListSerializer.cs     |   6 +-
 .../Structure/IO/GraphSON/MapSerializer.cs      |  16 +-
 .../Structure/IO/GraphSON/SetSerializer.cs      |   3 +-
 .../Process/Traversal/GraphSONWriterTests.cs    |  24 ++-
 .../GraphSON/BytecodeGraphSONSerializerTests.cs |  60 +++---
 .../IO/GraphSON/GraphSONReaderTests.cs          |   1 -
 .../IO/GraphSON/GraphSONWriterTests.cs          | 188 ++++++++++++-------
 .../IO/GraphSON/StrategyWriterTests.cs          |  30 ++-
 13 files changed, 313 insertions(+), 110 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8cdc941f/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs
index a81c17e..9781a7c 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs
@@ -46,7 +46,7 @@ namespace Gremlin.Net.Driver
             GraphSONWriter graphSONWriter = null)
         {
             var reader = graphSONReader ?? new GraphSON3Reader();
-            var writer = graphSONWriter ?? new GraphSONWriter();
+            var writer = graphSONWriter ?? new GraphSON3Writer();
             var connectionFactory = new ConnectionFactory(gremlinServer, reader, writer);
             _connectionPool = new ConnectionPool(connectionFactory);
         }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8cdc941f/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON2Writer.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON2Writer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON2Writer.cs
new file mode 100644
index 0000000..b1083da
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON2Writer.cs
@@ -0,0 +1,51 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace Gremlin.Net.Structure.IO.GraphSON
+{
+    /// <summary>
+    /// Handles serialization of GraphSON2 data.
+    /// </summary>
+    public class GraphSON2Writer : GraphSONWriter
+    {
+        /// <summary>
+        /// Creates a new instance of <see cref="GraphSON2Writer"/>.
+        /// </summary>
+        public GraphSON2Writer()
+        {
+            
+        }
+        
+        /// <summary>
+        /// Creates a new instance of <see cref="GraphSON2Writer"/>.
+        /// </summary>
+        public GraphSON2Writer(IReadOnlyDictionary<Type, IGraphSONSerializer> customSerializerByType) : 
+            base(customSerializerByType)
+        {
+            
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8cdc941f/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON3Writer.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON3Writer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON3Writer.cs
index 96c303c..0469bbe 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON3Writer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSON3Writer.cs
@@ -27,16 +27,27 @@ using System.Collections.Generic;
 namespace Gremlin.Net.Structure.IO.GraphSON
 {
     /// <summary>
-    /// Handles deserialization of GraphSON3 data.
+    /// Handles serialization of GraphSON3 data.
     /// </summary>
     public class GraphSON3Writer : GraphSONWriter
     {
+        private static readonly IDictionary<Type, IGraphSONSerializer> GraphSON3SpecificSerializers =
+            new Dictionary<Type, IGraphSONSerializer>
+            {
+                { typeof(IList<object>), new ListSerializer() },
+                { typeof(ISet<object>), new SetSerializer() },
+                { typeof(IDictionary<object, object>), new MapSerializer() }
+            };
+        
         /// <summary>
         /// Creates a new instance of <see cref="GraphSON3Writer"/>.
         /// </summary>
         public GraphSON3Writer()
         {
-            // TODO: Include GraphSON3 specific serializers
+            foreach (var kv in GraphSON3SpecificSerializers)
+            {
+                Serializers[kv.Key] = kv.Value;
+            }
         }
 
         /// <summary>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8cdc941f/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONUtil.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONUtil.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONUtil.cs
index 037839b..ccdd47a 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONUtil.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONUtil.cs
@@ -21,6 +21,8 @@
 
 #endregion
 
+using System;
+using System.Collections;
 using System.Collections.Generic;
 
 namespace Gremlin.Net.Structure.IO.GraphSON
@@ -58,5 +60,24 @@ namespace Gremlin.Net.Structure.IO.GraphSON
         {
             return $"{namespacePrefix}:{typeName}";
         }
+
+        /// <summary>
+        /// Converts a Collection to a representation of g:List or g:Set
+        /// </summary>
+        internal static Dictionary<string, dynamic> ToCollection(dynamic objectData, GraphSONWriter writer,
+                                                               string typename)
+        {
+            var collection = objectData as IEnumerable;
+            if (collection == null)
+            {
+                throw new InvalidOperationException("Object must implement IEnumerable");
+            }
+            var result = new List<object>();
+            foreach (var item in collection)
+            {
+                result.Add(writer.ToDict(item));
+            }
+            return ToTypedValue(typename, result);
+        }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8cdc941f/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONWriter.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONWriter.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONWriter.cs
index db0ae7d..55d24d6 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONWriter.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONWriter.cs
@@ -36,7 +36,7 @@ namespace Gremlin.Net.Structure.IO.GraphSON
     /// <summary>
     ///     Allows to serialize objects to GraphSON.
     /// </summary>
-    public class GraphSONWriter
+    public abstract class GraphSONWriter
     {
         /// <summary>
         /// Contains the information of serializers by type.
@@ -66,7 +66,7 @@ namespace Gremlin.Net.Structure.IO.GraphSON
         /// <summary>
         ///     Initializes a new instance of the <see cref="GraphSONWriter" /> class.
         /// </summary>
-        public GraphSONWriter()
+        protected GraphSONWriter()
         {
         }
 
@@ -77,7 +77,7 @@ namespace Gremlin.Net.Structure.IO.GraphSON
         ///     <see cref="IGraphSONSerializer" /> serializers identified by their
         ///     <see cref="Type" />.
         /// </param>
-        public GraphSONWriter(IReadOnlyDictionary<Type, IGraphSONSerializer> customSerializerByType)
+        protected GraphSONWriter(IReadOnlyDictionary<Type, IGraphSONSerializer> customSerializerByType)
         {
             foreach (var serializerAndType in customSerializerByType)
                 Serializers[serializerAndType.Key] = serializerAndType.Value;

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8cdc941f/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/ListSerializer.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/ListSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/ListSerializer.cs
index f738ac8..f432c7e 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/ListSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/ListSerializer.cs
@@ -21,7 +21,11 @@
 
 #endregion
 
+using System;
+using System.Collections;
 using System.Collections.Generic;
+using System.Linq;
+using Microsoft.Win32.SafeHandles;
 using Newtonsoft.Json.Linq;
 
 namespace Gremlin.Net.Structure.IO.GraphSON
@@ -48,7 +52,7 @@ namespace Gremlin.Net.Structure.IO.GraphSON
 
         public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
         {
-            throw new System.NotImplementedException();
+            return GraphSONUtil.ToCollection(objectData, writer, "List");
         }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8cdc941f/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/MapSerializer.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/MapSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/MapSerializer.cs
index 5f9c326..a096e3e 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/MapSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/MapSerializer.cs
@@ -21,6 +21,8 @@
 
 #endregion
 
+using System;
+using System.Collections;
 using System.Collections.Generic;
 using Newtonsoft.Json.Linq;
 
@@ -46,7 +48,19 @@ namespace Gremlin.Net.Structure.IO.GraphSON
         
         public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
         {
-            throw new System.NotImplementedException();
+            var map = objectData as IDictionary;
+            if (map == null)
+            {
+                throw new InvalidOperationException("Object must implement IDictionary");
+            }
+            var result = new object[map.Count * 2];
+            var index = 0;
+            foreach (var key in map.Keys)
+            {
+                result[index++] = writer.ToDict(key);
+                result[index++] = writer.ToDict(map[key]);
+            }
+            return GraphSONUtil.ToTypedValue("Map", result);
         }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8cdc941f/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/SetSerializer.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/SetSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/SetSerializer.cs
index ed2a973..e657bd8 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/SetSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/SetSerializer.cs
@@ -21,6 +21,7 @@
 
 #endregion
 
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using Newtonsoft.Json.Linq;
@@ -42,7 +43,7 @@ namespace Gremlin.Net.Structure.IO.GraphSON
 
         public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
         {
-            throw new System.NotImplementedException();
+            return GraphSONUtil.ToCollection(objectData, writer, "Set");
         }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8cdc941f/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/GraphSONWriterTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/GraphSONWriterTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/GraphSONWriterTests.cs
index d8ccabe..a522a22 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/GraphSONWriterTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/GraphSONWriterTests.cs
@@ -21,6 +21,7 @@
 
 #endregion
 
+using System.Collections.Generic;
 using Gremlin.Net.Process.Traversal;
 using Gremlin.Net.Structure.IO.GraphSON;
 using Xunit;
@@ -29,10 +30,19 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal
 {
     public class GraphSONWriterTests
     {
-        [Fact]
-        public void ShouldSerializeLongPredicateCorrectly()
+        /// <summary>
+        /// Parameters for each test supporting multiple versions of GraphSON
+        /// </summary>
+        public static IEnumerable<object[]> Versions => new []
         {
-            var writer = CreateStandardGraphSONWriter();
+            new object[] { 2 },
+            new object[] { 3 }
+        };
+
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldSerializeLongPredicateCorrectly(int version)
+        {
+            var writer = CreateGraphSONWriter(version);
             var predicate = P.Lt("b").Or(P.Gt("c")).And(P.Neq("d"));
 
             var graphSon = writer.WriteObject(predicate);
@@ -42,9 +52,13 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal
             Assert.Equal(expected, graphSon);
         }
 
-        private GraphSONWriter CreateStandardGraphSONWriter()
+        private GraphSONWriter CreateGraphSONWriter(int version)
         {
-            return new GraphSONWriter();
+            if (version == 3)
+            {
+                return new GraphSON3Writer();
+            }
+            return new GraphSON2Writer();
         }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8cdc941f/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/BytecodeGraphSONSerializerTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/BytecodeGraphSONSerializerTests.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/BytecodeGraphSONSerializerTests.cs
index 8ed7a3d..8b87df6 100644
--- a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/BytecodeGraphSONSerializerTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/BytecodeGraphSONSerializerTests.cs
@@ -22,6 +22,7 @@
 #endregion
 
 using System.Collections.Generic;
+using System.Numerics;
 using Gremlin.Net.Process.Traversal;
 using Gremlin.Net.Structure.IO.GraphSON;
 using Xunit;
@@ -30,13 +31,26 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
 {
     public class BytecodeGraphSONSerializerTests
     {
-        private GraphSONWriter CreateGraphSONWriter()
+        /// <summary>
+        /// Parameters for each test supporting multiple versions of GraphSON
+        /// </summary>
+        public static IEnumerable<object[]> Versions => new []
         {
-            return new GraphSONWriter();
+            new object[] { 2 },
+            new object[] { 3 }
+        };
+
+        private GraphSONWriter CreateGraphSONWriter(int version)
+        {
+            if (version == 3)
+            {
+                return new GraphSON3Writer();
+            }
+            return new GraphSON2Writer();
         }
 
-        [Fact]
-        public void ShouldSerializeByteCodeWithNestedTraversal()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldSerializeByteCodeWithNestedTraversal(int version)
         {
             var bytecode = new Bytecode();
             bytecode.AddStep("V");
@@ -44,7 +58,7 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             var nestedTraversal = new TestTraversal(nestedBytecode);
             nestedBytecode.AddStep("out");
             bytecode.AddStep("repeat", nestedTraversal);
-            var graphsonWriter = CreateGraphSONWriter();
+            var graphsonWriter = CreateGraphSONWriter(version);
 
             var graphSON = graphsonWriter.WriteObject(bytecode);
 
@@ -53,14 +67,14 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal(expectedGraphSon, graphSON);
         }
 
-        [Fact]
-        public void ShouldSerializeBytecodeWithNumbers()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldSerializeBytecodeWithNumbers(int version)
         {
             var bytecode = new Bytecode();
             bytecode.AddStep("V", (long) 1);
             bytecode.AddStep("has", "age", 20);
             bytecode.AddStep("has", "height", 6.5);
-            var graphsonWriter = CreateGraphSONWriter();
+            var graphsonWriter = CreateGraphSONWriter(version);
 
             var graphSON = graphsonWriter.WriteObject(bytecode);
 
@@ -69,25 +83,25 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal(expectedGraphSon, graphSON);
         }
 
-        [Fact]
-        public void ShouldSerialize_g_V()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldSerialize_g_V(int version)
         {
             var bytecode = new Bytecode();
             bytecode.AddStep("V");
-            var graphsonWriter = CreateGraphSONWriter();
+            var graphsonWriter = CreateGraphSONWriter(version);
 
             var graphSON = graphsonWriter.WriteObject(bytecode);
 
             Assert.Equal("{\"@type\":\"g:Bytecode\",\"@value\":{\"step\":[[\"V\"]]}}", graphSON);
         }
 
-        [Fact]
-        public void ShouldSerialize_g_V_Count()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldSerialize_g_V_Count(int version)
         {
             var bytecode = new Bytecode();
             bytecode.AddStep("V");
             bytecode.AddStep("count");
-            var graphsonWriter = CreateGraphSONWriter();
+            var graphsonWriter = CreateGraphSONWriter(version);
 
             var graphSON = graphsonWriter.WriteObject(bytecode);
 
@@ -95,14 +109,14 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal(expectedGraphSon, graphSON);
         }
 
-        [Fact]
-        public void ShouldSerialize_g_V_HasXPerson_Name_GremlinX_Count()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldSerialize_g_V_HasXPerson_Name_GremlinX_Count(int version)
         {
             var bytecode = new Bytecode();
             bytecode.AddStep("V");
             bytecode.AddStep("has", "Person", "Name", "Gremlin");
             bytecode.AddStep("count");
-            var graphsonWriter = CreateGraphSONWriter();
+            var graphsonWriter = CreateGraphSONWriter(version);
 
             var graphSON = graphsonWriter.WriteObject(bytecode);
 
@@ -111,15 +125,15 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal(expectedGraphSon, graphSON);
         }
 
-        [Fact]
-        public void ShouldSerializeBytecodeWithSourcesStep()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldSerializeBytecodeWithSourcesStep(int version)
         {
             var bytecode = new Bytecode();
             bytecode.AddSource("withSideEffect", "a", new List<string> {"josh", "peter"});
             bytecode.AddStep("V", 1);
             bytecode.AddStep("values", "name");
             bytecode.AddStep("where", new TraversalPredicate("within", "a"));
-            var graphsonWriter = CreateGraphSONWriter();
+            var graphsonWriter = CreateGraphSONWriter(version);
 
             var graphSON = graphsonWriter.WriteObject(bytecode);
 
@@ -128,12 +142,12 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal(expectedGraphSon, graphSON);
         }
 
-        [Fact]
-        public void ShouldSerializeBytecodeWithBindings()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldSerializeBytecodeWithBindings(int version)
         {
             var bytecode = new Bytecode();
             bytecode.AddStep("V", new Binding("id", 123));
-            var graphsonWriter = CreateGraphSONWriter();
+            var graphsonWriter = CreateGraphSONWriter(version);
 
             var graphSon = graphsonWriter.WriteObject(bytecode);
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8cdc941f/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONReaderTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONReaderTests.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONReaderTests.cs
index e2c6dc9..3fca7f7 100644
--- a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONReaderTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONReaderTests.cs
@@ -107,7 +107,6 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
         [Theory, MemberData(nameof(Versions))]
         public void ShouldDeserializeDictionary(int version)
         {
-            Console.WriteLine("Starting");
             var serializedDict = "{\"age\":[{\"@type\":\"g:Int32\",\"@value\":29}],\"name\":[\"marko\"]}";
             var reader = CreateStandardGraphSONReader(version);
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8cdc941f/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONWriterTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONWriterTests.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONWriterTests.cs
index 77af255..a352a3e 100644
--- a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONWriterTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/GraphSONWriterTests.cs
@@ -33,65 +33,86 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
 {
     public class GraphSONWriterTests
     {
-        private GraphSONWriter CreateStandardGraphSONWriter()
+        /// <summary>
+        /// Parameters for each test supporting multiple versions of GraphSON
+        /// </summary>
+        public static IEnumerable<object[]> Versions => new []
         {
-            return new GraphSONWriter();
+            new object[] { 2 },
+            new object[] { 3 }
+        };
+        
+        /// <summary>
+        /// Parameters for each collections test supporting multiple versions of GraphSON
+        /// </summary>
+        public static IEnumerable<object[]> VersionsSupportingCollections => new []
+        {
+            new object[] { 3 }
+        };
+
+        private GraphSONWriter CreateGraphSONWriter(int version)
+        {
+            if (version == 3)
+            {
+                return new GraphSON3Writer();
+            }
+            return new GraphSON2Writer();
         }
 
-        [Fact]
-        public void ShouldSerializeInt()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldSerializeInt(int version)
         {
-            var writer = CreateStandardGraphSONWriter();
+            var writer = CreateGraphSONWriter(version);
 
             var graphSon = writer.WriteObject(1);
 
             Assert.Equal("{\"@type\":\"g:Int32\",\"@value\":1}", graphSon);
         }
 
-        [Fact]
-        public void ShouldSerializeLong()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldSerializeLong(int version)
         {
-            var writer = CreateStandardGraphSONWriter();
+            var writer = CreateGraphSONWriter(version);
 
             var graphSon = writer.WriteObject((long) 2);
 
             Assert.Equal("{\"@type\":\"g:Int64\",\"@value\":2}", graphSon);
         }
 
-        [Fact]
-        public void ShouldSerializeFloat()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldSerializeFloat(int version)
         {
-            var writer = CreateStandardGraphSONWriter();
+            var writer = CreateGraphSONWriter(version);
 
             var graphSon = writer.WriteObject((float) 3.2);
 
             Assert.Equal("{\"@type\":\"g:Float\",\"@value\":3.2}", graphSon);
         }
 
-        [Fact]
-        public void ShouldSerializeDouble()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldSerializeDouble(int version)
         {
-            var writer = CreateStandardGraphSONWriter();
+            var writer = CreateGraphSONWriter(version);
 
             var graphSon = writer.WriteObject(3.2);
 
             Assert.Equal("{\"@type\":\"g:Double\",\"@value\":3.2}", graphSon);
         }
 
-        [Fact]
-        public void ShouldSerializeBoolean()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldSerializeBoolean(int version)
         {
-            var writer = CreateStandardGraphSONWriter();
+            var writer = CreateGraphSONWriter(version);
 
             var graphSon = writer.WriteObject(true);
 
             Assert.Equal("true", graphSon);
         }
 
-        [Fact]
-        public void ShouldSerializeArray()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldSerializeArray(int version)
         {
-            var writer = CreateStandardGraphSONWriter();
+            var writer = CreateGraphSONWriter(version);
             var array = new[] {5, 6};
 
             var serializedGraphSON = writer.WriteObject(array);
@@ -100,10 +121,10 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal(expectedGraphSON, serializedGraphSON);
         }
 
-        [Fact]
-        public void ShouldSerializeBinding()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldSerializeBinding(int version)
         {
-            var writer = CreateStandardGraphSONWriter();
+            var writer = CreateGraphSONWriter(version);
             var binding = new Binding("theKey", 123);
 
             var graphSon = writer.WriteObject(binding);
@@ -120,7 +141,7 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             {
                 {typeof(TestClass), new TestGraphSONSerializer {TestNamespace = "NS"}}
             };
-            var writer = new GraphSONWriter(customSerializerByType);
+            var writer = new GraphSON2Writer(customSerializerByType);
             var testObj = new TestClass {Value = "test"};
 
             var serialized = writer.WriteObject(testObj);
@@ -136,17 +157,17 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             {
                 {typeof(int), customSerializerMock.Object}
             };
-            var writer = new GraphSONWriter(customSerializerByType);
+            var writer = new GraphSON2Writer(customSerializerByType);
 
             writer.WriteObject(12);
 
             customSerializerMock.Verify(m => m.Dictify(It.Is<int>(v => v == 12), It.IsAny<GraphSONWriter>()));
         }
 
-        [Fact]
-        public void ShouldSerializeDateTime()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldSerializeDateTime(int version)
         {
-            var writer = CreateStandardGraphSONWriter();
+            var writer = CreateGraphSONWriter(version);
             var dateTime = TestUtils.FromJavaTime(1475583442552);
 
             var graphSon = writer.WriteObject(dateTime);
@@ -155,10 +176,10 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal(expected, graphSon);
         }
 
-        [Fact]
-        public void ShouldSerializeDictionary()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldSerializeDictionary(int version)
         {
-            var writer = CreateStandardGraphSONWriter();
+            var writer = CreateGraphSONWriter(version);
             var dictionary = new Dictionary<string, dynamic>
             {
                 {"age", new List<int> {29}},
@@ -171,10 +192,10 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal(expectedGraphSON, serializedDict);
         }
 
-        [Fact]
-        public void ShouldSerializeEdge()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldSerializeEdge(int version)
         {
-            var writer = CreateStandardGraphSONWriter();
+            var writer = CreateGraphSONWriter(version);
             var edge = new Edge(7, new Vertex(0, "person"), "knows", new Vertex(1, "dog"));
 
             var graphSON = writer.WriteObject(edge);
@@ -184,10 +205,10 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal(expected, graphSON);
         }
 
-        [Fact]
-        public void ShouldSerializeEnum()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldSerializeEnum(int version)
         {
-            var writer = CreateStandardGraphSONWriter();
+            var writer = CreateGraphSONWriter(version);
 
             var serializedEnum = writer.WriteObject(Direction.Both);
 
@@ -195,10 +216,10 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal(expectedGraphSON, serializedEnum);
         }
 
-        [Fact]
-        public void ShouldSerializeList()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldSerializeList(int version)
         {
-            var writer = CreateStandardGraphSONWriter();
+            var writer = CreateGraphSONWriter(version);
             var list = new List<int> {5, 6};
 
             var serializedGraphSON = writer.WriteObject(list.ToArray());
@@ -207,10 +228,49 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal(expectedGraphSON, serializedGraphSON);
         }
 
-        [Fact]
-        public void ShouldSerializePredicateWithTwoValues()
+        [Theory, MemberData(nameof(VersionsSupportingCollections))]
+        public void ShouldSerializeGList(int version)
+        {
+            var writer = CreateGraphSONWriter(version);
+            var list = new List<object> {5, 6};
+
+            var serializedGraphSON = writer.WriteObject(list);
+
+            var expectedGraphSON = "{\"@type\":\"g:List\",\"@value\":[{\"@type\":\"g:Int32\",\"@value\":5}," +
+                                   "{\"@type\":\"g:Int32\",\"@value\":6}]}";
+            Assert.Equal(expectedGraphSON, serializedGraphSON);
+        }
+
+        [Theory, MemberData(nameof(VersionsSupportingCollections))]
+        public void ShouldSerializeGSet(int version)
         {
-            var writer = CreateStandardGraphSONWriter();
+            var writer = CreateGraphSONWriter(version);
+            ISet<object> set = new HashSet<object> {600L, 700L};
+
+            var serializedGraphSON = writer.WriteObject(set);
+
+            var expectedGraphSON = "{\"@type\":\"g:Set\",\"@value\":[{\"@type\":\"g:Int64\",\"@value\":600}," +
+                                   "{\"@type\":\"g:Int64\",\"@value\":700}]}";
+            Assert.Equal(expectedGraphSON, serializedGraphSON);
+        }
+
+        [Theory, MemberData(nameof(VersionsSupportingCollections))]
+        public void ShouldSerializeGMap(int version)
+        {
+            var writer = CreateGraphSONWriter(version);
+            IDictionary<object, object> map = new Dictionary<object, object> { { 1L, "a"}, { 200L, "b"}};
+
+            var serializedGraphSON = writer.WriteObject(map);
+
+            var expectedGraphSON = "{\"@type\":\"g:Map\",\"@value\":[{\"@type\":\"g:Int64\",\"@value\":1},\"a\"," +
+                                   "{\"@type\":\"g:Int64\",\"@value\":200},\"b\"]}";
+            Assert.Equal(expectedGraphSON, serializedGraphSON);
+        }
+
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldSerializePredicateWithTwoValues(int version)
+        {
+            var writer = CreateGraphSONWriter(version);
             var predicate = new TraversalPredicate("within", new List<int> {1, 2});
 
             var serializedPredicate = writer.WriteObject(predicate);
@@ -220,10 +280,10 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal(expectedGraphSON, serializedPredicate);
         }
 
-        [Fact]
-        public void ShouldSerializePredicateWithSingleValue()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldSerializePredicateWithSingleValue(int version)
         {
-            var writer = CreateStandardGraphSONWriter();
+            var writer = CreateGraphSONWriter(version);
             var predicate = new TraversalPredicate("lt", 5);
 
             var serializedPredicate = writer.WriteObject(predicate);
@@ -233,10 +293,10 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal(expectedGraphSON, serializedPredicate);
         }
 
-        [Fact]
-        public void ShouldSerializePropertyWithEdgeElement()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldSerializePropertyWithEdgeElement(int version)
         {
-            var writer = CreateStandardGraphSONWriter();
+            var writer = CreateGraphSONWriter(version);
             var property = new Property("aKey", "aValue", new Edge("anId", new Vertex(1), "edgeLabel", new Vertex(2)));
 
             var graphSON = writer.WriteObject(property);
@@ -246,10 +306,10 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal(expected, graphSON);
         }
 
-        [Fact]
-        public void ShouldSerializePropertyWithVertexPropertyElement()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldSerializePropertyWithVertexPropertyElement(int version)
         {
-            var writer = CreateStandardGraphSONWriter();
+            var writer = CreateGraphSONWriter(version);
             var property = new Property("name", "marko",
                 new VertexProperty("anId", "aKey", 21345, new Vertex("vertexId")));
 
@@ -260,10 +320,10 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal(expected, graphSON);
         }
 
-        [Fact]
-        public void ShouldSerializeVertexProperty()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldSerializeVertexProperty(int version)
         {
-            var writer = CreateStandardGraphSONWriter();
+            var writer = CreateGraphSONWriter(version);
             var vertexProperty = new VertexProperty("blah", "keyA", true, new Vertex("stephen"));
 
             var graphSON = writer.WriteObject(vertexProperty);
@@ -273,10 +333,10 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal(expected, graphSON);
         }
 
-        [Fact]
-        public void ShouldSerializeGuid()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldSerializeGuid(int version)
         {
-            var writer = CreateStandardGraphSONWriter();
+            var writer = CreateGraphSONWriter(version);
             var guid = Guid.Parse("41d2e28a-20a4-4ab0-b379-d810dede3786");
 
             var graphSon = writer.WriteObject(guid);
@@ -285,10 +345,10 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal(expected, graphSon);
         }
 
-        [Fact]
-        public void ShouldSerializeVertex()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldSerializeVertex(int version)
         {
-            var writer = CreateStandardGraphSONWriter();
+            var writer = CreateGraphSONWriter(version);
             var vertex = new Vertex(45.23f);
 
             var graphSON = writer.WriteObject(vertex);
@@ -298,10 +358,10 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal(expected, graphSON);
         }
 
-        [Fact]
-        public void ShouldSerializeVertexWithLabel()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldSerializeVertexWithLabel(int version)
         {
-            var writer = CreateStandardGraphSONWriter();
+            var writer = CreateGraphSONWriter(version);
             var vertex = new Vertex((long) 123, "project");
 
             var graphSON = writer.WriteObject(vertex);

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8cdc941f/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/StrategyWriterTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/StrategyWriterTests.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/StrategyWriterTests.cs
index 4bdb141..5a04b54 100644
--- a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/StrategyWriterTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Structure/IO/GraphSON/StrategyWriterTests.cs
@@ -21,6 +21,7 @@
 
 #endregion
 
+using System.Collections.Generic;
 using Gremlin.Net.Process.Traversal;
 using Gremlin.Net.Process.Traversal.Strategy.Decoration;
 using Gremlin.Net.Structure.IO.GraphSON;
@@ -30,16 +31,29 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
 {
     public class StrategyWriterTests
     {
-        private GraphSONWriter CreateGraphSONWriter()
+        /// <summary>
+        /// Parameters for each test supporting multiple versions of GraphSON
+        /// </summary>
+        public static IEnumerable<object[]> Versions => new []
         {
-            return new GraphSONWriter();
+            new object[] { 2 },
+            new object[] { 3 }
+        };
+
+        private GraphSONWriter CreateGraphSONWriter(int version)
+        {
+            if (version == 3)
+            {
+                return new GraphSON3Writer();
+            }
+            return new GraphSON2Writer();
         }
 
-        [Fact]
-        public void ShouldSerializeSubgraphStrategyWithoutValues()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldSerializeSubgraphStrategyWithoutValues(int version)
         {
             var subgraphStrategy = new SubgraphStrategy();
-            var writer = CreateGraphSONWriter();
+            var writer = CreateGraphSONWriter(version);
 
             var graphSon = writer.WriteObject(subgraphStrategy);
 
@@ -47,14 +61,14 @@ namespace Gremlin.Net.UnitTest.Structure.IO.GraphSON
             Assert.Equal(expected, graphSon);
         }
 
-        [Fact]
-        public void ShouldDeserializeSubgraphStrategyWithVertexCriterion()
+        [Theory, MemberData(nameof(Versions))]
+        public void ShouldDeserializeSubgraphStrategyWithVertexCriterion(int version)
         {
             var vertexCriterionBytecode = new Bytecode();
             vertexCriterionBytecode.AddStep("has", "name", "marko");
             var vertexCriterion = new TestTraversal(vertexCriterionBytecode);
             var subgraphStrategy = new SubgraphStrategy(vertexCriterion);
-            var writer = CreateGraphSONWriter();
+            var writer = CreateGraphSONWriter(version);
 
             var graphSon = writer.WriteObject(subgraphStrategy);
 


[02/50] [abbrv] tinkerpop git commit: TINKERPOP-1552 Minor change to dev docs as project structure changed

Posted by sp...@apache.org.
TINKERPOP-1552 Minor change to dev docs as project structure changed


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

Branch: refs/heads/master
Commit: 278cea80b2bc976e65f0cc0e0252adf98b4c4529
Parents: 928c787
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Jun 21 09:12:17 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jul 13 13:46:48 2017 -0400

----------------------------------------------------------------------
 docs/src/dev/developer/development-environment.asciidoc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/278cea80/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 d3ce4bf..128cee1 100644
--- a/docs/src/dev/developer/development-environment.asciidoc
+++ b/docs/src/dev/developer/development-environment.asciidoc
@@ -109,7 +109,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` which also includes Gremlin-Csharp can be build and tested from the command line with:
+`gremlin-dotnet` can be build and tested from the command line with:
 
 [source,text]
 mvn clean install -Pgremlin-dotnet


[49/50] [abbrv] tinkerpop git commit: Merge branch 'TINKERPOP-1552-master'

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


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

Branch: refs/heads/master
Commit: 43d855d97b8b947e3c052e89b4735b8162152093
Parents: 236b2b8 202617d
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Jul 18 09:02:35 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Jul 18 09:02:35 2017 -0400

----------------------------------------------------------------------
 .gitignore                                      |  11 +
 .travis.yml                                     |   5 +
 CHANGELOG.asciidoc                              |   1 +
 docker/Dockerfile                               |   6 +-
 docker/scripts/build.sh                         |   2 +
 .../developer/development-environment.asciidoc  |  35 +
 docs/src/dev/developer/release.asciidoc         |  18 +-
 docs/src/reference/gremlin-variants.asciidoc    | 190 ++++
 gremlin-dotnet/Gremlin.Net.sln                  |  45 +
 gremlin-dotnet/glv/AnonymousTraversal.template  |  52 ++
 gremlin-dotnet/glv/Enum.template                |  35 +
 gremlin-dotnet/glv/GraphTraversal.template      |  75 ++
 .../glv/GraphTraversalSource.template           | 132 +++
 gremlin-dotnet/glv/Gremlin.Net.csproj.template  |  64 ++
 gremlin-dotnet/glv/NamingConversions.template   |  50 +
 gremlin-dotnet/glv/P.template                   |  45 +
 gremlin-dotnet/pom.xml                          | 304 ++++++
 .../src/Gremlin.Net/Driver/Connection.cs        | 163 ++++
 .../src/Gremlin.Net/Driver/ConnectionFactory.cs |  51 +
 .../src/Gremlin.Net/Driver/ConnectionPool.cs    | 114 +++
 .../Driver/Exceptions/ResponseException.cs      |  37 +
 .../src/Gremlin.Net/Driver/GremlinClient.cs     | 101 ++
 .../Driver/GremlinClientExtensions.cs           | 140 +++
 .../src/Gremlin.Net/Driver/GremlinServer.cs     |  70 ++
 .../src/Gremlin.Net/Driver/IConnection.cs       |  35 +
 .../src/Gremlin.Net/Driver/IGremlinClient.cs    |  48 +
 .../Gremlin.Net/Driver/JsonMessageSerializer.cs |  54 ++
 .../Driver/Messages/RequestMessage.cs           | 143 +++
 .../Driver/Messages/ResponseMessage.cs          |  40 +
 .../Driver/Messages/ResponseResult.cs           |  37 +
 .../Driver/Messages/ResponseStatus.cs           |  50 +
 .../Driver/Messages/ResponseStatusCode.cs       |  67 ++
 .../src/Gremlin.Net/Driver/ProxyConnection.cs   |  52 ++
 .../Driver/Remote/DriverRemoteConnection.cs     |  80 ++
 .../Driver/Remote/DriverRemoteTraversal.cs      |  39 +
 .../Remote/DriverRemoteTraversalSideEffects.cs  | 126 +++
 .../ResultsAggregation/AggregatorFactory.cs     |  44 +
 .../ResultsAggregation/DefaultAggregator.cs     |  42 +
 .../ResultsAggregation/DictionaryAggregator.cs  |  44 +
 .../Driver/ResultsAggregation/IAggregator.cs    |  31 +
 .../ResultsAggregation/TraverserAggregator.cs   |  44 +
 gremlin-dotnet/src/Gremlin.Net/Driver/Tokens.cs | 125 +++
 .../Gremlin.Net/Driver/WebSocketConnection.cs   |  96 ++
 .../src/Gremlin.Net/Gremlin.Net.csproj          |  64 ++
 .../Process/Remote/IRemoteConnection.cs         |  42 +
 .../Process/Remote/RemoteStrategy.cs            |  61 ++
 .../Gremlin.Net/Process/Traversal/Barrier.cs    |  35 +
 .../Gremlin.Net/Process/Traversal/Binding.cs    |  80 ++
 .../Gremlin.Net/Process/Traversal/Bindings.cs   |  42 +
 .../Gremlin.Net/Process/Traversal/Bytecode.cs   |  85 ++
 .../Process/Traversal/Cardinality.cs            |  37 +
 .../src/Gremlin.Net/Process/Traversal/Column.cs |  36 +
 .../Process/Traversal/DefaultTraversal.cs       | 198 ++++
 .../Gremlin.Net/Process/Traversal/Direction.cs  |  37 +
 .../Process/Traversal/GraphSONVersion.cs        |  37 +
 .../Process/Traversal/GraphTraversal.cs         | 930 +++++++++++++++++++
 .../Process/Traversal/GraphTraversalSource.cs   | 194 ++++
 .../Process/Traversal/GryoVersion.cs            |  36 +
 .../Gremlin.Net/Process/Traversal/ITraversal.cs | 102 ++
 .../Process/Traversal/ITraversalSideEffects.cs  |  52 ++
 .../Process/Traversal/ITraversalStrategy.cs     |  46 +
 .../Process/Traversal/Instruction.cs            |  52 ++
 .../Process/Traversal/NamingConversions.cs      |  90 ++
 .../Gremlin.Net/Process/Traversal/Operator.cs   |  45 +
 .../src/Gremlin.Net/Process/Traversal/Order.cs  |  37 +
 .../src/Gremlin.Net/Process/Traversal/P.cs      | 117 +++
 .../src/Gremlin.Net/Process/Traversal/Pick.cs   |  36 +
 .../src/Gremlin.Net/Process/Traversal/Pop.cs    |  38 +
 .../src/Gremlin.Net/Process/Traversal/Scope.cs  |  36 +
 .../Strategy/AbstractTraversalStrategy.cs       |  86 ++
 .../Strategy/Decoration/ConnectiveStrategy.cs   |  33 +
 .../Strategy/Decoration/ElementIdStrategy.cs    |  32 +
 .../Decoration/HaltedTraverserStrategy.cs       |  36 +
 .../Strategy/Decoration/PartitionStrategy.cs    |  56 ++
 .../Strategy/Decoration/SubgraphStrategy.cs     |  48 +
 .../Decoration/VertexProgramStrategy.cs         |  52 ++
 .../Finalization/MatchAlgorithmStrategy.cs      |  36 +
 .../Optimization/AdjacentToIncidentStrategy.cs  |  32 +
 .../Optimization/FilterRankingStrategy.cs       |  32 +
 .../Optimization/GraphFilterStrategy.cs         |  31 +
 .../Optimization/IdentityRemovalStrategy.cs     |  32 +
 .../Optimization/IncidentToAdjacentStrategy.cs  |  33 +
 .../Optimization/InlineFilterStrategy.cs        |  32 +
 .../Optimization/LazyBarrierStrategy.cs         |  33 +
 .../Optimization/MatchPredicateStrategy.cs      |  32 +
 .../Strategy/Optimization/OrderLimitStrategy.cs |  31 +
 .../Optimization/PathProcessorStrategy.cs       |  32 +
 .../Optimization/PathRetractionStrategy.cs      |  31 +
 .../Optimization/RangeByIsCountStrategy.cs      |  32 +
 .../Optimization/RepeatUnrollStrategy.cs        |  31 +
 .../Verification/LambdaRestrictionStrategy.cs   |  32 +
 .../Strategy/Verification/ReadOnlyStrategy.cs   |  32 +
 .../src/Gremlin.Net/Process/Traversal/T.cs      |  38 +
 .../Process/Traversal/TraversalPredicate.cs     |  85 ++
 .../Gremlin.Net/Process/Traversal/Traverser.cs  |  75 ++
 .../src/Gremlin.Net/Process/Traversal/__.cs     | 756 +++++++++++++++
 .../src/Gremlin.Net/Structure/Edge.cs           |  61 ++
 .../src/Gremlin.Net/Structure/Element.cs        |  77 ++
 .../src/Gremlin.Net/Structure/Graph.cs          |  43 +
 .../Structure/IO/GraphSON/BindingSerializer.cs  |  42 +
 .../Structure/IO/GraphSON/BytecodeSerializer.cs |  58 ++
 .../Structure/IO/GraphSON/DateDeserializer.cs   |  43 +
 .../Structure/IO/GraphSON/DateSerializer.cs     |  43 +
 .../Structure/IO/GraphSON/DoubleConverter.cs    |  33 +
 .../Structure/IO/GraphSON/EdgeDeserializer.cs   |  43 +
 .../Structure/IO/GraphSON/EdgeSerializer.cs     |  45 +
 .../Structure/IO/GraphSON/EnumSerializer.cs     |  38 +
 .../Structure/IO/GraphSON/FloatConverter.cs     |  33 +
 .../Structure/IO/GraphSON/GraphSON2Reader.cs    |  50 +
 .../Structure/IO/GraphSON/GraphSON2Writer.cs    |  51 +
 .../Structure/IO/GraphSON/GraphSON3Reader.cs    |  66 ++
 .../Structure/IO/GraphSON/GraphSON3Writer.cs    |  68 ++
 .../Structure/IO/GraphSON/GraphSONReader.cs     | 126 +++
 .../Structure/IO/GraphSON/GraphSONTokens.cs     |  32 +
 .../Structure/IO/GraphSON/GraphSONUtil.cs       |  83 ++
 .../Structure/IO/GraphSON/GraphSONWriter.cs     | 149 +++
 .../IO/GraphSON/IGraphSONDeserializer.cs        |  41 +
 .../IO/GraphSON/IGraphSONSerializer.cs          |  41 +
 .../Structure/IO/GraphSON/Int32Converter.cs     |  33 +
 .../Structure/IO/GraphSON/Int64Converter.cs     |  33 +
 .../Structure/IO/GraphSON/ListSerializer.cs     |  58 ++
 .../Structure/IO/GraphSON/MapSerializer.cs      |  66 ++
 .../Structure/IO/GraphSON/NumberConverter.cs    |  45 +
 .../Structure/IO/GraphSON/PathDeserializer.cs   |  41 +
 .../IO/GraphSON/PropertyDeserializer.cs         |  38 +
 .../Structure/IO/GraphSON/PropertySerializer.cs |  64 ++
 .../IO/GraphSON/RequestMessageSerializer.cs     |  43 +
 .../Structure/IO/GraphSON/SetSerializer.cs      |  49 +
 .../IO/GraphSON/TraversalPredicateSerializer.cs |  45 +
 .../IO/GraphSON/TraversalSerializer.cs          |  38 +
 .../IO/GraphSON/TraversalStrategySerializer.cs  |  37 +
 .../Structure/IO/GraphSON/TraverserReader.cs    |  38 +
 .../Structure/IO/GraphSON/UuidDeserializer.cs   |  36 +
 .../Structure/IO/GraphSON/UuidSerializer.cs     |  37 +
 .../Structure/IO/GraphSON/VertexDeserializer.cs |  37 +
 .../IO/GraphSON/VertexPropertyDeserializer.cs   |  41 +
 .../IO/GraphSON/VertexPropertySerializer.cs     |  43 +
 .../Structure/IO/GraphSON/VertexSerializer.cs   |  41 +
 .../src/Gremlin.Net/Structure/Path.cs           | 193 ++++
 .../src/Gremlin.Net/Structure/Property.cs       |  96 ++
 .../src/Gremlin.Net/Structure/Vertex.cs         |  52 ++
 .../src/Gremlin.Net/Structure/VertexProperty.cs |  66 ++
 gremlin-dotnet/src/pom.xml                      | 219 +++++
 .../ConfigProvider.cs                           |  47 +
 .../Driver/ConnectionPoolTests.cs               |  90 ++
 .../Driver/GremlinClientAuthenticationTests.cs  |  86 ++
 .../Driver/GremlinClientTests.cs                | 212 +++++
 .../Driver/MessagesTests.cs                     | 147 +++
 .../Gremlin.Net.IntegrationTest.csproj          |  36 +
 .../Process/Remote/RemoteStrategyTests.cs       |  85 ++
 .../BytecodeGenerationTests.cs                  |  76 ++
 .../BytecodeGeneration/StrategiesTests.cs       | 170 ++++
 .../DriverRemoteConnection/EnumTests.cs         |  59 ++
 .../GraphTraversalSourceTests.cs                |  55 ++
 .../GraphTraversalTests.cs                      | 169 ++++
 .../DriverRemoteConnection/PredicateTests.cs    |  58 ++
 .../RemoteConnectionFactory.cs                  |  41 +
 .../DriverRemoteConnection/SideEffectTests.cs   | 221 +++++
 .../DriverRemoteConnection/StrategiesTests.cs   | 193 ++++
 .../Process/Traversal/GraphSONWriterTests.cs    |  64 ++
 .../Util/RequestMessageProvider.cs              |  54 ++
 .../appsettings.json                            |   5 +
 .../Driver/DriverRemoteConnectionTests.cs       |  51 +
 .../Driver/GremlinServerTests.cs                |  66 ++
 .../Driver/RequestMessageBuilderTests.cs        |  41 +
 .../Gremlin.Net.UnitTest.csproj                 |  28 +
 .../Process/Traversal/BytecodeTests.cs          |  44 +
 .../Traversal/GraphTraversalSourceTests.cs      |  68 ++
 .../Process/Traversal/PredicateTests.cs         |  50 +
 .../Process/Traversal/Strategy/StrategyTests.cs | 109 +++
 .../Process/Traversal/TestTraversal.cs          |  51 +
 .../Process/Traversal/TestTraversalStrategy.cs  |  50 +
 .../Process/Traversal/TraversalTests.cs         | 177 ++++
 .../Process/Traversal/TraverserTests.cs         |  75 ++
 .../Gremlin.Net.UnitTest/Structure/EdgeTests.cs |  57 ++
 .../GraphSON/BytecodeGraphSONSerializerTests.cs | 167 ++++
 .../IO/GraphSON/GraphSONReaderTests.cs          | 376 ++++++++
 .../IO/GraphSON/GraphSONWriterTests.cs          | 384 ++++++++
 .../IO/GraphSON/StrategyWriterTests.cs          |  80 ++
 .../Structure/IO/GraphSON/TestClass.cs          |  30 +
 .../Structure/IO/GraphSON/TestUtils.cs          |  36 +
 .../Gremlin.Net.UnitTest/Structure/PathTests.cs | 416 +++++++++
 .../Structure/PropertyTests.cs                  | 165 ++++
 .../Structure/VertexPropertyTests.cs            |  69 ++
 .../Structure/VertexTests.cs                    |  80 ++
 gremlin-dotnet/test/pom.xml                     | 218 +++++
 gremlin-python/pom.xml                          |   2 -
 pom.xml                                         |   9 +
 188 files changed, 14835 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/43d855d9/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --cc CHANGELOG.asciidoc
index dcdba31,37a5144..3085a2e
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@@ -137,10 -129,9 +137,11 @@@ TinkerPop 3.2.6 (Release Date: NOT OFFI
  
  This release also includes changes from <<release-3-1-8, 3.1.8>>.
  
 +* `ProfileTest` is now less stringent about assertions which will reduce burdens on providers.
  * `GremlinExecutor` begins timeout of script evaluation at the time the script was submitted and not from the time it began evaluation.
+ * Added Gremlin.Net.
  * `ReferenceFactory` and `DetachedFactory` now detach elements in collections accordingly.
 +* Deprecated `GryoLiteMessageSerializerV1d0` in favor of `HaltedTraverserStrategy`.
  * Deprecated the `useMapperFromGraph` configuration option for Gremlin Server serializers.
  * `JavaTranslator` is now smart about handling `BulkSet` and `Tree`.
  * Added annotations to the traversal metrics pretty print.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/43d855d9/docs/src/reference/gremlin-variants.asciidoc
----------------------------------------------------------------------


[22/50] [abbrv] tinkerpop git commit: TINKERPOP-1552 Added groovy-ant to csharp build

Posted by sp...@apache.org.
TINKERPOP-1552 Added groovy-ant to csharp build

Fixed a warning message in the build.


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

Branch: refs/heads/master
Commit: 5acbc81e8c3f81eed2d599a89ceb8e2287c777da
Parents: 2f70fb0
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Thu Jun 8 13:06:43 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jul 13 13:46:48 2017 -0400

----------------------------------------------------------------------
 gremlin-dotnet/test/pom.xml | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5acbc81e/gremlin-dotnet/test/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/pom.xml b/gremlin-dotnet/test/pom.xml
index 6bd2441..488a772 100644
--- a/gremlin-dotnet/test/pom.xml
+++ b/gremlin-dotnet/test/pom.xml
@@ -88,6 +88,11 @@ limitations under the License.
                                 <version>${project.version}</version>
                                 <scope>runtime</scope>
                             </dependency>
+                            <dependency>
+                                <groupId>org.codehaus.groovy</groupId>
+                                <artifactId>groovy-ant</artifactId>
+                                <version>${groovy.version}</version>
+                            </dependency>
                         </dependencies>
                         <executions>
                             <execution>


[31/50] [abbrv] tinkerpop git commit: TINKERPOP-1552 Updated changelog

Posted by sp...@apache.org.
TINKERPOP-1552 Updated changelog


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

Branch: refs/heads/master
Commit: bd87e36c14d38d67d747046b1987307549c8bdb4
Parents: 47973fb
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Thu Jun 29 07:03:03 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jul 13 13:47:19 2017 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/bd87e36c/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 4501dd5..37a5144 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -130,6 +130,7 @@ TinkerPop 3.2.6 (Release Date: NOT OFFICIALLY RELEASED YET)
 This release also includes changes from <<release-3-1-8, 3.1.8>>.
 
 * `GremlinExecutor` begins timeout of script evaluation at the time the script was submitted and not from the time it began evaluation.
+* Added Gremlin.Net.
 * `ReferenceFactory` and `DetachedFactory` now detach elements in collections accordingly.
 * Deprecated the `useMapperFromGraph` configuration option for Gremlin Server serializers.
 * `JavaTranslator` is now smart about handling `BulkSet` and `Tree`.


[45/50] [abbrv] tinkerpop git commit: TINKERPOP-1552 Reverted back to graphson 2.0 for testing

Posted by sp...@apache.org.
TINKERPOP-1552 Reverted back to graphson 2.0 for testing

Still has failing tests here, but less than 3.0. Still not sure what's bad with 3.0.


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

Branch: refs/heads/master
Commit: 9b02c1fa961d8c05ef658ea10b0c27384588529e
Parents: f03235e
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Jul 14 14:15:29 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Jul 14 14:15:29 2017 -0400

----------------------------------------------------------------------
 gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/9b02c1fa/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs
index a251ab7..5db58e9 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs
@@ -37,7 +37,7 @@ namespace Gremlin.Net.Driver
         /// <summary>
         /// Defines the default mime type to use.
         /// </summary>
-        public const string DefaultMimeType = "application/vnd.gremlin-v3.0+json";
+        public const string DefaultMimeType = "application/vnd.gremlin-v2.0+json";
         
         private readonly ConnectionPool _connectionPool;
 


[34/50] [abbrv] tinkerpop git commit: TINKERPOP-1552 Add .glv file to gremlin-dotnet so docker will build it

Posted by sp...@apache.org.
TINKERPOP-1552 Add .glv file to gremlin-dotnet so docker will build it


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

Branch: refs/heads/master
Commit: 62554a88588f2efd0eae3e48e20affa59c1260cd
Parents: 0e04520
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Jul 12 08:47:23 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jul 13 13:47:19 2017 -0400

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


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/62554a88/docker/scripts/build.sh
----------------------------------------------------------------------
diff --git a/docker/scripts/build.sh b/docker/scripts/build.sh
index ea3bd19..30544ac 100755
--- a/docker/scripts/build.sh
+++ b/docker/scripts/build.sh
@@ -68,6 +68,8 @@ if [ -d "${TINKERMEM_PATH}" ]; then
 fi
 
 touch gremlin-python/.glv
+touch gremlin-dotnet/src/.glv
+touch gremlin-dotnet/test/.glv
 
 # use a custom maven settings.xml
 if [ -r "settings.xml" ]; then


[23/50] [abbrv] tinkerpop git commit: Add support for authentication (Plain SASL) to Gremlin.Net

Posted by sp...@apache.org.
Add support for authentication (Plain SASL) to Gremlin.Net


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

Branch: refs/heads/master
Commit: 88415ee35819d017652dfcf8c1e5fde5004b2816
Parents: e02ddcb
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Mon Jun 12 22:09:24 2017 +0200
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jul 13 13:46:48 2017 -0400

----------------------------------------------------------------------
 .../src/Gremlin.Net/Driver/Connection.cs        | 35 +++++++-
 .../src/Gremlin.Net/Driver/ConnectionFactory.cs | 11 +--
 .../src/Gremlin.Net/Driver/GremlinClient.cs     |  2 +-
 .../src/Gremlin.Net/Driver/GremlinServer.cs     | 16 +++-
 .../Driver/Messages/ResponseStatusCode.cs       |  2 +-
 gremlin-dotnet/src/Gremlin.Net/Driver/Tokens.cs | 11 +++
 .../Driver/GremlinClientAuthenticationTests.cs  | 86 ++++++++++++++++++++
 .../appsettings.json                            |  3 +-
 gremlin-dotnet/test/pom.xml                     | 17 ++++
 9 files changed, 171 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/88415ee3/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs
index 2315ed4..126b461 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs
@@ -23,6 +23,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Text;
 using System.Threading.Tasks;
 using Gremlin.Net.Driver.Messages;
 using Gremlin.Net.Driver.ResultsAggregation;
@@ -38,10 +39,15 @@ namespace Gremlin.Net.Driver
         private readonly JsonMessageSerializer _messageSerializer = new JsonMessageSerializer();
         private readonly Uri _uri;
         private readonly WebSocketConnection _webSocketConnection = new WebSocketConnection();
+        private readonly string _username;
+        private readonly string _password;
 
-        public Connection(Uri uri, GraphSONReader graphSONReader, GraphSONWriter graphSONWriter)
+        public Connection(Uri uri, string username, string password, GraphSONReader graphSONReader,
+            GraphSONWriter graphSONWriter)
         {
             _uri = uri;
+            _username = username;
+            _password = password;
             _graphSONReader = graphSONReader;
             _graphSONWriter = graphSONWriter;
         }
@@ -83,7 +89,11 @@ namespace Gremlin.Net.Driver
                 status = receivedMsg.Status;
                 status.ThrowIfStatusIndicatesError();
 
-                if (status.Code != ResponseStatusCode.NoContent)
+                if (status.Code == ResponseStatusCode.Authenticate)
+                {
+                    await AuthenticateAsync().ConfigureAwait(false);
+                }
+                else if (status.Code != ResponseStatusCode.NoContent)
                 {
                     var receivedData = _graphSONReader.ToObject(receivedMsg.Result.Data);
                     foreach (var d in receivedData)
@@ -101,13 +111,32 @@ namespace Gremlin.Net.Driver
                             result.Add(d);
                         }
                 }
-            } while (status.Code == ResponseStatusCode.PartialContent);
+            } while (status.Code == ResponseStatusCode.PartialContent || status.Code == ResponseStatusCode.Authenticate);
 
             if (isAggregatingSideEffects)
                 return new List<T> {(T) aggregator.GetAggregatedResult()};
             return result;
         }
 
+        private async Task AuthenticateAsync()
+        {
+            if (string.IsNullOrEmpty(_username) || string.IsNullOrEmpty(_password))
+                throw new InvalidOperationException(
+                    $"The Gremlin Server requires authentication, but no credentials are specified - username: {_username}, password: {_password}.");
+
+            var message = RequestMessage.Build(Tokens.OpsAuthentication).Processor(Tokens.ProcessorTraversal)
+                .AddArgument(Tokens.ArgsSasl, SaslArgument()).Create();
+
+            await SendAsync(message).ConfigureAwait(false);
+        }
+
+        private string SaslArgument()
+        {
+            var auth = $"\0{_username}\0{_password}";
+            var authBytes = Encoding.UTF8.GetBytes(auth);
+            return Convert.ToBase64String(authBytes);
+        }
+
         #region IDisposable Support
 
         private bool _disposed;

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/88415ee3/gremlin-dotnet/src/Gremlin.Net/Driver/ConnectionFactory.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/ConnectionFactory.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/ConnectionFactory.cs
index d31817c..0041a67 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/ConnectionFactory.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/ConnectionFactory.cs
@@ -21,7 +21,6 @@
 
 #endregion
 
-using System;
 using Gremlin.Net.Structure.IO.GraphSON;
 
 namespace Gremlin.Net.Driver
@@ -30,18 +29,20 @@ namespace Gremlin.Net.Driver
     {
         private readonly GraphSONReader _graphSONReader;
         private readonly GraphSONWriter _graphSONWriter;
-        private readonly Uri _uri;
+        private readonly GremlinServer _gremlinServer;
 
-        public ConnectionFactory(Uri uri, GraphSONReader graphSONReader, GraphSONWriter graphSONWriter)
+        public ConnectionFactory(GremlinServer gremlinServer, GraphSONReader graphSONReader,
+            GraphSONWriter graphSONWriter)
         {
-            _uri = uri;
+            _gremlinServer = gremlinServer;
             _graphSONReader = graphSONReader;
             _graphSONWriter = graphSONWriter;
         }
 
         public Connection CreateConnection()
         {
-            return new Connection(_uri, _graphSONReader, _graphSONWriter);
+            return new Connection(_gremlinServer.Uri, _gremlinServer.Username, _gremlinServer.Password, _graphSONReader,
+                _graphSONWriter);
         }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/88415ee3/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs
index 7833088..46dd8a6 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs
@@ -47,7 +47,7 @@ namespace Gremlin.Net.Driver
         {
             var reader = graphSONReader ?? new GraphSONReader();
             var writer = graphSONWriter ?? new GraphSONWriter();
-            var connectionFactory = new ConnectionFactory(gremlinServer.Uri, reader, writer);
+            var connectionFactory = new ConnectionFactory(gremlinServer, reader, writer);
             _connectionPool = new ConnectionPool(connectionFactory);
         }
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/88415ee3/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinServer.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinServer.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinServer.cs
index 8da6d0b..601bbae 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinServer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinServer.cs
@@ -36,9 +36,13 @@ namespace Gremlin.Net.Driver
         /// <param name="hostname">The hostname of the server.</param>
         /// <param name="port">The port on which Gremlin Server can be reached.</param>
         /// <param name="enableSsl">Specifies whether SSL should be enabled.</param>
-        public GremlinServer(string hostname, int port = 8182, bool enableSsl = false)
+        /// <param name="username">The username to submit on requests that require authentication.</param>
+        /// <param name="password">The password to submit on requests that require authentication.</param>
+        public GremlinServer(string hostname, int port = 8182, bool enableSsl = false, string username = null, string password = null)
         {
             Uri = CreateUri(hostname, port, enableSsl);
+            Username = username;
+            Password = password;
         }
 
         /// <summary>
@@ -47,6 +51,16 @@ namespace Gremlin.Net.Driver
         /// <value>The WebSocket <see cref="System.Uri" /> that the Gremlin Server responds to.</value>
         public Uri Uri { get; }
 
+        /// <summary>
+        ///     Gets the username to submit on requests that require authentication.
+        /// </summary>
+        public string Username { get; }
+
+        /// <summary>
+        ///     Gets the password to submit on requests that require authentication.
+        /// </summary>
+        public string Password { get; }
+
         private Uri CreateUri(string hostname, int port, bool enableSsl)
         {
             var scheme = enableSsl ? "wss" : "ws";

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/88415ee3/gremlin-dotnet/src/Gremlin.Net/Driver/Messages/ResponseStatusCode.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/Messages/ResponseStatusCode.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/Messages/ResponseStatusCode.cs
index 7b0bc94..558e4f6 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/Messages/ResponseStatusCode.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/Messages/ResponseStatusCode.cs
@@ -49,9 +49,9 @@ namespace Gremlin.Net.Driver.Messages
                 case ResponseStatusCode.Success:
                 case ResponseStatusCode.NoContent:
                 case ResponseStatusCode.PartialContent:
+                case ResponseStatusCode.Authenticate:
                     return false;
                 case ResponseStatusCode.Unauthorized:
-                case ResponseStatusCode.Authenticate:
                 case ResponseStatusCode.MalformedRequest:
                 case ResponseStatusCode.InvalidRequestArguments:
                 case ResponseStatusCode.ServerError:

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/88415ee3/gremlin-dotnet/src/Gremlin.Net/Driver/Tokens.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/Tokens.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/Tokens.cs
index 5a940cd..c9dc0fb 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/Tokens.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/Tokens.cs
@@ -31,6 +31,11 @@ namespace Gremlin.Net.Driver
     public class Tokens
     {
         /// <summary>
+        ///     Operation used by the client to authenticate itself.
+        /// </summary>
+        public static string OpsAuthentication = "authentication";
+
+        /// <summary>
         ///     Operation used for a request that contains the Bytecode representation of a Traversal.
         /// </summary>
         public static string OpsBytecode = "bytecode";
@@ -108,6 +113,12 @@ namespace Gremlin.Net.Driver
         /// </summary>
         public static string ArgsEvalTimeout = "scriptEvaluationTimeout";
 
+        /// <summary>
+        ///     Argument name for the response to the server authentication challenge. This value is dependent on the SASL
+        ///     authentication mechanism required by the server.
+        /// </summary>
+        public static string ArgsSasl = "sasl";
+
         internal static string ValAggregateToMap = "map";
         internal static string ValAggregateToBulkSet = "bulkset";
     }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/88415ee3/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Driver/GremlinClientAuthenticationTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Driver/GremlinClientAuthenticationTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Driver/GremlinClientAuthenticationTests.cs
new file mode 100644
index 0000000..5045f3c
--- /dev/null
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Driver/GremlinClientAuthenticationTests.cs
@@ -0,0 +1,86 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System;
+using System.Threading.Tasks;
+using Gremlin.Net.Driver;
+using Gremlin.Net.Driver.Exceptions;
+using Gremlin.Net.IntegrationTest.Util;
+using Xunit;
+
+namespace Gremlin.Net.IntegrationTest.Driver
+{
+    public class GremlinClientAuthenticationTests
+    {
+        private static readonly string TestHost = ConfigProvider.Configuration["TestServerIpAddress"];
+        private static readonly int TestPort = Convert.ToInt32(ConfigProvider.Configuration["TestSecureServerPort"]);
+        private readonly RequestMessageProvider _requestMessageProvider = new RequestMessageProvider();
+
+        [Fact]
+        public async Task ShouldThrowForMissingCredentials()
+        {
+            var gremlinServer = new GremlinServer(TestHost, TestPort);
+            using (var gremlinClient = new GremlinClient(gremlinServer))
+            {
+                var exception = await Assert.ThrowsAsync<InvalidOperationException>(
+                    async () => await gremlinClient.SubmitWithSingleResultAsync<string>(_requestMessageProvider
+                        .GetDummyMessage()));
+
+                Assert.Contains("authentication", exception.Message);
+                Assert.Contains("credentials", exception.Message);
+            }
+        }
+
+        [Theory]
+        [InlineData("unknownUser", "passwordDoesntMatter")]
+        [InlineData("stephen", "wrongPassword")]
+        public async Task ShouldThrowForWrongCredentials(string username, string password)
+        {
+            var gremlinServer = new GremlinServer(TestHost, TestPort, username: username, password: password);
+            using (var gremlinClient = new GremlinClient(gremlinServer))
+            {
+                var exception = await Assert.ThrowsAsync<ResponseException>(
+                    async () => await gremlinClient.SubmitWithSingleResultAsync<string>(_requestMessageProvider
+                        .GetDummyMessage()));
+
+                Assert.Contains("Unauthorized", exception.Message);
+            }
+        }
+
+        [Theory]
+        [InlineData("'Hello' + 'World'", "HelloWorld")]
+        public async Task ScriptShouldBeEvaluatedAndResultReturnedForCorrectCredentials(string requestMsg,
+            string expectedResponse)
+        {
+            const string username = "stephen";
+            const string password = "password";
+            var gremlinServer = new GremlinServer(TestHost, TestPort, username: username, password: password);
+            using (var gremlinClient = new GremlinClient(gremlinServer))
+            {
+                var response = await gremlinClient.SubmitWithSingleResultAsync<string>(requestMsg);
+
+                Assert.Equal(expectedResponse, response);
+            }
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/88415ee3/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/appsettings.json
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/appsettings.json b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/appsettings.json
index 38007ec..5788e50 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/appsettings.json
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/appsettings.json
@@ -1,4 +1,5 @@
 {
   "TestServerIpAddress": "localhost",
-  "TestServerPort": 45950
+  "TestServerPort": 45950,
+  "TestSecureServerPort": 45951
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/88415ee3/gremlin-dotnet/test/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/pom.xml b/gremlin-dotnet/test/pom.xml
index 488a772..d062620 100644
--- a/gremlin-dotnet/test/pom.xml
+++ b/gremlin-dotnet/test/pom.xml
@@ -122,6 +122,19 @@ server.start().join()
 
 project.setContextValue("gremlin.dotnet.server", server)
 log.info("Gremlin Server with no authentication started on port 45950")
+
+def settingsSecure = Settings.read("${gremlin.server.dir}/conf/gremlin-server-modern.yaml")
+settingsSecure.graphs.graph = "${gremlin.server.dir}/conf/tinkergraph-empty.properties"
+settingsSecure.scriptEngines["gremlin-groovy"].scripts = ["${gremlin.server.dir}/scripts/generate-modern.groovy"]
+settingsSecure.port = 45951
+settingsSecure.authentication.className = "org.apache.tinkerpop.gremlin.server.auth.SimpleAuthenticator"
+settingsSecure.authentication.config = [credentialsDb: "${gremlin.server.dir}/conf/tinkergraph-credentials.properties", credentialsDbLocation: "${gremlin.server.dir}/data/credentials.kryo"]
+
+def serverSecure = new GremlinServer(settingsSecure)
+serverSecure.start().join()
+
+project.setContextValue("gremlin.dotnet.server.secure", serverSecure)
+log.info("Gremlin Server with authentication started on port 45951")
 ]]>
                                         </script>
                                     </scripts>
@@ -147,6 +160,10 @@ def server = project.getContextValue("gremlin.dotnet.server")
 log.info("Shutting down $server")
 server.stop().join()
 
+def serverSecure = project.getContextValue("gremlin.dotnet.server.secure")
+log.info("Shutting down $serverSecure")
+serverSecure.stop().join()
+
 log.info("Gremlin Server instance shutdown for gremlin-dotnet")
 ]]>
                                         </script>


[35/50] [abbrv] tinkerpop git commit: TINKERPOP-1552 Put enums on separate lines for Gremlin.Net

Posted by sp...@apache.org.
TINKERPOP-1552 Put enums on separate lines for Gremlin.Net


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

Branch: refs/heads/master
Commit: cd50838c813235bacd7d7c87d8081542157f8cef
Parents: 6ce5e13
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Jul 5 12:09:52 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jul 13 13:47:19 2017 -0400

----------------------------------------------------------------------
 gremlin-dotnet/pom.xml                                  |  2 +-
 .../src/Gremlin.Net/Process/Traversal/Cardinality.cs    |  4 +++-
 .../src/Gremlin.Net/Process/Traversal/Column.cs         |  3 ++-
 .../src/Gremlin.Net/Process/Traversal/Direction.cs      |  4 +++-
 .../Gremlin.Net/Process/Traversal/GraphSONVersion.cs    |  3 ++-
 .../src/Gremlin.Net/Process/Traversal/Operator.cs       | 12 +++++++++++-
 .../src/Gremlin.Net/Process/Traversal/Order.cs          |  8 +++++++-
 .../src/Gremlin.Net/Process/Traversal/Pick.cs           |  3 ++-
 gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs |  4 +++-
 .../src/Gremlin.Net/Process/Traversal/Scope.cs          |  3 ++-
 gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs   |  5 ++++-
 11 files changed, 40 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cd50838c/gremlin-dotnet/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/pom.xml b/gremlin-dotnet/pom.xml
index 20db3d8..aba4315 100644
--- a/gremlin-dotnet/pom.xml
+++ b/gremlin-dotnet/pom.xml
@@ -237,7 +237,7 @@ def createEnum = { enumClass, csharpToJava ->
                                         def csharpName = toCSharpName(enumClass, value.name())
                                         csharpToJava.put(enumClass.simpleName + "." + csharpName, value.name())
                                         return csharpName
-                                    }.join(",")]
+                                    }.join(",\n\t\t")]
 
     def enumTemplate = engine.createTemplate(new File('${project.basedir}/glv/Enum.template')).make(b)
     def enumFile = new File('${project.basedir}/src/Gremlin.Net/Process/Traversal/' + enumClass.getSimpleName() + '.cs')

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cd50838c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs
index c31a142..5a07258 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs
@@ -28,7 +28,9 @@ namespace Gremlin.Net.Process.Traversal
 
     public enum Cardinality
     {
-        List,Set,Single
+        List,
+		Set,
+		Single
     }
     
 #pragma warning restore 1591

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cd50838c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Column.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Column.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Column.cs
index adcf738..432323f 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Column.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Column.cs
@@ -28,7 +28,8 @@ namespace Gremlin.Net.Process.Traversal
 
     public enum Column
     {
-        Keys,Values
+        Keys,
+		Values
     }
     
 #pragma warning restore 1591

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cd50838c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Direction.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Direction.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Direction.cs
index d379263..6f19748 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Direction.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Direction.cs
@@ -28,7 +28,9 @@ namespace Gremlin.Net.Process.Traversal
 
     public enum Direction
     {
-        Both,In,Out
+        Both,
+		In,
+		Out
     }
     
 #pragma warning restore 1591

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cd50838c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphSONVersion.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphSONVersion.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphSONVersion.cs
index 6869ba5..e978bc6 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphSONVersion.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphSONVersion.cs
@@ -28,7 +28,8 @@ namespace Gremlin.Net.Process.Traversal
 
     public enum GraphSONVersion
     {
-        V1_0,V2_0
+        V1_0,
+		V2_0
     }
     
 #pragma warning restore 1591

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cd50838c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Operator.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Operator.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Operator.cs
index 1ebc581..72b0048 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Operator.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Operator.cs
@@ -28,7 +28,17 @@ namespace Gremlin.Net.Process.Traversal
 
     public enum Operator
     {
-        AddAll,And,Assign,Div,Max,Min,Minus,Mult,Or,Sum,SumLong
+        AddAll,
+		And,
+		Assign,
+		Div,
+		Max,
+		Min,
+		Minus,
+		Mult,
+		Or,
+		Sum,
+		SumLong
     }
     
 #pragma warning restore 1591

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cd50838c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs
index 0fdbbf9..1f12710 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs
@@ -28,7 +28,13 @@ namespace Gremlin.Net.Process.Traversal
 
     public enum Order
     {
-        Decr,Incr,KeyDecr,KeyIncr,Shuffle,ValueDecr,ValueIncr
+        Decr,
+		Incr,
+		KeyDecr,
+		KeyIncr,
+		Shuffle,
+		ValueDecr,
+		ValueIncr
     }
     
 #pragma warning restore 1591

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cd50838c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pick.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pick.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pick.cs
index 1f8c2d9..e6394ae 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pick.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pick.cs
@@ -28,7 +28,8 @@ namespace Gremlin.Net.Process.Traversal
 
     public enum Pick
     {
-        Any,None
+        Any,
+		None
     }
     
 #pragma warning restore 1591

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cd50838c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs
index f0975d2..a7a8403 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs
@@ -28,7 +28,9 @@ namespace Gremlin.Net.Process.Traversal
 
     public enum Pop
     {
-        All,First,Last
+        All,
+		First,
+		Last
     }
     
 #pragma warning restore 1591

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cd50838c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Scope.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Scope.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Scope.cs
index 67fa970..d5af93a 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Scope.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Scope.cs
@@ -28,7 +28,8 @@ namespace Gremlin.Net.Process.Traversal
 
     public enum Scope
     {
-        Global,Local
+        Global,
+		Local
     }
     
 #pragma warning restore 1591

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cd50838c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs
index b580aab..c21b50a 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs
@@ -28,7 +28,10 @@ namespace Gremlin.Net.Process.Traversal
 
     public enum T
     {
-        Id,Key,Label,Value
+        Id,
+		Key,
+		Label,
+		Value
     }
     
 #pragma warning restore 1591


[26/50] [abbrv] tinkerpop git commit: TINKERPOP-1552 More consistent use of Gremlin.Net

Posted by sp...@apache.org.
TINKERPOP-1552 More consistent use of Gremlin.Net


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

Branch: refs/heads/master
Commit: 0b2f83d960903d14261426dbf8c529c22cbe5469
Parents: 49f03cb
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Jun 23 16:05:35 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jul 13 13:46:49 2017 -0400

----------------------------------------------------------------------
 gremlin-dotnet/pom.xml                                       | 2 +-
 gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj            | 2 +-
 gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Bytecode.cs | 2 +-
 gremlin-dotnet/src/pom.xml                                   | 4 ++--
 gremlin-dotnet/test/pom.xml                                  | 2 +-
 5 files changed, 6 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0b2f83d9/gremlin-dotnet/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/pom.xml b/gremlin-dotnet/pom.xml
index 6cd7da3..58ac2d6 100644
--- a/gremlin-dotnet/pom.xml
+++ b/gremlin-dotnet/pom.xml
@@ -24,7 +24,7 @@ limitations under the License.
         <version>3.2.6-SNAPSHOT</version>
     </parent>
     <artifactId>gremlin-dotnet</artifactId>
-    <name>Apache TinkerPop :: Gremlin-DotNet</name>
+    <name>Apache TinkerPop :: Gremlin.Net</name>
     <packaging>pom</packaging>
 
     <modules>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0b2f83d9/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj b/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
index 7ac6f8d..361ce9e 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
+++ b/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
@@ -21,7 +21,7 @@
       Gremlin.Net implements Gremlin within .NET. C# syntax has the same constructs as Java including “dot notation”
       for function chaining (a.b.c), round bracket function arguments (a(b,c))`, and support for global namespaces
       (a(b()) vs a(__.b()))`. As such, anyone familiar with Gremlin-Java will immediately be able to work with
-      Gremlin-DotNet. Moreover, there are a few added constructs to Gremlin-DotNet that make traversals a bit more succinct.
+      Gremlin.Net. Moreover, there are a few added constructs to Gremlin.Net that make traversals a bit more succinct.
 
       Please see the reference documentation at Apache TinkerPop for more information on usage.
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0b2f83d9/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Bytecode.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Bytecode.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Bytecode.cs
index 693d331..b76f395 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Bytecode.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Bytecode.cs
@@ -31,7 +31,7 @@ namespace Gremlin.Net.Process.Traversal
     /// <remarks>
     ///     Bytecode is simply a list of ordered instructions.
     ///     Bytecode can be serialized between environments and machines by way of a GraphSON representation.
-    ///     Thus, Gremlin-DotNet can create bytecode in C# and ship it to Gremlin-Java for evaluation in Java.
+    ///     Thus, Gremlin.Net can create bytecode in C# and ship it to Gremlin-Java for evaluation in Java.
     /// </remarks>
     public class Bytecode
     {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0b2f83d9/gremlin-dotnet/src/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/pom.xml b/gremlin-dotnet/src/pom.xml
index 645921f..8f9007e 100644
--- a/gremlin-dotnet/src/pom.xml
+++ b/gremlin-dotnet/src/pom.xml
@@ -24,7 +24,7 @@ limitations under the License.
         <version>3.2.6-SNAPSHOT</version>
     </parent>
     <artifactId>gremlin-dotnet-source</artifactId>
-    <name>Apache TinkerPop :: Gremlin-DotNet - Source</name>
+    <name>Apache TinkerPop :: Gremlin.Net - Source</name>
     <packaging>${packaging.type}</packaging>
 
     <build>
@@ -93,7 +93,7 @@ limitations under the License.
             </build>
         </profile>
         <!--
-        Provides a way to deploy the gremlin-dotnet GLV to nuget. This cannot be part of the standard maven execution
+        Provides a way to deploy the Gremlin.Net GLV to nuget. This cannot be part of the standard maven execution
         because nuget does not have a staging environment like sonatype for releases. As soon as the release is
         published it is public. In our release workflow, deploy occurs prior to vote on the release and we can't
         make this stuff public until the vote is over.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/0b2f83d9/gremlin-dotnet/test/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/pom.xml b/gremlin-dotnet/test/pom.xml
index 7fa75fa..ab2a607 100644
--- a/gremlin-dotnet/test/pom.xml
+++ b/gremlin-dotnet/test/pom.xml
@@ -24,7 +24,7 @@ limitations under the License.
         <version>3.2.6-SNAPSHOT</version>
     </parent>
     <artifactId>gremlin-dotnet-tests</artifactId>
-    <name>Apache TinkerPop :: Gremlin-DotNet - Tests</name>
+    <name>Apache TinkerPop :: Gremlin.Net - Tests</name>
     <packaging>${packaging.type}</packaging>
     <properties>
         <!-- provides a way to convert maven.test.skip value to skipTests for use in skipping dotnet tests -->


[15/50] [abbrv] tinkerpop git commit: Reorganize Gremlin-DotNet

Posted by sp...@apache.org.
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Remote/RemoteStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Remote/RemoteStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Remote/RemoteStrategy.cs
new file mode 100644
index 0000000..4826113
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Remote/RemoteStrategy.cs
@@ -0,0 +1,61 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System.Threading.Tasks;
+using Gremlin.Net.Process.Traversal;
+
+namespace Gremlin.Net.Process.Remote
+{
+    /// <summary>
+    ///     Reconstructs a <see cref="ITraversal" /> by submitting it to a remote server via an
+    ///     <see cref="IRemoteConnection" /> instance.
+    /// </summary>
+    public class RemoteStrategy : ITraversalStrategy
+    {
+        private readonly IRemoteConnection _remoteConnection;
+
+        /// <summary>
+        ///     Initializes a new instance of the <see cref="RemoteStrategy" /> class.
+        /// </summary>
+        /// <param name="remoteConnection">The <see cref="IRemoteConnection" /> that should be used.</param>
+        public RemoteStrategy(IRemoteConnection remoteConnection)
+        {
+            _remoteConnection = remoteConnection;
+        }
+
+        /// <inheritdoc />
+        public void Apply(ITraversal traversal)
+        {
+            ApplyAsync(traversal).Wait();
+        }
+
+        /// <inheritdoc />
+        public async Task ApplyAsync(ITraversal traversal)
+        {
+            if (traversal.Traversers != null) return;
+            var remoteTraversal = await _remoteConnection.SubmitAsync(traversal.Bytecode).ConfigureAwait(false);
+            traversal.SideEffects = remoteTraversal.SideEffects;
+            traversal.Traversers = remoteTraversal.Traversers;
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Barrier.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Barrier.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Barrier.cs
new file mode 100644
index 0000000..13d1796
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Barrier.cs
@@ -0,0 +1,30 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal
+{
+    public enum Barrier
+    {
+        normSack
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Binding.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Binding.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Binding.cs
new file mode 100644
index 0000000..80c8269
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Binding.cs
@@ -0,0 +1,80 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System;
+
+namespace Gremlin.Net.Process.Traversal
+{
+    /// <summary>
+    ///     Associates a variable with a value.
+    /// </summary>
+    public class Binding : IEquatable<Binding>
+    {
+        /// <summary>
+        ///     Initializes a new instance of the <see cref="Binding" /> class.
+        /// </summary>
+        /// <param name="key">The key that identifies the <see cref="Binding" />.</param>
+        /// <param name="value">The value of the <see cref="Binding" />.</param>
+        public Binding(string key, object value)
+        {
+            Key = key;
+            Value = value;
+        }
+
+        /// <summary>
+        ///     Gets the key that identifies the <see cref="Binding" />.
+        /// </summary>
+        public string Key { get; }
+
+        /// <summary>
+        ///     Gets the value of the <see cref="Binding" />.
+        /// </summary>
+        public object Value { get; }
+
+        /// <inheritdoc />
+        public bool Equals(Binding other)
+        {
+            if (other == null)
+                return false;
+            return Key == other.Key && Value.Equals(other.Value);
+        }
+
+        /// <inheritdoc />
+        public override bool Equals(object other)
+        {
+            if (ReferenceEquals(null, other)) return false;
+            if (ReferenceEquals(this, other)) return true;
+            if (other.GetType() != GetType()) return false;
+            return Equals(other as Binding);
+        }
+
+        /// <inheritdoc />
+        public override int GetHashCode()
+        {
+            unchecked
+            {
+                return ((Key?.GetHashCode() ?? 0) * 397) ^ (Value?.GetHashCode() ?? 0);
+            }
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Bindings.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Bindings.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Bindings.cs
new file mode 100644
index 0000000..985369e
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Bindings.cs
@@ -0,0 +1,42 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal
+{
+    /// <summary>
+    ///     Bindings are used to associate a variable with a value.
+    /// </summary>
+    public class Bindings
+    {
+        /// <summary>
+        ///     Binds the variable to the specified value.
+        /// </summary>
+        /// <param name="variable">The variable to bind.</param>
+        /// <param name="value">The value to which the variable should be bound.</param>
+        /// <returns>The bound value.</returns>
+        public Binding Of(string variable, object value)
+        {
+            return new Binding(variable, value);
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Bytecode.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Bytecode.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Bytecode.cs
new file mode 100644
index 0000000..b35e8db
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Bytecode.cs
@@ -0,0 +1,85 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System.Collections.Generic;
+
+namespace Gremlin.Net.Process.Traversal
+{
+    /// <summary>
+    ///     A language agnostic representation of <see cref="ITraversal" /> mutations.
+    /// </summary>
+    /// <remarks>
+    ///     Bytecode is simply a list of ordered instructions.
+    ///     Bytecode can be serialized between environments and machines by way of a GraphSON representation.
+    ///     Thus, Gremlin-CSharp can create bytecode in C# and ship it to Gremlin-Java for evaluation in Java.
+    /// </remarks>
+    public class Bytecode
+    {
+        /// <summary>
+        ///     Initializes a new instance of the <see cref="Bytecode" /> class.
+        /// </summary>
+        public Bytecode()
+        {
+        }
+
+        /// <summary>
+        ///     Initializes a new instance of the <see cref="Bytecode" /> class.
+        /// </summary>
+        /// <param name="byteCode">Already existing <see cref="Bytecode" /> that should be cloned.</param>
+        public Bytecode(Bytecode byteCode)
+        {
+            SourceInstructions = new List<Instruction>(byteCode.SourceInstructions);
+            StepInstructions = new List<Instruction>(byteCode.StepInstructions);
+        }
+
+        /// <summary>
+        ///     Gets the traversal source instructions.
+        /// </summary>
+        public List<Instruction> SourceInstructions { get; } = new List<Instruction>();
+
+        /// <summary>
+        ///     Gets the <see cref="ITraversal" /> instructions.
+        /// </summary>
+        public List<Instruction> StepInstructions { get; } = new List<Instruction>();
+
+        /// <summary>
+        ///     Add a traversal source instruction to the bytecode.
+        /// </summary>
+        /// <param name="sourceName">The traversal source method name (e.g. withSack()).</param>
+        /// <param name="args">The traversal source method arguments.</param>
+        public void AddSource(string sourceName, params object[] args)
+        {
+            SourceInstructions.Add(new Instruction(sourceName, args));
+        }
+
+        /// <summary>
+        ///     Adds a <see cref="ITraversal" /> instruction to the bytecode.
+        /// </summary>
+        /// <param name="stepName">The traversal method name (e.g. out()).</param>
+        /// <param name="args">The traversal method arguments.</param>
+        public void AddStep(string stepName, params object[] args)
+        {
+            StepInstructions.Add(new Instruction(stepName, args));
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs
new file mode 100644
index 0000000..f2365c3
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs
@@ -0,0 +1,32 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal
+{
+    public enum Cardinality
+    {
+        list,
+        set,
+        single
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Column.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Column.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Column.cs
new file mode 100644
index 0000000..ee591da
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Column.cs
@@ -0,0 +1,31 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal
+{
+    public enum Column
+    {
+        keys,
+        values
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/DefaultTraversal.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/DefaultTraversal.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/DefaultTraversal.cs
new file mode 100644
index 0000000..86c636c
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/DefaultTraversal.cs
@@ -0,0 +1,195 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+
+namespace Gremlin.Net.Process.Traversal
+{
+    /// <summary>
+    ///     A traversal represents a directed walk over a graph.
+    /// </summary>
+    public abstract class DefaultTraversal : ITraversal
+    {
+        private IEnumerator<Traverser> _traverserEnumerator;
+
+        /// <summary>
+        ///     Gets the <see cref="Bytecode" /> representation of this traversal.
+        /// </summary>
+        public Bytecode Bytecode { get; protected set; }
+
+        /// <summary>
+        ///     Gets or sets the <see cref="ITraversalSideEffects" /> of this traversal.
+        /// </summary>
+        public ITraversalSideEffects SideEffects { get; set; }
+
+        /// <summary>
+        ///     Gets or sets the <see cref="Traverser" />'s of this traversal that hold the results of the traversal.
+        /// </summary>
+        public IEnumerable<Traverser> Traversers { get; set; }
+
+        /// <summary>
+        ///     Gets or sets the <see cref="ITraversalStrategy" /> strategies of this traversal.
+        /// </summary>
+        protected ICollection<ITraversalStrategy> TraversalStrategies { get; set; } = new List<ITraversalStrategy>();
+
+        private IEnumerator<Traverser> TraverserEnumerator
+            => _traverserEnumerator ?? (_traverserEnumerator = GetTraverserEnumerator());
+
+        /// <inheritdoc />
+        public void Dispose()
+        {
+            Dispose(true);
+        }
+
+        /// <inheritdoc />
+        public bool MoveNext()
+        {
+            var currentTraverser = TraverserEnumerator.Current;
+            if (currentTraverser?.Bulk > 1)
+            {
+                currentTraverser.Bulk--;
+                return true;
+            }
+            return TraverserEnumerator.MoveNext();
+        }
+
+        /// <summary>
+        ///     Reset is not supported.
+        /// </summary>
+        /// <exception cref="NotSupportedException">Thrown always as this operation is not supported.</exception>
+        public void Reset()
+        {
+            throw new NotSupportedException();
+        }
+
+        /// <inheritdoc />
+        public object Current => TraverserEnumerator.Current?.Object;
+
+        private IEnumerator<Traverser> GetTraverserEnumerator()
+        {
+            if (Traversers == null)
+                ApplyStrategies();
+            return Traversers.GetEnumerator();
+        }
+
+        private void ApplyStrategies()
+        {
+            foreach (var strategy in TraversalStrategies)
+                strategy.Apply(this);
+        }
+
+        private async Task ApplyStrategiesAsync()
+        {
+            foreach (var strategy in TraversalStrategies)
+                await strategy.ApplyAsync(this).ConfigureAwait(false);
+        }
+
+        /// <summary>
+        ///     Gets the next result from the traversal.
+        /// </summary>
+        /// <returns>The result.</returns>
+        public object Next()
+        {
+            MoveNext();
+            return Current;
+        }
+
+        /// <summary>
+        ///     Gets the next n-number of results from the traversal.
+        /// </summary>
+        /// <param name="amount">The number of results to get.</param>
+        /// <returns>The n-results.</returns>
+        public IEnumerable<object> Next(int amount)
+        {
+            for (var i = 0; i < amount; i++)
+                yield return Next();
+        }
+
+        /// <summary>
+        ///     Iterates all <see cref="Traverser" /> instances in the traversal.
+        /// </summary>
+        /// <returns>The fully drained traversal.</returns>
+        public ITraversal Iterate()
+        {
+            while (MoveNext())
+            {
+            }
+            return this;
+        }
+
+        /// <summary>
+        ///     Gets the next <see cref="Traverser" />.
+        /// </summary>
+        /// <returns>The next <see cref="Traverser" />.</returns>
+        public Traverser NextTraverser()
+        {
+            TraverserEnumerator.MoveNext();
+            return TraverserEnumerator.Current;
+        }
+
+        /// <summary>
+        ///     Puts all the results into a <see cref="List{T}" />.
+        /// </summary>
+        /// <returns>The results in a list.</returns>
+        public List<object> ToList()
+        {
+            var objs = new List<object>();
+            while (MoveNext())
+                objs.Add(Current);
+            return objs;
+        }
+
+        /// <summary>
+        ///     Puts all the results into a <see cref="HashSet{T}" />.
+        /// </summary>
+        /// <returns>The results in a set.</returns>
+        public HashSet<object> ToSet()
+        {
+            var objs = new HashSet<object>();
+            while (MoveNext())
+                objs.Add(Current);
+            return objs;
+        }
+
+        /// <inheritdoc />
+        protected virtual void Dispose(bool disposing)
+        {
+            if (disposing)
+                SideEffects?.Dispose();
+        }
+
+        /// <summary>
+        ///     Starts a promise to execute a function on the current traversal that will be completed in the future.
+        /// </summary>
+        /// <typeparam name="TReturn">The return type of the <paramref name="callback" />.</typeparam>
+        /// <param name="callback">The function to execute on the current traversal.</param>
+        /// <returns>The result of the executed <paramref name="callback" />.</returns>
+        public async Task<TReturn> Promise<TReturn>(Func<ITraversal, TReturn> callback)
+        {
+            await ApplyStrategiesAsync().ConfigureAwait(false);
+            return callback(this);
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Direction.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Direction.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Direction.cs
new file mode 100644
index 0000000..413e11f
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Direction.cs
@@ -0,0 +1,32 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal
+{
+    public enum Direction
+    {
+        BOTH,
+        IN,
+        OUT
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/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
new file mode 100644
index 0000000..88e9261
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
@@ -0,0 +1,629 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System.Collections.Generic;
+
+namespace Gremlin.Net.Process.Traversal
+{
+    public class GraphTraversal : DefaultTraversal
+    {
+        public GraphTraversal()
+            : this(new List<ITraversalStrategy>(), new Bytecode())
+        {
+        }
+
+        public GraphTraversal(ICollection<ITraversalStrategy> traversalStrategies, Bytecode bytecode)
+        {
+            TraversalStrategies = traversalStrategies;
+            Bytecode = bytecode;
+        }
+
+        public GraphTraversal V(params object[] args)
+        {
+            Bytecode.AddStep("V", args);
+            return this;
+        }
+
+        public GraphTraversal AddE(params object[] args)
+        {
+            Bytecode.AddStep("addE", args);
+            return this;
+        }
+
+        public GraphTraversal AddInE(params object[] args)
+        {
+            Bytecode.AddStep("addInE", args);
+            return this;
+        }
+
+        public GraphTraversal AddOutE(params object[] args)
+        {
+            Bytecode.AddStep("addOutE", args);
+            return this;
+        }
+
+        public GraphTraversal AddV(params object[] args)
+        {
+            Bytecode.AddStep("addV", args);
+            return this;
+        }
+
+        public GraphTraversal Aggregate(params object[] args)
+        {
+            Bytecode.AddStep("aggregate", args);
+            return this;
+        }
+
+        public GraphTraversal And(params object[] args)
+        {
+            Bytecode.AddStep("and", args);
+            return this;
+        }
+
+        public GraphTraversal As(params object[] args)
+        {
+            Bytecode.AddStep("as", args);
+            return this;
+        }
+
+        public GraphTraversal Barrier(params object[] args)
+        {
+            Bytecode.AddStep("barrier", args);
+            return this;
+        }
+
+        public GraphTraversal Both(params object[] args)
+        {
+            Bytecode.AddStep("both", args);
+            return this;
+        }
+
+        public GraphTraversal BothE(params object[] args)
+        {
+            Bytecode.AddStep("bothE", args);
+            return this;
+        }
+
+        public GraphTraversal BothV(params object[] args)
+        {
+            Bytecode.AddStep("bothV", args);
+            return this;
+        }
+
+        public GraphTraversal Branch(params object[] args)
+        {
+            Bytecode.AddStep("branch", args);
+            return this;
+        }
+
+        public GraphTraversal By(params object[] args)
+        {
+            Bytecode.AddStep("by", args);
+            return this;
+        }
+
+        public GraphTraversal Cap(params object[] args)
+        {
+            Bytecode.AddStep("cap", args);
+            return this;
+        }
+
+        public GraphTraversal Choose(params object[] args)
+        {
+            Bytecode.AddStep("choose", args);
+            return this;
+        }
+
+        public GraphTraversal Coalesce(params object[] args)
+        {
+            Bytecode.AddStep("coalesce", args);
+            return this;
+        }
+
+        public GraphTraversal Coin(params object[] args)
+        {
+            Bytecode.AddStep("coin", args);
+            return this;
+        }
+
+        public GraphTraversal Constant(params object[] args)
+        {
+            Bytecode.AddStep("constant", args);
+            return this;
+        }
+
+        public GraphTraversal Count(params object[] args)
+        {
+            Bytecode.AddStep("count", args);
+            return this;
+        }
+
+        public GraphTraversal CyclicPath(params object[] args)
+        {
+            Bytecode.AddStep("cyclicPath", args);
+            return this;
+        }
+
+        public GraphTraversal Dedup(params object[] args)
+        {
+            Bytecode.AddStep("dedup", args);
+            return this;
+        }
+
+        public GraphTraversal Drop(params object[] args)
+        {
+            Bytecode.AddStep("drop", args);
+            return this;
+        }
+
+        public GraphTraversal Emit(params object[] args)
+        {
+            Bytecode.AddStep("emit", args);
+            return this;
+        }
+
+        public GraphTraversal Filter(params object[] args)
+        {
+            Bytecode.AddStep("filter", args);
+            return this;
+        }
+
+        public GraphTraversal FlatMap(params object[] args)
+        {
+            Bytecode.AddStep("flatMap", args);
+            return this;
+        }
+
+        public GraphTraversal Fold(params object[] args)
+        {
+            Bytecode.AddStep("fold", args);
+            return this;
+        }
+
+        public GraphTraversal From(params object[] args)
+        {
+            Bytecode.AddStep("from", args);
+            return this;
+        }
+
+        public GraphTraversal Group(params object[] args)
+        {
+            Bytecode.AddStep("group", args);
+            return this;
+        }
+
+        public GraphTraversal GroupCount(params object[] args)
+        {
+            Bytecode.AddStep("groupCount", args);
+            return this;
+        }
+
+        public GraphTraversal GroupV3d0(params object[] args)
+        {
+            Bytecode.AddStep("groupV3d0", args);
+            return this;
+        }
+
+        public GraphTraversal Has(params object[] args)
+        {
+            Bytecode.AddStep("has", args);
+            return this;
+        }
+
+        public GraphTraversal HasId(params object[] args)
+        {
+            Bytecode.AddStep("hasId", args);
+            return this;
+        }
+
+        public GraphTraversal HasKey(params object[] args)
+        {
+            Bytecode.AddStep("hasKey", args);
+            return this;
+        }
+
+        public GraphTraversal HasLabel(params object[] args)
+        {
+            Bytecode.AddStep("hasLabel", args);
+            return this;
+        }
+
+        public GraphTraversal HasNot(params object[] args)
+        {
+            Bytecode.AddStep("hasNot", args);
+            return this;
+        }
+
+        public GraphTraversal HasValue(params object[] args)
+        {
+            Bytecode.AddStep("hasValue", args);
+            return this;
+        }
+
+        public GraphTraversal Id(params object[] args)
+        {
+            Bytecode.AddStep("id", args);
+            return this;
+        }
+
+        public GraphTraversal Identity(params object[] args)
+        {
+            Bytecode.AddStep("identity", args);
+            return this;
+        }
+
+        public GraphTraversal In(params object[] args)
+        {
+            Bytecode.AddStep("in", args);
+            return this;
+        }
+
+        public GraphTraversal InE(params object[] args)
+        {
+            Bytecode.AddStep("inE", args);
+            return this;
+        }
+
+        public GraphTraversal InV(params object[] args)
+        {
+            Bytecode.AddStep("inV", args);
+            return this;
+        }
+
+        public GraphTraversal Inject(params object[] args)
+        {
+            Bytecode.AddStep("inject", args);
+            return this;
+        }
+
+        public GraphTraversal Is(params object[] args)
+        {
+            Bytecode.AddStep("is", args);
+            return this;
+        }
+
+        public GraphTraversal Key(params object[] args)
+        {
+            Bytecode.AddStep("key", args);
+            return this;
+        }
+
+        public GraphTraversal Label(params object[] args)
+        {
+            Bytecode.AddStep("label", args);
+            return this;
+        }
+
+        public GraphTraversal Limit(params object[] args)
+        {
+            Bytecode.AddStep("limit", args);
+            return this;
+        }
+
+        public GraphTraversal Local(params object[] args)
+        {
+            Bytecode.AddStep("local", args);
+            return this;
+        }
+
+        public GraphTraversal Loops(params object[] args)
+        {
+            Bytecode.AddStep("loops", args);
+            return this;
+        }
+
+        public GraphTraversal Map(params object[] args)
+        {
+            Bytecode.AddStep("map", args);
+            return this;
+        }
+
+        public GraphTraversal MapKeys(params object[] args)
+        {
+            Bytecode.AddStep("mapKeys", args);
+            return this;
+        }
+
+        public GraphTraversal MapValues(params object[] args)
+        {
+            Bytecode.AddStep("mapValues", args);
+            return this;
+        }
+
+        public GraphTraversal Match(params object[] args)
+        {
+            Bytecode.AddStep("match", args);
+            return this;
+        }
+
+        public GraphTraversal Max(params object[] args)
+        {
+            Bytecode.AddStep("max", args);
+            return this;
+        }
+
+        public GraphTraversal Mean(params object[] args)
+        {
+            Bytecode.AddStep("mean", args);
+            return this;
+        }
+
+        public GraphTraversal Min(params object[] args)
+        {
+            Bytecode.AddStep("min", args);
+            return this;
+        }
+
+        public GraphTraversal Not(params object[] args)
+        {
+            Bytecode.AddStep("not", args);
+            return this;
+        }
+
+        public GraphTraversal Option(params object[] args)
+        {
+            Bytecode.AddStep("option", args);
+            return this;
+        }
+
+        public GraphTraversal Optional(params object[] args)
+        {
+            Bytecode.AddStep("optional", args);
+            return this;
+        }
+
+        public GraphTraversal Or(params object[] args)
+        {
+            Bytecode.AddStep("or", args);
+            return this;
+        }
+
+        public GraphTraversal Order(params object[] args)
+        {
+            Bytecode.AddStep("order", args);
+            return this;
+        }
+
+        public GraphTraversal OtherV(params object[] args)
+        {
+            Bytecode.AddStep("otherV", args);
+            return this;
+        }
+
+        public GraphTraversal Out(params object[] args)
+        {
+            Bytecode.AddStep("out", args);
+            return this;
+        }
+
+        public GraphTraversal OutE(params object[] args)
+        {
+            Bytecode.AddStep("outE", args);
+            return this;
+        }
+
+        public GraphTraversal OutV(params object[] args)
+        {
+            Bytecode.AddStep("outV", args);
+            return this;
+        }
+
+        public GraphTraversal PageRank(params object[] args)
+        {
+            Bytecode.AddStep("pageRank", args);
+            return this;
+        }
+
+        public GraphTraversal Path(params object[] args)
+        {
+            Bytecode.AddStep("path", args);
+            return this;
+        }
+
+        public GraphTraversal PeerPressure(params object[] args)
+        {
+            Bytecode.AddStep("peerPressure", args);
+            return this;
+        }
+
+        public GraphTraversal Profile(params object[] args)
+        {
+            Bytecode.AddStep("profile", args);
+            return this;
+        }
+
+        public GraphTraversal Program(params object[] args)
+        {
+            Bytecode.AddStep("program", args);
+            return this;
+        }
+
+        public GraphTraversal Project(params object[] args)
+        {
+            Bytecode.AddStep("project", args);
+            return this;
+        }
+
+        public GraphTraversal Properties(params object[] args)
+        {
+            Bytecode.AddStep("properties", args);
+            return this;
+        }
+
+        public GraphTraversal Property(params object[] args)
+        {
+            Bytecode.AddStep("property", args);
+            return this;
+        }
+
+        public GraphTraversal PropertyMap(params object[] args)
+        {
+            Bytecode.AddStep("propertyMap", args);
+            return this;
+        }
+
+        public GraphTraversal Range(params object[] args)
+        {
+            Bytecode.AddStep("range", args);
+            return this;
+        }
+
+        public GraphTraversal Repeat(params object[] args)
+        {
+            Bytecode.AddStep("repeat", args);
+            return this;
+        }
+
+        public GraphTraversal Sack(params object[] args)
+        {
+            Bytecode.AddStep("sack", args);
+            return this;
+        }
+
+        public GraphTraversal Sample(params object[] args)
+        {
+            Bytecode.AddStep("sample", args);
+            return this;
+        }
+
+        public GraphTraversal Select(params object[] args)
+        {
+            Bytecode.AddStep("select", args);
+            return this;
+        }
+
+        public GraphTraversal SideEffect(params object[] args)
+        {
+            Bytecode.AddStep("sideEffect", args);
+            return this;
+        }
+
+        public GraphTraversal SimplePath(params object[] args)
+        {
+            Bytecode.AddStep("simplePath", args);
+            return this;
+        }
+
+        public GraphTraversal Store(params object[] args)
+        {
+            Bytecode.AddStep("store", args);
+            return this;
+        }
+
+        public GraphTraversal Subgraph(params object[] args)
+        {
+            Bytecode.AddStep("subgraph", args);
+            return this;
+        }
+
+        public GraphTraversal Sum(params object[] args)
+        {
+            Bytecode.AddStep("sum", args);
+            return this;
+        }
+
+        public GraphTraversal Tail(params object[] args)
+        {
+            Bytecode.AddStep("tail", args);
+            return this;
+        }
+
+        public GraphTraversal TimeLimit(params object[] args)
+        {
+            Bytecode.AddStep("timeLimit", args);
+            return this;
+        }
+
+        public GraphTraversal Times(params object[] args)
+        {
+            Bytecode.AddStep("times", args);
+            return this;
+        }
+
+        public GraphTraversal To(params object[] args)
+        {
+            Bytecode.AddStep("to", args);
+            return this;
+        }
+
+        public GraphTraversal ToE(params object[] args)
+        {
+            Bytecode.AddStep("toE", args);
+            return this;
+        }
+
+        public GraphTraversal ToV(params object[] args)
+        {
+            Bytecode.AddStep("toV", args);
+            return this;
+        }
+
+        public GraphTraversal Tree(params object[] args)
+        {
+            Bytecode.AddStep("tree", args);
+            return this;
+        }
+
+        public GraphTraversal Unfold(params object[] args)
+        {
+            Bytecode.AddStep("unfold", args);
+            return this;
+        }
+
+        public GraphTraversal Union(params object[] args)
+        {
+            Bytecode.AddStep("union", args);
+            return this;
+        }
+
+        public GraphTraversal Until(params object[] args)
+        {
+            Bytecode.AddStep("until", args);
+            return this;
+        }
+
+        public GraphTraversal Value(params object[] args)
+        {
+            Bytecode.AddStep("value", args);
+            return this;
+        }
+
+        public GraphTraversal ValueMap(params object[] args)
+        {
+            Bytecode.AddStep("valueMap", args);
+            return this;
+        }
+
+        public GraphTraversal Values(params object[] args)
+        {
+            Bytecode.AddStep("values", args);
+            return this;
+        }
+
+        public GraphTraversal Where(params object[] args)
+        {
+            Bytecode.AddStep("where", args);
+            return this;
+        }
+	}
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs
new file mode 100644
index 0000000..6382781
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs
@@ -0,0 +1,142 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System.Collections.Generic;
+using Gremlin.Net.Process.Remote;
+using Gremlin.Net.Process.Traversal.Strategy.Decoration;
+
+namespace Gremlin.Net.Process.Traversal
+{
+    public class GraphTraversalSource
+    {
+        public ICollection<ITraversalStrategy> TraversalStrategies { get; set; }
+        public Bytecode Bytecode { get; set; }
+
+         public GraphTraversalSource()
+            : this(new List<ITraversalStrategy>(), new Bytecode())
+        {
+        }
+
+        public GraphTraversalSource(ICollection<ITraversalStrategy> traversalStrategies, Bytecode bytecode)
+        {
+            TraversalStrategies = traversalStrategies;
+            Bytecode = bytecode;
+        }
+
+        public GraphTraversalSource WithBulk(params object[] args)
+        {
+            var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
+                new Bytecode(Bytecode));
+            source.Bytecode.AddSource("withBulk", args);
+            return source;
+        }
+
+        public GraphTraversalSource WithPath(params object[] args)
+        {
+            var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
+                new Bytecode(Bytecode));
+            source.Bytecode.AddSource("withPath", args);
+            return source;
+        }
+
+        public GraphTraversalSource WithSack(params object[] args)
+        {
+            var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
+                new Bytecode(Bytecode));
+            source.Bytecode.AddSource("withSack", args);
+            return source;
+        }
+
+        public GraphTraversalSource WithSideEffect(params object[] args)
+        {
+            var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
+                new Bytecode(Bytecode));
+            source.Bytecode.AddSource("withSideEffect", args);
+            return source;
+        }
+
+        public GraphTraversalSource WithStrategies(params object[] args)
+        {
+            var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
+                new Bytecode(Bytecode));
+            source.Bytecode.AddSource("withStrategies", args);
+            return source;
+        }
+
+        public GraphTraversalSource WithoutStrategies(params object[] args)
+        {
+            var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
+                new Bytecode(Bytecode));
+            source.Bytecode.AddSource("withoutStrategies", args);
+            return source;
+        }
+
+        public GraphTraversalSource WithBindings(object bindings)
+        {
+            return this;
+        }
+
+        public GraphTraversalSource WithRemote(IRemoteConnection remoteConnection)
+        {
+            var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
+                new Bytecode(Bytecode));
+            source.TraversalStrategies.Add(new RemoteStrategy(remoteConnection));
+            return source;
+        }
+        
+        public GraphTraversalSource WithComputer(string graphComputer = null, int? workers = null, string persist = null,
+            string result = null, ITraversal vertices = null, ITraversal edges = null,
+            Dictionary<string, dynamic> configuration = null)
+        {
+            return WithStrategies(new VertexProgramStrategy(graphComputer, workers, persist, result, vertices, edges, configuration));
+        }
+
+        public GraphTraversal E(params object[] args)
+        {
+            var traversal = new GraphTraversal(TraversalStrategies, new Bytecode(Bytecode));
+            traversal.Bytecode.AddStep("E", args);
+            return traversal;
+        }
+
+        public GraphTraversal V(params object[] args)
+        {
+            var traversal = new GraphTraversal(TraversalStrategies, new Bytecode(Bytecode));
+            traversal.Bytecode.AddStep("V", args);
+            return traversal;
+        }
+
+        public GraphTraversal AddV(params object[] args)
+        {
+            var traversal = new GraphTraversal(TraversalStrategies, new Bytecode(Bytecode));
+            traversal.Bytecode.AddStep("addV", args);
+            return traversal;
+        }
+
+        public GraphTraversal Inject(params object[] args)
+        {
+            var traversal = new GraphTraversal(TraversalStrategies, new Bytecode(Bytecode));
+            traversal.Bytecode.AddStep("inject", args);
+            return traversal;
+        }
+	}
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversal.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversal.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversal.cs
new file mode 100644
index 0000000..cb472b7
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversal.cs
@@ -0,0 +1,96 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+
+namespace Gremlin.Net.Process.Traversal
+{
+    /// <summary>
+    ///     A traversal represents a directed walk over a graph.
+    /// </summary>
+    public interface ITraversal : IDisposable, IEnumerator
+    {
+        /// <summary>
+        ///     Gets the <see cref="Bytecode" /> representation of this traversal.
+        /// </summary>
+        Bytecode Bytecode { get; }
+
+        /// <summary>
+        ///     Gets or sets the <see cref="ITraversalSideEffects" /> of this traversal.
+        /// </summary>
+        ITraversalSideEffects SideEffects { get; set; }
+
+        /// <summary>
+        ///     Gets or sets the <see cref="Traverser" />'s of this traversal that hold the results of the traversal.
+        /// </summary>
+        IEnumerable<Traverser> Traversers { get; set; }
+
+        /// <summary>
+        ///     Gets the next result from the traversal.
+        /// </summary>
+        /// <returns>The result.</returns>
+        object Next();
+
+        /// <summary>
+        ///     Gets the next n-number of results from the traversal.
+        /// </summary>
+        /// <param name="amount">The number of results to get.</param>
+        /// <returns>The n-results.</returns>
+        IEnumerable<object> Next(int amount);
+
+        /// <summary>
+        ///     Iterates all <see cref="Traverser" /> instances in the traversal.
+        /// </summary>
+        /// <returns>The fully drained traversal.</returns>
+        ITraversal Iterate();
+
+        /// <summary>
+        ///     Gets the next <see cref="Traverser" />.
+        /// </summary>
+        /// <returns>The next <see cref="Traverser" />.</returns>
+        Traverser NextTraverser();
+
+        /// <summary>
+        ///     Puts all the results into a <see cref="List{T}" />.
+        /// </summary>
+        /// <returns>The results in a list.</returns>
+        List<object> ToList();
+
+        /// <summary>
+        ///     Puts all the results into a <see cref="HashSet{T}" />.
+        /// </summary>
+        /// <returns>The results in a set.</returns>
+        HashSet<object> ToSet();
+
+        /// <summary>
+        ///     Starts a promise to execute a function on the current traversal that will be completed in the future.
+        /// </summary>
+        /// <typeparam name="TReturn">The return type of the <paramref name="callback" />.</typeparam>
+        /// <param name="callback">The function to execute on the current traversal.</param>
+        /// <returns>The result of the executed <paramref name="callback" />.</returns>
+        Task<TReturn> Promise<TReturn>(Func<ITraversal, TReturn> callback);
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversalSideEffects.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversalSideEffects.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversalSideEffects.cs
new file mode 100644
index 0000000..7e7b450
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversalSideEffects.cs
@@ -0,0 +1,52 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace Gremlin.Net.Process.Traversal
+{
+    /// <summary>
+    ///     A <see cref="ITraversal" /> can maintain global sideEffects.
+    /// </summary>
+    public interface ITraversalSideEffects : IDisposable
+    {
+        /// <summary>
+        ///     Retrieves the keys of the side-effect that can be supplied to <see cref="Get(string)" />.
+        /// </summary>
+        /// <returns>The keys of the side-effect.</returns>
+        IReadOnlyCollection<string> Keys();
+
+        /// <summary>
+        ///     Gets the side-effect associated with the provided key.
+        /// </summary>
+        /// <param name="key">The key to get the value for.</param>
+        /// <returns>The value associated with key.</returns>
+        object Get(string key);
+
+        /// <summary>
+        ///     Invalidates the side effect cache for traversal.
+        /// </summary>
+        void Close();
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversalStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversalStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversalStrategy.cs
new file mode 100644
index 0000000..991a807
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversalStrategy.cs
@@ -0,0 +1,46 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System.Threading.Tasks;
+
+namespace Gremlin.Net.Process.Traversal
+{
+    /// <summary>
+    ///     A <see cref="ITraversalStrategy" /> defines a particular atomic operation for mutating a
+    ///     <see cref="ITraversal" /> prior to its evaluation.
+    /// </summary>
+    public interface ITraversalStrategy
+    {
+        /// <summary>
+        ///     Applies the strategy to the given <see cref="ITraversal" />.
+        /// </summary>
+        /// <param name="traversal">The <see cref="ITraversal" /> the strategy should be applied to.</param>
+        void Apply(ITraversal traversal);
+
+        /// <summary>
+        ///     Applies the strategy to the given <see cref="ITraversal" /> asynchronously.
+        /// </summary>
+        /// <param name="traversal">The <see cref="ITraversal" /> the strategy should be applied to.</param>
+        Task ApplyAsync(ITraversal traversal);
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Instruction.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Instruction.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Instruction.cs
new file mode 100644
index 0000000..195b7bf
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Instruction.cs
@@ -0,0 +1,52 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal
+{
+    /// <summary>
+    ///     Represents a <see cref="Bytecode" /> instruction by an operator name and its arguments.
+    /// </summary>
+    public class Instruction
+    {
+        /// <summary>
+        ///     Initializes a new instance of the <see cref="Instruction" /> class.
+        /// </summary>
+        /// <param name="operatorName">The name of the operator.</param>
+        /// <param name="arguments">The arguments.</param>
+        public Instruction(string operatorName, params dynamic[] arguments)
+        {
+            OperatorName = operatorName;
+            Arguments = arguments;
+        }
+
+        /// <summary>
+        ///     Gets the name of the operator.
+        /// </summary>
+        public string OperatorName { get; }
+
+        /// <summary>
+        ///     Gets the arguments.
+        /// </summary>
+        public dynamic[] Arguments { get; }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Operator.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Operator.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Operator.cs
new file mode 100644
index 0000000..563f091
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Operator.cs
@@ -0,0 +1,40 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal
+{
+    public enum Operator
+    {
+        addAll,
+        and,
+        assign,
+        div,
+        max,
+        min,
+        minus,
+        mult,
+        or,
+        sum,
+        sumLong
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs
new file mode 100644
index 0000000..bbd0eab
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs
@@ -0,0 +1,36 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal
+{
+    public enum Order
+    {
+        decr,
+        incr,
+        keyDecr,
+        keyIncr,
+        shuffle,
+        valueDecr,
+        valueIncr
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/P.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/P.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/P.cs
new file mode 100644
index 0000000..0ecdccd
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/P.cs
@@ -0,0 +1,107 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+
+namespace Gremlin.Net.Process.Traversal
+{
+    public class P
+    {
+        public static TraversalPredicate Between(params object[] args)
+        {
+            var value = args.Length == 1 ? args[0] : args;
+            return new TraversalPredicate("between", value);
+        }
+
+        public static TraversalPredicate Eq(params object[] args)
+        {
+            var value = args.Length == 1 ? args[0] : args;
+            return new TraversalPredicate("eq", value);
+        }
+
+        public static TraversalPredicate Gt(params object[] args)
+        {
+            var value = args.Length == 1 ? args[0] : args;
+            return new TraversalPredicate("gt", value);
+        }
+
+        public static TraversalPredicate Gte(params object[] args)
+        {
+            var value = args.Length == 1 ? args[0] : args;
+            return new TraversalPredicate("gte", value);
+        }
+
+        public static TraversalPredicate Inside(params object[] args)
+        {
+            var value = args.Length == 1 ? args[0] : args;
+            return new TraversalPredicate("inside", value);
+        }
+
+        public static TraversalPredicate Lt(params object[] args)
+        {
+            var value = args.Length == 1 ? args[0] : args;
+            return new TraversalPredicate("lt", value);
+        }
+
+        public static TraversalPredicate Lte(params object[] args)
+        {
+            var value = args.Length == 1 ? args[0] : args;
+            return new TraversalPredicate("lte", value);
+        }
+
+        public static TraversalPredicate Neq(params object[] args)
+        {
+            var value = args.Length == 1 ? args[0] : args;
+            return new TraversalPredicate("neq", value);
+        }
+
+        public static TraversalPredicate Not(params object[] args)
+        {
+            var value = args.Length == 1 ? args[0] : args;
+            return new TraversalPredicate("not", value);
+        }
+
+        public static TraversalPredicate Outside(params object[] args)
+        {
+            var value = args.Length == 1 ? args[0] : args;
+            return new TraversalPredicate("outside", value);
+        }
+
+        public static TraversalPredicate Test(params object[] args)
+        {
+            var value = args.Length == 1 ? args[0] : args;
+            return new TraversalPredicate("test", value);
+        }
+
+        public static TraversalPredicate Within(params object[] args)
+        {
+            var value = args.Length == 1 ? args[0] : args;
+            return new TraversalPredicate("within", value);
+        }
+
+        public static TraversalPredicate Without(params object[] args)
+        {
+            var value = args.Length == 1 ? args[0] : args;
+            return new TraversalPredicate("without", value);
+        }
+	}
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pick.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pick.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pick.cs
new file mode 100644
index 0000000..f16aa20
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pick.cs
@@ -0,0 +1,31 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal
+{
+    public enum Pick
+    {
+        any,
+        none
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs
new file mode 100644
index 0000000..e0cf62e
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs
@@ -0,0 +1,32 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal
+{
+    public enum Pop
+    {
+        all,
+        first,
+        last
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Scope.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Scope.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Scope.cs
new file mode 100644
index 0000000..c4af316
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Scope.cs
@@ -0,0 +1,31 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal
+{
+    public enum Scope
+    {
+        global,
+        local
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/AbstractTraversalStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/AbstractTraversalStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/AbstractTraversalStrategy.cs
new file mode 100644
index 0000000..8c9666c
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/AbstractTraversalStrategy.cs
@@ -0,0 +1,86 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+
+namespace Gremlin.Net.Process.Traversal.Strategy
+{
+    /// <summary>
+    ///     Provides a common base class for strategies that are only included in <see cref="Bytecode" />
+    ///     to be applied remotely.
+    /// </summary>
+    public abstract class AbstractTraversalStrategy : ITraversalStrategy, IEquatable<AbstractTraversalStrategy>
+    {
+        /// <summary>
+        ///     Gets the name of the strategy.
+        /// </summary>
+        public string StrategyName => GetType().Name;
+
+        /// <summary>
+        ///     Gets the configuration of the strategy.
+        /// </summary>
+        public Dictionary<string, dynamic> Configuration { get; } = new Dictionary<string, dynamic>();
+
+        /// <inheritdoc />
+        public bool Equals(AbstractTraversalStrategy other)
+        {
+            if (ReferenceEquals(null, other)) return false;
+            if (ReferenceEquals(this, other)) return true;
+            return StrategyName == other.StrategyName;
+        }
+
+        /// <inheritdoc />
+        public virtual void Apply(ITraversal traversal)
+        {
+        }
+
+        /// <inheritdoc />
+        public virtual Task ApplyAsync(ITraversal traversal)
+        {
+            return Task.CompletedTask;
+        }
+
+        /// <inheritdoc />
+        public override bool Equals(object obj)
+        {
+            if (ReferenceEquals(null, obj)) return false;
+            if (ReferenceEquals(this, obj)) return true;
+            if (obj.GetType() != GetType()) return false;
+            return Equals((AbstractTraversalStrategy) obj);
+        }
+
+        /// <inheritdoc />
+        public override int GetHashCode()
+        {
+            return StrategyName.GetHashCode();
+        }
+
+        /// <inheritdoc />
+        public override string ToString()
+        {
+            return StrategyName;
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/ConnectiveStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/ConnectiveStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/ConnectiveStrategy.cs
new file mode 100644
index 0000000..2bca7c2
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/ConnectiveStrategy.cs
@@ -0,0 +1,33 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal.Strategy.Decoration
+{
+    /// <summary>
+    ///     ConnectiveStrategy rewrites the binary conjunction form of <c>a.and().b</c> into an AndStep of
+    ///     <c>and(a, b)</c> (likewise for OrStep).
+    /// </summary>
+    public class ConnectiveStrategy : AbstractTraversalStrategy
+    {
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/ElementIdStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/ElementIdStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/ElementIdStrategy.cs
new file mode 100644
index 0000000..6079f58
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/ElementIdStrategy.cs
@@ -0,0 +1,32 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal.Strategy.Decoration
+{
+    /// <summary>
+    ///     Provides a degree of control over element identifier assignment as some graphs don't provide that feature.
+    /// </summary>
+    public class ElementIdStrategy : AbstractTraversalStrategy
+    {
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/HaltedTraverserStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/HaltedTraverserStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/HaltedTraverserStrategy.cs
new file mode 100644
index 0000000..98f949c
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/HaltedTraverserStrategy.cs
@@ -0,0 +1,34 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal.Strategy.Decoration
+{
+    public class HaltedTraverserStrategy : AbstractTraversalStrategy
+    {
+        public HaltedTraverserStrategy(string haltedTraverserFactoryName = null)
+        {
+            if (haltedTraverserFactoryName != null)
+                Configuration["haltedTraverserFactory"] = haltedTraverserFactoryName;
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/PartitionStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/PartitionStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/PartitionStrategy.cs
new file mode 100644
index 0000000..f89037b
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/PartitionStrategy.cs
@@ -0,0 +1,56 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System.Collections.Generic;
+
+namespace Gremlin.Net.Process.Traversal.Strategy.Decoration
+{
+    /// <summary>
+    ///     Partitions the vertices, edges and vertex properties of a graph into String named partitions.
+    /// </summary>
+    public class PartitionStrategy : AbstractTraversalStrategy
+    {
+        /// <summary>
+        ///     Initializes a new instance of the <see cref="PartitionStrategy" /> class.
+        /// </summary>
+        /// <param name="partitionKey">Specifies the partition key name.</param>
+        /// <param name="writePartition">
+        ///     Specifies the name of the partition to write when adding vertices, edges and vertex
+        ///     properties.
+        /// </param>
+        /// <param name="readPartitions">Specifies the partition of the graph to read from.</param>
+        /// <param name="includeMetaProperties">Set to true if vertex properties should get assigned to partitions.</param>
+        public PartitionStrategy(string partitionKey = null, string writePartition = null,
+            IEnumerable<string> readPartitions = null, bool? includeMetaProperties = null)
+        {
+            if (partitionKey != null)
+                Configuration["partitionKey"] = partitionKey;
+            if (writePartition != null)
+                Configuration["writePartition"] = writePartition;
+            if (readPartitions != null)
+                Configuration["readPartitions"] = readPartitions;
+            if (includeMetaProperties != null)
+                Configuration["includeMetaProperties"] = includeMetaProperties.Value;
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/SubgraphStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/SubgraphStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/SubgraphStrategy.cs
new file mode 100644
index 0000000..2f0d23e
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/SubgraphStrategy.cs
@@ -0,0 +1,48 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal.Strategy.Decoration
+{
+    /// <summary>
+    ///     Provides a way to limit the view of a <see cref="ITraversal" />.
+    /// </summary>
+    public class SubgraphStrategy : AbstractTraversalStrategy
+    {
+        /// <summary>
+        ///     Initializes a new instance of the <see cref="SubgraphStrategy" /> class.
+        /// </summary>
+        /// <param name="vertexCriterion">Constrains vertices for the <see cref="ITraversal" />.</param>
+        /// <param name="edgeCriterion">Constrains edges for the <see cref="ITraversal" />.</param>
+        /// <param name="vertexPropertyCriterion">Constrains vertex properties for the <see cref="ITraversal" />.</param>
+        public SubgraphStrategy(ITraversal vertexCriterion = null, ITraversal edgeCriterion = null,
+            ITraversal vertexPropertyCriterion = null)
+        {
+            if (vertexCriterion != null)
+                Configuration["vertices"] = vertexCriterion;
+            if (edgeCriterion != null)
+                Configuration["edges"] = edgeCriterion;
+            if (vertexPropertyCriterion != null)
+                Configuration["vertexProperties"] = vertexPropertyCriterion;
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/VertexProgramStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/VertexProgramStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/VertexProgramStrategy.cs
new file mode 100644
index 0000000..1c5b5f2
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/VertexProgramStrategy.cs
@@ -0,0 +1,50 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Gremlin.Net.Process.Traversal.Strategy.Decoration
+{
+    public class VertexProgramStrategy : AbstractTraversalStrategy
+    {
+        public VertexProgramStrategy(string graphComputer = null, int? workers = null, string persist = null,
+            string result = null, ITraversal vertices = null, ITraversal edges = null,
+            Dictionary<string, dynamic> configuration = null)
+        {
+            if (graphComputer != null)
+                Configuration["graphComputer"] = graphComputer;
+            if (workers != null)
+                Configuration["workers"] = workers;
+            if (persist != null)
+                Configuration["persist"] = persist;
+            if (result != null)
+                Configuration["result"] = result;
+            if (vertices != null)
+                Configuration["vertices"] = vertices;
+            if (edges != null)
+                Configuration["edges"] = edges;
+            configuration?.ToList().ForEach(x => Configuration[x.Key] = x.Value);
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/fec3ca5c/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Finalization/MatchAlgorithmStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Finalization/MatchAlgorithmStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Finalization/MatchAlgorithmStrategy.cs
new file mode 100644
index 0000000..11a9e2c
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Finalization/MatchAlgorithmStrategy.cs
@@ -0,0 +1,34 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal.Strategy.Finalization
+{
+    public class MatchAlgorithmStrategy : AbstractTraversalStrategy
+    {
+        public MatchAlgorithmStrategy(string matchAlgorithm = null)
+        {
+            if (matchAlgorithm != null)
+                Configuration["matchAlgorithm"] = matchAlgorithm;
+        }
+    }
+}
\ No newline at end of file


[06/50] [abbrv] tinkerpop git commit: Improve comments in Gremlin-DotNet, especially for the GLV part

Posted by sp...@apache.org.
Improve comments in Gremlin-DotNet, especially for the GLV part


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

Branch: refs/heads/master
Commit: eb9ff718682c32b5ef2fcf2326e10d4da1c53533
Parents: d0d9e13
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Thu Jun 15 15:09:58 2017 +0200
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jul 13 13:46:48 2017 -0400

----------------------------------------------------------------------
 gremlin-dotnet/glv/AnonymousTraversal.template  |   9 +-
 gremlin-dotnet/glv/Enum.template                |   4 +-
 gremlin-dotnet/glv/GraphTraversal.template      |  14 +-
 .../glv/GraphTraversalSource.template           |  44 ++-
 gremlin-dotnet/glv/NamingConversions.template   |   6 +-
 gremlin-dotnet/glv/P.template                   |   4 +-
 .../Gremlin.Net/Process/Traversal/Barrier.cs    |   4 +-
 .../Gremlin.Net/Process/Traversal/Bytecode.cs   |   2 +-
 .../Process/Traversal/Cardinality.cs            |   4 +-
 .../src/Gremlin.Net/Process/Traversal/Column.cs |   4 +-
 .../Process/Traversal/DefaultTraversal.cs       |   2 +-
 .../Gremlin.Net/Process/Traversal/Direction.cs  |   4 +-
 .../Process/Traversal/GraphSONVersion.cs        |   4 +-
 .../Process/Traversal/GraphTraversal.cs         | 305 ++++++++++++++++++-
 .../Process/Traversal/GraphTraversalSource.cs   |  52 +++-
 .../Process/Traversal/GryoVersion.cs            |   4 +-
 .../Process/Traversal/NamingConversions.cs      |   6 +-
 .../Gremlin.Net/Process/Traversal/Operator.cs   |   4 +-
 .../src/Gremlin.Net/Process/Traversal/Order.cs  |   4 +-
 .../src/Gremlin.Net/Process/Traversal/P.cs      |   4 +-
 .../src/Gremlin.Net/Process/Traversal/Pick.cs   |   4 +-
 .../src/Gremlin.Net/Process/Traversal/Pop.cs    |   4 +-
 .../src/Gremlin.Net/Process/Traversal/Scope.cs  |   4 +-
 .../src/Gremlin.Net/Process/Traversal/T.cs      |   4 +-
 .../src/Gremlin.Net/Process/Traversal/__.cs     | 279 ++++++++++++++++-
 .../src/Gremlin.Net/Structure/Graph.cs          |   8 +
 26 files changed, 728 insertions(+), 59 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eb9ff718/gremlin-dotnet/glv/AnonymousTraversal.template
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/glv/AnonymousTraversal.template b/gremlin-dotnet/glv/AnonymousTraversal.template
index 33002bf..9bc7257 100644
--- a/gremlin-dotnet/glv/AnonymousTraversal.template
+++ b/gremlin-dotnet/glv/AnonymousTraversal.template
@@ -24,18 +24,25 @@
 using System.Collections.Generic;
 using Gremlin.Net.Structure;
 
+// THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
     /// <summary>
-    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
+    ///     An anonymous <see cref="GraphTraversal{SType, EType}" />.
     /// </summary>
     public static class __
     {
+        /// <summary>
+        ///     Starts an empty <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public static GraphTraversal<object, object> Start()
         {
             return new GraphTraversal<object, object>();
         }
 <% anonStepMethods.each { method -> %>
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> and adds the <%= method.methodName %> step to that traversal.
+        /// </summary>
         public static GraphTraversal<object, <%= method.t2 %>> <%= toCSharpMethodName.call(method.methodName) %><%= method.tParam %>(params object[] args)
         {
             return new GraphTraversal<object, object>().<%= toCSharpMethodName.call(method.methodName) %><%= method.tParam %>(args);

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eb9ff718/gremlin-dotnet/glv/Enum.template
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/glv/Enum.template b/gremlin-dotnet/glv/Enum.template
index 664db45..25537f4 100644
--- a/gremlin-dotnet/glv/Enum.template
+++ b/gremlin-dotnet/glv/Enum.template
@@ -21,11 +21,9 @@
 
 #endregion
 
+// THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
-    /// <summary>
-    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
-    /// </summary>
     public enum <%= enumClass.simpleName %>
     {
         <%= constants %>

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eb9ff718/gremlin-dotnet/glv/GraphTraversal.template
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/glv/GraphTraversal.template b/gremlin-dotnet/glv/GraphTraversal.template
index b782ffa..d514e16 100644
--- a/gremlin-dotnet/glv/GraphTraversal.template
+++ b/gremlin-dotnet/glv/GraphTraversal.template
@@ -24,18 +24,27 @@
 using System.Collections.Generic;
 using Gremlin.Net.Structure;
 
+// THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
     /// <summary>
-    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
+    ///     Graph traversals are the primary way in which graphs are processed.
     /// </summary>
     public class GraphTraversal<S, E> : DefaultTraversal<S, E>
     {
+        /// <summary>
+        ///     Initializes a new instance of the <see cref="GraphTraversal{SType, EType}" /> class.
+        /// </summary>
         public GraphTraversal()
             : this(new List<ITraversalStrategy>(), new Bytecode())
         {
         }
 
+        /// <summary>
+        ///     Initializes a new instance of the <see cref="GraphTraversal{SType, EType}" /> class.
+        /// </summary>
+        /// <param name="traversalStrategies">The traversal strategies to be used by this graph traversal at evaluation time.</param>
+        /// <param name="bytecode">The <see cref="Bytecode" /> associated with the construction of this graph traversal.</param>
         public GraphTraversal(ICollection<ITraversalStrategy> traversalStrategies, Bytecode bytecode)
         {
             TraversalStrategies = traversalStrategies;
@@ -53,6 +62,9 @@ namespace Gremlin.Net.Process.Traversal
         }
 
 <% graphStepMethods.each { method -> %>
+        /// <summary>
+        ///     Adds the <%= method.methodName %> step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< <%= method.t1 %> , <%= method.t2 %> > <%= toCSharpMethodName.call(method.methodName) %><%= method.tParam %> (params object[] args)
         {
             Bytecode.AddStep("<%= method.methodName %>", args);

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eb9ff718/gremlin-dotnet/glv/GraphTraversalSource.template
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/glv/GraphTraversalSource.template b/gremlin-dotnet/glv/GraphTraversalSource.template
index 880f793..7a945f8 100644
--- a/gremlin-dotnet/glv/GraphTraversalSource.template
+++ b/gremlin-dotnet/glv/GraphTraversalSource.template
@@ -21,26 +21,48 @@
 
 #endregion
 
+using System;
 using System.Collections.Generic;
 using Gremlin.Net.Process.Remote;
 using Gremlin.Net.Process.Traversal.Strategy.Decoration;
 using Gremlin.Net.Structure;
 
+// THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
     /// <summary>
-    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
+    ///     A <see cref="GraphTraversalSource" /> is the primary DSL of the Gremlin traversal machine.
+    ///     It provides access to all the configurations and steps for Turing complete graph computing.
     /// </summary>
     public class GraphTraversalSource
     {
+        /// <summary>
+        ///     Gets or sets the traversal strategies associated with this graph traversal source.
+        /// </summary>
         public ICollection<ITraversalStrategy> TraversalStrategies { get; set; }
+
+        /// <summary>
+        ///     Gets or sets the <see cref="Traversal.Bytecode" /> associated with the current state of this graph traversal
+        ///     source.
+        /// </summary>
         public Bytecode Bytecode { get; set; }
 
-         public GraphTraversalSource()
+        /// <summary>
+        ///     Initializes a new instance of the <see cref="GraphTraversalSource" /> class.
+        /// </summary>
+        public GraphTraversalSource()
             : this(new List<ITraversalStrategy>(), new Bytecode())
         {
         }
 
+        /// <summary>
+        ///     Initializes a new instance of the <see cref="GraphTraversalSource" /> class.
+        /// </summary>
+        /// <param name="traversalStrategies">The traversal strategies associated with this graph traversal source.</param>
+        /// <param name="bytecode">
+        ///     The <see cref="Traversal.Bytecode" /> associated with the current state of this graph traversal
+        ///     source.
+        /// </param>
         public GraphTraversalSource(ICollection<ITraversalStrategy> traversalStrategies, Bytecode bytecode)
         {
             TraversalStrategies = traversalStrategies;
@@ -56,11 +78,21 @@ namespace Gremlin.Net.Process.Traversal
             return source;
         }
 <% } %>
+        [Obsolete("Use the Bindings class instead.", false)]
         public GraphTraversalSource WithBindings(object bindings)
         {
             return this;
         }
 
+        /// <summary>
+        ///     Configures the <see cref="GraphTraversalSource" /> as a "remote" to issue the
+        ///     <see cref="GraphTraversal{SType, EType}" /> for execution elsewhere.
+        /// </summary>
+        /// <param name="remoteConnection">
+        ///     The <see cref="IRemoteConnection" /> instance to use to submit the
+        ///     <see cref="GraphTraversal{SType, EType}" />.
+        /// </param>
+        /// <returns>A <see cref="GraphTraversalSource" /> configured to use the provided <see cref="IRemoteConnection" />.</returns>
         public GraphTraversalSource WithRemote(IRemoteConnection remoteConnection)
         {
             var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
@@ -69,6 +101,10 @@ namespace Gremlin.Net.Process.Traversal
             return source;
         }
 
+        /// <summary>
+        ///     Add a GraphComputer class used to execute the traversal.
+        ///     This adds a <see cref="VertexProgramStrategy" /> to the strategies.
+        /// </summary>
         public GraphTraversalSource WithComputer(string graphComputer = null, int? workers = null, string persist = null,
             string result = null, ITraversal vertices = null, ITraversal edges = null,
             Dictionary<string, dynamic> configuration = null)
@@ -77,6 +113,10 @@ namespace Gremlin.Net.Process.Traversal
         }
 
 <% sourceSpawnMethods.each { method -> %>
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> off this graph traversal source and adds the <%= method.methodName %> step to that
+        ///     traversal.
+        /// </summary>
         public GraphTraversal< <%= method.typeArguments.join(",") %> > <%= toCSharpMethodName.call(method.methodName) %>(params object[] args)
         {
             var traversal = new GraphTraversal< <%= method.typeArguments.join(",") %> >(TraversalStrategies, new Bytecode(Bytecode));

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eb9ff718/gremlin-dotnet/glv/NamingConversions.template
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/glv/NamingConversions.template b/gremlin-dotnet/glv/NamingConversions.template
index b997dee..201e74b 100644
--- a/gremlin-dotnet/glv/NamingConversions.template
+++ b/gremlin-dotnet/glv/NamingConversions.template
@@ -23,15 +23,13 @@
 
 using System.Collections.Generic;
 
+// THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
-    /// <summary>
-    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
-    /// </summary>
     internal static class NamingConversions
     {
         /// <summary>
-        /// Gets the Java name equivalent for a given enum value
+        ///     Gets the Java name equivalent for a given enum value
         /// </summary>
         internal static string GetEnumJavaName(string typeName, string value)
         {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eb9ff718/gremlin-dotnet/glv/P.template
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/glv/P.template b/gremlin-dotnet/glv/P.template
index 5be695d..6a62414 100644
--- a/gremlin-dotnet/glv/P.template
+++ b/gremlin-dotnet/glv/P.template
@@ -21,10 +21,12 @@
 
 #endregion
 
+// THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
     /// <summary>
-    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
+    ///     A <see cref="P" /> is a predicate of the form Func&lt;object, bool&gt;.
+    ///     That is, given some object, return true or false.
     /// </summary>
     public class P
     {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eb9ff718/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Barrier.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Barrier.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Barrier.cs
index 543fda6..aa4040a 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Barrier.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Barrier.cs
@@ -21,11 +21,9 @@
 
 #endregion
 
+// THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
-    /// <summary>
-    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
-    /// </summary>
     public enum Barrier
     {
         NormSack

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eb9ff718/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Bytecode.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Bytecode.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Bytecode.cs
index b35e8db..693d331 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Bytecode.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Bytecode.cs
@@ -31,7 +31,7 @@ namespace Gremlin.Net.Process.Traversal
     /// <remarks>
     ///     Bytecode is simply a list of ordered instructions.
     ///     Bytecode can be serialized between environments and machines by way of a GraphSON representation.
-    ///     Thus, Gremlin-CSharp can create bytecode in C# and ship it to Gremlin-Java for evaluation in Java.
+    ///     Thus, Gremlin-DotNet can create bytecode in C# and ship it to Gremlin-Java for evaluation in Java.
     /// </remarks>
     public class Bytecode
     {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eb9ff718/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs
index b47dd32..0296380 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs
@@ -21,11 +21,9 @@
 
 #endregion
 
+// THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
-    /// <summary>
-    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
-    /// </summary>
     public enum Cardinality
     {
         List,Set,Single

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eb9ff718/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Column.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Column.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Column.cs
index 063c26e..15e248c 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Column.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Column.cs
@@ -21,11 +21,9 @@
 
 #endregion
 
+// THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
-    /// <summary>
-    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
-    /// </summary>
     public enum Column
     {
         Keys,Values

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eb9ff718/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/DefaultTraversal.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/DefaultTraversal.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/DefaultTraversal.cs
index 2652df3..d9dfe10 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/DefaultTraversal.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/DefaultTraversal.cs
@@ -36,7 +36,7 @@ namespace Gremlin.Net.Process.Traversal
         private IEnumerator<Traverser> _traverserEnumerator;
 
         /// <summary>
-        ///     Gets the <see cref="Bytecode" /> representation of this traversal.
+        ///     Gets the <see cref="Traversal.Bytecode" /> representation of this traversal.
         /// </summary>
         public Bytecode Bytecode { get; protected set; }
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eb9ff718/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Direction.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Direction.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Direction.cs
index 5f6717e..27d3934 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Direction.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Direction.cs
@@ -21,11 +21,9 @@
 
 #endregion
 
+// THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
-    /// <summary>
-    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
-    /// </summary>
     public enum Direction
     {
         Both,In,Out

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eb9ff718/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphSONVersion.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphSONVersion.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphSONVersion.cs
index c72ae8e..cc66fba 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphSONVersion.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphSONVersion.cs
@@ -21,11 +21,9 @@
 
 #endregion
 
+// THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
-    /// <summary>
-    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
-    /// </summary>
     public enum GraphSONVersion
     {
         V1_0,V2_0

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eb9ff718/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 5aaaef0..34f5bfb 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
@@ -24,18 +24,27 @@
 using System.Collections.Generic;
 using Gremlin.Net.Structure;
 
+// THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
     /// <summary>
-    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
+    ///     Graph traversals are the primary way in which graphs are processed.
     /// </summary>
     public class GraphTraversal<S, E> : DefaultTraversal<S, E>
     {
+        /// <summary>
+        ///     Initializes a new instance of the <see cref="GraphTraversal{SType, EType}" /> class.
+        /// </summary>
         public GraphTraversal()
             : this(new List<ITraversalStrategy>(), new Bytecode())
         {
         }
 
+        /// <summary>
+        ///     Initializes a new instance of the <see cref="GraphTraversal{SType, EType}" /> class.
+        /// </summary>
+        /// <param name="traversalStrategies">The traversal strategies to be used by this graph traversal at evaluation time.</param>
+        /// <param name="bytecode">The <see cref="Bytecode" /> associated with the construction of this graph traversal.</param>
         public GraphTraversal(ICollection<ITraversalStrategy> traversalStrategies, Bytecode bytecode)
         {
             TraversalStrategies = traversalStrategies;
@@ -53,588 +62,882 @@ namespace Gremlin.Net.Process.Traversal
         }
 
 
+        /// <summary>
+        ///     Adds the V step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , Vertex > V (params object[] args)
         {
             Bytecode.AddStep("V", args);
             return Wrap< S , Vertex >(this);
         }
 
+        /// <summary>
+        ///     Adds the addE step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , Edge > AddE (params object[] args)
         {
             Bytecode.AddStep("addE", args);
             return Wrap< S , Edge >(this);
         }
 
+        /// <summary>
+        ///     Adds the addInE step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , Edge > AddInE (params object[] args)
         {
             Bytecode.AddStep("addInE", args);
             return Wrap< S , Edge >(this);
         }
 
+        /// <summary>
+        ///     Adds the addOutE step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , Edge > AddOutE (params object[] args)
         {
             Bytecode.AddStep("addOutE", args);
             return Wrap< S , Edge >(this);
         }
 
+        /// <summary>
+        ///     Adds the addV step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , Vertex > AddV (params object[] args)
         {
             Bytecode.AddStep("addV", args);
             return Wrap< S , Vertex >(this);
         }
 
+        /// <summary>
+        ///     Adds the aggregate step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > Aggregate (params object[] args)
         {
             Bytecode.AddStep("aggregate", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the and step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > And (params object[] args)
         {
             Bytecode.AddStep("and", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the as step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > As (params object[] args)
         {
             Bytecode.AddStep("as", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the barrier step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > Barrier (params object[] args)
         {
             Bytecode.AddStep("barrier", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the both step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , Vertex > Both (params object[] args)
         {
             Bytecode.AddStep("both", args);
             return Wrap< S , Vertex >(this);
         }
 
+        /// <summary>
+        ///     Adds the bothE step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , Edge > BothE (params object[] args)
         {
             Bytecode.AddStep("bothE", args);
             return Wrap< S , Edge >(this);
         }
 
+        /// <summary>
+        ///     Adds the bothV step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , Vertex > BothV (params object[] args)
         {
             Bytecode.AddStep("bothV", args);
             return Wrap< S , Vertex >(this);
         }
 
+        /// <summary>
+        ///     Adds the branch step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E2 > Branch<E2> (params object[] args)
         {
             Bytecode.AddStep("branch", args);
             return Wrap< S , E2 >(this);
         }
 
+        /// <summary>
+        ///     Adds the by step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > By (params object[] args)
         {
             Bytecode.AddStep("by", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the cap step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E2 > Cap<E2> (params object[] args)
         {
             Bytecode.AddStep("cap", args);
             return Wrap< S , E2 >(this);
         }
 
+        /// <summary>
+        ///     Adds the choose step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E2 > Choose<E2> (params object[] args)
         {
             Bytecode.AddStep("choose", args);
             return Wrap< S , E2 >(this);
         }
 
+        /// <summary>
+        ///     Adds the coalesce step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E2 > Coalesce<E2> (params object[] args)
         {
             Bytecode.AddStep("coalesce", args);
             return Wrap< S , E2 >(this);
         }
 
+        /// <summary>
+        ///     Adds the coin step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > Coin (params object[] args)
         {
             Bytecode.AddStep("coin", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the constant step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E2 > Constant<E2> (params object[] args)
         {
             Bytecode.AddStep("constant", args);
             return Wrap< S , E2 >(this);
         }
 
+        /// <summary>
+        ///     Adds the count step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , long > Count (params object[] args)
         {
             Bytecode.AddStep("count", args);
             return Wrap< S , long >(this);
         }
 
+        /// <summary>
+        ///     Adds the cyclicPath step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > CyclicPath (params object[] args)
         {
             Bytecode.AddStep("cyclicPath", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the dedup step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > Dedup (params object[] args)
         {
             Bytecode.AddStep("dedup", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the drop step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > Drop (params object[] args)
         {
             Bytecode.AddStep("drop", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the emit step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > Emit (params object[] args)
         {
             Bytecode.AddStep("emit", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the filter step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > Filter (params object[] args)
         {
             Bytecode.AddStep("filter", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the flatMap step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E2 > FlatMap<E2> (params object[] args)
         {
             Bytecode.AddStep("flatMap", args);
             return Wrap< S , E2 >(this);
         }
 
+        /// <summary>
+        ///     Adds the fold step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E2 > Fold<E2> (params object[] args)
         {
             Bytecode.AddStep("fold", args);
             return Wrap< S , E2 >(this);
         }
 
+        /// <summary>
+        ///     Adds the from step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > From (params object[] args)
         {
             Bytecode.AddStep("from", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the group step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > Group (params object[] args)
         {
             Bytecode.AddStep("group", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the groupCount step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > GroupCount (params object[] args)
         {
             Bytecode.AddStep("groupCount", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the groupV3d0 step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > GroupV3d0 (params object[] args)
         {
             Bytecode.AddStep("groupV3d0", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the has step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > Has (params object[] args)
         {
             Bytecode.AddStep("has", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the hasId step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > HasId (params object[] args)
         {
             Bytecode.AddStep("hasId", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the hasKey step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > HasKey (params object[] args)
         {
             Bytecode.AddStep("hasKey", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the hasLabel step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > HasLabel (params object[] args)
         {
             Bytecode.AddStep("hasLabel", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the hasNot step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > HasNot (params object[] args)
         {
             Bytecode.AddStep("hasNot", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the hasValue step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > HasValue (params object[] args)
         {
             Bytecode.AddStep("hasValue", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the id step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , object > Id (params object[] args)
         {
             Bytecode.AddStep("id", args);
             return Wrap< S , object >(this);
         }
 
+        /// <summary>
+        ///     Adds the identity step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > Identity (params object[] args)
         {
             Bytecode.AddStep("identity", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the in step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , Vertex > In (params object[] args)
         {
             Bytecode.AddStep("in", args);
             return Wrap< S , Vertex >(this);
         }
 
+        /// <summary>
+        ///     Adds the inE step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , Edge > InE (params object[] args)
         {
             Bytecode.AddStep("inE", args);
             return Wrap< S , Edge >(this);
         }
 
+        /// <summary>
+        ///     Adds the inV step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , Vertex > InV (params object[] args)
         {
             Bytecode.AddStep("inV", args);
             return Wrap< S , Vertex >(this);
         }
 
+        /// <summary>
+        ///     Adds the inject step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > Inject (params object[] args)
         {
             Bytecode.AddStep("inject", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the is step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > Is (params object[] args)
         {
             Bytecode.AddStep("is", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the key step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , string > Key (params object[] args)
         {
             Bytecode.AddStep("key", args);
             return Wrap< S , string >(this);
         }
 
+        /// <summary>
+        ///     Adds the label step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , string > Label (params object[] args)
         {
             Bytecode.AddStep("label", args);
             return Wrap< S , string >(this);
         }
 
+        /// <summary>
+        ///     Adds the limit step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E2 > Limit<E2> (params object[] args)
         {
             Bytecode.AddStep("limit", args);
             return Wrap< S , E2 >(this);
         }
 
+        /// <summary>
+        ///     Adds the local step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E2 > Local<E2> (params object[] args)
         {
             Bytecode.AddStep("local", args);
             return Wrap< S , E2 >(this);
         }
 
+        /// <summary>
+        ///     Adds the loops step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , int > Loops (params object[] args)
         {
             Bytecode.AddStep("loops", args);
             return Wrap< S , int >(this);
         }
 
+        /// <summary>
+        ///     Adds the map step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E2 > Map<E2> (params object[] args)
         {
             Bytecode.AddStep("map", args);
             return Wrap< S , E2 >(this);
         }
 
+        /// <summary>
+        ///     Adds the mapKeys step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E2 > MapKeys<E2> (params object[] args)
         {
             Bytecode.AddStep("mapKeys", args);
             return Wrap< S , E2 >(this);
         }
 
+        /// <summary>
+        ///     Adds the mapValues step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E2 > MapValues<E2> (params object[] args)
         {
             Bytecode.AddStep("mapValues", args);
             return Wrap< S , E2 >(this);
         }
 
+        /// <summary>
+        ///     Adds the match step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , IDictionary<string, E2> > Match<E2> (params object[] args)
         {
             Bytecode.AddStep("match", args);
             return Wrap< S , IDictionary<string, E2> >(this);
         }
 
+        /// <summary>
+        ///     Adds the max step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E2 > Max<E2> (params object[] args)
         {
             Bytecode.AddStep("max", args);
             return Wrap< S , E2 >(this);
         }
 
+        /// <summary>
+        ///     Adds the mean step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E2 > Mean<E2> (params object[] args)
         {
             Bytecode.AddStep("mean", args);
             return Wrap< S , E2 >(this);
         }
 
+        /// <summary>
+        ///     Adds the min step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E2 > Min<E2> (params object[] args)
         {
             Bytecode.AddStep("min", args);
             return Wrap< S , E2 >(this);
         }
 
+        /// <summary>
+        ///     Adds the not step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > Not (params object[] args)
         {
             Bytecode.AddStep("not", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the option step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > Option (params object[] args)
         {
             Bytecode.AddStep("option", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the optional step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E2 > Optional<E2> (params object[] args)
         {
             Bytecode.AddStep("optional", args);
             return Wrap< S , E2 >(this);
         }
 
+        /// <summary>
+        ///     Adds the or step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > Or (params object[] args)
         {
             Bytecode.AddStep("or", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the order step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > Order (params object[] args)
         {
             Bytecode.AddStep("order", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the otherV step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , Vertex > OtherV (params object[] args)
         {
             Bytecode.AddStep("otherV", args);
             return Wrap< S , Vertex >(this);
         }
 
+        /// <summary>
+        ///     Adds the out step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , Vertex > Out (params object[] args)
         {
             Bytecode.AddStep("out", args);
             return Wrap< S , Vertex >(this);
         }
 
+        /// <summary>
+        ///     Adds the outE step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , Edge > OutE (params object[] args)
         {
             Bytecode.AddStep("outE", args);
             return Wrap< S , Edge >(this);
         }
 
+        /// <summary>
+        ///     Adds the outV step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , Vertex > OutV (params object[] args)
         {
             Bytecode.AddStep("outV", args);
             return Wrap< S , Vertex >(this);
         }
 
+        /// <summary>
+        ///     Adds the pageRank step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > PageRank (params object[] args)
         {
             Bytecode.AddStep("pageRank", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the path step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , Path > Path (params object[] args)
         {
             Bytecode.AddStep("path", args);
             return Wrap< S , Path >(this);
         }
 
+        /// <summary>
+        ///     Adds the peerPressure step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > PeerPressure (params object[] args)
         {
             Bytecode.AddStep("peerPressure", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the profile step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > Profile (params object[] args)
         {
             Bytecode.AddStep("profile", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the program step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > Program (params object[] args)
         {
             Bytecode.AddStep("program", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the project step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , IDictionary<string, E2> > Project<E2> (params object[] args)
         {
             Bytecode.AddStep("project", args);
             return Wrap< S , IDictionary<string, E2> >(this);
         }
 
+        /// <summary>
+        ///     Adds the properties step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E2 > Properties<E2> (params object[] args)
         {
             Bytecode.AddStep("properties", args);
             return Wrap< S , E2 >(this);
         }
 
+        /// <summary>
+        ///     Adds the property step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > Property (params object[] args)
         {
             Bytecode.AddStep("property", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the propertyMap step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , IDictionary<string, E2> > PropertyMap<E2> (params object[] args)
         {
             Bytecode.AddStep("propertyMap", args);
             return Wrap< S , IDictionary<string, E2> >(this);
         }
 
+        /// <summary>
+        ///     Adds the range step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E2 > Range<E2> (params object[] args)
         {
             Bytecode.AddStep("range", args);
             return Wrap< S , E2 >(this);
         }
 
+        /// <summary>
+        ///     Adds the repeat step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > Repeat (params object[] args)
         {
             Bytecode.AddStep("repeat", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the sack step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > Sack (params object[] args)
         {
             Bytecode.AddStep("sack", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the sample step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > Sample (params object[] args)
         {
             Bytecode.AddStep("sample", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the select step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , IDictionary<string, E2> > Select<E2> (params object[] args)
         {
             Bytecode.AddStep("select", args);
             return Wrap< S , IDictionary<string, E2> >(this);
         }
 
+        /// <summary>
+        ///     Adds the sideEffect step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > SideEffect (params object[] args)
         {
             Bytecode.AddStep("sideEffect", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the simplePath step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > SimplePath (params object[] args)
         {
             Bytecode.AddStep("simplePath", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the store step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > Store (params object[] args)
         {
             Bytecode.AddStep("store", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the subgraph step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , Edge > Subgraph (params object[] args)
         {
             Bytecode.AddStep("subgraph", args);
             return Wrap< S , Edge >(this);
         }
 
+        /// <summary>
+        ///     Adds the sum step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E2 > Sum<E2> (params object[] args)
         {
             Bytecode.AddStep("sum", args);
             return Wrap< S , E2 >(this);
         }
 
+        /// <summary>
+        ///     Adds the tail step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E2 > Tail<E2> (params object[] args)
         {
             Bytecode.AddStep("tail", args);
             return Wrap< S , E2 >(this);
         }
 
+        /// <summary>
+        ///     Adds the timeLimit step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > TimeLimit (params object[] args)
         {
             Bytecode.AddStep("timeLimit", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the times step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > Times (params object[] args)
         {
             Bytecode.AddStep("times", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the to step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , Vertex > To (params object[] args)
         {
             Bytecode.AddStep("to", args);
             return Wrap< S , Vertex >(this);
         }
 
+        /// <summary>
+        ///     Adds the toE step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , Edge > ToE (params object[] args)
         {
             Bytecode.AddStep("toE", args);
             return Wrap< S , Edge >(this);
         }
 
+        /// <summary>
+        ///     Adds the toV step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , Vertex > ToV (params object[] args)
         {
             Bytecode.AddStep("toV", args);
             return Wrap< S , Vertex >(this);
         }
 
+        /// <summary>
+        ///     Adds the tree step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > Tree (params object[] args)
         {
             Bytecode.AddStep("tree", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the unfold step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E2 > Unfold<E2> (params object[] args)
         {
             Bytecode.AddStep("unfold", args);
             return Wrap< S , E2 >(this);
         }
 
+        /// <summary>
+        ///     Adds the union step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E2 > Union<E2> (params object[] args)
         {
             Bytecode.AddStep("union", args);
             return Wrap< S , E2 >(this);
         }
 
+        /// <summary>
+        ///     Adds the until step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > Until (params object[] args)
         {
             Bytecode.AddStep("until", args);
             return Wrap< S , E >(this);
         }
 
+        /// <summary>
+        ///     Adds the value step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E2 > Value<E2> (params object[] args)
         {
             Bytecode.AddStep("value", args);
             return Wrap< S , E2 >(this);
         }
 
+        /// <summary>
+        ///     Adds the valueMap step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , IDictionary<string, E2> > ValueMap<E2> (params object[] args)
         {
             Bytecode.AddStep("valueMap", args);
             return Wrap< S , IDictionary<string, E2> >(this);
         }
 
+        /// <summary>
+        ///     Adds the values step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E2 > Values<E2> (params object[] args)
         {
             Bytecode.AddStep("values", args);
             return Wrap< S , E2 >(this);
         }
 
+        /// <summary>
+        ///     Adds the where step to this <see cref="GraphTraversal{SType, EType}" />.
+        /// </summary>
         public GraphTraversal< S , E > Where (params object[] args)
         {
             Bytecode.AddStep("where", args);

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eb9ff718/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs
index 1380be7..317afad 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs
@@ -21,26 +21,48 @@
 
 #endregion
 
+using System;
 using System.Collections.Generic;
 using Gremlin.Net.Process.Remote;
 using Gremlin.Net.Process.Traversal.Strategy.Decoration;
 using Gremlin.Net.Structure;
 
+// THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
     /// <summary>
-    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
+    ///     A <see cref="GraphTraversalSource" /> is the primary DSL of the Gremlin traversal machine.
+    ///     It provides access to all the configurations and steps for Turing complete graph computing.
     /// </summary>
     public class GraphTraversalSource
     {
+        /// <summary>
+        ///     Gets or sets the traversal strategies associated with this graph traversal source.
+        /// </summary>
         public ICollection<ITraversalStrategy> TraversalStrategies { get; set; }
+
+        /// <summary>
+        ///     Gets or sets the <see cref="Traversal.Bytecode" /> associated with the current state of this graph traversal
+        ///     source.
+        /// </summary>
         public Bytecode Bytecode { get; set; }
 
-         public GraphTraversalSource()
+        /// <summary>
+        ///     Initializes a new instance of the <see cref="GraphTraversalSource" /> class.
+        /// </summary>
+        public GraphTraversalSource()
             : this(new List<ITraversalStrategy>(), new Bytecode())
         {
         }
 
+        /// <summary>
+        ///     Initializes a new instance of the <see cref="GraphTraversalSource" /> class.
+        /// </summary>
+        /// <param name="traversalStrategies">The traversal strategies associated with this graph traversal source.</param>
+        /// <param name="bytecode">
+        ///     The <see cref="Traversal.Bytecode" /> associated with the current state of this graph traversal
+        ///     source.
+        /// </param>
         public GraphTraversalSource(ICollection<ITraversalStrategy> traversalStrategies, Bytecode bytecode)
         {
             TraversalStrategies = traversalStrategies;
@@ -96,11 +118,21 @@ namespace Gremlin.Net.Process.Traversal
             return source;
         }
 
+        [Obsolete("Use the Bindings class instead.", false)]
         public GraphTraversalSource WithBindings(object bindings)
         {
             return this;
         }
 
+        /// <summary>
+        ///     Configures the <see cref="GraphTraversalSource" /> as a "remote" to issue the
+        ///     <see cref="GraphTraversal{SType, EType}" /> for execution elsewhere.
+        /// </summary>
+        /// <param name="remoteConnection">
+        ///     The <see cref="IRemoteConnection" /> instance to use to submit the
+        ///     <see cref="GraphTraversal{SType, EType}" />.
+        /// </param>
+        /// <returns>A <see cref="GraphTraversalSource" /> configured to use the provided <see cref="IRemoteConnection" />.</returns>
         public GraphTraversalSource WithRemote(IRemoteConnection remoteConnection)
         {
             var source = new GraphTraversalSource(new List<ITraversalStrategy>(TraversalStrategies),
@@ -109,6 +141,10 @@ namespace Gremlin.Net.Process.Traversal
             return source;
         }
 
+        /// <summary>
+        ///     Add a GraphComputer class used to execute the traversal.
+        ///     This adds a <see cref="VertexProgramStrategy" /> to the strategies.
+        /// </summary>
         public GraphTraversalSource WithComputer(string graphComputer = null, int? workers = null, string persist = null,
             string result = null, ITraversal vertices = null, ITraversal edges = null,
             Dictionary<string, dynamic> configuration = null)
@@ -117,6 +153,10 @@ namespace Gremlin.Net.Process.Traversal
         }
 
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> off this graph traversal source and adds the E step to that
+        ///     traversal.
+        /// </summary>
         public GraphTraversal< Edge,Edge > E(params object[] args)
         {
             var traversal = new GraphTraversal< Edge,Edge >(TraversalStrategies, new Bytecode(Bytecode));
@@ -124,6 +164,10 @@ namespace Gremlin.Net.Process.Traversal
             return traversal;
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> off this graph traversal source and adds the V step to that
+        ///     traversal.
+        /// </summary>
         public GraphTraversal< Vertex,Vertex > V(params object[] args)
         {
             var traversal = new GraphTraversal< Vertex,Vertex >(TraversalStrategies, new Bytecode(Bytecode));
@@ -131,6 +175,10 @@ namespace Gremlin.Net.Process.Traversal
             return traversal;
         }
 
+        /// <summary>
+        ///     Spawns a <see cref="GraphTraversal{SType, EType}" /> off this graph traversal source and adds the addV step to that
+        ///     traversal.
+        /// </summary>
         public GraphTraversal< Vertex,Vertex > AddV(params object[] args)
         {
             var traversal = new GraphTraversal< Vertex,Vertex >(TraversalStrategies, new Bytecode(Bytecode));

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eb9ff718/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GryoVersion.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GryoVersion.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GryoVersion.cs
index c271a9f..76a263d 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GryoVersion.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GryoVersion.cs
@@ -21,11 +21,9 @@
 
 #endregion
 
+// THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
-    /// <summary>
-    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
-    /// </summary>
     public enum GryoVersion
     {
         V1_0

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eb9ff718/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs
index bfee0da..aecdc57 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs
@@ -23,15 +23,13 @@
 
 using System.Collections.Generic;
 
+// THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
-    /// <summary>
-    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
-    /// </summary>
     internal static class NamingConversions
     {
         /// <summary>
-        /// Gets the Java name equivalent for a given enum value
+        ///     Gets the Java name equivalent for a given enum value
         /// </summary>
         internal static string GetEnumJavaName(string typeName, string value)
         {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eb9ff718/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Operator.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Operator.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Operator.cs
index a7a01ee..d98d9ba 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Operator.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Operator.cs
@@ -21,11 +21,9 @@
 
 #endregion
 
+// THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
-    /// <summary>
-    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
-    /// </summary>
     public enum Operator
     {
         AddAll,And,Assign,Div,Max,Min,Minus,Mult,Or,Sum,SumLong

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eb9ff718/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs
index a59daf5..2e0c4ea 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs
@@ -21,11 +21,9 @@
 
 #endregion
 
+// THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
-    /// <summary>
-    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
-    /// </summary>
     public enum Order
     {
         Decr,Incr,KeyDecr,KeyIncr,Shuffle,ValueDecr,ValueIncr

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eb9ff718/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/P.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/P.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/P.cs
index ee184e6..e017402 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/P.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/P.cs
@@ -21,10 +21,12 @@
 
 #endregion
 
+// THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
     /// <summary>
-    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
+    ///     A <see cref="P" /> is a predicate of the form Func&lt;object, bool&gt;.
+    ///     That is, given some object, return true or false.
     /// </summary>
     public class P
     {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eb9ff718/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pick.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pick.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pick.cs
index 2306cc0..2231cda 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pick.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pick.cs
@@ -21,11 +21,9 @@
 
 #endregion
 
+// THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
-    /// <summary>
-    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
-    /// </summary>
     public enum Pick
     {
         Any,None

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eb9ff718/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs
index 72ea8d9..01c6e1a 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs
@@ -21,11 +21,9 @@
 
 #endregion
 
+// THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
-    /// <summary>
-    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
-    /// </summary>
     public enum Pop
     {
         All,First,Last

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eb9ff718/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Scope.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Scope.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Scope.cs
index b19d709..e443252 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Scope.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Scope.cs
@@ -21,11 +21,9 @@
 
 #endregion
 
+// THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
-    /// <summary>
-    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
-    /// </summary>
     public enum Scope
     {
         Global,Local

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eb9ff718/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs
index ccd0242..f914916 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs
@@ -21,11 +21,9 @@
 
 #endregion
 
+// THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
-    /// <summary>
-    ///     THIS IS A GENERATED CLASS - DO NOT MODIFY THIS CLASS DIRECTLY - see pom.xml
-    /// </summary>
     public enum T
     {
         Id,Key,Label,Value


[20/50] [abbrv] tinkerpop git commit: Remove unintended comment

Posted by sp...@apache.org.
Remove unintended comment


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

Branch: refs/heads/master
Commit: e6539d8d69b2aaa5ac91c356fb56e826528b6bc9
Parents: 5acbc81
Author: Jorge Bay Gondra <jo...@gmail.com>
Authored: Fri Jun 9 10:20:55 2017 +0200
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jul 13 13:46:48 2017 -0400

----------------------------------------------------------------------
 .../Traversal/DriverRemoteConnection/GraphTraversalTests.cs     | 5 -----
 1 file changed, 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e6539d8d/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
index 51efa7f..e1e4338 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Process/Traversal/DriverRemoteConnection/GraphTraversalTests.cs
@@ -98,11 +98,6 @@ namespace Gremlin.Net.IntegrationTest.Process.Traversal.DriverRemoteConnection
         [Fact]
         public void g_V_HasXname_markoX_ValueMap_Next()
         {
-            //Unable to cast object of type 
-            //'System.Collections.Generic.Dictionary`2[System.String,System.Object]' to type 
-            //'System.Collections.Generic.IDictionary`2[System.String,System.Collections.Generic.IList`1[System.Object]]'.
-
-
             var graph = new Graph();
             var connection = _connectionFactory.CreateRemoteConnection();
             var g = graph.Traversal().WithRemote(connection);


[46/50] [abbrv] tinkerpop git commit: TINKERPOP-1552 Fixed authentication configuration problem in tests

Posted by sp...@apache.org.
TINKERPOP-1552 Fixed authentication configuration problem in tests

We factored out the "classname" and "credentialDbLocation" configuration options in the gremlin server yaml.


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

Branch: refs/heads/master
Commit: ab1dc62ce67c66b589a56ceb95a970ed7b6169a5
Parents: 9b02c1f
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Jul 17 17:39:27 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Jul 17 17:39:27 2017 -0400

----------------------------------------------------------------------
 gremlin-dotnet/test/pom.xml | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ab1dc62c/gremlin-dotnet/test/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/pom.xml b/gremlin-dotnet/test/pom.xml
index 524bed0..cac449c 100644
--- a/gremlin-dotnet/test/pom.xml
+++ b/gremlin-dotnet/test/pom.xml
@@ -135,6 +135,7 @@ import org.apache.tinkerpop.gremlin.server.GremlinServer
 import org.apache.tinkerpop.gremlin.server.Settings
 import org.apache.tinkerpop.gremlin.server.Settings.ScriptEngineSettings
 import org.apache.tinkerpop.gremlin.server.Settings.SerializerSettings
+import java.util.Properties
 
 if (${skipTests}) return
 
@@ -151,13 +152,22 @@ server.start().join()
 project.setContextValue("gremlin.dotnet.server", server)
 log.info("Gremlin Server with no authentication started on port 45950")
 
+def securePropsFile = new File('${project.basedir}/target/tinkergraph-credentials.properties')
+if (!securePropsFile.exists()) {
+  securePropsFile.createNewFile()
+  securePropsFile << "gremlin.graph=org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph\n"
+  securePropsFile << "gremlin.tinkergraph.vertexIdManager=LONG\n"
+  securePropsFile << "gremlin.tinkergraph.graphLocation=${gremlin.server.dir}/data/credentials.kryo\n"
+  securePropsFile << "gremlin.tinkergraph.graphFormat=gryo"
+}
+
 def settingsSecure = Settings.read("${gremlin.server.dir}/conf/gremlin-server-modern.yaml")
 settingsSecure.graphs.graph = "${gremlin.server.dir}/conf/tinkergraph-empty.properties"
 settingsSecure.scriptEngines["gremlin-groovy"].plugins["org.apache.tinkerpop.gremlin.jsr223.ScriptFileGremlinPlugin"].files = ["${gremlin.server.dir}/scripts/generate-modern.groovy"]
 settingsSecure.serializers << new SerializerSettings("org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0", [:])
 settingsSecure.port = 45951
-settingsSecure.authentication.className = "org.apache.tinkerpop.gremlin.server.auth.SimpleAuthenticator"
-settingsSecure.authentication.config = [credentialsDb: "${gremlin.server.dir}/conf/tinkergraph-credentials.properties", credentialsDbLocation: "${gremlin.server.dir}/data/credentials.kryo"]
+settingsSecure.authentication.authenticator = "org.apache.tinkerpop.gremlin.server.auth.SimpleAuthenticator"
+settingsSecure.authentication.config = [credentialsDb: "${project.basedir}/target/tinkergraph-credentials.properties"]
 
 def serverSecure = new GremlinServer(settingsSecure)
 serverSecure.start().join()


[10/50] [abbrv] tinkerpop git commit: C# GLV: Generics and enum generation

Posted by sp...@apache.org.
C# GLV: Generics and enum generation


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

Branch: refs/heads/master
Commit: 21e775c459951481d41b018d5fd047538e969d18
Parents: 54deea4
Author: Jorge Bay Gondra <jo...@gmail.com>
Authored: Wed May 31 17:19:55 2017 +0200
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jul 13 13:46:48 2017 -0400

----------------------------------------------------------------------
 .../dotnet/AnonymousTraversalGenerator.groovy   |  53 ++-
 .../gremlin/dotnet/EnumGenerator.groovy         |  60 ++-
 .../dotnet/GraphTraversalGenerator.groovy       |  40 +-
 .../dotnet/GraphTraversalSourceGenerator.groovy |  33 +-
 .../gremlin/dotnet/PredicateGenerator.groovy    |   3 +-
 .../gremlin/dotnet/SymbolHelper.groovy          |  58 +++
 .../Driver/Remote/DriverRemoteConnection.cs     |   4 +-
 .../Driver/Remote/DriverRemoteTraversal.cs      |   2 +-
 .../Process/Remote/IRemoteConnection.cs         |   2 +-
 .../Process/Remote/RemoteStrategy.cs            |   6 +-
 .../Gremlin.Net/Process/Traversal/Barrier.cs    |   2 +-
 .../Process/Traversal/Cardinality.cs            |   6 +-
 .../src/Gremlin.Net/Process/Traversal/Column.cs |   4 +-
 .../Process/Traversal/DefaultTraversal.cs       |  23 +-
 .../Gremlin.Net/Process/Traversal/Direction.cs  |   6 +-
 .../Process/Traversal/GraphTraversal.cs         | 408 ++++++++++---------
 .../Process/Traversal/GraphTraversalSource.cs   |  22 +-
 .../Gremlin.Net/Process/Traversal/ITraversal.cs |  27 +-
 .../Process/Traversal/ITraversalStrategy.cs     |   4 +-
 .../Process/Traversal/NamingConversions.cs      |  86 ++++
 .../Gremlin.Net/Process/Traversal/Operator.cs   |  22 +-
 .../src/Gremlin.Net/Process/Traversal/Order.cs  |  14 +-
 .../src/Gremlin.Net/Process/Traversal/P.cs      |   2 +-
 .../src/Gremlin.Net/Process/Traversal/Pick.cs   |   4 +-
 .../src/Gremlin.Net/Process/Traversal/Pop.cs    |   6 +-
 .../src/Gremlin.Net/Process/Traversal/Scope.cs  |   4 +-
 .../Strategy/AbstractTraversalStrategy.cs       |   4 +-
 .../src/Gremlin.Net/Process/Traversal/T.cs      |   8 +-
 .../src/Gremlin.Net/Process/Traversal/__.cs     | 373 ++++++++---------
 .../Structure/IO/GraphSON/EnumSerializer.cs     |   5 +-
 .../Process/Remote/RemoteStrategyTests.cs       |   6 +-
 .../BytecodeGeneration/StrategiesTests.cs       |   6 +-
 .../DriverRemoteConnection/EnumTests.cs         |   6 +-
 .../GraphTraversalSourceTests.cs                |   4 +-
 .../GraphTraversalTests.cs                      |  13 +-
 .../DriverRemoteConnection/SideEffectTests.cs   |   4 +-
 .../DriverRemoteConnection/StrategiesTests.cs   |   6 +-
 .../Process/Traversal/TestTraversal.cs          |   4 +-
 .../Process/Traversal/TestTraversalStrategy.cs  |   6 +-
 .../GraphSON/BytecodeGraphSONSerializerTests.cs |   4 +-
 .../IO/GraphSON/GraphSONWriterTests.cs          |   9 +-
 41 files changed, 808 insertions(+), 551 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/AnonymousTraversalGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/AnonymousTraversalGenerator.groovy b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/AnonymousTraversalGenerator.groovy
index ca5fadb..b65b2b0 100644
--- a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/AnonymousTraversalGenerator.groovy
+++ b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/AnonymousTraversalGenerator.groovy
@@ -26,43 +26,70 @@ import java.lang.reflect.Modifier
 
 class AnonymousTraversalGenerator {
 
+    private static final Map<String, String[]> METHODS_WITH_SPECIFIC_TYPES = new HashMap<>();
+
+    static {
+        String[] useE2 = ["E2", "E2"];
+        METHODS_WITH_SPECIFIC_TYPES.put("constant", useE2);
+        METHODS_WITH_SPECIFIC_TYPES.put("limit", useE2);
+        METHODS_WITH_SPECIFIC_TYPES.put("mean", useE2);
+        METHODS_WITH_SPECIFIC_TYPES.put("optional", useE2);
+        METHODS_WITH_SPECIFIC_TYPES.put("range", useE2);
+        METHODS_WITH_SPECIFIC_TYPES.put("select", ["IDictionary<string, E2>", "E2"] as String[]);
+        METHODS_WITH_SPECIFIC_TYPES.put("sum", useE2);
+        METHODS_WITH_SPECIFIC_TYPES.put("tail", useE2);
+        METHODS_WITH_SPECIFIC_TYPES.put("tree", ["object"] as String[]);
+        METHODS_WITH_SPECIFIC_TYPES.put("unfold", useE2);
+    }
+
     public static void create(final String anonymousTraversalFile) {
 
+
         final StringBuilder csharpClass = new StringBuilder()
 
         csharpClass.append(CommonContentHelper.getLicense())
 
         csharpClass.append(
 """
+using System.Collections.Generic;
+using Gremlin.Net.Structure;
+
 namespace Gremlin.Net.Process.Traversal
 {
     public static class __
     {
-        public static GraphTraversal Start()
+        public static GraphTraversal<object, object> Start()
         {
-            return new GraphTraversal();
+            return new GraphTraversal<object, object>();
         }
 """)
         __.getMethods().
                 findAll { GraphTraversal.class.equals(it.returnType) }.
                 findAll { Modifier.isStatic(it.getModifiers()) }.
-                collect { it.name }.
-                findAll { !it.equals("__") && !it.equals("start") }.
-                unique().
-                sort { a, b -> a <=> b }.
-                forEach { javaMethodName ->
-                    String sharpMethodName = SymbolHelper.toCSharp(javaMethodName)
-
+                findAll { !it.name.equals("__") && !it.name.equals("start") }.
+                groupBy { it.name }.
+                // Select unique by name, with the most amount of parameters
+                collect { it.value.sort { a, b -> b.parameterCount <=> a.parameterCount }.first() }.
+                sort { it.name }.
+                forEach { javaMethod ->
+                    String sharpMethodName = SymbolHelper.toCSharp(javaMethod.name);
+                    String[] typeNames = SymbolHelper.getJavaParameterTypeNames(javaMethod);
+                    def t2 = SymbolHelper.toCSharpType(typeNames[1]);
+                    def tParam = SymbolHelper.getCSharpGenericTypeParam(t2);
+                    def specificTypes = METHODS_WITH_SPECIFIC_TYPES.get(javaMethod.name);
+                    if (specificTypes) {
+                        t2 = specificTypes[0];
+                        tParam = specificTypes.length > 1 ? "<" + specificTypes[1] + ">" : "";
+                    }
                     csharpClass.append(
 """
-        public static GraphTraversal ${sharpMethodName}(params object[] args)
+        public static GraphTraversal<object, $t2> $sharpMethodName$tParam(params object[] args)
         {
-            return new GraphTraversal().${sharpMethodName}(args);
+            return new GraphTraversal<object, object>().$sharpMethodName$tParam(args);
         }
 """)
                 }
-        csharpClass.append("\t}\n")
-        csharpClass.append("}")
+        csharpClass.append("    }\n}")
 
         final File file = new File(anonymousTraversalFile);
         file.delete()

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/EnumGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/EnumGenerator.groovy b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/EnumGenerator.groovy
index 799e001..840b604 100644
--- a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/EnumGenerator.groovy
+++ b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/EnumGenerator.groovy
@@ -20,20 +20,66 @@
 package org.apache.tinkerpop.gremlin.dotnet
 
 import org.apache.tinkerpop.gremlin.util.CoreImports
+import org.apache.tinkerpop.gremlin.structure.Direction
 
 class EnumGenerator {
 
     public static void create(final String enumDirectory) {
 
+        Map<String, String> enumCSharpToJavaNames = new HashMap<String, String>();
         for (final Class<? extends Enum> enumClass : CoreImports.getClassImports()
                 .findAll { Enum.class.isAssignableFrom(it) }
                 .sort { a, b -> a.getSimpleName() <=> b.getSimpleName() }
                 .collect()) {
-            createEnum(enumDirectory, enumClass)
+            createEnum(enumDirectory, enumClass, enumCSharpToJavaNames)
         }
+
+        // Write a file containing the equivalence in names between Java and C#
+        final String enumCSharpToJavaFile = "$enumDirectory/NamingConversions.cs"
+        final File file = new File(enumCSharpToJavaFile);
+        file.delete();
+        file.append(CommonContentHelper.getLicense());
+        file.append("""
+using System.Collections.Generic;
+
+namespace Gremlin.Net.Process.Traversal
+{
+    internal static class NamingConversions
+    {
+        /// <summary>
+        /// Gets the Java name equivalent for a given enum value
+        /// </summary>
+        internal static string GetEnumJavaName(string typeName, string value)
+        {
+            var key = \$"{typeName}.{value}";
+            string javaName;
+            if (!CSharpToJavaEnums.TryGetValue(key, out javaName))
+            {
+                throw new KeyNotFoundException(\$"Java name for {key} not found");
+            }
+            return javaName;
+        }
+
+        internal static readonly IDictionary<string, string> CSharpToJavaEnums = new Dictionary<string, string>
+        {
+"""     );
+        def lastIndex = (enumCSharpToJavaNames.size() - 1);
+        enumCSharpToJavaNames.eachWithIndex{ node, i ->
+            file.append("""            {"$node.key", "$node.value"}${i == lastIndex ? "" : ","}\n""")
+        }
+        file.append("        };\n    }\n}");
+
+    }
+
+    public static String toCSharpName(final Class<? extends Enum> enumClass, String itemName) {
+        if (enumClass.equals(Direction.class)) {
+            itemName = itemName.toLowerCase();
+        }
+        return itemName.substring(0, 1).toUpperCase() + itemName.substring(1);
     }
 
-    private static void createEnum(final String enumDirectory, final Class<? extends Enum> enumClass){
+    private static void createEnum(final String enumDirectory, final Class<? extends Enum> enumClass,
+                                   final Map<String, String> csharpToJava) {
         final StringBuilder csharpEnum = new StringBuilder()
 
         csharpEnum.append(CommonContentHelper.getLicense())
@@ -45,9 +91,13 @@ namespace Gremlin.Net.Process.Traversal
     public enum ${enumClass.getSimpleName()}
     {
 """)
-        enumClass.getEnumConstants()
-                .sort { a, b -> a.name() <=> b.name() }
-                .each { value -> csharpEnum.append("        ${value.name()},\n"); }
+        enumClass.getEnumConstants().
+                sort { a, b -> a.name() <=> b.name() }.
+                each { value ->
+                    def csharpName = toCSharpName(enumClass, value.name());
+                    csharpEnum.append("        $csharpName,\n");
+                    csharpToJava.put(enumClass.simpleName + "." + csharpName, value.name());
+                }
         csharpEnum.deleteCharAt(csharpEnum.length() - 2)
 
         csharpEnum.append("    }\n")

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GraphTraversalGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GraphTraversalGenerator.groovy b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GraphTraversalGenerator.groovy
index 58a3991..d3bade5 100644
--- a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GraphTraversalGenerator.groovy
+++ b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GraphTraversalGenerator.groovy
@@ -32,10 +32,11 @@ class GraphTraversalGenerator {
         csharpClass.append(
 """
 using System.Collections.Generic;
+using Gremlin.Net.Structure;
 
 namespace Gremlin.Net.Process.Traversal
 {
-    public class GraphTraversal : DefaultTraversal
+    public class GraphTraversal<S, E> : DefaultTraversal<S, E>
     {
         public GraphTraversal()
             : this(new List<ITraversalStrategy>(), new Bytecode())
@@ -47,27 +48,40 @@ namespace Gremlin.Net.Process.Traversal
             TraversalStrategies = traversalStrategies;
             Bytecode = bytecode;
         }
+
+        private static GraphTraversal<S2, E2> Wrap<S2, E2>(GraphTraversal<S, E> traversal)
+        {
+            if (typeof(S2) == typeof(S) && typeof(E2) == typeof(E))
+            {
+                return traversal as GraphTraversal<S2, E2>;
+            }
+            // New wrapper
+            return new GraphTraversal<S2, E2>(traversal.TraversalStrategies, traversal.Bytecode);
+        }
+
 """)
         GraphTraversal.getMethods().
                 findAll { GraphTraversal.class.equals(it.returnType) }.
                 findAll { !it.name.equals("clone") && !it.name.equals("iterate") }.
-                collect { it.name }.
-                unique().
-                sort { a, b -> a <=> b }.
-                forEach { javaMethodName ->
-                    String sharpMethodName = SymbolHelper.toCSharp(javaMethodName)
-
+                groupBy { it.name }.
+                // Select unique by name, with the most amount of parameters
+                collect { it.value.sort { a, b -> b.parameterCount <=> a.parameterCount }.first() }.
+                sort { it.name }.
+                forEach { javaMethod ->
+                    String[] typeNames = SymbolHelper.getJavaParameterTypeNames(javaMethod);
+                    def t1 = SymbolHelper.toCSharpType(typeNames[0]);
+                    def t2 = SymbolHelper.toCSharpType(typeNames[1]);
+                    def tParam = SymbolHelper.getCSharpGenericTypeParam(t2);
                     csharpClass.append(
-                            """
-        public GraphTraversal ${sharpMethodName}(params object[] args)
+"""
+        public GraphTraversal<$t1, $t2> ${SymbolHelper.toCSharp(javaMethod.name)}$tParam(params object[] args)
         {
-            Bytecode.AddStep("${javaMethodName}", args);
-            return this;
+            Bytecode.AddStep("$javaMethod.name", args);
+            return Wrap<$t1, $t2>(this);
         }
 """)
                 }
-        csharpClass.append("\t}\n")
-        csharpClass.append("}")
+        csharpClass.append("    }\n}")
 
         final File file = new File(graphTraversalFile);
         file.delete()

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GraphTraversalSourceGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GraphTraversalSourceGenerator.groovy b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GraphTraversalSourceGenerator.groovy
index fce4b70..7cb41da 100644
--- a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GraphTraversalSourceGenerator.groovy
+++ b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/GraphTraversalSourceGenerator.groovy
@@ -21,7 +21,7 @@ package org.apache.tinkerpop.gremlin.dotnet
 
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource
-
+import java.lang.reflect.*
 
 class GraphTraversalSourceGenerator {
 
@@ -36,6 +36,7 @@ class GraphTraversalSourceGenerator {
 using System.Collections.Generic;
 using Gremlin.Net.Process.Remote;
 using Gremlin.Net.Process.Traversal.Strategy.Decoration;
+using Gremlin.Net.Structure;
 
 namespace Gremlin.Net.Process.Traversal
 {
@@ -57,9 +58,6 @@ namespace Gremlin.Net.Process.Traversal
 """
         )
 
-        // Hold the list of methods with their overloads, so we do not create duplicates
-        HashMap<String, ArrayList<String>> sharpMethods = new HashMap<String, ArrayList<String>>()
-
         GraphTraversalSource.getMethods(). // SOURCE STEPS
                 findAll { GraphTraversalSource.class.equals(it.returnType) }.
                 findAll {
@@ -110,27 +108,32 @@ namespace Gremlin.Net.Process.Traversal
         }
 """)
 
-        GraphTraversalSource.getMethods(). // SPAWN STEPS
+        GraphTraversalSource.getMethods().
                 findAll { GraphTraversal.class.equals(it.returnType) }.
-                collect { it.name }.
-                unique().
-                sort { a, b -> a <=> b }.
-                forEach { javaMethodName ->
-                    String sharpMethodName = SymbolHelper.toCSharp(javaMethodName)
+                unique{ a -> a.name }.
+                sort { a, b -> a.name <=> b.name }.
+                forEach { javaMethod ->
+                    String sharpMethodName = SymbolHelper.toCSharp(javaMethod.name);
+                    Type[] typeArguments = ((ParameterizedType)javaMethod.getGenericReturnType()).actualTypeArguments;
+                    if (typeArguments.length != 2 || !(typeArguments[0] instanceof Class)) {
+                        return;
+                    }
+                    def returnType = """GraphTraversal<${
+                        ((Class)typeArguments[0]).getSimpleName()}, ${((Class)typeArguments[1]).getSimpleName()}>""";
+
 
                     csharpClass.append(
                             """
-        public GraphTraversal ${sharpMethodName}(params object[] args)
+        public ${returnType} ${sharpMethodName}(params object[] args)
         {
-            var traversal = new GraphTraversal(TraversalStrategies, new Bytecode(Bytecode));
-            traversal.Bytecode.AddStep("${javaMethodName}\", args);
+            var traversal = new ${returnType}(TraversalStrategies, new Bytecode(Bytecode));
+            traversal.Bytecode.AddStep("${javaMethod.name}\", args);
             return traversal;
         }
 """)
                 }
 
-        csharpClass.append("\t}\n")
-        csharpClass.append("}")
+        csharpClass.append("    }\n}")
 
         final File file = new File(graphTraversalSourceFile);
         file.delete()

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/PredicateGenerator.groovy
----------------------------------------------------------------------
diff --git a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/PredicateGenerator.groovy b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/PredicateGenerator.groovy
index 2633de6..c5c9c10 100644
--- a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/PredicateGenerator.groovy
+++ b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/PredicateGenerator.groovy
@@ -55,8 +55,7 @@ namespace Gremlin.Net.Process.Traversal
         }
 """)
                 }
-        csharpClass.append("\t}\n")
-        csharpClass.append("}")
+        csharpClass.append("    }\n}")
 
         final File file = new File(predicateFile)
         file.delete()

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/SymbolHelper.groovy
----------------------------------------------------------------------
diff --git a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/SymbolHelper.groovy b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/SymbolHelper.groovy
index 6c237e8..c041062 100644
--- a/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/SymbolHelper.groovy
+++ b/gremlin-dotnet-generator/src/main/groovy/org/apache/tinkerpop/gremlin/dotnet/SymbolHelper.groovy
@@ -19,8 +19,29 @@
 
 package org.apache.tinkerpop.gremlin.dotnet
 
+import java.lang.reflect.Method;
+import java.lang.reflect.ParameterizedType;
+
 public final class SymbolHelper {
 
+    private static final Map<String, String> TO_CSHARP_TYPE_MAP = new HashMap<>();
+
+    static {
+        TO_CSHARP_TYPE_MAP.put("Long", "long");
+        TO_CSHARP_TYPE_MAP.put("Integer", "int");
+        TO_CSHARP_TYPE_MAP.put("String", "string");
+        TO_CSHARP_TYPE_MAP.put("Object", "object");
+        TO_CSHARP_TYPE_MAP.put("java.util.Map<java.lang.String, E2>", "IDictionary<string, E2>");
+        TO_CSHARP_TYPE_MAP.put("java.util.Map<java.lang.String, B>", "IDictionary<string, E2>")
+        TO_CSHARP_TYPE_MAP.put("java.util.List<E>", "IList<E>");
+        TO_CSHARP_TYPE_MAP.put("java.util.List<A>", "IList<object>");
+        TO_CSHARP_TYPE_MAP.put("java.util.Map<K, V>", "IDictionary<K, V>");
+        TO_CSHARP_TYPE_MAP.put("java.util.Collection<E2>", "ICollection<E2>");
+        TO_CSHARP_TYPE_MAP.put("java.util.Collection<B>", "ICollection<E2>")
+        TO_CSHARP_TYPE_MAP.put("java.util.Map<K, java.lang.Long>", "IDictionary<K, long>");
+        TO_CSHARP_TYPE_MAP.put("TraversalMetrics", "E2");
+    }
+
     public static String toCSharp(final String symbol) {
         return (String) Character.toUpperCase(symbol.charAt(0)) + symbol.substring(1)
     }
@@ -28,4 +49,41 @@ public final class SymbolHelper {
     public static String toJava(final String symbol) {
         return (String) Character.toLowerCase(symbol.charAt(0)) + symbol.substring(1)
     }
+
+    public static String toCSharpType(final String name) {
+        String typeName = TO_CSHARP_TYPE_MAP.getOrDefault(name, name);
+        if (typeName.equals(name) && (typeName.contains("? extends") || typeName.equals("Tree"))) {
+            typeName = "E2";
+        }
+        return typeName;
+    }
+
+    public static String[] getJavaParameterTypeNames(final Method method) {
+        def typeArguments = ((ParameterizedType)method.genericReturnType).actualTypeArguments;
+        return typeArguments.
+                collect { (it instanceof Class) ? ((Class)it).simpleName : it.typeName }.
+                collect { name ->
+                    if (name.equals("A")) {
+                        name = "object";
+                    }
+                    else if (name.equals("B")) {
+                        name = "E2";
+                    }
+                    name;
+                };
+    }
+
+    public static String getCSharpGenericTypeParam(String typeName) {
+        def tParam = "";
+        if (typeName.contains("E2")) {
+            tParam = "<E2>";
+        }
+        else if (typeName.contains("<K, V>")) {
+            tParam = "<K, V>";
+        }
+        else if (typeName.contains("<K, ")) {
+            tParam = "<K>";
+        }
+        return tParam;
+    }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteConnection.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteConnection.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteConnection.cs
index 2ba5d6c..0a8b93f 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteConnection.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteConnection.cs
@@ -52,11 +52,11 @@ namespace Gremlin.Net.Driver.Remote
         /// </summary>
         /// <param name="bytecode">The <see cref="Bytecode" /> to submit.</param>
         /// <returns>A <see cref="ITraversal" /> allowing to access the results and side-effects.</returns>
-        public async Task<ITraversal> SubmitAsync(Bytecode bytecode)
+        public async Task<ITraversal<S, E>> SubmitAsync<S, E>(Bytecode bytecode)
         {
             var requestId = Guid.NewGuid();
             var resultSet = await SubmitBytecodeAsync(requestId, bytecode).ConfigureAwait(false);
-            return new DriverRemoteTraversal(_client, requestId, resultSet);
+            return new DriverRemoteTraversal<S, E>(_client, requestId, resultSet);
         }
 
         private async Task<IEnumerable<Traverser>> SubmitBytecodeAsync(Guid requestid, Bytecode bytecode)

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteTraversal.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteTraversal.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteTraversal.cs
index f3f26d1..5ce835f 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteTraversal.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/Remote/DriverRemoteTraversal.cs
@@ -27,7 +27,7 @@ using Gremlin.Net.Process.Traversal;
 
 namespace Gremlin.Net.Driver.Remote
 {
-    internal class DriverRemoteTraversal : DefaultTraversal
+    internal class DriverRemoteTraversal<S, E> : DefaultTraversal<S, E>
     {
         public DriverRemoteTraversal(IGremlinClient gremlinClient, Guid requestId,
             IEnumerable<Traverser> traversers)

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/src/Gremlin.Net/Process/Remote/IRemoteConnection.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Remote/IRemoteConnection.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Remote/IRemoteConnection.cs
index 8555cb3..5393bcb 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Remote/IRemoteConnection.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Remote/IRemoteConnection.cs
@@ -37,6 +37,6 @@ namespace Gremlin.Net.Process.Remote
         /// </summary>
         /// <param name="bytecode">The <see cref="Bytecode" /> to send.</param>
         /// <returns>The <see cref="ITraversal" /> with the results and optional side-effects.</returns>
-        Task<ITraversal> SubmitAsync(Bytecode bytecode);
+        Task<ITraversal<S, E>> SubmitAsync<S, E>(Bytecode bytecode);
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/src/Gremlin.Net/Process/Remote/RemoteStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Remote/RemoteStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Remote/RemoteStrategy.cs
index 4826113..b3f8c44 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Remote/RemoteStrategy.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Remote/RemoteStrategy.cs
@@ -44,16 +44,16 @@ namespace Gremlin.Net.Process.Remote
         }
 
         /// <inheritdoc />
-        public void Apply(ITraversal traversal)
+        public void Apply<S, E>(ITraversal<S, E> traversal)
         {
             ApplyAsync(traversal).Wait();
         }
 
         /// <inheritdoc />
-        public async Task ApplyAsync(ITraversal traversal)
+        public async Task ApplyAsync<S, E>(ITraversal<S, E> traversal)
         {
             if (traversal.Traversers != null) return;
-            var remoteTraversal = await _remoteConnection.SubmitAsync(traversal.Bytecode).ConfigureAwait(false);
+            var remoteTraversal = await _remoteConnection.SubmitAsync<S, E>(traversal.Bytecode).ConfigureAwait(false);
             traversal.SideEffects = remoteTraversal.SideEffects;
             traversal.Traversers = remoteTraversal.Traversers;
         }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Barrier.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Barrier.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Barrier.cs
index 13d1796..6ef1d4f 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Barrier.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Barrier.cs
@@ -25,6 +25,6 @@ namespace Gremlin.Net.Process.Traversal
 {
     public enum Barrier
     {
-        normSack
+        NormSack
     }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs
index f2365c3..b158d09 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs
@@ -25,8 +25,8 @@ namespace Gremlin.Net.Process.Traversal
 {
     public enum Cardinality
     {
-        list,
-        set,
-        single
+        List,
+        Set,
+        Single
     }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Column.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Column.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Column.cs
index ee591da..0f3556c 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Column.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Column.cs
@@ -25,7 +25,7 @@ namespace Gremlin.Net.Process.Traversal
 {
     public enum Column
     {
-        keys,
-        values
+        Keys,
+        Values
     }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/DefaultTraversal.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/DefaultTraversal.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/DefaultTraversal.cs
index 86c636c..2652df3 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/DefaultTraversal.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/DefaultTraversal.cs
@@ -22,6 +22,7 @@
 #endregion
 
 using System;
+using System.Collections;
 using System.Collections.Generic;
 using System.Threading.Tasks;
 
@@ -30,7 +31,7 @@ namespace Gremlin.Net.Process.Traversal
     /// <summary>
     ///     A traversal represents a directed walk over a graph.
     /// </summary>
-    public abstract class DefaultTraversal : ITraversal
+    public abstract class DefaultTraversal<S, E> : ITraversal<S, E>
     {
         private IEnumerator<Traverser> _traverserEnumerator;
 
@@ -85,7 +86,9 @@ namespace Gremlin.Net.Process.Traversal
         }
 
         /// <inheritdoc />
-        public object Current => TraverserEnumerator.Current?.Object;
+        public E Current => (E)TraverserEnumerator.Current?.Object;
+
+        object IEnumerator.Current => Current;
 
         private IEnumerator<Traverser> GetTraverserEnumerator()
         {
@@ -110,7 +113,7 @@ namespace Gremlin.Net.Process.Traversal
         ///     Gets the next result from the traversal.
         /// </summary>
         /// <returns>The result.</returns>
-        public object Next()
+        public E Next()
         {
             MoveNext();
             return Current;
@@ -121,7 +124,7 @@ namespace Gremlin.Net.Process.Traversal
         /// </summary>
         /// <param name="amount">The number of results to get.</param>
         /// <returns>The n-results.</returns>
-        public IEnumerable<object> Next(int amount)
+        public IEnumerable<E> Next(int amount)
         {
             for (var i = 0; i < amount; i++)
                 yield return Next();
@@ -131,7 +134,7 @@ namespace Gremlin.Net.Process.Traversal
         ///     Iterates all <see cref="Traverser" /> instances in the traversal.
         /// </summary>
         /// <returns>The fully drained traversal.</returns>
-        public ITraversal Iterate()
+        public ITraversal<S, E> Iterate()
         {
             while (MoveNext())
             {
@@ -153,9 +156,9 @@ namespace Gremlin.Net.Process.Traversal
         ///     Puts all the results into a <see cref="List{T}" />.
         /// </summary>
         /// <returns>The results in a list.</returns>
-        public List<object> ToList()
+        public IList<E> ToList()
         {
-            var objs = new List<object>();
+            var objs = new List<E>();
             while (MoveNext())
                 objs.Add(Current);
             return objs;
@@ -165,9 +168,9 @@ namespace Gremlin.Net.Process.Traversal
         ///     Puts all the results into a <see cref="HashSet{T}" />.
         /// </summary>
         /// <returns>The results in a set.</returns>
-        public HashSet<object> ToSet()
+        public ISet<E> ToSet()
         {
-            var objs = new HashSet<object>();
+            var objs = new HashSet<E>();
             while (MoveNext())
                 objs.Add(Current);
             return objs;
@@ -186,7 +189,7 @@ namespace Gremlin.Net.Process.Traversal
         /// <typeparam name="TReturn">The return type of the <paramref name="callback" />.</typeparam>
         /// <param name="callback">The function to execute on the current traversal.</param>
         /// <returns>The result of the executed <paramref name="callback" />.</returns>
-        public async Task<TReturn> Promise<TReturn>(Func<ITraversal, TReturn> callback)
+        public async Task<TReturn> Promise<TReturn>(Func<ITraversal<S, E>, TReturn> callback)
         {
             await ApplyStrategiesAsync().ConfigureAwait(false);
             return callback(this);

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Direction.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Direction.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Direction.cs
index 413e11f..100296c 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Direction.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Direction.cs
@@ -25,8 +25,8 @@ namespace Gremlin.Net.Process.Traversal
 {
     public enum Direction
     {
-        BOTH,
-        IN,
-        OUT
+        Both,
+        In,
+        Out
     }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/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 88e9261..0f3fbb7 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
@@ -22,10 +22,11 @@
 #endregion
 
 using System.Collections.Generic;
+using Gremlin.Net.Structure;
 
 namespace Gremlin.Net.Process.Traversal
 {
-    public class GraphTraversal : DefaultTraversal
+    public class GraphTraversal<S, E> : DefaultTraversal<S, E>
     {
         public GraphTraversal()
             : this(new List<ITraversalStrategy>(), new Bytecode())
@@ -38,592 +39,603 @@ namespace Gremlin.Net.Process.Traversal
             Bytecode = bytecode;
         }
 
-        public GraphTraversal V(params object[] args)
+        private static GraphTraversal<S2, E2> Wrap<S2, E2>(GraphTraversal<S, E> traversal)
+        {
+            if (typeof(S2) == typeof(S) && typeof(E2) == typeof(E))
+            {
+                return traversal as GraphTraversal<S2, E2>;
+            }
+            // New wrapper
+            return new GraphTraversal<S2, E2>(traversal.TraversalStrategies, traversal.Bytecode);
+        }
+
+
+        public GraphTraversal<S, Vertex> V(params object[] args)
         {
             Bytecode.AddStep("V", args);
-            return this;
+            return Wrap<S, Vertex>(this);
         }
 
-        public GraphTraversal AddE(params object[] args)
+        public GraphTraversal<S, Edge> AddE(params object[] args)
         {
             Bytecode.AddStep("addE", args);
-            return this;
+            return Wrap<S, Edge>(this);
         }
 
-        public GraphTraversal AddInE(params object[] args)
+        public GraphTraversal<S, Edge> AddInE(params object[] args)
         {
             Bytecode.AddStep("addInE", args);
-            return this;
+            return Wrap<S, Edge>(this);
         }
 
-        public GraphTraversal AddOutE(params object[] args)
+        public GraphTraversal<S, Edge> AddOutE(params object[] args)
         {
             Bytecode.AddStep("addOutE", args);
-            return this;
+            return Wrap<S, Edge>(this);
         }
 
-        public GraphTraversal AddV(params object[] args)
+        public GraphTraversal<S, Vertex> AddV(params object[] args)
         {
             Bytecode.AddStep("addV", args);
-            return this;
+            return Wrap<S, Vertex>(this);
         }
 
-        public GraphTraversal Aggregate(params object[] args)
+        public GraphTraversal<S, E> Aggregate(params object[] args)
         {
             Bytecode.AddStep("aggregate", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal And(params object[] args)
+        public GraphTraversal<S, E> And(params object[] args)
         {
             Bytecode.AddStep("and", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal As(params object[] args)
+        public GraphTraversal<S, E> As(params object[] args)
         {
             Bytecode.AddStep("as", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal Barrier(params object[] args)
+        public GraphTraversal<S, E> Barrier(params object[] args)
         {
             Bytecode.AddStep("barrier", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal Both(params object[] args)
+        public GraphTraversal<S, Vertex> Both(params object[] args)
         {
             Bytecode.AddStep("both", args);
-            return this;
+            return Wrap<S, Vertex>(this);
         }
 
-        public GraphTraversal BothE(params object[] args)
+        public GraphTraversal<S, Edge> BothE(params object[] args)
         {
             Bytecode.AddStep("bothE", args);
-            return this;
+            return Wrap<S, Edge>(this);
         }
 
-        public GraphTraversal BothV(params object[] args)
+        public GraphTraversal<S, Vertex> BothV(params object[] args)
         {
             Bytecode.AddStep("bothV", args);
-            return this;
+            return Wrap<S, Vertex>(this);
         }
 
-        public GraphTraversal Branch(params object[] args)
+        public GraphTraversal<S, E2> Branch<E2>(params object[] args)
         {
             Bytecode.AddStep("branch", args);
-            return this;
+            return Wrap<S, E2>(this);
         }
 
-        public GraphTraversal By(params object[] args)
+        public GraphTraversal<S, E> By(params object[] args)
         {
             Bytecode.AddStep("by", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal Cap(params object[] args)
+        public GraphTraversal<S, E2> Cap<E2>(params object[] args)
         {
             Bytecode.AddStep("cap", args);
-            return this;
+            return Wrap<S, E2>(this);
         }
 
-        public GraphTraversal Choose(params object[] args)
+        public GraphTraversal<S, E2> Choose<E2>(params object[] args)
         {
             Bytecode.AddStep("choose", args);
-            return this;
+            return Wrap<S, E2>(this);
         }
 
-        public GraphTraversal Coalesce(params object[] args)
+        public GraphTraversal<S, E2> Coalesce<E2>(params object[] args)
         {
             Bytecode.AddStep("coalesce", args);
-            return this;
+            return Wrap<S, E2>(this);
         }
 
-        public GraphTraversal Coin(params object[] args)
+        public GraphTraversal<S, E> Coin(params object[] args)
         {
             Bytecode.AddStep("coin", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal Constant(params object[] args)
+        public GraphTraversal<S, E2> Constant<E2>(params object[] args)
         {
             Bytecode.AddStep("constant", args);
-            return this;
+            return Wrap<S, E2>(this);
         }
 
-        public GraphTraversal Count(params object[] args)
+        public GraphTraversal<S, long> Count(params object[] args)
         {
             Bytecode.AddStep("count", args);
-            return this;
+            return Wrap<S, long>(this);
         }
 
-        public GraphTraversal CyclicPath(params object[] args)
+        public GraphTraversal<S, E> CyclicPath(params object[] args)
         {
             Bytecode.AddStep("cyclicPath", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal Dedup(params object[] args)
+        public GraphTraversal<S, E> Dedup(params object[] args)
         {
             Bytecode.AddStep("dedup", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal Drop(params object[] args)
+        public GraphTraversal<S, E> Drop(params object[] args)
         {
             Bytecode.AddStep("drop", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal Emit(params object[] args)
+        public GraphTraversal<S, E> Emit(params object[] args)
         {
             Bytecode.AddStep("emit", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal Filter(params object[] args)
+        public GraphTraversal<S, E> Filter(params object[] args)
         {
             Bytecode.AddStep("filter", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal FlatMap(params object[] args)
+        public GraphTraversal<S, E2> FlatMap<E2>(params object[] args)
         {
             Bytecode.AddStep("flatMap", args);
-            return this;
+            return Wrap<S, E2>(this);
         }
 
-        public GraphTraversal Fold(params object[] args)
+        public GraphTraversal<S, E2> Fold<E2>(params object[] args)
         {
             Bytecode.AddStep("fold", args);
-            return this;
+            return Wrap<S, E2>(this);
         }
 
-        public GraphTraversal From(params object[] args)
+        public GraphTraversal<S, E> From(params object[] args)
         {
             Bytecode.AddStep("from", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal Group(params object[] args)
+        public GraphTraversal<S, E> Group(params object[] args)
         {
             Bytecode.AddStep("group", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal GroupCount(params object[] args)
+        public GraphTraversal<S, E> GroupCount(params object[] args)
         {
             Bytecode.AddStep("groupCount", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal GroupV3d0(params object[] args)
+        public GraphTraversal<S, E> GroupV3d0(params object[] args)
         {
             Bytecode.AddStep("groupV3d0", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal Has(params object[] args)
+        public GraphTraversal<S, E> Has(params object[] args)
         {
             Bytecode.AddStep("has", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal HasId(params object[] args)
+        public GraphTraversal<S, E> HasId(params object[] args)
         {
             Bytecode.AddStep("hasId", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal HasKey(params object[] args)
+        public GraphTraversal<S, E> HasKey(params object[] args)
         {
             Bytecode.AddStep("hasKey", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal HasLabel(params object[] args)
+        public GraphTraversal<S, E> HasLabel(params object[] args)
         {
             Bytecode.AddStep("hasLabel", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal HasNot(params object[] args)
+        public GraphTraversal<S, E> HasNot(params object[] args)
         {
             Bytecode.AddStep("hasNot", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal HasValue(params object[] args)
+        public GraphTraversal<S, E> HasValue(params object[] args)
         {
             Bytecode.AddStep("hasValue", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal Id(params object[] args)
+        public GraphTraversal<S, object> Id(params object[] args)
         {
             Bytecode.AddStep("id", args);
-            return this;
+            return Wrap<S, object>(this);
         }
 
-        public GraphTraversal Identity(params object[] args)
+        public GraphTraversal<S, E> Identity(params object[] args)
         {
             Bytecode.AddStep("identity", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal In(params object[] args)
+        public GraphTraversal<S, Vertex> In(params object[] args)
         {
             Bytecode.AddStep("in", args);
-            return this;
+            return Wrap<S, Vertex>(this);
         }
 
-        public GraphTraversal InE(params object[] args)
+        public GraphTraversal<S, Edge> InE(params object[] args)
         {
             Bytecode.AddStep("inE", args);
-            return this;
+            return Wrap<S, Edge>(this);
         }
 
-        public GraphTraversal InV(params object[] args)
+        public GraphTraversal<S, Vertex> InV(params object[] args)
         {
             Bytecode.AddStep("inV", args);
-            return this;
+            return Wrap<S, Vertex>(this);
         }
 
-        public GraphTraversal Inject(params object[] args)
+        public GraphTraversal<S, E> Inject(params object[] args)
         {
             Bytecode.AddStep("inject", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal Is(params object[] args)
+        public GraphTraversal<S, E> Is(params object[] args)
         {
             Bytecode.AddStep("is", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal Key(params object[] args)
+        public GraphTraversal<S, string> Key(params object[] args)
         {
             Bytecode.AddStep("key", args);
-            return this;
+            return Wrap<S, string>(this);
         }
 
-        public GraphTraversal Label(params object[] args)
+        public GraphTraversal<S, string> Label(params object[] args)
         {
             Bytecode.AddStep("label", args);
-            return this;
+            return Wrap<S, string>(this);
         }
 
-        public GraphTraversal Limit(params object[] args)
+        public GraphTraversal<S, E2> Limit<E2>(params object[] args)
         {
             Bytecode.AddStep("limit", args);
-            return this;
+            return Wrap<S, E2>(this);
         }
 
-        public GraphTraversal Local(params object[] args)
+        public GraphTraversal<S, E2> Local<E2>(params object[] args)
         {
             Bytecode.AddStep("local", args);
-            return this;
+            return Wrap<S, E2>(this);
         }
 
-        public GraphTraversal Loops(params object[] args)
+        public GraphTraversal<S, int> Loops(params object[] args)
         {
             Bytecode.AddStep("loops", args);
-            return this;
+            return Wrap<S, int>(this);
         }
 
-        public GraphTraversal Map(params object[] args)
+        public GraphTraversal<S, E2> Map<E2>(params object[] args)
         {
             Bytecode.AddStep("map", args);
-            return this;
+            return Wrap<S, E2>(this);
         }
 
-        public GraphTraversal MapKeys(params object[] args)
+        public GraphTraversal<S, E2> MapKeys<E2>(params object[] args)
         {
             Bytecode.AddStep("mapKeys", args);
-            return this;
+            return Wrap<S, E2>(this);
         }
 
-        public GraphTraversal MapValues(params object[] args)
+        public GraphTraversal<S, E2> MapValues<E2>(params object[] args)
         {
             Bytecode.AddStep("mapValues", args);
-            return this;
+            return Wrap<S, E2>(this);
         }
 
-        public GraphTraversal Match(params object[] args)
+        public GraphTraversal<S, IDictionary<string, E2>> Match<E2>(params object[] args)
         {
             Bytecode.AddStep("match", args);
-            return this;
+            return Wrap<S, IDictionary<string, E2>>(this);
         }
 
-        public GraphTraversal Max(params object[] args)
+        public GraphTraversal<S, E2> Max<E2>(params object[] args)
         {
             Bytecode.AddStep("max", args);
-            return this;
+            return Wrap<S, E2>(this);
         }
 
-        public GraphTraversal Mean(params object[] args)
+        public GraphTraversal<S, E2> Mean<E2>(params object[] args)
         {
             Bytecode.AddStep("mean", args);
-            return this;
+            return Wrap<S, E2>(this);
         }
 
-        public GraphTraversal Min(params object[] args)
+        public GraphTraversal<S, E2> Min<E2>(params object[] args)
         {
             Bytecode.AddStep("min", args);
-            return this;
+            return Wrap<S, E2>(this);
         }
 
-        public GraphTraversal Not(params object[] args)
+        public GraphTraversal<S, E> Not(params object[] args)
         {
             Bytecode.AddStep("not", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal Option(params object[] args)
+        public GraphTraversal<S, E> Option(params object[] args)
         {
             Bytecode.AddStep("option", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal Optional(params object[] args)
+        public GraphTraversal<S, E2> Optional<E2>(params object[] args)
         {
             Bytecode.AddStep("optional", args);
-            return this;
+            return Wrap<S, E2>(this);
         }
 
-        public GraphTraversal Or(params object[] args)
+        public GraphTraversal<S, E> Or(params object[] args)
         {
             Bytecode.AddStep("or", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal Order(params object[] args)
+        public GraphTraversal<S, E> Order(params object[] args)
         {
             Bytecode.AddStep("order", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal OtherV(params object[] args)
+        public GraphTraversal<S, Vertex> OtherV(params object[] args)
         {
             Bytecode.AddStep("otherV", args);
-            return this;
+            return Wrap<S, Vertex>(this);
         }
 
-        public GraphTraversal Out(params object[] args)
+        public GraphTraversal<S, Vertex> Out(params object[] args)
         {
             Bytecode.AddStep("out", args);
-            return this;
+            return Wrap<S, Vertex>(this);
         }
 
-        public GraphTraversal OutE(params object[] args)
+        public GraphTraversal<S, Edge> OutE(params object[] args)
         {
             Bytecode.AddStep("outE", args);
-            return this;
+            return Wrap<S, Edge>(this);
         }
 
-        public GraphTraversal OutV(params object[] args)
+        public GraphTraversal<S, Vertex> OutV(params object[] args)
         {
             Bytecode.AddStep("outV", args);
-            return this;
+            return Wrap<S, Vertex>(this);
         }
 
-        public GraphTraversal PageRank(params object[] args)
+        public GraphTraversal<S, E> PageRank(params object[] args)
         {
             Bytecode.AddStep("pageRank", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal Path(params object[] args)
+        public GraphTraversal<S, Path> Path(params object[] args)
         {
             Bytecode.AddStep("path", args);
-            return this;
+            return Wrap<S, Path>(this);
         }
 
-        public GraphTraversal PeerPressure(params object[] args)
+        public GraphTraversal<S, E> PeerPressure(params object[] args)
         {
             Bytecode.AddStep("peerPressure", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal Profile(params object[] args)
+        public GraphTraversal<S, E> Profile(params object[] args)
         {
             Bytecode.AddStep("profile", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal Program(params object[] args)
+        public GraphTraversal<S, E> Program(params object[] args)
         {
             Bytecode.AddStep("program", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal Project(params object[] args)
+        public GraphTraversal<S, IDictionary<string, E2>> Project<E2>(params object[] args)
         {
             Bytecode.AddStep("project", args);
-            return this;
+            return Wrap<S, IDictionary<string, E2>>(this);
         }
 
-        public GraphTraversal Properties(params object[] args)
+        public GraphTraversal<S, E2> Properties<E2>(params object[] args)
         {
             Bytecode.AddStep("properties", args);
-            return this;
+            return Wrap<S, E2>(this);
         }
 
-        public GraphTraversal Property(params object[] args)
+        public GraphTraversal<S, E> Property(params object[] args)
         {
             Bytecode.AddStep("property", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal PropertyMap(params object[] args)
+        public GraphTraversal<S, IDictionary<string, E2>> PropertyMap<E2>(params object[] args)
         {
             Bytecode.AddStep("propertyMap", args);
-            return this;
+            return Wrap<S, IDictionary<string, E2>>(this);
         }
 
-        public GraphTraversal Range(params object[] args)
+        public GraphTraversal<S, E2> Range<E2>(params object[] args)
         {
             Bytecode.AddStep("range", args);
-            return this;
+            return Wrap<S, E2>(this);
         }
 
-        public GraphTraversal Repeat(params object[] args)
+        public GraphTraversal<S, E> Repeat(params object[] args)
         {
             Bytecode.AddStep("repeat", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal Sack(params object[] args)
+        public GraphTraversal<S, E> Sack(params object[] args)
         {
             Bytecode.AddStep("sack", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal Sample(params object[] args)
+        public GraphTraversal<S, E> Sample(params object[] args)
         {
             Bytecode.AddStep("sample", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal Select(params object[] args)
+        public GraphTraversal<S, IDictionary<string, E2>> Select<E2>(params object[] args)
         {
             Bytecode.AddStep("select", args);
-            return this;
+            return Wrap<S, IDictionary<string, E2>>(this);
         }
 
-        public GraphTraversal SideEffect(params object[] args)
+        public GraphTraversal<S, E> SideEffect(params object[] args)
         {
             Bytecode.AddStep("sideEffect", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal SimplePath(params object[] args)
+        public GraphTraversal<S, E> SimplePath(params object[] args)
         {
             Bytecode.AddStep("simplePath", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal Store(params object[] args)
+        public GraphTraversal<S, E> Store(params object[] args)
         {
             Bytecode.AddStep("store", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal Subgraph(params object[] args)
+        public GraphTraversal<S, Edge> Subgraph(params object[] args)
         {
             Bytecode.AddStep("subgraph", args);
-            return this;
+            return Wrap<S, Edge>(this);
         }
 
-        public GraphTraversal Sum(params object[] args)
+        public GraphTraversal<S, E2> Sum<E2>(params object[] args)
         {
             Bytecode.AddStep("sum", args);
-            return this;
+            return Wrap<S, E2>(this);
         }
 
-        public GraphTraversal Tail(params object[] args)
+        public GraphTraversal<S, E2> Tail<E2>(params object[] args)
         {
             Bytecode.AddStep("tail", args);
-            return this;
+            return Wrap<S, E2>(this);
         }
 
-        public GraphTraversal TimeLimit(params object[] args)
+        public GraphTraversal<S, E> TimeLimit(params object[] args)
         {
             Bytecode.AddStep("timeLimit", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal Times(params object[] args)
+        public GraphTraversal<S, E> Times(params object[] args)
         {
             Bytecode.AddStep("times", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal To(params object[] args)
+        public GraphTraversal<S, Vertex> To(params object[] args)
         {
             Bytecode.AddStep("to", args);
-            return this;
+            return Wrap<S, Vertex>(this);
         }
 
-        public GraphTraversal ToE(params object[] args)
+        public GraphTraversal<S, Edge> ToE(params object[] args)
         {
             Bytecode.AddStep("toE", args);
-            return this;
+            return Wrap<S, Edge>(this);
         }
 
-        public GraphTraversal ToV(params object[] args)
+        public GraphTraversal<S, Vertex> ToV(params object[] args)
         {
             Bytecode.AddStep("toV", args);
-            return this;
+            return Wrap<S, Vertex>(this);
         }
 
-        public GraphTraversal Tree(params object[] args)
+        public GraphTraversal<S, E> Tree(params object[] args)
         {
             Bytecode.AddStep("tree", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal Unfold(params object[] args)
+        public GraphTraversal<S, E2> Unfold<E2>(params object[] args)
         {
             Bytecode.AddStep("unfold", args);
-            return this;
+            return Wrap<S, E2>(this);
         }
 
-        public GraphTraversal Union(params object[] args)
+        public GraphTraversal<S, E2> Union<E2>(params object[] args)
         {
             Bytecode.AddStep("union", args);
-            return this;
+            return Wrap<S, E2>(this);
         }
 
-        public GraphTraversal Until(params object[] args)
+        public GraphTraversal<S, E> Until(params object[] args)
         {
             Bytecode.AddStep("until", args);
-            return this;
+            return Wrap<S, E>(this);
         }
 
-        public GraphTraversal Value(params object[] args)
+        public GraphTraversal<S, E2> Value<E2>(params object[] args)
         {
             Bytecode.AddStep("value", args);
-            return this;
+            return Wrap<S, E2>(this);
         }
 
-        public GraphTraversal ValueMap(params object[] args)
+        public GraphTraversal<S, IDictionary<string, E2>> ValueMap<E2>(params object[] args)
         {
             Bytecode.AddStep("valueMap", args);
-            return this;
+            return Wrap<S, IDictionary<string, E2>>(this);
         }
 
-        public GraphTraversal Values(params object[] args)
+        public GraphTraversal<S, E2> Values<E2>(params object[] args)
         {
             Bytecode.AddStep("values", args);
-            return this;
+            return Wrap<S, E2>(this);
         }
 
-        public GraphTraversal Where(params object[] args)
+        public GraphTraversal<S, E> Where(params object[] args)
         {
             Bytecode.AddStep("where", args);
-            return this;
+            return Wrap<S, E>(this);
         }
-	}
+    }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs
index 6382781..07d98fb 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs
@@ -24,6 +24,7 @@
 using System.Collections.Generic;
 using Gremlin.Net.Process.Remote;
 using Gremlin.Net.Process.Traversal.Strategy.Decoration;
+using Gremlin.Net.Structure;
 
 namespace Gremlin.Net.Process.Traversal
 {
@@ -111,32 +112,25 @@ namespace Gremlin.Net.Process.Traversal
             return WithStrategies(new VertexProgramStrategy(graphComputer, workers, persist, result, vertices, edges, configuration));
         }
 
-        public GraphTraversal E(params object[] args)
+        public GraphTraversal<Edge, Edge> E(params object[] args)
         {
-            var traversal = new GraphTraversal(TraversalStrategies, new Bytecode(Bytecode));
+            var traversal = new GraphTraversal<Edge, Edge>(TraversalStrategies, new Bytecode(Bytecode));
             traversal.Bytecode.AddStep("E", args);
             return traversal;
         }
 
-        public GraphTraversal V(params object[] args)
+        public GraphTraversal<Vertex, Vertex> V(params object[] args)
         {
-            var traversal = new GraphTraversal(TraversalStrategies, new Bytecode(Bytecode));
+            var traversal = new GraphTraversal<Vertex, Vertex>(TraversalStrategies, new Bytecode(Bytecode));
             traversal.Bytecode.AddStep("V", args);
             return traversal;
         }
 
-        public GraphTraversal AddV(params object[] args)
+        public GraphTraversal<Vertex, Vertex> AddV(params object[] args)
         {
-            var traversal = new GraphTraversal(TraversalStrategies, new Bytecode(Bytecode));
+            var traversal = new GraphTraversal<Vertex, Vertex>(TraversalStrategies, new Bytecode(Bytecode));
             traversal.Bytecode.AddStep("addV", args);
             return traversal;
         }
-
-        public GraphTraversal Inject(params object[] args)
-        {
-            var traversal = new GraphTraversal(TraversalStrategies, new Bytecode(Bytecode));
-            traversal.Bytecode.AddStep("inject", args);
-            return traversal;
-        }
-	}
+    }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversal.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversal.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversal.cs
index cb472b7..cb1c80e 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversal.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversal.cs
@@ -29,9 +29,10 @@ using System.Threading.Tasks;
 namespace Gremlin.Net.Process.Traversal
 {
     /// <summary>
-    ///     A traversal represents a directed walk over a graph.
+    /// Represents the basic information for a walk over a graph.
     /// </summary>
-    public interface ITraversal : IDisposable, IEnumerator
+    /// <seealso cref="ITraversal{SType, EType}"/>
+    public interface ITraversal
     {
         /// <summary>
         ///     Gets the <see cref="Bytecode" /> representation of this traversal.
@@ -47,25 +48,31 @@ namespace Gremlin.Net.Process.Traversal
         ///     Gets or sets the <see cref="Traverser" />'s of this traversal that hold the results of the traversal.
         /// </summary>
         IEnumerable<Traverser> Traversers { get; set; }
+    }
 
+    /// <summary>
+    ///     A traversal represents a directed walk over a graph.
+    /// </summary>
+    public interface ITraversal<S, E> : ITraversal, IEnumerator<E>
+    {
         /// <summary>
         ///     Gets the next result from the traversal.
         /// </summary>
         /// <returns>The result.</returns>
-        object Next();
+        E Next();
 
         /// <summary>
         ///     Gets the next n-number of results from the traversal.
         /// </summary>
         /// <param name="amount">The number of results to get.</param>
         /// <returns>The n-results.</returns>
-        IEnumerable<object> Next(int amount);
+        IEnumerable<E> Next(int amount);
 
         /// <summary>
         ///     Iterates all <see cref="Traverser" /> instances in the traversal.
         /// </summary>
         /// <returns>The fully drained traversal.</returns>
-        ITraversal Iterate();
+        ITraversal<S, E> Iterate();
 
         /// <summary>
         ///     Gets the next <see cref="Traverser" />.
@@ -74,16 +81,16 @@ namespace Gremlin.Net.Process.Traversal
         Traverser NextTraverser();
 
         /// <summary>
-        ///     Puts all the results into a <see cref="List{T}" />.
+        ///     Puts all the results into a <see cref="IList{T}" />.
         /// </summary>
         /// <returns>The results in a list.</returns>
-        List<object> ToList();
+        IList<E> ToList();
 
         /// <summary>
-        ///     Puts all the results into a <see cref="HashSet{T}" />.
+        ///     Puts all the results into a <see cref="ISet{T}" />.
         /// </summary>
         /// <returns>The results in a set.</returns>
-        HashSet<object> ToSet();
+        ISet<E> ToSet();
 
         /// <summary>
         ///     Starts a promise to execute a function on the current traversal that will be completed in the future.
@@ -91,6 +98,6 @@ namespace Gremlin.Net.Process.Traversal
         /// <typeparam name="TReturn">The return type of the <paramref name="callback" />.</typeparam>
         /// <param name="callback">The function to execute on the current traversal.</param>
         /// <returns>The result of the executed <paramref name="callback" />.</returns>
-        Task<TReturn> Promise<TReturn>(Func<ITraversal, TReturn> callback);
+        Task<TReturn> Promise<TReturn>(Func<ITraversal<S, E>, TReturn> callback);
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversalStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversalStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversalStrategy.cs
index 991a807..013d62a 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversalStrategy.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/ITraversalStrategy.cs
@@ -35,12 +35,12 @@ namespace Gremlin.Net.Process.Traversal
         ///     Applies the strategy to the given <see cref="ITraversal" />.
         /// </summary>
         /// <param name="traversal">The <see cref="ITraversal" /> the strategy should be applied to.</param>
-        void Apply(ITraversal traversal);
+        void Apply<S, E>(ITraversal<S, E> traversal);
 
         /// <summary>
         ///     Applies the strategy to the given <see cref="ITraversal" /> asynchronously.
         /// </summary>
         /// <param name="traversal">The <see cref="ITraversal" /> the strategy should be applied to.</param>
-        Task ApplyAsync(ITraversal traversal);
+        Task ApplyAsync<S, E>(ITraversal<S, E> traversal);
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs
new file mode 100644
index 0000000..6f5fec5
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs
@@ -0,0 +1,86 @@
+#region License
+
+/*
+ * 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.
+ */
+
+#endregion
+
+using System.Collections.Generic;
+
+namespace Gremlin.Net.Process.Traversal
+{
+    internal static class NamingConversions
+    {
+        /// <summary>
+        /// Gets the Java name equivalent for a given enum value
+        /// </summary>
+        internal static string GetEnumJavaName(string typeName, string value)
+        {
+            var key = $"{typeName}.{value}";
+            string javaName;
+            if (!CSharpToJavaEnums.TryGetValue(key, out javaName))
+            {
+                throw new KeyNotFoundException($"Java name for {key} not found");
+            }
+            return javaName;
+        }
+
+        internal static readonly IDictionary<string, string> CSharpToJavaEnums = new Dictionary<string, string>
+        {
+            {"T.Value", "value"},
+            {"Order.Decr", "decr"},
+            {"Order.KeyDecr", "keyDecr"},
+            {"T.Key", "key"},
+            {"Column.Values", "values"},
+            {"Order.KeyIncr", "keyIncr"},
+            {"Operator.Or", "or"},
+            {"Order.ValueIncr", "valueIncr"},
+            {"Cardinality.List", "list"},
+            {"Order.Incr", "incr"},
+            {"Pop.All", "all"},
+            {"Operator.SumLong", "sumLong"},
+            {"Pop.First", "first"},
+            {"T.Label", "label"},
+            {"Cardinality.Set", "set"},
+            {"Order.Shuffle", "shuffle"},
+            {"Direction.In", "IN"},
+            {"Direction.Both", "BOTH"},
+            {"Scope.Local", "local"},
+            {"Operator.Max", "max"},
+            {"Direction.Out", "OUT"},
+            {"Scope.Global", "global"},
+            {"Pick.Any", "any"},
+            {"Order.ValueDecr", "valueDecr"},
+            {"Column.Keys", "keys"},
+            {"Operator.AddAll", "addAll"},
+            {"Operator.Mult", "mult"},
+            {"Pick.None", "none"},
+            {"Pop.Last", "last"},
+            {"Operator.And", "and"},
+            {"T.Id", "id"},
+            {"Operator.Min", "min"},
+            {"Barrier.NormSack", "normSack"},
+            {"Operator.Minus", "minus"},
+            {"Cardinality.Single", "single"},
+            {"Operator.Assign", "assign"},
+            {"Operator.Div", "div"},
+            {"Operator.Sum", "sum"}
+        };
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Operator.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Operator.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Operator.cs
index 563f091..17b44a4 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Operator.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Operator.cs
@@ -25,16 +25,16 @@ namespace Gremlin.Net.Process.Traversal
 {
     public enum Operator
     {
-        addAll,
-        and,
-        assign,
-        div,
-        max,
-        min,
-        minus,
-        mult,
-        or,
-        sum,
-        sumLong
+        AddAll,
+        And,
+        Assign,
+        Div,
+        Max,
+        Min,
+        Minus,
+        Mult,
+        Or,
+        Sum,
+        SumLong
     }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs
index bbd0eab..179182b 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs
@@ -25,12 +25,12 @@ namespace Gremlin.Net.Process.Traversal
 {
     public enum Order
     {
-        decr,
-        incr,
-        keyDecr,
-        keyIncr,
-        shuffle,
-        valueDecr,
-        valueIncr
+        Decr,
+        Incr,
+        KeyDecr,
+        KeyIncr,
+        Shuffle,
+        ValueDecr,
+        ValueIncr
     }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/P.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/P.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/P.cs
index 0ecdccd..cf388bd 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/P.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/P.cs
@@ -103,5 +103,5 @@ namespace Gremlin.Net.Process.Traversal
             var value = args.Length == 1 ? args[0] : args;
             return new TraversalPredicate("without", value);
         }
-	}
+    }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pick.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pick.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pick.cs
index f16aa20..624f66e 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pick.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pick.cs
@@ -25,7 +25,7 @@ namespace Gremlin.Net.Process.Traversal
 {
     public enum Pick
     {
-        any,
-        none
+        Any,
+        None
     }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs
index e0cf62e..dcbe698 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs
@@ -25,8 +25,8 @@ namespace Gremlin.Net.Process.Traversal
 {
     public enum Pop
     {
-        all,
-        first,
-        last
+        All,
+        First,
+        Last
     }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Scope.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Scope.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Scope.cs
index c4af316..f27725e 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Scope.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Scope.cs
@@ -25,7 +25,7 @@ namespace Gremlin.Net.Process.Traversal
 {
     public enum Scope
     {
-        global,
-        local
+        Global,
+        Local
     }
 }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/AbstractTraversalStrategy.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/AbstractTraversalStrategy.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/AbstractTraversalStrategy.cs
index 8c9666c..e5d3dfe 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/AbstractTraversalStrategy.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/AbstractTraversalStrategy.cs
@@ -52,12 +52,12 @@ namespace Gremlin.Net.Process.Traversal.Strategy
         }
 
         /// <inheritdoc />
-        public virtual void Apply(ITraversal traversal)
+        public virtual void Apply<S, E>(ITraversal<S, E> traversal)
         {
         }
 
         /// <inheritdoc />
-        public virtual Task ApplyAsync(ITraversal traversal)
+        public virtual Task ApplyAsync<S, E>(ITraversal<S, E> traversal)
         {
             return Task.CompletedTask;
         }

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/21e775c4/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs
index 50c15d9..76ca40f 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs
@@ -25,9 +25,9 @@ namespace Gremlin.Net.Process.Traversal
 {
     public enum T
     {
-        id,
-        key,
-        label,
-        value
+        Id,
+        Key,
+        Label,
+        Value
     }
 }


[43/50] [abbrv] tinkerpop git commit: Gremlin .NET: Use application/vnd.gremlin-v3.0+json by default

Posted by sp...@apache.org.
Gremlin .NET: Use application/vnd.gremlin-v3.0+json by default


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

Branch: refs/heads/master
Commit: 8fd4c8cdc7a8299af47e592389b3183a9c64c1ee
Parents: 8cdc941
Author: Jorge Bay Gondra <jo...@gmail.com>
Authored: Fri Jul 14 18:44:43 2017 +0200
Committer: Jorge Bay Gondra <jo...@gmail.com>
Committed: Fri Jul 14 18:44:43 2017 +0200

----------------------------------------------------------------------
 gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs       |  5 +++--
 .../src/Gremlin.Net/Driver/ConnectionFactory.cs           |  6 ++++--
 gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs    | 10 ++++++++--
 .../src/Gremlin.Net/Driver/JsonMessageSerializer.cs       |  9 +++++++--
 4 files changed, 22 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8fd4c8cd/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs
index 126b461..3d3e902 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/Connection.cs
@@ -36,20 +36,21 @@ namespace Gremlin.Net.Driver
     {
         private readonly GraphSONReader _graphSONReader;
         private readonly GraphSONWriter _graphSONWriter;
-        private readonly JsonMessageSerializer _messageSerializer = new JsonMessageSerializer();
+        private readonly JsonMessageSerializer _messageSerializer;
         private readonly Uri _uri;
         private readonly WebSocketConnection _webSocketConnection = new WebSocketConnection();
         private readonly string _username;
         private readonly string _password;
 
         public Connection(Uri uri, string username, string password, GraphSONReader graphSONReader,
-            GraphSONWriter graphSONWriter)
+                          GraphSONWriter graphSONWriter, string mimeType)
         {
             _uri = uri;
             _username = username;
             _password = password;
             _graphSONReader = graphSONReader;
             _graphSONWriter = graphSONWriter;
+            _messageSerializer = new JsonMessageSerializer(mimeType);
         }
 
         public async Task<IReadOnlyCollection<T>> SubmitAsync<T>(RequestMessage requestMessage)

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8fd4c8cd/gremlin-dotnet/src/Gremlin.Net/Driver/ConnectionFactory.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/ConnectionFactory.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/ConnectionFactory.cs
index e3fd068..e2ff5b7 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/ConnectionFactory.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/ConnectionFactory.cs
@@ -31,11 +31,13 @@ namespace Gremlin.Net.Driver
         private readonly GraphSONReader _graphSONReader;
         private readonly GraphSONWriter _graphSONWriter;
         private readonly GremlinServer _gremlinServer;
+        private readonly string _mimeType;
 
         public ConnectionFactory(GremlinServer gremlinServer, GraphSONReader graphSONReader,
-            GraphSONWriter graphSONWriter)
+                                 GraphSONWriter graphSONWriter, string mimeType)
         {
             _gremlinServer = gremlinServer;
+            _mimeType = mimeType;
             _graphSONReader = graphSONReader ?? throw new ArgumentNullException(nameof(graphSONReader));
             _graphSONWriter = graphSONWriter ?? throw new ArgumentNullException(nameof(graphSONWriter));
         }
@@ -43,7 +45,7 @@ namespace Gremlin.Net.Driver
         public Connection CreateConnection()
         {
             return new Connection(_gremlinServer.Uri, _gremlinServer.Username, _gremlinServer.Password, _graphSONReader,
-                _graphSONWriter);
+                                 _graphSONWriter, _mimeType);
         }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8fd4c8cd/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs
index 9781a7c..a251ab7 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/GremlinClient.cs
@@ -34,6 +34,11 @@ namespace Gremlin.Net.Driver
     /// </summary>
     public class GremlinClient : IGremlinClient
     {
+        /// <summary>
+        /// Defines the default mime type to use.
+        /// </summary>
+        public const string DefaultMimeType = "application/vnd.gremlin-v3.0+json";
+        
         private readonly ConnectionPool _connectionPool;
 
         /// <summary>
@@ -42,12 +47,13 @@ namespace Gremlin.Net.Driver
         /// <param name="gremlinServer">The <see cref="GremlinServer" /> the requests should be sent to.</param>
         /// <param name="graphSONReader">A <see cref="GraphSONReader" /> instance to read received GraphSON data.</param>
         /// <param name="graphSONWriter">a <see cref="GraphSONWriter" /> instance to write GraphSON data.</param>
+        /// <param name="mimeType">The GraphSON version mime type, defaults to latest supported by the server.</param>
         public GremlinClient(GremlinServer gremlinServer, GraphSONReader graphSONReader = null,
-            GraphSONWriter graphSONWriter = null)
+                             GraphSONWriter graphSONWriter = null, string mimeType = null)
         {
             var reader = graphSONReader ?? new GraphSON3Reader();
             var writer = graphSONWriter ?? new GraphSON3Writer();
-            var connectionFactory = new ConnectionFactory(gremlinServer, reader, writer);
+            var connectionFactory = new ConnectionFactory(gremlinServer, reader, writer, mimeType ?? DefaultMimeType);
             _connectionPool = new ConnectionPool(connectionFactory);
         }
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8fd4c8cd/gremlin-dotnet/src/Gremlin.Net/Driver/JsonMessageSerializer.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Driver/JsonMessageSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Driver/JsonMessageSerializer.cs
index c3270bf..53a546c 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Driver/JsonMessageSerializer.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Driver/JsonMessageSerializer.cs
@@ -28,7 +28,12 @@ namespace Gremlin.Net.Driver
 {
     internal class JsonMessageSerializer
     {
-        private const string MimeType = "application/vnd.gremlin-v2.0+json";
+        private readonly string _mimeType;
+
+        public JsonMessageSerializer(string mimeType)
+        {
+            _mimeType = mimeType;
+        }
 
         public byte[] SerializeMessage(string msg)
         {
@@ -37,7 +42,7 @@ namespace Gremlin.Net.Driver
 
         private string MessageWithHeader(string messageContent)
         {
-            return $"{(char) MimeType.Length}{MimeType}{messageContent}";
+            return $"{(char) _mimeType.Length}{_mimeType}{messageContent}";
         }
 
         public TMessage DeserializeMessage<TMessage>(byte[] message)


[37/50] [abbrv] tinkerpop git commit: TINKERPOP-1552 Some deprecated code was removed and thus regen'd .NET enums

Posted by sp...@apache.org.
TINKERPOP-1552 Some deprecated code was removed and thus regen'd .NET enums


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

Branch: refs/heads/master
Commit: 6115cf4aac5f48feab34b5a6c534ba828fc11b94
Parents: 02327f5
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Jul 12 10:31:26 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jul 13 13:47:20 2017 -0400

----------------------------------------------------------------------
 .../src/Gremlin.Net/Process/Traversal/NamingConversions.cs     | 4 ----
 gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs      | 6 +-----
 2 files changed, 1 insertion(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6115cf4a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs
index b9bc2ae..585c4f0 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/NamingConversions.cs
@@ -71,11 +71,7 @@ namespace Gremlin.Net.Process.Traversal
             {"Operator.SumLong", "sumLong"},
             {"Order.Decr", "decr"},
             {"Order.Incr", "incr"},
-            {"Order.KeyDecr", "keyDecr"},
-            {"Order.KeyIncr", "keyIncr"},
             {"Order.Shuffle", "shuffle"},
-            {"Order.ValueDecr", "valueDecr"},
-            {"Order.ValueIncr", "valueIncr"},
             {"Pick.Any", "any"},
             {"Pick.None", "none"},
             {"Pop.All", "all"},

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6115cf4a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs
index 1f12710..197f58b 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs
@@ -30,11 +30,7 @@ namespace Gremlin.Net.Process.Traversal
     {
         Decr,
 		Incr,
-		KeyDecr,
-		KeyIncr,
-		Shuffle,
-		ValueDecr,
-		ValueIncr
+		Shuffle
     }
     
 #pragma warning restore 1591


[08/50] [abbrv] tinkerpop git commit: TINKERPOP-1552 Added license to poms for dotnet

Posted by sp...@apache.org.
TINKERPOP-1552 Added license to poms for dotnet


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

Branch: refs/heads/master
Commit: 56d5af9f40e93f6f0a302915646f2450fe37c28b
Parents: 792fca2
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Thu May 18 15:53:06 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jul 13 13:46:48 2017 -0400

----------------------------------------------------------------------
 gremlin-csharp-generator/pom.xml | 17 ++++++++++++++++-
 gremlin-dotnet/pom.xml           | 17 ++++++++++++++++-
 gremlin-dotnet/src/pom.xml       | 17 ++++++++++++++++-
 gremlin-dotnet/test/pom.xml      | 17 ++++++++++++++++-
 4 files changed, 64 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/56d5af9f/gremlin-csharp-generator/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-csharp-generator/pom.xml b/gremlin-csharp-generator/pom.xml
index f488f02..af0ae60 100644
--- a/gremlin-csharp-generator/pom.xml
+++ b/gremlin-csharp-generator/pom.xml
@@ -1,4 +1,19 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/56d5af9f/gremlin-dotnet/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/pom.xml b/gremlin-dotnet/pom.xml
index 0472324..9bdff54 100644
--- a/gremlin-dotnet/pom.xml
+++ b/gremlin-dotnet/pom.xml
@@ -1,4 +1,19 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/56d5af9f/gremlin-dotnet/src/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/pom.xml b/gremlin-dotnet/src/pom.xml
index 5fef134..2d05d7f 100644
--- a/gremlin-dotnet/src/pom.xml
+++ b/gremlin-dotnet/src/pom.xml
@@ -1,4 +1,19 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/56d5af9f/gremlin-dotnet/test/pom.xml
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/test/pom.xml b/gremlin-dotnet/test/pom.xml
index e625d60..d91ca85 100644
--- a/gremlin-dotnet/test/pom.xml
+++ b/gremlin-dotnet/test/pom.xml
@@ -1,4 +1,19 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">


[39/50] [abbrv] tinkerpop git commit: Doc: Use DotNet instead .NET because asciidoc parser chokes on titles starting with `.`

Posted by sp...@apache.org.
Doc: Use DotNet instead .NET because asciidoc parser chokes on titles starting with `.`


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

Branch: refs/heads/master
Commit: cbcb640623bd56108c5630c58fc200bda696104c
Parents: c074ea0
Author: Jorge Bay Gondra <jo...@gmail.com>
Authored: Fri Jul 14 12:23:17 2017 +0200
Committer: Jorge Bay Gondra <jo...@gmail.com>
Committed: Fri Jul 14 12:23:17 2017 +0200

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


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/cbcb6406/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 6e3d350..8c6d75d 100644
--- a/docs/src/dev/developer/development-environment.asciidoc
+++ b/docs/src/dev/developer/development-environment.asciidoc
@@ -102,8 +102,8 @@ integration tests and therefore must be actively switched on with `-DskipIntegra
 mvn clean install -pl gremlin-console -DskipIntegrationTests=false
 
 [[dotnet-environment]]
-.NET Environment
-~~~~~~~~~~~~~~~~
+DotNet Environment
+~~~~~~~~~~~~~~~~~~
 
 The build optionally requires link:https://www.microsoft.com/net/core[.NET Core SDK] (>=1.1.0) to work with the
 `gremlin-dotnet` module. If .NET Core SDK is not installed, TinkerPop will still build with Maven, but .NET projects