You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tinkerpop.apache.org by "Florian Hockmann (JIRA)" <ji...@apache.org> on 2018/02/22 15:59:01 UTC
[jira] [Created] (TINKERPOP-1901) Enable usage of enums in more
steps in Gremlin.Net
Florian Hockmann created TINKERPOP-1901:
-------------------------------------------
Summary: Enable usage of enums in more steps in Gremlin.Net
Key: TINKERPOP-1901
URL: https://issues.apache.org/jira/browse/TINKERPOP-1901
Project: TinkerPop
Issue Type: Improvement
Components: dotnet
Affects Versions: 3.3.1, 3.2.7
Reporter: Florian Hockmann
Java enums can implement interfaces and some Gremlin steps take interfaces as arguments that are implemented by enums like {{T}} or {{P}} in Java. However, C# enums can't have any methods and therefore also not implement interfaces. For this reason, step arguments whose type is one of those interfaces ({{Predicate}}, {{Function}}, ...) currently have the type {{object}} in Gremlin.Net which makes it hard for users to know what kind of values they can use for these arguments.
This overload of the {{By}} step is a good example for this:
* In Gremlin-java:
{code:java}
public default <V> GraphTraversal<S, E> by(final Traversal<?, ?> traversal, final Comparator<V> comparator)
{code}
* In Gremlin.Net:
{code}
public GraphTraversal<S, E> By (object function, object comparator)
{code}
[~jorgebg] [suggested two possible solutions|https://github.com/apache/tinkerpop/pull/792#discussion_r167847541] for this problem:
{quote} * Use a class for T (not an enum), properties like T.Id could return instances of whatever interface we create for it. Given that java enums functionality is more comprehensive than what C# currently supports, it makes sense to use a class IMO.
* Generate the offending traversal methods manually.{quote}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)