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/02 15:14:49 UTC

svn commit: r581225 - in /webservices/synapse/trunk/java/modules: core/src/main/java/org/apache/synapse/ core/src/main/java/org/apache/synapse/config/xml/endpoints/ core/src/main/java/org/apache/synapse/endpoints/ core/src/main/java/org/apache/synapse/...

Author: asankha
Date: Tue Oct  2 06:14:48 2007
New Revision: 581225

URL: http://svn.apache.org/viewvc?rev=581225&view=rev
Log:
review mediators in extensions and endpoints code

Modified:
    webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java
    webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointFactory.java
    webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointSerializer.java
    webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointFactory.java
    webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointSerializer.java
    webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AddressEndpoint.java
    webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/WSDLEndpoint.java
    webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/utils/EndpointDefinition.java
    webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/base/SequenceMediator.java
    webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/SendMediator.java
    webservices/synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/config/xml/SendMediatorSerializationTest.java
    webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMediator.java
    webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/spring/SpringMediator.java

Modified: webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java?rev=581225&r1=581224&r2=581225&view=diff
==============================================================================
--- webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java (original)
+++ webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java Tue Oct  2 06:14:48 2007
@@ -200,11 +200,12 @@
     //- Endpoints processing constants -
     /** Property name to store the last endpoint through which the message has flowed */
     public static final String PROCESSED_ENDPOINT = "processed_endpoint";
+    
     /** A name to use for anonymous endpoints */
-    public static final String ANONYMOUS_ENDPOINTS = "AnonymousEndpoints";
+    public static final String ANONYMOUS_ENDPOINT = "AnonymousEndpoint";
 
     /** A name to use for anonymous sequences in the sequence stack */
-    public static final String ANONYMOUS_SEQUENCES = "AnonymousSequences";
+    public static final String ANONYMOUS_SEQUENCE = "AnonymousSequence";
     
     /** Message format values in EndpointDefinition. Used by address, wsdl endpoints */
     public static final String FORMAT_POX = "pox";

Modified: webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointFactory.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointFactory.java?rev=581225&r1=581224&r2=581225&view=diff
==============================================================================
--- webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointFactory.java (original)
+++ webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointFactory.java Tue Oct  2 06:14:48 2007
@@ -35,7 +35,7 @@
 /**
  * Creates AddressEndpoint using a XML configuration.
  *
- * <endpoint [name="name"]>
+ * <endpoint [name="name"] [trace="enable|disable"]>
  *   <suspendDurationOnFailue>suspend-duration</suspendDurationOnFailue>
  *   <address uri="url" [format="soap|pox"] [optimize="mtom|swa"]>
  *      .. extensibility ..
@@ -56,6 +56,15 @@
 
     private static AddressEndpointFactory instance = new AddressEndpointFactory();
 
+    /**
+     * To decide to whether statistics should have collected or not
+     */
+    private int statisticsState = SynapseConstants.STATISTICS_UNSET;
+    /**
+     * The variable that indicate tracing on or off for the current mediator
+     */
+    protected int traceState = SynapseConstants.TRACING_UNSET;
+
     private AddressEndpointFactory() {}
 
     public static AddressEndpointFactory getInstance() {
@@ -141,10 +150,10 @@
             if (statisticsValue != null) {
                 if (org.apache.synapse.config.xml.XMLConfigConstants.STATISTICS_ENABLE.equals(
                         statisticsValue)) {
-                    endpoint.setStatisticsEnable(org.apache.synapse.SynapseConstants.STATISTICS_ON);
+                    endpoint.setStatisticsState(org.apache.synapse.SynapseConstants.STATISTICS_ON);
                 } else if (org.apache.synapse.config.xml.XMLConfigConstants.STATISTICS_DISABLE.equals(
                         statisticsValue)) {
-                    endpoint.setStatisticsEnable(org.apache.synapse.SynapseConstants.STATISTICS_OFF);
+                    endpoint.setStatisticsState(org.apache.synapse.SynapseConstants.STATISTICS_OFF);
                 }
             }
         }

Modified: webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointSerializer.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointSerializer.java?rev=581225&r1=581224&r2=581225&view=diff
==============================================================================
--- webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointSerializer.java (original)
+++ webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointSerializer.java Tue Oct  2 06:14:48 2007
@@ -135,7 +135,7 @@
 //            handleException("Invalid Endpoint. Address is required");
         }
 
-        int isEnableStatistics = endpt.getStatisticsEnable();
+        int isEnableStatistics = endpt.getStatisticsState();
         String statisticsValue = null;
         if (isEnableStatistics == org.apache.synapse.SynapseConstants.STATISTICS_ON) {
             statisticsValue = org.apache.synapse.config.xml.XMLConfigConstants.STATISTICS_ENABLE;

Modified: webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointFactory.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointFactory.java?rev=581225&r1=581224&r2=581225&view=diff
==============================================================================
--- webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointFactory.java (original)
+++ webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointFactory.java Tue Oct  2 06:14:48 2007
@@ -39,7 +39,7 @@
 /**
  * Creates an WSDL based endpoint from a XML configuration.
  *
- * <endpoint [name="name"]>
+ * <endpoint [name="name"] [trace="enable|disable"]>
  *    <suspendDurationOnFailue>suspend-duration</suspendDurationOnFailue>
  *    <wsdl uri="wsdl uri" service="service name" port="port name">
  *       .. extensibility ..
@@ -175,14 +175,14 @@
                     if (statisticsValue != null) {
                         if (org.apache.synapse.config.xml.XMLConfigConstants.STATISTICS_ENABLE.equals(
                                 statisticsValue)) {
-                            endpoint.setStatisticsEnable(org.apache.synapse.SynapseConstants.STATISTICS_ON);
+                            endpoint.setStatisticsState(org.apache.synapse.SynapseConstants.STATISTICS_ON);
                         } else if (org.apache.synapse.config.xml.XMLConfigConstants.STATISTICS_DISABLE.equals(
                                 statisticsValue)) {
-                            endpoint.setStatisticsEnable(org.apache.synapse.SynapseConstants.STATISTICS_OFF);
+                            endpoint.setStatisticsState(org.apache.synapse.SynapseConstants.STATISTICS_OFF);
                         }
                     }
                 }
-                wsdlEndpoint.setEndpointDefinition(endpoint);
+                wsdlEndpoint.setEndpoint(endpoint);
             } else {
                 handleException("WSDL is not specified for WSDL endpoint.");
             }

Modified: webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointSerializer.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointSerializer.java?rev=581225&r1=581224&r2=581225&view=diff
==============================================================================
--- webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointSerializer.java (original)
+++ webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/WSDLEndpointSerializer.java Tue Oct  2 06:14:48 2007
@@ -97,7 +97,7 @@
         // currently, we have to get QOS information from the endpoint definition and set them as
         // special elements under the wsdl element. in future, these information should be
         // extracted from the wsdl.
-        EndpointDefinition epAddress = wsdlEndpoint.getEndpointDefinition();
+        EndpointDefinition epAddress = wsdlEndpoint.getEndpoint();
         serializeQOSInformation(epAddress, wsdlElement);
 
         endpointElement.addChild(wsdlElement);
@@ -125,7 +125,7 @@
             wsdlElement.addAttribute(fac.createOMAttribute("format", null, "soap11"));
         }        
         
-        int isEnableStatistics = endpointDefinition.getStatisticsEnable();
+        int isEnableStatistics = endpointDefinition.getStatisticsState();
         String statisticsValue = null;
         if (isEnableStatistics == org.apache.synapse.SynapseConstants.STATISTICS_ON) {
             statisticsValue = org.apache.synapse.config.xml.XMLConfigConstants.STATISTICS_ENABLE;

Modified: webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AddressEndpoint.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AddressEndpoint.java?rev=581225&r1=581224&r2=581225&view=diff
==============================================================================
--- webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AddressEndpoint.java (original)
+++ webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AddressEndpoint.java Tue Oct  2 06:14:48 2007
@@ -37,6 +37,7 @@
 public class AddressEndpoint extends FaultHandler implements Endpoint {
 
     private static final Log log = LogFactory.getLog(AddressEndpoint.class);
+    private static final Log trace = LogFactory.getLog(SynapseConstants.TRACE_LOGGER);
 
     /**
      * Name of the endpoint. Used for named endpoints which can be referred using the key attribute
@@ -95,7 +96,6 @@
      * suspendOnFailDuration has elapsed, it will be set to active.
      *
      * @param synMessageContext MessageContext of the current message. This is not used here.
-     *
      * @return true if endpoint is active. false otherwise.
      */
     public boolean isActive(MessageContext synMessageContext) {
@@ -114,8 +114,7 @@
      * Sets if endpoint active or not. if endpoint is set as failed (active = false), the recover on
      * time is calculated so that it will be activated after the recover on time.
      *
-     * @param active true if active. false otherwise.
-     *
+     * @param active            true if active. false otherwise.
      * @param synMessageContext MessageContext of the current message. This is not used here.
      */
     public synchronized void setActive(boolean active, MessageContext synMessageContext) {
@@ -145,40 +144,54 @@
      */
     public void send(MessageContext synCtx) {
 
+        boolean traceOn = isTraceOn(synCtx);
+        boolean traceOrDebugOn = isTraceOrDebugOn(traceOn);
+
+        if (traceOrDebugOn) {
+            traceOrDebug(traceOn, "Start : Address Endpoint");
+
+            if (traceOn && trace.isTraceEnabled()) {
+                trace.trace("Message : " + synCtx);
+            }
+        }
+
         String endPointName = this.getName();
-        if(endPointName == null) {
-            endPointName = SynapseConstants.ANONYMOUS_ENDPOINTS;
+        if (endPointName == null) {
+            endPointName = SynapseConstants.ANONYMOUS_ENDPOINT;
         }
+
         // Setting Required property to collect the End Point statistics
-        boolean statisticsEnable =
-                (org.apache.synapse.SynapseConstants.STATISTICS_ON == endpoint.getStatisticsEnable());
+        boolean statisticsEnable = (SynapseConstants.STATISTICS_ON == endpoint.getStatisticsState());
         if (statisticsEnable) {
             EndPointStatisticsStack endPointStatisticsStack = null;
             Object statisticsStackObj =
-                    synCtx.getProperty(org.apache.synapse.SynapseConstants.ENDPOINT_STATS);
+                synCtx.getProperty(org.apache.synapse.SynapseConstants.ENDPOINT_STATS);
             if (statisticsStackObj == null) {
                 endPointStatisticsStack = new EndPointStatisticsStack();
                 synCtx.setProperty(org.apache.synapse.SynapseConstants.ENDPOINT_STATS,
-                        endPointStatisticsStack);
+                    endPointStatisticsStack);
             } else if (statisticsStackObj instanceof EndPointStatisticsStack) {
                 endPointStatisticsStack = (EndPointStatisticsStack) statisticsStackObj;
             }
             if (endPointStatisticsStack != null) {
                 boolean isFault = synCtx.getEnvelope().getBody().hasFault();
                 endPointStatisticsStack.put(endPointName, System.currentTimeMillis(),
-                        !synCtx.isResponse(), statisticsEnable, isFault);
+                    !synCtx.isResponse(), statisticsEnable, isFault);
             }
         }
 
         if (endpoint.getAddress() != null) {
-            if (log.isDebugEnabled()) {
-                log.debug("Sending message to endpoint :: name = " +
-                        endPointName + " resolved address = " + endpoint.getAddress());
-                log.debug("SOAPAction: " + (synCtx.getSoapAction() != null ?
-                        synCtx.getSoapAction() : "null"));
-                log.debug("WSA-Action: " + (synCtx.getWSAAction() != null ?
-                        synCtx.getWSAAction() : "null"));
-                log.debug("Body : \n" + synCtx.getEnvelope());
+            if (traceOrDebugOn) {
+                traceOrDebug(traceOn, "Sending message to endpoint : " +
+                    endPointName + " resolves to address = " + endpoint.getAddress());
+                traceOrDebug(traceOn, "SOAPAction: " + (synCtx.getSoapAction() != null ?
+                    synCtx.getSoapAction() : "null"));
+                traceOrDebug(traceOn, "WSA-Action: " + (synCtx.getWSAAction() != null ?
+                    synCtx.getWSAAction() : "null"));
+
+                if (traceOn && trace.isTraceEnabled()) {
+                    trace.trace("Envelope : \n" + synCtx.getEnvelope());
+                }
             }
         }
 
@@ -220,6 +233,42 @@
             if (!faultStack.isEmpty()) {
                 ((FaultHandler) faultStack.pop()).handleFault(synCtx);
             }
+        }
+    }
+
+    /**
+     * Should this mediator perform tracing? True if its explicitly asked to
+     * trace, or its parent has been asked to trace and it does not reject it
+     * @param msgCtx the current message
+     * @return true if tracing should be performed
+     */
+    protected boolean isTraceOn(MessageContext msgCtx) {
+        return
+            (endpoint.getTraceState() == SynapseConstants.TRACING_ON) ||
+            (endpoint.getTraceState() == SynapseConstants.TRACING_UNSET &&
+                msgCtx.getTracingState() == SynapseConstants.TRACING_ON);
+    }
+
+    /**
+     * Is tracing or debug logging on?
+     * @param isTraceOn is tracing known to be on?
+     * @return true, if either tracing or debug logging is on
+     */
+    protected boolean isTraceOrDebugOn(boolean isTraceOn) {
+        return isTraceOn || log.isDebugEnabled();
+    }
+
+    /**
+     * Perform Trace and Debug logging of a message @INFO (trace) and DEBUG (log)
+     * @param traceOn is runtime trace on for this message?
+     * @param msg the message to log/trace
+     */
+    protected void traceOrDebug(boolean traceOn, String msg) {
+        if (traceOn) {
+            trace.info(msg);
+        }
+        if (log.isDebugEnabled()) {
+            log.debug(msg);
         }
     }
 }

Modified: webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/WSDLEndpoint.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/WSDLEndpoint.java?rev=581225&r1=581224&r2=581225&view=diff
==============================================================================
--- webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/WSDLEndpoint.java (original)
+++ webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/WSDLEndpoint.java Tue Oct  2 06:14:48 2007
@@ -36,12 +36,13 @@
  * not access the wsdl document at runtime to obtain endpoint information. If it is neccessary to
  * create an endpoint using a dynamic wsdl, store the endpoint configuration in the registry and
  * create a dynamic wsdl endpoint using that registry key.
- *
+ * <p/>
  * TODO: This should allow variuos policies to be applied on fine grained level (e.g. operations).
  */
 public class WSDLEndpoint extends FaultHandler implements Endpoint {
 
     private static final Log log = LogFactory.getLog(AddressEndpoint.class);
+    private static final Log trace = LogFactory.getLog(SynapseConstants.TRACE_LOGGER);
 
     private String name = null;
     private String wsdlURI;
@@ -63,7 +64,7 @@
 
     private boolean active = true;
     private Endpoint parentEndpoint = null;
-    private EndpointDefinition endpointDefinition = null;
+    private EndpointDefinition endpoint = null;
 
     /**
      * Sends the message through this endpoint. This method just handles statistics related functions
@@ -76,44 +77,58 @@
      */
     public void send(MessageContext synCtx) {
 
+        boolean traceOn = isTraceOn(synCtx);
+        boolean traceOrDebugOn = isTraceOrDebugOn(traceOn);
+
+        if (traceOrDebugOn) {
+            traceOrDebug(traceOn, "Start : Address Endpoint");
+
+            if (traceOn && trace.isTraceEnabled()) {
+                trace.trace("Message : " + synCtx);
+            }
+        }
+
         String eprAddress = null;
-        if (endpointDefinition.getAddress() != null) {
-            eprAddress = endpointDefinition.getAddress().toString();
+        if (endpoint.getAddress() != null) {
+
+            eprAddress = endpoint.getAddress();
             String endPointName = this.getName();
             if (endPointName == null) {
-                endPointName = SynapseConstants.ANONYMOUS_ENDPOINTS;
+                endPointName = SynapseConstants.ANONYMOUS_ENDPOINT;
             }
+
             // Setting Required property to collect the End Point statistics
             boolean statisticsEnable =
-                    (org.apache.synapse.SynapseConstants.STATISTICS_ON
-                            == endpointDefinition.getStatisticsEnable());
+                (SynapseConstants.STATISTICS_ON == endpoint.getStatisticsState());
+            
             if (statisticsEnable) {
                 EndPointStatisticsStack endPointStatisticsStack = null;
                 Object statisticsStackObj =
-                        synCtx.getProperty(org.apache.synapse.SynapseConstants.ENDPOINT_STATS);
+                    synCtx.getProperty(org.apache.synapse.SynapseConstants.ENDPOINT_STATS);
                 if (statisticsStackObj == null) {
                     endPointStatisticsStack = new EndPointStatisticsStack();
                     synCtx.setProperty(org.apache.synapse.SynapseConstants.ENDPOINT_STATS,
-                            endPointStatisticsStack);
+                        endPointStatisticsStack);
                 } else if (statisticsStackObj instanceof EndPointStatisticsStack) {
                     endPointStatisticsStack = (EndPointStatisticsStack) statisticsStackObj;
                 }
                 if (endPointStatisticsStack != null) {
                     boolean isFault = synCtx.getEnvelope().getBody().hasFault();
                     endPointStatisticsStack.put(endPointName, System.currentTimeMillis(),
-                            !synCtx.isResponse(), statisticsEnable, isFault);
+                        !synCtx.isResponse(), statisticsEnable, isFault);
                 }
             }
-            if (log.isDebugEnabled()) {
-                log.debug("Sending message to endpoint :: name = " +
-                        endPointName + " resolved address = " + eprAddress);
-                log.debug("Sending To: " + (synCtx.getTo() != null ?
-                        synCtx.getTo().getAddress() : "null"));
-                log.debug("SOAPAction: " + (synCtx.getSoapAction() != null ?
-                        synCtx.getSoapAction() : "null"));
-                log.debug("WSA-Action: " + (synCtx.getWSAAction() != null ?
-                        synCtx.getWSAAction() : "null"));
-                log.debug("Body : \n" + synCtx.getEnvelope());
+            if (traceOrDebugOn) {
+                traceOrDebug(traceOn, "Sending message to WSDL endpoint : " +
+                    endPointName + " resolves to address = " + eprAddress);
+                traceOrDebug(traceOn, "SOAPAction: " + (synCtx.getSoapAction() != null ?
+                    synCtx.getSoapAction() : "null"));
+                traceOrDebug(traceOn, "WSA-Action: " + (synCtx.getWSAAction() != null ?
+                    synCtx.getWSAAction() : "null"));
+
+                if (traceOn && trace.isTraceEnabled()) {
+                    trace.trace("Envelope : \n" + synCtx.getEnvelope());
+                }
             }
 
             // register this as the immediate fault handler for this message.
@@ -122,7 +137,7 @@
             // add this as the last endpoint to process this message. it is used by statistics code.
             synCtx.setProperty(SynapseConstants.PROCESSED_ENDPOINT, this);
 
-            synCtx.getEnvironment().send(endpointDefinition, synCtx);
+            synCtx.getEnvironment().send(endpoint, synCtx);
         }
     }
 
@@ -197,7 +212,6 @@
      * suspendOnFailDuration has elapsed, it will be set to active.
      *
      * @param synMessageContext MessageContext of the current message. This is not used here.
-     *
      * @return true if endpoint is active. false otherwise.
      */
     public boolean isActive(MessageContext synMessageContext) {
@@ -215,8 +229,7 @@
      * Sets if endpoint active or not. if endpoint is set as failed (active = false), the recover on
      * time is calculated so that it will be activated after the recover on time.
      *
-     * @param active true if active. false otherwise.
-     *
+     * @param active            true if active. false otherwise.
      * @param synMessageContext MessageContext of the current message. This is not used here.
      */
     public void setActive(boolean active, MessageContext synMessageContext) {
@@ -236,11 +249,47 @@
         this.parentEndpoint = parentEndpoint;
     }
 
-    public EndpointDefinition getEndpointDefinition() {
-        return endpointDefinition;
+    public EndpointDefinition getEndpoint() {
+        return endpoint;
+    }
+
+    public void setEndpoint(EndpointDefinition endpoint) {
+        this.endpoint = endpoint;
     }
 
-    public void setEndpointDefinition(EndpointDefinition endpointDefinition) {
-        this.endpointDefinition = endpointDefinition;
+    /**
+     * Should this mediator perform tracing? True if its explicitly asked to
+     * trace, or its parent has been asked to trace and it does not reject it
+     * @param msgCtx the current message
+     * @return true if tracing should be performed
+     */
+    protected boolean isTraceOn(MessageContext msgCtx) {
+        return
+            (endpoint.getTraceState() == SynapseConstants.TRACING_ON) ||
+            (endpoint.getTraceState() == SynapseConstants.TRACING_UNSET &&
+                msgCtx.getTracingState() == SynapseConstants.TRACING_ON);
+    }
+
+    /**
+     * Is tracing or debug logging on?
+     * @param isTraceOn is tracing known to be on?
+     * @return true, if either tracing or debug logging is on
+     */
+    protected boolean isTraceOrDebugOn(boolean isTraceOn) {
+        return isTraceOn || log.isDebugEnabled();
+    }
+
+    /**
+     * Perform Trace and Debug logging of a message @INFO (trace) and DEBUG (log)
+     * @param traceOn is runtime trace on for this message?
+     * @param msg the message to log/trace
+     */
+    protected void traceOrDebug(boolean traceOn, String msg) {
+        if (traceOn) {
+            trace.info(msg);
+        }
+        if (log.isDebugEnabled()) {
+            log.debug(msg);
+        }
     }
 }

Modified: webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/utils/EndpointDefinition.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/utils/EndpointDefinition.java?rev=581225&r1=581224&r2=581225&view=diff
==============================================================================
--- webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/utils/EndpointDefinition.java (original)
+++ webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/utils/EndpointDefinition.java Tue Oct  2 06:14:48 2007
@@ -66,7 +66,10 @@
     private int timeoutAction = SynapseConstants.NONE;
 
     /** To decide to whether statistics should have collected or not */
-    private int statisticsEnable = SynapseConstants.STATISTICS_UNSET;
+    private int statisticsState = SynapseConstants.STATISTICS_UNSET;
+
+    /** The variable that indicate tracing on or off for the current mediator */
+    private int traceState = SynapseConstants.TRACING_UNSET;
 
     /**
      * This should return the absolute EPR address referenced by the named endpoint. This may be possibly computed.
@@ -232,16 +235,24 @@
      *
      * @return Returns the int value that indicate statistics is enabled or not.
      */
-    public int getStatisticsEnable() {
-        return statisticsEnable;
+    public int getStatisticsState() {
+        return statisticsState;
     }
 
     /**
      * To set the statistics enable variable value
      *
-     * @param statisticsEnable
+     * @param statisticsState
      */
-    public void setStatisticsEnable(int statisticsEnable) {
-        this.statisticsEnable = statisticsEnable;
+    public void setStatisticsState(int statisticsState) {
+        this.statisticsState = statisticsState;
+    }
+
+    public int getTraceState() {
+        return traceState;
+    }
+
+    public void setTraceState(int traceState) {
+        this.traceState = traceState;
     }
 }

Modified: webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/base/SequenceMediator.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/base/SequenceMediator.java?rev=581225&r1=581224&r2=581225&view=diff
==============================================================================
--- webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/base/SequenceMediator.java (original)
+++ webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/base/SequenceMediator.java Tue Oct  2 06:14:48 2007
@@ -94,7 +94,7 @@
                     sequenceStack = new SequenceStatisticsStack();
                     synCtx.setProperty(SynapseConstants.SEQUENCE_STATS, sequenceStack);
                 }
-                String seqName = (name == null ? SynapseConstants.ANONYMOUS_SEQUENCES : name);
+                String seqName = (name == null ? SynapseConstants.ANONYMOUS_SEQUENCE : name);
                 boolean isFault = synCtx.getEnvelope().getBody().hasFault();
                 sequenceStack.put(seqName, System.currentTimeMillis(),
                         !synCtx.isResponse(), statsOn, isFault);

Modified: webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/SendMediator.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/SendMediator.java?rev=581225&r1=581224&r2=581225&view=diff
==============================================================================
--- webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/SendMediator.java (original)
+++ webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/SendMediator.java Tue Oct  2 06:14:48 2007
@@ -68,12 +68,15 @@
                 StringBuffer sb = new StringBuffer();
                 sb.append("Sending " + (synCtx.isResponse() ? "response" : "request")
                     + " message using implicit message properties..");
-                sb.append("Sending To: " + (synCtx.getTo() != null ?
+                sb.append("\nSending To: " + (synCtx.getTo() != null ?
                         synCtx.getTo().getAddress() : "null"));
-                sb.append("SOAPAction: " + (synCtx.getWSAAction() != null ?
+                sb.append("\nSOAPAction: " + (synCtx.getWSAAction() != null ?
                         synCtx.getWSAAction() : "null"));
-                sb.append("Body : \n" + synCtx.getEnvelope());
                 traceOrDebug(traceOn, sb.toString());
+            }
+
+            if (traceOn && trace.isTraceEnabled()) {
+                trace.trace("Envelope : " + synCtx.getEnvelope());
             }
 
             if (synCtx.isResponse()) {

Modified: webservices/synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/config/xml/SendMediatorSerializationTest.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/config/xml/SendMediatorSerializationTest.java?rev=581225&r1=581224&r2=581225&view=diff
==============================================================================
--- webservices/synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/config/xml/SendMediatorSerializationTest.java (original)
+++ webservices/synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/config/xml/SendMediatorSerializationTest.java Tue Oct  2 06:14:48 2007
@@ -30,7 +30,6 @@
 import javax.xml.stream.XMLStreamReader;
 import javax.xml.stream.XMLInputFactory;
 import javax.xml.stream.XMLStreamException;
-import java.util.ArrayList;
 import java.util.List;
 import java.io.StringReader;
 
@@ -114,8 +113,8 @@
 
         assertEquals(
                 "Addressing information is not serialized properly",
-                ep1.getEndpointDefinition().isAddressingOn(),
-                ep2.getEndpointDefinition().isAddressingOn());
+                ep1.getEndpoint().isAddressingOn(),
+                ep2.getEndpoint().isAddressingOn());
     }
 
     public void testSimpleLoadbalanceSendSerialization() {

Modified: webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMediator.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMediator.java?rev=581225&r1=581224&r2=581225&view=diff
==============================================================================
--- webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMediator.java (original)
+++ webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMediator.java Tue Oct  2 06:14:48 2007
@@ -143,19 +143,22 @@
      * @return the boolean result from the script invocation
      */
     public boolean mediate(MessageContext synCtx) {
-        if (log.isDebugEnabled()) {
-            log.debug("Script Mediator - mediate() # Language : " + language +
-                    (key == null ? " inline script" : " script with key : " + key) +
-                    " function : " + function);
+
+        boolean traceOn = isTraceOn(synCtx);
+        boolean traceOrDebugOn = isTraceOrDebugOn(traceOn);
+
+        if (traceOrDebugOn) {
+            traceOrDebug(traceOn, "Start : Script mediator");
+
+            if (traceOn && trace.isTraceEnabled()) {
+                trace.trace("Message : " + synCtx);
+            }
         }
 
-        boolean shouldTrace = shouldTrace(synCtx.getTracingState());
-
-        if (shouldTrace) {
-            trace.trace("Start : Script mediator # Language : " + language +
-                    (key == null ? " inline script" : " script with key : " + key) +
-                    " function : " + function);
-            trace.trace("Invoking inline script for current message : " + synCtx.getEnvelope());
+        if (traceOrDebugOn) {
+            traceOrDebug(traceOn, "Scripting language : " + language + " source " +
+                (key == null ? ": specified inline " : " loaded with key : " + key) +
+                (function != null ? " function : " + function : ""));
         }
 
         boolean returnValue;
@@ -168,9 +171,12 @@
             }
         }
 
-        if (shouldTrace) {
+        if (traceOn && trace.isTraceEnabled()) {
             trace.trace("Result message after execution of script : " + synCtx.getEnvelope());
-            trace.trace("End : Script mediator " + returnValue);
+        }
+
+        if (traceOrDebugOn) {
+            traceOrDebug(traceOn, "End : Script mediator " + returnValue);
         }
 
         return returnValue;
@@ -193,9 +199,10 @@
             }
 
         } catch (ScriptException e) {
-            handleException("The Script engine returned an error executing the " +
-                (key == null ? "inline " : "external ") + language + " script" +
-                (key != null? " : " + key : ""), e);
+            handleException("The script engine returned an error executing the " +
+                (key == null ? "inlined " : "external ") + language + " script" +
+                (key != null? " : " + key : "") +
+                (function != null ? " function " + function : ""), e, synCtx);
             returnValue = false;
         }
         return returnValue;
@@ -244,14 +251,20 @@
      */
     protected void initInlineScript() {
         try {
-
             initScriptEngine();
 
             if (scriptEngine instanceof Compilable) {
+                if (log.isDebugEnabled()) {
+                    log.debug("Script engine supports Compilable interface, compiling script code..");
+                }
                 compiledScript = ((Compilable)scriptEngine).compile(scriptSourceCode);
             } else {
                 // do nothing. If the script enging doesn't support Compilable then
                 // the inline script will be evaluated on each invocation
+                if (log.isDebugEnabled()) {
+                    log.debug("Script engine does not support the Compilable interface, " +
+                        "inlined script would be evaluated on each invocation..");
+                }
             }
 
         } catch (ScriptException e) {
@@ -307,14 +320,20 @@
     }
 
     protected void initScriptEngine() {
+        if (log.isDebugEnabled()) {
+            log.debug("Initializing script mediator for language : " + language);
+        }
+
         ScriptEngineManager manager = new ScriptEngineManager();
         this.scriptEngine = manager.getEngineByExtension(language);
         if (scriptEngine == null) {
-            throw new SynapseException("No script engine found for language: " + language);
+            handleException("No script engine found for language: " + language);
         }
         xmlHelper = XMLHelper.getArgHelper(scriptEngine);
 
         this.multiThreadedEngine = scriptEngine.getFactory().getParameter("THREADING") != null;
+        log.debug("Script mediator for language : " + language +
+            " supports multithreading? : " + multiThreadedEngine);
     }
 
     public String getLanguage() {
@@ -333,9 +352,8 @@
         return scriptSourceCode;
     }
 
-    private void handleException(String msg, Exception e) {
-        log.error(msg, e);
-        throw new SynapseException(msg, e);
+    private void handleException(String msg) {
+        log.error(msg);
+        throw new SynapseException(msg);
     }
-
 }

Modified: webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/spring/SpringMediator.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/spring/SpringMediator.java?rev=581225&r1=581224&r2=581225&view=diff
==============================================================================
--- webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/spring/SpringMediator.java (original)
+++ webservices/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/spring/SpringMediator.java Tue Oct  2 06:14:48 2007
@@ -58,21 +58,28 @@
 
     public boolean mediate(MessageContext synCtx) {
 
-        boolean shouldTrace = shouldTrace(synCtx.getTracingState());
-        if (shouldTrace) {
-            trace.trace("Start : Spring mediator");
+        boolean traceOn = isTraceOn(synCtx);
+        boolean traceOrDebugOn = isTraceOrDebugOn(traceOn);
+
+        if (traceOrDebugOn) {
+            traceOrDebug(traceOn, "Start : Spring mediator");
+
+            if (traceOn && trace.isTraceEnabled()) {
+                trace.trace("Message : " + synCtx);
+            }
         }
+
         Entry entry = synCtx.getConfiguration().getEntryDefinition(configKey);
 
         // if the configKey refers to a dynamic property
         if (entry != null && entry.isDynamic()) {
             if (!entry.isCached() || entry.isExpired()) {
-                buildAppContext(synCtx);
+                buildAppContext(synCtx, traceOrDebugOn, traceOn);
             }
         // if the property is not a DynamicProperty, we will create an ApplicationContext only once
         } else {
             if (appContext == null) {
-                buildAppContext(synCtx);
+                buildAppContext(synCtx, traceOrDebugOn, traceOn);
             }
         }
 
@@ -81,44 +88,45 @@
             Object o = appContext.getBean(beanName);    
             if (o != null && Mediator.class.isAssignableFrom(o.getClass())) {
                 Mediator m = (Mediator) o;
-                if (shouldTrace) {
-                    trace.trace("Loaded mediator from bean : " + beanName + " executing...");
+                if (traceOrDebugOn) {
+                    traceOrDebug(traceOn, "Loaded mediator from bean : " + beanName + " executing...");
                 }
                 return m.mediate(synCtx);
 
             } else {
-                if (shouldTrace) {
-                    trace.trace("Unable to load mediator from bean : " + beanName);
+                if (traceOrDebugOn) {
+                    traceOrDebug(traceOn, "Unable to load mediator from bean : " + beanName);
                 }
                 handleException("Could not load bean named : " + beanName +
-                    " from the Spring configuration with key : " + configKey);
+                    " from the Spring configuration with key : " + configKey, synCtx);
             }
         } else {
-            handleException("Cannot reference Spring application context with key : " + configKey);
+            handleException("Cannot reference application context with key : " + configKey, synCtx);
         }
-        if (shouldTrace) {
-            trace.trace("End : Spring mediator");
+
+        if (traceOrDebugOn) {
+            traceOrDebug(traceOn, "End : Spring mediator");
         }
         return true;
     }
 
-    private synchronized void buildAppContext(MessageContext synCtx) {
-        if (log.isDebugEnabled()) {
-            log.debug("Creating Spring ApplicationContext from property key : " + configKey);
+    private synchronized void buildAppContext(MessageContext synCtx,
+        boolean traceOrDebugOn, boolean traceOn) {
+
+        if (traceOrDebugOn) {
+            traceOrDebug(traceOn, "Creating Spring ApplicationContext from key : " + configKey);
         }
         GenericApplicationContext appContext = new GenericApplicationContext();
         XmlBeanDefinitionReader xbdr = new XmlBeanDefinitionReader(appContext);
         xbdr.setValidating(false);
-        xbdr.loadBeanDefinitions(new InputStreamResource(
-            Util.getStreamSource(
-                    synCtx.getEntry(configKey)).getInputStream()));
+        xbdr.loadBeanDefinitions(
+            new InputStreamResource(
+                Util.getStreamSource(synCtx.getEntry(configKey)).getInputStream()));
         appContext.refresh();
+        if (traceOrDebugOn) {
+            traceOrDebug(traceOn, "Spring ApplicationContext from key : " + configKey + " created");
+        }
         this.appContext = appContext;
-    }
-
-    private void handleException(String msg) {
-        log.error(msg);
-        throw new SynapseException(msg);
     }
 
     public void setBeanName(String beanName) {



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