You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@synapse.apache.org by as...@apache.org on 2007/10/12 22:50:19 UTC

svn commit: r584267 - in /webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle: ThrottleMediator.java ThrottleMediatorFactory.java ThrottleMediatorSerializer.java

Author: asankha
Date: Fri Oct 12 13:50:16 2007
New Revision: 584267

URL: http://svn.apache.org/viewvc?rev=584267&view=rev
Log:
review and fix throttle mediator - indika pls verify

Modified:
    webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediator.java
    webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediatorFactory.java
    webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediatorSerializer.java

Modified: webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediator.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediator.java?rev=584267&r1=584266&r2=584267&view=diff
==============================================================================
--- webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediator.java (original)
+++ webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediator.java Fri Oct 12 13:50:16 2007
@@ -22,7 +22,6 @@
 import org.apache.neethi.PolicyEngine;
 import org.apache.synapse.Mediator;
 import org.apache.synapse.MessageContext;
-import org.apache.synapse.SynapseException;
 import org.apache.synapse.config.Entry;
 import org.apache.synapse.core.axis2.Axis2MessageContext;
 import org.apache.synapse.mediators.AbstractMediator;
@@ -44,67 +43,67 @@
 
     /** static map to share all concurrent access controllers */
     public final static Map CONCURRENT_ACCESS_CONTROLLERS = Collections.synchronizedMap(new HashMap());
-
-    /** The key for getting policy value - key refer to registry entry  */
+    /** The key for getting the throttling policy - key refers to a/an [registry] entry  */
     private String policyKey = null;
-
-    /** InLine policy object - XML   */
+    /** InLine policy object - XML */
     private OMElement inLinePolicy = null;
-
-    /** The throttle - hold runtime + configuration data of throttle  */
+    /** The throttle - hold runtime + configuration data of throttle */
     private Throttle throttle = null;
-
-    /** The reference to the sequence which will execute when access deny*/
-    private String onReject = null;
-
-    /** The in-line sequence which will execute when access deny*/
+    /** The reference to the sequence which will execute when access is denied */
+    private String onRejectSeqKey = null;
+    /** The in-line sequence which will execute when access is denied */
     private Mediator onRejectMediator = null;
-
-    /** The reference to the sequence which will execute when access accept */
-    private String onAccept  = null;
-
-    /** The in-line sequence which will execute when access accept */
+    /** The reference to the sequence which will execute when access is allowed */
+    private String onAcceptSeqKey = null;
+    /** The in-line sequence which will execute when access is allowed */
     private Mediator onAcceptMediator = null;
-
     /** The concurrect access control group id */
-    private String ID ;
+    private String id;
+    /** The ConcurrentAccessController for this mediator instance */
+    private ConcurrentAccessController concurrentAccessController;
+    /** Does my configuration state an IP based throttling policy segment */
+    private boolean includesIPThrottling = false;
+    /** The concurrent connection limit */
+    private int concurrentLimit;
 
-    /** is this initiator of the concurrent access controller*/
-    private boolean isInitiator = false;
+    public boolean mediate(MessageContext synCtx) {
 
-    /** Lock used to ensure thread-safe creation and use of the above Transformer  */
-    private final Object throttleLock = new Object();
+        boolean traceOn = isTraceOn(synCtx);
+        boolean traceOrDebugOn = isTraceOrDebugOn(traceOn);
 
-    /** The ConcurrentAccessController cache */
-    private ConcurrentAccessController concurrentAccessController;
+        if (traceOrDebugOn) {
+            traceOrDebug(traceOn, "Start : Throttle mediator");
 
-    /* check to debug log level whether currently enable or not */
-    private boolean debugOn;
+            if (traceOn && trace.isTraceEnabled()) {
+                trace.trace("Message : " + synCtx.getEnvelope());
+            }
+        }
 
-    public ThrottleMediator() {
-        this.debugOn = log.isDebugEnabled();
-    }
+        if (!synCtx.isResponse()) {
+            // for request messages, read the policy for throttling and initialize
+            initThrottle(synCtx, traceOrDebugOn, traceOn);
 
-    public boolean mediate(MessageContext synCtx) {
-        boolean shouldTrace = shouldTrace(synCtx.getTracingState());
-        try {
-            if (shouldTrace) {
-                trace.trace("Start : Throttle mediator");
-            }
-            synchronized (throttleLock) {
-                //init method to init throttle
-                initThrottle(synCtx, shouldTrace);
-                if (concurrentAccessController == null && ID != null) {
-                    lookupConcurrentAccessController();
+        } else {
+            // for response messages, load the concurrent access controller object
+            // do this ONLY ONCE - the first time when our iniial reference is null
+            if (concurrentAccessController == null && id != null) {
+                concurrentAccessController =
+                    (ConcurrentAccessController) CONCURRENT_ACCESS_CONTROLLERS.get(id);
+                concurrentLimit = concurrentAccessController.getLimit();
+                if (traceOrDebugOn) {
+                    traceOrDebug(traceOn, "Concurrent access controller for ID : " + id +
+                        " allows : " + concurrentLimit + " concurrent accesses");
                 }
             }
-            // check access allow or not
-            return canAccess(synCtx, shouldTrace);
-        } finally {
-            if (shouldTrace) {
-                trace.trace("End : Throttle mediator");
-            }
         }
+
+        // check access allow or not
+        boolean result = canAccess(synCtx, traceOrDebugOn, traceOn);
+
+        if (traceOrDebugOn) {
+            traceOrDebug(traceOn, "End : Throttle mediator");
+        }
+        return result;
     }
 
     /**
@@ -112,48 +111,43 @@
      * Current Implementaion only support IP Based Throttling
      *
      * @param synContext Current Message Context
-     * @param shouldTrace indicate whether trace is eanabled or not
+     * @param traceOn indicate whether trace is eanabled or not
      * @return boolean which indicate whether this caller can or not access
      */
-    protected boolean canAccess(MessageContext synContext, boolean shouldTrace) {
+    private boolean canAccess(MessageContext synContext, boolean traceOrDebugOn, boolean traceOn) {
 
         boolean isResponse = synContext.isResponse();
         // do the concurrent throttling
-        boolean canAccess = doConcurrentThrottling(isResponse, shouldTrace);
-        if (canAccess) { // if the access is success then
-            if (debugOn) {
-                log.debug("Access success from concurrent throttlling");
-            }
-            if (!isResponse) {
-                // do the normal throttling 
-                canAccess = doThrottling(synContext, shouldTrace);
-            }
-        } else {
-            if (debugOn) {
-                log.debug("Access deny from concurrent throttlling");
-            }
+        boolean isAllowed = throttleByConcurrency(isResponse, traceOrDebugOn, traceOn);
+
+        if (includesIPThrottling && isAllowed && !isResponse) {
+            // do the normal throttling 
+            isAllowed = throttleByRate(synContext, traceOrDebugOn, traceOn);
         }
 
-        if (canAccess) {
-            if (onAccept != null) {
-                Mediator mediator = synContext.getSequence(onAccept);
+        if (isAllowed) {
+            if (onAcceptSeqKey != null) {
+                Mediator mediator = synContext.getSequence(onAcceptSeqKey);
                 if (mediator != null) {
                     return mediator.mediate(synContext);
                 } else {
-                    return true;
+                    handleException("Unable to find onAccept sequence with key : "
+                        + onAcceptSeqKey, synContext);
                 }
             } else if (onAcceptMediator != null) {
                 return onAcceptMediator.mediate(synContext);
             } else {
                 return true;
             }
+
         } else {
-            if (onReject != null) {
-                Mediator mediator = synContext.getSequence(onReject);
+            if (onRejectSeqKey != null) {
+                Mediator mediator = synContext.getSequence(onRejectSeqKey);
                 if (mediator != null) {
                     return mediator.mediate(synContext);
                 } else {
-                    return false;
+                    handleException("Unable to find onReject sequence with key : "
+                        + onRejectSeqKey, synContext);
                 }
             } else if (onRejectMediator != null) {
                 return onRejectMediator.mediate(synContext);
@@ -161,101 +155,90 @@
                 return false;
             }
         }
+        return true;
     }
 
     /**
      * Doing concurrency throttlling
      * @param isResponse indicate whether message flow is OUT or IN
-     * @param shouldTrace indicate whether trace is ON or OFF
+     * @param traceOrDebugOn is tracing or debbug on
+     * @param traceOn indicate whether trace is ON or OFF
      * @return True if message can continue ,otherwise false
      */
-    private boolean doConcurrentThrottling(boolean isResponse, boolean shouldTrace) {
+    private boolean throttleByConcurrency(boolean isResponse, boolean traceOrDebugOn, boolean traceOn) {
 
-        boolean canAccess = true;
+        int available = 0;
         if (concurrentAccessController != null) {
             if (!isResponse) {
-                if (debugOn) {
-                    log.debug("Incoming message process through the ConcurrentThrottlling");
-                }
-                canAccess = concurrentAccessController.beforeAccess();
-                if (debugOn) {
-                    if (!canAccess) {
-                        log.debug("Access has currently been denied since allowed maximum concurrent access has exceeded");
-                    }
+                available = concurrentAccessController.getAndDecrement();
+                if (traceOrDebugOn) {
+                    traceOrDebug(traceOn, "Access " + (available > 0 ? "allowed" : "denied") +
+                        " :: " + available + " of available of " + concurrentLimit + " connections");
                 }
             } else {
-                if (debugOn) {
-                    log.debug("Outcoming message process through the ConcurrentThrottlling");
+                available = concurrentAccessController.incrementAndGet();
+                if (traceOrDebugOn) {
+                    traceOrDebug(traceOn, "Connection returned" +
+                        " :: " + available + " of available of " + concurrentLimit + " connections");
                 }
-                canAccess = concurrentAccessController.afterAccess();
+                return true;
             }
         }
-        return canAccess;
+        return available > 0;
     }
 
     /**
      * Processing throughh IP based throttle
      * @param synContext Current Message
-     * @param shouldTrace Indicates whether trace is ON or OFF
+     * @param traceOrDebugOn
+     * @param traceOn Indicates whether trace is ON or OFF
      * @return  True if message can continue ,otherwise false
      */
-    private boolean doThrottling(MessageContext synContext, boolean shouldTrace) {
+    private boolean throttleByRate(MessageContext synContext, boolean traceOrDebugOn, boolean traceOn) {
 
         if (throttle == null) {
-            if (debugOn) {
-                log.debug("Can not find a throttle");
-            }
+            handleException("Cannot find throttle object instance", synContext);
             return true;
         }
+
         org.apache.axis2.context.MessageContext axis2MessageContext
             = ((Axis2MessageContext) synContext).getAxis2MessageContext();
-        //IP based throttling
+        // IP based throttling
         Object remoteIP = axis2MessageContext.getProperty(
             org.apache.axis2.context.MessageContext.REMOTE_ADDR);
+
         if (remoteIP == null) {
-            if (shouldTrace) {
-                trace.trace("The IP Address of the caller is cannnot find- The Throttling will" +
-                    "not occur");
-            }
-            if (debugOn) {
-                log.debug("The IP address of the caller can not find - Currently only support caller-IP base"
-                    + "access control - Thottling will not happen ");
+            if (traceOrDebugOn) {
+                traceOrDebug(traceOn, "The IP address of the caller cannot be found");
             }
             return true;
+
         } else {
-            if (shouldTrace) {
-                trace.trace("The IP Address of the caller :" + remoteIP);
+            if (traceOrDebugOn) {
+                traceOrDebug(traceOn, "The IP Address of the caller is :" + remoteIP);
             }
+
             ThrottleContext throttleContext
                 = throttle.getThrottleContext(ThrottleConstants.IP_BASED_THROTTLE_KEY);
             if (throttleContext == null) {
-                if (log.isDebugEnabled()) {
-                    log.debug("Can not find a configuartion context for the IP Based Throttle");
+                if (traceOrDebugOn) {
+                    traceOrDebug(traceOn, "Cannot find the configuartion context for IP throttle");
                 }
                 return true;
             }
+
             try {
                 AccessController accessControler = AccessControllerFactory.createAccessControler(
                     ThrottleConstants.IP_BASE);
                 boolean canAccess = accessControler.canAccess(throttleContext, remoteIP);
-                if (!canAccess) {
-                    String msg = "Access has currently been denied by" +
-                        " the IP_BASE throttle for the IP :\t" + remoteIP;
-                    if (shouldTrace) {
-                        trace.trace(msg);
-                    }
-                    if (log.isDebugEnabled()) {
-                        log.debug(msg);
-                    }
-                } else {
-                    if(debugOn){
-                       log.debug("Access was successful ");
-                   }
+                if (traceOrDebugOn) {
+                    traceOrDebug(traceOn, "Access " + (canAccess ? "allowed" : "denied")
+                        +" for IP : " + remoteIP);
                 }
                 return canAccess;
-            }
-            catch (ThrottleException e) {
-                handleException("Error occur during throttling ", e);
+
+            } catch (ThrottleException e) {
+                handleException("Error occurd during throttling", e, synContext);
             }
         }
         return true;
@@ -268,147 +251,104 @@
      * If the policy is defined as a Inline XML ,then only one time policy will process and any runtime
      * changes to the policy will not reflect
      *
-     * @param synContext Current Message
-     * @param shouldTrace Indicates trace is ON or OFF
+     * @param synCtx Current Message
+     * @param traceOrDebugOn is tracing or debug on?
+     * @param traceOn is tracing on?
      */
-    protected void initThrottle(MessageContext synContext, boolean shouldTrace) {
-
-        boolean reCreate = false; // It is not need to recreate ,if property is not dyanamic
-        OMElement policyOmElement = null;
+    protected void initThrottle(MessageContext synCtx, boolean traceOrDebugOn, boolean traceOn) {
 
-        if (policyKey != null) {
-
-            Entry entry = synContext.getConfiguration().getEntryDefinition(policyKey);
-            if (entry == null) {
-                if (debugOn) {
-                    log.debug("Cant not find a Entry from the Entry key " + policyKey);
-                }
-                return;
-            }
-
-            Object entryValue = entry.getValue();
-            if (entryValue == null) {
-                if (debugOn) {
-                    log.debug("Cant not find a Policy(Enrty value) from the Entry key " + policyKey);
+        if (inLinePolicy != null) {
+            // this uses a static policy
+            if (throttle == null) {
+                if (traceOn && trace.isTraceEnabled()) {
+                    trace.trace("Initializing using static throttling policy : " + inLinePolicy);
                 }
-                return;
+                createThrottleMetaData(inLinePolicy, synCtx, traceOrDebugOn, traceOn);
             }
 
-            if (!(entryValue instanceof OMElement)) {
-                if (debugOn) {
-                    log.debug("Entry value which is refered from the key " + policyKey + " is Incompatible " +
-                        "for the policy element");
-                }
-                return;
-            }
+        } else if (policyKey != null) {
 
-            // if entry is dynamic, need to check wheather updated or not
-            if ((!entry.isCached() || entry.isExpired())) {
-                reCreate = true;
-            }
-            policyOmElement = (OMElement) entryValue;
+            // load or re-load policy from registry or local entry if not already available
+            Entry entry = synCtx.getConfiguration().getEntryDefinition(policyKey);
+            if (entry == null) {
+                handleException("Cannot find throttling policy using key : " + policyKey, synCtx);
 
-        } else if (inLinePolicy != null) {
-            policyOmElement = inLinePolicy;
-        }
+            } else {
+                Object entryValue = entry.getValue();
+                if (entryValue == null) {
+                    handleException(
+                        "Null throttling policy returned by Entry : " + policyKey, synCtx);
 
-        if (policyOmElement == null) {
-            if (debugOn) {
-                log.debug("Can not find a Policy - Throttling will not occur");
-            }
-            return;
-        }
+                } else {
+                    if (!(entryValue instanceof OMElement)) {
+                        handleException("Policy returned from key : " + policyKey +
+                            " is not an OMElement", synCtx);
 
-        if (shouldTrace) {
-            trace.trace("The Throttle Policy :" + policyOmElement.toString());
-        }
-        if (!reCreate) {
-            //The first time creation
-            if (throttle == null) {
-                createThrottleMetaData(policyOmElement, synContext.isResponse());
+                    } else {
+                        // if entry is dynamic, need to check wheather expired or not
+                        if ((!entry.isCached() || entry.isExpired())) {
+                            if (traceOn && trace.isTraceEnabled()) {
+                                trace.trace("Re/initializing using dynamic throttling policy : " +
+                                    entryValue);
+                            }
+                            createThrottleMetaData(
+                                (OMElement) entryValue, synCtx, traceOrDebugOn, traceOn);
+                        }
+                    }
+                }
             }
-        } else {
-            createThrottleMetaData(policyOmElement, synContext.isResponse());
         }
     }
 
     /**
-     * To create the Throttle from the policy element
-     *
-     * @param policyOmElement - valid throttle policy
-     * @param isResponse - Indicates whether current message flow is IN or OUT
-     */
-    protected void createThrottleMetaData(OMElement policyOmElement, boolean isResponse) {
+     * Create the throttling policy and the "Throttle" object applicable. If this is a
+     * concurrent throttling instance, set the throttling access controller to the shared
+     * map
+     * @param policyOmElement throttling policy
+     * @param synCtx incoming message
+     * @param traceOrDebugOn is tracing or debug on?
+     * @param traceOn is tracing on?
+     */
+    private synchronized void createThrottleMetaData(OMElement policyOmElement,
+        MessageContext synCtx, boolean traceOrDebugOn, boolean traceOn) {
+
+        if (inLinePolicy != null && throttle != null) {
+            // this uses a static policy, and one thread has already created the "Throttle"
+            // object, just return...
+            return;
+        }
+
         try {
-            if (debugOn) {
-                log.debug("Creating a new throttle configuration by parsing the Policy");
+            if (traceOrDebugOn) {
+                traceOrDebug(traceOn, "Creating a new throttle configuration by parsing the Policy");
             }
-            throttle = ThrottlePolicyProcessor
-                .processPolicy(PolicyEngine.getPolicy(policyOmElement));
+            throttle = ThrottlePolicyProcessor.processPolicy(
+                PolicyEngine.getPolicy(policyOmElement));
 
-            //set the concurrent access controller
-            if (ID != null) {
-                if (!CONCURRENT_ACCESS_CONTROLLERS.containsKey(ID)) {
-                    reCreateConcurrentAccessController(isResponse);
+            includesIPThrottling = (
+                throttle.getThrottleContext(ThrottleConstants.IP_BASED_THROTTLE_KEY) != null);
+
+            if (id != null) {
+                concurrentAccessController = throttle.getConcurrentAccessController();
+                concurrentLimit = concurrentAccessController.getLimit();
+
+                if (traceOrDebugOn) {
+                    traceOrDebug(traceOn,
+                        "Initiating ConcurrentAccessControler for throttle group id : " + id
+                            + " limit : " + concurrentLimit);
+                }
+                if (concurrentAccessController == null) {
+                    CONCURRENT_ACCESS_CONTROLLERS.remove(id);
                 } else {
-                    if (isInitiator) {
-                        reCreateConcurrentAccessController(isResponse);
-                    } else {
-                        lookupConcurrentAccessController();
-                    }
+                    CONCURRENT_ACCESS_CONTROLLERS.put(id, concurrentAccessController);
                 }
             }
         }
         catch (ThrottleException e) {
-            handleException("Error during processing the thorttle policy  " + e.getMessage());
-        }
-    }
-
-    /**
-     * create a ConcurrentAccessController if the current message is incoming message
-     *
-     * @param isResponse true if the current message flow is out
-     */
-    private void reCreateConcurrentAccessController(boolean isResponse) {
-
-        if (!isResponse) {
-            concurrentAccessController = throttle.getConcurrentAccessController();
-            if (concurrentAccessController != null) {
-                isInitiator = true;  // frist time creation of concurrent access controller
-                if (CONCURRENT_ACCESS_CONTROLLERS.containsKey(ID)) {
-                    if (debugOn) {
-                        log.debug("Removing the ConcurrentAccessControler with Id " + ID);
-                    }
-                    CONCURRENT_ACCESS_CONTROLLERS.remove(ID);  // removing the old access controller
-                }
-                if (debugOn) {
-                    log.debug("Initiating ConcurrentAccessControler for throttle group id " + ID);
-                }
-                CONCURRENT_ACCESS_CONTROLLERS.put(ID, concurrentAccessController);
-            }
+            handleException("Error processing the throttling policy", e, synCtx);
         }
     }
 
-    /**
-     * Looking up the ConcurrentAccessController which has initiated by a another throttle mediator
-     */
-    private void lookupConcurrentAccessController() {
-        log.info("ConcurrentAccessController has already defined for id :" + ID);
-        concurrentAccessController =
-            (ConcurrentAccessController) CONCURRENT_ACCESS_CONTROLLERS.get(ID);
-
-    }
-
-    private void handleException(String msg) {
-        log.error(msg);
-        throw new SynapseException(msg);
-    }
-
-    private void handleException(String msg, Exception e) {
-        log.error(e);
-        throw new SynapseException(msg);
-    }
-
     public String getType() {
         return ThrottleMediator.class.getName();
     }
@@ -449,12 +389,12 @@
         this.inLinePolicy = inLinePolicy;
     }
 
-    public String getOnReject() {
-        return onReject;
+    public String getOnRejectSeqKey() {
+        return onRejectSeqKey;
     }
 
-    public void setOnReject(String onReject) {
-        this.onReject = onReject;
+    public void setOnRejectSeqKey(String onRejectSeqKey) {
+        this.onRejectSeqKey = onRejectSeqKey;
     }
 
     public Mediator getOnRejectMediator() {
@@ -465,12 +405,12 @@
         this.onRejectMediator = onRejectMediator;
     }
 
-    public String getOnAccept() {
-        return onAccept;
+    public String getOnAcceptSeqKey() {
+        return onAcceptSeqKey;
     }
 
-    public void setOnAccept(String onAccept) {
-        this.onAccept = onAccept;
+    public void setOnAcceptSeqKey(String onAcceptSeqKey) {
+        this.onAcceptSeqKey = onAcceptSeqKey;
     }
 
     public Mediator getOnAcceptMediator() {
@@ -481,11 +421,11 @@
         this.onAcceptMediator = onAcceptMediator;
     }
 
-    public String getID() {
-        return ID;
+    public String getId() {
+        return id;
     }
 
-    public void setID(String ID) {
-        this.ID = ID;
+    public void setId(String id) {
+        this.id = id;
     }
 }

Modified: webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediatorFactory.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediatorFactory.java?rev=584267&r1=584266&r2=584267&view=diff
==============================================================================
--- webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediatorFactory.java (original)
+++ webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediatorFactory.java Fri Oct 12 13:50:16 2007
@@ -71,7 +71,7 @@
 
         String id = elem.getAttributeValue(new QName(XMLConfigConstants.NULL_NAMESPACE, "id"));
         if (id != null) {
-            throttleMediator.setID(id.trim());
+            throttleMediator.setId(id.trim());
         }
 
         SequenceMediatorFactory mediatorFactory = new SequenceMediatorFactory();
@@ -80,7 +80,7 @@
         if (onReject != null) {
             String onRejectValue = onReject.getAttributeValue();
             if (onRejectValue != null) {
-                throttleMediator.setOnReject(onRejectValue.trim());
+                throttleMediator.setOnRejectSeqKey(onRejectValue.trim());
             }
         } else {
             OMElement onRejectMediatorElement = elem.getFirstChildWithName(
@@ -95,7 +95,7 @@
         if (onAccept != null) {
             String onAcceptValue = onAccept.getAttributeValue();
             if (onAcceptValue != null) {
-                throttleMediator.setOnAccept(onAcceptValue);
+                throttleMediator.setOnAcceptSeqKey(onAcceptValue);
             }
         } else {
             OMElement onAcceptMediatorElement = elem.getFirstChildWithName(

Modified: webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediatorSerializer.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediatorSerializer.java?rev=584267&r1=584266&r2=584267&view=diff
==============================================================================
--- webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediatorSerializer.java (original)
+++ webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/throttle/ThrottleMediatorSerializer.java Fri Oct 12 13:50:16 2007
@@ -61,13 +61,13 @@
         }
         saveTracingState(throttle, throttleMediator);
 
-        String id = throttleMediator.getID();
+        String id = throttleMediator.getId();
         if(id != null){
             throttle.addAttribute(fac.createOMAttribute(
                     "id", nullNS, id));
         }
         
-        String onReject = throttleMediator.getOnReject();
+        String onReject = throttleMediator.getOnRejectSeqKey();
         if (onReject != null) {
             throttle.addAttribute(fac.createOMAttribute(XMLConfigConstants.ONREJECT, nullNS, onReject));
         } else {
@@ -80,7 +80,7 @@
                 throttle.addChild(element);
             }
         }
-        String onAccept = throttleMediator.getOnAccept();
+        String onAccept = throttleMediator.getOnAcceptSeqKey();
         if (onAccept != null) {
             throttle.addAttribute(fac.createOMAttribute(XMLConfigConstants.ONACCEPT, nullNS, onAccept));
         } else {



---------------------------------------------------------------------
To unsubscribe, e-mail: synapse-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: synapse-dev-help@ws.apache.org