|
36 | 36 | import org.apache.synapse.ManagedLifecycle;
|
37 | 37 | import org.apache.synapse.MessageContext;
|
38 | 38 | import org.apache.synapse.SynapseException;
|
| 39 | +import org.apache.synapse.SynapseHandler; |
39 | 40 | import org.apache.synapse.core.SynapseEnvironment;
|
40 | 41 | import org.apache.synapse.core.axis2.Axis2SynapseEnvironment;
|
41 | 42 | import org.apache.synapse.mediators.MediatorFaultHandler;
|
@@ -96,6 +97,8 @@ public class MessageInjector implements Task, ManagedLifecycle {
|
96 | 97 | private final static String INJECT_TO_SEQUENCE = "sequence";
|
97 | 98 | private final static String INJECT_TO_MAIN_SEQ = "main";
|
98 | 99 |
|
| 100 | + private final static String INJECT_TO_SEQ_FROM_TASK = "tasks.invoke.handlers.when.calling.sequence"; |
| 101 | + |
99 | 102 | /**
|
100 | 103 | * Artifact type which message should be injected
|
101 | 104 | * Could be one of "proxy" | "sequence" | "main"
|
@@ -412,6 +415,18 @@ public void execute() {
|
412 | 415 | if (log.isDebugEnabled()) {
|
413 | 416 | log.debug("injecting message to sequence : " + sequenceName);
|
414 | 417 | }
|
| 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 | + } |
415 | 430 | mc.pushFaultHandler(new MediatorFaultHandler(mc.getFaultSequence()));
|
416 | 431 | synapseEnvironment.injectAsync(mc, seq);
|
417 | 432 | } else {
|
|
0 commit comments