[ https://issues.apache.org/jira/browse/TINKERPOP-2510?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17934197#comment-17934197 ]
Stephen Mallette commented on TINKERPOP-2510: --------------------------------------------- Documented on 3.7-dev: https://github.com/apache/tinkerpop/commit/6dda6f0df96aa852d20cac40c48144786645a6b5 > by-modulator throws when token is used after elementMap() > --------------------------------------------------------- > > Key: TINKERPOP-2510 > URL: https://issues.apache.org/jira/browse/TINKERPOP-2510 > Project: TinkerPop > Issue Type: Bug > Components: process > Affects Versions: 3.4.9 > Reporter: Christopher Smith > Priority: Major > > I'm attempting to write a "join" traversal to return the values of several > related vertices (of different types), starting from an entry vertex. In > order to extract the relevant properties, I am currently using > {{elementMap}}, then trying to stash the vertex properties to continue with > my query: > {code:groovy} > gts.V(entryPoint).as('p') > .sideEffect(__.elementMap().group('pp').by(T.id)) > .out... > ... > .select('pp', ...) > {code} > As {{elementMap}} produces a map that includes the tokens as map keys, I > expected {{by(T.id)}} to extract a map keyed on the vertex ID with the > properties as the value (right now folded, but I'm crunching on that later). > Using strings like {{'firstName'}} works as expected, but of course using the > string {{'id'}} does not because the map key is the token, not the string. > However, passing {{T.id}} to the by-modulator when the value is a map > (instead of an element) produces a {{ClassCastException}}. As far as I can > tell, the processor is assuming somewhere that {{by(T.id)}} indicates that > the incoming value is an element, which (at least after the addition of > {{elementMap}}) is not true. > {code} > java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to > class org.apache.tinkerpop.gremlin.structure.Element (java.util.LinkedHashMap > is in module java.base of loader 'bootstrap'; > org.apache.tinkerpop.gremlin.structure.Element is in unnamed module of loader > 'app') > at > org.apache.tinkerpop.gremlin.process.traversal.lambda.TokenTraversal.addStart(TokenTraversal.java:46) > at > org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil.apply(TraversalUtil.java:42) > at > org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil.applyNullable(TraversalUtil.java:87) > at > org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupSideEffectStep.sideEffect(GroupSideEffectStep.java:114) > at > org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SideEffectStep.processNextStart(SideEffectStep.java:39) > at > org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.hasNext(AbstractStep.java:143) > at > org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal.hasNext(DefaultTraversal.java:197) > at > org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.TraversalSideEffectStep.sideEffect(TraversalSideEffectStep.java:48) > at > org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.SideEffectStep.processNextStart(SideEffectStep.java:39) > at > org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.hasNext(AbstractStep.java:143) > at > org.apache.tinkerpop.gremlin.process.traversal.step.util.ExpandableStepIterator.next(ExpandableStepIterator.java:50) > at > org.apache.tinkerpop.gremlin.process.traversal.step.map.FlatMapStep.processNextStart(FlatMapStep.java:48) > at > org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.hasNext(AbstractStep.java:143) > at > org.apache.tinkerpop.gremlin.process.traversal.step.util.ExpandableStepIterator.next(ExpandableStepIterator.java:50) > at > org.apache.tinkerpop.gremlin.process.traversal.step.filter.FilterStep.processNextStart(FilterStep.java:37) > at > org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.hasNext(AbstractStep.java:143) > at > org.apache.tinkerpop.gremlin.process.traversal.step.util.ExpandableStepIterator.next(ExpandableStepIterator.java:50) > at > org.apache.tinkerpop.gremlin.process.traversal.step.map.FlatMapStep.processNextStart(FlatMapStep.java:48) > at > org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.hasNext(AbstractStep.java:143) > at > org.apache.tinkerpop.gremlin.process.traversal.step.util.ExpandableStepIterator.next(ExpandableStepIterator.java:50) > at > org.apache.tinkerpop.gremlin.process.traversal.step.map.FlatMapStep.processNextStart(FlatMapStep.java:48) > at > org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.hasNext(AbstractStep.java:143) > at > org.apache.tinkerpop.gremlin.process.traversal.step.util.ExpandableStepIterator.next(ExpandableStepIterator.java:50) > at > org.apache.tinkerpop.gremlin.process.traversal.step.filter.FilterStep.processNextStart(FilterStep.java:37) > at > org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.hasNext(AbstractStep.java:143) > at > org.apache.tinkerpop.gremlin.process.traversal.step.util.ExpandableStepIterator.next(ExpandableStepIterator.java:50) > at > org.apache.tinkerpop.gremlin.process.traversal.step.map.FlatMapStep.processNextStart(FlatMapStep.java:48) > at > org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.hasNext(AbstractStep.java:143) > at > org.apache.tinkerpop.gremlin.process.traversal.step.util.ExpandableStepIterator.next(ExpandableStepIterator.java:50) > at > org.apache.tinkerpop.gremlin.process.traversal.step.map.MapStep.processNextStart(MapStep.java:36) > at > org.apache.tinkerpop.gremlin.process.traversal.step.map.SelectOneStep.processNextStart(SelectOneStep.java:131) > at > org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.next(AbstractStep.java:128) > at > org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.next(AbstractStep.java:38) > at > org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal.next(DefaultTraversal.java:205) > at com.example.Queries.query(Queries.groovy:39) > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)