diff --git a/modules/core/src/main/java/org/apache/synapse/mediators/v2/ForEachMediatorV2.java b/modules/core/src/main/java/org/apache/synapse/mediators/v2/ForEachMediatorV2.java index 0e95604aa8..d1753e63d5 100644 --- a/modules/core/src/main/java/org/apache/synapse/mediators/v2/ForEachMediatorV2.java +++ b/modules/core/src/main/java/org/apache/synapse/mediators/v2/ForEachMediatorV2.java @@ -286,12 +286,11 @@ public boolean mediate(MessageContext synCtx, ContinuationState continuationStat ((Mediator) mediator).reportCloseStatistics(synCtx, null); } } - // If this a continue without aggregation scenario, return false to end the mediation - if (continueWithoutAggregation) { - return false; - } if (readyToAggregate) { - return aggregateMessages(synCtx, synLog); + if (!continueWithoutAggregation) { + return aggregateMessages(synCtx, synLog); + } + return false; } return result; } diff --git a/modules/core/src/main/java/org/apache/synapse/mediators/v2/ScatterGather.java b/modules/core/src/main/java/org/apache/synapse/mediators/v2/ScatterGather.java index d6f271ae31..53df2b8f89 100644 --- a/modules/core/src/main/java/org/apache/synapse/mediators/v2/ScatterGather.java +++ b/modules/core/src/main/java/org/apache/synapse/mediators/v2/ScatterGather.java @@ -594,7 +594,12 @@ private void setJSONResultToVariable(JsonArray variable, Aggregate aggregate) { for (MessageContext synCtx : aggregate.getMessages()) { Object evaluatedResult = aggregationExpression.objectValueOf(synCtx); - variable.add((JsonElement) evaluatedResult); + if (evaluatedResult instanceof JsonElement) { + variable.add((JsonElement) evaluatedResult); + } else { + handleException(aggregate, "Aggregation expression " + aggregationExpression.toString() + + " did not return a valid JSON element", null, synCtx); + } } }