Author: veithen
Date: Sat Sep 20 16:18:36 2008
New Revision: 697433

URL: http://svn.apache.org/viewvc?rev=697433&view=rev
Log:
SYNAPSE-451: Propagate lifecycle events to child mediators.

Modified:
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/SwitchCase.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/CacheMediator.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/eip/aggregator/AggregateMediator.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/filters/SwitchMediator.java
    
synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediator.java

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/SwitchCase.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/SwitchCase.java?rev=697433&r1=697432&r2=697433&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/SwitchCase.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/SwitchCase.java
 Sat Sep 20 16:18:36 2008
@@ -21,6 +21,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.synapse.MessageContext;
+import org.apache.synapse.core.SynapseEnvironment;
 
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -46,6 +47,14 @@
      */
     private AnonymousListMediator caseMediator;
 
+    public void init(SynapseEnvironment se) {
+        caseMediator.init(se);
+    }
+
+    public void destroy() {
+        caseMediator.destroy();
+    }
+
     /**
      * To delegate message mediation to list mediator
      *

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/CacheMediator.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/CacheMediator.java?rev=697433&r1=697432&r2=697433&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/CacheMediator.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/CacheMediator.java
 Sat Sep 20 16:18:36 2008
@@ -24,8 +24,10 @@
 import org.apache.axis2.clustering.context.Replicator;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.saaj.util.SAAJUtil;
+import org.apache.synapse.ManagedLifecycle;
 import org.apache.synapse.MessageContext;
 import org.apache.synapse.SynapseException;
+import org.apache.synapse.core.SynapseEnvironment;
 import org.apache.synapse.core.axis2.Axis2MessageContext;
 import org.apache.synapse.core.axis2.Axis2Sender;
 import org.apache.synapse.mediators.AbstractMediator;
@@ -55,7 +57,7 @@
  *
  * @see org.apache.synapse.Mediator
  */
-public class CacheMediator extends AbstractMediator {
+public class CacheMediator extends AbstractMediator implements 
ManagedLifecycle {
 
     private String id = null;
     private String scope = CachingConstants.SCOPE_PER_HOST;// global
@@ -72,6 +74,18 @@
     private String cacheManagerKey = CachingConstants.CACHE_MANAGER; // 
default per-host
     private static final String CACHE_MANAGER_PREFIX = 
"synapse.cache_manager_";
 
+    public void init(SynapseEnvironment se) {
+        if (onCacheHitSequence != null) {
+            onCacheHitSequence.init(se);
+        }
+    }
+
+    public void destroy() {
+        if (onCacheHitSequence != null) {
+            onCacheHitSequence.destroy();
+        }
+    }
+
     public boolean mediate(MessageContext synCtx) {
 
         // tracing and debuggin related mediation initiation

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/eip/aggregator/AggregateMediator.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/eip/aggregator/AggregateMediator.java?rev=697433&r1=697432&r2=697433&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/eip/aggregator/AggregateMediator.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/eip/aggregator/AggregateMediator.java
 Sat Sep 20 16:18:36 2008
@@ -23,8 +23,10 @@
 import org.apache.axiom.soap.SOAP12Constants;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.synapse.ManagedLifecycle;
 import org.apache.synapse.MessageContext;
 import org.apache.synapse.SynapseConstants;
+import org.apache.synapse.core.SynapseEnvironment;
 import org.apache.synapse.mediators.AbstractMediator;
 import org.apache.synapse.mediators.base.SequenceMediator;
 import org.apache.synapse.mediators.eip.EIPConstants;
@@ -46,7 +48,7 @@
  * so that aggregations that never would complete could be timed out and 
cleared from memory and
  * any fault conditions handled
  */
-public class AggregateMediator extends AbstractMediator {
+public class AggregateMediator extends AbstractMediator implements 
ManagedLifecycle {
 
     private static final Log log = LogFactory.getLog(AggregateMediator.class);
     private static final Log trace = 
LogFactory.getLog(SynapseConstants.TRACE_LOGGER);
@@ -97,6 +99,18 @@
         }
     }
 
+    public void init(SynapseEnvironment se) {
+        if (onCompleteSequence != null) {
+            onCompleteSequence.init(se);
+        }
+    }
+
+    public void destroy() {
+        if (onCompleteSequence != null) {
+            onCompleteSequence.destroy();
+        }
+    }
+
     /**
      * Aggregate messages flowing through this mediator according to the 
correlation criteria
      * and the aggregation algorithm specified to it

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/filters/SwitchMediator.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/filters/SwitchMediator.java?rev=697433&r1=697432&r2=697433&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/filters/SwitchMediator.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/filters/SwitchMediator.java
 Sat Sep 20 16:18:36 2008
@@ -19,8 +19,10 @@
 
 package org.apache.synapse.mediators.filters;
 
+import org.apache.synapse.ManagedLifecycle;
 import org.apache.synapse.MessageContext;
 import org.apache.synapse.config.xml.SwitchCase;
+import org.apache.synapse.core.SynapseEnvironment;
 import org.apache.synapse.mediators.AbstractMediator;
 import org.apache.synapse.util.xpath.SynapseXPath;
 
@@ -33,7 +35,7 @@
  * the given list of cases. This is actually a list of sequences, and 
depending on the
  * selected case, the selected sequence gets executed.
  */
-public class SwitchMediator extends AbstractMediator {
+public class SwitchMediator extends AbstractMediator implements 
ManagedLifecycle {
 
     /** The XPath expression specifying the source element to apply the switch 
case expressions against   */
     private SynapseXPath source = null;
@@ -42,6 +44,24 @@
     /** The default switch case, if any */
     private SwitchCase defaultCase = null;
 
+    public void init(SynapseEnvironment se) {
+        for (SwitchCase swCase : cases) {
+            swCase.init(se);
+        }
+        if (defaultCase != null) {
+            defaultCase.init(se);
+        }
+    }
+
+    public void destroy() {
+        for (SwitchCase swCase : cases) {
+            swCase.destroy();
+        }
+        if (defaultCase != null) {
+            defaultCase.destroy();
+        }
+    }
+
     /**
      * Iterate over switch cases and find match and execute selected sequence
      *

Modified: 
synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediator.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediator.java?rev=697433&r1=697432&r2=697433&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediator.java
 (original)
+++ 
synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediator.java
 Sat Sep 20 16:18:36 2008
@@ -20,10 +20,12 @@
 
 import org.apache.axiom.om.OMElement;
 import org.apache.neethi.PolicyEngine;
+import org.apache.synapse.ManagedLifecycle;
 import org.apache.synapse.Mediator;
 import org.apache.synapse.MessageContext;
 import org.apache.synapse.transport.nhttp.NhttpConstants;
 import org.apache.synapse.config.Entry;
+import org.apache.synapse.core.SynapseEnvironment;
 import org.apache.synapse.core.axis2.Axis2MessageContext;
 import org.apache.synapse.mediators.AbstractMediator;
 import org.apache.axis2.context.ConfigurationContext;
@@ -39,7 +41,7 @@
  * Only support IP based throttling- Throotling can manage per IP using the 
throttle policy
  */
 
-public class ThrottleMediator extends AbstractMediator {
+public class ThrottleMediator extends AbstractMediator implements 
ManagedLifecycle {
 
     /* The key for getting the throttling policy - key refers to a/an 
[registry] entry    */
     private String policyKey = null;
@@ -73,6 +75,24 @@
         this.accessControler = new AccessRateController();
     }
 
+    public void init(SynapseEnvironment se) {
+        if (onAcceptMediator instanceof ManagedLifecycle) {
+            ((ManagedLifecycle)onAcceptMediator).init(se);
+        }
+        if (onRejectMediator instanceof ManagedLifecycle) {
+            ((ManagedLifecycle)onRejectMediator).init(se);
+        }
+    }
+
+    public void destroy() {
+        if (onAcceptMediator instanceof ManagedLifecycle) {
+            ((ManagedLifecycle)onAcceptMediator).destroy();
+        }
+        if (onRejectMediator instanceof ManagedLifecycle) {
+            ((ManagedLifecycle)onRejectMediator).destroy();
+        }
+    }
+
     public boolean mediate(MessageContext synCtx) {
 
         boolean traceOn = isTraceOn(synCtx);


Reply via email to