From f704c84f5743e3c4fd8126164ae48462df781be5 Mon Sep 17 00:00:00 2001 From: Willem Broekema Date: Tue, 25 Oct 2022 20:55:03 +0200 Subject: [PATCH] Better error for group().by() if the by() traverser gives no results --- .../process/traversal/step/map/GroupStep.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java index 2213b2e2365..24e095f444a 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GroupStep.java @@ -127,8 +127,17 @@ public Map projectTraverser(final Traverser.Admin traverser) { if (null == this.barrierStep) { if (this.valueTraversal.hasNext()) map.put(TraversalUtil.applyNullable(traverser, this.keyTraversal), (V) this.valueTraversal.next()); - } else if (this.barrierStep.hasNextBarrier()) - map.put(TraversalUtil.applyNullable(traverser, this.keyTraversal), (V) this.barrierStep.nextBarrier()); + + + } else if (this.barrierStep.hasNextBarrier()) { + try { + map.put(TraversalUtil.applyNullable(traverser, this.keyTraversal), (V) this.barrierStep.nextBarrier()); + } catch (IllegalArgumentException e) { // as thrown by TraversalUtil.apply() + throw new IllegalStateException(String.format( + "group().by() failed because by() traversal (which is: %s) failed with: %s", + keyTraversal.toString(), e.getMessage())); + } + } return map; } @@ -209,4 +218,4 @@ else if (null != objectB) return mapA; } } -} \ No newline at end of file +}