Author: indika
Date: Mon Dec 14 09:38:26 2009
New Revision: 890247

URL: http://svn.apache.org/viewvc?rev=890247&view=rev
Log:
correct the fault stat couting - including synapse exceptions 
add capability to count stat for sequences that invoke multiple times per 
requests 
correct the stat count when synapse send a t custom response to clien or do 
make fault 

Modified:
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/FaultHandler.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsLog.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsRecord.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsReporter.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsUpdateStrategy.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/view/PerUserViewStrategy.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/view/SystemViewStrategy.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2SynapseEnvironment.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyServiceMessageReceiver.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseMessageReceiver.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/MediatorFaultHandler.java

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/FaultHandler.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/FaultHandler.java?rev=890247&r1=890246&r2=890247&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/FaultHandler.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/FaultHandler.java
 Mon Dec 14 09:38:26 2009
@@ -21,6 +21,7 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.synapse.aspects.statistics.StatisticsReporter;
 
 import java.util.Stack;
 import java.io.StringWriter;

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsLog.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsLog.java?rev=890247&r1=890246&r2=890247&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsLog.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsLog.java
 Mon Dec 14 09:38:26 2009
@@ -31,16 +31,18 @@
 
     private long time;
 
-    private boolean isResponse;
+    private boolean isResponse = false;
 
-    public StatisticsLog(String id, ComponentType componentType, boolean 
isResponse) {
-        this(id, System.currentTimeMillis(), componentType, isResponse);
+    private boolean isFault = false;
+
+    private boolean isEndAnyLog = false;
+
+    public StatisticsLog(String id, ComponentType componentType) {
+        this(id, System.currentTimeMillis(), componentType);
     }
 
-    public StatisticsLog(String id, long startTime, ComponentType 
componentType,
-                         boolean isResponse) {
+    public StatisticsLog(String id, long startTime, ComponentType 
componentType) {
         this.id = id;
-        this.isResponse = isResponse;
         this.time = startTime;
         this.componentType = componentType;
     }
@@ -60,4 +62,24 @@
     public boolean isResponse() {
         return isResponse;
     }
+
+    public boolean isFault() {
+        return isFault;
+    }
+
+    public void setFault(boolean fault) {
+        isFault = fault;
+    }
+
+    public void setResponse(boolean response) {
+        isResponse = response;
+    }
+
+    public void setEndAnyLog(boolean endAnyLog) {
+        isEndAnyLog = endAnyLog;
+    }
+
+    public boolean isEndAnyLog() {
+        return isEndAnyLog;
+    }
 }

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsRecord.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsRecord.java?rev=890247&r1=890246&r2=890247&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsRecord.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsRecord.java
 Mon Dec 14 09:38:26 2009
@@ -20,7 +20,6 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.synapse.Identifiable;
 import org.apache.synapse.aspects.ComponentType;
 
 import java.util.ArrayList;
@@ -35,10 +34,10 @@
     private static final Log log = LogFactory.getLog(StatisticsRecord.class);
     private String id;
     private final List<StatisticsLog> statisticsLogs = new 
ArrayList<StatisticsLog>();
-    private boolean isFaultResponse;
     private String clientIP;
     private String clientHost;
     private ComponentType owner;
+    private boolean isEndAnyReported = false;
 
     public StatisticsRecord(String id, String clientIP, String clientHost) {
         this.id = id;
@@ -50,10 +49,6 @@
         return id;
     }
 
-    public boolean isFaultResponse() {
-        return isFaultResponse;
-    }
-
     public String getClientIP() {
         return clientIP;
     }
@@ -62,26 +57,14 @@
         return clientHost;
     }
 
-    public void setFaultResponse(boolean faultResponse) {
-        isFaultResponse = faultResponse;
-    }
-
     /**
      * Collecting statistics for a particular component
      *
-     * @param identifiable  audit configurable component
-     * @param componentType The component that belong statistics
-     * @param isResponse    Is this Response or not
+     * @param log StatisticsLog
      */
-    public void collect(Identifiable identifiable, ComponentType 
componentType, boolean isResponse) {
-
-        if (isValid(identifiable)) {
-
-            String auditID = identifiable.getId();
-            if (log.isDebugEnabled()) {
-                log.debug("Start to reportForComponent statistics for : " + 
auditID);
-            }
-            statisticsLogs.add(new StatisticsLog(auditID, componentType, 
isResponse));
+    public void collect(StatisticsLog log) {
+        if (log != null) {
+            statisticsLogs.add(log);
         }
     }
 
@@ -90,10 +73,10 @@
      *
      * @return A Iterator for all StatisticsLogs
      */
-    public Iterator<StatisticsLog> getAllStatisticsLogs() {
+    public List<StatisticsLog> getAllStatisticsLogs() {
         final List<StatisticsLog> logs = new ArrayList<StatisticsLog>();
         logs.addAll(statisticsLogs);
-        return logs.iterator();
+        return logs;
     }
 
     /**
@@ -115,13 +98,6 @@
         return logIds.iterator();
     }
 
-    public String toString() {
-        return new StringBuffer()
-                .append("[Message id : ").append(id).append(" ]")
-                .append("[Remote  IP : ").append(clientIP).append(" ]")
-                .append("[Remote host : ").append(clientHost).append(" ]")
-                .toString();
-    }
 
     public void clearLogs() {
         statisticsLogs.clear();
@@ -135,22 +111,19 @@
         this.owner = owner;
     }
 
-    private boolean isValid(Identifiable identifiable) {
+    public boolean isEndAnyReported() {
+        return isEndAnyReported;
+    }
 
-        if (identifiable == null) {
-            if (log.isDebugEnabled()) {
-                log.debug("Invalid aspects configuration , It is null.");
-            }
-            return false;
-        }
+    public void setEndAnyReported(boolean endAnyReported) {
+        isEndAnyReported = endAnyReported;
+    }
 
-        String auditID = identifiable.getId();
-        if (auditID == null || "".equals(auditID)) {
-            if (log.isDebugEnabled()) {
-                log.debug("Invalid aspects configuration , Audit name is 
null.");
-            }
-            return false;
-        }
-        return true;
+    public String toString() {
+        return new StringBuffer()
+                .append("[Message id : ").append(id).append(" ]")
+                .append("[Remote  IP : ").append(clientIP).append(" ]")
+                .append("[Remote host : ").append(clientHost).append(" ]")
+                .toString();
     }
 }

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsReporter.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsReporter.java?rev=890247&r1=890246&r2=890247&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsReporter.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsReporter.java
 Mon Dec 14 09:38:26 2009
@@ -18,6 +18,7 @@
  */
 package org.apache.synapse.aspects.statistics;
 
+import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.synapse.Identifiable;
@@ -26,6 +27,7 @@
 import org.apache.synapse.aspects.AspectConfiguration;
 import org.apache.synapse.aspects.AspectConfigurationDetectionStrategy;
 import org.apache.synapse.aspects.ComponentType;
+import org.apache.synapse.endpoints.EndpointDefinition;
 
 /**
  * A utility to report statistics
@@ -52,7 +54,6 @@
             StatisticsRecord record = 
StatisticsReporter.getStatisticsRecord(synCtx);
             record.setOwner(componentType);
             collectStatistics(synCtx, record, configurable, componentType);
-
         }
     }
 
@@ -61,7 +62,7 @@
      *
      * @param synCtx Current Message through synapse
      */
-    public static void reportForAll(MessageContext synCtx) {
+    public static void reportForAllOnResponseReceived(MessageContext synCtx) {
 
         AspectConfiguration configuration =
                 
AspectConfigurationDetectionStrategy.getAspectConfiguration(synCtx);
@@ -85,13 +86,75 @@
             if (log.isDebugEnabled()) {
                 log.debug("Reporting a fault : " + statisticsRecord);
             }
-            statisticsRecord.collect(
-                    new AspectConfiguration(SynapseConstants.SYNAPSE_ASPECTS),
-                    ComponentType.ANY, true);
-            statisticsRecord.setFaultResponse(true);
+            StatisticsLog statisticsLog = new 
StatisticsLog(SynapseConstants.SYNAPSE_ASPECTS,
+                    ComponentType.ANY);
+            statisticsLog.setResponse(synCtx.isResponse() || 
synCtx.isFaultResponse());
+            statisticsLog.setFault(true);
+            statisticsRecord.collect(statisticsLog);
+        }
+    }
+
+    /**
+     * Reports statistics on the response message Sent
+     *
+     * @param synCtx   MessageContext instance
+     * @param endpoint EndpointDefinition instance
+     */
+    public static void reportForAllOnResponseSent(MessageContext synCtx,
+                                                  EndpointDefinition endpoint) 
{
+        if (endpoint != null) {
+            if (synCtx.getProperty(SynapseConstants.OUT_ONLY) != null) {
+                endReportForAll(synCtx, endpoint.isStatisticsEnable());
+            }
+        } else {
+            endReportForAll(synCtx, false);
+        }
+    }
+
+    /**
+     * Ends statistics reporting for any component
+     *
+     * @param synCtx             MessageContext instance
+     * @param isStatisticsEnable is stat enable
+     */
+    private static void endReportForAll(MessageContext synCtx, boolean 
isStatisticsEnable) {
+
+        if (!isStatisticsEnable) {
+            AspectConfiguration configuration =
+                    
AspectConfigurationDetectionStrategy.getAspectConfiguration(synCtx);
+            isStatisticsEnable = configuration != null && 
configuration.isStatisticsEnable();
+        }
+        if (isStatisticsEnable) {
+            StatisticsRecord statisticsRecord = 
StatisticsReporter.getStatisticsRecord(synCtx);
+            if (statisticsRecord != null && 
!statisticsRecord.isEndAnyReported()) {
+                StatisticsLog statisticsLog = new 
StatisticsLog(SynapseConstants.SYNAPSE_ASPECTS,
+                        ComponentType.ANY);
+                statisticsLog.setResponse(synCtx.isResponse() || 
synCtx.isFaultResponse());
+                statisticsLog.setFault(isFault(synCtx));
+                statisticsLog.setEndAnyLog(true);
+                statisticsRecord.collect(statisticsLog);
+                statisticsRecord.setEndAnyReported(true);
+            }
+        }
+    }
+
+    /**
+     * Ends statistics reporting after request processed
+     *
+     * @param synCtx MessageContext instance
+     */
+    public static void endReportForAllOnRequestProcessed(MessageContext 
synCtx) {
+        if (synCtx.getProperty(SynapseConstants.LAST_ENDPOINT) == null && 
!synCtx.isResponse()) {
+            endReportForAll(synCtx, false);
         }
     }
 
+    /**
+     * Gets a StatisticsRecord
+     *
+     * @param synCtx MessageContext instance
+     * @return a StatisticsRecord
+     */
     private static StatisticsRecord getStatisticsRecord(MessageContext synCtx) 
{
 
         StatisticsRecord statisticsRecord =
@@ -107,6 +170,14 @@
         return statisticsRecord;
     }
 
+    /**
+     * Collects statistics
+     *
+     * @param synCtx        MessageContext instance
+     * @param record        StatisticsRecord instance
+     * @param configurable  StatisticsConfigurable  instance
+     * @param componentType ComponentType instance
+     */
     private static void collectStatistics(MessageContext synCtx,
                                           StatisticsRecord record,
                                           StatisticsConfigurable configurable,
@@ -122,11 +193,76 @@
             synCtx.getEnvironment().setStatisticsCollector(collector);
         }
 
-        record.collect((Identifiable) configurable,
-                componentType, synCtx.isResponse());
+        record.collect(createStatisticsLog((Identifiable) configurable, 
componentType, synCtx));
 
         if (!collector.contains(record)) {
             collector.collect(record);
         }
     }
+
+    /**
+     * Factory method to create a   StatisticsLog
+     *
+     * @param identifiable  component
+     * @param componentType component type
+     * @param synCtx        MessageContext instance
+     * @return a StatisticsLog
+     */
+    private static StatisticsLog createStatisticsLog(Identifiable identifiable,
+                                                     ComponentType 
componentType,
+                                                     MessageContext synCtx) {
+        if (isValid(identifiable)) {
+            String auditID = identifiable.getId();
+            StatisticsLog statisticsLog = new StatisticsLog(auditID, 
componentType);
+            statisticsLog.setResponse(synCtx.isResponse() || 
synCtx.isFaultResponse());
+            statisticsLog.setFault(isFault(synCtx));
+            return statisticsLog;
+        }
+        return null;
+    }
+
+    /**
+     * Checks the validity of the component
+     *
+     * @param identifiable component as a
+     * @return true if the component is valid
+     */
+    private static boolean isValid(Identifiable identifiable) {
+
+        if (identifiable == null) {
+            if (log.isDebugEnabled()) {
+                log.debug("Invalid aspects configuration , It is null.");
+            }
+            return false;
+        }
+
+        String auditID = identifiable.getId();
+        if (auditID == null || "".equals(auditID)) {
+            if (log.isDebugEnabled()) {
+                log.debug("Invalid aspects configuration , Audit name is 
null.");
+            }
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Detects a fault
+     *
+     * @param context MessageContext context
+     * @return true if this is a fault
+     */
+    private static boolean isFault(MessageContext context) {
+        boolean isFault = context.isFaultResponse();
+        if (!isFault) {
+            SOAPEnvelope envelope = context.getEnvelope();
+            if (envelope != null) {
+                isFault = envelope.hasFault();
+            }
+            if (!isFault) {
+                isFault = context.getProperty(SynapseConstants.ERROR_CODE) != 
null;
+            }
+        }
+        return isFault;
+    }
 }

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsUpdateStrategy.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsUpdateStrategy.java?rev=890247&r1=890246&r2=890247&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsUpdateStrategy.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsUpdateStrategy.java
 Mon Dec 14 09:38:26 2009
@@ -19,9 +19,10 @@
 package org.apache.synapse.aspects.statistics;
 
 import org.apache.synapse.aspects.ComponentType;
+import org.apache.synapse.aspects.statistics.view.InOutStatisticsView;
 import org.apache.synapse.aspects.statistics.view.Statistics;
 
-import java.util.Iterator;
+import java.util.List;
 
 /**
  * Updates the given statistics base on statistics logs in the given 
statistics record.
@@ -35,75 +36,90 @@
         this.statisticsRecord = statisticsRecord;
     }
 
-    public void updateInFlowStatistics(String id, ComponentType componentType,
-                                       Statistics statistics) {
-        updateStatistics(id, componentType, statistics, false);
-    }
-
-    public void updateOutFlowStatistics(String id, ComponentType componentType,
-                                        Statistics statistics) {
-        updateStatistics(id, componentType, statistics, true);
-    }
-
-    private void updateStatistics(String id, ComponentType componentType,
-                                  Statistics statistics, boolean isResponse) {
+    public void updateStatistics(String id,
+                                 ComponentType componentType,
+                                 InOutStatisticsView statisticsView) {
 
         StatisticsLog startLog = null;
         StatisticsLog endLog = null;
-        final Iterator<StatisticsLog> statisticsLogs = 
statisticsRecord.getAllStatisticsLogs();
-        while (statisticsLogs.hasNext()) {
-            StatisticsLog log = statisticsLogs.next();
+        final List<StatisticsLog> statisticsLogs = 
statisticsRecord.getAllStatisticsLogs();
+        for (StatisticsLog log : statisticsLogs) {
+
             if (log == null) {
                 continue;
             }
+
             switch (componentType) {
                 case SEQUENCE: {
                     if (componentType == log.getComponentType()) {
-                        if (isResponse != log.isResponse()) {
-                            continue;
-                        }
                         if (!id.equals(log.getId())) {
                             continue;
                         }
                         if (startLog == null) {
                             startLog = log;
-                        } else if (startLog.isResponse() == log.isResponse()) {
+                        } else {
                             endLog = log;
                         }
                     }
                     break;
                 }
                 default: {
-                    if (!isResponse) {
-                        if (componentType == log.getComponentType()) {
-                            if (!id.equals(log.getId())) {
-                                continue;
-                            }
-                            if (startLog == null) {
-                                startLog = log;
-                            }
-                        }
-                        if (startLog == null) {
+                    if (componentType == log.getComponentType()) {
+                        if (!id.equals(log.getId())) {
                             continue;
                         }
-                        if (log.getComponentType() == ComponentType.ANY && 
endLog == null) {
+                        startLog = log;
+                    } else if (log.getComponentType() == ComponentType.ANY) {
+                        if (startLog != null) {
                             endLog = log;
                         }
-                    } else {
-                        if (log.getComponentType() == ComponentType.ANY) {
-                            if (startLog == null) {
-                                startLog = log;
-                            } else if (endLog == null) {
-                                endLog = log;
+                        break;
+                    }
+                }
+            }
+
+            if (endLog != null && startLog != null) {
+                Statistics statistics;
+                switch (componentType) {
+                    case SEQUENCE: {
+                        if (startLog.isResponse()) {
+                            statistics = statisticsView.getOutStatistics();
+                        } else {
+                            statistics = statisticsView.getInStatistics();
+                        }
+                        statistics.update(endLog.getTime() - 
startLog.getTime(), endLog.isFault());
+                        break;
+                    }
+                    case ENDPOINT: {
+                        statistics = statisticsView.getInStatistics();
+                        statistics.update(endLog.getTime() - 
startLog.getTime(), endLog.isFault());
+                        break;
+                    }
+                    case PROXYSERVICE: {
+                        Statistics inStatistics = 
statisticsView.getInStatistics();
+                        Statistics outStatistics = 
statisticsView.getOutStatistics();
+                        inStatistics.update(endLog.getTime() - 
startLog.getTime(), endLog.isFault());
+                        if (!endLog.isEndAnyLog()) {
+                            StatisticsLog lastLog = 
statisticsLogs.get(statisticsLogs.size() - 1);
+                            if (lastLog != endLog) {
+                                outStatistics.update(
+                                        lastLog.getTime() - endLog.getTime(), 
lastLog.isFault());
                             }
                         }
+                        return;
                     }
                 }
+                startLog = null;
+                endLog = null;
             }
         }
-        if (endLog != null && startLog != null) {
-            statistics.update(endLog.getTime() - startLog.getTime(),
-                    statisticsRecord.isFaultResponse());
+
+        if (startLog != null && componentType == ComponentType.PROXYSERVICE) {
+            Statistics inStatistics = statisticsView.getInStatistics();
+            StatisticsLog lastLog = statisticsLogs.get(statisticsLogs.size() - 
1);
+            if (lastLog != startLog) {
+                inStatistics.update(lastLog.getTime() - startLog.getTime(), 
lastLog.isFault());
+            }
         }
     }
 }

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/view/PerUserViewStrategy.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/view/PerUserViewStrategy.java?rev=890247&r1=890246&r2=890247&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/view/PerUserViewStrategy.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/view/PerUserViewStrategy.java
 Mon Dec 14 09:38:26 2009
@@ -161,12 +161,7 @@
     private void updateStatistics(String id, ComponentType type, 
InOutStatisticsView view,
                                   StatisticsUpdateStrategy strategy) {
         if (view != null) {
-            strategy.updateInFlowStatistics(id, type,
-                    view.getInStatistics());
-            if (type != ComponentType.ENDPOINT) {
-                strategy.updateOutFlowStatistics(id, type,
-                        view.getOutStatistics());
-            }
+            strategy.updateStatistics(id, type, view);
         }
     }
 

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/view/SystemViewStrategy.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/view/SystemViewStrategy.java?rev=890247&r1=890246&r2=890247&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/view/SystemViewStrategy.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/view/SystemViewStrategy.java
 Mon Dec 14 09:38:26 2009
@@ -106,12 +106,7 @@
     private void updateStatistics(String id, ComponentType type, 
InOutStatisticsView view,
                                   StatisticsUpdateStrategy strategy) {
         if (view != null) {
-            strategy.updateInFlowStatistics(id, type,
-                    view.getInStatistics());
-            if (type != ComponentType.ENDPOINT) {
-                strategy.updateOutFlowStatistics(id, type,
-                        view.getOutStatistics());
-            }
+            strategy.updateStatistics(id, type, view);
         }
     }
 

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2SynapseEnvironment.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2SynapseEnvironment.java?rev=890247&r1=890246&r2=890247&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2SynapseEnvironment.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2SynapseEnvironment.java
 Mon Dec 14 09:38:26 2009
@@ -169,15 +169,12 @@
     public void send(EndpointDefinition endpoint, MessageContext synCtx) {
         if (synCtx.isResponse()) {
 
-           StatisticsReporter.reportForAll(synCtx);
-            
             if (endpoint != null) {
-               
                 Axis2Sender.sendOn(endpoint, synCtx);
-
             } else {
                 Axis2Sender.sendBack(synCtx);
             }
+            StatisticsReporter.reportForAllOnResponseSent(synCtx, endpoint);
         } else {
             // If this request is related to session affinity endpoints - For 
client initiated session
             Dispatcher dispatcher =

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyServiceMessageReceiver.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyServiceMessageReceiver.java?rev=890247&r1=890246&r2=890247&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyServiceMessageReceiver.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyServiceMessageReceiver.java
 Mon Dec 14 09:38:26 2009
@@ -184,6 +184,8 @@
                 warn(traceOn, "Exception encountered but no fault handler 
found - " +
                     "message dropped", synCtx);
             }
+        } finally {
+            StatisticsReporter.endReportForAllOnRequestProcessed(synCtx);
         }
     }
 

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java?rev=890247&r1=890246&r2=890247&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java
 Mon Dec 14 09:38:26 2009
@@ -332,7 +332,7 @@
                 dispatcher.updateSession(synapseInMessageContext);
             }
 
-            StatisticsReporter.reportForAll(synapseInMessageContext);
+            
StatisticsReporter.reportForAllOnResponseReceived(synapseInMessageContext);
             
             // send the response message through the synapse mediation flow
             try {

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseMessageReceiver.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseMessageReceiver.java?rev=890247&r1=890246&r2=890247&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseMessageReceiver.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseMessageReceiver.java
 Mon Dec 14 09:38:26 2009
@@ -48,7 +48,7 @@
 
         StatisticsReporter.reportForComponent(synCtx,
                 
AspectConfigurationDetectionStrategy.getAspectConfiguration(synCtx),
-                ComponentType.SEQUENCE);
+                ComponentType.PROXYSERVICE);
         
         boolean traceOn = synCtx.getMainSequence().getTraceState() == 
SynapseConstants.TRACING_ON;
         boolean traceOrDebugOn = traceOn || log.isDebugEnabled();
@@ -95,6 +95,8 @@
                 warn(traceOn, "Exception encountered but no fault handler 
found - " +
                     "message dropped", synCtx);
             }
+        } finally {
+            StatisticsReporter.endReportForAllOnRequestProcessed(synCtx);
         }
     }
 

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/MediatorFaultHandler.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/MediatorFaultHandler.java?rev=890247&r1=890246&r2=890247&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/MediatorFaultHandler.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/MediatorFaultHandler.java
 Mon Dec 14 09:38:26 2009
@@ -23,6 +23,7 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.synapse.*;
 import org.apache.synapse.aspects.statistics.StatisticsReporter;
+import org.apache.synapse.aspects.ComponentType;
 import org.apache.synapse.mediators.base.SequenceMediator;
 
 /**
@@ -72,8 +73,6 @@
             name = faultMediator.getClass().getName();
         }
 
-        StatisticsReporter.reportFaultForAll(synCtx);
-        
         if (traceOrDebugOn) {
             traceOrDebugWarn(traceOn, "Executing fault handler mediator : " + 
name);
         }


Reply via email to