[
https://issues.apache.org/jira/browse/TINKERPOP-3058?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Stephen Mallette closed TINKERPOP-3058.
---------------------------------------
Resolution: Not A Problem
when building a DSL that uses anonymous traversals it's important that they are
defined as such with {{__}} or else they will call the current class version of
that step instead.
> StackOverFlowError when using `or` in Custom Gremlin DSL
> --------------------------------------------------------
>
> Key: TINKERPOP-3058
> URL: https://issues.apache.org/jira/browse/TINKERPOP-3058
> Project: TinkerPop
> Issue Type: Bug
> Components: tinkergraph
> Affects Versions: 3.6.4
> Reporter: Jan
> Priority: Major
>
> Implementing our own
> [GremlinDSL|https://tinkerpop.apache.org/docs/current/reference/#gremlin-java-dsl]
> we encounter a `StackoverFlowError` as soon as we use `or` in the
> @GremlinDsl interface.
> The same condition works fine if defined directly in the query.
> It also works as soon as we remove the or from the condition.
> {code:java}
> @GremlinDsl(traversalSource =
> "com.corp.foo.gremlin.CustomGraphTraversalSource")
> public interface CustomTraversalDsl<S, E> extends GraphTraversal.Admin<S, E> {
> default GraphTraversal<S, Vertex> outWithOr() {
> return out()
> .or(
> has("key"),
> has("key", false)
> );
> }
> default GraphTraversal<S, Vertex> outWithoutOr() {
> return out()
> .has("key")
> .has("key", false);
> }
> }
> g.V().where(outWithoutOr()).next(); -> works fine
> g.V().where(out().or(has("key"), has("key", false))).next() -> works fine
> g.V().where(outWithOr()).next(); ->
> java.lang.StackOverflowError
> at
> org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper.hasStepOfAssignableClass(TraversalHelper.java:349)
> at
> org.apache.tinkerpop.gremlin.process.traversal.strategy.decoration.ConnectiveStrategy.apply(ConnectiveStrategy.java:63)
> at
> org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper.applyTraversalRecursively(TraversalHelper.java:503)
> at
> org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper.applyTraversalRecursively(TraversalHelper.java:491){code}
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)