You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by in...@apache.org on 2009/03/19 11:52:48 UTC
svn commit: r755915 [1/2] - in /synapse/trunk/java/modules/core/src:
main/java/org/apache/synapse/ main/java/org/apache/synapse/aspects/
main/java/org/apache/synapse/aspects/statistics/
main/java/org/apache/synapse/aspects/statistics/view/ main/java/or...
Author: indika
Date: Thu Mar 19 10:52:47 2009
New Revision: 755915
URL: http://svn.apache.org/viewvc?rev=755915&view=rev
Log:
Statistics initial fixes, test with simple MBean
Added:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/AspectConfigurationDetectionStrategy.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/InOutStatisticsView.java
Removed:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/AspectHelper.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/aspects/AspectConfigurable.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/AspectConfiguration.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsCollector.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/StatisticsRecordFactory.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/view/PerUserDomainViewStrategy.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/view/PerUserIPViewStrategy.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/StatisticsViewStrategy.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/config/xml/AbstractMediatorFactory.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/AbstractMediatorSerializer.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/ProxyServiceFactory.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointFactory.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DefaultEndpointFactory.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/ProxyService.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/endpoints/AbstractEndpoint.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/EndpointDefinition.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/AbstractMediator.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/MediatorFaultHandler.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/base/SequenceMediator.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/tasks/MessageInjector.java
synapse/trunk/java/modules/core/src/test/java/org/apache/synapse/mediators/db/DBReportMediatorTest.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=755915&r1=755914&r2=755915&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 Thu Mar 19 10:52:47 2009
@@ -179,11 +179,11 @@
public static final String STATISTICS_STACK ="synapse.statistics.stack";
- public static final String SYNAPSE_AUDIT_STATE = "synapse.aspects.state";
+ public static final String SYNAPSE_STATISTICS_STATE = "synapse.statistics.state";
- public static final String SYNAPSE_AUDIT_CONFIGURATION = "synapse.aspects.configuration";
-
- public static final String SYNAPSE_AUDIT ="synapse.aspects";
+ public static final String SYNAPSE_ASPECT_CONFIGURATION = "synapse.aspects.configuration";
+
+ public static final String SYNAPSE_ASPECTS ="synapse.aspects";
//- handling of timed out events from the callbacks -
/** The System property that states the duration at which the timeout handler runs */
@@ -240,6 +240,9 @@
/** A name to use for anonymous endpoints */
public static final String ANONYMOUS_ENDPOINT = "AnonymousEndpoint";
+ /**A name to use for anonymous proxyservice */
+ public static final String ANONYMOUS_PROXYSERVICE = "AnonymousProxyService";
+
/* Constants related to the SAL endpoints */
public static final String PROP_SAL_ENDPOINT_FIRST_MESSAGE_IN_SESSION
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/AspectConfigurable.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/AspectConfigurable.java?rev=755915&r1=755914&r2=755915&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/AspectConfigurable.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/AspectConfigurable.java Thu Mar 19 10:52:47 2009
@@ -19,39 +19,21 @@
package org.apache.synapse.aspects;
/**
- * Capability for configurable auditing
+ * Capability for configurable aspects
*/
public interface AspectConfigurable {
/**
- * Returns audit id , identifier for a particular audit
- * Example , component name , endpoint name
+ * Configure aspects according to the given configuration
*
- * @return audit id
+ * @param aspectConfiguration AspectConfiguration instance
*/
- public String getAuditId();
+ void configure(AspectConfiguration aspectConfiguration);
/**
- * Sets the identifier for a particular audit
+ * Get the aspects configuration
*
- * @param id audit id
+ * @return AspectConfiguration instance
*/
- 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();
+ AspectConfiguration getAspectConfiguration();
}
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/AspectConfiguration.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/AspectConfiguration.java?rev=755915&r1=755914&r2=755915&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/AspectConfiguration.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/AspectConfiguration.java Thu Mar 19 10:52:47 2009
@@ -18,24 +18,22 @@
*/
package org.apache.synapse.aspects;
+import org.apache.synapse.Identifiable;
+import org.apache.synapse.aspects.statistics.StatisticsConfigurable;
+
/**
- * Audit configuration
+ * Aspect configuration
* Currently contains only statistics configuration related things
*/
-public class AspectConfiguration implements AspectConfigurable {
+public class AspectConfiguration implements StatisticsConfigurable, Identifiable {
/* Whether statistics enable */
private boolean statisticsEnable = false;
/* Identifier for a particular aspects configuration */
- private String auditId;
-
- public AspectConfiguration(String auditId, boolean statisticsEnable) {
- this.statisticsEnable = statisticsEnable;
- this.auditId = auditId;
- }
+ private String id;
- public AspectConfiguration(String auditId) {
- this.auditId = auditId;
+ public AspectConfiguration(String id) {
+ this.id = id;
}
public boolean isStatisticsEnable() {
@@ -54,11 +52,7 @@
}
}
- public String getAuditId() {
- return auditId;
- }
-
- public void setAuditId(String auditId) {
- this.auditId = auditId;
+ public String getId() {
+ return id;
}
}
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=755915&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 Thu Mar 19 10:52:47 2009
@@ -0,0 +1,78 @@
+/*
+ * 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.aspects.statistics.StatisticsConfigurable;
+import org.apache.synapse.config.xml.XMLConfigConstants;
+import org.apache.synapse.core.axis2.ProxyService;
+import org.apache.synapse.endpoints.AbstractEndpoint;
+import org.apache.synapse.endpoints.Endpoint;
+import org.apache.synapse.endpoints.EndpointDefinition;
+
+/**
+ * Take an AspectConfiguration based on some startegy - Currently only consider statistics
+ */
+public class AspectConfigurationDetectionStrategy {
+
+ public static AspectConfiguration getAspectConfiguration(MessageContext synCtx) {
+
+ boolean statisticsEnable = false;
+ if (XMLConfigConstants.STATISTICS_ENABLE.equals(
+ synCtx.getConfiguration().getProperty(
+ SynapseConstants.SYNAPSE_STATISTICS_STATE))) {
+ statisticsEnable = true;
+ }
+
+ if (synCtx.isResponse()) {
+
+ if (!statisticsEnable) {
+ // if this is not a response to a proxy service
+ String proxyName = (String) synCtx.getProperty(SynapseConstants.PROXY_SERVICE);
+
+ if (proxyName != null && !"".equals(proxyName)) {
+ ProxyService proxy = synCtx.getConfiguration().getProxyService(proxyName);
+ if (proxy != null) {
+ StatisticsConfigurable configurable = proxy.getAspectConfiguration();
+ statisticsEnable =
+ configurable != null && configurable.isStatisticsEnable();
+ }
+ }
+ }
+
+ if (!statisticsEnable) {
+ Endpoint endpoint = (Endpoint) synCtx.getProperty(
+ SynapseConstants.LAST_ENDPOINT);
+ if (endpoint instanceof AbstractEndpoint) {
+ EndpointDefinition definition = ((AbstractEndpoint) endpoint).getDefinition();
+ statisticsEnable = definition != null && definition.isStatisticsEnable();
+ }
+ }
+ }
+
+ 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/StatisticsCollector.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsCollector.java?rev=755915&r1=755914&r2=755915&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsCollector.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsCollector.java Thu Mar 19 10:52:47 2009
@@ -18,8 +18,11 @@
*/
package org.apache.synapse.aspects.statistics;
-import org.apache.synapse.aspects.statistics.view.Statistics;
+import org.apache.synapse.aspects.ComponentType;
+import org.apache.synapse.aspects.statistics.mbean.StatisticsView;
+import org.apache.synapse.aspects.statistics.view.InOutStatisticsView;
import org.apache.synapse.aspects.statistics.view.StatisticsViewStrategy;
+import org.apache.synapse.commons.util.MBeanRegistrar;
import java.util.ArrayList;
import java.util.List;
@@ -33,6 +36,11 @@
private final List<StatisticsRecord> statisticsCollection = new ArrayList<StatisticsRecord>();
+ public StatisticsCollector() {
+ MBeanRegistrar.getInstance().registerMBean(new StatisticsView(this),
+ "StatisticsView", "StatisticsView");
+ }
+
/**
* Registering a statistics record
*
@@ -53,6 +61,13 @@
}
/**
+ * Clear all the existing statistics
+ */
+ public void clearStatistics() {
+ this.statisticsCollection.clear();
+ }
+
+ /**
* Returns a particular statistics view according to a given strategy for a given
* resource with particular type
*
@@ -61,10 +76,10 @@
* @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);
+ public Map<String, InOutStatisticsView> getStatistics(String id,
+ ComponentType type,
+ StatisticsViewStrategy strategy) {
+ return strategy.determineView(id, getCopy(), type);
}
/**
@@ -74,9 +89,15 @@
* @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);
+ public Map<String, Map<String, InOutStatisticsView>> getStatistics(
+ ComponentType type,
+ StatisticsViewStrategy strategy) {
+ return strategy.determineView(getCopy(), type);
}
+ private List<StatisticsRecord> getCopy() {
+ List<StatisticsRecord> records = new ArrayList<StatisticsRecord>();
+ records.addAll(statisticsCollection);
+ return records;
+ }
}
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=755915&r1=755914&r2=755915&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 Thu Mar 19 10:52:47 2009
@@ -18,55 +18,46 @@
*/
package org.apache.synapse.aspects.statistics;
+import org.apache.synapse.aspects.ComponentType;
+
/**
*
*/
public class StatisticsLog {
- public static final int ENDPOINT_STATISTICS = 0;
+ private String id;
- public static final int PROXY_SERVICE_STATISTICS = 1;
+ private ComponentType componentType;
- public static final int MEDIATOR_STATISTICS = 2;
+ private long time;
- private String id;
- private long startTime = -1;
- private long endTime = -1;
+ private boolean isResponse;
- public StatisticsLog(String id) {
- this(id, System.currentTimeMillis());
+ public StatisticsLog(String id, ComponentType componentType, boolean isResponse) {
+ this(id, System.currentTimeMillis(), componentType, isResponse);
}
- public StatisticsLog(String id, long startTime) {
+ public StatisticsLog(String id, long startTime, ComponentType componentType,
+ boolean isResponse) {
this.id = id;
- this.startTime = startTime;
+ this.isResponse = isResponse;
+ this.time = startTime;
+ this.componentType = componentType;
}
public String getId() {
return id;
}
- public void setId(String id) {
- this.id = id;
- }
-
- public long getStartTime() {
- return startTime;
- }
-
- public void setStartTime(long startTime) {
- this.startTime = startTime;
- }
-
- public long getEndTime() {
- return endTime;
+ public ComponentType getComponentType() {
+ return componentType;
}
- public void setEndTime(long endTime) {
- this.endTime = endTime;
+ public long getTime() {
+ return time;
}
- public long getProcessingTime() {
- return this.endTime - this.startTime;
+ public boolean isResponse() {
+ return isResponse;
}
}
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=755915&r1=755914&r2=755915&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 Thu Mar 19 10:52:47 2009
@@ -20,13 +20,12 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.synapse.Mediator;
-import org.apache.synapse.aspects.AspectConfigurable;
-import org.apache.synapse.core.axis2.ProxyService;
-import org.apache.synapse.endpoints.Endpoint;
+import org.apache.synapse.Identifiable;
+import org.apache.synapse.aspects.ComponentType;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
/**
* Holds a record for statistics for current message
@@ -35,17 +34,11 @@
private static final Log log = LogFactory.getLog(StatisticsRecord.class);
private String id;
-
- private final Map<String, StatisticsLog> endPointsStatisticsRecordMap =
- new HashMap<String, StatisticsLog>();
- private final Map<String, StatisticsLog> mediatorsStatisticsRecordMap =
- new HashMap<String, StatisticsLog>();
- private final Map<String, StatisticsLog> proxyServicesStatisticsRecordMap =
- new HashMap<String, StatisticsLog>();
-
+ private final List<StatisticsLog> statisticsLogs = new ArrayList<StatisticsLog>();
private boolean isFaultResponse;
private String clientIP;
private String clientHost;
+ private ComponentType owner;
public StatisticsRecord(String id, String clientIP, String clientHost) {
this.id = id;
@@ -76,107 +69,88 @@
/**
* Collecting statistics for a particular component
*
- * @param aspectConfigurable audit configurable component
+ * @param identifiable audit configurable component
+ * @param componentType The component that belong statistics
+ * @param isResponse Is this Response or not
*/
- public void collect(AspectConfigurable aspectConfigurable) {
+ public void collect(Identifiable identifiable, ComponentType componentType, boolean isResponse) {
- if (isValid(aspectConfigurable)) {
+ if (isValid(identifiable)) {
- String auditID = aspectConfigurable.getAuditId();
+ String auditID = identifiable.getId();
if (log.isDebugEnabled()) {
- log.debug("Start to collect statistics for : " + auditID);
- }
- if (aspectConfigurable instanceof Endpoint) {
- endPointsStatisticsRecordMap.put(auditID, new StatisticsLog(auditID));
- } else if (aspectConfigurable instanceof ProxyService) {
- proxyServicesStatisticsRecordMap.put(auditID, new StatisticsLog(auditID));
- } else if (aspectConfigurable instanceof Mediator) {
- mediatorsStatisticsRecordMap.put(auditID, new StatisticsLog(auditID));
+ log.debug("Start to reportForComponent statistics for : " + auditID);
}
+ statisticsLogs.add(new StatisticsLog(auditID, componentType, isResponse));
}
}
/**
- * Reporting statistics for a particular component
+ * Gets all the StatisticsLogs
*
- * @param aspectConfigurable audit configurable component
+ * @return A Iterator for all StatisticsLogs
*/
- public void commit(AspectConfigurable aspectConfigurable) {
-
- if (isValid(aspectConfigurable)) {
-
- String auditID = aspectConfigurable.getAuditId();
- if (log.isDebugEnabled()) {
- log.debug("Reporting statistics for : " + auditID);
- }
- if (aspectConfigurable instanceof Endpoint) {
- commit(auditID, endPointsStatisticsRecordMap);
- } else if (aspectConfigurable instanceof ProxyService) {
- commit(auditID, proxyServicesStatisticsRecordMap);
- } else if (aspectConfigurable instanceof Mediator) {
- commit(auditID, mediatorsStatisticsRecordMap);
- }
- }
+ public Iterator<StatisticsLog> getAllStatisticsLogs() {
+ final List<StatisticsLog> logs = new ArrayList<StatisticsLog>();
+ logs.addAll(statisticsLogs);
+ return logs.iterator();
}
- private boolean isValid(AspectConfigurable aspectConfigurable) {
-
- if (aspectConfigurable == null) {
- if (log.isDebugEnabled()) {
- log.debug("Invalid aspects configuration , It is null.");
- }
- return false;
- }
-
- if (aspectConfigurable.isStatisticsEnable()) {
- String auditID = aspectConfigurable.getAuditId();
- if (auditID == null || "".equals(auditID)) {
- if (log.isDebugEnabled()) {
- log.debug("Invalid aspects configuration , Audit name is null.");
+ /**
+ * Get all log ids related with a given component
+ *
+ * @param componentType The component that belong statistics
+ * @return A List of Log ids
+ */
+ public Iterator<String> getAllLogIds(ComponentType componentType) {
+ final List<String> logIds = new ArrayList<String>();
+ for (StatisticsLog startLog : statisticsLogs) {
+ if (startLog != null && startLog.getComponentType() == componentType) {
+ String id = startLog.getId();
+ if (id != null && !"".equals(id) && !logIds.contains(id)) {
+ logIds.add(id);
}
- return false;
}
- return true;
}
- return false;
+ return logIds.iterator();
}
- 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 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 StatisticsLog getMediatorStatisticsRecord(String name) {
- return mediatorsStatisticsRecordMap.get(name);
+ public void clearLogs() {
+ statisticsLogs.clear();
}
- public StatisticsLog getProxyServiceStatisticsRecord(String name) {
- return proxyServicesStatisticsRecordMap.get(name);
+ public ComponentType getOwner() {
+ return owner;
}
- public Map<String, StatisticsLog> getAllEndpointStatisticsRecords() {
- return endPointsStatisticsRecordMap;
+ public void setOwner(ComponentType owner) {
+ this.owner = owner;
}
- public Map<String, StatisticsLog> getAllMediatorStatisticsRecords() {
- return mediatorsStatisticsRecordMap;
- }
+ private boolean isValid(Identifiable identifiable) {
- public Map<String, StatisticsLog> getAllProxyServiceStatisticsRecords() {
- return proxyServicesStatisticsRecordMap;
- }
+ if (identifiable == null) {
+ if (log.isDebugEnabled()) {
+ log.debug("Invalid aspects configuration , It is null.");
+ }
+ return false;
+ }
- 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();
+ 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;
}
}
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsRecordFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsRecordFactory.java?rev=755915&r1=755914&r2=755915&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsRecordFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsRecordFactory.java Thu Mar 19 10:52:47 2009
@@ -40,7 +40,8 @@
public static StatisticsRecord getStatisticsRecord(MessageContext synCtx) {
String messageId = synCtx.getMessageID();
- org.apache.axis2.context.MessageContext axisMC = ((Axis2MessageContext) synCtx).getAxis2MessageContext();
+ 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);
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=755915&r1=755914&r2=755915&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 Thu Mar 19 10:52:47 2009
@@ -20,12 +20,15 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.synapse.Identifiable;
import org.apache.synapse.MessageContext;
import org.apache.synapse.SynapseConstants;
-import org.apache.synapse.aspects.AspectConfigurable;
+import org.apache.synapse.aspects.AspectConfiguration;
+import org.apache.synapse.aspects.AspectConfigurationDetectionStrategy;
+import org.apache.synapse.aspects.ComponentType;
/**
- * A utility to process statistics
+ * A utility to report statistics
*/
public class StatisticsReporter {
@@ -33,49 +36,46 @@
private static final Log log = LogFactory.getLog(StatisticsReporter.class);
/**
- * Initialize the audit details collection by setting a AuditConfiguration
+ * Collects statistics for the given componenet
*
- * @param synCtx Current Message through synapse
- * @param aspectConfigurable Instance that can be configured it's audit
+ * @param synCtx Current Message through synapse
+ * @param configurable Instance that can be configured it's audit
+ * @param componentType Type of the componet need aspect
*/
- public static void collect(MessageContext synCtx, AspectConfigurable aspectConfigurable) {
-
- StatisticsRecord statisticsRecord = StatisticsReporter.getStatisticsRecord(synCtx);
- if (statisticsRecord == null) {
-
- if (log.isDebugEnabled()) {
- log.debug("Setting statistics stack on the message context.");
+ public static void reportForComponent(MessageContext synCtx,
+ StatisticsConfigurable configurable,
+ ComponentType componentType) {
+
+ if (configurable != null && configurable.isStatisticsEnable()
+ && configurable instanceof Identifiable) {
+
+ StatisticsRecord statisticsRecord = StatisticsReporter.getStatisticsRecord(synCtx);
+ statisticsRecord.setOwner(componentType);
+ statisticsRecord.collect((Identifiable) configurable,
+ componentType, synCtx.isResponse());
+
+ StatisticsCollector collector = getStatisticsCollector(synCtx);
+ if (!collector.contains(statisticsRecord)) {
+ collector.collect(statisticsRecord);
}
- statisticsRecord = StatisticsRecordFactory.getStatisticsRecord(synCtx);
- synCtx.setProperty(SynapseConstants.STATISTICS_STACK, statisticsRecord);
- }
- statisticsRecord.collect(aspectConfigurable);
-
- 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);
- }
- if (!collector.contains(statisticsRecord)) {
- collector.collect(statisticsRecord);
}
}
/**
- * Reporting audit for a particular resource
+ * Collects statistics for any component
*
- * @param synCtx Current Message through synapse
- * @param aspectConfigurable Instance that can be configured it's audit
+ * @param synCtx Current Message through synapse
*/
- public static void report(MessageContext synCtx, AspectConfigurable aspectConfigurable) {
-
- StatisticsRecord statisticsRecord = StatisticsReporter.getStatisticsRecord(synCtx);
- if (statisticsRecord != null) {
- statisticsRecord.commit(aspectConfigurable);
+ public static void reportForAll(MessageContext synCtx) {
+ AspectConfiguration configuration =
+ AspectConfigurationDetectionStrategy.getAspectConfiguration(synCtx);
+ if (configuration != null && configuration.isStatisticsEnable()) {
+ StatisticsRecord statisticsRecord = StatisticsReporter.getStatisticsRecord(synCtx);
+ statisticsRecord.collect(configuration, ComponentType.ANY, synCtx.isResponse());
+ StatisticsCollector collector = getStatisticsCollector(synCtx);
+ if (!collector.contains(statisticsRecord)) {
+ collector.collect(statisticsRecord);
+ }
}
}
@@ -84,7 +84,7 @@
*
* @param synCtx synCtx Current Message through synapse
*/
- public static void reportFault(MessageContext synCtx) {
+ public static void reportFaultForAll(MessageContext synCtx) {
StatisticsRecord statisticsRecord = StatisticsReporter.getStatisticsRecord(synCtx);
if (statisticsRecord != null) {
@@ -96,6 +96,29 @@
}
private static StatisticsRecord getStatisticsRecord(MessageContext synCtx) {
- return (StatisticsRecord) synCtx.getProperty(SynapseConstants.STATISTICS_STACK);
+ StatisticsRecord statisticsRecord =
+ (StatisticsRecord) synCtx.getProperty(SynapseConstants.STATISTICS_STACK);
+ 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);
+ }
+ return statisticsRecord;
+ }
+
+ private static StatisticsCollector getStatisticsCollector(MessageContext synCtx) {
+ 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);
+ }
+ return collector;
}
}
Added: 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=755915&view=auto
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsUpdateStrategy.java (added)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/StatisticsUpdateStrategy.java Thu Mar 19 10:52:47 2009
@@ -0,0 +1,108 @@
+/*
+ * 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.statistics;
+
+import org.apache.synapse.aspects.ComponentType;
+import org.apache.synapse.aspects.statistics.view.Statistics;
+
+import java.util.Iterator;
+
+/**
+ *
+ */
+public class StatisticsUpdateStrategy {
+
+ private StatisticsRecord statisticsRecord;
+
+ public StatisticsUpdateStrategy(StatisticsRecord statisticsRecord) {
+ 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) {
+
+ StatisticsLog startLog = null;
+ StatisticsLog endLog = null;
+ final Iterator<StatisticsLog> statisticsLogs = statisticsRecord.getAllStatisticsLogs();
+ while (statisticsLogs.hasNext()) {
+ StatisticsLog log = statisticsLogs.next();
+ 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()) {
+ endLog = log;
+ }
+ }
+ break;
+ }
+ default: {
+ if (!isResponse) {
+ if (componentType == log.getComponentType()) {
+ if (!id.equals(log.getId())) {
+ continue;
+ }
+ if (startLog == null) {
+ startLog = log;
+ }
+ }
+ if (startLog == null) {
+ continue;
+ }
+ if (log.getComponentType() == ComponentType.ANY && endLog == null) {
+ endLog = log;
+ }
+ } else {
+ if (log.getComponentType() == ComponentType.ANY) {
+ if (startLog == null) {
+ startLog = log;
+ } else if (endLog == null) {
+ endLog = log;
+ }
+ }
+ }
+ }
+ }
+ }
+ if (endLog != null && startLog != null) {
+ statistics.update(endLog.getTime() - startLog.getTime(),
+ statisticsRecord.isFaultResponse());
+ }
+ }
+}
Added: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/view/InOutStatisticsView.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/view/InOutStatisticsView.java?rev=755915&view=auto
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/view/InOutStatisticsView.java (added)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/view/InOutStatisticsView.java Thu Mar 19 10:52:47 2009
@@ -0,0 +1,71 @@
+/*
+ * 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.statistics.view;
+
+/**
+ * View of statistics as in and out
+ */
+public class InOutStatisticsView {
+
+ private final Statistics inStatistics;
+ private final Statistics outStatistics;
+ private String resourceId;
+ private String owner;
+
+ public InOutStatisticsView(String id, String owner) {
+ this.resourceId = id;
+ this.owner = owner;
+ this.inStatistics = new Statistics(id);
+ this.outStatistics = new Statistics(id);
+ }
+
+ public Statistics getInStatistics() {
+ return inStatistics;
+ }
+
+ public Statistics getOutStatistics() {
+ return outStatistics;
+ }
+
+ public String getResourceId() {
+ return resourceId;
+ }
+
+ public String getOwner() {
+ return owner;
+ }
+
+ public String toString() {
+
+ StringBuffer sb = new StringBuffer();
+ sb.append("[ Owner Id :").append(owner).append(" ][ Resource ID : ")
+ .append(resourceId).append(" ]");
+
+ if (inStatistics.getCount() != 0) {
+ sb.append(" [ InFlow : ")
+ .append(inStatistics.toString()).append(" ]");
+ }
+
+ if (outStatistics.getCount() != 0) {
+ sb.append("[ OutFlow : ").append(outStatistics.toString()).append(" ]");
+ }
+ return sb.toString();
+ }
+
+}
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/view/PerUserDomainViewStrategy.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/view/PerUserDomainViewStrategy.java?rev=755915&r1=755914&r2=755915&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/view/PerUserDomainViewStrategy.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/view/PerUserDomainViewStrategy.java Thu Mar 19 10:52:47 2009
@@ -18,6 +18,7 @@
*/
package org.apache.synapse.aspects.statistics.view;
+import org.apache.synapse.aspects.ComponentType;
import org.apache.synapse.aspects.statistics.StatisticsRecord;
import java.util.List;
@@ -28,15 +29,15 @@
*/
public class PerUserDomainViewStrategy extends PerUserViewStrategy {
- public Map<String, Map<String, Statistics>> determineView(
+ public Map<String, Map<String, InOutStatisticsView>> determineView(
List<StatisticsRecord> statisticsRecords,
- int type) {
+ ComponentType type) {
return determineView(statisticsRecords, type, DOMAIN);
}
- public Map<String, Statistics> determineView(
+ public Map<String, InOutStatisticsView> determineView(
String id, List<StatisticsRecord> statisticsRecords,
- int type) {
+ ComponentType type) {
return determineView(id, statisticsRecords, type, DOMAIN);
}
}
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/view/PerUserIPViewStrategy.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/view/PerUserIPViewStrategy.java?rev=755915&r1=755914&r2=755915&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/view/PerUserIPViewStrategy.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/view/PerUserIPViewStrategy.java Thu Mar 19 10:52:47 2009
@@ -18,6 +18,7 @@
*/
package org.apache.synapse.aspects.statistics.view;
+import org.apache.synapse.aspects.ComponentType;
import org.apache.synapse.aspects.statistics.StatisticsRecord;
import java.util.List;
@@ -28,14 +29,14 @@
*/
public class PerUserIPViewStrategy extends PerUserViewStrategy {
- public Map<String, Map<String, Statistics>> determineView(
+ public Map<String, Map<String, InOutStatisticsView>> determineView(
List<StatisticsRecord> statisticsRecords,
- int type) {
+ ComponentType type) {
return determineView(statisticsRecords, type, IP);
}
- public Map<String, Statistics> determineView(
- String id, List<StatisticsRecord> statisticsRecords, int type) {
+ public Map<String, InOutStatisticsView> determineView(
+ String id, List<StatisticsRecord> statisticsRecords, ComponentType type) {
return determineView(id, statisticsRecords,
type, IP);
}
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=755915&r1=755914&r2=755915&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 Thu Mar 19 10:52:47 2009
@@ -21,10 +21,12 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.synapse.SynapseException;
-import org.apache.synapse.aspects.statistics.StatisticsLog;
+import org.apache.synapse.aspects.ComponentType;
import org.apache.synapse.aspects.statistics.StatisticsRecord;
+import org.apache.synapse.aspects.statistics.StatisticsUpdateStrategy;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -41,13 +43,12 @@
log = LogFactory.getLog(getClass());
}
- public Map<String, Map<String, Statistics>> determineView(
+ public Map<String, Map<String, InOutStatisticsView>> determineView(
List<StatisticsRecord> statisticsRecords,
- int type,
- int userIDType) {
+ ComponentType type, int userIDType) {
- final Map<String, Map<String, Statistics>> statisticsMap =
- new HashMap<String, Map<String, Statistics>>();
+ final Map<String, Map<String, InOutStatisticsView>> statisticsMap =
+ new HashMap<String, Map<String, InOutStatisticsView>>();
if (statisticsRecords == null) {
if (log.isDebugEnabled()) {
@@ -56,114 +57,70 @@
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();
- }
+ Map<String, InOutStatisticsView> perUserMap = new HashMap<String, InOutStatisticsView>();
- 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);
- }
+ for (StatisticsRecord record : statisticsRecords) {
+ if (record != null) {
- if (perResourceMap == null) {
- if (log.isDebugEnabled()) {
- log.debug("There are not statistics for user ID : " + userID);
+ String userID;
+ if (IP == userIDType) {
+ userID = record.getClientIP();
+ } else {
+ userID = record.getClientHost();
}
- continue;
- }
-
- for (String rName : statisticsLogMap.keySet()) {
- if (rName == null) {
+ if (userID == null || "".equals(userID)) {
if (log.isDebugEnabled()) {
- log.debug("Resource name cannot be found.");
+ log.debug("user ID cannot be found.");
}
continue;
}
- StatisticsLog statisticsLog = statisticsLogMap.get(rName);
- if (statisticsLog == null) {
+ Map<String, InOutStatisticsView> perResourceMap;
+ if (statisticsMap.containsKey(userID)) {
+ perResourceMap = statisticsMap.get(userID);
+ } else {
+ perResourceMap = new HashMap<String, InOutStatisticsView>();
+ statisticsMap.put(userID, perResourceMap);
+ }
+
+ if (perResourceMap == null) {
if (log.isDebugEnabled()) {
- log.debug("Statistics Logs cannot be found for resource with given name " +
- rName);
+ log.debug("There are not statistics for user ID : " + userID);
}
continue;
}
- Statistics statistics;
- if (!perResourceMap.containsKey(rName)) {
- statistics = new Statistics(rName);
- perResourceMap.put(rName, statistics);
- } else {
- statistics = perResourceMap.get(rName);
+ final StatisticsUpdateStrategy strategy = new StatisticsUpdateStrategy(record);
+ final Iterator<String> logIds = record.getAllLogIds(type);
+ while (logIds.hasNext()) {
+ String id = logIds.next();
+
+ InOutStatisticsView view;
+ if (!perUserMap.containsKey(id)) {
+ view = new InOutStatisticsView(id, userID);
+ perUserMap.put(id, view);
+ } else {
+ view = perUserMap.get(id);
+ }
+ updateStatistics(id, type, view, strategy);
}
- 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) {
+
+ public Map<String, InOutStatisticsView> determineView(String id,
+ List<StatisticsRecord> statisticsRecords,
+ ComponentType type, int userIDType) {
if (id == null || "".equals(id)) {
handleException("Resource Id cannot be null");
}
- Map<String, Statistics> statisticsMap = new HashMap<String, Statistics>();
-
+ Map<String, InOutStatisticsView> statisticsMap = new HashMap<String, InOutStatisticsView>();
if (statisticsRecords == null) {
if (log.isDebugEnabled()) {
log.debug("Statistics records cannot be found.");
@@ -172,64 +129,44 @@
}
for (StatisticsRecord record : statisticsRecords) {
+ if (record != null) {
- 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;
+ String userID;
+ if (IP == userIDType) {
+ userID = record.getClientIP();
+ } else {
+ userID = record.getClientHost();
}
- }
- if (statisticsLog == null) {
- if (log.isDebugEnabled()) {
- log.debug("Statistics Logs cannot be found for statistics record " + record);
+ if (userID == null || "".equals(userID)) {
+ if (log.isDebugEnabled()) {
+ log.debug("user ID cannot be found.");
+ }
+ continue;
}
- 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.");
+ InOutStatisticsView view;
+ if (statisticsMap.containsKey(userID)) {
+ view = statisticsMap.get(id);
+ } else {
+ view = new InOutStatisticsView(id, userID);
+ statisticsMap.put(userID, view);
}
- continue;
+ updateStatistics(id, type, view, new StatisticsUpdateStrategy(record));
}
+ }
- Statistics statistics;
- if (statisticsMap.containsKey(userID)) {
- statistics = statisticsMap.get(userID);
- } else {
- statistics = new Statistics(userID);
- statisticsMap.put(userID, statistics);
- }
+ return statisticsMap;
+ }
- if (statistics != null) {
- statistics.update(statisticsLog.getProcessingTime(), record.isFaultResponse());
- }
+ private void updateStatistics(String id, ComponentType type, InOutStatisticsView view,
+ StatisticsUpdateStrategy strategy) {
+ if (view != null) {
+ strategy.updateInFlowStatistics(id, type,
+ view.getInStatistics());
+ strategy.updateOutFlowStatistics(id, type,
+ view.getOutStatistics());
}
- return statisticsMap;
}
private void handleException(String msg) {
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/view/StatisticsViewStrategy.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/view/StatisticsViewStrategy.java?rev=755915&r1=755914&r2=755915&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/view/StatisticsViewStrategy.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/aspects/statistics/view/StatisticsViewStrategy.java Thu Mar 19 10:52:47 2009
@@ -18,6 +18,7 @@
*/
package org.apache.synapse.aspects.statistics.view;
+import org.apache.synapse.aspects.ComponentType;
import org.apache.synapse.aspects.statistics.StatisticsRecord;
import java.util.List;
@@ -35,9 +36,9 @@
* @param type Type of resource
* @return A particular statistics view
*/
- public Map<String, Map<String, Statistics>> determineView(
+ public Map<String, Map<String, InOutStatisticsView>> determineView(
List<StatisticsRecord> statisticsRecords,
- int type);
+ ComponentType type);
/**
* Return a statistics view for a resource with given type and given name
@@ -47,7 +48,7 @@
* @param type Type of resource
* @return A particular statistics view
*/
- public Map<String, Statistics> determineView(String id,
- List<StatisticsRecord> statisticsRecords,
- int type);
+ public Map<String, InOutStatisticsView> determineView(String id,
+ List<StatisticsRecord> statisticsRecords,
+ ComponentType type);
}
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=755915&r1=755914&r2=755915&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 Thu Mar 19 10:52:47 2009
@@ -21,10 +21,12 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.synapse.SynapseException;
-import org.apache.synapse.aspects.statistics.StatisticsLog;
+import org.apache.synapse.aspects.ComponentType;
import org.apache.synapse.aspects.statistics.StatisticsRecord;
+import org.apache.synapse.aspects.statistics.StatisticsUpdateStrategy;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -35,12 +37,12 @@
private static final Log log = LogFactory.getLog(SystemViewStrategy.class);
- public Map<String, Map<String, Statistics>> determineView(
+ public Map<String, Map<String, InOutStatisticsView>> determineView(
List<StatisticsRecord> statisticsRecords,
- int type) {
+ ComponentType type) {
- final Map<String, Map<String, Statistics>> statisticsMap =
- new HashMap<String, Map<String, Statistics>>();
+ final Map<String, Map<String, InOutStatisticsView>> statisticsMap =
+ new HashMap<String, Map<String, InOutStatisticsView>>();
if (statisticsRecords == null) {
if (log.isDebugEnabled()) {
@@ -49,88 +51,41 @@
return statisticsMap;
}
- Map<String, Statistics> perResourceMap = new HashMap<String, Statistics>();
+ final Map<String, InOutStatisticsView> perResourceMap =
+ new HashMap<String, InOutStatisticsView>();
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);
-
+ final StatisticsUpdateStrategy strategy = new StatisticsUpdateStrategy(record);
+ final Iterator<String> logIds = record.getAllLogIds(type);
+ while (logIds.hasNext()) {
+ String id = logIds.next();
+
+ InOutStatisticsView view;
+ if (!perResourceMap.containsKey(id)) {
+ view = new InOutStatisticsView(id, Statistics.ALL);
+ perResourceMap.put(id, view);
} else {
- statistics = perResourceMap.get(rName);
- }
-
- if (statistics != null) {
- statistics.update(statisticsLog.getProcessingTime(),
- record.isFaultResponse());
+ view = perResourceMap.get(id);
}
+ updateStatistics(id, type, view, strategy);
}
}
-
}
-
statisticsMap.put(Statistics.ALL, perResourceMap);
return statisticsMap;
-
}
- public Map<String, Statistics> determineView(String id,
- List<StatisticsRecord> statisticsRecords,
- int type) {
+ public Map<String, InOutStatisticsView> determineView(String id,
+ List<StatisticsRecord> statisticsRecords,
+ ComponentType type) {
if (id == null || "".equals(id)) {
handleException("Resource Id cannot be null");
}
- Map<String, Statistics> statisticsMap = new HashMap<String, Statistics>();
+ Map<String, InOutStatisticsView> statisticsMap = new HashMap<String, InOutStatisticsView>();
if (statisticsRecords == null) {
if (log.isDebugEnabled()) {
log.debug("Statistics records cannot be found.");
@@ -138,37 +93,26 @@
return statisticsMap;
}
- Statistics statistics = new Statistics(Statistics.ALL);
+ InOutStatisticsView view = new InOutStatisticsView(id, 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());
- }
+ updateStatistics(id, type, view, new StatisticsUpdateStrategy(record));
}
}
-
- statisticsMap.put(Statistics.ALL, statistics);
+ statisticsMap.put(Statistics.ALL, view);
return statisticsMap;
}
+ private void updateStatistics(String id, ComponentType type, InOutStatisticsView view,
+ StatisticsUpdateStrategy strategy) {
+ if (view != null) {
+ strategy.updateInFlowStatistics(id, type,
+ view.getInStatistics());
+ strategy.updateOutFlowStatistics(id, type,
+ view.getOutStatistics());
+ }
+ }
+
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/config/xml/AbstractMediatorFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/AbstractMediatorFactory.java?rev=755915&r1=755914&r2=755915&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/AbstractMediatorFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/AbstractMediatorFactory.java Thu Mar 19 10:52:47 2009
@@ -24,8 +24,11 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.synapse.Mediator;
+import org.apache.synapse.Namable;
+import org.apache.synapse.SynapseConstants;
import org.apache.synapse.SynapseException;
import org.apache.synapse.aspects.AspectConfigurable;
+import org.apache.synapse.aspects.AspectConfiguration;
import javax.xml.namespace.QName;
import java.util.Iterator;
@@ -107,9 +110,18 @@
if (statistics != null) {
String statisticsValue = statistics.getAttributeValue();
if (statisticsValue != null) {
+ String name = null;
+ if (mediator instanceof Namable) {
+ name = ((Namable) mediator).getName();
+ }
+ if (name == null || "".equals(name)) {
+ name = SynapseConstants.ANONYMOUS_SEQUENCE;
+ }
if (mediator instanceof AspectConfigurable) {
if (XMLConfigConstants.STATISTICS_ENABLE.equals(statisticsValue)) {
- ((AspectConfigurable) mediator).enableStatistics();
+ AspectConfiguration configuration = new AspectConfiguration(name);
+ configuration.enableStatistics();
+ ((AspectConfigurable) mediator).configure(configuration);
}
}
}
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/AbstractMediatorSerializer.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/AbstractMediatorSerializer.java?rev=755915&r1=755914&r2=755915&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/AbstractMediatorSerializer.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/AbstractMediatorSerializer.java Thu Mar 19 10:52:47 2009
@@ -29,6 +29,7 @@
import org.apache.synapse.Mediator;
import org.apache.synapse.SynapseException;
import org.apache.synapse.aspects.AspectConfigurable;
+import org.apache.synapse.aspects.statistics.StatisticsConfigurable;
import org.apache.synapse.mediators.MediatorProperty;
import javax.xml.namespace.QName;
@@ -76,9 +77,14 @@
mediatorOmElement.addAttribute(fac.createOMAttribute(
XMLConfigConstants.TRACE_ATTRIB_NAME, nullNS, traceValue));
}
-
+
if (mediator instanceof AspectConfigurable) {
- if (((AspectConfigurable) mediator).isStatisticsEnable()) {
+ StatisticsConfigurable statisticsConfigurable =
+ ((AspectConfigurable) mediator).getAspectConfiguration();
+
+ if (statisticsConfigurable != null &&
+ statisticsConfigurable.isStatisticsEnable()) {
+
mediatorOmElement.addAttribute(fac.createOMAttribute(
XMLConfigConstants.STATISTICS_ATTRIB_NAME, nullNS,
XMLConfigConstants.STATISTICS_ENABLE));
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/ProxyServiceFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/ProxyServiceFactory.java?rev=755915&r1=755914&r2=755915&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/ProxyServiceFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/ProxyServiceFactory.java Thu Mar 19 10:52:47 2009
@@ -25,7 +25,9 @@
import org.apache.axis2.wsdl.WSDLConstants;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.synapse.SynapseConstants;
import org.apache.synapse.SynapseException;
+import org.apache.synapse.aspects.AspectConfiguration;
import org.apache.synapse.config.xml.endpoints.EndpointFactory;
import org.apache.synapse.core.axis2.ProxyService;
import org.apache.synapse.util.PolicyInfo;
@@ -300,6 +302,23 @@
}
}
+ OMAttribute statistics = elem.getAttribute(new QName(XMLConfigConstants.NULL_NAMESPACE,
+ XMLConfigConstants.STATISTICS_ATTRIB_NAME));
+ if (statistics != null) {
+ String statisticsValue = statistics.getAttributeValue();
+ if (statisticsValue != null) {
+ if (XMLConfigConstants.STATISTICS_ENABLE.equals(statisticsValue)) {
+ String nameString = proxy.getName();
+ if (nameString == null || "".equals(nameString)) {
+ nameString = SynapseConstants.ANONYMOUS_PROXYSERVICE;
+ }
+ AspectConfiguration aspectConfiguration = new AspectConfiguration(nameString);
+ aspectConfiguration.enableStatistics();
+ proxy.configure(aspectConfiguration);
+ }
+ }
+ }
+
Iterator props = elem.getChildrenWithName(
new QName(XMLConfigConstants.SYNAPSE_NAMESPACE, "parameter"));
while (props.hasNext()) {
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointFactory.java?rev=755915&r1=755914&r2=755915&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/AddressEndpointFactory.java Thu Mar 19 10:52:47 2009
@@ -82,10 +82,11 @@
OMElement addressElement = epConfig.getFirstChildWithName(
new QName(SynapseConstants.SYNAPSE_NAMESPACE, "address"));
if (addressElement != null) {
- EndpointDefinition endpoint = createEndpointDefinition(addressElement);
- addressEndpoint.setDefinition(endpoint);
+ EndpointDefinition definition = createEndpointDefinition(addressElement);
+ addressEndpoint.setDefinition(definition);
+ processAuditStatus(definition, addressEndpoint.getName(), epConfig);
}
- processAuditStatus(addressEndpoint, epConfig);
+
return addressEndpoint;
}
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DefaultEndpointFactory.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DefaultEndpointFactory.java?rev=755915&r1=755914&r2=755915&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DefaultEndpointFactory.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DefaultEndpointFactory.java Thu Mar 19 10:52:47 2009
@@ -22,7 +22,7 @@
import org.apache.axiom.om.OMAttribute;
import org.apache.axiom.om.OMElement;
import org.apache.synapse.SynapseConstants;
-import org.apache.synapse.aspects.AspectConfigurable;
+import org.apache.synapse.aspects.AspectConfiguration;
import org.apache.synapse.config.xml.XMLConfigConstants;
import org.apache.synapse.endpoints.DefaultEndpoint;
import org.apache.synapse.endpoints.Endpoint;
@@ -83,7 +83,7 @@
if (defaultElement != null) {
EndpointDefinition endpoint = createEndpointDefinition(defaultElement);
defaultEndpoint.setDefinition(endpoint);
- processAuditStatus(defaultEndpoint, defaultElement);
+ processAuditStatus(endpoint, defaultEndpoint.getName(),defaultElement);
}
return defaultEndpoint;
}
@@ -134,17 +134,20 @@
return endpointDefinition;
}
- protected void processAuditStatus(Endpoint endpoint ,OMElement epOmElement){
-
+ protected void processAuditStatus(EndpointDefinition definition ,String name , OMElement epOmElement){
+
+ if (name == null || "".equals(name)) {
+ name = SynapseConstants.ANONYMOUS_ENDPOINT;
+ }
OMAttribute statistics = epOmElement.getAttribute(
new QName(XMLConfigConstants.STATISTICS_ATTRIB_NAME));
if (statistics != null) {
String statisticsValue = statistics.getAttributeValue();
if (statisticsValue != null) {
- if (endpoint instanceof AspectConfigurable) {
- if (XMLConfigConstants.STATISTICS_ENABLE.equals(statisticsValue)) {
- ((AspectConfigurable) endpoint).enableStatistics();
- }
+ if (XMLConfigConstants.STATISTICS_ENABLE.equals(statisticsValue)) {
+ AspectConfiguration aspectConfiguration = new AspectConfiguration(name);
+ aspectConfiguration.enableStatistics();
+ definition.configure(aspectConfiguration);
}
}
}
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=755915&r1=755914&r2=755915&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 Thu Mar 19 10:52:47 2009
@@ -30,8 +30,8 @@
import org.apache.synapse.MessageContext;
import org.apache.synapse.SynapseConstants;
import org.apache.synapse.SynapseException;
-import org.apache.synapse.aspects.AspectHelper;
import org.apache.synapse.aspects.statistics.StatisticsCollector;
+import org.apache.synapse.aspects.statistics.StatisticsReporter;
import org.apache.synapse.commons.util.TemporaryData;
import org.apache.synapse.config.SynapseConfiguration;
import org.apache.synapse.core.SynapseEnvironment;
@@ -169,7 +169,7 @@
public void send(EndpointDefinition endpoint, MessageContext synCtx) {
if (synCtx.isResponse()) {
- AspectHelper.reportGlobalAudit(synCtx);
+ StatisticsReporter.reportForAll(synCtx);
if (endpoint != null) {
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyService.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyService.java?rev=755915&r1=755914&r2=755915&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyService.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyService.java Thu Mar 19 10:52:47 2009
@@ -33,6 +33,8 @@
import org.apache.neethi.PolicyEngine;
import org.apache.synapse.SynapseConstants;
import org.apache.synapse.SynapseException;
+import org.apache.synapse.aspects.AspectConfigurable;
+import org.apache.synapse.aspects.AspectConfiguration;
import org.apache.synapse.config.SynapseConfigUtils;
import org.apache.synapse.config.SynapseConfiguration;
import org.apache.synapse.core.SynapseEnvironment;
@@ -76,7 +78,7 @@
* </parameter>?
* </proxy-service>
*/
-public class ProxyService {
+public class ProxyService implements AspectConfigurable {
private static final Log log = LogFactory.getLog(ProxyService.class);
private static final Log trace = LogFactory.getLog(SynapseConstants.TRACE_LOGGER);
@@ -193,8 +195,9 @@
/**
* The variable that indicate tracing on or off for the current mediator
*/
- protected int traceState = SynapseConstants.TRACING_UNSET;
+ private int traceState = SynapseConstants.TRACING_UNSET;
+ private AspectConfiguration aspectConfiguration;
/**
* Constructor
@@ -936,6 +939,14 @@
this.policies.add(pi);
}
+ public void configure(AspectConfiguration aspectConfiguration) {
+ this.aspectConfiguration = aspectConfiguration;
+ }
+
+ public AspectConfiguration getAspectConfiguration() {
+ return aspectConfiguration;
+ }
+
@Override
public String toString() {
StringBuffer sb = new StringBuffer();
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=755915&r1=755914&r2=755915&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 Thu Mar 19 10:52:47 2009
@@ -23,7 +23,8 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.synapse.*;
-import org.apache.synapse.aspects.AspectHelper;
+import org.apache.synapse.aspects.ComponentType;
+import org.apache.synapse.aspects.statistics.StatisticsReporter;
import org.apache.synapse.endpoints.Endpoint;
import org.apache.synapse.mediators.MediatorFaultHandler;
@@ -71,7 +72,9 @@
MessageContext synCtx = MessageContextCreatorForAxis2.getSynapseMessageContext(mc);
- AspectHelper.setGlobalAudit(synCtx);
+ StatisticsReporter.reportForComponent(synCtx,
+ proxy.getAspectConfiguration(),
+ ComponentType.PROXYSERVICE);
// get service log for this message and attach to the message context also set proxy name
Log serviceLog = LogFactory.getLog(SynapseConstants.SERVICE_LOGGER_PREFIX + name);
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=755915&r1=755914&r2=755915&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 Thu Mar 19 10:52:47 2009
@@ -36,7 +36,6 @@
import org.apache.synapse.FaultHandler;
import org.apache.synapse.SynapseConstants;
import org.apache.synapse.SynapseException;
-import org.apache.synapse.aspects.AspectConfigurable;
import org.apache.synapse.aspects.statistics.StatisticsReporter;
import org.apache.synapse.config.SynapseConfigUtils;
import org.apache.synapse.config.SynapseConfiguration;
@@ -157,16 +156,10 @@
private void handleMessage(String messageID ,MessageContext response,
org.apache.synapse.MessageContext synapseOutMsgCtx) throws AxisFault {
- Endpoint endpoint = (Endpoint) synapseOutMsgCtx.getProperty(
- SynapseConstants.LAST_ENDPOINT);
- if (endpoint instanceof AspectConfigurable) {
- StatisticsReporter.report(synapseOutMsgCtx, (AspectConfigurable) endpoint);
- }
-
Object o = response.getProperty(SynapseConstants.SENDING_FAULT);
if (o != null && Boolean.TRUE.equals(o)) {
- StatisticsReporter.reportFault(synapseOutMsgCtx);
+ StatisticsReporter.reportFaultForAll(synapseOutMsgCtx);
// there is a sending fault. propagate the fault to fault handlers.
Stack faultStack = synapseOutMsgCtx.getFaultStack();
@@ -335,6 +328,9 @@
if (dispatcher != null && dispatcher.isServerInitiatedSession()) {
dispatcher.updateSession(synapseInMessageContext);
}
+
+ StatisticsReporter.reportForAll(synapseInMessageContext);
+
// send the response message through the synapse mediation flow
try {
synapseOutMsgCtx.getEnvironment().injectMessage(synapseInMessageContext);
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=755915&r1=755914&r2=755915&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 Thu Mar 19 10:52:47 2009
@@ -27,7 +27,9 @@
import org.apache.synapse.MessageContext;
import org.apache.synapse.SynapseConstants;
import org.apache.synapse.SynapseException;
-import org.apache.synapse.aspects.AspectHelper;
+import org.apache.synapse.aspects.AspectConfigurationDetectionStrategy;
+import org.apache.synapse.aspects.ComponentType;
+import org.apache.synapse.aspects.statistics.StatisticsReporter;
import org.apache.synapse.mediators.MediatorFaultHandler;
/**
@@ -44,7 +46,9 @@
MessageContext synCtx = MessageContextCreatorForAxis2.getSynapseMessageContext(mc);
- AspectHelper.setGlobalAudit(synCtx);
+ StatisticsReporter.reportForComponent(synCtx,
+ AspectConfigurationDetectionStrategy.getAspectConfiguration(synCtx),
+ ComponentType.SEQUENCE);
boolean traceOn = synCtx.getMainSequence().getTraceState() == SynapseConstants.TRACING_ON;
boolean traceOrDebugOn = traceOn || log.isDebugEnabled();