GitHub user FlorianHockmann opened a pull request:
https://github.com/apache/tinkerpop/pull/792
TINKERPOP-1854 Add Lambdas for Gremlin.Net
https://issues.apache.org/jira/browse/TINKERPOP-1854
Since we don't have a way to parse C# lambdas on server side, this PR
simply allows to send lambdas in other languages with Gremlin.Net:
- For a Groovy lambda: `Lambda.Groovy("it.get().value('name').length()")`
- and for a Python lambda: `Lambda.Python("lambda x:
len(x.get().value('name'))")`
All features are passing now - no features are ignored any more. Therefore
I also removed the functionality to ignore features in Gremlin.Net. (I hope
that we won't need to ignore any features in Gremlin.Net in the future, but if
we have to then it shouldn't be an issue to get this functionality back.)
Unfortunately, it's not possible to use this new `Lambda` type for
arguments in the traversal API due to the fact that in Java the type `Function`
would correspond to this type, but Java also allows to pass for example the
enum `T` as a `Function` because `T` implements `Function<Element, Object>`. So
we cannot simply replace all `Function` types from Gremlin-Java with `Lambda`
in Gremlin.Net as that would break for example this step:
```
public default <U> GraphTraversal<S, E> by(final Function<U, Object>
function,
final Comparator comparator)
```
that can be called like this: `by(T.value, Order.incr)` which wouldn't be
possible when the first argument would only take a `Lambda` in Gremlin.Net.
(Luckily, I found this thanks to a Gherkin scenario that makes exactly this
call.)
So, currently all arguments where a lambda is possible simply expect an
`object`.
VOTE +1
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/apache/tinkerpop TINKERPOP-1854
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/tinkerpop/pull/792.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #792
----
commit 976079d6e7ded8b7f71605adba102ce530a4ecde
Author: Florian Hockmann <fh@...>
Date: 2018-01-27T13:41:28Z
TINKERPOP-1854 Add Lambdas for Gremlin.Net
All features are passing now (no ignored ones any more).
----
---