Implementing deactivate sequence for forwarding jobs; Applied patch from SYNAPSE-1020
git-svn-id: https://svn.apache.org/repos/asf/synapse/trunk@1746209 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/java/modules/core/src/main/java/org/apache/synapse/message/processors/forward/ForwardingJob.java b/java/modules/core/src/main/java/org/apache/synapse/message/processors/forward/ForwardingJob.java
index 4a7cb6b..aa78874 100644
--- a/java/modules/core/src/main/java/org/apache/synapse/message/processors/forward/ForwardingJob.java
+++ b/java/modules/core/src/main/java/org/apache/synapse/message/processors/forward/ForwardingJob.java
@@ -158,7 +158,7 @@
if (maxDeliverAttempts > 0) {
if(processor.getSendAttemptCount() >= maxDeliverAttempts) {
- processor.deactivate();
+ deactivate(processor, messageContext, parameters);
}
}
errorStop = true;
@@ -199,7 +199,7 @@
if (maxDeliverAttempts > 0) {
processor.incrementSendAttemptCount();
if (processor.getSendAttemptCount() >= maxDeliverAttempts) {
- processor.deactivate();
+ deactivate(processor, messageContext, parameters);
}
}
errorStop = true;
@@ -260,4 +260,19 @@
}
}
+ private void deactivate(ScheduledMessageForwardingProcessor processor,
+ MessageContext msgContext, Map<String, Object> parameters) {
+ processor.deactivate();
+ if (parameters != null && parameters.get(ForwardingProcessorConstants.DEACTIVATE_SEQUENCE) != null) {
+ if (msgContext != null) {
+ String seq = (String) parameters.get(ForwardingProcessorConstants.DEACTIVATE_SEQUENCE);
+ Mediator mediator = msgContext.getSequence(seq);
+ if (mediator != null) {
+ mediator.mediate(msgContext);
+ } else {
+ log.warn("Deactivate sequence: " + seq + " does not exist");
+ }
+ }
+ }
+ }
}
diff --git a/java/modules/core/src/main/java/org/apache/synapse/message/processors/forward/ForwardingProcessorConstants.java b/java/modules/core/src/main/java/org/apache/synapse/message/processors/forward/ForwardingProcessorConstants.java
index bd81430..87c1e01 100644
--- a/java/modules/core/src/main/java/org/apache/synapse/message/processors/forward/ForwardingProcessorConstants.java
+++ b/java/modules/core/src/main/java/org/apache/synapse/message/processors/forward/ForwardingProcessorConstants.java
@@ -55,5 +55,9 @@
*/
public static final String FAULT_SEQUENCE = "message.processor.fault.sequence";
+ /**
+ * used for forward in case of scheduled message processor deactivation
+ */
+ public static final String DEACTIVATE_SEQUENCE = "message.processor.deactivate.sequence";
}