Skip to content

Commit 24c90e9

Browse files
committed
Call handlers when calling sequences from task
Add functionality to call handlers when invoking sequences from tasks. Add a system property to enable/disable the functionality. Fixes wso2/product-ei/issues/5226
1 parent 3c89603 commit 24c90e9

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

modules/core/src/main/java/org/apache/synapse/startup/tasks/MessageInjector.java

+15
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.apache.synapse.ManagedLifecycle;
3737
import org.apache.synapse.MessageContext;
3838
import org.apache.synapse.SynapseException;
39+
import org.apache.synapse.SynapseHandler;
3940
import org.apache.synapse.core.SynapseEnvironment;
4041
import org.apache.synapse.core.axis2.Axis2SynapseEnvironment;
4142
import org.apache.synapse.mediators.MediatorFaultHandler;
@@ -96,6 +97,8 @@ public class MessageInjector implements Task, ManagedLifecycle {
9697
private final static String INJECT_TO_SEQUENCE = "sequence";
9798
private final static String INJECT_TO_MAIN_SEQ = "main";
9899

100+
private final static String INJECT_TO_SEQ_FROM_TASK = "tasks.invoke.handlers.when.calling.sequence";
101+
99102
/**
100103
* Artifact type which message should be injected
101104
* Could be one of "proxy" | "sequence" | "main"
@@ -412,6 +415,18 @@ public void execute() {
412415
if (log.isDebugEnabled()) {
413416
log.debug("injecting message to sequence : " + sequenceName);
414417
}
418+
boolean isInjectToSeq = System.getProperty(INJECT_TO_SEQ_FROM_TASK) != null &&
419+
Boolean.parseBoolean(System.getProperty(INJECT_TO_SEQ_FROM_TASK));
420+
if (isInjectToSeq) {
421+
List handlers = mc.getEnvironment().getSynapseHandlers();
422+
Iterator<SynapseHandler> iterator = handlers.iterator();
423+
while (iterator.hasNext()) {
424+
SynapseHandler handler = iterator.next();
425+
if (!handler.handleRequestInFlow(mc)) {
426+
return;
427+
}
428+
}
429+
}
415430
mc.pushFaultHandler(new MediatorFaultHandler(mc.getFaultSequence()));
416431
synapseEnvironment.injectAsync(mc, seq);
417432
} else {

0 commit comments

Comments
 (0)