You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by fl...@apache.org on 2018/03/18 12:03:38 UTC
[05/18] tinkerpop git commit: TINKERPOP-1854 Make Lambda
implementation internal
TINKERPOP-1854 Make Lambda implementation internal
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/7fbb7790
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/7fbb7790
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/7fbb7790
Branch: refs/heads/tp32
Commit: 7fbb779010f028c8f3df6935969d29afefe0fb0f
Parents: 0cdaa3a
Author: Florian Hockmann <fh...@florian-hockmann.de>
Authored: Thu Mar 15 18:26:40 2018 +0100
Committer: Florian Hockmann <fh...@florian-hockmann.de>
Committed: Thu Mar 15 18:26:40 2018 +0100
----------------------------------------------------------------------
docs/src/reference/gremlin-variants.asciidoc | 4 +-
.../src/Gremlin.Net/Process/Traversal/Lambda.cs | 45 +++++++-------------
.../Process/Traversal/StringBasedLambda.cs | 42 ++++++++++++++++++
.../Structure/IO/GraphSON/GraphSONWriter.cs | 2 +-
.../Structure/IO/GraphSON/LambdaSerializer.cs | 43 -------------------
.../IO/GraphSON/StringBasedLambdaSerializer.cs | 43 +++++++++++++++++++
6 files changed, 104 insertions(+), 75 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7fbb7790/docs/src/reference/gremlin-variants.asciidoc
----------------------------------------------------------------------
diff --git a/docs/src/reference/gremlin-variants.asciidoc b/docs/src/reference/gremlin-variants.asciidoc
index bf8c8b1..c19160a 100644
--- a/docs/src/reference/gremlin-variants.asciidoc
+++ b/docs/src/reference/gremlin-variants.asciidoc
@@ -451,8 +451,8 @@ g.V().Out().Map<int>(Lambda.Python("lambda x: len(x.get().value('name'))")).Sum<
<1> `Lambda.Groovy()` can be used to create a Groovy lambda.
<2> `Lambda.Python()` can be used to create a Python lambda.
-The `Lambda` class implements interfaces like `IFunction` and `IPredicate` that mirror their Java counterparts which makes it possible
-to use lambdas with Gremlin.Net for the same steps as in Gremlin-Java.
+The `ILambda` interface returned by these two methods inherits interfaces like `IFunction` and `IPredicate` that mirror
+their Java counterparts which makes it possible to use lambdas with Gremlin.Net for the same steps as in Gremlin-Java.
[[gremlin-javascript]]
== Gremlin-JavaScript
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7fbb7790/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Lambda.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Lambda.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Lambda.cs
index 21849ef..12eb016 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Lambda.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/Lambda.cs
@@ -26,47 +26,34 @@ namespace Gremlin.Net.Process.Traversal
/// <summary>
/// Represents a lambda.
/// </summary>
- public class Lambda : IFunction, IBiFunction, IPredicate, IUnaryOperator, IBinaryOperator, IComparator, IConsumer,
- ISupplier
+ public interface ILambda : IFunction, IBiFunction, IPredicate, IUnaryOperator, IBinaryOperator, IComparator,
+ IConsumer, ISupplier
{
- private const int DefaultArgument = -1;
-
- private Lambda(string expression, string language)
- {
- LambdaExpression = expression;
- Language = language;
- }
-
- /// <summary>
- /// Gets the lambda expression.
- /// </summary>
- public string LambdaExpression { get; }
-
- /// <summary>
- /// Gets the language of this lambda.
- /// </summary>
- public string Language { get; }
-
- internal object Arguments => DefaultArgument;
+ }
+ /// <summary>
+ /// Provides methods to create lambdas.
+ /// </summary>
+ public static class Lambda
+ {
/// <summary>
- /// Creates a new Groovy <see cref="Lambda"/>.
+ /// Creates a new Groovy lambda.
/// </summary>
/// <param name="expression">The lambda expression.</param>
- /// <returns>The created <see cref="Lambda"/>.</returns>
- public static Lambda Groovy(string expression)
+ /// <returns>The created lambda.</returns>
+ public static ILambda Groovy(string expression)
{
- return new Lambda(expression, "gremlin-groovy");
+ return new StringBasedLambda(expression, "gremlin-groovy");
}
/// <summary>
- /// Creates a new Python <see cref="Lambda"/>.
+ /// Creates a new Python lambda.
/// </summary>
/// <param name="expression">The lambda expression.</param>
- /// <returns>The created <see cref="Lambda"/>.</returns>
- public static Lambda Python(string expression)
+ /// <returns>The created lambda.</returns>
+ public static ILambda Python(string expression)
{
- return new Lambda(expression, "gremlin-python");
+ return new StringBasedLambda(expression, "gremlin-python");
}
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7fbb7790/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/StringBasedLambda.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/StringBasedLambda.cs b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/StringBasedLambda.cs
new file mode 100644
index 0000000..e27b474
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/StringBasedLambda.cs
@@ -0,0 +1,42 @@
+#region License
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#endregion
+
+namespace Gremlin.Net.Process.Traversal
+{
+ internal class StringBasedLambda : ILambda
+ {
+ private const int DefaultArgument = -1;
+
+ public StringBasedLambda(string expression, string language)
+ {
+ LambdaExpression = expression;
+ Language = language;
+ }
+
+ public string LambdaExpression { get; }
+
+ public string Language { get; }
+
+ public object Arguments => DefaultArgument;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7fbb7790/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONWriter.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONWriter.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONWriter.cs
index 826d608..0ef2bde 100644
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONWriter.cs
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/GraphSONWriter.cs
@@ -60,7 +60,7 @@ namespace Gremlin.Net.Structure.IO.GraphSON
{typeof(Property), new PropertySerializer()},
{typeof(VertexProperty), new VertexPropertySerializer()},
{typeof(AbstractTraversalStrategy), new TraversalStrategySerializer()},
- {typeof(Lambda), new LambdaSerializer()}
+ {typeof(ILambda), new StringBasedLambdaSerializer()}
};
/// <summary>
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7fbb7790/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/LambdaSerializer.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/LambdaSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/LambdaSerializer.cs
deleted file mode 100644
index fa739fd..0000000
--- a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/LambdaSerializer.cs
+++ /dev/null
@@ -1,43 +0,0 @@
-#region License
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-#endregion
-
-using System.Collections.Generic;
-using Gremlin.Net.Process.Traversal;
-
-namespace Gremlin.Net.Structure.IO.GraphSON
-{
- internal class LambdaSerializer : IGraphSONSerializer
- {
- public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
- {
- Lambda lambda = objectData;
- var valueDict = new Dictionary<string, dynamic>
- {
- {"script", lambda.LambdaExpression},
- {"language", lambda.Language},
- {"arguments", lambda.Arguments}
- };
- return GraphSONUtil.ToTypedValue(nameof(Lambda), valueDict);
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/7fbb7790/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/StringBasedLambdaSerializer.cs
----------------------------------------------------------------------
diff --git a/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/StringBasedLambdaSerializer.cs b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/StringBasedLambdaSerializer.cs
new file mode 100644
index 0000000..2e66367
--- /dev/null
+++ b/gremlin-dotnet/src/Gremlin.Net/Structure/IO/GraphSON/StringBasedLambdaSerializer.cs
@@ -0,0 +1,43 @@
+#region License
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+#endregion
+
+using System.Collections.Generic;
+using Gremlin.Net.Process.Traversal;
+
+namespace Gremlin.Net.Structure.IO.GraphSON
+{
+ internal class StringBasedLambdaSerializer : IGraphSONSerializer
+ {
+ public Dictionary<string, dynamic> Dictify(dynamic objectData, GraphSONWriter writer)
+ {
+ StringBasedLambda lambda = objectData;
+ var valueDict = new Dictionary<string, dynamic>
+ {
+ {"script", lambda.LambdaExpression},
+ {"language", lambda.Language},
+ {"arguments", lambda.Arguments}
+ };
+ return GraphSONUtil.ToTypedValue(nameof(Lambda), valueDict);
+ }
+ }
+}
\ No newline at end of file