You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@synapse.apache.org by in...@apache.org on 2007/03/12 07:26:46 UTC

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

Author: indika
Date: Sun Mar 11 23:26:44 2007
New Revision: 517111

URL: http://svn.apache.org/viewvc?view=rev&rev=517111
Log:
add trace capability to the Throttle Mediator 

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?view=diff&rev=517111&r1=517110&r2=517111
==============================================================================
--- 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 Sun Mar 11 23:26:44 2007
@@ -16,12 +16,12 @@
 package org.apache.synapse.mediators.throttle;
 
 import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.OMNode;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.neethi.PolicyEngine;
 import org.apache.synapse.MessageContext;
 import org.apache.synapse.SynapseException;
+import org.apache.synapse.Constants;
 import org.apache.synapse.config.Entry;
 import org.apache.synapse.core.axis2.Axis2MessageContext;
 import org.apache.synapse.mediators.AbstractMediator;
@@ -38,7 +38,7 @@
 public class ThrottleMediator extends AbstractMediator {
 
     private static final Log log = LogFactory.getLog(ThrottleMediator.class);
-
+    private static final Log trace = LogFactory.getLog(Constants.TRACE_LOGGER);
     /** The key for getting policy value - key refer to registry entry  */
     private String policyKey = null;
     /** InLine policy object - XML   */
@@ -47,20 +47,30 @@
     Throttle throttle = null;
 
     public boolean mediate(MessageContext synCtx) {
-        //init method to init throttle
-        init(synCtx);
-        // check access allow or not
-        return canAccess(synCtx);
-
+        boolean shouldTrace = shouldTrace(synCtx.getTracingState());
+        try {
+            if (shouldTrace) {
+                trace.trace("Start : Throttle mediator");
+            }
+            //init method to init throttle
+            init(synCtx, shouldTrace);
+            // check access allow or not
+            return canAccess(synCtx, shouldTrace);
+        } finally {
+            if (shouldTrace) {
+                trace.trace("End : Throttle mediator");
+            }
+        }
     }
 
     /**
      * To check whether allow access or not for caller
      * Current Implementaion only support IP Based Throttling
+     *
      * @param synContext
      * @return boolean which indicate whether this caller can or not access
      */
-    protected boolean canAccess(MessageContext synContext) {
+    protected boolean canAccess(MessageContext synContext, boolean shouldTrace) {
 
         if (throttle == null) {
             log.info("Can not find a throttle");
@@ -72,6 +82,9 @@
         Object remoteIP = axis2MessageContext.getProperty(
                 org.apache.axis2.context.MessageContext.REMOTE_ADDR);
         if (remoteIP == null) {
+            if (shouldTrace) {
+                trace.trace("IP Address of the caller :" + remoteIP);
+            }
             log.info("IP address of the caller can not find - Currently only support caller-IP base access control" +
                     "- Thottling will not happen ");
             return true;
@@ -86,7 +99,11 @@
                 AccessController accessControler = AccessControllerFactory.createAccessControler(ThrottleConstants.IP_BASE);
                 boolean canAccess = accessControler.canAccess(throttleContext, remoteIP);
                 if (!canAccess) {
-                    log.info("Access has currently been denied by the IP_BASE throttle for IP :\t" + remoteIP);
+                    String msg = "Access has currently been denied by the IP_BASE throttle for IP :\t" + remoteIP;
+                    if (shouldTrace) {
+                        trace.trace(msg);
+                    }
+                    log.info(msg);
                 }
                 return canAccess;
             }
@@ -104,9 +121,10 @@
      * Any runtime changes to the policy will take effect
      * 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
      */
-    protected void init(MessageContext synContext) {
+    protected void init(MessageContext synContext, boolean shouldTrace) {
 
         boolean reCreate = false; // It is not need to recreate ,if property is not dyanamic
         OMElement policyOmElement = null;
@@ -131,6 +149,9 @@
         if (policyOmElement == null) {
             log.warn("Cant not find a Policy - Throttling will not occur");
             return;
+        }
+        if (shouldTrace) {
+            trace.trace("Throttle Policy :" + policyOmElement.toString());
         }
         if (!reCreate) {
             //The first time creation

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?view=diff&rev=517111&r1=517110&r2=517111
==============================================================================
--- 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 Sun Mar 11 23:26:44 2007
@@ -63,6 +63,9 @@
         } else {
             handleException("Throttle Mediator must have a policy");
         }
+        // after successfully creating the mediator
+        // set its common attributes such as tracing etc
+        initMediator(throttleMediator,elem);
         return throttleMediator;
     }
 

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?view=diff&rev=517111&r1=517110&r2=517111
==============================================================================
--- 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 Sun Mar 11 23:26:44 2007
@@ -55,6 +55,7 @@
                 throttle.addChild(policy);
             }
         }
+        finalizeSerialization(throttle, throttleMediator);           
         if (parent != null) {
             parent.addChild(throttle);
         }



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