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/19 19:19:00 UTC

[01/50] [abbrv] tinkerpop git commit: C# GLV: Generics and enum generation [Forced Update!]

Repository: tinkerpop
Updated Branches:
  refs/heads/TINKERPOP-1716 853123ad5 -> a015c1174 (forced update)


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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; }


[26/50] [abbrv] tinkerpop git commit: TINKERPOP-1385 Bound profile test assertions to TinkerGraph

Posted by sp...@apache.org.
TINKERPOP-1385 Bound profile test assertions to TinkerGraph

Assertions were too stringent for graph providers who had complex strategies.


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

Branch: refs/heads/TINKERPOP-1716
Commit: d27fc7d2465af97aa583cb6c072391273286d322
Parents: 402678b
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Sun Jul 9 09:54:21 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Sun Jul 9 09:54:21 2017 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  1 +
 .../process/traversal/step/map/ProfileTest.java | 38 ++++++++++++++------
 2 files changed, 29 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d27fc7d2/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 96e79ab..05e20bb 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -28,6 +28,7 @@ TinkerPop 3.2.6 (Release Date: NOT OFFICIALLY RELEASED YET)
 
 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.
 * `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`.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/d27fc7d2/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProfileTest.java
----------------------------------------------------------------------
diff --git a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProfileTest.java b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProfileTest.java
index 1af6ba3..7ac3059 100644
--- a/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProfileTest.java
+++ b/gremlin-test/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/ProfileTest.java
@@ -53,11 +53,14 @@ import java.util.concurrent.TimeUnit;
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.GRATEFUL;
 import static org.apache.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
 import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__.both;
+import static org.hamcrest.core.IsEqual.equalTo;
+import static org.hamcrest.core.IsInstanceOf.instanceOf;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
+import static org.junit.Assume.assumeThat;
 
 /**
  * @author Bob Briody (http://bobbriody.com)
@@ -105,12 +108,15 @@ public abstract class ProfileTest extends AbstractGremlinProcessTest {
         final Traversal<Vertex, Vertex> traversal = get_g_V_out_out_profileXmetricsX();
         printTraversalForm(traversal);
         traversal.iterate();
-        validate_g_V_out_out_profile_modern(traversal, traversal.asAdmin().getSideEffects().<TraversalMetrics>get(METRICS_KEY));
+        validate_g_V_out_out_profile_modern(traversal, traversal.asAdmin().getSideEffects().get(METRICS_KEY));
     }
 
     private void validate_g_V_out_out_profile_modern(final Traversal traversal, final TraversalMetrics traversalMetrics) {
         traversalMetrics.toString(); // ensure no exceptions are thrown
 
+        assumeThat("The following assertions apply to TinkerGraph only as provider strategies can alter the steps to not comply with expectations",
+                graph.getClass().getSimpleName(), equalTo("TinkerGraph"));
+
         Metrics metrics = traversalMetrics.getMetrics(0);
         assertEquals(6, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
         assertEquals(6, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue());
@@ -149,13 +155,16 @@ public abstract class ProfileTest extends AbstractGremlinProcessTest {
         final Traversal<Vertex, Vertex> traversal = get_g_V_out_out_profileXmetricsX();
         printTraversalForm(traversal);
         traversal.iterate();
-        final TraversalMetrics traversalMetrics = traversal.asAdmin().getSideEffects().<TraversalMetrics>get(METRICS_KEY);
+        final TraversalMetrics traversalMetrics = traversal.asAdmin().getSideEffects().get(METRICS_KEY);
         validate_g_V_out_out_profile_grateful(traversalMetrics);
     }
 
-    private void validate_g_V_out_out_profile_grateful(TraversalMetrics traversalMetrics) {
+    private void validate_g_V_out_out_profile_grateful(final TraversalMetrics traversalMetrics) {
         traversalMetrics.toString(); // ensure no exceptions are thrown
 
+        assumeThat("The following assertions apply to TinkerGraph only as provider strategies can alter the steps to not comply with expectations",
+                graph.getClass().getSimpleName(), equalTo("TinkerGraph"));
+
         Metrics metrics = traversalMetrics.getMetrics(0);
         assertEquals(808, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
         assertEquals(808, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue());
@@ -202,13 +211,16 @@ public abstract class ProfileTest extends AbstractGremlinProcessTest {
         printTraversalForm(traversal);
         traversal.iterate();
         assertEquals("There should be 7 steps in this traversal (counting injected profile steps).", 7, traversal.asAdmin().getSteps().size());
-        TraversalMetrics traversalMetrics = traversal.asAdmin().getSideEffects().<TraversalMetrics>get(METRICS_KEY);
+        TraversalMetrics traversalMetrics = traversal.asAdmin().getSideEffects().get(METRICS_KEY);
         validate_g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profile(traversalMetrics);
     }
 
-    private void validate_g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profile(TraversalMetrics traversalMetrics) {
+    private void validate_g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profile(final TraversalMetrics traversalMetrics) {
         traversalMetrics.toString(); // ensure no exceptions are thrown
 
+        assumeThat("The following assertions apply to TinkerGraph only as provider strategies can alter the steps to not comply with expectations",
+                graph.getClass().getSimpleName(), equalTo("TinkerGraph"));
+
         // Grab the second (sideEffect{sleep}) step and check the times.
         Metrics metrics = traversalMetrics.getMetrics(1);
         // 6 elements w/ a 10ms sleep each = 60ms with 10ms for other computation.
@@ -247,15 +259,18 @@ public abstract class ProfileTest extends AbstractGremlinProcessTest {
         final Traversal<Vertex, Vertex> traversal = get_g_V_repeatXbothX_timesX3X_profileXmetricsX();
         printTraversalForm(traversal);
         traversal.iterate();
-        final TraversalMetrics traversalMetrics = traversal.asAdmin().getSideEffects().<TraversalMetrics>get(METRICS_KEY);
+        final TraversalMetrics traversalMetrics = traversal.asAdmin().getSideEffects().get(METRICS_KEY);
         validate_g_V_repeat_both_modern_profile(traversalMetrics,
                 traversal.asAdmin().getStrategies().toList().contains(RepeatUnrollStrategy.instance()) &&
                         !traversal.asAdmin().getStrategies().toList().contains(ComputerVerificationStrategy.instance()));
     }
 
-    private void validate_g_V_repeat_both_modern_profile(TraversalMetrics traversalMetrics, boolean withRepeatUnrollStrategy) {
+    private void validate_g_V_repeat_both_modern_profile(final TraversalMetrics traversalMetrics, final boolean withRepeatUnrollStrategy) {
         traversalMetrics.toString(); // ensure no exceptions are thrown
 
+        assumeThat("The following assertions apply to TinkerGraph only as provider strategies can alter the steps to not comply with expectations",
+                graph.getClass().getSimpleName(), equalTo("TinkerGraph"));
+
         Metrics metrics = traversalMetrics.getMetrics(0);
         assertEquals(6, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue());
         assertEquals(6, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue());
@@ -286,9 +301,12 @@ public abstract class ProfileTest extends AbstractGremlinProcessTest {
 
     /////////////
 
-    private void validate_g_V_whereXinXcreatedX_count_isX1XX_name_profile(Traversal traversal, TraversalMetrics traversalMetrics) {
+    private void validate_g_V_whereXinXcreatedX_count_isX1XX_name_profile(final Traversal traversal, final TraversalMetrics traversalMetrics) {
         traversalMetrics.toString(); // ensure no exceptions are thrown
 
+        assumeThat("The following assertions apply to TinkerGraph only as provider strategies can alter the steps to not comply with expectations",
+                graph.getClass().getSimpleName(), equalTo("TinkerGraph"));
+
         assertEquals("There should be 3 top-level metrics.", 3, traversalMetrics.getMetrics().size());
 
         Metrics metrics = traversalMetrics.getMetrics(0);
@@ -321,7 +339,7 @@ public abstract class ProfileTest extends AbstractGremlinProcessTest {
         final Traversal<Vertex, String> traversal = get_g_V_whereXinXcreatedX_count_isX1XX_name_profileXmetricsX();
         printTraversalForm(traversal);
         traversal.iterate();
-        final TraversalMetrics traversalMetrics = traversal.asAdmin().getSideEffects().<TraversalMetrics>get(METRICS_KEY);
+        final TraversalMetrics traversalMetrics = traversal.asAdmin().getSideEffects().get(METRICS_KEY);
         validate_g_V_whereXinXcreatedX_count_isX1XX_name_profile(traversal, traversalMetrics);
     }
 
@@ -377,7 +395,7 @@ public abstract class ProfileTest extends AbstractGremlinProcessTest {
         assertTrue(mockStep.callbackCalled);
 
         if (!onGraphComputer(t.asAdmin())) {
-            final TraversalMetrics traversalMetrics = t.asAdmin().getSideEffects().<TraversalMetrics>get(METRICS_KEY);
+            final TraversalMetrics traversalMetrics = t.asAdmin().getSideEffects().get(METRICS_KEY);
             assertEquals(100, traversalMetrics.getMetrics(3).getCount("bogusCount").longValue());
         }
     }


[17/50] [abbrv] tinkerpop git commit: Re-enable warnings where they were disabled unnecessarily

Posted by sp...@apache.org.
Re-enable warnings where they were disabled unnecessarily


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

Branch: refs/heads/TINKERPOP-1716
Commit: 3c0abd00ef1182b38db11f826b51b2d62a98d3ff
Parents: 8468f42
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Fri Jun 16 16:49:12 2017 +0200
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jun 28 15:13:12 2017 -0400

----------------------------------------------------------------------
 gremlin-dotnet/glv/AnonymousTraversal.template                  | 4 ----
 gremlin-dotnet/glv/GraphTraversal.template                      | 5 -----
 .../src/Gremlin.Net/Process/Traversal/GraphTraversal.cs         | 5 -----
 gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs          | 4 ----
 4 files changed, 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3c0abd00/gremlin-dotnet/glv/AnonymousTraversal.template
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/glv/AnonymousTraversal.template b/gremlin-dotnet/glv/AnonymousTraversal.template
index 216b6d4..9bc7257 100644
--- a/gremlin-dotnet/glv/AnonymousTraversal.template
+++ b/gremlin-dotnet/glv/AnonymousTraversal.template
@@ -27,8 +27,6 @@ using Gremlin.Net.Structure;
 // THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
-#pragma warning disable 1591
-
     /// <summary>
     ///     An anonymous <see cref="GraphTraversal{SType, EType}" />.
     /// </summary>
@@ -50,7 +48,5 @@ namespace Gremlin.Net.Process.Traversal
             return new GraphTraversal<object, object>().<%= toCSharpMethodName.call(method.methodName) %><%= method.tParam %>(args);
         }
 <% } %>
-
-#pragma warning restore 1591
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3c0abd00/gremlin-dotnet/glv/GraphTraversal.template
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/glv/GraphTraversal.template b/gremlin-dotnet/glv/GraphTraversal.template
index ab96a17..5c3e03e 100644
--- a/gremlin-dotnet/glv/GraphTraversal.template
+++ b/gremlin-dotnet/glv/GraphTraversal.template
@@ -27,8 +27,6 @@ using Gremlin.Net.Structure;
 // THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
-#pragma warning disable 1591
-
     /// <summary>
     ///     Graph traversals are the primary way in which graphs are processed.
     /// </summary>
@@ -73,8 +71,5 @@ namespace Gremlin.Net.Process.Traversal
             return Wrap< <%= method.t1 %> , <%= method.t2 %> >(this);
         }
 <% } %>
-
     }
-    
-#pragma warning restore 1591
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3c0abd00/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 4390c79..2493864 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
@@ -27,8 +27,6 @@ using Gremlin.Net.Structure;
 // THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
-#pragma warning disable 1591
-
     /// <summary>
     ///     Graph traversals are the primary way in which graphs are processed.
     /// </summary>
@@ -946,8 +944,5 @@ namespace Gremlin.Net.Process.Traversal
             return Wrap< S , E >(this);
         }
 
-
     }
-    
-#pragma warning restore 1591
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/3c0abd00/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 0574d24..fd7a901 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
@@ -27,8 +27,6 @@ using Gremlin.Net.Structure;
 // THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
-#pragma warning disable 1591
-
     /// <summary>
     ///     An anonymous <see cref="GraphTraversal{SType, EType}" />.
     /// </summary>
@@ -770,7 +768,5 @@ namespace Gremlin.Net.Process.Traversal
             return new GraphTraversal<object, object>().Where(args);
         }
 
-
-#pragma warning restore 1591
     }
 }
\ No newline at end of file


[15/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/703e6f24
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/703e6f24
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/703e6f24

Branch: refs/heads/TINKERPOP-1716
Commit: 703e6f2461f176319227e2244c4cd9be2155bafe
Parents: 2274482
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Jun 23 15:43:40 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jun 28 15:13:12 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/703e6f24/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 ddba0a0..f56bcae 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/703e6f24/docs/src/dev/developer/release.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/dev/developer/release.asciidoc b/docs/src/dev/developer/release.asciidoc
index 121bbb6..48e1132 100644
--- a/docs/src/dev/developer/release.asciidoc
+++ b/docs/src/dev/developer/release.asciidoc
@@ -220,6 +220,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/703e6f24/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/703e6f24/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/703e6f24/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/703e6f24/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>
 


[49/50] [abbrv] tinkerpop git commit: TINKERPOP-1716 Opened up some more remoting tests.

Posted by sp...@apache.org.
TINKERPOP-1716 Opened up some more remoting tests.

Had to OptOut a few tests due to TINKERPOP-1679


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

Branch: refs/heads/TINKERPOP-1716
Commit: 63882a08a0ab9efc81964395eeede635748f8703
Parents: 986beaf
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Jul 19 15:13:38 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jul 19 15:13:38 2017 -0400

----------------------------------------------------------------------
 .../gremlin/process/remote/RemoteGraph.java         | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/63882a08/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java
index 9516ea5..9cae88d 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java
@@ -89,10 +89,6 @@ import java.util.Iterator;
         method = "*",
         reason = "RemoteGraph does not support EventStrategy at this time - some of its members are not serializable")
 @Graph.OptOut(
-        test = "org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategyProcessTest",
-        method = "*",
-        reason = "RemoteGraph does not support SubgraphStrategy at this time")
-@Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.computer.ranking.pagerank.PageRankVertexProgramTest",
         method = "*",
         reason = "RemoteGraph does not support direct Graph.compute() access")
@@ -116,6 +112,18 @@ import java.util.Iterator;
         test = "org.apache.tinkerpop.gremlin.process.traversal.TraversalInterruptionComputerTest",
         method = "*",
         reason = "The interruption model in the test can't guarantee interruption at the right time with RemoteGraph.")
+@Graph.OptOut(
+        test = "org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.PartitionStrategyProcessTest",
+        method = "shouldAppendPartitionToEdge",
+        reason = "Test uses detached side-effects which aren't currently supported with remoting - TINKERPOP-1679")
+@Graph.OptOut(
+        test = "org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.PartitionStrategyProcessTest",
+        method = "shouldThrowExceptionOnEInDifferentPartition",
+        reason = "Test uses detached side-effects which aren't currently supported with remoting - TINKERPOP-1679")
+@Graph.OptOut(
+        test = "org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.PartitionStrategyProcessTest",
+        method = "shouldWriteToMultiplePartitions",
+        reason = "Test uses detached side-effects which aren't currently supported with remoting - TINKERPOP-1679")
 @Deprecated
 public class RemoteGraph implements Graph {
 


[50/50] [abbrv] tinkerpop git commit: TINKERPOP-1716 Excluded TranslationStrategy from Bytecode

Posted by sp...@apache.org.
TINKERPOP-1716 Excluded TranslationStrategy from Bytecode

TranslationStrategy is a special "test" strategy that is part of gremlin-test. No one would use that strategy directly. It's a bit of a hack but it is not included in Bytecode.


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

Branch: refs/heads/TINKERPOP-1716
Commit: a015c117453c93439180a5bbdccb327d125a1882
Parents: 63882a0
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Jul 19 15:17:32 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jul 19 15:17:32 2017 -0400

----------------------------------------------------------------------
 .../gremlin/process/traversal/Bytecode.java        | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a015c117/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Bytecode.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Bytecode.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Bytecode.java
index 7ea5f6f..0e621f1 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Bytecode.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Bytecode.java
@@ -68,8 +68,23 @@ public final class Bytecode implements Cloneable, Serializable {
                         (Class) arguments[i];
             }
             this.sourceInstructions.add(new Instruction(sourceName, classes));
-        } else
+        } else if (sourceName.equals(TraversalSource.Symbols.withStrategies)) {
+            final List<Object> list = new ArrayList<>();
+            for (int i = 0; i < arguments.length; i++) {
+                // HACK: ignore TranslationStrategy from gremlin-test - not registered to gryo and not needed in
+                // general usage in any way
+                if (!arguments[i].getClass().getName().equals("org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.TranslationStrategy")) {
+                    list.add(arguments[i]);
+                }
+            }
+
+            if (!list.isEmpty()) {
+                final Object[] classes = list.toArray(new Object[list.size()]);
+                this.sourceInstructions.add(new Instruction(sourceName, flattenArguments(classes)));
+            }
+        } else {
             this.sourceInstructions.add(new Instruction(sourceName, flattenArguments(arguments)));
+        }
         Bindings.clear();
     }
 


[12/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/74f9115f/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/74f9115f/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();


[25/50] [abbrv] tinkerpop git commit: TINKERPOP-1714 GremlinExecutor checks for timeout from time script submitted

Posted by sp...@apache.org.
TINKERPOP-1714 GremlinExecutor checks for timeout from time script submitted

Prior to this change timeouts were considered from the time the script started evaluation which probably isn't in line with user expectations but also made it hard to clear the job queue on an overloaded server.


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

Branch: refs/heads/TINKERPOP-1716
Commit: ac19d5dec659a1a8f399d5a11a4812774eebeca7
Parents: 402678b
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Thu Jul 6 11:49:21 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jul 6 11:49:21 2017 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  1 +
 .../gremlin/groovy/engine/GremlinExecutor.java  | 39 ++++++--------------
 2 files changed, 13 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ac19d5de/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 96e79ab..da85ebb 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -28,6 +28,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.
 * `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`.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/ac19d5de/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
index 8802793..d646a8c 100644
--- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
+++ b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
@@ -52,9 +52,9 @@ import java.util.Set;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
 import java.util.concurrent.FutureTask;
 import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -279,31 +279,6 @@ public class GremlinExecutor implements AutoCloseable {
 
         final CompletableFuture<Object> evaluationFuture = new CompletableFuture<>();
         final FutureTask<Void> evalFuture = new FutureTask<>(() -> {
-
-            if (scriptEvalTimeOut > 0) {
-                final Thread scriptEvalThread = Thread.currentThread();
-
-                logger.debug("Schedule timeout for script - {} - in thread [{}]", script, scriptEvalThread.getName());
-
-                // Schedule a timeout in the thread pool for future execution
-                final ScheduledFuture<?> sf = scheduledExecutorService.schedule(() -> {
-                    logger.warn("Timing out script - {} - in thread [{}]", script, Thread.currentThread().getName());
-                    if (!evaluationFuture.isDone()) scriptEvalThread.interrupt();
-                }, scriptEvalTimeOut, TimeUnit.MILLISECONDS);
-
-                // Cancel the scheduled timeout if the eval future is complete or the script evaluation failed
-                // with exception
-                evaluationFuture.handleAsync((v, t) -> {
-                    if (!sf.isDone()) {
-                        logger.debug("Killing scheduled timeout on script evaluation - {} - as the eval completed (possibly with exception).", script);
-                        sf.cancel(true);
-                    }
-
-                    // no return is necessary - nothing downstream is concerned with what happens in here
-                    return null;
-                }, scheduledExecutorService);
-            }
-
             try {
                 lifeCycle.getBeforeEval().orElse(beforeEval).accept(bindings);
 
@@ -349,7 +324,17 @@ public class GremlinExecutor implements AutoCloseable {
             return null;
         });
 
-        executorService.execute(evalFuture);
+        final Future<?> executionFuture = executorService.submit(evalFuture);
+        if (scriptEvalTimeOut > 0) {
+            // Schedule a timeout in the thread pool for future execution
+            scheduledExecutorService.schedule(() -> {
+                if (executionFuture.cancel(true)) {
+                    lifeCycle.getAfterTimeout().orElse(afterTimeout).accept(bindings);
+                    evaluationFuture.completeExceptionally(new TimeoutException(
+                            String.format("Script evaluation exceeded the configured 'scriptEvaluationTimeout' threshold of %s ms or evaluation was otherwise cancelled directly for request [%s]", scriptEvalTimeOut, script)));
+                }
+            }, scriptEvalTimeOut, TimeUnit.MILLISECONDS);
+        }
 
         return evaluationFuture;
     }


[03/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/852ff1f6
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/852ff1f6
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/852ff1f6

Branch: refs/heads/TINKERPOP-1716
Commit: 852ff1f699d3255c19524dff392ef634653fd7d7
Parents: 3f8d2f5
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Tue Jun 6 19:03:09 2017 +0200
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jun 28 15:13:11 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/852ff1f6/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();


[42/50] [abbrv] tinkerpop git commit: Used WeakReference for evaluationFuture

Posted by sp...@apache.org.
Used WeakReference for evaluationFuture

Adjusted a previous commit - didn't get the last one right for some reason. The evaluationFuture holds on to the result and thus needs the WeakReference. In this way the result can be garbage collected once it goes out of scope and doesn't need to wait for the timeout to expire. CTR


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

Branch: refs/heads/TINKERPOP-1716
Commit: 362e77240925426574e925d665cd937507e9b698
Parents: 779399a
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Jul 18 09:30:52 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Jul 18 09:30:52 2017 -0400

----------------------------------------------------------------------
 .../gremlin/groovy/engine/GremlinExecutor.java  | 36 ++++++++++++--------
 1 file changed, 21 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/362e7724/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
index d02d773..da495e6 100644
--- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
+++ b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
@@ -278,7 +278,7 @@ public class GremlinExecutor implements AutoCloseable {
         // override the timeout if the lifecycle has a value assigned
         final long scriptEvalTimeOut = lifeCycle.getScriptEvaluationTimeoutOverride().orElse(scriptEvaluationTimeout);
 
-        final CompletableFuture<Object> evaluationFuture = new CompletableFuture<>();
+        final WeakReference<CompletableFuture<Object>> evaluationFuture = new WeakReference<>(new CompletableFuture<>());
         final FutureTask<Void> evalFuture = new FutureTask<>(() -> {
             try {
                 lifeCycle.getBeforeEval().orElse(beforeEval).accept(bindings);
@@ -306,39 +306,45 @@ public class GremlinExecutor implements AutoCloseable {
                 // that must raise as an exception to the caller who has the returned evaluationFuture. in other words,
                 // if it occurs before this point, then the handle() method won't be called again if there is an
                 // exception that ends up below trying to completeExceptionally()
-                evaluationFuture.complete(result);
+                final CompletableFuture<Object> ef = evaluationFuture.get();
+                if (ef != null) ef.complete(result);
             } catch (Throwable ex) {
                 final Throwable root = null == ex.getCause() ? ex : ExceptionUtils.getRootCause(ex);
 
                 // thread interruptions will typically come as the result of a timeout, so in those cases,
                 // check for that situation and convert to TimeoutException
-                if (root instanceof InterruptedException) {
-                    lifeCycle.getAfterTimeout().orElse(afterTimeout).accept(bindings);
-                    evaluationFuture.completeExceptionally(new TimeoutException(
-                            String.format("Script evaluation exceeded the configured 'scriptEvaluationTimeout' threshold of %s ms or evaluation was otherwise cancelled directly for request [%s]: %s", scriptEvalTimeOut, script, root.getMessage())));
-                } else {
-                    lifeCycle.getAfterFailure().orElse(afterFailure).accept(bindings, root);
-                    evaluationFuture.completeExceptionally(root);
+                final CompletableFuture<Object> ef = evaluationFuture.get();
+                if (ef != null) {
+                    if (root instanceof InterruptedException) {
+                        lifeCycle.getAfterTimeout().orElse(afterTimeout).accept(bindings);
+                        ef.completeExceptionally(new TimeoutException(
+                                String.format("Script evaluation exceeded the configured 'scriptEvaluationTimeout' threshold of %s ms or evaluation was otherwise cancelled directly for request [%s]: %s", scriptEvalTimeOut, script, root.getMessage())));
+                    } else {
+                        lifeCycle.getAfterFailure().orElse(afterFailure).accept(bindings, root);
+                        ef.completeExceptionally(root);
+                    }
                 }
             }
 
             return null;
         });
 
-        final WeakReference<Future<?>> executionFuture = new WeakReference<>(executorService.submit(evalFuture));
+        final Future<?> executionFuture = executorService.submit(evalFuture);
         if (scriptEvalTimeOut > 0) {
             // Schedule a timeout in the thread pool for future execution
             scheduledExecutorService.schedule(() -> {
-                final Future<?> f = executionFuture.get();
-                if (f != null && f.cancel(true)) {
+                if (executionFuture.cancel(true)) {
                     lifeCycle.getAfterTimeout().orElse(afterTimeout).accept(bindings);
-                    evaluationFuture.completeExceptionally(new TimeoutException(
-                            String.format("Script evaluation exceeded the configured 'scriptEvaluationTimeout' threshold of %s ms or evaluation was otherwise cancelled directly for request [%s]", scriptEvalTimeOut, script)));
+                    final CompletableFuture<Object> ef = evaluationFuture.get();
+                    if (ef != null) {
+                        ef.completeExceptionally(new TimeoutException(
+                                String.format("Script evaluation exceeded the configured 'scriptEvaluationTimeout' threshold of %s ms or evaluation was otherwise cancelled directly for request [%s]", scriptEvalTimeOut, script)));
+                    }
                 }
             }, scriptEvalTimeOut, TimeUnit.MILLISECONDS);
         }
 
-        return evaluationFuture;
+        return evaluationFuture.get();
     }
 
     /**


[07/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/339e293f
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/339e293f
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/339e293f

Branch: refs/heads/TINKERPOP-1716
Commit: 339e293f0311bb84872ccce39ad96e393b8e789b
Parents: 0908343
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Thu Jun 8 13:06:43 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jun 28 15:13:11 2017 -0400

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


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/339e293f/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>


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

Posted by sp...@apache.org.
Merge branch 'TINKERPOP-1385' 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/04d4e90a
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/04d4e90a
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/04d4e90a

Branch: refs/heads/TINKERPOP-1716
Commit: 04d4e90a66261b8dd3506cb16e947d7122d0458f
Parents: f161f7b d27fc7d
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Jul 14 12:03:31 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Jul 14 12:03:31 2017 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  1 +
 .../process/traversal/step/map/ProfileTest.java | 38 ++++++++++++++------
 2 files changed, 29 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/04d4e90a/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --cc CHANGELOG.asciidoc
index 7d491b6,05e20bb..f36fe33
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@@ -28,7 -28,7 +28,8 @@@ 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.
  * `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`.


[08/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/554595f2
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/554595f2
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/554595f2

Branch: refs/heads/TINKERPOP-1716
Commit: 554595f2e4adf60de1c890b090490c5aa62997b3
Parents: 6135a00
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Jun 28 13:22:08 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jun 28 15:13:12 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/554595f2/docs/src/dev/developer/release.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/dev/developer/release.asciidoc b/docs/src/dev/developer/release.asciidoc
index 48e1132..22a1f01 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
 ----------------------------
 
@@ -218,7 +231,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/554595f2/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/554595f2/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/554595f2/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>


[21/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/79e37fb9
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/79e37fb9
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/79e37fb9

Branch: refs/heads/TINKERPOP-1716
Commit: 79e37fb912ee7a8c15cddfedad57b961198c8963
Parents: eebc95d
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Thu Jun 29 07:08:24 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jun 29 07:08:24 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/79e37fb9/docs/src/reference/gremlin-variants.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/reference/gremlin-variants.asciidoc b/docs/src/reference/gremlin-variants.asciidoc
index 763ab4a..7f4441e 100644
--- a/docs/src/reference/gremlin-variants.asciidoc
+++ b/docs/src/reference/gremlin-variants.asciidoc
@@ -357,8 +357,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


[41/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/TINKERPOP-1716
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
----------------------------------------------------------------------


[22/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/cc522be2
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/cc522be2
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/cc522be2

Branch: refs/heads/TINKERPOP-1716
Commit: cc522be287fc70eecc5dbcfadefaf30d98d1c659
Parents: 79e37fb
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Jul 5 11:51:01 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jul 5 11:51:01 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/cc522be2/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index 31a98a5..f0c88db 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -13,7 +13,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/cc522be2/docker/Dockerfile
----------------------------------------------------------------------
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 932536c..3e7ca42 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 \
+    && apt-get install -y oracle-java8-installer curl gawk git maven openssh-server dotnet-dev-1.0.4 \
     && rm -rf /var/lib/apt/lists/* /var/cache/oracle-jdk8-installer
 
 RUN sed -i 's@PermitRootLogin without-password@PermitRootLogin yes@' /etc/ssh/sshd_config


[30/50] [abbrv] tinkerpop git commit: Added gremlin+beer image CTR

Posted by sp...@apache.org.
Added gremlin+beer image CTR


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

Branch: refs/heads/TINKERPOP-1716
Commit: 937981a168ee46241f588d979aed476ab97cac26
Parents: fbed57b
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Jul 12 13:50:11 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jul 12 13:50:11 2017 -0400

----------------------------------------------------------------------
 docs/static/images/gremlin-beer.png | Bin 0 -> 208206 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/937981a1/docs/static/images/gremlin-beer.png
----------------------------------------------------------------------
diff --git a/docs/static/images/gremlin-beer.png b/docs/static/images/gremlin-beer.png
new file mode 100755
index 0000000..f9448e9
Binary files /dev/null and b/docs/static/images/gremlin-beer.png differ


[23/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/426d141f
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/426d141f
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/426d141f

Branch: refs/heads/TINKERPOP-1716
Commit: 426d141fda6f70f11e806b857111bb6d8c8e41a0
Parents: cc522be
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Jul 5 12:09:52 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jul 5 12:09:52 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/426d141f/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/426d141f/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/426d141f/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/426d141f/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/426d141f/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/426d141f/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/426d141f/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/426d141f/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/426d141f/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/426d141f/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/426d141f/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


[09/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/6135a002
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/6135a002
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/6135a002

Branch: refs/heads/TINKERPOP-1716
Commit: 6135a00208a55b8317085531291c9ef98e481ce2
Parents: 6457bb9
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Jun 28 12:42:09 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jun 28 15:13:12 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/6135a002/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>


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

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


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

Branch: refs/heads/TINKERPOP-1716
Commit: fbed57b6216ef847aea08065f0d28506b68088cb
Parents: c30b378 ac19d5d
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Jul 12 13:29:27 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jul 12 13:29:27 2017 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  1 +
 .../gremlin/groovy/engine/GremlinExecutor.java  | 39 ++++++--------------
 2 files changed, 13 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


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


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

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


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

Branch: refs/heads/TINKERPOP-1716
Commit: f161f7bf09dd1f58afd6b15c2a297c7a2a69e316
Parents: 672c8aa 94f9305
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Thu Jul 13 13:15:45 2017 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Jul 13 13:15:45 2017 -0600

----------------------------------------------------------------------
 docs/src/reference/the-traversal.asciidoc | 26 ++++++++++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)
----------------------------------------------------------------------



[39/50] [abbrv] tinkerpop git commit: Wrapped future in WeakReference

Posted by sp...@apache.org.
Wrapped future in WeakReference

This is an add-on change that should have been in place on TINKERPOP-1714. This should allow the result to be garbage collected without waiting for the timeout. CTR


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

Branch: refs/heads/TINKERPOP-1716
Commit: 2ba4104aaa3e93b0155331b6f5e410a0bd59b0d3
Parents: 5335f4a
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Jul 17 10:39:07 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Jul 17 10:39:07 2017 -0400

----------------------------------------------------------------------
 .../tinkerpop/gremlin/groovy/engine/GremlinExecutor.java       | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2ba4104a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
index d646a8c..d02d773 100644
--- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
+++ b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
@@ -38,6 +38,7 @@ import javax.script.SimpleBindings;
 import java.io.File;
 import java.io.FileReader;
 import java.io.IOException;
+import java.lang.ref.WeakReference;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -324,11 +325,12 @@ public class GremlinExecutor implements AutoCloseable {
             return null;
         });
 
-        final Future<?> executionFuture = executorService.submit(evalFuture);
+        final WeakReference<Future<?>> executionFuture = new WeakReference<>(executorService.submit(evalFuture));
         if (scriptEvalTimeOut > 0) {
             // Schedule a timeout in the thread pool for future execution
             scheduledExecutorService.schedule(() -> {
-                if (executionFuture.cancel(true)) {
+                final Future<?> f = executionFuture.get();
+                if (f != null && f.cancel(true)) {
                     lifeCycle.getAfterTimeout().orElse(afterTimeout).accept(bindings);
                     evaluationFuture.completeExceptionally(new TimeoutException(
                             String.format("Script evaluation exceeded the configured 'scriptEvaluationTimeout' threshold of %s ms or evaluation was otherwise cancelled directly for request [%s]", scriptEvalTimeOut, script)));


[37/50] [abbrv] tinkerpop git commit: Fixed improper naming of test class CTR

Posted by sp...@apache.org.
Fixed improper naming of test class CTR


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

Branch: refs/heads/TINKERPOP-1716
Commit: 6e86bf513fd9bf946431839d69cc22ae0a052b3d
Parents: 42c3f40
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Jul 14 13:00:48 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Jul 14 13:00:48 2017 -0400

----------------------------------------------------------------------
 ...ctGremlinServerChannelizerIntegrateTest.java | 346 +++++++++++++++++++
 ...tGremlminServerChannelizerIntegrateTest.java | 346 -------------------
 2 files changed, 346 insertions(+), 346 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6e86bf51/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/channel/AbstractGremlinServerChannelizerIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/channel/AbstractGremlinServerChannelizerIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/channel/AbstractGremlinServerChannelizerIntegrateTest.java
new file mode 100644
index 0000000..738ca89
--- /dev/null
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/channel/AbstractGremlinServerChannelizerIntegrateTest.java
@@ -0,0 +1,346 @@
+/*
+ * 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.server.channel;
+
+import org.apache.tinkerpop.gremlin.driver.AuthProperties;
+import org.apache.tinkerpop.gremlin.driver.Client;
+import org.apache.tinkerpop.gremlin.driver.Cluster;
+import org.apache.tinkerpop.gremlin.driver.Client;
+import org.apache.tinkerpop.gremlin.driver.simple.SimpleClient;
+import org.apache.tinkerpop.gremlin.driver.Channelizer;
+import org.apache.tinkerpop.gremlin.server.AbstractGremlinServerIntegrationTest;
+import org.apache.tinkerpop.gremlin.server.channel.WsAndHttpChannelizer;
+import org.apache.tinkerpop.gremlin.server.Settings;
+import org.apache.tinkerpop.gremlin.server.TestClientFactory;
+
+
+import org.apache.http.Consts;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.config.Registry;
+import org.apache.http.config.RegistryBuilder;
+import org.apache.http.conn.socket.ConnectionSocketFactory;
+import org.apache.http.conn.ssl.AllowAllHostnameVerifier;
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
+import org.apache.http.conn.ssl.SSLContextBuilder;
+import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
+import org.apache.http.conn.ssl.TrustStrategy;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
+import org.apache.http.util.EntityUtils;
+import org.apache.tinkerpop.shaded.jackson.databind.JsonNode;
+import org.apache.tinkerpop.shaded.jackson.databind.ObjectMapper;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.rules.ExternalResource;
+
+import java.io.File;
+import java.io.InputStream;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+import java.util.Base64;
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+import static org.apache.tinkerpop.gremlin.driver.AuthProperties.Property;
+
+abstract class AbstractGremlinServerChannelizerIntegrateTest extends AbstractGremlinServerIntegrationTest {
+
+    private final ObjectMapper mapper = new ObjectMapper();
+    private final Base64.Encoder encoder = Base64.getUrlEncoder();
+
+    protected static final String HTTP = "http";
+    protected static final String WS = "ws";
+    protected static final String HTTPS = "https";
+    protected static final String WSS = "wss";
+    protected static final String WS_AND_HTTP = "wsAndHttp";
+    protected static final String WSS_AND_HTTPS = "wssAndHttps";
+    protected static final String NIO = "nio";
+    protected static final String NIO_SECURE = "nioSecure";
+
+    public abstract String getProtocol();
+    public abstract String getSecureProtocol();
+    public abstract String getChannelizer();
+    public abstract Settings.AuthenticationSettings getAuthSettings();
+
+    /**
+     * Configure specific Gremlin Server settings for specific tests.
+     */
+    @Override
+    public Settings overrideSettings(final Settings settings) {
+        settings.channelizer = getChannelizer();
+        final String nameOfTest = name.getMethodName();
+        Settings.AuthenticationSettings authSettings = getAuthSettings();
+        switch (nameOfTest) {
+            case "shouldReturnResult":
+                break;
+            case "shouldWorkWithSSL":
+                settings.ssl = new Settings.SslSettings();
+                settings.ssl.enabled = true;
+                break;
+            case "shouldWorkWithAuth":
+                if (authSettings != null) {
+                    settings.authentication = getAuthSettings();
+                }
+                break;
+            case "shouldWorkWithSSLAndAuth":
+                settings.ssl = new Settings.SslSettings();
+                settings.ssl.enabled = true;
+                if (authSettings != null) {
+                    settings.authentication = getAuthSettings();
+                }
+                break;
+        }
+        return settings;
+    }
+
+    @Test
+    public void shouldReturnResult() throws Exception {
+        final CombinedTestClient client =  new CombinedTestClient(getProtocol());
+        try {
+            client.sendAndAssert("2+2", 4);
+        } finally {
+            client.close();
+        }
+    }
+
+    @Test
+    public void shouldWorkWithSSL() throws Exception {
+        final CombinedTestClient client =  new CombinedTestClient(getSecureProtocol());
+        try {
+            client.sendAndAssert("2+2", 4);
+        } finally {
+            client.close();
+        }
+    }
+
+    @Test
+    public void shouldWorkWithAuth() throws Exception {
+        CombinedTestClient client =  new CombinedTestClient(getProtocol());
+        try {
+            client.sendAndAssertUnauthorized("2+2", "stephen", "notpassword");
+            client.close();
+            client = new CombinedTestClient(getProtocol());
+            client.sendAndAssert("2+2", 4, "stephen", "password");
+            client.close();
+        } catch (Exception e) {
+            client.close();
+            throw e;
+        }
+    }
+
+    @Test
+    public void shouldWorkWithSSLAndAuth() throws Exception {
+        CombinedTestClient client =  new CombinedTestClient(getSecureProtocol());
+        try {
+            client.sendAndAssertUnauthorized("2+2", "stephen", "incorrect-password");
+            client.close();
+            client = new CombinedTestClient(getSecureProtocol());
+            client.sendAndAssert("2+2", 4, "stephen", "password");
+            client.close();
+        } catch (Exception e) {
+            client.close();
+            throw e;
+        }
+    }
+
+    public class CombinedTestClient {
+        private CloseableHttpClient httpClient = null;
+        private Cluster wsCluster = null;
+        private Cluster.Builder wsBuilder = null;
+        private Cluster nioCluster = null;
+        private Cluster.Builder nioBuilder = null;
+        private Client wsClient = null;
+        private Client.ClusteredClient nioClient = null;
+        private boolean secure = false;
+
+
+        public CombinedTestClient(final String protocol) throws Exception {
+            switch (protocol) {
+                case HTTP:
+                    httpClient = HttpClients.createDefault();
+                    break;
+                case HTTPS:
+                    httpClient = createSslHttpClient();
+                    secure = true;
+                    break;
+                case WS:
+                    this.wsBuilder = TestClientFactory.build();
+                    break;
+                case WSS:
+                    this.wsBuilder = TestClientFactory.build();
+                    secure = true;
+                    break;
+                case WS_AND_HTTP:
+                    httpClient = HttpClients.createDefault();
+                    this.wsBuilder = TestClientFactory.build();
+                    break;
+                case WSS_AND_HTTPS:
+                    httpClient = createSslHttpClient();
+                    secure = true;
+                    this.wsBuilder = TestClientFactory.build();
+                    break;
+                case NIO:
+                    this.nioBuilder = TestClientFactory.build();
+                    break;
+                case NIO_SECURE:
+                    this.nioBuilder = TestClientFactory.build();
+                    secure = true;
+                    break;
+            }
+        }
+
+        private CloseableHttpClient createSslHttpClient() throws Exception {
+            final SSLContextBuilder wsBuilder = new SSLContextBuilder();
+            wsBuilder.loadTrustMaterial(null, new TrustStrategy() {
+                @Override
+                public boolean isTrusted(X509Certificate[] chain,
+                    String authType) throws CertificateException {
+                    return true;
+                }
+            });
+            final SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(wsBuilder.build(),
+                new AllowAllHostnameVerifier());
+            //This winds up using a PoolingHttpClientConnectionManager so need to pass the
+            //RegistryBuilder
+            final Registry<ConnectionSocketFactory> registry = RegistryBuilder
+                .<ConnectionSocketFactory> create().register("https", sslsf)
+                .build();
+            final PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(registry);
+            return HttpClients
+                .custom()
+                .setConnectionManager(cm)
+                .build();
+
+        }
+
+        public void sendAndAssert(final String gremlin, Object result) throws Exception {
+            sendAndAssert(gremlin, result, null, null);
+        }
+
+        public void close() {
+            if (wsCluster != null) {
+                wsCluster.close();
+            }
+            if (nioCluster != null) {
+                nioCluster.close();
+            }
+        }
+
+        public void sendAndAssertUnauthorized(final String gremlin, final String username, final String password) throws Exception {
+            if (httpClient != null) {
+                final HttpPost httpPost = createPost(gremlin, username, password);
+                try (final CloseableHttpResponse response = httpClient.execute(httpPost)) {
+                    assertEquals(401, response.getStatusLine().getStatusCode());
+                }
+            }
+            if (wsBuilder != null) {
+                setWsClient(username, password);
+                try {
+                    wsClient.submit(gremlin).all().get();
+                    fail("Should not authorize on incorrect auth creds");
+                } catch(Exception e) {
+                    assertEquals("Username and/or password are incorrect", e.getCause().getMessage());
+                }
+            }
+            if (nioBuilder != null) {
+                setNioClient(username, password);
+                try {
+                    nioClient.submit(gremlin);
+                } catch(Exception e) {
+                    assertEquals("Username and/or password are incorrect", e.getCause().getMessage());
+                }
+            }
+
+        }
+
+        public void sendAndAssert(final String gremlin, final Object result, final String username, final String password) throws Exception {
+            if (httpClient != null) {
+                final HttpPost httpPost = createPost(gremlin, username, password);
+                try (final CloseableHttpResponse response = httpClient.execute(httpPost)) {
+                    assertEquals(200, response.getStatusLine().getStatusCode());
+                    assertEquals("application/json", response.getEntity().getContentType().getValue());
+                    final String json = EntityUtils.toString(response.getEntity());
+                    final JsonNode node = mapper.readTree(json);
+                    assertEquals(result, node.get("result").get("data").get(0).intValue());
+                }
+            }
+            if (wsBuilder != null) {
+                setWsClient(username, password);
+                assertEquals(result, wsClient.submit(gremlin).all().get().get(0).getInt());
+            }
+            if (nioClient != null) {
+                assertEquals(result, nioClient.submit(gremlin).all().get().get(0).getInt());
+            }
+        }
+
+        private void setNioClient(final String username, final String password) {
+            nioBuilder.channelizer(Channelizer.NioChannelizer.class.getName());
+            if (username != null && password != null) {
+                final AuthProperties authProps = new AuthProperties()
+                                                .with(Property.USERNAME, username)
+                                                .with(Property.PASSWORD, password);
+
+                nioCluster = nioBuilder.enableSsl(secure).authProperties(authProps).create();
+                nioClient = nioCluster.connect();
+            } else {
+                nioCluster = nioBuilder.enableSsl(secure).create();
+                nioClient = nioCluster.connect();
+            }
+        }
+
+        private void setWsClient(final String username, final String password) {
+            if (username != null && password != null) {
+                final AuthProperties authProps = new AuthProperties()
+                                                .with(Property.USERNAME, username)
+                                                .with(Property.PASSWORD, password);
+
+                wsCluster = wsBuilder.enableSsl(secure).authProperties(authProps).create();
+                wsClient = wsCluster.connect();
+            } else {
+                wsCluster = wsBuilder.enableSsl(secure).create();
+                wsClient = wsCluster.connect();
+            }
+        }
+
+        private HttpPost createPost(final String gremlin, final String username, final String password) {
+            String urlString = TestClientFactory.createURLString();
+            if (secure) {
+                urlString = urlString.replace("http", "https");
+            }
+            final HttpPost httpPost = new HttpPost(urlString);
+            httpPost.addHeader("Content-Type", "application/json");
+            if (username != null && password != null) {
+                final String auth = encoder.encodeToString((username + ":" + password).getBytes());
+                httpPost.addHeader("Authorization", "Basic " + auth);
+            }
+            final String jsonBody = String.format("{\"gremlin\": \"%s\"}", gremlin);
+            httpPost.setEntity(new StringEntity(jsonBody, Consts.UTF_8));
+            return httpPost;
+        }
+    }
+}
+

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6e86bf51/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/channel/AbstractGremlminServerChannelizerIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/channel/AbstractGremlminServerChannelizerIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/channel/AbstractGremlminServerChannelizerIntegrateTest.java
deleted file mode 100644
index 738ca89..0000000
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/channel/AbstractGremlminServerChannelizerIntegrateTest.java
+++ /dev/null
@@ -1,346 +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.server.channel;
-
-import org.apache.tinkerpop.gremlin.driver.AuthProperties;
-import org.apache.tinkerpop.gremlin.driver.Client;
-import org.apache.tinkerpop.gremlin.driver.Cluster;
-import org.apache.tinkerpop.gremlin.driver.Client;
-import org.apache.tinkerpop.gremlin.driver.simple.SimpleClient;
-import org.apache.tinkerpop.gremlin.driver.Channelizer;
-import org.apache.tinkerpop.gremlin.server.AbstractGremlinServerIntegrationTest;
-import org.apache.tinkerpop.gremlin.server.channel.WsAndHttpChannelizer;
-import org.apache.tinkerpop.gremlin.server.Settings;
-import org.apache.tinkerpop.gremlin.server.TestClientFactory;
-
-
-import org.apache.http.Consts;
-import org.apache.http.client.methods.CloseableHttpResponse;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.config.Registry;
-import org.apache.http.config.RegistryBuilder;
-import org.apache.http.conn.socket.ConnectionSocketFactory;
-import org.apache.http.conn.ssl.AllowAllHostnameVerifier;
-import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
-import org.apache.http.conn.ssl.SSLContextBuilder;
-import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
-import org.apache.http.conn.ssl.TrustStrategy;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.impl.client.HttpClients;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
-import org.apache.http.util.EntityUtils;
-import org.apache.tinkerpop.shaded.jackson.databind.JsonNode;
-import org.apache.tinkerpop.shaded.jackson.databind.ObjectMapper;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.rules.ExternalResource;
-
-import java.io.File;
-import java.io.InputStream;
-import java.security.cert.CertificateException;
-import java.security.cert.X509Certificate;
-import java.util.Base64;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-import static org.apache.tinkerpop.gremlin.driver.AuthProperties.Property;
-
-abstract class AbstractGremlinServerChannelizerIntegrateTest extends AbstractGremlinServerIntegrationTest {
-
-    private final ObjectMapper mapper = new ObjectMapper();
-    private final Base64.Encoder encoder = Base64.getUrlEncoder();
-
-    protected static final String HTTP = "http";
-    protected static final String WS = "ws";
-    protected static final String HTTPS = "https";
-    protected static final String WSS = "wss";
-    protected static final String WS_AND_HTTP = "wsAndHttp";
-    protected static final String WSS_AND_HTTPS = "wssAndHttps";
-    protected static final String NIO = "nio";
-    protected static final String NIO_SECURE = "nioSecure";
-
-    public abstract String getProtocol();
-    public abstract String getSecureProtocol();
-    public abstract String getChannelizer();
-    public abstract Settings.AuthenticationSettings getAuthSettings();
-
-    /**
-     * Configure specific Gremlin Server settings for specific tests.
-     */
-    @Override
-    public Settings overrideSettings(final Settings settings) {
-        settings.channelizer = getChannelizer();
-        final String nameOfTest = name.getMethodName();
-        Settings.AuthenticationSettings authSettings = getAuthSettings();
-        switch (nameOfTest) {
-            case "shouldReturnResult":
-                break;
-            case "shouldWorkWithSSL":
-                settings.ssl = new Settings.SslSettings();
-                settings.ssl.enabled = true;
-                break;
-            case "shouldWorkWithAuth":
-                if (authSettings != null) {
-                    settings.authentication = getAuthSettings();
-                }
-                break;
-            case "shouldWorkWithSSLAndAuth":
-                settings.ssl = new Settings.SslSettings();
-                settings.ssl.enabled = true;
-                if (authSettings != null) {
-                    settings.authentication = getAuthSettings();
-                }
-                break;
-        }
-        return settings;
-    }
-
-    @Test
-    public void shouldReturnResult() throws Exception {
-        final CombinedTestClient client =  new CombinedTestClient(getProtocol());
-        try {
-            client.sendAndAssert("2+2", 4);
-        } finally {
-            client.close();
-        }
-    }
-
-    @Test
-    public void shouldWorkWithSSL() throws Exception {
-        final CombinedTestClient client =  new CombinedTestClient(getSecureProtocol());
-        try {
-            client.sendAndAssert("2+2", 4);
-        } finally {
-            client.close();
-        }
-    }
-
-    @Test
-    public void shouldWorkWithAuth() throws Exception {
-        CombinedTestClient client =  new CombinedTestClient(getProtocol());
-        try {
-            client.sendAndAssertUnauthorized("2+2", "stephen", "notpassword");
-            client.close();
-            client = new CombinedTestClient(getProtocol());
-            client.sendAndAssert("2+2", 4, "stephen", "password");
-            client.close();
-        } catch (Exception e) {
-            client.close();
-            throw e;
-        }
-    }
-
-    @Test
-    public void shouldWorkWithSSLAndAuth() throws Exception {
-        CombinedTestClient client =  new CombinedTestClient(getSecureProtocol());
-        try {
-            client.sendAndAssertUnauthorized("2+2", "stephen", "incorrect-password");
-            client.close();
-            client = new CombinedTestClient(getSecureProtocol());
-            client.sendAndAssert("2+2", 4, "stephen", "password");
-            client.close();
-        } catch (Exception e) {
-            client.close();
-            throw e;
-        }
-    }
-
-    public class CombinedTestClient {
-        private CloseableHttpClient httpClient = null;
-        private Cluster wsCluster = null;
-        private Cluster.Builder wsBuilder = null;
-        private Cluster nioCluster = null;
-        private Cluster.Builder nioBuilder = null;
-        private Client wsClient = null;
-        private Client.ClusteredClient nioClient = null;
-        private boolean secure = false;
-
-
-        public CombinedTestClient(final String protocol) throws Exception {
-            switch (protocol) {
-                case HTTP:
-                    httpClient = HttpClients.createDefault();
-                    break;
-                case HTTPS:
-                    httpClient = createSslHttpClient();
-                    secure = true;
-                    break;
-                case WS:
-                    this.wsBuilder = TestClientFactory.build();
-                    break;
-                case WSS:
-                    this.wsBuilder = TestClientFactory.build();
-                    secure = true;
-                    break;
-                case WS_AND_HTTP:
-                    httpClient = HttpClients.createDefault();
-                    this.wsBuilder = TestClientFactory.build();
-                    break;
-                case WSS_AND_HTTPS:
-                    httpClient = createSslHttpClient();
-                    secure = true;
-                    this.wsBuilder = TestClientFactory.build();
-                    break;
-                case NIO:
-                    this.nioBuilder = TestClientFactory.build();
-                    break;
-                case NIO_SECURE:
-                    this.nioBuilder = TestClientFactory.build();
-                    secure = true;
-                    break;
-            }
-        }
-
-        private CloseableHttpClient createSslHttpClient() throws Exception {
-            final SSLContextBuilder wsBuilder = new SSLContextBuilder();
-            wsBuilder.loadTrustMaterial(null, new TrustStrategy() {
-                @Override
-                public boolean isTrusted(X509Certificate[] chain,
-                    String authType) throws CertificateException {
-                    return true;
-                }
-            });
-            final SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(wsBuilder.build(),
-                new AllowAllHostnameVerifier());
-            //This winds up using a PoolingHttpClientConnectionManager so need to pass the
-            //RegistryBuilder
-            final Registry<ConnectionSocketFactory> registry = RegistryBuilder
-                .<ConnectionSocketFactory> create().register("https", sslsf)
-                .build();
-            final PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(registry);
-            return HttpClients
-                .custom()
-                .setConnectionManager(cm)
-                .build();
-
-        }
-
-        public void sendAndAssert(final String gremlin, Object result) throws Exception {
-            sendAndAssert(gremlin, result, null, null);
-        }
-
-        public void close() {
-            if (wsCluster != null) {
-                wsCluster.close();
-            }
-            if (nioCluster != null) {
-                nioCluster.close();
-            }
-        }
-
-        public void sendAndAssertUnauthorized(final String gremlin, final String username, final String password) throws Exception {
-            if (httpClient != null) {
-                final HttpPost httpPost = createPost(gremlin, username, password);
-                try (final CloseableHttpResponse response = httpClient.execute(httpPost)) {
-                    assertEquals(401, response.getStatusLine().getStatusCode());
-                }
-            }
-            if (wsBuilder != null) {
-                setWsClient(username, password);
-                try {
-                    wsClient.submit(gremlin).all().get();
-                    fail("Should not authorize on incorrect auth creds");
-                } catch(Exception e) {
-                    assertEquals("Username and/or password are incorrect", e.getCause().getMessage());
-                }
-            }
-            if (nioBuilder != null) {
-                setNioClient(username, password);
-                try {
-                    nioClient.submit(gremlin);
-                } catch(Exception e) {
-                    assertEquals("Username and/or password are incorrect", e.getCause().getMessage());
-                }
-            }
-
-        }
-
-        public void sendAndAssert(final String gremlin, final Object result, final String username, final String password) throws Exception {
-            if (httpClient != null) {
-                final HttpPost httpPost = createPost(gremlin, username, password);
-                try (final CloseableHttpResponse response = httpClient.execute(httpPost)) {
-                    assertEquals(200, response.getStatusLine().getStatusCode());
-                    assertEquals("application/json", response.getEntity().getContentType().getValue());
-                    final String json = EntityUtils.toString(response.getEntity());
-                    final JsonNode node = mapper.readTree(json);
-                    assertEquals(result, node.get("result").get("data").get(0).intValue());
-                }
-            }
-            if (wsBuilder != null) {
-                setWsClient(username, password);
-                assertEquals(result, wsClient.submit(gremlin).all().get().get(0).getInt());
-            }
-            if (nioClient != null) {
-                assertEquals(result, nioClient.submit(gremlin).all().get().get(0).getInt());
-            }
-        }
-
-        private void setNioClient(final String username, final String password) {
-            nioBuilder.channelizer(Channelizer.NioChannelizer.class.getName());
-            if (username != null && password != null) {
-                final AuthProperties authProps = new AuthProperties()
-                                                .with(Property.USERNAME, username)
-                                                .with(Property.PASSWORD, password);
-
-                nioCluster = nioBuilder.enableSsl(secure).authProperties(authProps).create();
-                nioClient = nioCluster.connect();
-            } else {
-                nioCluster = nioBuilder.enableSsl(secure).create();
-                nioClient = nioCluster.connect();
-            }
-        }
-
-        private void setWsClient(final String username, final String password) {
-            if (username != null && password != null) {
-                final AuthProperties authProps = new AuthProperties()
-                                                .with(Property.USERNAME, username)
-                                                .with(Property.PASSWORD, password);
-
-                wsCluster = wsBuilder.enableSsl(secure).authProperties(authProps).create();
-                wsClient = wsCluster.connect();
-            } else {
-                wsCluster = wsBuilder.enableSsl(secure).create();
-                wsClient = wsCluster.connect();
-            }
-        }
-
-        private HttpPost createPost(final String gremlin, final String username, final String password) {
-            String urlString = TestClientFactory.createURLString();
-            if (secure) {
-                urlString = urlString.replace("http", "https");
-            }
-            final HttpPost httpPost = new HttpPost(urlString);
-            httpPost.addHeader("Content-Type", "application/json");
-            if (username != null && password != null) {
-                final String auth = encoder.encodeToString((username + ":" + password).getBytes());
-                httpPost.addHeader("Authorization", "Basic " + auth);
-            }
-            final String jsonBody = String.format("{\"gremlin\": \"%s\"}", gremlin);
-            httpPost.setEntity(new StringEntity(jsonBody, Consts.UTF_8));
-            return httpPost;
-        }
-    }
-}
-


[19/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/25fd472e
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/25fd472e
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/25fd472e

Branch: refs/heads/TINKERPOP-1716
Commit: 25fd472e0af744c979a681d62d4413b12e44bec7
Parents: 703e6f2
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Jun 23 16:05:35 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jun 28 15:13:12 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/25fd472e/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/25fd472e/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/25fd472e/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/25fd472e/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/25fd472e/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 -->


[44/50] [abbrv] tinkerpop git commit: Removed server test that has been ignored for a while

Posted by sp...@apache.org.
Removed server test that has been ignored for a while

The shouldHandleRequestSentThatNeverReturns has never behaved consistently in test environment even when the feature works fine under manual test. No point letting it hang around any longer. CTR


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

Branch: refs/heads/TINKERPOP-1716
Commit: 2704245c2c64f0e1514aa4d6d2cd4c71f81c2511
Parents: 7c72e51
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Jul 18 16:56:51 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Jul 18 16:56:51 2017 -0400

----------------------------------------------------------------------
 .../server/GremlinDriverIntegrateTest.java      | 26 --------------------
 1 file changed, 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2704245c/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java
index 70ed643..6d4f236 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinDriverIntegrateTest.java
@@ -764,32 +764,6 @@ public class GremlinDriverIntegrateTest extends AbstractGremlinServerIntegration
     }
 
     @Test
-    @org.junit.Ignore("Can't seem to make this test pass consistently")
-    public void shouldHandleRequestSentThatNeverReturns() throws Exception {
-        final Cluster cluster = TestClientFactory.open();
-        final Client client = cluster.connect();
-
-        final ResultSet results = client.submit("Thread.sleep(10000); 'should-not-ever-get-back-coz-we-killed-the-server'");
-
-        stopServer();
-
-        // give the server a chance to kill everything
-        Thread.sleep(1000);
-
-        try {
-            results.all().get(10000, TimeUnit.MILLISECONDS);
-            fail("Server was stopped before the request could execute");
-        } catch (TimeoutException toe) {
-            fail("Should not have tossed a TimeOutException getting the result");
-        } catch (Exception ex) {
-            final Throwable cause = ExceptionUtils.getCause(ex);
-            assertThat(cause.getMessage(), containsString("rejected from java.util.concurrent.ThreadPoolExecutor"));
-        }
-
-        cluster.close();
-    }
-
-    @Test
     public void shouldFailClientSideWithTooLargeAResponse() {
         final Cluster cluster = TestClientFactory.build().maxContentLength(1).create();
         final Client client = cluster.connect();


[27/50] [abbrv] tinkerpop git commit: TINKERPOP-1718 Deprecated GryoLiteMessageSerializerV1d0

Posted by sp...@apache.org.
TINKERPOP-1718 Deprecated GryoLiteMessageSerializerV1d0

This is the "old" way of specifying detachment. Detachment is now best specified by `HaltedTraverserStrategy`.


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

Branch: refs/heads/TINKERPOP-1716
Commit: f97a21c8fee278e379ecbe6b4f2be40b37652469
Parents: 402678b
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Jul 10 10:20:54 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Jul 10 10:20:54 2017 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc                                              | 1 +
 docs/src/reference/gremlin-applications.asciidoc                | 1 -
 docs/src/reference/gremlin-variants.asciidoc                    | 1 -
 .../gremlin/driver/ser/GryoLiteMessageSerializerV1d0.java       | 3 +++
 .../tinkerpop/gremlin/driver/ser/GryoMessageSerializerV1d0.java | 2 --
 .../gremlin/python/driver/gremlin-server-modern-secure-py.yaml  | 1 -
 gremlin-server/conf/gremlin-server-classic.yaml                 | 1 -
 gremlin-server/conf/gremlin-server-modern-py.yaml               | 1 -
 gremlin-server/conf/gremlin-server-modern-readonly.yaml         | 1 -
 gremlin-server/conf/gremlin-server-modern.yaml                  | 1 -
 gremlin-server/conf/gremlin-server-neo4j.yaml                   | 1 -
 gremlin-server/conf/gremlin-server-secure.yaml                  | 1 -
 gremlin-server/conf/gremlin-server-spark.yaml                   | 1 -
 gremlin-server/conf/gremlin-server.yaml                         | 1 -
 .../apache/tinkerpop/gremlin/server/AbstractChannelizer.java    | 5 +++--
 15 files changed, 7 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f97a21c8/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 96e79ab..582af8f 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -29,6 +29,7 @@ TinkerPop 3.2.6 (Release Date: NOT OFFICIALLY RELEASED YET)
 This release also includes changes from <<release-3-1-8, 3.1.8>>.
 
 * `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/f97a21c8/docs/src/reference/gremlin-applications.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/reference/gremlin-applications.asciidoc b/docs/src/reference/gremlin-applications.asciidoc
index a936d3a..c212af8 100644
--- a/docs/src/reference/gremlin-applications.asciidoc
+++ b/docs/src/reference/gremlin-applications.asciidoc
@@ -415,7 +415,6 @@ $ bin/gremlin-server.sh conf/gremlin-server-modern.yaml
 [INFO] GremlinServer - Executing start up LifeCycleHook
 [INFO] Logger$info - Loading 'modern' graph data.
 [INFO] AbstractChannelizer - Configured application/vnd.gremlin-v1.0+gryo with org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0
-[INFO] AbstractChannelizer - Configured application/vnd.gremlin-v1.0+gryo-lite with org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0
 [INFO] AbstractChannelizer - Configured application/vnd.gremlin-v1.0+gryo-stringd with org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0
 [INFO] GremlinServer$1 - Gremlin Server configured with worker thread pool of 1, gremlin pool of 8 and boss thread pool of 1.
 [INFO] GremlinServer$1 - Channel started at port 8182.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f97a21c8/docs/src/reference/gremlin-variants.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/reference/gremlin-variants.asciidoc b/docs/src/reference/gremlin-variants.asciidoc
index 39b5558..013e7be 100644
--- a/docs/src/reference/gremlin-variants.asciidoc
+++ b/docs/src/reference/gremlin-variants.asciidoc
@@ -151,7 +151,6 @@ $ bin/gremlin-server.sh conf/gremlin-server-modern-py.yaml
 [INFO] GremlinServer - Executing start up LifeCycleHook
 [INFO] Logger$info - Loading 'modern' graph data.
 [INFO] AbstractChannelizer - Configured application/vnd.gremlin-v1.0+gryo with org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0
-[INFO] AbstractChannelizer - Configured application/vnd.gremlin-v1.0+gryo-lite with org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0
 [INFO] AbstractChannelizer - Configured application/vnd.gremlin-v1.0+gryo-stringd with org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0
 [INFO] AbstractChannelizer - Configured application/vnd.gremlin-v1.0+json with org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0
 [INFO] AbstractChannelizer - Configured application/vnd.gremlin-v2.0+json with org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f97a21c8/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoLiteMessageSerializerV1d0.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoLiteMessageSerializerV1d0.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoLiteMessageSerializerV1d0.java
index 53825be..a9b1ac6 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoLiteMessageSerializerV1d0.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoLiteMessageSerializerV1d0.java
@@ -19,6 +19,7 @@
 package org.apache.tinkerpop.gremlin.driver.ser;
 
 import org.apache.tinkerpop.gremlin.process.traversal.Path;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.HaltedTraverserStrategy;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.Property;
@@ -43,7 +44,9 @@ import java.util.Map;
  * as {@link ReferenceVertex} exclude the label and the properties associated with it and only return the identifier.
  *
  * @author Stephen Mallette (http://stephen.genoprime.com)
+ * @deprecated As of release 3.2.6, not directly replaced - supported through {@link HaltedTraverserStrategy}.
  */
+@Deprecated
 public class GryoLiteMessageSerializerV1d0 extends AbstractGryoMessageSerializerV1d0 {
 
     private static final String MIME_TYPE = SerTokens.MIME_GRYO_LITE_V1D0;

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f97a21c8/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV1d0.java
----------------------------------------------------------------------
diff --git a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV1d0.java b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV1d0.java
index 445b6cc..a80e0dd 100644
--- a/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV1d0.java
+++ b/gremlin-driver/src/main/java/org/apache/tinkerpop/gremlin/driver/ser/GryoMessageSerializerV1d0.java
@@ -26,8 +26,6 @@ import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex;
  * {@link DetachedVertex} include the label and the properties associated with it which could be more costly for
  * network serialization purposes.
  *
- * @see GryoLiteMessageSerializerV1d0
- *
  * @author Stephen Mallette (http://stephen.genoprime.com)
  */
 public final class GryoMessageSerializerV1d0 extends AbstractGryoMessageSerializerV1d0 {

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f97a21c8/gremlin-python/src/test/resources/org/apache/tinkerpop/gremlin/python/driver/gremlin-server-modern-secure-py.yaml
----------------------------------------------------------------------
diff --git a/gremlin-python/src/test/resources/org/apache/tinkerpop/gremlin/python/driver/gremlin-server-modern-secure-py.yaml b/gremlin-python/src/test/resources/org/apache/tinkerpop/gremlin/python/driver/gremlin-server-modern-secure-py.yaml
index c87f4de..a1b595f 100644
--- a/gremlin-python/src/test/resources/org/apache/tinkerpop/gremlin/python/driver/gremlin-server-modern-secure-py.yaml
+++ b/gremlin-python/src/test/resources/org/apache/tinkerpop/gremlin/python/driver/gremlin-server-modern-secure-py.yaml
@@ -42,7 +42,6 @@ scriptEngines: {
 }
 serializers:
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }}            # application/vnd.gremlin-v1.0+gryo
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }}        # application/vnd.gremlin-v1.0+gryo-lite
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}        # application/vnd.gremlin-v1.0+gryo-stringd
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }} # application/vnd.gremlin-v1.0+json
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2d0] }} # application/vnd.gremlin-v2.0+json

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f97a21c8/gremlin-server/conf/gremlin-server-classic.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server-classic.yaml b/gremlin-server/conf/gremlin-server-classic.yaml
index 9315ac8..b56960d 100644
--- a/gremlin-server/conf/gremlin-server-classic.yaml
+++ b/gremlin-server/conf/gremlin-server-classic.yaml
@@ -29,7 +29,6 @@ scriptEngines: {
     scripts: [scripts/generate-classic.groovy]}}
 serializers:
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }}            # application/vnd.gremlin-v1.0+gryo
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }}        # application/vnd.gremlin-v1.0+gryo-lite
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}        # application/vnd.gremlin-v1.0+gryo-stringd
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }} # application/vnd.gremlin-v1.0+json
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2d0] }} # application/vnd.gremlin-v2.0+json

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f97a21c8/gremlin-server/conf/gremlin-server-modern-py.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server-modern-py.yaml b/gremlin-server/conf/gremlin-server-modern-py.yaml
index 89b204f..a04681f 100644
--- a/gremlin-server/conf/gremlin-server-modern-py.yaml
+++ b/gremlin-server/conf/gremlin-server-modern-py.yaml
@@ -44,7 +44,6 @@ scriptEngines: {
 }
 serializers:
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }}            # application/vnd.gremlin-v1.0+gryo
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }}        # application/vnd.gremlin-v1.0+gryo-lite
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}        # application/vnd.gremlin-v1.0+gryo-stringd
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }} # application/vnd.gremlin-v1.0+json
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2d0] }} # application/vnd.gremlin-v2.0+json

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f97a21c8/gremlin-server/conf/gremlin-server-modern-readonly.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server-modern-readonly.yaml b/gremlin-server/conf/gremlin-server-modern-readonly.yaml
index 8c32f1f..c2073ea 100644
--- a/gremlin-server/conf/gremlin-server-modern-readonly.yaml
+++ b/gremlin-server/conf/gremlin-server-modern-readonly.yaml
@@ -29,7 +29,6 @@ scriptEngines: {
     scripts: [scripts/generate-modern-readonly.groovy]}}
 serializers:
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }}            # application/vnd.gremlin-v1.0+gryo
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }}        # application/vnd.gremlin-v1.0+gryo-lite
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}        # application/vnd.gremlin-v1.0+gryo-stringd
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }} # application/vnd.gremlin-v1.0+json
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2d0] }} # application/vnd.gremlin-v2.0+json

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f97a21c8/gremlin-server/conf/gremlin-server-modern.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server-modern.yaml b/gremlin-server/conf/gremlin-server-modern.yaml
index d8c6a45..16eba68 100644
--- a/gremlin-server/conf/gremlin-server-modern.yaml
+++ b/gremlin-server/conf/gremlin-server-modern.yaml
@@ -29,7 +29,6 @@ scriptEngines: {
     scripts: [scripts/generate-modern.groovy]}}
 serializers:
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }}            # application/vnd.gremlin-v1.0+gryo
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }}        # application/vnd.gremlin-v1.0+gryo-lite
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}        # application/vnd.gremlin-v1.0+gryo-stringd
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }} # application/vnd.gremlin-v1.0+json
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2d0] }} # application/vnd.gremlin-v2.0+json

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f97a21c8/gremlin-server/conf/gremlin-server-neo4j.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server-neo4j.yaml b/gremlin-server/conf/gremlin-server-neo4j.yaml
index da53572..8d91374 100644
--- a/gremlin-server/conf/gremlin-server-neo4j.yaml
+++ b/gremlin-server/conf/gremlin-server-neo4j.yaml
@@ -40,7 +40,6 @@ scriptEngines: {
     scripts: [scripts/empty-sample.groovy]}}
 serializers:
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }}            # application/vnd.gremlin-v1.0+gryo
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }}        # application/vnd.gremlin-v1.0+gryo-lite
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}        # application/vnd.gremlin-v1.0+gryo-stringd
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }} # application/vnd.gremlin-v1.0+json
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2d0] }} # application/vnd.gremlin-v2.0+json

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f97a21c8/gremlin-server/conf/gremlin-server-secure.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server-secure.yaml b/gremlin-server/conf/gremlin-server-secure.yaml
index 6ea21d0..197e3a7 100644
--- a/gremlin-server/conf/gremlin-server-secure.yaml
+++ b/gremlin-server/conf/gremlin-server-secure.yaml
@@ -43,7 +43,6 @@ scriptEngines: {
               "org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.CompileStaticCustomizerProvider":["org.apache.tinkerpop.gremlin.groovy.jsr223.customizer.SimpleSandboxExtension"]}}}}
 serializers:
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }}            # application/vnd.gremlin-v1.0+gryo
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }}        # application/vnd.gremlin-v1.0+gryo-lite
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}        # application/vnd.gremlin-v1.0+gryo-stringd
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }} # application/vnd.gremlin-v1.0+json
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2d0] }} # application/vnd.gremlin-v2.0+json

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f97a21c8/gremlin-server/conf/gremlin-server-spark.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server-spark.yaml b/gremlin-server/conf/gremlin-server-spark.yaml
index f096d41..5ff7cc8 100644
--- a/gremlin-server/conf/gremlin-server-spark.yaml
+++ b/gremlin-server/conf/gremlin-server-spark.yaml
@@ -53,7 +53,6 @@ scriptEngines: {
     scripts: [scripts/spark.groovy]}}
 serializers:
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }}            # application/vnd.gremlin-v1.0+gryo
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }}        # application/vnd.gremlin-v1.0+gryo-lite
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}        # application/vnd.gremlin-v1.0+gryo-stringd
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }} # application/vnd.gremlin-v1.0+json
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2d0] }} # application/vnd.gremlin-v2.0+json

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f97a21c8/gremlin-server/conf/gremlin-server.yaml
----------------------------------------------------------------------
diff --git a/gremlin-server/conf/gremlin-server.yaml b/gremlin-server/conf/gremlin-server.yaml
index 6ffc7b5..71d1d91 100644
--- a/gremlin-server/conf/gremlin-server.yaml
+++ b/gremlin-server/conf/gremlin-server.yaml
@@ -30,7 +30,6 @@ scriptEngines: {
     scripts: [scripts/empty-sample.groovy]}}
 serializers:
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }}            # application/vnd.gremlin-v1.0+gryo
-  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoLiteMessageSerializerV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }}        # application/vnd.gremlin-v1.0+gryo-lite
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0, config: { serializeResultToString: true }}        # application/vnd.gremlin-v1.0+gryo-stringd
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV1d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV1d0] }} # application/vnd.gremlin-v1.0+json
   - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerGremlinV2d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2d0] }} # application/vnd.gremlin-v2.0+json

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/f97a21c8/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/AbstractChannelizer.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/AbstractChannelizer.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/AbstractChannelizer.java
index 476cdd5..45718e9 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/AbstractChannelizer.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/AbstractChannelizer.java
@@ -24,7 +24,6 @@ import io.netty.handler.ssl.SslContextBuilder;
 import io.netty.handler.ssl.SslProvider;
 import io.netty.handler.ssl.util.SelfSignedCertificate;
 import org.apache.tinkerpop.gremlin.driver.MessageSerializer;
-import org.apache.tinkerpop.gremlin.driver.ser.AbstractGraphSONMessageSerializerV1d0;
 import org.apache.tinkerpop.gremlin.driver.ser.AbstractGryoMessageSerializerV1d0;
 import org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV1d0;
 import org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0;
@@ -55,7 +54,6 @@ import java.util.Optional;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.stream.Stream;
-import java.util.Iterator;
 
 /**
  * A base implementation for the {@code Channelizer} which does a basic configuration of the pipeline, one that
@@ -199,6 +197,9 @@ public abstract class AbstractChannelizer extends ChannelInitializer<SocketChann
                     return Optional.<MessageSerializer>empty();
                 }
 
+                if (clazz.getAnnotation(Deprecated.class) != null)
+                    logger.warn("The {} serialization class is deprecated.", config.className);
+
                 final MessageSerializer serializer = (MessageSerializer) clazz.newInstance();
                 final Map<String, Graph> graphsDefinedAtStartup = new HashMap<>();
                 for (String graphName : settings.graphs.keySet()) {


[43/50] [abbrv] tinkerpop git commit: Initialization scripts to gremlin server won't timeout

Posted by sp...@apache.org.
Initialization scripts to gremlin server won't timeout

Prior to this change the timeout for init scripts was the same as the the timeout configured for the server. Since init scripts might need to be long run (e.g. a long load script to init a graph into memory) it would force the user to make their timeout setting really high. A really high setting might be really bad though for basic request/response. Perhaps in the future it would be better to make this a configuration but for now this change should suffice. CTR


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

Branch: refs/heads/TINKERPOP-1716
Commit: 7c72e51dc7a27204e150232e8bba3eaa4cd91d9e
Parents: 362e772
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Jul 18 12:12:54 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Jul 18 12:12:54 2017 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  3 ++-
 .../gremlin/groovy/engine/GremlinExecutor.java  | 27 +++++++++-----------
 .../server/util/ServerGremlinExecutor.java      |  8 +++---
 3 files changed, 19 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7c72e51d/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 52d289b..573f681 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -28,7 +28,8 @@ TinkerPop 3.2.6 (Release Date: NOT OFFICIALLY RELEASED YET)
 
 This release also includes changes from <<release-3-1-8, 3.1.8>>.
 
-* Added Gremlin.Net as an early preview.
+* Initialization scripts for Gremlin Server will not timeout.
+* Added Gremlin.Net.
 * `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.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7c72e51d/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
----------------------------------------------------------------------
diff --git a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
index da495e6..962f798 100644
--- a/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
+++ b/gremlin-groovy/src/main/java/org/apache/tinkerpop/gremlin/groovy/engine/GremlinExecutor.java
@@ -278,7 +278,7 @@ public class GremlinExecutor implements AutoCloseable {
         // override the timeout if the lifecycle has a value assigned
         final long scriptEvalTimeOut = lifeCycle.getScriptEvaluationTimeoutOverride().orElse(scriptEvaluationTimeout);
 
-        final WeakReference<CompletableFuture<Object>> evaluationFuture = new WeakReference<>(new CompletableFuture<>());
+        final CompletableFuture<Object> evaluationFuture = new CompletableFuture<>();
         final FutureTask<Void> evalFuture = new FutureTask<>(() -> {
             try {
                 lifeCycle.getBeforeEval().orElse(beforeEval).accept(bindings);
@@ -306,36 +306,33 @@ public class GremlinExecutor implements AutoCloseable {
                 // that must raise as an exception to the caller who has the returned evaluationFuture. in other words,
                 // if it occurs before this point, then the handle() method won't be called again if there is an
                 // exception that ends up below trying to completeExceptionally()
-                final CompletableFuture<Object> ef = evaluationFuture.get();
-                if (ef != null) ef.complete(result);
+                evaluationFuture.complete(result);
             } catch (Throwable ex) {
                 final Throwable root = null == ex.getCause() ? ex : ExceptionUtils.getRootCause(ex);
 
                 // thread interruptions will typically come as the result of a timeout, so in those cases,
                 // check for that situation and convert to TimeoutException
-                final CompletableFuture<Object> ef = evaluationFuture.get();
-                if (ef != null) {
-                    if (root instanceof InterruptedException) {
-                        lifeCycle.getAfterTimeout().orElse(afterTimeout).accept(bindings);
-                        ef.completeExceptionally(new TimeoutException(
-                                String.format("Script evaluation exceeded the configured 'scriptEvaluationTimeout' threshold of %s ms or evaluation was otherwise cancelled directly for request [%s]: %s", scriptEvalTimeOut, script, root.getMessage())));
-                    } else {
-                        lifeCycle.getAfterFailure().orElse(afterFailure).accept(bindings, root);
-                        ef.completeExceptionally(root);
-                    }
+                if (root instanceof InterruptedException) {
+                    lifeCycle.getAfterTimeout().orElse(afterTimeout).accept(bindings);
+                    evaluationFuture.completeExceptionally(new TimeoutException(
+                            String.format("Script evaluation exceeded the configured 'scriptEvaluationTimeout' threshold of %s ms or evaluation was otherwise cancelled directly for request [%s]: %s", scriptEvalTimeOut, script, root.getMessage())));
+                } else {
+                    lifeCycle.getAfterFailure().orElse(afterFailure).accept(bindings, root);
+                    evaluationFuture.completeExceptionally(root);
                 }
             }
 
             return null;
         });
 
+        final WeakReference<CompletableFuture<Object>> evaluationFutureRef = new WeakReference<>(evaluationFuture);
         final Future<?> executionFuture = executorService.submit(evalFuture);
         if (scriptEvalTimeOut > 0) {
             // Schedule a timeout in the thread pool for future execution
             scheduledExecutorService.schedule(() -> {
                 if (executionFuture.cancel(true)) {
                     lifeCycle.getAfterTimeout().orElse(afterTimeout).accept(bindings);
-                    final CompletableFuture<Object> ef = evaluationFuture.get();
+                    final CompletableFuture<Object> ef = evaluationFutureRef.get();
                     if (ef != null) {
                         ef.completeExceptionally(new TimeoutException(
                                 String.format("Script evaluation exceeded the configured 'scriptEvaluationTimeout' threshold of %s ms or evaluation was otherwise cancelled directly for request [%s]", scriptEvalTimeOut, script)));
@@ -344,7 +341,7 @@ public class GremlinExecutor implements AutoCloseable {
             }, scriptEvalTimeOut, TimeUnit.MILLISECONDS);
         }
 
-        return evaluationFuture.get();
+        return evaluationFuture;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7c72e51d/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/ServerGremlinExecutor.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/ServerGremlinExecutor.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/ServerGremlinExecutor.java
index 8398dbb..b878549 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/ServerGremlinExecutor.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/ServerGremlinExecutor.java
@@ -18,10 +18,8 @@
  */
 package org.apache.tinkerpop.gremlin.server.util;
 
-import com.codahale.metrics.Gauge;
 import org.apache.tinkerpop.gremlin.groovy.engine.GremlinExecutor;
 import org.apache.tinkerpop.gremlin.groovy.engine.ScriptEngines;
-import org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine;
 import org.apache.tinkerpop.gremlin.jsr223.GremlinScriptEngine;
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource;
 import org.apache.tinkerpop.gremlin.server.Channelizer;
@@ -32,6 +30,7 @@ import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import javax.script.SimpleBindings;
 import java.lang.reflect.Constructor;
 import java.util.Collections;
 import java.util.HashSet;
@@ -177,7 +176,10 @@ public class ServerGremlinExecutor<T extends ScheduledExecutorService> {
         // runs the init scripts when the GremlinScriptEngine is created.
         settings.scriptEngines.keySet().forEach(engineName -> {
             try {
-                gremlinExecutor.eval("1+1", engineName, Collections.emptyMap()).join();
+                // use no timeout on the engine initialization - perhaps this can be a configuration later
+                final GremlinExecutor.LifeCycle lifeCycle = GremlinExecutor.LifeCycle.build().
+                        scriptEvaluationTimeoutOverride(0L).create();
+                gremlinExecutor.eval("1+1", engineName, new SimpleBindings(Collections.emptyMap()), lifeCycle).join();
                 registerMetrics(engineName);
                 logger.info("Initialized {} GremlinScriptEngine and registered metrics", engineName);
             } catch (Exception ex) {


[45/50] [abbrv] tinkerpop git commit: Merge branch 'pr-675' into tp32

Posted by sp...@apache.org.
Merge branch 'pr-675' into tp32


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

Branch: refs/heads/TINKERPOP-1716
Commit: a2553b37f148ea23972dad52fcfbdbfe3bed9e2c
Parents: 2704245 40c76e9
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Tue Jul 18 17:09:31 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Tue Jul 18 17:09:31 2017 -0400

----------------------------------------------------------------------
 .../src/main/jython/gremlin_python/structure/io/graphson.py    | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------



[06/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/1daf48b2
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/1daf48b2
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/1daf48b2

Branch: refs/heads/TINKERPOP-1716
Commit: 1daf48b20de100e05f38202cdd1b3405fb16932a
Parents: 339e293
Author: Jorge Bay Gondra <jo...@gmail.com>
Authored: Fri Jun 9 10:20:55 2017 +0200
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jun 28 15:13:11 2017 -0400

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


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/1daf48b2/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);


[48/50] [abbrv] tinkerpop git commit: TINKERPOP-1716 Excluded two strategy based tests that don't work with Gryo/Remoting yet

Posted by sp...@apache.org.
TINKERPOP-1716 Excluded two strategy based tests that don't work with Gryo/Remoting yet


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

Branch: refs/heads/TINKERPOP-1716
Commit: 986beaf530b5bdb81f14c8b6f71f548286caa7d3
Parents: 33c4aa9
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Jul 19 15:12:40 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jul 19 15:12:40 2017 -0400

----------------------------------------------------------------------
 .../structure/io/gryo/TinkerGraphGryoTranslatorProvider.java     | 4 ++++
 1 file changed, 4 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/986beaf5/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/io/gryo/TinkerGraphGryoTranslatorProvider.java
----------------------------------------------------------------------
diff --git a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/io/gryo/TinkerGraphGryoTranslatorProvider.java b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/io/gryo/TinkerGraphGryoTranslatorProvider.java
index 720abf2..fc14138 100644
--- a/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/io/gryo/TinkerGraphGryoTranslatorProvider.java
+++ b/tinkergraph-gremlin/src/test/java/org/apache/tinkerpop/gremlin/tinkergraph/structure/io/gryo/TinkerGraphGryoTranslatorProvider.java
@@ -26,6 +26,8 @@ import org.apache.tinkerpop.gremlin.process.traversal.TraversalInterruptionCompu
 import org.apache.tinkerpop.gremlin.process.traversal.TraversalInterruptionTest;
 import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.ProgramTest;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ElementIdStrategyProcessTest;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.EventStrategyProcessTest;
 import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.TranslationStrategy;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.tinkergraph.TinkerGraphProvider;
@@ -44,6 +46,8 @@ public class TinkerGraphGryoTranslatorProvider extends TinkerGraphProvider {
             "testProfileStrategyCallback",
             "testProfileStrategyCallbackSideEffect",
             //
+            ElementIdStrategyProcessTest.class.getCanonicalName(),
+            EventStrategyProcessTest.class.getCanonicalName(),
             ProgramTest.Traversals.class.getCanonicalName(),
             TraversalInterruptionTest.class.getCanonicalName(),
             TraversalInterruptionComputerTest.class.getCanonicalName(),


[05/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/ca3da928
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/ca3da928
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/ca3da928

Branch: refs/heads/TINKERPOP-1716
Commit: ca3da92801aa350ff2a6042ad149ab29040e3c64
Parents: 1daf48b
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Fri Jun 9 16:14:49 2017 +0200
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jun 28 15:13:11 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/ca3da928/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/ca3da928/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/ca3da928/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/ca3da928/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/ca3da928/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/ca3da928/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]


[02/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/e2453a18
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/e2453a18
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/e2453a18

Branch: refs/heads/TINKERPOP-1716
Commit: e2453a1802b3f0f91933e44d7ec5aa7b9a963c4b
Parents: 852ff1f
Author: Jorge Bay Gondra <jo...@gmail.com>
Authored: Wed May 31 17:19:55 2017 +0200
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jun 28 15:13:11 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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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/e2453a18/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
     }
 }


[40/50] [abbrv] tinkerpop git commit: Increased timeout a bit for test.

Posted by sp...@apache.org.
Increased timeout a bit for test.

Wasn't giving enough time (suddenly) to handle the follow-on request that ensures calls work after a timeout has triggered. CTR


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

Branch: refs/heads/TINKERPOP-1716
Commit: a5d60c6b844aee5169238f000b5fd0b66d850e61
Parents: 2ba4104
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Jul 17 11:36:14 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Jul 17 12:24:44 2017 -0400

----------------------------------------------------------------------
 .../tinkerpop/gremlin/server/GremlinServerIntegrateTest.java     | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a5d60c6b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
index aad8131..8b0c280 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
@@ -157,7 +157,7 @@ public class GremlinServerIntegrateTest extends AbstractGremlinServerIntegration
                 settings.writeBufferLowWaterMark = 32;
                 break;
             case "shouldReceiveFailureTimeOutOnScriptEval":
-                settings.scriptEvaluationTimeout = 200;
+                settings.scriptEvaluationTimeout = 1000;
                 break;
             case "shouldReceiveFailureTimeOutOnTotalSerialization":
                 settings.serializedResponseTimeout = 1;
@@ -699,7 +699,7 @@ public class GremlinServerIntegrateTest extends AbstractGremlinServerIntegration
     public void shouldReceiveFailureTimeOutOnScriptEval() throws Exception {
         try (SimpleClient client = TestClientFactory.createWebSocketClient()){
             final List<ResponseMessage> responses = client.submit("Thread.sleep(3000);'some-stuff-that-should not return'");
-            assertThat(responses.get(0).getStatus().getMessage(), startsWith("Script evaluation exceeded the configured 'scriptEvaluationTimeout' threshold of 200 ms"));
+            assertThat(responses.get(0).getStatus().getMessage(), startsWith("Script evaluation exceeded the configured 'scriptEvaluationTimeout' threshold of 1000 ms"));
 
             // validate that we can still send messages to the server
             assertEquals(2, ((List<Integer>) client.submit("1+1").get(0).getResult().getData()).get(0).intValue());


[16/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/a02c78b2
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/a02c78b2
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/a02c78b2

Branch: refs/heads/TINKERPOP-1716
Commit: a02c78b2fce3d6871c5390d8a379f1f0efedc2fe
Parents: 3c0abd0
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Jun 21 09:12:17 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jun 28 15:13:12 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/a02c78b2/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 2e48b87..ddba0a0 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


[46/50] [abbrv] tinkerpop git commit: added the TraversalStrategies to Gryo v1 in the tp32/ line. Note that this is not working... Perhaps @spmallette can finish off this branch or else, note that this is fixed in master/ 3.3.0-SNAPSHOT.

Posted by sp...@apache.org.
added the TraversalStrategies to Gryo v1 in the tp32/ line. Note that this is not working... Perhaps @spmallette can finish off this branch or else, note that this is fixed in master/ 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/b38a8d66
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/b38a8d66
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/b38a8d66

Branch: refs/heads/TINKERPOP-1716
Commit: b38a8d6661a766d58129845934118e0c1260e253
Parents: a2553b3
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Tue Jul 11 10:06:01 2017 -0600
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jul 19 07:42:44 2017 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |  1 +
 .../gremlin/process/remote/RemoteGraph.java     |  8 ----
 .../structure/io/gryo/GryoSerializers.java      |  9 +---
 .../gremlin/structure/io/gryo/GryoVersion.java  | 48 +++++++++++++++++++-
 4 files changed, 50 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b38a8d66/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 573f681..1cc64c1 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -28,6 +28,7 @@ TinkerPop 3.2.6 (Release Date: NOT OFFICIALLY RELEASED YET)
 
 This release also includes changes from <<release-3-1-8, 3.1.8>>.
 
+* Registered all `TraversalStrategies` with Gryo 1.0.
 * Initialization scripts for Gremlin Server will not timeout.
 * Added Gremlin.Net.
 * `ProfileTest` is now less stringent about assertions which will reduce burdens on providers.

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b38a8d66/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java
index 2bc310a..9516ea5 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/remote/RemoteGraph.java
@@ -89,14 +89,6 @@ import java.util.Iterator;
         method = "*",
         reason = "RemoteGraph does not support EventStrategy at this time - some of its members are not serializable")
 @Graph.OptOut(
-        test = "org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.PartitionStrategyProcessTest",
-        method = "*",
-        reason = "RemoteGraph does not support PartitionStrategy at this time")
-@Graph.OptOut(
-        test = "org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategyProcessTest",
-        method = "*",
-        reason = "RemoteGraph does not support ReadOnlyStrategy at this time")
-@Graph.OptOut(
         test = "org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategyProcessTest",
         method = "*",
         reason = "RemoteGraph does not support SubgraphStrategy at this time")

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b38a8d66/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializers.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializers.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializers.java
index 0e7cac6..1a4c58a 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializers.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoSerializers.java
@@ -136,13 +136,8 @@ public final class GryoSerializers {
     public final static class BytecodeSerializer implements SerializerShim<Bytecode> {
         @Override
         public <O extends OutputShim> void write(final KryoShim<?, O> kryo, final O output, final Bytecode bytecode) {
-            final List<Bytecode.Instruction> sourceInstructions = IteratorUtils.list(
-                    IteratorUtils.filter(bytecode.getSourceInstructions().iterator(),
-                            i -> !i.getOperator().equals(TraversalSource.Symbols.withStrategies) &&
-                                    !i.getOperator().equals(TraversalSource.Symbols.withComputer)));
-            writeInstructions(kryo, output, sourceInstructions);
-            final List<Bytecode.Instruction> stepInstructions = IteratorUtils.list(bytecode.getStepInstructions().iterator());
-            writeInstructions(kryo, output, stepInstructions);
+            writeInstructions(kryo, output, IteratorUtils.list(bytecode.getSourceInstructions().iterator()));
+            writeInstructions(kryo, output, IteratorUtils.list(bytecode.getStepInstructions().iterator()));
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b38a8d66/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoVersion.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoVersion.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoVersion.java
index d581559..01df6b8 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoVersion.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/gryo/GryoVersion.java
@@ -20,6 +20,8 @@ package org.apache.tinkerpop.gremlin.structure.io.gryo;
 
 import org.apache.tinkerpop.gremlin.process.computer.GraphFilter;
 import org.apache.tinkerpop.gremlin.process.computer.MapReduce;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.decoration.VertexProgramStrategy;
+import org.apache.tinkerpop.gremlin.process.computer.traversal.strategy.optimization.GraphFilterStrategy;
 import org.apache.tinkerpop.gremlin.process.computer.util.MapMemory;
 import org.apache.tinkerpop.gremlin.process.remote.traversal.DefaultRemoteTraverser;
 import org.apache.tinkerpop.gremlin.process.traversal.Bytecode;
@@ -37,12 +39,31 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.map.FoldStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroupCountStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroupStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.GroupStepV3d0;
+import org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.MeanGlobalStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderGlobalStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.map.TreeStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.BulkSet;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.ProfileStep;
 import org.apache.tinkerpop.gremlin.process.traversal.step.util.Tree;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ConnectiveStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.HaltedTraverserStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.PartitionStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.SubgraphStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.finalization.MatchAlgorithmStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.AdjacentToIncidentStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.FilterRankingStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.IdentityRemovalStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.IncidentToAdjacentStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.InlineFilterStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.LazyBarrierStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.MatchPredicateStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.OrderLimitStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.PathProcessorStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.PathRetractionStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.RepeatUnrollStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.LambdaRestrictionStrategy;
+import org.apache.tinkerpop.gremlin.process.traversal.strategy.verification.ReadOnlyStrategy;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.B_LP_O_P_S_SE_SL_Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.B_LP_O_S_SE_SL_Traverser;
 import org.apache.tinkerpop.gremlin.process.traversal.traverser.B_O_S_SE_SL_Traverser;
@@ -181,7 +202,7 @@ public enum GryoVersion {
             add(GryoTypeReg.of(BigDecimal.class, 35));
             add(GryoTypeReg.of(Calendar.class, 39));
             add(GryoTypeReg.of(Class.class, 41, new UtilSerializers.ClassSerializer()));
-            add(GryoTypeReg.of(Class[].class, 166, new UtilSerializers.ClassArraySerializer())); // ***LAST ID***
+            add(GryoTypeReg.of(Class[].class, 166, new UtilSerializers.ClassArraySerializer()));
             add(GryoTypeReg.of(Collection.class, 37));
             add(GryoTypeReg.of(Collections.EMPTY_LIST.getClass(), 51));
             add(GryoTypeReg.of(Collections.EMPTY_MAP.getClass(), 52));
@@ -301,6 +322,31 @@ public enum GryoVersion {
             add(GryoTypeReg.of(RangeGlobalStep.RangeBiOperator.class, 114));
             add(GryoTypeReg.of(OrderGlobalStep.OrderBiOperator.class, 118, new JavaSerializer()));
             add(GryoTypeReg.of(ProfileStep.ProfileBiOperator.class, 119));
+
+            add(GryoTypeReg.of(ConnectiveStrategy.class, 138));
+            add(GryoTypeReg.of(HaltedTraverserStrategy.class, 139));
+            add(GryoTypeReg.of(PartitionStrategy.class, 140, new JavaSerializer()));
+            add(GryoTypeReg.of(SubgraphStrategy.class, 141, new JavaSerializer()));
+            add(GryoTypeReg.of(VertexProgramStrategy.class, 142, new JavaSerializer()));
+            add(GryoTypeReg.of(MatchAlgorithmStrategy.class, 143));
+            add(GryoTypeReg.of(MatchStep.GreedyMatchAlgorithm.class, 144));
+            add(GryoTypeReg.of(AdjacentToIncidentStrategy.class, 145));
+            add(GryoTypeReg.of(FilterRankingStrategy.class, 146));
+            add(GryoTypeReg.of(IdentityRemovalStrategy.class, 147));
+            add(GryoTypeReg.of(IncidentToAdjacentStrategy.class, 148));
+            add(GryoTypeReg.of(InlineFilterStrategy.class, 149));
+            add(GryoTypeReg.of(LazyBarrierStrategy.class, 150));
+            add(GryoTypeReg.of(MatchPredicateStrategy.class, 151));
+            add(GryoTypeReg.of(OrderLimitStrategy.class, 152));
+            add(GryoTypeReg.of(PathProcessorStrategy.class, 153));
+            add(GryoTypeReg.of(PathRetractionStrategy.class, 154));
+            //add(GryoTypeReg.of(CountStrategy.class, 155));
+            add(GryoTypeReg.of(RepeatUnrollStrategy.class, 156));
+            add(GryoTypeReg.of(GraphFilterStrategy.class, 157));
+            add(GryoTypeReg.of(LambdaRestrictionStrategy.class, 158));
+            add(GryoTypeReg.of(ReadOnlyStrategy.class, 159));
+            add(GryoTypeReg.of(MatchStep.CountMatchAlgorithm.class, 160));
+            add(GryoTypeReg.of(MatchStep.GreedyMatchAlgorithm.class, 167)); // ***LAST ID***
         }};
     }
 


[33/50] [abbrv] tinkerpop git commit: removed reference of MapReduceGraphComputer as we are currently not going to provide that in TinkerPop. Ref TINKERPOP-841

Posted by sp...@apache.org.
removed reference of MapReduceGraphComputer as we are currently not going to provide that in TinkerPop. Ref TINKERPOP-841


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

Branch: refs/heads/TINKERPOP-1716
Commit: 672c8aa393242a74cc2b0860f7a70e3512d6ff17
Parents: 937981a
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Thu Jul 13 09:21:24 2017 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Thu Jul 13 09:21:24 2017 -0600

----------------------------------------------------------------------
 docs/src/reference/implementations-hadoop-start.asciidoc | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/672c8aa3/docs/src/reference/implementations-hadoop-start.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/reference/implementations-hadoop-start.asciidoc b/docs/src/reference/implementations-hadoop-start.asciidoc
index 1798749..028b1c1 100644
--- a/docs/src/reference/implementations-hadoop-start.asciidoc
+++ b/docs/src/reference/implementations-hadoop-start.asciidoc
@@ -183,12 +183,8 @@ image:hadoop-furnace.png[width=180,float=left] Hadoop-Gremlin was designed to ex
 for the execution of the Gremlin traversal.
 
 A `Graph` in TinkerPop3 can support any number of `GraphComputer` implementations. Out of the box, Hadoop-Gremlin
-supports the following three implementations.
+supports the following two implementations.
 
-* <<mapreducegraphcomputer,`MapReduceGraphComputer`>>: Leverages Hadoop's MapReduce engine to execute TinkerPop3 OLAP
-computations. (*coming soon*)
-** The graph must fit within the total disk space of the Hadoop cluster (supports massive graphs). Message passing is
-coordinated via MapReduce jobs over the on-disk graph (slow traversals).
 * <<sparkgraphcomputer,`SparkGraphComputer`>>: Leverages Apache Spark to execute TinkerPop3 OLAP computations.
 ** The graph may fit within the total RAM of the cluster (supports larger graphs). Message passing is coordinated via
 Spark map/reduce/join operations on in-memory and disk-cached data (average speed traversals).


[18/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/22744828
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/22744828
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/22744828

Branch: refs/heads/TINKERPOP-1716
Commit: 227448287c911d596ddc7a2b5929c1c6d8d243a8
Parents: a02c78b
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Jun 23 13:07:45 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jun 28 15:13:12 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/22744828/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/22744828/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/22744828/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/22744828/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>


[31/50] [abbrv] tinkerpop git commit: added references to thosee steps that support by(), to(), from(), and option(). as() was excluded as everything supports as.

Posted by sp...@apache.org.
added references to thosee steps that support by(), to(), from(), and option(). as() was excluded as everything supports as.


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

Branch: refs/heads/TINKERPOP-1716
Commit: 94f93055f5321a36f96b83fab1f380b6ae932e2c
Parents: bd4b989
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Wed Jul 12 14:42:11 2017 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Wed Jul 12 14:42:11 2017 -0600

----------------------------------------------------------------------
 docs/src/reference/the-traversal.asciidoc | 26 ++++++++++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/94f93055/docs/src/reference/the-traversal.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/reference/the-traversal.asciidoc b/docs/src/reference/the-traversal.asciidoc
index c54a9db..c7fbcde 100644
--- a/docs/src/reference/the-traversal.asciidoc
+++ b/docs/src/reference/the-traversal.asciidoc
@@ -425,6 +425,24 @@ g.V().group().by(bothE().count()).by(count())  <3>
 <2> `by('name')` will process the grouped elements by their name (*element property projection*).
 <3> `by(count())` will count the number of elements in each group (*traversal*).
 
+The following steps all support `by()`-modulation. Note that the semantics of such modulation should be understood
+on a step-by-step level and thus, as discussed in their respective section of the documentation.
+
+* <<dedup-step, `dedup()`>>: dedup on the results of a `by()`-modulation.
+* <<cyclicpath-step, `cyclicPath()`>>: filter if the traverser's path is cyclic given `by()`-modulation.
+* <<simplepath-step, `simplePath()`>>: filter if the traverser's path is simple given `by()`-modulation.
+* <<sample-step, `sample()`>>: sample using the value returned by `by()`-modulation.
+* <<where-step, `where()`>>: determine the predicate given the testing of the results of `by()`-modulation.
+* <<groupCount-step,`groupCount()`>>: count those groups where the group keys are the result of `by()`-modulation.
+* <<group-step, `group()`>>: create group keys and values according to `by()`-modulation.
+* <<order-step, `order()`>>: order the objects by the results of a `by()`-modulation.
+* <<path-step, `path()`>>: get the path of the traverser where each path element is `by()`-modulated.
+* <<project-step, `project()`>>: project a map of results given various `by()`-modulations off the current object.
+* <<select-step, `select()`>>: select path elements and transform them via `by()`-modulation.
+* <<tree-step, `tree()`>>: get a tree of traversers objects where the objects have been `by()`-modulated.
+* <<aggregate-step, `aggregate()`>>: aggregate all objects into a set but only store their `by()`-modulated values.
+* <<store-step, `store()`>>: store all objects into a set but only store their `by()`-modulated values.
+
 [[cap-step]]
 Cap Step
 ~~~~~~~~
@@ -724,6 +742,9 @@ The `from()`-step is not an actual step, but instead is a "step-modulator" simil
 <<by-step,`by()`>>. If a step is able to accept traversals or strings then `from()` is the
 means by which they are added. The general pattern is `step().from()`. See <<to-step,`to()`>>-step.
 
+The list of steps that support `from()`-modulation are: <<simplepath-step,`simplePath()`>>, <<cyclicpath-step,`cyclicPath()`>>,
+ <<path-step,`path()`>>, and <<addedge-step,`addE()`>>.
+
 [[group-step]]
 Group Step
 ~~~~~~~~~~
@@ -1288,8 +1309,7 @@ g.V().hasLabel('person').
 Option Step
 ~~~~~~~~~~~
 
-An option to a <<branch-step,`branch()`>> or <<choose-step,`choose()`>>
-
+An option to a <<branch-step,`branch()`>> or <<choose-step,`choose()`>>.
 
 [[optional-step]]
 Optional Step
@@ -2253,6 +2273,8 @@ The `to()`-step is not an actual step, but instead is a "step-modulator" similar
 <<by-step,`by()`>>. If a step is able to accept traversals or strings then `to()` is the
 means by which they are added. The general pattern is `step().to()`. See <<from-step,`from()`>>-step.
 
+The list of steps that support `to()`-modulation are: <<simplepath-step,`simplePath()`>>, <<cyclicpath-step,`cyclicPath()`>>,
+ <<path-step,`path()`>>, and <<addedge-step,`addE()`>>.
 
 [[tree-step]]
 Tree Step


[47/50] [abbrv] tinkerpop git commit: TINKERPOP-1716 Added private constructor for gryo serialization purposes.

Posted by sp...@apache.org.
TINKERPOP-1716 Added private constructor for gryo serialization purposes.


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

Branch: refs/heads/TINKERPOP-1716
Commit: 33c4aa927b27a547242fcbac63b571bb0b5c08d2
Parents: b38a8d6
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Jul 19 15:10:41 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jul 19 15:10:41 2017 -0400

----------------------------------------------------------------------
 .../strategy/finalization/MatchAlgorithmStrategy.java          | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/33c4aa92/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/MatchAlgorithmStrategy.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/MatchAlgorithmStrategy.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/MatchAlgorithmStrategy.java
index 06edc7e..a70e22a 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/MatchAlgorithmStrategy.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/strategy/finalization/MatchAlgorithmStrategy.java
@@ -35,7 +35,11 @@ import java.util.Collections;
 public final class MatchAlgorithmStrategy extends AbstractTraversalStrategy<TraversalStrategy.FinalizationStrategy> implements TraversalStrategy.FinalizationStrategy {
 
     private static final String MATCH_ALGORITHM = "matchAlgorithm";
-    private final Class<? extends MatchStep.MatchAlgorithm> matchAlgorithmClass;
+    private Class<? extends MatchStep.MatchAlgorithm> matchAlgorithmClass;
+
+    private MatchAlgorithmStrategy() {
+        // for serialization
+    }
 
     private MatchAlgorithmStrategy(final Class<? extends MatchStep.MatchAlgorithm> matchAlgorithmClass) {
         this.matchAlgorithmClass = matchAlgorithmClass;


[28/50] [abbrv] tinkerpop git commit: Merge branch 'pr-618' into tp32

Posted by sp...@apache.org.
Merge branch 'pr-618' into tp32


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

Branch: refs/heads/TINKERPOP-1716
Commit: c30b378b3a61f62fb936a11740d6f981d8473f87
Parents: bd4b989 c264390
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Jul 12 13:04:16 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jul 12 13:04:16 2017 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |   1 +
 .../src/reference/gremlin-applications.asciidoc |   7 +-
 .../upgrade/release-3.2.x-incubating.asciidoc   |   9 +
 .../gremlin/server/AbstractChannelizer.java     |  11 +-
 .../server/channel/WebSocketChannelizer.java    |   7 +-
 .../server/channel/WsAndHttpChannelizer.java    |  61 ++++
 .../SaslAndHttpBasicAuthenticationHandler.java  |  57 +++
 .../server/handler/WebSocketHandlerUtil.java    |  38 ++
 .../handler/WsAndHttpChannelizerHandler.java    |  87 +++++
 .../AbstractGremlinServerIntegrationTest.java   |  23 +-
 .../server/GremlinServerHttpIntegrateTest.java  |   6 -
 .../server/GremlinServerIntegrateTest.java      |  37 --
 ...tGremlminServerChannelizerIntegrateTest.java | 346 +++++++++++++++++++
 .../channel/HttpChannelizerIntegrateTest.java   |  56 +++
 .../channel/NioChannelizerIntegrateTest.java    |  56 +++
 .../WebSocketChannelizerIntegrateTest.java      |  56 +++
 .../WsAndHttpChannelizerIntegrateTest.java      |  58 ++++
 17 files changed, 864 insertions(+), 52 deletions(-)
----------------------------------------------------------------------



[13/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/74f9115f
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/74f9115f
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/74f9115f

Branch: refs/heads/TINKERPOP-1716
Commit: 74f9115f2b90514121e012ac1f2665c88c09f216
Parents: 21843ce
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Thu Jun 15 15:09:58 2017 +0200
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jun 28 15:13:12 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/74f9115f/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/74f9115f/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/74f9115f/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/74f9115f/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/74f9115f/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/74f9115f/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/74f9115f/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/74f9115f/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/74f9115f/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/74f9115f/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/74f9115f/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/74f9115f/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/74f9115f/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/74f9115f/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/74f9115f/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/74f9115f/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/74f9115f/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/74f9115f/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/74f9115f/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/74f9115f/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/74f9115f/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/74f9115f/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/74f9115f/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/74f9115f/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


[04/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/1fa9a601
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/1fa9a601
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/1fa9a601

Branch: refs/heads/TINKERPOP-1716
Commit: 1fa9a601a9d8ca48b0b569ef0d59f60d0c8f78db
Parents: ca3da92
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Mon Jun 12 22:09:24 2017 +0200
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jun 28 15:13:11 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/1fa9a601/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/1fa9a601/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/1fa9a601/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/1fa9a601/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/1fa9a601/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/1fa9a601/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/1fa9a601/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/1fa9a601/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/1fa9a601/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>


[32/50] [abbrv] tinkerpop git commit: Ensure serializer iteration is consistent

Posted by sp...@apache.org.
Ensure serializer iteration is consistent


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

Branch: refs/heads/TINKERPOP-1716
Commit: 40c76e9ecddd244aba2e5c081f07911b66363de8
Parents: 937981a
Author: Alan Boudreault <al...@alanb.ca>
Authored: Thu Jul 13 11:05:44 2017 -0400
Committer: Alan Boudreault <al...@alanb.ca>
Committed: Thu Jul 13 11:05:44 2017 -0400

----------------------------------------------------------------------
 .../src/main/jython/gremlin_python/structure/io/graphson.py    | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/40c76e9e/gremlin-python/src/main/jython/gremlin_python/structure/io/graphson.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/gremlin_python/structure/io/graphson.py b/gremlin-python/src/main/jython/gremlin_python/structure/io/graphson.py
index f33f528..8102ee8 100644
--- a/gremlin-python/src/main/jython/gremlin_python/structure/io/graphson.py
+++ b/gremlin-python/src/main/jython/gremlin_python/structure/io/graphson.py
@@ -19,6 +19,7 @@ under the License.
 from aenum import Enum
 import json
 import six
+from collections import OrderedDict
 
 from gremlin_python import statics
 from gremlin_python.statics import FloatType, FunctionType, IntType, LongType, TypeType
@@ -26,7 +27,10 @@ from gremlin_python.process.traversal import Binding, Bytecode, P, Traversal, Tr
 from gremlin_python.structure.graph import Edge, Property, Vertex, VertexProperty, Path
 
 
-_serializers = {}
+# When we fall back to a superclass's serializer, we iterate over this map.
+# We want that iteration order to be consistent, so we use an OrderedDict,
+# not a dict.
+_serializers = OrderedDict()
 _deserializers = {}
 
 


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

Posted by sp...@apache.org.
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/73690217
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/73690217
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/73690217

Branch: refs/heads/TINKERPOP-1716
Commit: 73690217a04d6aa4fdb31e48ea209c626c229c80
Parents: 74f9115
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Thu Jun 15 18:25:56 2017 +0200
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jun 28 15:13:12 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/73690217/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/73690217/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/73690217/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/73690217/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/73690217/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/73690217/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


[14/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/6457bb95
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/6457bb95
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/6457bb95

Branch: refs/heads/TINKERPOP-1716
Commit: 6457bb95581d937ff8b2e6404bbd3ad961f88e8b
Parents: 25fd472
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Jun 28 11:45:17 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jun 28 15:13:12 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/6457bb95/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index fe469b0..0109f82 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,3 +30,5 @@ tools/
 .vscode/
 .vs/
 *nupkg
+NuGet.Config
+nuget.exe

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/6457bb95/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 f56bcae..240d901 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/6457bb95/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/6457bb95/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 36d8d32..327a0db 100644
--- a/pom.xml
+++ b/pom.xml
@@ -319,6 +319,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"/>


[24/50] [abbrv] tinkerpop git commit: [TINKERPOP-915]Add combined handler for Http and Websockets

Posted by sp...@apache.org.
[TINKERPOP-915]Add combined handler for Http and Websockets

[TINKERPOP-915](https://issues.apache.org/jira/browse/TINKERPOP-915)

Most of this is tests. I added an integration test that goes over the
functionality of both the http and websocket channelizers using the new
`WsAndHttpChannelizer`. I added an additional test on top of that to
switch between using WebSockets and http.

The change itself leverages the existing `WebSocketChannelizer` to
provide the base pipeline setup. It has everything needed handler-wise
to service both http and ws connections. The
`WsAndHttpChannelizerHandler` then detects whether the incoming request
is a plain http connection or a WebSockets connection. If it's an http
connection, the channelizer handler swaps out the request handler
appropriately for whether or not authentication has been enabled.


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

Branch: refs/heads/TINKERPOP-1716
Commit: c2643905ede89c2cb8580280dcf42ecfb4cdfe01
Parents: 402678b
Author: Keith Lohnes <kr...@us.ibm.com>
Authored: Tue May 30 10:02:54 2017 -0400
Committer: Keith Lohnes <kr...@us.ibm.com>
Committed: Thu Jul 6 11:07:22 2017 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc                              |   1 +
 .../src/reference/gremlin-applications.asciidoc |   7 +-
 .../upgrade/release-3.2.x-incubating.asciidoc   |   9 +
 .../gremlin/server/AbstractChannelizer.java     |  11 +-
 .../server/channel/WebSocketChannelizer.java    |   7 +-
 .../server/channel/WsAndHttpChannelizer.java    |  61 ++++
 .../SaslAndHttpBasicAuthenticationHandler.java  |  57 +++
 .../server/handler/WebSocketHandlerUtil.java    |  38 ++
 .../handler/WsAndHttpChannelizerHandler.java    |  87 +++++
 .../AbstractGremlinServerIntegrationTest.java   |  23 +-
 .../server/GremlinServerHttpIntegrateTest.java  |   6 -
 .../server/GremlinServerIntegrateTest.java      |  37 --
 ...tGremlminServerChannelizerIntegrateTest.java | 346 +++++++++++++++++++
 .../channel/HttpChannelizerIntegrateTest.java   |  56 +++
 .../channel/NioChannelizerIntegrateTest.java    |  56 +++
 .../WebSocketChannelizerIntegrateTest.java      |  56 +++
 .../WsAndHttpChannelizerIntegrateTest.java      |  58 ++++
 17 files changed, 864 insertions(+), 52 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c2643905/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index 96e79ab..b19b67e 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -38,6 +38,7 @@ This release also includes changes from <<release-3-1-8, 3.1.8>>.
 * Fixed `HADOOP_GREMLIN_LIBS` parsing for Windows.
 * Improved GraphSON serialization performance around `VertexProperty`.
 * Changed some tests in `EventStrategyProcessTest` which were enforcing some unintended semantics around transaction state.
+* Added WsAndHttpChannelizer and SaslAndHttpBasicAuthenticationHandler to be allow for servicing Http and Websocket requests to the same server
 
 [[release-3-2-5]]
 TinkerPop 3.2.5 (Release Date: June 12, 2017)

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c2643905/docs/src/reference/gremlin-applications.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/reference/gremlin-applications.asciidoc b/docs/src/reference/gremlin-applications.asciidoc
index a936d3a..4e367e9 100644
--- a/docs/src/reference/gremlin-applications.asciidoc
+++ b/docs/src/reference/gremlin-applications.asciidoc
@@ -861,13 +861,16 @@ as the API for the endpoint is very similar to Rexster's link:https://github.com
 
 Gremlin Server provides for a single REST endpoint - a Gremlin evaluator - which allows the submission of a Gremlin
 script as a request.  For each request, it returns a response containing the serialized results of that script.
-To enable this endpoint, Gremlin Server needs to be configured with the `HttpChannelizer`, which replaces the default
+To enable this endpoint, Gremlin Server needs to be configured with the `HttpChannelizer`, which replaces the default. The `WsAndHttpChannelizer` may also be configured to enable both WebSockets and the REST endpoint.
 `WebSocketChannelizer`, in the configuration file:
 
 [source,yaml]
 channelizer: org.apache.tinkerpop.gremlin.server.channel.HttpChannelizer
 
-This setting is already configured in the `gremlin-server-rest-modern.yaml` file that is packaged with the Gremlin
+[source,yaml]
+channelizer: org.apache.tinkerpop.gremlin.server.channel.WsAndHttpChannelizer
+
+The `HttpChannelizer` is already configured in the `gremlin-server-rest-modern.yaml` file that is packaged with the Gremlin
 Server distribution.  To utilize it, start Gremlin Server as follows:
 
 [source,text]

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c2643905/docs/src/upgrade/release-3.2.x-incubating.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/upgrade/release-3.2.x-incubating.asciidoc b/docs/src/upgrade/release-3.2.x-incubating.asciidoc
index aa98de4..b8348d3 100644
--- a/docs/src/upgrade/release-3.2.x-incubating.asciidoc
+++ b/docs/src/upgrade/release-3.2.x-incubating.asciidoc
@@ -39,6 +39,15 @@ it has not been promoted as the primary way to add `IoRegistry` instances to ser
 
 See: link:https://issues.apache.org/jira/browse/TINKERPOP-1694[TINKERPOP-1694]
 
+WsAndHttpChannelizer
+^^^^^^^^^^^^^^^^^^^^
+
+The `WsAndHttpChannelizer` has been added to allow for processing both WebSocket and Http requests on the same
+port and gremlin server. The `SaslAndHttpBasicAuthenticationHandler` has also been added to service
+authentication for both protocols in conjunction with the `SimpleAuthenticator`.
+
+See: link:https://issues.apache.org/jira/browse/TINKERPOP-915[TINKERPOP-915]
+
 Upgrading for Providers
 ~~~~~~~~~~~~~~~~~~~~~~~
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c2643905/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/AbstractChannelizer.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/AbstractChannelizer.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/AbstractChannelizer.java
index 476cdd5..22bb1eb 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/AbstractChannelizer.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/AbstractChannelizer.java
@@ -85,11 +85,18 @@ public abstract class AbstractChannelizer extends ChannelInitializer<SocketChann
     protected ExecutorService gremlinExecutorService;
     protected ScheduledExecutorService scheduledExecutorService;
 
+
+    public static final String PIPELINE_AUTHENTICATOR = "authenticator";
+    public static final String PIPELINE_REQUEST_HANDLER = "request-handler";
+    public static final String PIPELINE_HTTP_RESPONSE_ENCODER = "http-response-encoder";
+
     protected static final String PIPELINE_SSL = "ssl";
     protected static final String PIPELINE_OP_SELECTOR = "op-selector";
     protected static final String PIPELINE_RESULT_ITERATOR_HANDLER = "result-iterator-handler";
     protected static final String PIPELINE_OP_EXECUTOR = "op-executor";
-    protected static final String PIPELINE_AUTHENTICATOR = "authenticator";
+    protected static final String PIPELINE_HTTP_REQUEST_DECODER = "http-request-decoder";
+
+    protected static final String GREMLIN_ENDPOINT = "/gremlin";
 
     protected final Map<String, MessageSerializer> serializers = new HashMap<>();
 
@@ -272,8 +279,6 @@ public abstract class AbstractChannelizer extends ChannelInitializer<SocketChann
             builder = SslContextBuilder.forServer(keyCertChainFile, keyFile, sslSettings.keyPassword)
                     .trustManager(trustCertChainFile);
         }
-        
-        
 
         builder.clientAuth(sslSettings.needClientAuth).sslProvider(provider);
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c2643905/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/WebSocketChannelizer.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/WebSocketChannelizer.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/WebSocketChannelizer.java
index 1b613a1..af41cc6 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/WebSocketChannelizer.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/WebSocketChannelizer.java
@@ -79,7 +79,7 @@ public class WebSocketChannelizer extends AbstractChannelizer {
 
         logger.debug("HttpRequestDecoder settings - maxInitialLineLength={}, maxHeaderSize={}, maxChunkSize={}",
                 settings.maxInitialLineLength, settings.maxHeaderSize, settings.maxChunkSize);
-        pipeline.addLast("http-request-decoder", new HttpRequestDecoder(settings.maxInitialLineLength, settings.maxHeaderSize, settings.maxChunkSize));
+        pipeline.addLast(PIPELINE_HTTP_REQUEST_DECODER, new HttpRequestDecoder(settings.maxInitialLineLength, settings.maxHeaderSize, settings.maxChunkSize));
 
         if (logger.isDebugEnabled())
             pipeline.addLast(new LoggingHandler("log-decoder-aggregator", LogLevel.DEBUG));
@@ -93,8 +93,9 @@ public class WebSocketChannelizer extends AbstractChannelizer {
         if (logger.isDebugEnabled())
             pipeline.addLast(new LoggingHandler("log-aggregator-encoder", LogLevel.DEBUG));
 
-        pipeline.addLast("http-response-encoder", new HttpResponseEncoder());
-        pipeline.addLast("request-handler", new WebSocketServerProtocolHandler("/gremlin", null, false, settings.maxContentLength));
+        pipeline.addLast(PIPELINE_HTTP_RESPONSE_ENCODER, new HttpResponseEncoder());
+
+        pipeline.addLast(PIPELINE_REQUEST_HANDLER, new WebSocketServerProtocolHandler(GREMLIN_ENDPOINT, null, false, settings.maxContentLength));
 
         if (logger.isDebugEnabled())
             pipeline.addLast(new LoggingHandler("log-aggregator-encoder", LogLevel.DEBUG));

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c2643905/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/WsAndHttpChannelizer.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/WsAndHttpChannelizer.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/WsAndHttpChannelizer.java
new file mode 100644
index 0000000..58885fb
--- /dev/null
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/channel/WsAndHttpChannelizer.java
@@ -0,0 +1,61 @@
+/*
+ * 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.server.channel;
+
+import io.netty.channel.ChannelInboundHandlerAdapter;
+import io.netty.channel.ChannelPipeline;
+import io.netty.channel.EventLoopGroup;
+import io.netty.handler.codec.http.HttpObjectAggregator;
+import io.netty.handler.codec.http.HttpRequestDecoder;
+import io.netty.handler.codec.http.HttpResponseEncoder;
+import io.netty.handler.codec.http.websocketx.WebSocketServerProtocolHandler;
+import io.netty.handler.logging.LogLevel;
+import io.netty.handler.logging.LoggingHandler;
+import org.apache.tinkerpop.gremlin.server.AbstractChannelizer;
+import org.apache.tinkerpop.gremlin.server.handler.HttpGremlinEndpointHandler;
+import org.apache.tinkerpop.gremlin.server.handler.WsAndHttpChannelizerHandler;
+import org.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor;
+import org.apache.tinkerpop.gremlin.server.channel.WebSocketChannelizer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ *A channelizer for port unification with websockets and http
+ *@author Keith Lohnes lohnesk@gmail.com
+ */
+
+public class WsAndHttpChannelizer extends AbstractChannelizer {
+
+    private static final Logger logger = LoggerFactory.getLogger(WsAndHttpChannelizer.class);
+
+    private WsAndHttpChannelizerHandler handler;
+
+    @Override
+    public void init(final ServerGremlinExecutor<EventLoopGroup> serverGremlinExecutor) {
+        super.init(serverGremlinExecutor);
+        handler = new WsAndHttpChannelizerHandler();
+        handler.init(serverGremlinExecutor, new HttpGremlinEndpointHandler(serializers, gremlinExecutor, graphManager, settings));
+    }
+
+    @Override
+    public void configure(final ChannelPipeline pipeline) {
+        handler.configure(pipeline);
+        pipeline.addAfter(PIPELINE_HTTP_REQUEST_DECODER, "WsAndHttpChannelizerHandler", handler);
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c2643905/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/SaslAndHttpBasicAuthenticationHandler.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/SaslAndHttpBasicAuthenticationHandler.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/SaslAndHttpBasicAuthenticationHandler.java
new file mode 100644
index 0000000..d3e4cfe
--- /dev/null
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/SaslAndHttpBasicAuthenticationHandler.java
@@ -0,0 +1,57 @@
+/*
+ * 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.server.handler;
+
+import io.netty.channel.ChannelHandler;
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.channel.ChannelPipeline;
+import io.netty.handler.codec.http.HttpMessage;
+import org.apache.tinkerpop.gremlin.server.auth.Authenticator;
+import org.apache.tinkerpop.gremlin.server.handler.HttpBasicAuthenticationHandler;
+import org.apache.tinkerpop.gremlin.server.handler.SaslAuthenticationHandler;
+import org.apache.tinkerpop.gremlin.server.handler.WebSocketHandlerUtil;
+
+import static org.apache.tinkerpop.gremlin.server.channel.WebSocketChannelizer.PIPELINE_AUTHENTICATOR;
+
+/**
+ *An Authentication Handler for doing WebSocket Sasl and Http Basic auth
+ */
+@ChannelHandler.Sharable
+public class SaslAndHttpBasicAuthenticationHandler extends SaslAuthenticationHandler {
+
+    private final String HTTP_AUTH = "http-authentication";
+
+    public SaslAndHttpBasicAuthenticationHandler(final Authenticator authenticator) {
+        super(authenticator);
+    }
+
+    @Override
+    public void channelRead(final ChannelHandlerContext ctx, final Object obj) throws Exception {
+        if (obj instanceof HttpMessage && !WebSocketHandlerUtil.isWebSocket((HttpMessage)obj)) {
+            if (null == ctx.pipeline().get(HTTP_AUTH)) {
+                ctx.pipeline().addAfter(PIPELINE_AUTHENTICATOR, HTTP_AUTH, new HttpBasicAuthenticationHandler(authenticator));
+            }
+            ctx.fireChannelRead(obj);
+        } else {
+            super.channelRead(ctx, obj);
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c2643905/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WebSocketHandlerUtil.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WebSocketHandlerUtil.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WebSocketHandlerUtil.java
new file mode 100644
index 0000000..2d571c0
--- /dev/null
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WebSocketHandlerUtil.java
@@ -0,0 +1,38 @@
+/*
+ * 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.server.handler;
+
+import io.netty.handler.codec.http.HttpMessage;
+
+import static io.netty.handler.codec.http.HttpHeaders.Names.UPGRADE;
+import static io.netty.handler.codec.http.HttpHeaders.Names.CONNECTION;
+
+/**
+ * A class to handle common WebSocket operations
+ * @author Keith Lohnes lohnesk@gmail.com
+ */
+final class WebSocketHandlerUtil {
+
+    static boolean isWebSocket(final HttpMessage msg) {
+        final String connectionHeader = msg.headers().get(CONNECTION);
+        final String upgradeHeader = msg.headers().get(UPGRADE);
+        return (null != connectionHeader && connectionHeader.equalsIgnoreCase("Upgrade")) ||
+               (null != upgradeHeader && upgradeHeader.equalsIgnoreCase("WebSocket"));
+    }
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c2643905/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WsAndHttpChannelizerHandler.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WsAndHttpChannelizerHandler.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WsAndHttpChannelizerHandler.java
new file mode 100644
index 0000000..328a34b
--- /dev/null
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/WsAndHttpChannelizerHandler.java
@@ -0,0 +1,87 @@
+/*
+ * 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.server.handler;
+
+import io.netty.channel.ChannelHandler;
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.channel.ChannelInboundHandlerAdapter;
+import io.netty.channel.ChannelPipeline;
+import io.netty.channel.EventLoopGroup;
+import io.netty.handler.codec.http.HttpMessage;
+import io.netty.handler.codec.http.websocketx.WebSocketServerProtocolHandler;
+import io.netty.handler.codec.http.HttpServerCodec;
+import org.apache.tinkerpop.gremlin.server.channel.HttpChannelizer;
+import org.apache.tinkerpop.gremlin.server.channel.WebSocketChannelizer;
+import org.apache.tinkerpop.gremlin.server.handler.HttpGremlinEndpointHandler;
+import org.apache.tinkerpop.gremlin.server.handler.WsAndHttpChannelizerHandler;
+import org.apache.tinkerpop.gremlin.server.handler.WebSocketHandlerUtil;
+import org.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor;
+
+import static io.netty.handler.codec.http.HttpHeaders.Names.UPGRADE;
+import static io.netty.handler.codec.http.HttpHeaders.Names.CONNECTION;
+import static org.apache.tinkerpop.gremlin.server.channel.WebSocketChannelizer.PIPELINE_AUTHENTICATOR;
+import static org.apache.tinkerpop.gremlin.server.channel.WebSocketChannelizer.PIPELINE_REQUEST_HANDLER;
+import static org.apache.tinkerpop.gremlin.server.channel.WebSocketChannelizer.PIPELINE_HTTP_RESPONSE_ENCODER;
+
+/*
+ * A ChannelInboundHandlerAdapter for use with {@link WsAndHttpChannelizer} that toggles between WebSockets
+ * and http
+ * @author Keith Lohnes lohnesk@gmail.com
+ */
+@ChannelHandler.Sharable
+public class WsAndHttpChannelizerHandler extends ChannelInboundHandlerAdapter {
+
+    private final WebSocketChannelizer wsChannelizer = new WebSocketChannelizer();
+    private HttpGremlinEndpointHandler httpGremlinEndpointHandler;
+
+    public void init(final ServerGremlinExecutor<EventLoopGroup> serverGremlinExecutor, final HttpGremlinEndpointHandler httpGremlinEndpointHandler) {
+        //WebSocketChannelizer has everything needed for the http endpoint to work
+        wsChannelizer.init(serverGremlinExecutor);
+        this.httpGremlinEndpointHandler = httpGremlinEndpointHandler;
+    }
+
+    public void configure(final ChannelPipeline pipeline) {
+        wsChannelizer.configure(pipeline);
+    }
+
+    @Override
+    public void channelRead(final ChannelHandlerContext ctx, final Object obj) {
+        final ChannelPipeline pipeline = ctx.pipeline();
+        if (obj instanceof HttpMessage && !WebSocketHandlerUtil.isWebSocket((HttpMessage)obj)) {
+            if (null != pipeline.get(PIPELINE_AUTHENTICATOR)) {
+                pipeline.remove(PIPELINE_REQUEST_HANDLER);
+                final ChannelHandler authenticator = pipeline.get(PIPELINE_AUTHENTICATOR);
+                pipeline.remove(PIPELINE_AUTHENTICATOR);
+                pipeline.addAfter(PIPELINE_HTTP_RESPONSE_ENCODER, PIPELINE_AUTHENTICATOR, authenticator);
+                pipeline.addAfter(PIPELINE_AUTHENTICATOR, PIPELINE_REQUEST_HANDLER, this.httpGremlinEndpointHandler);
+            } else {
+                pipeline.remove(PIPELINE_REQUEST_HANDLER);
+                pipeline.addAfter(PIPELINE_HTTP_RESPONSE_ENCODER, PIPELINE_REQUEST_HANDLER, this.httpGremlinEndpointHandler);
+            }
+        }
+        ctx.fireChannelRead(obj);
+    }
+
+    @Override
+    public void exceptionCaught(final ChannelHandlerContext ctx, final Throwable cause) {
+        ctx.close();
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c2643905/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/AbstractGremlinServerIntegrationTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/AbstractGremlinServerIntegrationTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/AbstractGremlinServerIntegrationTest.java
index b8bf51f..7c124f0 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/AbstractGremlinServerIntegrationTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/AbstractGremlinServerIntegrationTest.java
@@ -62,6 +62,28 @@ public abstract class AbstractGremlinServerIntegrationTest {
         startServer();
     }
 
+    public void setUp(final Settings settings) throws Exception {
+        logger.info("* Testing: " + name.getMethodName());
+        logger.info("* Epoll option enabled:" + GREMLIN_SERVER_EPOLL);
+
+        startServer(settings);
+    }
+
+    public void startServer(final Settings settings) throws Exception {
+        if (null == settings) {
+            startServer();
+        } else {
+            final Settings overridenSettings = overrideSettings(settings);
+            ServerTestHelper.rewritePathsInGremlinServerSettings(overridenSettings);
+            if (GREMLIN_SERVER_EPOLL) {
+                overridenSettings.useEpollEventLoop = true;
+            }
+            this.server = new GremlinServer(overridenSettings);
+            server.start().join();
+
+        }
+    }
+
     public void startServer() throws Exception {
         final InputStream stream = getSettingsInputStream();
         final Settings settings = Settings.read(stream);
@@ -83,7 +105,6 @@ public abstract class AbstractGremlinServerIntegrationTest {
 
     public void stopServer() throws Exception {
         server.stop().join();
-
         // reset the OpLoader processors so that they can get reconfigured on startup - Settings may have changed
         // between tests
         OpLoader.reset();

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c2643905/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java
index 769ee88..90017a9 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java
@@ -96,12 +96,6 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
             case "should401OnGETWithInvalidPasswordAuthorizationHeader":
             case "should401OnPOSTWithInvalidPasswordAuthorizationHeader":
             case "should200OnGETWithAuthorizationHeader":
-            case "should200OnPOSTWithAuthorizationHeaderExplicitHandlerSetting":
-                configureForAuthenticationWithHandlerClass(settings);
-                break;
-            case "should200OnPOSTWithAuthorizationHeader":
-                configureForAuthentication(settings);
-                break;
             case "should401OnPOSTWithInvalidPasswordAuthorizationHeaderOld":
             case "should200OnPOSTWithAuthorizationHeaderOld":
                 configureForAuthenticationOld(settings);

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c2643905/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
index 96ec17c..aad8131 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerIntegrateTest.java
@@ -56,7 +56,6 @@ import org.apache.tinkerpop.gremlin.server.op.AbstractEvalOpProcessor;
 import org.apache.tinkerpop.gremlin.server.op.standard.StandardOpProcessor;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.structure.T;
-import org.apache.tinkerpop.gremlin.server.channel.NioChannelizer;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex;
 import org.apache.tinkerpop.gremlin.structure.util.empty.EmptyGraph;
@@ -169,9 +168,6 @@ public class GremlinServerIntegrateTest extends AbstractGremlinServerIntegration
             case "shouldBatchResultsByTwos":
                 settings.resultIterationBatchSize = 2;
                 break;
-            case "shouldWorkOverNioTransport":
-                settings.channelizer = NioChannelizer.class.getName();
-                break;
             case "shouldEnableSsl":
             case "shouldEnableSslButFailIfClientConnectsWithoutIt":
                 settings.ssl = new Settings.SslSettings();
@@ -212,11 +208,6 @@ public class GremlinServerIntegrateTest extends AbstractGremlinServerIntegration
                 // Trust ONLY the server cert
                 settings.ssl.trustCertChainFile = SERVER_CRT;
             	break;
-            case "shouldStartWithDefaultSettings":
-                // test with defaults exception for port because we want to keep testing off of 8182
-                final Settings defaultSettings = new Settings();
-                defaultSettings.port = TestClientFactory.PORT;
-                return settings;
             case "shouldUseSimpleSandbox":
                 settings.scriptEngines.get("gremlin-groovy").config = getScriptEngineConfForSimpleSandbox();
                 break;
@@ -370,20 +361,6 @@ public class GremlinServerIntegrateTest extends AbstractGremlinServerIntegration
     }
 
     @Test
-    public void shouldStartWithDefaultSettings() {
-        // just quickly validate that results are returning given defaults. no graphs are config'd with defaults
-        // so just eval a groovy script.
-        final Cluster cluster = TestClientFactory.open();
-        final Client client = cluster.connect();
-
-        final ResultSet results = client.submit("[1,2,3,4,5,6,7,8,9]");
-        final AtomicInteger counter = new AtomicInteger(0);
-        results.stream().map(i -> i.get(Integer.class) * 2).forEach(i -> assertEquals(counter.incrementAndGet() * 2, Integer.parseInt(i.toString())));
-
-        cluster.close();
-    }
-
-    @Test
     public void shouldEnableSsl() {
         final Cluster cluster = TestClientFactory.build().enableSsl(true).create();
         final Client client = cluster.connect();
@@ -709,20 +686,6 @@ public class GremlinServerIntegrateTest extends AbstractGremlinServerIntegration
     }
 
     @Test
-    @SuppressWarnings("unchecked")
-    public void shouldWorkOverNioTransport() throws Exception {
-        try (SimpleClient client = TestClientFactory.createNioClient()) {
-            final RequestMessage request = RequestMessage.build(Tokens.OPS_EVAL)
-                    .addArg(Tokens.ARGS_GREMLIN, "[0,1,2,3,4,5,6,7,8,9,]").create();
-
-            final List<ResponseMessage> msg = client.submit(request);
-            assertEquals(1, msg.size());
-            final List<Integer> integers = (List<Integer>) msg.get(0).getResult().getData();
-            IntStream.rangeClosed(0, 9).forEach(i -> assertEquals(i, integers.get(i).intValue()));
-        }
-    }
-
-    @Test
     public void shouldNotThrowNoSuchElementException() throws Exception {
         try (SimpleClient client = TestClientFactory.createWebSocketClient()){
             // this should return "nothing" - there should be no exception

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c2643905/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/channel/AbstractGremlminServerChannelizerIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/channel/AbstractGremlminServerChannelizerIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/channel/AbstractGremlminServerChannelizerIntegrateTest.java
new file mode 100644
index 0000000..738ca89
--- /dev/null
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/channel/AbstractGremlminServerChannelizerIntegrateTest.java
@@ -0,0 +1,346 @@
+/*
+ * 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.server.channel;
+
+import org.apache.tinkerpop.gremlin.driver.AuthProperties;
+import org.apache.tinkerpop.gremlin.driver.Client;
+import org.apache.tinkerpop.gremlin.driver.Cluster;
+import org.apache.tinkerpop.gremlin.driver.Client;
+import org.apache.tinkerpop.gremlin.driver.simple.SimpleClient;
+import org.apache.tinkerpop.gremlin.driver.Channelizer;
+import org.apache.tinkerpop.gremlin.server.AbstractGremlinServerIntegrationTest;
+import org.apache.tinkerpop.gremlin.server.channel.WsAndHttpChannelizer;
+import org.apache.tinkerpop.gremlin.server.Settings;
+import org.apache.tinkerpop.gremlin.server.TestClientFactory;
+
+
+import org.apache.http.Consts;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.config.Registry;
+import org.apache.http.config.RegistryBuilder;
+import org.apache.http.conn.socket.ConnectionSocketFactory;
+import org.apache.http.conn.ssl.AllowAllHostnameVerifier;
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
+import org.apache.http.conn.ssl.SSLContextBuilder;
+import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
+import org.apache.http.conn.ssl.TrustStrategy;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
+import org.apache.http.util.EntityUtils;
+import org.apache.tinkerpop.shaded.jackson.databind.JsonNode;
+import org.apache.tinkerpop.shaded.jackson.databind.ObjectMapper;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.rules.ExternalResource;
+
+import java.io.File;
+import java.io.InputStream;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+import java.util.Base64;
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+import static org.apache.tinkerpop.gremlin.driver.AuthProperties.Property;
+
+abstract class AbstractGremlinServerChannelizerIntegrateTest extends AbstractGremlinServerIntegrationTest {
+
+    private final ObjectMapper mapper = new ObjectMapper();
+    private final Base64.Encoder encoder = Base64.getUrlEncoder();
+
+    protected static final String HTTP = "http";
+    protected static final String WS = "ws";
+    protected static final String HTTPS = "https";
+    protected static final String WSS = "wss";
+    protected static final String WS_AND_HTTP = "wsAndHttp";
+    protected static final String WSS_AND_HTTPS = "wssAndHttps";
+    protected static final String NIO = "nio";
+    protected static final String NIO_SECURE = "nioSecure";
+
+    public abstract String getProtocol();
+    public abstract String getSecureProtocol();
+    public abstract String getChannelizer();
+    public abstract Settings.AuthenticationSettings getAuthSettings();
+
+    /**
+     * Configure specific Gremlin Server settings for specific tests.
+     */
+    @Override
+    public Settings overrideSettings(final Settings settings) {
+        settings.channelizer = getChannelizer();
+        final String nameOfTest = name.getMethodName();
+        Settings.AuthenticationSettings authSettings = getAuthSettings();
+        switch (nameOfTest) {
+            case "shouldReturnResult":
+                break;
+            case "shouldWorkWithSSL":
+                settings.ssl = new Settings.SslSettings();
+                settings.ssl.enabled = true;
+                break;
+            case "shouldWorkWithAuth":
+                if (authSettings != null) {
+                    settings.authentication = getAuthSettings();
+                }
+                break;
+            case "shouldWorkWithSSLAndAuth":
+                settings.ssl = new Settings.SslSettings();
+                settings.ssl.enabled = true;
+                if (authSettings != null) {
+                    settings.authentication = getAuthSettings();
+                }
+                break;
+        }
+        return settings;
+    }
+
+    @Test
+    public void shouldReturnResult() throws Exception {
+        final CombinedTestClient client =  new CombinedTestClient(getProtocol());
+        try {
+            client.sendAndAssert("2+2", 4);
+        } finally {
+            client.close();
+        }
+    }
+
+    @Test
+    public void shouldWorkWithSSL() throws Exception {
+        final CombinedTestClient client =  new CombinedTestClient(getSecureProtocol());
+        try {
+            client.sendAndAssert("2+2", 4);
+        } finally {
+            client.close();
+        }
+    }
+
+    @Test
+    public void shouldWorkWithAuth() throws Exception {
+        CombinedTestClient client =  new CombinedTestClient(getProtocol());
+        try {
+            client.sendAndAssertUnauthorized("2+2", "stephen", "notpassword");
+            client.close();
+            client = new CombinedTestClient(getProtocol());
+            client.sendAndAssert("2+2", 4, "stephen", "password");
+            client.close();
+        } catch (Exception e) {
+            client.close();
+            throw e;
+        }
+    }
+
+    @Test
+    public void shouldWorkWithSSLAndAuth() throws Exception {
+        CombinedTestClient client =  new CombinedTestClient(getSecureProtocol());
+        try {
+            client.sendAndAssertUnauthorized("2+2", "stephen", "incorrect-password");
+            client.close();
+            client = new CombinedTestClient(getSecureProtocol());
+            client.sendAndAssert("2+2", 4, "stephen", "password");
+            client.close();
+        } catch (Exception e) {
+            client.close();
+            throw e;
+        }
+    }
+
+    public class CombinedTestClient {
+        private CloseableHttpClient httpClient = null;
+        private Cluster wsCluster = null;
+        private Cluster.Builder wsBuilder = null;
+        private Cluster nioCluster = null;
+        private Cluster.Builder nioBuilder = null;
+        private Client wsClient = null;
+        private Client.ClusteredClient nioClient = null;
+        private boolean secure = false;
+
+
+        public CombinedTestClient(final String protocol) throws Exception {
+            switch (protocol) {
+                case HTTP:
+                    httpClient = HttpClients.createDefault();
+                    break;
+                case HTTPS:
+                    httpClient = createSslHttpClient();
+                    secure = true;
+                    break;
+                case WS:
+                    this.wsBuilder = TestClientFactory.build();
+                    break;
+                case WSS:
+                    this.wsBuilder = TestClientFactory.build();
+                    secure = true;
+                    break;
+                case WS_AND_HTTP:
+                    httpClient = HttpClients.createDefault();
+                    this.wsBuilder = TestClientFactory.build();
+                    break;
+                case WSS_AND_HTTPS:
+                    httpClient = createSslHttpClient();
+                    secure = true;
+                    this.wsBuilder = TestClientFactory.build();
+                    break;
+                case NIO:
+                    this.nioBuilder = TestClientFactory.build();
+                    break;
+                case NIO_SECURE:
+                    this.nioBuilder = TestClientFactory.build();
+                    secure = true;
+                    break;
+            }
+        }
+
+        private CloseableHttpClient createSslHttpClient() throws Exception {
+            final SSLContextBuilder wsBuilder = new SSLContextBuilder();
+            wsBuilder.loadTrustMaterial(null, new TrustStrategy() {
+                @Override
+                public boolean isTrusted(X509Certificate[] chain,
+                    String authType) throws CertificateException {
+                    return true;
+                }
+            });
+            final SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(wsBuilder.build(),
+                new AllowAllHostnameVerifier());
+            //This winds up using a PoolingHttpClientConnectionManager so need to pass the
+            //RegistryBuilder
+            final Registry<ConnectionSocketFactory> registry = RegistryBuilder
+                .<ConnectionSocketFactory> create().register("https", sslsf)
+                .build();
+            final PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(registry);
+            return HttpClients
+                .custom()
+                .setConnectionManager(cm)
+                .build();
+
+        }
+
+        public void sendAndAssert(final String gremlin, Object result) throws Exception {
+            sendAndAssert(gremlin, result, null, null);
+        }
+
+        public void close() {
+            if (wsCluster != null) {
+                wsCluster.close();
+            }
+            if (nioCluster != null) {
+                nioCluster.close();
+            }
+        }
+
+        public void sendAndAssertUnauthorized(final String gremlin, final String username, final String password) throws Exception {
+            if (httpClient != null) {
+                final HttpPost httpPost = createPost(gremlin, username, password);
+                try (final CloseableHttpResponse response = httpClient.execute(httpPost)) {
+                    assertEquals(401, response.getStatusLine().getStatusCode());
+                }
+            }
+            if (wsBuilder != null) {
+                setWsClient(username, password);
+                try {
+                    wsClient.submit(gremlin).all().get();
+                    fail("Should not authorize on incorrect auth creds");
+                } catch(Exception e) {
+                    assertEquals("Username and/or password are incorrect", e.getCause().getMessage());
+                }
+            }
+            if (nioBuilder != null) {
+                setNioClient(username, password);
+                try {
+                    nioClient.submit(gremlin);
+                } catch(Exception e) {
+                    assertEquals("Username and/or password are incorrect", e.getCause().getMessage());
+                }
+            }
+
+        }
+
+        public void sendAndAssert(final String gremlin, final Object result, final String username, final String password) throws Exception {
+            if (httpClient != null) {
+                final HttpPost httpPost = createPost(gremlin, username, password);
+                try (final CloseableHttpResponse response = httpClient.execute(httpPost)) {
+                    assertEquals(200, response.getStatusLine().getStatusCode());
+                    assertEquals("application/json", response.getEntity().getContentType().getValue());
+                    final String json = EntityUtils.toString(response.getEntity());
+                    final JsonNode node = mapper.readTree(json);
+                    assertEquals(result, node.get("result").get("data").get(0).intValue());
+                }
+            }
+            if (wsBuilder != null) {
+                setWsClient(username, password);
+                assertEquals(result, wsClient.submit(gremlin).all().get().get(0).getInt());
+            }
+            if (nioClient != null) {
+                assertEquals(result, nioClient.submit(gremlin).all().get().get(0).getInt());
+            }
+        }
+
+        private void setNioClient(final String username, final String password) {
+            nioBuilder.channelizer(Channelizer.NioChannelizer.class.getName());
+            if (username != null && password != null) {
+                final AuthProperties authProps = new AuthProperties()
+                                                .with(Property.USERNAME, username)
+                                                .with(Property.PASSWORD, password);
+
+                nioCluster = nioBuilder.enableSsl(secure).authProperties(authProps).create();
+                nioClient = nioCluster.connect();
+            } else {
+                nioCluster = nioBuilder.enableSsl(secure).create();
+                nioClient = nioCluster.connect();
+            }
+        }
+
+        private void setWsClient(final String username, final String password) {
+            if (username != null && password != null) {
+                final AuthProperties authProps = new AuthProperties()
+                                                .with(Property.USERNAME, username)
+                                                .with(Property.PASSWORD, password);
+
+                wsCluster = wsBuilder.enableSsl(secure).authProperties(authProps).create();
+                wsClient = wsCluster.connect();
+            } else {
+                wsCluster = wsBuilder.enableSsl(secure).create();
+                wsClient = wsCluster.connect();
+            }
+        }
+
+        private HttpPost createPost(final String gremlin, final String username, final String password) {
+            String urlString = TestClientFactory.createURLString();
+            if (secure) {
+                urlString = urlString.replace("http", "https");
+            }
+            final HttpPost httpPost = new HttpPost(urlString);
+            httpPost.addHeader("Content-Type", "application/json");
+            if (username != null && password != null) {
+                final String auth = encoder.encodeToString((username + ":" + password).getBytes());
+                httpPost.addHeader("Authorization", "Basic " + auth);
+            }
+            final String jsonBody = String.format("{\"gremlin\": \"%s\"}", gremlin);
+            httpPost.setEntity(new StringEntity(jsonBody, Consts.UTF_8));
+            return httpPost;
+        }
+    }
+}
+

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c2643905/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/channel/HttpChannelizerIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/channel/HttpChannelizerIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/channel/HttpChannelizerIntegrateTest.java
new file mode 100644
index 0000000..22cb2da
--- /dev/null
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/channel/HttpChannelizerIntegrateTest.java
@@ -0,0 +1,56 @@
+/*
+ * 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.server.channel;
+
+
+import org.apache.tinkerpop.gremlin.server.auth.SimpleAuthenticator;
+import org.apache.tinkerpop.gremlin.server.Settings;
+
+import java.util.Map;
+import java.util.HashMap;
+
+public class HttpChannelizerIntegrateTest extends AbstractGremlinServerChannelizerIntegrateTest {
+
+    @Override
+    public String getProtocol() {
+        return HTTP;
+    }
+
+    @Override
+    public String getSecureProtocol() {
+        return HTTPS;
+    }
+
+    @Override
+    public String getChannelizer() {
+        return HttpChannelizer.class.getName();
+    }
+
+    @Override
+    public Settings.AuthenticationSettings getAuthSettings() {
+        final Settings.AuthenticationSettings authSettings = new Settings.AuthenticationSettings();
+        final Map<String,Object> authConfig = new HashMap<>();
+        authSettings.authenticator = SimpleAuthenticator.class.getName();
+        authConfig.put(SimpleAuthenticator.CONFIG_CREDENTIALS_DB, "conf/tinkergraph-credentials.properties");
+        authSettings.config = authConfig;
+
+        return authSettings;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c2643905/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/channel/NioChannelizerIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/channel/NioChannelizerIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/channel/NioChannelizerIntegrateTest.java
new file mode 100644
index 0000000..8388b40
--- /dev/null
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/channel/NioChannelizerIntegrateTest.java
@@ -0,0 +1,56 @@
+/*
+ * 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.server.channel;
+
+
+import org.apache.tinkerpop.gremlin.server.auth.SimpleAuthenticator;
+import org.apache.tinkerpop.gremlin.server.Settings;
+
+import java.util.Map;
+import java.util.HashMap;
+
+public class NioChannelizerIntegrateTest extends AbstractGremlinServerChannelizerIntegrateTest {
+
+    @Override
+    public String getProtocol() {
+        return NIO;
+    }
+
+    @Override
+    public String getSecureProtocol() {
+        return NIO_SECURE;
+    }
+
+    @Override
+    public String getChannelizer() {
+        return NioChannelizer.class.getName();
+    }
+
+    @Override
+    public Settings.AuthenticationSettings getAuthSettings() {
+        final Settings.AuthenticationSettings authSettings = new Settings.AuthenticationSettings();
+        final Map<String,Object> authConfig = new HashMap<>();
+        authSettings.authenticator = SimpleAuthenticator.class.getName();
+        authConfig.put(SimpleAuthenticator.CONFIG_CREDENTIALS_DB, "conf/tinkergraph-credentials.properties");
+        authSettings.config = authConfig;
+
+        return authSettings;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c2643905/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/channel/WebSocketChannelizerIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/channel/WebSocketChannelizerIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/channel/WebSocketChannelizerIntegrateTest.java
new file mode 100644
index 0000000..9ae600e
--- /dev/null
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/channel/WebSocketChannelizerIntegrateTest.java
@@ -0,0 +1,56 @@
+/*
+ * 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.server.channel;
+
+
+import org.apache.tinkerpop.gremlin.server.auth.SimpleAuthenticator;
+import org.apache.tinkerpop.gremlin.server.Settings;
+
+import java.util.Map;
+import java.util.HashMap;
+
+public class WebSocketChannelizerIntegrateTest extends AbstractGremlinServerChannelizerIntegrateTest {
+
+    @Override
+    public String getProtocol() {
+        return WS;
+    }
+
+    @Override
+    public String getSecureProtocol() {
+        return WSS;
+    }
+
+    @Override
+    public String getChannelizer() {
+        return WebSocketChannelizer.class.getName();
+    }
+
+    @Override
+    public Settings.AuthenticationSettings getAuthSettings() {
+        final Settings.AuthenticationSettings authSettings = new Settings.AuthenticationSettings();
+        final Map<String,Object> authConfig = new HashMap<>();
+        authSettings.authenticator = SimpleAuthenticator.class.getName();
+        authConfig.put(SimpleAuthenticator.CONFIG_CREDENTIALS_DB, "conf/tinkergraph-credentials.properties");
+        authSettings.config = authConfig;
+
+        return authSettings;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/c2643905/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/channel/WsAndHttpChannelizerIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/channel/WsAndHttpChannelizerIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/channel/WsAndHttpChannelizerIntegrateTest.java
new file mode 100644
index 0000000..0bda809
--- /dev/null
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/channel/WsAndHttpChannelizerIntegrateTest.java
@@ -0,0 +1,58 @@
+/*
+ * 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.server.channel;
+
+
+import org.apache.tinkerpop.gremlin.server.auth.SimpleAuthenticator;
+import org.apache.tinkerpop.gremlin.server.handler.SaslAndHttpBasicAuthenticationHandler;
+import org.apache.tinkerpop.gremlin.server.Settings;
+
+import java.util.Map;
+import java.util.HashMap;
+
+public class WsAndHttpChannelizerIntegrateTest extends AbstractGremlinServerChannelizerIntegrateTest {
+
+    @Override
+    public String getProtocol() {
+        return WS_AND_HTTP;
+    }
+
+    @Override
+    public String getSecureProtocol() {
+        return WSS_AND_HTTPS;
+    }
+
+    @Override
+    public String getChannelizer() {
+        return WsAndHttpChannelizer.class.getName();
+    }
+
+    @Override
+    public Settings.AuthenticationSettings getAuthSettings() {
+        final Settings.AuthenticationSettings authSettings = new Settings.AuthenticationSettings();
+        final Map<String,Object> authConfig = new HashMap<>();
+        authSettings.authenticator = SimpleAuthenticator.class.getName();
+        authSettings.authenticationHandler = SaslAndHttpBasicAuthenticationHandler.class.getName();
+        authConfig.put(SimpleAuthenticator.CONFIG_CREDENTIALS_DB, "conf/tinkergraph-credentials.properties");
+        authSettings.config = authConfig;
+
+        return authSettings;
+    }
+
+}


[38/50] [abbrv] tinkerpop git commit: Minor improvement to http requests that were too large

Posted by sp...@apache.org.
Minor improvement to http requests that were too large

Added a test to validate a 413 is returned if the request payload exceeds the maxContentLength CTR


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

Branch: refs/heads/TINKERPOP-1716
Commit: 5335f4af975ecabe9f5138f9bc5d292966b34feb
Parents: 6e86bf5
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Mon Jul 17 06:53:03 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Jul 17 06:53:03 2017 -0400

----------------------------------------------------------------------
 .../server/handler/HttpGremlinEndpointHandler.java |  9 ++++++++-
 .../server/GremlinServerHttpIntegrateTest.java     | 17 +++++++++++++++++
 2 files changed, 25 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5335f4af/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/HttpGremlinEndpointHandler.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/HttpGremlinEndpointHandler.java b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/HttpGremlinEndpointHandler.java
index 2bbb9f7..75c97a0 100644
--- a/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/HttpGremlinEndpointHandler.java
+++ b/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/HttpGremlinEndpointHandler.java
@@ -20,6 +20,7 @@ package org.apache.tinkerpop.gremlin.server.handler;
 
 import com.codahale.metrics.Meter;
 import com.codahale.metrics.Timer;
+import io.netty.handler.codec.TooLongFrameException;
 import org.apache.commons.lang.exception.ExceptionUtils;
 import org.apache.tinkerpop.gremlin.driver.MessageSerializer;
 import org.apache.tinkerpop.gremlin.driver.Tokens;
@@ -34,6 +35,7 @@ import org.apache.tinkerpop.gremlin.server.Settings;
 import org.apache.tinkerpop.gremlin.server.util.MetricManager;
 import org.apache.tinkerpop.gremlin.structure.Graph;
 import org.apache.tinkerpop.gremlin.util.function.FunctionUtils;
+import org.apache.tinkerpop.gremlin.util.function.ThrowingBiConsumer;
 import org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils;
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
@@ -279,7 +281,12 @@ public class HttpGremlinEndpointHandler extends ChannelInboundHandlerAdapter {
     @Override
     public void exceptionCaught(final ChannelHandlerContext ctx, final Throwable cause) {
         logger.error("Error processing HTTP Request", cause);
-        sendError(ctx, INTERNAL_SERVER_ERROR, cause.getCause().getMessage());
+        final Throwable t = null == cause.getCause() ? cause : cause.getCause();
+        if (t instanceof TooLongFrameException) {
+            sendError(ctx, HttpResponseStatus.REQUEST_ENTITY_TOO_LARGE, t.getMessage() + " - increase the maxContentLength");
+        } else {
+            sendError(ctx, INTERNAL_SERVER_ERROR, t.getMessage());
+        }
         ctx.close();
     }
 

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/5335f4af/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java
----------------------------------------------------------------------
diff --git a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java
index 90017a9..baf4c02 100644
--- a/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java
+++ b/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/GremlinServerHttpIntegrateTest.java
@@ -18,6 +18,7 @@
  */
 package org.apache.tinkerpop.gremlin.server;
 
+import org.apache.commons.lang3.RandomStringUtils;
 import org.apache.tinkerpop.gremlin.driver.Tokens;
 import org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0;
 import org.apache.tinkerpop.gremlin.server.auth.SimpleAuthenticator;
@@ -66,6 +67,9 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
         settings.channelizer = HttpChannelizer.class.getName();
         final String nameOfTest = name.getMethodName();
         switch (nameOfTest) {
+            case "should413OnPostWithResultTooLarge":
+                settings.maxContentLength = 31;
+                break;
             case "should200OnGETWithGremlinQueryStringArgumentWithIteratorResult":
             case "should200OnPOSTWithGremlinJsonEndcodedBodyWithIteratorResult":
             case "should200OnPOSTWithGremlinJsonEndcodedBodyWithIteratorResultAndAliases":
@@ -146,6 +150,19 @@ public class GremlinServerHttpIntegrateTest extends AbstractGremlinServerIntegra
     }
 
     @Test
+    public void should413OnPostWithResultTooLarge() throws Exception {
+        final CloseableHttpClient httpclient = HttpClients.createDefault();
+        final HttpPost httppost = new HttpPost(TestClientFactory.createURLString());
+        httppost.addHeader("Content-Type", "application/json");
+        final String bigPost = RandomStringUtils.random(32);
+        httppost.setEntity(new StringEntity("{\"gremlin\":\""+ bigPost + "\", \"bindings\":{\"x\":\"10\"}}", Consts.UTF_8));
+
+        try (final CloseableHttpResponse response = httpclient.execute(httppost)) {
+            assertEquals(413, response.getStatusLine().getStatusCode());
+        }
+    }
+
+    @Test
     public void should401OnGETWithNoAuthorizationHeader() throws Exception {
         final CloseableHttpClient httpclient = HttpClients.createDefault();
         final HttpGet httpget = new HttpGet(TestClientFactory.createURLString("?gremlin=1-1"));


[20/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/eebc95d4
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/eebc95d4
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/eebc95d4

Branch: refs/heads/TINKERPOP-1716
Commit: eebc95d49d6bab9cdd9e51dfbb1317dfe1a3b72e
Parents: 554595f
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Thu Jun 29 07:03:03 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Thu Jun 29 07:03:03 2017 -0400

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


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/eebc95d4/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index b438248..1c14ca6 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -28,6 +28,7 @@ TinkerPop 3.2.6 (Release Date: NOT OFFICIALLY RELEASED YET)
 
 This release also includes changes from <<release-3-1-8, 3.1.8>>.
 
+* Added Gremlin.Net.
 * Deprecated the `useMapperFromGraph` configuration option for Gremlin Server serializers.
 * Added annotations to the traversal metrics pretty print.
 * `EdgeVertexStep` is no longer final and can be extended by providers.


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

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


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

Branch: refs/heads/TINKERPOP-1716
Commit: 42c3f4077a15d8fe981c84b37f7e99f9241e0c02
Parents: 04d4e90 f97a21c
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Fri Jul 14 12:05:57 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Fri Jul 14 12:05:57 2017 -0400

----------------------------------------------------------------------
 CHANGELOG.asciidoc                                              | 1 +
 docs/src/reference/gremlin-applications.asciidoc                | 1 -
 docs/src/reference/gremlin-variants.asciidoc                    | 1 -
 .../gremlin/driver/ser/GryoLiteMessageSerializerV1d0.java       | 3 +++
 .../tinkerpop/gremlin/driver/ser/GryoMessageSerializerV1d0.java | 2 --
 .../gremlin/python/driver/gremlin-server-modern-secure-py.yaml  | 1 -
 gremlin-server/conf/gremlin-server-classic.yaml                 | 1 -
 gremlin-server/conf/gremlin-server-modern-py.yaml               | 1 -
 gremlin-server/conf/gremlin-server-modern-readonly.yaml         | 1 -
 gremlin-server/conf/gremlin-server-modern.yaml                  | 1 -
 gremlin-server/conf/gremlin-server-neo4j.yaml                   | 1 -
 gremlin-server/conf/gremlin-server-secure.yaml                  | 1 -
 gremlin-server/conf/gremlin-server-spark.yaml                   | 1 -
 gremlin-server/conf/gremlin-server.yaml                         | 1 -
 .../apache/tinkerpop/gremlin/server/AbstractChannelizer.java    | 5 +++--
 15 files changed, 7 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/42c3f407/CHANGELOG.asciidoc
----------------------------------------------------------------------
diff --cc CHANGELOG.asciidoc
index f36fe33,582af8f..1d57828
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@@ -28,9 -28,8 +28,10 @@@ 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.
  * `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/42c3f407/docs/src/reference/gremlin-applications.asciidoc
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/42c3f407/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/AbstractChannelizer.java
----------------------------------------------------------------------


[10/50] [abbrv] tinkerpop git commit: Let Gremlin-DotNet include the documentation comments

Posted by sp...@apache.org.
Let Gremlin-DotNet include the documentation comments

Every build now generates an XML document containing the documentation comments which will be displayed to the user with IntelliSense. The warning about missing comments had to be disabled for some files as we currently just don't have comments for those.


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

Branch: refs/heads/TINKERPOP-1716
Commit: 8468f4211a16674decac2ad7fe15a3a3985a9b9f
Parents: 7369021
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Thu Jun 15 19:00:38 2017 +0200
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Wed Jun 28 15:13:12 2017 -0400

----------------------------------------------------------------------
 gremlin-dotnet/glv/AnonymousTraversal.template                   | 4 ++++
 gremlin-dotnet/glv/Enum.template                                 | 4 ++++
 gremlin-dotnet/glv/GraphTraversal.template                       | 4 ++++
 gremlin-dotnet/glv/GraphTraversalSource.template                 | 4 ++++
 gremlin-dotnet/glv/P.template                                    | 4 ++++
 gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj                | 1 +
 gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Barrier.cs      | 4 ++++
 gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs  | 4 ++++
 gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Column.cs       | 4 ++++
 gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Direction.cs    | 4 ++++
 .../src/Gremlin.Net/Process/Traversal/GraphSONVersion.cs         | 4 ++++
 .../src/Gremlin.Net/Process/Traversal/GraphTraversal.cs          | 4 ++++
 .../src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs    | 4 ++++
 gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GryoVersion.cs  | 4 ++++
 gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Operator.cs     | 4 ++++
 gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs        | 4 ++++
 gremlin-dotnet/src/Gremlin.Net/Process/Traversal/P.cs            | 4 ++++
 gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pick.cs         | 4 ++++
 gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs          | 4 ++++
 gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Scope.cs        | 4 ++++
 .../Traversal/Strategy/Decoration/HaltedTraverserStrategy.cs     | 2 ++
 .../Traversal/Strategy/Decoration/VertexProgramStrategy.cs       | 2 ++
 .../Traversal/Strategy/Finalization/MatchAlgorithmStrategy.cs    | 2 ++
 .../Traversal/Strategy/Optimization/GraphFilterStrategy.cs       | 2 ++
 .../Traversal/Strategy/Optimization/OrderLimitStrategy.cs        | 2 ++
 .../Traversal/Strategy/Optimization/PathRetractionStrategy.cs    | 2 ++
 .../Traversal/Strategy/Optimization/RepeatUnrollStrategy.cs      | 2 ++
 gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs            | 4 ++++
 gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs           | 4 ++++
 29 files changed, 99 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8468f421/gremlin-dotnet/glv/AnonymousTraversal.template
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/glv/AnonymousTraversal.template b/gremlin-dotnet/glv/AnonymousTraversal.template
index 9bc7257..216b6d4 100644
--- a/gremlin-dotnet/glv/AnonymousTraversal.template
+++ b/gremlin-dotnet/glv/AnonymousTraversal.template
@@ -27,6 +27,8 @@ using Gremlin.Net.Structure;
 // THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
+#pragma warning disable 1591
+
     /// <summary>
     ///     An anonymous <see cref="GraphTraversal{SType, EType}" />.
     /// </summary>
@@ -48,5 +50,7 @@ namespace Gremlin.Net.Process.Traversal
             return new GraphTraversal<object, object>().<%= toCSharpMethodName.call(method.methodName) %><%= method.tParam %>(args);
         }
 <% } %>
+
+#pragma warning restore 1591
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8468f421/gremlin-dotnet/glv/Enum.template
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/glv/Enum.template b/gremlin-dotnet/glv/Enum.template
index 25537f4..1fddab1 100644
--- a/gremlin-dotnet/glv/Enum.template
+++ b/gremlin-dotnet/glv/Enum.template
@@ -24,8 +24,12 @@
 // THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
+#pragma warning disable 1591
+
     public enum <%= enumClass.simpleName %>
     {
         <%= constants %>
     }
+    
+#pragma warning restore 1591
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8468f421/gremlin-dotnet/glv/GraphTraversal.template
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/glv/GraphTraversal.template b/gremlin-dotnet/glv/GraphTraversal.template
index d514e16..ab96a17 100644
--- a/gremlin-dotnet/glv/GraphTraversal.template
+++ b/gremlin-dotnet/glv/GraphTraversal.template
@@ -27,6 +27,8 @@ using Gremlin.Net.Structure;
 // THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
+#pragma warning disable 1591
+
     /// <summary>
     ///     Graph traversals are the primary way in which graphs are processed.
     /// </summary>
@@ -73,4 +75,6 @@ namespace Gremlin.Net.Process.Traversal
 <% } %>
 
     }
+    
+#pragma warning restore 1591
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8468f421/gremlin-dotnet/glv/GraphTraversalSource.template
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/glv/GraphTraversalSource.template b/gremlin-dotnet/glv/GraphTraversalSource.template
index 7a945f8..0d98433 100644
--- a/gremlin-dotnet/glv/GraphTraversalSource.template
+++ b/gremlin-dotnet/glv/GraphTraversalSource.template
@@ -30,6 +30,8 @@ using Gremlin.Net.Structure;
 // THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
+#pragma warning disable 1591
+
     /// <summary>
     ///     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.
@@ -125,4 +127,6 @@ namespace Gremlin.Net.Process.Traversal
         }
 <% } %>
     }
+    
+#pragma warning restore 1591
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8468f421/gremlin-dotnet/glv/P.template
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/glv/P.template b/gremlin-dotnet/glv/P.template
index 6a62414..f187cbb 100644
--- a/gremlin-dotnet/glv/P.template
+++ b/gremlin-dotnet/glv/P.template
@@ -24,6 +24,8 @@
 // THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
+#pragma warning disable 1591
+
     /// <summary>
     ///     A <see cref="P" /> is a predicate of the form Func&lt;object, bool&gt;.
     ///     That is, given some object, return true or false.
@@ -38,4 +40,6 @@ namespace Gremlin.Net.Process.Traversal
         }
 <% } %>
     }
+
+#pragma warning restore 1591
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8468f421/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 124bb96..93f135c 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
+++ b/gremlin-dotnet/src/Gremlin.Net/Gremlin.Net.csproj
@@ -3,6 +3,7 @@
   <PropertyGroup Label="Build">
     <TargetFramework>netstandard1.3</TargetFramework>
     <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
+    <GenerateDocumentationFile>true</GenerateDocumentationFile>
   </PropertyGroup>
 
   <PropertyGroup Label="Package">

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8468f421/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 aa4040a..555d372 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Barrier.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Barrier.cs
@@ -24,8 +24,12 @@
 // THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
+#pragma warning disable 1591
+
     public enum Barrier
     {
         NormSack
     }
+    
+#pragma warning restore 1591
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8468f421/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 0296380..c31a142 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Cardinality.cs
@@ -24,8 +24,12 @@
 // THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
+#pragma warning disable 1591
+
     public enum Cardinality
     {
         List,Set,Single
     }
+    
+#pragma warning restore 1591
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8468f421/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 15e248c..adcf738 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Column.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Column.cs
@@ -24,8 +24,12 @@
 // THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
+#pragma warning disable 1591
+
     public enum Column
     {
         Keys,Values
     }
+    
+#pragma warning restore 1591
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8468f421/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 27d3934..d379263 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Direction.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Direction.cs
@@ -24,8 +24,12 @@
 // THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
+#pragma warning disable 1591
+
     public enum Direction
     {
         Both,In,Out
     }
+    
+#pragma warning restore 1591
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8468f421/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 cc66fba..6869ba5 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphSONVersion.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphSONVersion.cs
@@ -24,8 +24,12 @@
 // THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
+#pragma warning disable 1591
+
     public enum GraphSONVersion
     {
         V1_0,V2_0
     }
+    
+#pragma warning restore 1591
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8468f421/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 34f5bfb..4390c79 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversal.cs
@@ -27,6 +27,8 @@ using Gremlin.Net.Structure;
 // THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
+#pragma warning disable 1591
+
     /// <summary>
     ///     Graph traversals are the primary way in which graphs are processed.
     /// </summary>
@@ -946,4 +948,6 @@ namespace Gremlin.Net.Process.Traversal
 
 
     }
+    
+#pragma warning restore 1591
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8468f421/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 317afad..e0cd25a 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GraphTraversalSource.cs
@@ -30,6 +30,8 @@ using Gremlin.Net.Structure;
 // THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
+#pragma warning disable 1591
+
     /// <summary>
     ///     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.
@@ -187,4 +189,6 @@ namespace Gremlin.Net.Process.Traversal
         }
 
     }
+    
+#pragma warning restore 1591
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8468f421/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 76a263d..5ee7358 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GryoVersion.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/GryoVersion.cs
@@ -24,8 +24,12 @@
 // THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
+#pragma warning disable 1591
+
     public enum GryoVersion
     {
         V1_0
     }
+    
+#pragma warning restore 1591
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8468f421/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 d98d9ba..1ebc581 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Operator.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Operator.cs
@@ -24,8 +24,12 @@
 // THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
+#pragma warning disable 1591
+
     public enum Operator
     {
         AddAll,And,Assign,Div,Max,Min,Minus,Mult,Or,Sum,SumLong
     }
+    
+#pragma warning restore 1591
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8468f421/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 2e0c4ea..0fdbbf9 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Order.cs
@@ -24,8 +24,12 @@
 // THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
+#pragma warning disable 1591
+
     public enum Order
     {
         Decr,Incr,KeyDecr,KeyIncr,Shuffle,ValueDecr,ValueIncr
     }
+    
+#pragma warning restore 1591
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8468f421/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 e017402..89bdc29 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/P.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/P.cs
@@ -24,6 +24,8 @@
 // THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
+#pragma warning disable 1591
+
     /// <summary>
     ///     A <see cref="P" /> is a predicate of the form Func&lt;object, bool&gt;.
     ///     That is, given some object, return true or false.
@@ -110,4 +112,6 @@ namespace Gremlin.Net.Process.Traversal
         }
 
     }
+
+#pragma warning restore 1591
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8468f421/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 2231cda..1f8c2d9 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pick.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pick.cs
@@ -24,8 +24,12 @@
 // THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
+#pragma warning disable 1591
+
     public enum Pick
     {
         Any,None
     }
+    
+#pragma warning restore 1591
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8468f421/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 01c6e1a..f0975d2 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Pop.cs
@@ -24,8 +24,12 @@
 // THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
+#pragma warning disable 1591
+
     public enum Pop
     {
         All,First,Last
     }
+    
+#pragma warning restore 1591
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8468f421/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 e443252..67fa970 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Scope.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Scope.cs
@@ -24,8 +24,12 @@
 // THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
+#pragma warning disable 1591
+
     public enum Scope
     {
         Global,Local
     }
+    
+#pragma warning restore 1591
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8468f421/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
index 98f949c..688ef92 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/HaltedTraverserStrategy.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/HaltedTraverserStrategy.cs
@@ -23,6 +23,7 @@
 
 namespace Gremlin.Net.Process.Traversal.Strategy.Decoration
 {
+#pragma warning disable 1591
     public class HaltedTraverserStrategy : AbstractTraversalStrategy
     {
         public HaltedTraverserStrategy(string haltedTraverserFactoryName = null)
@@ -31,4 +32,5 @@ namespace Gremlin.Net.Process.Traversal.Strategy.Decoration
                 Configuration["haltedTraverserFactory"] = haltedTraverserFactoryName;
         }
     }
+#pragma warning restore 1591
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8468f421/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
index 1c5b5f2..61df1c1 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/VertexProgramStrategy.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Decoration/VertexProgramStrategy.cs
@@ -26,6 +26,7 @@ using System.Linq;
 
 namespace Gremlin.Net.Process.Traversal.Strategy.Decoration
 {
+#pragma warning disable 1591
     public class VertexProgramStrategy : AbstractTraversalStrategy
     {
         public VertexProgramStrategy(string graphComputer = null, int? workers = null, string persist = null,
@@ -47,4 +48,5 @@ namespace Gremlin.Net.Process.Traversal.Strategy.Decoration
             configuration?.ToList().ForEach(x => Configuration[x.Key] = x.Value);
         }
     }
+#pragma warning restore 1591
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8468f421/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
index 11a9e2c..d066c8a 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Finalization/MatchAlgorithmStrategy.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Finalization/MatchAlgorithmStrategy.cs
@@ -23,6 +23,7 @@
 
 namespace Gremlin.Net.Process.Traversal.Strategy.Finalization
 {
+#pragma warning disable 1591
     public class MatchAlgorithmStrategy : AbstractTraversalStrategy
     {
         public MatchAlgorithmStrategy(string matchAlgorithm = null)
@@ -31,4 +32,5 @@ namespace Gremlin.Net.Process.Traversal.Strategy.Finalization
                 Configuration["matchAlgorithm"] = matchAlgorithm;
         }
     }
+#pragma warning restore 1591
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8468f421/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
index aaaee2c..7d29b0d 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/GraphFilterStrategy.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/GraphFilterStrategy.cs
@@ -23,7 +23,9 @@
 
 namespace Gremlin.Net.Process.Traversal.Strategy.Optimization
 {
+#pragma warning disable 1591
     public class GraphFilterStrategy : AbstractTraversalStrategy
     {
     }
+#pragma warning restore 1591
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8468f421/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
index 82a8df9..c8b4ec4 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/OrderLimitStrategy.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/OrderLimitStrategy.cs
@@ -23,7 +23,9 @@
 
 namespace Gremlin.Net.Process.Traversal.Strategy.Optimization
 {
+#pragma warning disable 1591
     public class OrderLimitStrategy : AbstractTraversalStrategy
     {
     }
+#pragma warning restore 1591
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8468f421/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
index e54fbb5..03978e7 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/PathRetractionStrategy.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/PathRetractionStrategy.cs
@@ -23,7 +23,9 @@
 
 namespace Gremlin.Net.Process.Traversal.Strategy.Optimization
 {
+#pragma warning disable 1591
     public class PathRetractionStrategy : AbstractTraversalStrategy
     {
     }
+#pragma warning restore 1591
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8468f421/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
index 6cac454..b9e3fc2 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/RepeatUnrollStrategy.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Strategy/Optimization/RepeatUnrollStrategy.cs
@@ -23,7 +23,9 @@
 
 namespace Gremlin.Net.Process.Traversal.Strategy.Optimization
 {
+#pragma warning disable 1591
     public class RepeatUnrollStrategy : AbstractTraversalStrategy
     {
     }
+#pragma warning restore 1591
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8468f421/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 f914916..b580aab 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/T.cs
@@ -24,8 +24,12 @@
 // THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
+#pragma warning disable 1591
+
     public enum T
     {
         Id,Key,Label,Value
     }
+    
+#pragma warning restore 1591
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8468f421/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..0574d24 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/__.cs
@@ -27,6 +27,8 @@ using Gremlin.Net.Structure;
 // THIS IS A GENERATED FILE - DO NOT MODIFY THIS FILE DIRECTLY - see pom.xml
 namespace Gremlin.Net.Process.Traversal
 {
+#pragma warning disable 1591
+
     /// <summary>
     ///     An anonymous <see cref="GraphTraversal{SType, EType}" />.
     /// </summary>
@@ -768,5 +770,7 @@ namespace Gremlin.Net.Process.Traversal
             return new GraphTraversal<object, object>().Where(args);
         }
 
+
+#pragma warning restore 1591
     }
 }
\ No newline at end of file