Author: indika
Date: Mon Apr  5 11:41:11 2010
New Revision: 930843

URL: http://svn.apache.org/viewvc?rev=930843&view=rev
Log:
fix for stats collection when the out flow is ended because of a drop mediator 

Added:
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/AspectConfigurationDetectionStrategy.java
Modified:
    
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/config/SynapseConfigUtils.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/builtin/DropMediator.java

Added: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/AspectConfigurationDetectionStrategy.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/AspectConfigurationDetectionStrategy.java?rev=930843&view=auto
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/AspectConfigurationDetectionStrategy.java
 (added)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/AspectConfigurationDetectionStrategy.java
 Mon Apr  5 11:41:11 2010
@@ -0,0 +1,56 @@
+/*
+ *  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.aspects;
+
+import org.apache.synapse.MessageContext;
+import org.apache.synapse.SynapseConstants;
+import org.apache.synapse.config.xml.XMLConfigConstants;
+
+/**
+ * Take an  AspectConfiguration based on some strategy - Currently only 
consider statistics
+ */
+public class AspectConfigurationDetectionStrategy {
+
+     /**
+     * Factory method to create the AspectConfiguration when there is no a 
defined main sequence and
+     * only there is a set of mediators. This is useful when collecting stats 
for messages going
+     * through the main sequence
+     *  //TODO cache
+     * @param synCtx Message Context
+     * @return an AspectConfiguration instance
+     */
+     public static AspectConfiguration getAspectConfiguration(MessageContext 
synCtx) {
+
+       boolean statisticsEnable = false;
+
+        if (XMLConfigConstants.STATISTICS_ENABLE.equals(
+                synCtx.getConfiguration().getProperty(
+                        SynapseConstants.SYNAPSE_STATISTICS_STATE))) {
+            statisticsEnable = true;
+        }
+
+        if (statisticsEnable) {
+            AspectConfiguration configuration = new AspectConfiguration(
+                    SynapseConstants.SYNAPSE_ASPECTS);
+            configuration.enableStatistics();
+            return configuration;
+        }
+        return null;
+    }
+}

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=930843&r1=930842&r2=930843&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 Apr  5 11:41:11 2010
@@ -225,6 +225,16 @@ public class StatisticsReporter {
         }
     }
 
+    /**
+     * Reports statistics on the end of the out flow
+     *
+     * @param synCtx MessageContext instance
+     */
+    public static void reportForAllOnOutFlowEnd(MessageContext synCtx) {
+
+        endReportForAll(synCtx);
+
+    }
 
     /**
      * Factory method to create  <code>StatisticsLog</code> instances

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfigUtils.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfigUtils.java?rev=930843&r1=930842&r2=930843&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfigUtils.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfigUtils.java
 Mon Apr  5 11:41:11 2010
@@ -802,33 +802,5 @@ public class SynapseConfigUtils {
 
         
config.addSequence(org.apache.synapse.SynapseConstants.FAULT_SEQUENCE_KEY, 
fault);
     }
-
-
-    /**
-     * Factory method to create the AspectConfiguration when there is no a 
defined main sequence and
-     * only there is a set of mediators. This is useful when collecting stats 
for messages going
-     * through the main sequence
-     *  //TODO cache 
-     * @param synCtx Message Context
-     * @return an AspectConfiguration instance
-     */
-    public static AspectConfiguration 
getGlobalAspectConfiguration(MessageContext synCtx) {
-
-        boolean statisticsEnable = false;
-
-        if (XMLConfigConstants.STATISTICS_ENABLE.equals(
-                synCtx.getConfiguration().getProperty(
-                        SynapseConstants.SYNAPSE_STATISTICS_STATE))) {
-            statisticsEnable = true;
-        }
-
-        if (statisticsEnable) {
-            AspectConfiguration configuration = new AspectConfiguration(
-                    SynapseConstants.SYNAPSE_ASPECTS);
-            configuration.enableStatistics();
-            return configuration;
-        }
-        return null;
-    }
 }
 

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=930843&r1=930842&r2=930843&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 Apr  5 11:41:11 2010
@@ -27,9 +27,9 @@ import org.apache.synapse.FaultHandler;
 import org.apache.synapse.MessageContext;
 import org.apache.synapse.SynapseConstants;
 import org.apache.synapse.SynapseException;
+import org.apache.synapse.aspects.AspectConfigurationDetectionStrategy;
 import org.apache.synapse.aspects.ComponentType;
 import org.apache.synapse.aspects.statistics.StatisticsReporter;
-import org.apache.synapse.config.SynapseConfigUtils;
 import org.apache.synapse.mediators.MediatorFaultHandler;
 
 /**
@@ -47,7 +47,7 @@ public class SynapseMessageReceiver impl
         MessageContext synCtx = 
MessageContextCreatorForAxis2.getSynapseMessageContext(mc);
 
         StatisticsReporter.reportForComponent(synCtx,
-                SynapseConfigUtils.getGlobalAspectConfiguration(synCtx),
+                
AspectConfigurationDetectionStrategy.getAspectConfiguration(synCtx),
                 ComponentType.PROXYSERVICE);
 
         boolean traceOn = synCtx.getMainSequence().getTraceState() == 
SynapseConstants.TRACING_ON;

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/DropMediator.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/DropMediator.java?rev=930843&r1=930842&r2=930843&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/DropMediator.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/DropMediator.java
 Mon Apr  5 11:41:11 2010
@@ -21,6 +21,7 @@ package org.apache.synapse.mediators.bui
 
 import org.apache.synapse.MessageContext;
 import org.apache.synapse.SynapseLog;
+import org.apache.synapse.aspects.statistics.StatisticsReporter;
 import org.apache.synapse.mediators.AbstractMediator;
 
 /**
@@ -36,7 +37,7 @@ public class DropMediator extends Abstra
      */
     public boolean mediate(MessageContext synCtx) {
 
-        SynapseLog synLog = getLog(synCtx);
+         SynapseLog synLog = getLog(synCtx);
 
         if (synLog.isTraceOrDebugEnabled()) {
             synLog.traceOrDebug("Start : Drop mediator");
@@ -44,10 +45,19 @@ public class DropMediator extends Abstra
             if (synLog.isTraceTraceEnabled()) {
                 synLog.traceTrace("Message : " + synCtx.getEnvelope());
             }
-        }      
+        }
 
-        synLog.traceOrDebug("End : Drop mediator");
         synCtx.setTo(null);
+
+        // if this is a response , this the end of the outflow
+        if (synCtx.isResponse()) {
+            StatisticsReporter.reportForAllOnOutFlowEnd(synCtx);
+        }
+
+        if (synLog.isTraceOrDebugEnabled()) {
+            synLog.traceOrDebug("End : Drop mediator");
+        }
+
         return false;
     }
 }


Reply via email to