Uploaded image for project: 'TinkerPop'
  1. TinkerPop
  2. TINKERPOP-1901

Enable usage of enums in more steps in Gremlin.Net

VotersWatch issueWatchersLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 3.2.7, 3.3.1
    • 3.2.8, 3.3.2
    • dotnet
    • None

    Description

      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:
        public default <V> GraphTraversal<S, E> by(final Traversal<?, ?> traversal, final Comparator<V> comparator)
        
      • In Gremlin.Net:
        public GraphTraversal<S, E> By (object function, object comparator)
        

      Jorge Bay suggested two possible solutions for this problem:

      • 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.

      Attachments

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            Florian Hockmann Florian Hockmann
            Florian Hockmann Florian Hockmann
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment