Author: indika
Date: Wed Sep 24 12:26:26 2008
New Revision: 698699

URL: http://svn.apache.org/viewvc?rev=698699&view=rev
Log:
add in memory statisc view 
Add more logs and comments for statistics

Added:
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/view/
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/view/PerUserDomainViewStrategy.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/view/PerUserIPViewStrategy.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/view/PerUserViewStrategy.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/view/Statistics.java
      - copied, changed from r698269, 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/Statistics.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/view/StatisticsViewStrategy.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/view/SystemViewStrategy.java
Removed:
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/Statistics.java
Modified:
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/AuditConfigurable.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/AuditConfiguration.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/AuditHelper.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/StatisticsCollector.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/StatisticsLog.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/StatisticsRecord.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/StatisticsRecordFactory.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/StatisticsReporter.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2MessageContext.java

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java?rev=698699&r1=698698&r2=698699&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java
 Wed Sep 24 12:26:26 2008
@@ -166,11 +166,11 @@
 
         public static final String STATISTICS_STACK 
="synapse.statistics.stack";     
         
-        public static final String SYNAPSE_STATISTICS_STATE = 
"synapse.statistics.state";
+        public static final String SYNAPSE_AUDIT_STATE = "synapse.audit.state";
     
         public static final String SYNAPSE_AUDIT_CONFIGURATION = 
"synapse.audit.configuration";
         
-        public static final String SYNAPSE_STATISTICS ="synapse.statistics";
+        public static final String SYNAPSE_AUDIT ="synapse.audit";
 
     //- handling of timed out events from the callbacks -
         /** The System property that states the duration at which the timeout 
handler runs */

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/AuditConfigurable.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/AuditConfigurable.java?rev=698699&r1=698698&r2=698699&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/AuditConfigurable.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/AuditConfigurable.java
 Wed Sep 24 12:26:26 2008
@@ -19,13 +19,39 @@
 package org.apache.synapse.audit;
 
 /**
- * 
+ * Capability for configurable auditing
  */
 public interface AuditConfigurable {
-    
-    public String getAuditId(); 
-    public void setAuditId(String id);   
+
+    /**
+     * Returns audit id , identifier for a particular audit
+     * Example , component name , endpoint name
+     *
+     * @return audit id
+     */
+    public String getAuditId();
+
+    /**
+     * Sets the identifier for a particular audit
+     *
+     * @param id audit id
+     */
+    public void setAuditId(String id);
+
+    /**
+     * Whether statistics has been enabled
+     *
+     * @return True if enable , o.w , false
+     */
     public boolean isStatisticsEnable();
+
+    /**
+     * To disable statistics
+     */
     public void disableStatistics();
+
+    /**
+     * To enable statistics
+     */
     public void enableStatistics();
 }

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/AuditConfiguration.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/AuditConfiguration.java?rev=698699&r1=698698&r2=698699&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/AuditConfiguration.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/AuditConfiguration.java
 Wed Sep 24 12:26:26 2008
@@ -19,20 +19,23 @@
 package org.apache.synapse.audit;
 
 /**
- *
+ * Audit configuration
+ * Currently contains only statistics configuration related things
  */
 public class AuditConfiguration implements AuditConfigurable {
 
+    /* Whether statistics enable */
     private boolean statisticsEnable = false;
-    private String AuditId;
+    /* Identifier for a particular audit configuration */
+    private String auditId;
 
     public AuditConfiguration(String auditId, boolean statisticsEnable) {
         this.statisticsEnable = statisticsEnable;
-        AuditId = auditId;
+        this.auditId = auditId;
     }
 
     public AuditConfiguration(String auditId) {
-        AuditId = auditId;
+        this.auditId = auditId;
     }
 
     public boolean isStatisticsEnable() {
@@ -40,24 +43,22 @@
     }
 
     public void disableStatistics() {
-
         if (statisticsEnable) {
             this.statisticsEnable = false;
         }
     }
 
     public void enableStatistics() {
-
         if (!statisticsEnable) {
             statisticsEnable = true;
         }
     }
 
     public String getAuditId() {
-        return AuditId;
+        return auditId;
     }
 
     public void setAuditId(String auditId) {
-        AuditId = auditId;
+        this.auditId = auditId;
     }
 }

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/AuditHelper.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/AuditHelper.java?rev=698699&r1=698698&r2=698699&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/AuditHelper.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/AuditHelper.java
 Wed Sep 24 12:26:26 2008
@@ -18,32 +18,57 @@
  */
 package org.apache.synapse.audit;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.synapse.MessageContext;
 import org.apache.synapse.SynapseConstants;
 import org.apache.synapse.audit.statatistics.StatisticsReporter;
 import org.apache.synapse.config.xml.XMLConfigConstants;
 
 /**
- *
+ * Contains helper methods required for auditing.
+ * This class need to evolved as any audit related things are adding
  */
 public class AuditHelper {
 
+    private static final Log log = LogFactory.getLog(AuditHelper.class);
+
+    /**
+     * Sets the Global audit configuration if it has been forced by setting
+     *
+     * @param synCtx Current Message through synapse
+     */
     public static void setGlobalAudit(MessageContext synCtx) {
 
         if (XMLConfigConstants.STATISTICS_ENABLE.equals(
-                
synCtx.getConfiguration().getProperty(SynapseConstants.SYNAPSE_STATISTICS_STATE)))
 {
-            AuditConfigurable auditConfigurable = new 
AuditConfiguration(SynapseConstants.SYNAPSE_STATISTICS, true);
+                
synCtx.getConfiguration().getProperty(SynapseConstants.SYNAPSE_AUDIT_STATE))) {
+            
+            AuditConfigurable auditConfigurable = new 
AuditConfiguration(SynapseConstants.SYNAPSE_AUDIT, true);
+
+            if (log.isDebugEnabled()) {
+                log.debug("Global Audit is enabled. System-wide auditing will 
be occurred.");
+            }
+
             StatisticsReporter.collect(synCtx, auditConfigurable);
             synCtx.setProperty(SynapseConstants.SYNAPSE_AUDIT_CONFIGURATION,
                     auditConfigurable);
         }
     }
 
+    /**
+     * Report Global audit for this message
+     *
+     * @param synCtx Current Message through synapse
+     */
     public static void reportGlobalAudit(MessageContext synCtx) {
-        
+
         AuditConfigurable auditConfigurable = (AuditConfigurable) 
synCtx.getProperty(
                 SynapseConstants.SYNAPSE_AUDIT_CONFIGURATION);
+        
         if (auditConfigurable != null) {
+            if (log.isDebugEnabled()) {
+                log.debug("System-wide audit record is reported.");
+            }
             StatisticsReporter.report(synCtx, auditConfigurable);
         }
     }

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/StatisticsCollector.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/StatisticsCollector.java?rev=698699&r1=698698&r2=698699&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/StatisticsCollector.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/StatisticsCollector.java
 Wed Sep 24 12:26:26 2008
@@ -18,35 +18,61 @@
  */
 package org.apache.synapse.audit.statatistics;
 
+import org.apache.synapse.audit.statatistics.view.Statistics;
+import org.apache.synapse.audit.statatistics.view.StatisticsViewStrategy;
+
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 /**
- * To collect statistics
+ * Collects statistics and provides those collected data
  */
 
 public class StatisticsCollector {
 
     private final List<StatisticsRecord> statisticsCollection = new 
ArrayList<StatisticsRecord>();
 
-    public void collect(StatisticsRecord statisticsRegistry) {
-        this.statisticsCollection.add(statisticsRegistry);
-    }
-
-    public Statistics getEndpointStatistics(String id) {
-        Statistics statistics = new Statistics();
-        for (StatisticsRecord statisticsRegistry : statisticsCollection) {
-            if (statisticsRegistry != null) {
-                StatisticsLog log = 
statisticsRegistry.getEndpointStatisticsRecord(id);
-                if (log != null) {
-                    statistics.update(log.getProcessingTime(), 
statisticsRegistry.isFaultResponse());
-                }
-            }
-        }
-        return statistics;
+    /**
+     * Registering a statistics record
+     *
+     * @param statisticsRecord statistics record instance
+     */
+    public void collect(StatisticsRecord statisticsRecord) {
+        this.statisticsCollection.add(statisticsRecord);
     }
 
+    /**
+     * Check whether given statistics record has  already been registered
+     *
+     * @param statisticsRecord statisticsRecord statistics record instance
+     * @return True if there
+     */
     public boolean contains(StatisticsRecord statisticsRecord) {
         return statisticsCollection.contains(statisticsRecord);
     }
+
+    /**
+     * Returns a particular statistics view according to a given strategy for 
a given resource with particular type
+     *
+     * @param id       Resource id
+     * @param type     Type of the resource
+     * @param strategy Statistics viewing strategy
+     * @return Statistics view
+     */
+    public Map<String, Statistics> getStatistics(String id, int type, 
StatisticsViewStrategy strategy) {
+        return strategy.determineView(id, statisticsCollection, type);
+    }
+
+    /**
+     * Returns a particular statistics view according to a given strategy for 
a given resource type
+     *
+     * @param type     type Type of the resource
+     * @param strategy strategy Statistics viewing strategy
+     * @return Statistics view
+     */
+    public Map<String, Map<String, Statistics>> getStatistics(int type, 
StatisticsViewStrategy strategy) {
+        return strategy.determineView(statisticsCollection, type);
+    }
+
 }

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/StatisticsLog.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/StatisticsLog.java?rev=698699&r1=698698&r2=698699&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/StatisticsLog.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/StatisticsLog.java
 Wed Sep 24 12:26:26 2008
@@ -19,12 +19,18 @@
 package org.apache.synapse.audit.statatistics;
 
 /**
- * 
+ *
  */
 public class StatisticsLog {
-    
-    private String id ;
-    private long startTime =-1;
+
+    public static final int ENDPOINT_STATISTICS = 0;
+
+    public static final int PROXY_SERVICE_STATISTICS = 1;
+
+    public static final int MEDIATOR_STATISTICS = 2;
+
+    private String id;
+    private long startTime = -1;
     private long endTime = -1;
 
     public StatisticsLog(String id) {
@@ -59,8 +65,8 @@
     public void setEndTime(long endTime) {
         this.endTime = endTime;
     }
-    
-    public long getProcessingTime(){
+
+    public long getProcessingTime() {
         return this.endTime - this.startTime;
     }
 }

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/StatisticsRecord.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/StatisticsRecord.java?rev=698699&r1=698698&r2=698699&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/StatisticsRecord.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/StatisticsRecord.java
 Wed Sep 24 12:26:26 2008
@@ -20,14 +20,16 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.synapse.endpoints.Endpoint;
+import org.apache.synapse.Mediator;
 import org.apache.synapse.audit.AuditConfigurable;
+import org.apache.synapse.core.axis2.ProxyService;
+import org.apache.synapse.endpoints.Endpoint;
 
 import java.util.HashMap;
 import java.util.Map;
 
 /**
- * 
+ * Holds a record for statistics for current message
  */
 public class StatisticsRecord {
 
@@ -38,8 +40,6 @@
             new HashMap<String, StatisticsLog>();
     private final Map<String, StatisticsLog> mediatorsStatisticsRecordMap =
             new HashMap<String, StatisticsLog>();
-    private final Map<String, StatisticsLog> sequencesStatisticsRecordMap =
-            new HashMap<String, StatisticsLog>();
     private final Map<String, StatisticsLog> proxyServicesStatisticsRecordMap =
             new HashMap<String, StatisticsLog>();
 
@@ -73,28 +73,48 @@
         isFaultResponse = faultResponse;
     }
 
+    /**
+     * Collecting statistics for a particular component
+     *
+     * @param auditConfigurable audit configurable component
+     */
     public void collect(AuditConfigurable auditConfigurable) {
-     
+
         if (isValid(auditConfigurable)) {
 
-            String auditID = auditConfigurable.getAuditId();             
+            String auditID = auditConfigurable.getAuditId();
+            if (log.isDebugEnabled()) {
+                log.debug("Start to collect statistics for : " + auditID);
+            }
             if (auditConfigurable instanceof Endpoint) {
                 endPointsStatisticsRecordMap.put(auditID, new 
StatisticsLog(auditID));
+            } else if (auditConfigurable instanceof ProxyService) {
+                proxyServicesStatisticsRecordMap.put(auditID, new 
StatisticsLog(auditID));
+            } else if (auditConfigurable instanceof Mediator) {
+                mediatorsStatisticsRecordMap.put(auditID, new 
StatisticsLog(auditID));
             }
-
         }
     }
 
+    /**
+     * Reporting statistics for a particular component
+     *
+     * @param auditConfigurable audit configurable component
+     */
     public void commit(AuditConfigurable auditConfigurable) {
 
         if (isValid(auditConfigurable)) {
 
             String auditID = auditConfigurable.getAuditId();
+            if (log.isDebugEnabled()) {
+                log.debug("Reporting statistics for : " + auditID);
+            }
             if (auditConfigurable instanceof Endpoint) {
-                StatisticsLog log = endPointsStatisticsRecordMap.get(auditID);
-                if (log != null) {
-                    log.setEndTime(System.currentTimeMillis());
-                }
+                commit(auditID, endPointsStatisticsRecordMap);
+            } else if (auditConfigurable instanceof ProxyService) {
+                commit(auditID, proxyServicesStatisticsRecordMap);
+            } else if (auditConfigurable instanceof Mediator) {
+                commit(auditID, mediatorsStatisticsRecordMap);
             }
         }
     }
@@ -102,17 +122,17 @@
     private boolean isValid(AuditConfigurable auditConfigurable) {
 
         if (auditConfigurable == null) {
-            if(log.isDebugEnabled()){
-                    log.debug("TODO");
-                }
+            if (log.isDebugEnabled()) {
+                log.debug("Invalid audit configuration , It is null.");
+            }
             return false;
         }
 
         if (auditConfigurable.isStatisticsEnable()) {
             String auditID = auditConfigurable.getAuditId();
             if (auditID == null || "".equals(auditID)) {
-                if(log.isDebugEnabled()){
-                    log.debug("TODO");
+                if (log.isDebugEnabled()) {
+                    log.debug("Invalid audit configuration , Audit name is 
null.");
                 }
                 return false;
             }
@@ -120,8 +140,43 @@
         }
         return false;
     }
-    
-    public StatisticsLog getEndpointStatisticsRecord(String name){
+
+    private void commit(String auditID, Map<String, StatisticsLog> map) {
+        StatisticsLog log = map.get(auditID);
+        if (log != null) {
+            log.setEndTime(System.currentTimeMillis());
+        }
+    }
+
+    public StatisticsLog getEndpointStatisticsRecord(String name) {
         return endPointsStatisticsRecordMap.get(name);
     }
+
+    public StatisticsLog getMediatorStatisticsRecord(String name) {
+        return mediatorsStatisticsRecordMap.get(name);
+    }
+
+    public StatisticsLog getProxyServiceStatisticsRecord(String name) {
+        return proxyServicesStatisticsRecordMap.get(name);
+    }
+
+    public Map<String, StatisticsLog> getAllEndpointStatisticsRecords() {
+        return endPointsStatisticsRecordMap;
+    }
+
+    public Map<String, StatisticsLog> getAllMediatorStatisticsRecords() {
+        return mediatorsStatisticsRecordMap;
+    }
+
+    public Map<String, StatisticsLog> getAllProxyServiceStatisticsRecords() {
+        return proxyServicesStatisticsRecordMap;
+    }
+
+    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/audit/statatistics/StatisticsRecordFactory.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/StatisticsRecordFactory.java?rev=698699&r1=698698&r2=698699&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/StatisticsRecordFactory.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/StatisticsRecordFactory.java
 Wed Sep 24 12:26:26 2008
@@ -18,23 +18,36 @@
  */
 package org.apache.synapse.audit.statatistics;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.synapse.MessageContext;
 import org.apache.synapse.core.axis2.Axis2MessageContext;
 import org.apache.synapse.transport.nhttp.NhttpConstants;
 
 /**
- * 
+ * Factory for creating a StatisticsRecord
  */
 public class StatisticsRecordFactory {
-    
+
+    private static final Log log = 
LogFactory.getLog(StatisticsRecordFactory.class);
+
+    /**
+     * Factory method to create a a StatisticsRecord
+     *
+     * @param synCtx Current Message through synapse
+     * @return StatisticsRecord instance
+     */
     public static StatisticsRecord getStatisticsRecord(MessageContext synCtx) {
-        
+
         String messageId = synCtx.getMessageID();
         org.apache.axis2.context.MessageContext axisMC = 
((Axis2MessageContext) synCtx).getAxis2MessageContext();
         String remoteIP = (String) axisMC.getPropertyNonReplicable(
                 org.apache.axis2.context.MessageContext.REMOTE_ADDR);
         String domainName = (String) 
axisMC.getPropertyNonReplicable(NhttpConstants.REMOTE_HOST);
-        return new StatisticsRecord(messageId, remoteIP, domainName);
-
+        StatisticsRecord statisticsRecord = new StatisticsRecord(messageId, 
remoteIP, domainName);
+        if (log.isDebugEnabled()) {
+            log.debug("Created a StatisticsRecord with " + 
statisticsRecord.toString());
+        }
+        return statisticsRecord;
     }
 }

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/StatisticsReporter.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/StatisticsReporter.java?rev=698699&r1=698698&r2=698699&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/StatisticsReporter.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/StatisticsReporter.java
 Wed Sep 24 12:26:26 2008
@@ -18,6 +18,8 @@
  */
 package org.apache.synapse.audit.statatistics;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.synapse.MessageContext;
 import org.apache.synapse.SynapseConstants;
 import org.apache.synapse.audit.AuditConfigurable;
@@ -28,14 +30,22 @@
 
 public class StatisticsReporter {
 
-    private static StatisticsRecord getStatisticsRecord(MessageContext synCtx) 
{
-        return (StatisticsRecord) 
synCtx.getProperty(SynapseConstants.STATISTICS_STACK);
-    }
+    private static final Log log = LogFactory.getLog(StatisticsReporter.class);
 
+    /**
+     * Initialize the audit details collection by setting a AuditConfiguration
+     *
+     * @param synCtx            Current Message through synapse
+     * @param auditConfigurable Instance that can be configured it's audit
+     */
     public static void collect(MessageContext synCtx, AuditConfigurable 
auditConfigurable) {
 
         StatisticsRecord statisticsRecord = 
StatisticsReporter.getStatisticsRecord(synCtx);
         if (statisticsRecord == null) {
+
+            if (log.isDebugEnabled()) {
+                log.debug("Setting statistics stack on the message context.");
+            }
             statisticsRecord = 
StatisticsRecordFactory.getStatisticsRecord(synCtx);
             synCtx.setProperty(SynapseConstants.STATISTICS_STACK, 
statisticsRecord);
         }
@@ -43,6 +53,10 @@
 
         StatisticsCollector collector = 
synCtx.getEnvironment().getStatisticsCollector();
         if (collector == null) {
+
+            if (log.isDebugEnabled()) {
+                log.debug("Setting statistics collector in the synapse 
environment.");
+            }
             collector = new StatisticsCollector();
             synCtx.getEnvironment().setStatisticsCollector(collector);
         }
@@ -51,6 +65,12 @@
         }
     }
 
+    /**
+     * Reporting audit for a particular resource
+     *
+     * @param synCtx            Current Message through synapse
+     * @param auditConfigurable Instance that can be configured it's audit
+     */
     public static void report(MessageContext synCtx, AuditConfigurable 
auditConfigurable) {
 
         StatisticsRecord statisticsRecord = 
StatisticsReporter.getStatisticsRecord(synCtx);
@@ -59,10 +79,23 @@
         }
     }
 
+    /**
+     * Reporting a fault
+     *
+     * @param synCtx synCtx  Current Message through synapse
+     */
     public static void reportFault(MessageContext synCtx) {
+
         StatisticsRecord statisticsRecord = 
StatisticsReporter.getStatisticsRecord(synCtx);
         if (statisticsRecord != null) {
+            if (log.isDebugEnabled()) {
+                log.debug("Reporting a fault : " + statisticsRecord);
+            }
             statisticsRecord.setFaultResponse(true);
         }
     }
+
+    private static StatisticsRecord getStatisticsRecord(MessageContext synCtx) 
{
+        return (StatisticsRecord) 
synCtx.getProperty(SynapseConstants.STATISTICS_STACK);
+    }
 }

Added: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/view/PerUserDomainViewStrategy.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/view/PerUserDomainViewStrategy.java?rev=698699&view=auto
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/view/PerUserDomainViewStrategy.java
 (added)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/view/PerUserDomainViewStrategy.java
 Wed Sep 24 12:26:26 2008
@@ -0,0 +1,38 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.synapse.audit.statatistics.view;
+
+import org.apache.synapse.audit.statatistics.StatisticsRecord;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * PerUserViewStrategy - user domain name is used.
+ */
+public class PerUserDomainViewStrategy extends PerUserViewStrategy {
+
+    public Map<String, Map<String, Statistics>> 
determineView(List<StatisticsRecord> statisticsRecords, int type) {
+        return determineView(statisticsRecords, type, DOMAIN);
+    }
+
+    public Map<String, Statistics> determineView(String id, 
List<StatisticsRecord> statisticsRecords, int type) {
+        return determineView(id, statisticsRecords, type, DOMAIN);
+    }
+}

Added: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/view/PerUserIPViewStrategy.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/view/PerUserIPViewStrategy.java?rev=698699&view=auto
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/view/PerUserIPViewStrategy.java
 (added)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/view/PerUserIPViewStrategy.java
 Wed Sep 24 12:26:26 2008
@@ -0,0 +1,38 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.synapse.audit.statatistics.view;
+
+import org.apache.synapse.audit.statatistics.StatisticsRecord;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * PerUserViewStrategy , user IP is used
+ */
+public class PerUserIPViewStrategy extends PerUserViewStrategy {
+
+    public Map<String, Map<String, Statistics>> 
determineView(List<StatisticsRecord> statisticsRecords, int type) {
+        return determineView(statisticsRecords, type, IP);
+    }
+
+    public Map<String, Statistics> determineView(String id, 
List<StatisticsRecord> statisticsRecords, int type) {
+        return determineView(id, statisticsRecords, type, IP);
+    }
+}

Added: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/view/PerUserViewStrategy.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/view/PerUserViewStrategy.java?rev=698699&view=auto
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/view/PerUserViewStrategy.java
 (added)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/view/PerUserViewStrategy.java
 Wed Sep 24 12:26:26 2008
@@ -0,0 +1,231 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.synapse.audit.statatistics.view;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.synapse.SynapseException;
+import org.apache.synapse.audit.statatistics.StatisticsLog;
+import org.apache.synapse.audit.statatistics.StatisticsRecord;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Strategy that determine a per user of remote party statistics view
+ */
+public abstract class PerUserViewStrategy implements StatisticsViewStrategy {
+
+    protected final static int IP = 0;
+    protected final static int DOMAIN = 1;
+    private static Log log;
+
+    protected PerUserViewStrategy() {
+        log = LogFactory.getLog(getClass());
+    }
+
+    public Map<String, Map<String, Statistics>> 
determineView(List<StatisticsRecord> statisticsRecords, int type, int 
userIDType) {
+
+        Map<String, Map<String, Statistics>> statisticsMap = new 
HashMap<String, Map<String, Statistics>>();
+
+        if (statisticsRecords == null) {
+            if (log.isDebugEnabled()) {
+                log.debug("Statistics records cannot be found.");
+            }
+            return statisticsMap;
+        }
+
+        for (StatisticsRecord record : statisticsRecords) {
+
+            if (record == null) {
+                if (log.isDebugEnabled()) {
+                    log.debug("Statistics record cannot be found.");
+                }
+                continue;
+            }
+
+            Map<String, StatisticsLog> statisticsLogMap = null;
+            switch (type) {
+                case StatisticsLog.ENDPOINT_STATISTICS: {
+                    statisticsLogMap = 
record.getAllEndpointStatisticsRecords();
+                    break;
+                }
+                case StatisticsLog.PROXY_SERVICE_STATISTICS: {
+                    statisticsLogMap = 
record.getAllProxyServiceStatisticsRecords();
+                    break;
+                }
+                case StatisticsLog.MEDIATOR_STATISTICS: {
+                    statisticsLogMap = 
record.getAllMediatorStatisticsRecords();
+                    break;
+                }
+            }
+
+            if (statisticsLogMap == null) {
+                if (log.isDebugEnabled()) {
+                    log.debug("Statistics Logs cannot be found for statistics 
record :" + record);
+                }
+                continue;
+            }
+
+            String userID;
+            if (IP == userIDType) {
+                userID = record.getClientIP();
+            } else {
+                userID = record.getClientHost();
+            }
+
+            if (userID == null || "".equals(userID)) {
+                if (log.isDebugEnabled()) {
+                    log.debug("user ID cannot be found.");
+                }
+                continue;
+            }
+
+            Map<String, Statistics> perResourceMap;
+            if (statisticsMap.containsKey(userID)) {
+                perResourceMap = statisticsMap.get(userID);
+            } else {
+                perResourceMap = new HashMap<String, Statistics>();
+                statisticsMap.put(userID, perResourceMap);
+            }
+
+            if (perResourceMap == null) {
+                if (log.isDebugEnabled()) {
+                    log.debug("There are not statistics for user ID : " + 
userID);
+                }
+                continue;
+            }
+
+            for (String rName : statisticsLogMap.keySet()) {
+
+                if (rName == null) {
+                    if (log.isDebugEnabled()) {
+                        log.debug("Resource name cannot be found.");
+                    }
+                    continue;
+                }
+
+                StatisticsLog statisticsLog = statisticsLogMap.get(rName);
+                if (statisticsLog == null) {
+                    if (log.isDebugEnabled()) {
+                        log.debug("Statistics Logs cannot be found for 
resource with given name " + rName);
+                    }
+                    continue;
+                }
+
+                Statistics statistics;
+                if (!perResourceMap.containsKey(rName)) {
+                    statistics = new Statistics(rName);
+                    perResourceMap.put(rName, statistics);
+                } else {
+                    statistics = perResourceMap.get(rName);
+                }
+
+                if (statistics != null) {
+                    statistics.update(statisticsLog.getProcessingTime(), 
record.isFaultResponse());
+                }
+            }
+        }
+
+        return statisticsMap;
+
+    }
+
+    public Map<String, Statistics> determineView(String id, 
List<StatisticsRecord> statisticsRecords, int type, int userIDType) {
+
+        if (id == null || "".equals(id)) {
+            handleException("Resource Id cannot be null");
+        }
+
+        Map<String, Statistics> statisticsMap = new HashMap<String, 
Statistics>();
+
+        if (statisticsRecords == null) {
+            if (log.isDebugEnabled()) {
+                log.debug("Statistics records cannot be found.");
+            }
+            return statisticsMap;
+        }
+
+        for (StatisticsRecord record : statisticsRecords) {
+
+            if (record == null) {
+                if (log.isDebugEnabled()) {
+                    log.debug("Statistics record cannot be found.");
+                }
+                continue;
+            }
+
+            StatisticsLog statisticsLog = null;
+            switch (type) {
+                case StatisticsLog.ENDPOINT_STATISTICS: {
+                    statisticsLog = record.getEndpointStatisticsRecord(id);
+                    break;
+                }
+                case StatisticsLog.PROXY_SERVICE_STATISTICS: {
+                    statisticsLog = record.getProxyServiceStatisticsRecord(id);
+                    break;
+                }
+                case StatisticsLog.MEDIATOR_STATISTICS: {
+                    statisticsLog = record.getMediatorStatisticsRecord(id);
+                    break;
+                }
+            }
+
+            if (statisticsLog == null) {
+                if (log.isDebugEnabled()) {
+                    log.debug("Statistics Logs cannot be found for statistics 
record  " + record);
+                }
+                continue;
+            }
+
+            String userID;
+            if (IP == userIDType) {
+                userID = record.getClientIP();
+            } else {
+                userID = record.getClientHost();
+            }
+
+            if (userID == null || "".equals(userID)) {
+                if (log.isDebugEnabled()) {
+                    log.debug("user ID cannot be found.");
+                }
+                continue;
+            }
+
+            Statistics statistics;
+            if (statisticsMap.containsKey(userID)) {
+                statistics = statisticsMap.get(userID);
+            } else {
+                statistics = new Statistics(userID);
+                statisticsMap.put(userID, statistics);
+            }
+
+            if (statistics != null) {
+                statistics.update(statisticsLog.getProcessingTime(), 
record.isFaultResponse());
+            }
+        }
+        return statisticsMap;
+    }
+
+    private static void handleException(String msg) {
+        log.error(msg);
+        throw new SynapseException(msg);
+    }
+}

Copied: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/view/Statistics.java
 (from r698269, 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/Statistics.java)
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/view/Statistics.java?p2=synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/view/Statistics.java&p1=synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/Statistics.java&r1=698269&r2=698699&rev=698699&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/Statistics.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/view/Statistics.java
 Wed Sep 24 12:26:26 2008
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.synapse.audit.statatistics;
+package org.apache.synapse.audit.statatistics.view;
 
 /**
  * The statistics data structure
@@ -24,25 +24,46 @@
 
 public class Statistics {
 
-    /**  Maximum processing time for a one way flow  */
+    public static final String ALL = "all";
+
+    /**
+     * Maximum processing time for a one way flow
+     */
     private long maxProcessingTime = 0;
-    /** Minimum processing time for a one way flow   */
+    /**
+     * Minimum processing time for a one way flow
+     */
     private long minProcessingTime = -1;
-    /** Average processing time for a one way flow */
+    /**
+     * Average processing time for a one way flow
+     */
     private double avgProcessingTime = 0;
-    /** Total processing time for a one way flow  */
+    /**
+     * Total processing time for a one way flow
+     */
     private double totalProcessingTime;
-    /** The number of access count for a one way flow  */
+    /**
+     * The number of access count for a one way flow
+     */
     private int count = 0;
-    /** The number of fault count for a one way flow  */
+    /**
+     * The number of fault count for a one way flow
+     */
     private int faultCount = 0;
+    /**
+     * Identifier for this statistics , whose statistics
+     */
+    private String id;
+
+    public Statistics(String id) {
+        this.id = id;
+    }
 
     /**
      * Update the statistics
      *
-     *
      * @param currentProcessingTime - The processing end time
-     * @param isFault - A boolean value that indicate whether fault has 
occurred or not
+     * @param isFault               - A Boolean value that indicate whether 
fault has occurred or not
      */
     public void update(long currentProcessingTime, boolean isFault) {
 
@@ -103,17 +124,21 @@
         return count;
     }
 
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
     public String toString() {
-        return new StringBuffer().append(" Avg Processing Time : ").
-                append(avgProcessingTime)
-                .append(" Max Processing Time : ").
-                append(maxProcessingTime)
-                .append(" Min Processing Time : ").
-                append(minProcessingTime)
-                .append(" Total Request Count : ").
-                append(count)
-                .append(" Total Fault Response Count : ").
-                append(faultCount).
-                toString();
+        return new StringBuffer().append("[Avg Processing Time : 
").append(avgProcessingTime).append(" ]")
+                .append(" [Max Processing Time : 
").append(maxProcessingTime).append(" ]")
+                .append(" [Min Processing Time : 
").append(minProcessingTime).append(" ]")
+                .append(" [Total Request Count : ").append(count).append(" ]")
+                .append(" [Total Fault Response Count : 
").append(faultCount).append(" ]")
+                .toString();
     }
+
 }

Added: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/view/StatisticsViewStrategy.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/view/StatisticsViewStrategy.java?rev=698699&view=auto
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/view/StatisticsViewStrategy.java
 (added)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/view/StatisticsViewStrategy.java
 Wed Sep 24 12:26:26 2008
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.synapse.audit.statatistics.view;
+
+import org.apache.synapse.audit.statatistics.StatisticsRecord;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Strategy for determine Statistics Views
+ */
+public interface StatisticsViewStrategy {
+
+    /**
+     * Return a statistics view for all resource with given type
+     *
+     * @param statisticsRecords Statistics Data
+     * @param type              Type of resource
+     * @return A particular statistics view
+     */
+    public Map<String, Map<String, Statistics>> 
determineView(List<StatisticsRecord> statisticsRecords, int type);
+
+    /**
+     * Return a statistics view for a resource with given type and given name
+     *
+     * @param id                The resource name or identifier
+     * @param statisticsRecords Statistics Data
+     * @param type              Type of resource
+     * @return A particular statistics view
+     */
+    public Map<String, Statistics> determineView(String id, 
List<StatisticsRecord> statisticsRecords, int type);
+}

Added: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/view/SystemViewStrategy.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/view/SystemViewStrategy.java?rev=698699&view=auto
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/view/SystemViewStrategy.java
 (added)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/audit/statatistics/view/SystemViewStrategy.java
 Wed Sep 24 12:26:26 2008
@@ -0,0 +1,168 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.synapse.audit.statatistics.view;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.synapse.SynapseException;
+import org.apache.synapse.audit.statatistics.StatisticsLog;
+import org.apache.synapse.audit.statatistics.StatisticsRecord;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Strategy that determine a system wide statistics view
+ */
+public class SystemViewStrategy implements StatisticsViewStrategy {
+
+    private static final Log log = LogFactory.getLog(SystemViewStrategy.class);
+
+    public Map<String, Map<String, Statistics>> 
determineView(List<StatisticsRecord> statisticsRecords, int type) {
+
+        Map<String, Map<String, Statistics>> statisticsMap = new 
HashMap<String, Map<String, Statistics>>();
+        if (statisticsRecords == null) {
+            if (log.isDebugEnabled()) {
+                log.debug("Statistics records cannot be found.");
+            }
+            return statisticsMap;
+        }
+
+        Map<String, Statistics> perResourceMap = new HashMap<String, 
Statistics>();
+
+        for (StatisticsRecord record : statisticsRecords) {
+
+            if (record != null) {
+
+                Map<String, StatisticsLog> statisticsLogMap = null;
+
+                switch (type) {
+                    case StatisticsLog.ENDPOINT_STATISTICS: {
+                        statisticsLogMap = 
record.getAllEndpointStatisticsRecords();
+                        break;
+                    }
+                    case StatisticsLog.PROXY_SERVICE_STATISTICS: {
+                        statisticsLogMap = 
record.getAllProxyServiceStatisticsRecords();
+                        break;
+                    }
+                    case StatisticsLog.MEDIATOR_STATISTICS: {
+                        statisticsLogMap = 
record.getAllMediatorStatisticsRecords();
+                        break;
+                    }
+                }
+
+                if (statisticsLogMap == null) {
+                    if (log.isDebugEnabled()) {
+                        log.debug("Cannot find the statistics logs for : " + 
record);
+                    }
+                    continue;
+                }
+
+                for (String rName : statisticsLogMap.keySet()) {
+
+                    if (rName == null) {
+                        if (log.isDebugEnabled()) {
+                            log.debug("Cannot find the resource name ");
+                        }
+                        continue;
+                    }
+
+                    StatisticsLog statisticsLog = statisticsLogMap.get(rName);
+                    if (statisticsLog == null) {
+                        if (log.isDebugEnabled()) {
+                            log.debug("Cannot find the statistics log for 
resource with name : " + rName);
+                        }
+                        continue;
+                    }
+
+                    Statistics statistics;
+
+                    if (!perResourceMap.containsKey(rName)) {
+
+                        statistics = new Statistics(rName);
+                        perResourceMap.put(rName, statistics);
+
+                    } else {
+                        statistics = perResourceMap.get(rName);
+                    }
+
+                    if (statistics != null) {
+                        statistics.update(statisticsLog.getProcessingTime(), 
record.isFaultResponse());
+                    }
+                }
+            }
+
+        }
+
+        statisticsMap.put(Statistics.ALL, perResourceMap);
+        return statisticsMap;
+
+    }
+
+    public Map<String, Statistics> determineView(String id, 
List<StatisticsRecord> statisticsRecords, int type) {
+
+        if (id == null || "".equals(id)) {
+            handleException("Resource Id cannot be null");
+        }
+
+        Map<String, Statistics> statisticsMap = new HashMap<String, 
Statistics>();
+        if (statisticsRecords == null) {
+            if (log.isDebugEnabled()) {
+                log.debug("Statistics records cannot be found.");
+            }
+            return statisticsMap;
+        }
+
+        Statistics statistics = new Statistics(Statistics.ALL);
+        for (StatisticsRecord record : statisticsRecords) {
+
+            if (record != null) {
+                StatisticsLog log = null;
+
+                switch (type) {
+                    case StatisticsLog.ENDPOINT_STATISTICS: {
+                        log = record.getEndpointStatisticsRecord(id);
+                        break;
+                    }
+                    case StatisticsLog.PROXY_SERVICE_STATISTICS: {
+                        log = record.getProxyServiceStatisticsRecord(id);
+                        break;
+                    }
+                    case StatisticsLog.MEDIATOR_STATISTICS: {
+                        log = record.getMediatorStatisticsRecord(id);
+                        break;
+                    }
+                }
+
+                if (log != null) {
+                    statistics.update(log.getProcessingTime(), 
record.isFaultResponse());
+                }
+            }
+        }
+
+        statisticsMap.put(Statistics.ALL, statistics);
+        return statisticsMap;
+    }
+
+    private static void handleException(String msg) {
+        log.error(msg);
+        throw new SynapseException(msg);
+    }
+}

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2MessageContext.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2MessageContext.java?rev=698699&r1=698698&r2=698699&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2MessageContext.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2MessageContext.java
 Wed Sep 24 12:26:26 2008
@@ -483,9 +483,9 @@
     private void initAudit(MessageContext synCtx) {
         
         if (XMLConfigConstants.STATISTICS_ENABLE.equals(
-                
synCtx.getConfiguration().getProperty(SynapseConstants.SYNAPSE_STATISTICS_STATE)))
 {
+                
synCtx.getConfiguration().getProperty(SynapseConstants.SYNAPSE_AUDIT_STATE))) {
             synCtx.setProperty(SynapseConstants.SYNAPSE_AUDIT_CONFIGURATION,
-                    new 
AuditConfiguration(SynapseConstants.SYNAPSE_STATISTICS, true));
+                    new AuditConfiguration(SynapseConstants.SYNAPSE_AUDIT, 
true));
         }
     }
 }


Reply via email to