You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by rm...@apache.org on 2013/08/01 13:12:53 UTC

svn commit: r1509169 [1/2] - in /commons/sandbox/monitoring/trunk: ./ aop/src/main/java/org/apache/commons/monitoring/aop/ aop/src/test/java/org/apache/commons/monitoring/aop/ aspectj/src/main/java/org/apache/commons/monitoring/aspectj/ aspectj/src/tes...

Author: rmannibucau
Date: Thu Aug  1 11:12:51 2013
New Revision: 1509169

URL: http://svn.apache.org/r1509169
Log:
getting rid of monitor (counter should be enough)

Removed:
    commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/counter/factory/
    commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/monitors/
    commons/sandbox/monitoring/trunk/core/src/test/java/org/apache/commons/monitoring/repositories/
    commons/sandbox/monitoring/trunk/core/src/test/java/org/apache/commons/monitoring/stopwatches/
    commons/sandbox/monitoring/trunk/web/src/main/java/org/apache/commons/monitoring/web/servlet/CategorizedMonitoringFilter.java
Modified:
    commons/sandbox/monitoring/trunk/PROPOSAL.html
    commons/sandbox/monitoring/trunk/aop/src/main/java/org/apache/commons/monitoring/aop/AbstractPerformanceInterceptor.java
    commons/sandbox/monitoring/trunk/aop/src/main/java/org/apache/commons/monitoring/aop/MonitoringProxyFactory.java
    commons/sandbox/monitoring/trunk/aop/src/test/java/org/apache/commons/monitoring/aop/MonitoringProxyFactoryTest.java
    commons/sandbox/monitoring/trunk/aspectj/src/main/java/org/apache/commons/monitoring/aspectj/CommonsMonitoringAspect.java
    commons/sandbox/monitoring/trunk/aspectj/src/test/java/org/apache/commons/monitoring/aspectj/AspectJMonitoringTest.java
    commons/sandbox/monitoring/trunk/cdi/src/main/java/org/apache/commons/monitoring/cdi/CommonsMonitoringInterceptor.java
    commons/sandbox/monitoring/trunk/cdi/src/test/java/org/apache/commons/monitoring/cdi/CommonsMonitoringInterceptorTest.java
    commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/Role.java
    commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/counter/Counter.java
    commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/counter/DefaultCounter.java
    commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/repositories/DefaultRepository.java
    commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/repositories/Repository.java
    commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/stopwatches/CounterStopWatch.java
    commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/stopwatches/StopWatch.java
    commons/sandbox/monitoring/trunk/core/src/test/java/org/apache/commons/monitoring/counter/CounterBench.java
    commons/sandbox/monitoring/trunk/cxf/src/main/java/org/apache/commons/monitoring/cxf/HttpMonitoringInInterceptor.java
    commons/sandbox/monitoring/trunk/cxf/src/main/java/org/apache/commons/monitoring/cxf/MonitoringFeature.java
    commons/sandbox/monitoring/trunk/cxf/src/main/java/org/apache/commons/monitoring/cxf/MonitoringInInterceptor.java
    commons/sandbox/monitoring/trunk/jdbc/src/main/java/org/apache/commons/monitoring/jdbc/MonitoredConnection.java
    commons/sandbox/monitoring/trunk/jdbc/src/main/java/org/apache/commons/monitoring/jdbc/MonitoredDataSource.java
    commons/sandbox/monitoring/trunk/jdbc/src/main/java/org/apache/commons/monitoring/jdbc/MonitoredPreparedStatement.java
    commons/sandbox/monitoring/trunk/jdbc/src/main/java/org/apache/commons/monitoring/jdbc/MonitoredStatement.java
    commons/sandbox/monitoring/trunk/jdbc/src/main/java/org/apache/commons/monitoring/jdbc/MonitoringDriver.java
    commons/sandbox/monitoring/trunk/jdbc/src/test/java/org/apache/commons/monitoring/jdbc/HsqlDBTest.java
    commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/CSVFormat.java
    commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/JSONFormat.java
    commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/MapFormat.java
    commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/MetricData.java
    commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/XMLFormat.java
    commons/sandbox/monitoring/trunk/reporting/src/test/java/org/apache/commons/monitoring/reporting/FormatsTest.java
    commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/AopaliancePerformanceInterceptor.java
    commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/BeanNameMonitoringAutoProxyCreator.java
    commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/PointcutMonitoringAutoProxyCreator.java
    commons/sandbox/monitoring/trunk/spring/src/test/java/org/apache/commons/monitoring/spring/SpringMonitoringTest.java
    commons/sandbox/monitoring/trunk/spring/src/test/resources/monitoring.xml
    commons/sandbox/monitoring/trunk/src/site/xdoc/instrumentation.xml
    commons/sandbox/monitoring/trunk/src/site/xdoc/listeners.xml
    commons/sandbox/monitoring/trunk/src/site/xdoc/tutorial.xml
    commons/sandbox/monitoring/trunk/src/site/xdoc/web.xml
    commons/sandbox/monitoring/trunk/web/src/main/java/org/apache/commons/monitoring/web/jsp/StartTag.java
    commons/sandbox/monitoring/trunk/web/src/main/java/org/apache/commons/monitoring/web/jsp/StopTag.java
    commons/sandbox/monitoring/trunk/web/src/main/java/org/apache/commons/monitoring/web/servlet/MonitoringFilter.java

Modified: commons/sandbox/monitoring/trunk/PROPOSAL.html
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/PROPOSAL.html?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/PROPOSAL.html (original)
+++ commons/sandbox/monitoring/trunk/PROPOSAL.html Thu Aug  1 11:12:51 2013
@@ -28,7 +28,7 @@
 
 <p>Entreprise Java application are expected to be scalable, performant, flexible, maintainable and highly available.
     To ensure this, we need to instrument the application with tooling, both during development to detect design
-    bottlenecks and on production to monitor application behaviour and health.
+    bottlenecks and on production to counter application behaviour and health.
 </p>
 
 <p>

Modified: commons/sandbox/monitoring/trunk/aop/src/main/java/org/apache/commons/monitoring/aop/AbstractPerformanceInterceptor.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/aop/src/main/java/org/apache/commons/monitoring/aop/AbstractPerformanceInterceptor.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/aop/src/main/java/org/apache/commons/monitoring/aop/AbstractPerformanceInterceptor.java (original)
+++ commons/sandbox/monitoring/trunk/aop/src/main/java/org/apache/commons/monitoring/aop/AbstractPerformanceInterceptor.java Thu Aug  1 11:12:51 2013
@@ -18,10 +18,12 @@
 package org.apache.commons.monitoring.aop;
 
 import org.apache.commons.monitoring.Role;
-import org.apache.commons.monitoring.monitors.Monitor;
+import org.apache.commons.monitoring.counter.Counter;
 import org.apache.commons.monitoring.repositories.Repository;
 import org.apache.commons.monitoring.stopwatches.StopWatch;
 
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
 import java.lang.reflect.Method;
 
 /**
@@ -34,8 +36,6 @@ import java.lang.reflect.Method;
  */
 public abstract class AbstractPerformanceInterceptor<T> {
 
-    protected String category;
-
     protected MonitorNameExtractor monitorNameExtractor;
 
     public AbstractPerformanceInterceptor() {
@@ -46,12 +46,12 @@ public abstract class AbstractPerformanc
      * API neutral method invocation
      */
     protected Object doInvoke(final T invocation) throws Throwable {
-        final String name = getMonitorName(invocation);
+        final String name = getCounterName(invocation);
         if (name == null) {
             return proceed(invocation);
         }
 
-        final Monitor monitor = Repository.INSTANCE.getMonitor(name, category);
+        final Counter monitor = Repository.INSTANCE.getCounter(new Counter.Key(Role.PERFORMANCES, name));
         final StopWatch stopwatch = Repository.INSTANCE.start(monitor);
         Throwable error = null;
         try {
@@ -61,34 +61,28 @@ public abstract class AbstractPerformanc
             throw t;
         } finally {
             stopwatch.stop();
-            beforeReturning(monitor, error, stopwatch.getElapsedTime());
+            if (error != null) {
+                final ByteArrayOutputStream writer = new ByteArrayOutputStream();
+                error.printStackTrace(new PrintStream(writer));
+                Repository.INSTANCE.getCounter(new Counter.Key(Role.FAILURES, writer.toString())).add(stopwatch.getElapsedTime());
+            }
         }
     }
 
     protected abstract Object proceed(T invocation) throws Throwable;
 
-    protected abstract String getMonitorName(T invocation);
+    protected abstract String getCounterName(T invocation);
 
     /**
-     * Compute the monitor name associated to this method invocation
+     * Compute the counter name associated to this method invocation
      *
      * @param method method being invoked
-     * @return monitor name. If <code>null</code>, nothing will be monitored
+     * @return counter name. If <code>null</code>, nothing will be monitored
      */
-    protected String getMonitorName(final Object instance, final Method method) {
+    protected String getCounterName(final Object instance, final Method method) {
         return monitorNameExtractor.getMonitorName(instance, method);
     }
 
-    protected void beforeReturning(final Monitor monitor, final Throwable error, final long duration) {
-        if (error != null) {
-            monitor.getCounter(Role.FAILURES).add(duration);
-        }
-    }
-
-    public void setCategory(final String category) {
-        this.category = category;
-    }
-
     public void setMonitorNameExtractor(final MonitorNameExtractor monitorNameExtractor) {
         this.monitorNameExtractor = monitorNameExtractor;
     }

Modified: commons/sandbox/monitoring/trunk/aop/src/main/java/org/apache/commons/monitoring/aop/MonitoringProxyFactory.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/aop/src/main/java/org/apache/commons/monitoring/aop/MonitoringProxyFactory.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/aop/src/main/java/org/apache/commons/monitoring/aop/MonitoringProxyFactory.java (original)
+++ commons/sandbox/monitoring/trunk/aop/src/main/java/org/apache/commons/monitoring/aop/MonitoringProxyFactory.java Thu Aug  1 11:12:51 2013
@@ -21,6 +21,7 @@ import org.apache.commons.monitoring.uti
 import org.apache.commons.proxy.Invoker;
 import org.apache.commons.proxy.ProxyFactory;
 
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
 public final class MonitoringProxyFactory {
@@ -48,12 +49,16 @@ public final class MonitoringProxyFactor
 
         @Override
         protected Object proceed(final Invocation invocation) throws Throwable {
-            return invocation.method.invoke(invocation.target, invocation.args);
+            try {
+                return invocation.method.invoke(invocation.target, invocation.args);
+            } catch (final InvocationTargetException ite) {
+                throw ite.getCause();
+            }
         }
 
         @Override
-        protected String getMonitorName(final Invocation invocation) {
-            return getMonitorName(invocation.target, invocation.method);
+        protected String getCounterName(final Invocation invocation) {
+            return getCounterName(invocation.target, invocation.method);
         }
     }
 

Modified: commons/sandbox/monitoring/trunk/aop/src/test/java/org/apache/commons/monitoring/aop/MonitoringProxyFactoryTest.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/aop/src/test/java/org/apache/commons/monitoring/aop/MonitoringProxyFactoryTest.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/aop/src/test/java/org/apache/commons/monitoring/aop/MonitoringProxyFactoryTest.java (original)
+++ commons/sandbox/monitoring/trunk/aop/src/test/java/org/apache/commons/monitoring/aop/MonitoringProxyFactoryTest.java Thu Aug  1 11:12:51 2013
@@ -16,6 +16,7 @@
  */
 package org.apache.commons.monitoring.aop;
 
+import org.apache.commons.monitoring.Role;
 import org.apache.commons.monitoring.counter.Counter;
 import org.apache.commons.monitoring.repositories.Repository;
 import org.junit.Test;
@@ -24,6 +25,7 @@ import java.util.concurrent.TimeUnit;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
 
 public class MonitoringProxyFactoryTest {
     @Test
@@ -31,7 +33,7 @@ public class MonitoringProxyFactoryTest 
         final Foo foo = MonitoringProxyFactory.monitor(Foo.class, new FooImpl());
         foo.haveARest(2000);
 
-        final Counter perf = Repository.INSTANCE.getMonitor(FooImpl.class.getName() + ".haveARest").getCounter("performances");
+        final Counter perf = Repository.INSTANCE.getCounter(new Counter.Key(Role.PERFORMANCES, FooImpl.class.getName() + ".haveARest"));
         assertNotNull(perf);
         assertEquals(2000, TimeUnit.NANOSECONDS.toMillis((int) perf.getMax()), 200);
 
@@ -41,7 +43,16 @@ public class MonitoringProxyFactoryTest 
             // normal
         }
 
-        final Counter failures = Repository.INSTANCE.getMonitor(FooImpl.class.getName() + ".throwSthg").getCounter("failures");
+        Counter failures = null;
+        for (final Counter c : Repository.INSTANCE) {
+            if (c.getKey().getName().contains("UnsupportedOperationException")) {
+                if (failures != null) {
+                    fail();
+                }
+                failures = c;
+            }
+        }
+
         assertNotNull(failures);
         assertEquals(1, failures.getHits());
     }

Modified: commons/sandbox/monitoring/trunk/aspectj/src/main/java/org/apache/commons/monitoring/aspectj/CommonsMonitoringAspect.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/aspectj/src/main/java/org/apache/commons/monitoring/aspectj/CommonsMonitoringAspect.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/aspectj/src/main/java/org/apache/commons/monitoring/aspectj/CommonsMonitoringAspect.java (original)
+++ commons/sandbox/monitoring/trunk/aspectj/src/main/java/org/apache/commons/monitoring/aspectj/CommonsMonitoringAspect.java Thu Aug  1 11:12:51 2013
@@ -41,8 +41,8 @@ public abstract class CommonsMonitoringA
     }
 
     @Override
-    protected String getMonitorName(final ProceedingJoinPoint invocation) {
-        final String monitorName = getMonitorName(invocation.getTarget(), findMethod(invocation.getSignature()));
+    protected String getCounterName(final ProceedingJoinPoint invocation) {
+        final String monitorName = getCounterName(invocation.getTarget(), findMethod(invocation.getSignature()));
         if (monitorName != null) {
             return monitorName;
         }

Modified: commons/sandbox/monitoring/trunk/aspectj/src/test/java/org/apache/commons/monitoring/aspectj/AspectJMonitoringTest.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/aspectj/src/test/java/org/apache/commons/monitoring/aspectj/AspectJMonitoringTest.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/aspectj/src/test/java/org/apache/commons/monitoring/aspectj/AspectJMonitoringTest.java (original)
+++ commons/sandbox/monitoring/trunk/aspectj/src/test/java/org/apache/commons/monitoring/aspectj/AspectJMonitoringTest.java Thu Aug  1 11:12:51 2013
@@ -16,6 +16,8 @@
  */
 package org.apache.commons.monitoring.aspectj;
 
+import org.apache.commons.monitoring.Role;
+import org.apache.commons.monitoring.counter.Counter;
 import org.apache.commons.monitoring.repositories.Repository;
 import org.junit.Test;
 
@@ -25,7 +27,7 @@ public class AspectJMonitoringTest {
     @Test
     public void monitor() {
         new MonitorMe().foo();
-        assertEquals(1, Repository.INSTANCE.getMonitor("org.apache.commons.monitoring.aspectj.AspectJMonitoringTest$MonitorMe.foo").getCounter("performances").getHits());
+        assertEquals(1, Repository.INSTANCE.getCounter(new Counter.Key(Role.PERFORMANCES, "org.apache.commons.monitoring.aspectj.AspectJMonitoringTest$MonitorMe.foo")).getHits());
     }
 
     public static class MonitorMe {

Modified: commons/sandbox/monitoring/trunk/cdi/src/main/java/org/apache/commons/monitoring/cdi/CommonsMonitoringInterceptor.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/cdi/src/main/java/org/apache/commons/monitoring/cdi/CommonsMonitoringInterceptor.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/cdi/src/main/java/org/apache/commons/monitoring/cdi/CommonsMonitoringInterceptor.java (original)
+++ commons/sandbox/monitoring/trunk/cdi/src/main/java/org/apache/commons/monitoring/cdi/CommonsMonitoringInterceptor.java Thu Aug  1 11:12:51 2013
@@ -38,7 +38,7 @@ public class CommonsMonitoringIntercepto
     }
 
     @Override
-    protected String getMonitorName(final InvocationContext invocation) {
-        return getMonitorName(invocation.getTarget(), invocation.getMethod());
+    protected String getCounterName(final InvocationContext invocation) {
+        return getCounterName(invocation.getTarget(), invocation.getMethod());
     }
 }

Modified: commons/sandbox/monitoring/trunk/cdi/src/test/java/org/apache/commons/monitoring/cdi/CommonsMonitoringInterceptorTest.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/cdi/src/test/java/org/apache/commons/monitoring/cdi/CommonsMonitoringInterceptorTest.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/cdi/src/test/java/org/apache/commons/monitoring/cdi/CommonsMonitoringInterceptorTest.java (original)
+++ commons/sandbox/monitoring/trunk/cdi/src/test/java/org/apache/commons/monitoring/cdi/CommonsMonitoringInterceptorTest.java Thu Aug  1 11:12:51 2013
@@ -16,6 +16,7 @@
  */
 package org.apache.commons.monitoring.cdi;
 
+import org.apache.commons.monitoring.Role;
 import org.apache.commons.monitoring.counter.Counter;
 import org.apache.commons.monitoring.repositories.Repository;
 import org.apache.webbeans.cditest.CdiTestContainer;
@@ -44,7 +45,7 @@ public class CommonsMonitoringIntercepto
         container.stopApplicationScope();
         container.shutdownContainer();
 
-        final Counter perf = Repository.INSTANCE.getMonitor(MonitoredBean.class.getName() + ".twoSeconds").getCounter("performances");
+        final Counter perf = Repository.INSTANCE.getCounter(new Counter.Key(Role.PERFORMANCES, MonitoredBean.class.getName() + ".twoSeconds"));
         assertNotNull(perf);
         assertEquals(2000, TimeUnit.NANOSECONDS.toMillis((int) perf.getMax()), 200);
     }

Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/Role.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/Role.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/Role.java (original)
+++ commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/Role.java Thu Aug  1 11:12:51 2013
@@ -19,11 +19,6 @@ package org.apache.commons.monitoring;
 
 import org.apache.commons.monitoring.counter.Unit;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
 import static org.apache.commons.monitoring.counter.Unit.Time.NANOSECOND;
 
 /**
@@ -33,23 +28,15 @@ import static org.apache.commons.monitor
  * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
  */
 public class Role implements Comparable<Role> {
-    private static final ConcurrentMap<String, Role> ROLES = new ConcurrentHashMap<String, Role>();
-
+    public static final Role WEB = new Role("web", NANOSECOND);
+    public static final Role JSP = new Role("web", NANOSECOND);
+    public static final Role JDBC = new Role("jdbc", NANOSECOND);
     public static final Role PERFORMANCES = new Role("performances", NANOSECOND);
     public static final Role FAILURES = new Role("failures", Unit.UNARY);
 
     private String name;
     private Unit unit;
 
-    public static Role getRole(String name) {
-        return ROLES.get(name);
-
-    }
-
-    public static Collection<Role> getRoles() {
-        return Collections.unmodifiableCollection(ROLES.values());
-    }
-
     public Role(String name, Unit unit) {
         super();
         if (name == null) {
@@ -60,12 +47,6 @@ public class Role implements Comparable<
         }
         this.name = name;
         this.unit = unit;
-        final Role old = ROLES.putIfAbsent(name, this);
-        if (old != null) {
-            if (!unit.equals(old.unit)) {
-                throw new IllegalStateException("A role already exists with this name but distinct unit");
-            }
-        }
     }
 
     /**

Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/counter/Counter.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/counter/Counter.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/counter/Counter.java (original)
+++ commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/counter/Counter.java Thu Aug  1 11:12:51 2013
@@ -18,7 +18,8 @@
 package org.apache.commons.monitoring.counter;
 
 import org.apache.commons.monitoring.Role;
-import org.apache.commons.monitoring.monitors.Monitor;
+
+import java.util.concurrent.atomic.AtomicInteger;
 
 /**
  * A <code>Metric</code> is a numerical indicator of some monitored application state with support for simple
@@ -27,49 +28,19 @@ import org.apache.commons.monitoring.mon
  * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
  */
 public interface Counter {
-    /**
-     * reset the Metric
-     */
+    Key getKey();
+
     void reset();
 
-    /**
-     * Add value to the metric. For Counters, the value is expected to be always positive.
-     * <p/>
-     * The delta MUST use the metric unit ({@link #getUnit()})
-     *
-     * @param delta value to be added
-     */
     void add(double delta);
 
-    /**
-     * Add value to the metric with the specified Unit. For Counters, the value is expected to be always positive.
-     *
-     * @param delta value to be added
-     * @param unit  the unit used for delta, MUST be compatible with the metric unit ({@link #getUnit()})
-     */
     void add(double delta, Unit unit);
 
-    /**
-     * Set the monitor this Metric is attached to
-     *
-     * @param monitor
-     */
-    void setMonitor(Monitor monitor);
-
-    /**
-     * @return the monitor this Metric is attached to
-     */
-    Monitor getMonitor();
-
-    /**
-     * @return the role for this Metric in the monitor
-     */
-    Role getRole();
-
-    /**
-     * @return the data unit
-     */
-    Unit getUnit();
+    AtomicInteger currentConcurrency();
+
+    void updateConcurrency(int concurrency);
+
+    int getMaxConcurrency();
 
     // --- Statistical indicators --------------------------------------------
 
@@ -92,4 +63,44 @@ public interface Counter {
     double getSumOfLogs();
 
     double getSumOfSquares();
+
+    public static class Key {
+        private final String name;
+        private final Role role;
+
+        public Key(final Role role, final String name) {
+            this.role = role;
+            this.name = name;
+        }
+
+        @Override
+        public String toString() {
+            return "name=" + name;
+        }
+
+        @Override
+        public boolean equals(Object o) {
+            if (this == o) return true;
+            if (o == null || getClass() != o.getClass()) return false;
+
+            final Key key = (Key) o;
+            return name.equals(key.name) && role.equals(key.role);
+
+        }
+
+        @Override
+        public int hashCode() {
+            int result = name.hashCode();
+            result = 31 * result + role.hashCode();
+            return result;
+        }
+
+        public String getName() {
+            return name;
+        }
+
+        public Role getRole() {
+            return role;
+        }
+    }
 }

Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/counter/DefaultCounter.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/counter/DefaultCounter.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/counter/DefaultCounter.java (original)
+++ commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/counter/DefaultCounter.java Thu Aug  1 11:12:51 2013
@@ -17,26 +17,24 @@
 package org.apache.commons.monitoring.counter;
 
 import org.apache.commons.math.stat.descriptive.SummaryStatistics;
-import org.apache.commons.monitoring.Role;
 import org.apache.commons.monitoring.configuration.Configuration;
 import org.apache.commons.monitoring.counter.queuemanager.MetricQueueManager;
-import org.apache.commons.monitoring.monitors.Monitor;
 
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 
 public class DefaultCounter implements Counter {
     private static final MetricQueueManager QUEUE_MANAGER = Configuration.newInstance(MetricQueueManager.class);
 
-    protected Monitor monitor;
+    private final AtomicInteger concurrency = new AtomicInteger(0);
+    private final Key key;
+    private volatile int maxConcurrency = 0;
     protected SummaryStatistics statistics;
-    protected Role role;
-    protected Unit unit;
     protected Lock lock = new ReentrantLock();
 
-    public DefaultCounter(final Role role) {
-        this.role = role;
-        this.unit = role.getUnit();
+    public DefaultCounter(final Key key) {
+        this.key = key;
         this.statistics = new SummaryStatistics();
     }
 
@@ -45,38 +43,40 @@ public class DefaultCounter implements C
     }
 
     @Override
-    public void reset() {
-        statistics.clear();
+    public void updateConcurrency(final int concurrency) {
+        if (concurrency > maxConcurrency) {
+            maxConcurrency = concurrency;
+        }
     }
 
     @Override
-    public void add(final double delta) { // sensitive method which need to be thread safe, default implementation relies on disruptor
-        QUEUE_MANAGER.add(this, delta);
+    public int getMaxConcurrency() {
+        return maxConcurrency;
     }
 
     @Override
-    public void add(final double delta, final Unit deltaUnit) {
-        add(unit.convert(delta, deltaUnit));
+    public AtomicInteger currentConcurrency() {
+        return concurrency;
     }
 
     @Override
-    public void setMonitor(final Monitor monitor) {
-        this.monitor = monitor;
+    public Key getKey() {
+        return key;
     }
 
     @Override
-    public Monitor getMonitor() {
-        return monitor;
+    public void reset() {
+        statistics.clear();
     }
 
     @Override
-    public Role getRole() {
-        return role;
+    public void add(final double delta) { // sensitive method which need to be thread safe, default implementation relies on disruptor
+        QUEUE_MANAGER.add(this, delta);
     }
 
     @Override
-    public Unit getUnit() {
-        return unit;
+    public void add(final double delta, final Unit deltaUnit) {
+        add(key.getRole().getUnit().convert(delta, deltaUnit));
     }
 
     @Override

Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/repositories/DefaultRepository.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/repositories/DefaultRepository.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/repositories/DefaultRepository.java (original)
+++ commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/repositories/DefaultRepository.java Thu Aug  1 11:12:51 2013
@@ -17,37 +17,32 @@
 
 package org.apache.commons.monitoring.repositories;
 
-import org.apache.commons.monitoring.monitors.DefaultMonitor;
-import org.apache.commons.monitoring.monitors.Monitor;
-import org.apache.commons.monitoring.monitors.Monitor.Key;
+import org.apache.commons.monitoring.counter.Counter;
+import org.apache.commons.monitoring.counter.DefaultCounter;
 import org.apache.commons.monitoring.stopwatches.CounterStopWatch;
 import org.apache.commons.monitoring.stopwatches.StopWatch;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.Set;
+import java.util.Iterator;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 
 public class DefaultRepository implements Repository {
-    private final ConcurrentMap<Key, Monitor> monitors = new ConcurrentHashMap<Key, Monitor>(50);
+    private final ConcurrentMap<Counter.Key, Counter> counters = new ConcurrentHashMap<Counter.Key, Counter>(50);
 
-    protected Monitor newMonitorInstance(final Key key) {
-        return new DefaultMonitor(key);
+    protected Counter newCounterInstance(final Counter.Key key) {
+        return new DefaultCounter(key);
     }
 
-    protected Monitor register(final Monitor monitor) {
-        return monitors.putIfAbsent(monitor.getKey(), monitor);
+    protected Counter register(final Counter monitor) {
+        return counters.putIfAbsent(monitor.getKey(), monitor);
     }
 
     @Override
-    public Monitor getMonitor(final Key key) {
-        Monitor monitor = monitors.get(key);
+    public Counter getCounter(final Counter.Key key) {
+        Counter monitor = counters.get(key);
         if (monitor == null) {
-            monitor = newMonitorInstance(key);
-            final Monitor previous = register(monitor);
+            monitor = newCounterInstance(key);
+            final Counter previous = register(monitor);
             if (previous != null) {
                 monitor = previous;
             }
@@ -56,54 +51,24 @@ public class DefaultRepository implement
     }
 
     @Override
-    public Monitor getMonitor(final String name) {
-        return getMonitor(name, Key.DEFAULT);
-    }
-
-    @Override
-    public Monitor getMonitor(final String name, final String category) {
-        return getMonitor(new Monitor.Key(name, category));
-    }
-
-    @Override
-    public Collection<Monitor> getMonitors() {
-        return Collections.unmodifiableCollection(monitors.values());
-    }
-
-    @Override
-    public Collection<Monitor> getMonitorsFromCategory(final String category) {
-        final Collection<Monitor> filtered = new LinkedList<Monitor>();
-        for (final Monitor monitor : monitors.values()) {
-            if (category.equals(monitor.getKey().getCategory())) {
-                filtered.add(monitor);
-            }
-        }
-        return filtered;
-    }
-
-    @Override
-    public Set<String> getCategories() {
-        final Set<String> categories = new HashSet<String>();
-        for (final Key key : monitors.keySet()) {
-            categories.add(key.getCategory());
-        }
-        return categories;
-    }
-
-    @Override
     public void clear() {
-        monitors.clear();
+        counters.clear();
     }
 
     @Override
     public void reset() {
-        for (final Monitor monitor : monitors.values()) {
+        for (final Counter monitor : counters.values()) {
             monitor.reset();
         }
     }
 
     @Override
-    public StopWatch start(final Monitor monitor) {
+    public StopWatch start(final Counter monitor) {
         return new CounterStopWatch(monitor);
     }
+
+    @Override
+    public Iterator<Counter> iterator() {
+        return counters.values().iterator();
+    }
 }

Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/repositories/Repository.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/repositories/Repository.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/repositories/Repository.java (original)
+++ commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/repositories/Repository.java Thu Aug  1 11:12:51 2013
@@ -18,52 +18,22 @@
 package org.apache.commons.monitoring.repositories;
 
 import org.apache.commons.monitoring.configuration.Configuration;
-import org.apache.commons.monitoring.monitors.Monitor;
+import org.apache.commons.monitoring.counter.Counter;
 import org.apache.commons.monitoring.stopwatches.StopWatch;
 
-import java.util.Collection;
-import java.util.Set;
-
 /**
  * The repository maintains a set of monitors and ensure unicity. It creates monitors on-demand
- * based on requested Keys. After creation, the monitor Key cannot be updated.
+ * based on requested Keys. After creation, the counter Key cannot be updated.
  *
  * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
  */
-public interface Repository {
+public interface Repository extends Iterable<Counter> {
     static final Repository INSTANCE = Configuration.newInstance(Repository.class);
 
     /**
-     * Retrieve or create a monitor it's key
-     */
-    Monitor getMonitor(Monitor.Key key);
-
-    /**
-     * Retrieve or create a monitor by name
-     */
-    Monitor getMonitor(String name);
-
-    /**
-     * Retrieve or create a monitor by name and category
-     */
-    Monitor getMonitor(String name, String category);
-
-    /**
-     * @return all monitors registered in the repository
-     */
-    Collection<Monitor> getMonitors();
-
-    /**
-     * @param category a category name
-     * @return all monitors in the repository that declare this category in
-     * there Key
-     */
-    Collection<Monitor> getMonitorsFromCategory(String category);
-
-    /**
-     * @return the categories declared by monitors in the repository
+     * Retrieve or create a counter it's key
      */
-    Set<String> getCategories();
+    Counter getCounter(Counter.Key key);
 
     /**
      * Reset the repository : all existing monitors are destroyed and data are lost.
@@ -77,10 +47,10 @@ public interface Repository {
 
 
     /**
-     * Start a StopWatch to monitor execution
+     * Start a StopWatch to counter execution
      *
-     * @param monitor the monitor associated with the process
+     * @param counter the counter associated with the process
      * @return a running StopWatch
      */
-    StopWatch start(Monitor monitor);
+    StopWatch start(Counter counter);
 }

Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/stopwatches/CounterStopWatch.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/stopwatches/CounterStopWatch.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/stopwatches/CounterStopWatch.java (original)
+++ commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/stopwatches/CounterStopWatch.java Thu Aug  1 11:12:51 2013
@@ -18,7 +18,7 @@
 package org.apache.commons.monitoring.stopwatches;
 
 import org.apache.commons.monitoring.Role;
-import org.apache.commons.monitoring.monitors.Monitor;
+import org.apache.commons.monitoring.counter.Counter;
 
 import java.util.concurrent.atomic.AtomicInteger;
 
@@ -30,60 +30,39 @@ import static org.apache.commons.monitor
  * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
  */
 public class CounterStopWatch implements StopWatch {
-    protected final Monitor monitor;
+    protected final Counter counter;
     protected final long startedAt;
     protected final Role role;
     protected final AtomicInteger concurrencyCounter;
     protected long stopedAt;
-    protected long pauseDelay;
     protected boolean stoped;
-    protected boolean paused;
 
-    public CounterStopWatch(final Monitor monitor) {
+    public CounterStopWatch(final Counter counter) {
         this.role = Role.PERFORMANCES;
-        this.monitor = monitor;
+        this.counter = counter;
         startedAt = nanotime();
 
-        concurrencyCounter = monitor.currentConcurrency();
+        concurrencyCounter = counter.currentConcurrency();
         final int concurrency = concurrencyCounter.incrementAndGet();
-        monitor.updateConcurrency(concurrency);
+        counter.updateConcurrency(concurrency);
     }
 
     protected long nanotime() {
         return System.nanoTime();
     }
 
+    @Override
     public long getElapsedTime() {
-        if (!stoped && !paused) {
-            return nanotime() - startedAt - pauseDelay;
-        }
-        return stopedAt - startedAt - pauseDelay;
-    }
-
-    public StopWatch pause() {
-        if (!paused && !stoped) {
-            stopedAt = nanotime();
-            paused = true;
-        }
-        return this;
-    }
-
-    public StopWatch resume() {
-        if (paused && !stoped) {
-            pauseDelay = nanotime() - stopedAt;
-            paused = false;
-            stopedAt = 0;
+        if (!stoped) {
+            return nanotime() - startedAt;
         }
-        return this;
+        return stopedAt - startedAt;
     }
 
+    @Override
     public StopWatch stop() {
         if (!stoped) {
-            final long t = nanotime();
-            if (paused) {
-                pauseDelay = t - stopedAt;
-            }
-            stopedAt = t;
+            stopedAt = nanotime();
             stoped = true;
             doStop();
         }
@@ -91,52 +70,17 @@ public class CounterStopWatch implements
     }
 
     protected void doStop() {
-        monitor.getCounter(role).add(getElapsedTime(), NANOSECOND);
+        counter.add(getElapsedTime(), NANOSECOND);
         concurrencyCounter.decrementAndGet();
     }
 
-    public StopWatch stop(boolean canceled) {
-        if (canceled) {
-            cancel();
-        } else {
-            stop();
-        }
-        return this;
-    }
-
-    public StopWatch cancel() {
-        if (!stoped) {
-            stoped = true;
-            doCancel();
-        }
-        return this;
-    }
-
-    protected void doCancel() {
-        // no-op
-    }
-
-    public boolean isStoped() {
-        return stoped;
-    }
-
-    public boolean isPaused() {
-        return paused;
-    }
-
-    public Monitor getMonitor() {
-        return monitor;
-    }
-
     @Override
     public String toString() {
         final StringBuilder stb = new StringBuilder();
-        if (monitor != null) {
-            stb.append("Execution for ").append(monitor.getKey().toString()).append(" ");
+        if (counter != null) {
+            stb.append("Execution for ").append(counter.getKey().toString()).append(" ");
         }
-        if (paused) {
-            stb.append("paused after ").append(getElapsedTime()).append("ns");
-        } else if (stoped) {
+        if (stoped) {
             stb.append("stoped after ").append(getElapsedTime()).append("ns");
         } else {
             stb.append("running for ").append(getElapsedTime()).append("ns");

Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/stopwatches/StopWatch.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/stopwatches/StopWatch.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/stopwatches/StopWatch.java (original)
+++ commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/stopwatches/StopWatch.java Thu Aug  1 11:12:51 2013
@@ -17,8 +17,6 @@
 
 package org.apache.commons.monitoring.stopwatches;
 
-import org.apache.commons.monitoring.monitors.Monitor;
-
 /**
  * Instrumentation tool to compute resource consumption of some code fragment execution.
  * <p/>
@@ -28,65 +26,7 @@ import org.apache.commons.monitoring.mon
  * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
  */
 public interface StopWatch {
-    /**
-     * @return Elapsed time (in nanoseconds) for the monitored process, not
-     * including paused time
-     */
     long getElapsedTime();
 
-    /**
-     * Temporary stop the StopWatch. Elapsed time calculation will not include
-     * time spent in paused mode.
-     */
-    StopWatch pause();
-
-    /**
-     * Resume the StopWatch after a pause.
-     */
-    StopWatch resume();
-
-    /**
-     * Stop monitoring the process. A StopWatch created with
-     * {@link #start(org.apache.commons.monitoring.monitors.Monitor)} cannot be re-used after stopped has been called.
-     *
-     * @return TODO
-     */
     StopWatch stop();
-
-    /**
-     * Convenience method to stop or cancel a Stopwatch depending on success of
-     * monitored operation
-     *
-     * @param canceled
-     * @return time elapsed since the probe has been started
-     */
-    StopWatch stop(boolean canceled);
-
-    /**
-     * Cancel monitoring. Elapsed time will not be computed and will not be
-     * published to the monitor.
-     * <p/>
-     * In some circumstances you want to monitor time elapsed from early stage
-     * of computation, and discover latter if the computed data is relevant. For
-     * example, monitoring a messaging system, but beeing interested only by
-     * some types of messages. In such case, a StopWatch can be started early
-     * and canceled when the application is able to determine it's relevancy.
-     * <p/>
-     * In any way, the probe will still report thread concurrency even if
-     * canceled.
-     */
-    StopWatch cancel();
-
-    /**
-     * @return <code>true</code> if the StopWatch has been stopped
-     */
-    boolean isStoped();
-
-    /**
-     * @return <code>true</code> if the StopWatch has been paused
-     */
-    boolean isPaused();
-
-    Monitor getMonitor();
-
 }
\ No newline at end of file

Modified: commons/sandbox/monitoring/trunk/core/src/test/java/org/apache/commons/monitoring/counter/CounterBench.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/test/java/org/apache/commons/monitoring/counter/CounterBench.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/core/src/test/java/org/apache/commons/monitoring/counter/CounterBench.java (original)
+++ commons/sandbox/monitoring/trunk/core/src/test/java/org/apache/commons/monitoring/counter/CounterBench.java Thu Aug  1 11:12:51 2013
@@ -35,7 +35,7 @@ public class CounterBench implements Run
     @Test
     public void defaultCounter() throws Exception {
         mode = "RentrantLockCounter";
-        counter = new DefaultCounter(Role.FAILURES);
+        counter = new DefaultCounter(new Counter.Key(Role.FAILURES, mode));
         runConcurrent();
     }
 

Modified: commons/sandbox/monitoring/trunk/cxf/src/main/java/org/apache/commons/monitoring/cxf/HttpMonitoringInInterceptor.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/cxf/src/main/java/org/apache/commons/monitoring/cxf/HttpMonitoringInInterceptor.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/cxf/src/main/java/org/apache/commons/monitoring/cxf/HttpMonitoringInInterceptor.java (original)
+++ commons/sandbox/monitoring/trunk/cxf/src/main/java/org/apache/commons/monitoring/cxf/HttpMonitoringInInterceptor.java Thu Aug  1 11:12:51 2013
@@ -26,7 +26,7 @@ import javax.servlet.http.HttpServletReq
  * A variant of MonitoringInInterceptor dedicated to web service endpoint based on HttpServlet - most commonly used, but
  * not required.
  * <p/>
- * When no SOAPAction Header is set, the monitor name is extracted from servlet PathInfo
+ * When no SOAPAction Header is set, the counter name is extracted from servlet PathInfo
  *
  * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
  */
@@ -40,7 +40,7 @@ public class HttpMonitoringInInterceptor
     }
 
     @Override
-    protected String getMonitorName(SoapMessage message) {
+    protected String getCounterName(final SoapMessage message) {
         String soapAction = getSoapAction(message);
         if (soapAction != null) {
             return soapAction;

Modified: commons/sandbox/monitoring/trunk/cxf/src/main/java/org/apache/commons/monitoring/cxf/MonitoringFeature.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/cxf/src/main/java/org/apache/commons/monitoring/cxf/MonitoringFeature.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/cxf/src/main/java/org/apache/commons/monitoring/cxf/MonitoringFeature.java (original)
+++ commons/sandbox/monitoring/trunk/cxf/src/main/java/org/apache/commons/monitoring/cxf/MonitoringFeature.java Thu Aug  1 11:12:51 2013
@@ -35,12 +35,9 @@ import org.apache.cxf.interceptor.Interc
  * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
  */
 public class MonitoringFeature extends AbstractFeature {
-    private String category = "soap";
-
     @Override
     protected void initializeProvider(InterceptorProvider provider, Bus bus) {
         final MonitoringInInterceptor in = getMonitoringInInterceptor();
-        in.setCategory(category);
         final MonitoringOutInterceptor out = new MonitoringOutInterceptor();
         provider.getInInterceptors().add(in);
         provider.getInFaultInterceptors().add(in);
@@ -51,8 +48,4 @@ public class MonitoringFeature extends A
     protected MonitoringInInterceptor getMonitoringInInterceptor() {
         return new MonitoringInInterceptor();
     }
-
-    public void setCategory(final String category) {
-        this.category = category;
-    }
 }

Modified: commons/sandbox/monitoring/trunk/cxf/src/main/java/org/apache/commons/monitoring/cxf/MonitoringInInterceptor.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/cxf/src/main/java/org/apache/commons/monitoring/cxf/MonitoringInInterceptor.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/cxf/src/main/java/org/apache/commons/monitoring/cxf/MonitoringInInterceptor.java (original)
+++ commons/sandbox/monitoring/trunk/cxf/src/main/java/org/apache/commons/monitoring/cxf/MonitoringInInterceptor.java Thu Aug  1 11:12:51 2013
@@ -17,7 +17,8 @@
 
 package org.apache.commons.monitoring.cxf;
 
-import org.apache.commons.monitoring.monitors.Monitor;
+import org.apache.commons.monitoring.Role;
+import org.apache.commons.monitoring.counter.Counter;
 import org.apache.commons.monitoring.repositories.Repository;
 import org.apache.commons.monitoring.stopwatches.StopWatch;
 import org.apache.cxf.binding.soap.Soap11;
@@ -37,13 +38,11 @@ import java.util.Map;
 /**
  * A CXF Interceptor to apply monitoring on incoming messages.
  * <p/>
- * The monitor name is set based on message SOAPAction header (if set).
+ * The counter name is set based on message SOAPAction header (if set).
  *
  * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
  */
 public class MonitoringInInterceptor extends AbstractSoapInterceptor {
-    private String category = "soap";
-
     public MonitoringInInterceptor() {
         super(Phase.READ);
     }
@@ -53,37 +52,17 @@ public class MonitoringInInterceptor ext
     }
 
     public void handleMessage(final SoapMessage message) throws Fault {
-        final Monitor monitor = Repository.INSTANCE.getMonitor(getMonitorName(message), getMonitorCategory(message));
+        final Counter monitor = Repository.INSTANCE.getCounter(new Counter.Key(Role.PERFORMANCES, getCounterName(message)));
         StopWatch stopWatch = Repository.INSTANCE.start(monitor);
         message.getExchange().put(StopWatch.class, stopWatch);
     }
 
-    /**
-     * Detect the monitor name from incoming message
-     * <p/>
-     * May be overriden to use another Strategy to attach a Monitor to a SoapMessage
-     *
-     * @param message
-     * @return
-     */
-    protected String getMonitorName(final SoapMessage message) {
+    protected String getCounterName(final SoapMessage message) {
         String soapAction = getSoapAction(message);
         return soapAction != null ? soapAction : "unknown";
     }
 
     /**
-     * Detect the monitor category from incoming message
-     * <p/>
-     * May be overriden to use another Strategy to attach a Monitor to a SoapMessage
-     *
-     * @param message
-     * @return
-     */
-    protected String getMonitorCategory(final SoapMessage message) {
-        return category;
-    }
-
-    /**
      * Retrieve the SOAPAction header
      *
      * @param message the incoming message
@@ -130,11 +109,4 @@ public class MonitoringInInterceptor ext
     public void handleFault(final SoapMessage message) {
         message.getExchange().get(StopWatch.class).stop();
     }
-
-    /**
-     * @param category The monitoring category
-     */
-    public void setCategory(final String category) {
-        this.category = category;
-    }
 }

Modified: commons/sandbox/monitoring/trunk/jdbc/src/main/java/org/apache/commons/monitoring/jdbc/MonitoredConnection.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/jdbc/src/main/java/org/apache/commons/monitoring/jdbc/MonitoredConnection.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/jdbc/src/main/java/org/apache/commons/monitoring/jdbc/MonitoredConnection.java (original)
+++ commons/sandbox/monitoring/trunk/jdbc/src/main/java/org/apache/commons/monitoring/jdbc/MonitoredConnection.java Thu Aug  1 11:12:51 2013
@@ -17,9 +17,7 @@
 
 package org.apache.commons.monitoring.jdbc;
 
-import org.apache.commons.monitoring.Role;
-import org.apache.commons.monitoring.counter.Unit;
-import org.apache.commons.monitoring.monitors.Monitor;
+import org.apache.commons.monitoring.counter.Counter;
 import org.apache.commons.monitoring.stopwatches.CounterStopWatch;
 import org.apache.commons.monitoring.stopwatches.StopWatch;
 import org.apache.commons.monitoring.util.ClassLoaders;
@@ -37,15 +35,6 @@ import java.sql.Statement;
  * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
  */
 public class MonitoredConnection implements InvocationHandler {
-    private final static Role OPEN_CONECTIONS =
-        new Role("open connections", Unit.UNARY);
-
-    private final static Role CONECTION_DURATION =
-        new Role("connection duration", Unit.Time.NANOSECOND);
-
-    /**
-     * target connection
-     */
     private Connection connection;
     private StopWatch stopWatch;
 
@@ -84,10 +73,6 @@ public class MonitoredConnection impleme
         return method.invoke(connection, args);
     }
 
-    /**
-     * @param statement traget Statement
-     * @return monitored Statement
-     */
     private Statement monitor(final Statement statement) {
         return Statement.class.cast(Proxy.newProxyInstance(ClassLoaders.current(), new Class<?>[]{Statement.class}, new MonitoredStatement(statement)));
     }
@@ -110,8 +95,8 @@ public class MonitoredConnection impleme
         return CallableStatement.class.cast(Proxy.newProxyInstance(ClassLoaders.current(), new Class<?>[]{CallableStatement.class}, new MonitoredPreparedStatement(statement, sql)));
     }
 
-    public static Connection monitor(final Connection connection, final Monitor monitor) {
-        final StopWatch stopWatch = new CounterStopWatch(monitor);
+    public static Connection monitor(final Connection connection, final Counter counter) {
+        final StopWatch stopWatch = new CounterStopWatch(counter);
         return Connection.class.cast(Proxy.newProxyInstance(ClassLoaders.current(), new Class<?>[]{Connection.class}, new MonitoredConnection(connection, stopWatch)));
     }
 }

Modified: commons/sandbox/monitoring/trunk/jdbc/src/main/java/org/apache/commons/monitoring/jdbc/MonitoredDataSource.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/jdbc/src/main/java/org/apache/commons/monitoring/jdbc/MonitoredDataSource.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/jdbc/src/main/java/org/apache/commons/monitoring/jdbc/MonitoredDataSource.java (original)
+++ commons/sandbox/monitoring/trunk/jdbc/src/main/java/org/apache/commons/monitoring/jdbc/MonitoredDataSource.java Thu Aug  1 11:12:51 2013
@@ -18,7 +18,8 @@
 package org.apache.commons.monitoring.jdbc;
 
 
-import org.apache.commons.monitoring.monitors.Monitor;
+import org.apache.commons.monitoring.Role;
+import org.apache.commons.monitoring.counter.Counter;
 import org.apache.commons.monitoring.repositories.Repository;
 
 import javax.sql.DataSource;
@@ -42,16 +43,16 @@ public class MonitoredDataSource impleme
      * dataSource name
      */
     private String dataSourceName = DataSource.class.getName();
-    private Monitor monitor;
+    private Counter counter;
 
     /**
      * Constructor
      *
-     * @param dataSource the datasource to monitor
+     * @param dataSource the datasource to counter
      */
     public MonitoredDataSource(final DataSource dataSource) {
         this.dataSource = dataSource;
-        this.monitor = Repository.INSTANCE.getMonitor(dataSourceName, "jdbc");
+        this.counter = Repository.INSTANCE.getCounter(new Counter.Key(Role.JDBC, dataSourceName));
     }
 
     public MonitoredDataSource() {
@@ -70,14 +71,14 @@ public class MonitoredDataSource impleme
     }
 
     /**
-     * @param monitor the monitor to set
+     * @param counter the counter to set
      */
-    public void setMonitor(final Monitor monitor) {
-        this.monitor = monitor;
+    public void setCounter(final Counter counter) {
+        this.counter = counter;
     }
 
     protected Connection monitor(final Connection connection) {
-        return MonitoredConnection.monitor(connection, monitor);
+        return MonitoredConnection.monitor(connection, counter);
     }
 
     /**

Modified: commons/sandbox/monitoring/trunk/jdbc/src/main/java/org/apache/commons/monitoring/jdbc/MonitoredPreparedStatement.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/jdbc/src/main/java/org/apache/commons/monitoring/jdbc/MonitoredPreparedStatement.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/jdbc/src/main/java/org/apache/commons/monitoring/jdbc/MonitoredPreparedStatement.java (original)
+++ commons/sandbox/monitoring/trunk/jdbc/src/main/java/org/apache/commons/monitoring/jdbc/MonitoredPreparedStatement.java Thu Aug  1 11:12:51 2013
@@ -16,6 +16,8 @@
  */
 package org.apache.commons.monitoring.jdbc;
 
+import org.apache.commons.monitoring.Role;
+import org.apache.commons.monitoring.counter.Counter;
 import org.apache.commons.monitoring.repositories.Repository;
 import org.apache.commons.monitoring.stopwatches.StopWatch;
 
@@ -40,7 +42,7 @@ public class MonitoredPreparedStatement 
     public Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable {
         final String name = method.getName();
         if ((args == null || args.length == 0) && name.startsWith("execute")) {
-            final StopWatch stopWatch = Repository.INSTANCE.start(Repository.INSTANCE.getMonitor(sql, "jdbc"));
+            final StopWatch stopWatch = Repository.INSTANCE.start(Repository.INSTANCE.getCounter(new Counter.Key(Role.JDBC, sql)));
             try {
                 return method.invoke(statement, args);
             } catch (final InvocationTargetException e) {

Modified: commons/sandbox/monitoring/trunk/jdbc/src/main/java/org/apache/commons/monitoring/jdbc/MonitoredStatement.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/jdbc/src/main/java/org/apache/commons/monitoring/jdbc/MonitoredStatement.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/jdbc/src/main/java/org/apache/commons/monitoring/jdbc/MonitoredStatement.java (original)
+++ commons/sandbox/monitoring/trunk/jdbc/src/main/java/org/apache/commons/monitoring/jdbc/MonitoredStatement.java Thu Aug  1 11:12:51 2013
@@ -18,7 +18,7 @@
 package org.apache.commons.monitoring.jdbc;
 
 import org.apache.commons.monitoring.Role;
-import org.apache.commons.monitoring.monitors.Monitor;
+import org.apache.commons.monitoring.counter.Counter;
 import org.apache.commons.monitoring.repositories.Repository;
 import org.apache.commons.monitoring.stopwatches.StopWatch;
 
@@ -28,9 +28,6 @@ import java.lang.reflect.Method;
 import java.sql.SQLException;
 import java.sql.Statement;
 
-/**
- * @author <a href="mailto:ndeloof@sourceforge.net">Nicolas De Loof</a>
- */
 public class MonitoredStatement implements InvocationHandler {
     private final Statement statement;
 
@@ -40,8 +37,7 @@ public class MonitoredStatement implemen
 
     protected SQLException monitor(final SQLException sqle) {
         final String name = "SQLException:" + sqle.getSQLState() + ":" + sqle.getErrorCode();
-        final Monitor monitor = Repository.INSTANCE.getMonitor(name, "jdbc");
-        monitor.getCounter(Role.FAILURES).add(1);
+        Repository.INSTANCE.getCounter(new Counter.Key(Role.FAILURES, name)).add(1);
         return sqle;
     }
 
@@ -51,9 +47,9 @@ public class MonitoredStatement implemen
         if (name.startsWith("execute")) {
             final StopWatch stopWatch;
             if (name.endsWith("Batch") && (args == null || args.length == 0)) {
-                stopWatch = Repository.INSTANCE.start(Repository.INSTANCE.getMonitor("batch", "jdbc"));
+                stopWatch = Repository.INSTANCE.start(Repository.INSTANCE.getCounter(new Counter.Key(Role.JDBC, "batch")));
             } else {
-                stopWatch = Repository.INSTANCE.start(Repository.INSTANCE.getMonitor((String) args[0], "jdbc"));
+                stopWatch = Repository.INSTANCE.start(Repository.INSTANCE.getCounter(new Counter.Key(Role.JDBC, (String) args[0])));
             }
 
             try {

Modified: commons/sandbox/monitoring/trunk/jdbc/src/main/java/org/apache/commons/monitoring/jdbc/MonitoringDriver.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/jdbc/src/main/java/org/apache/commons/monitoring/jdbc/MonitoringDriver.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/jdbc/src/main/java/org/apache/commons/monitoring/jdbc/MonitoringDriver.java (original)
+++ commons/sandbox/monitoring/trunk/jdbc/src/main/java/org/apache/commons/monitoring/jdbc/MonitoringDriver.java Thu Aug  1 11:12:51 2013
@@ -16,6 +16,8 @@
  */
 package org.apache.commons.monitoring.jdbc;
 
+import org.apache.commons.monitoring.Role;
+import org.apache.commons.monitoring.counter.Counter;
 import org.apache.commons.monitoring.repositories.Repository;
 
 import java.sql.Connection;
@@ -58,7 +60,7 @@ public class MonitoringDriver implements
         final String realDriver = url.substring(driverIndex + DRIVER_SUFFIX.length());
         try {
             final Driver delegate = Driver.class.cast(Class.forName(realDriver).newInstance());
-            return MonitoredConnection.monitor(delegate.connect(realUrl, info), Repository.INSTANCE.getMonitor(Driver.class.getName(), "jdbc"));
+            return MonitoredConnection.monitor(delegate.connect(realUrl, info), Repository.INSTANCE.getCounter(new Counter.Key(Role.JDBC, url)));
         } catch (final Exception e) {
             throw new SQLException(e);
         }

Modified: commons/sandbox/monitoring/trunk/jdbc/src/test/java/org/apache/commons/monitoring/jdbc/HsqlDBTest.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/jdbc/src/test/java/org/apache/commons/monitoring/jdbc/HsqlDBTest.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/jdbc/src/test/java/org/apache/commons/monitoring/jdbc/HsqlDBTest.java (original)
+++ commons/sandbox/monitoring/trunk/jdbc/src/test/java/org/apache/commons/monitoring/jdbc/HsqlDBTest.java Thu Aug  1 11:12:51 2013
@@ -17,7 +17,7 @@
 package org.apache.commons.monitoring.jdbc;
 
 import org.apache.commons.monitoring.Role;
-import org.apache.commons.monitoring.monitors.Monitor;
+import org.apache.commons.monitoring.counter.Counter;
 import org.apache.commons.monitoring.repositories.Repository;
 import org.hsqldb.jdbcDriver;
 import org.junit.BeforeClass;
@@ -54,14 +54,14 @@ public class HsqlDBTest {
         final String create = "CREATE TABLE Address (Nr INTEGER, Name VARCHAR(128));";
         final Statement statement = connection.createStatement();
         statement.execute(create);
-        assertEquals(1, Repository.INSTANCE.getMonitor(new Monitor.Key(create, "jdbc")).getMaxConcurrency(), 0.);
+        assertEquals(1, Repository.INSTANCE.getCounter(new Counter.Key(Role.JDBC, create)).getMaxConcurrency(), 0.);
 
         final String insert = "INSERT INTO Address (Nr, Name) VALUES(1, 'foo')";
         final PreparedStatement preparedStatement = connection.prepareStatement(insert);
         preparedStatement.execute();
-        assertEquals(1, Repository.INSTANCE.getMonitor(new Monitor.Key(insert, "jdbc")).getMaxConcurrency(), 0.);
+        assertEquals(1, Repository.INSTANCE.getCounter(new Counter.Key(Role.JDBC, insert)).getMaxConcurrency(), 0.);
         preparedStatement.execute();
-        assertEquals(1, Repository.INSTANCE.getMonitor(new Monitor.Key(insert, "jdbc")).getMaxConcurrency(), 0.);
-        assertEquals(2, Repository.INSTANCE.getMonitor(new Monitor.Key(insert, "jdbc")).getCounter(Role.PERFORMANCES).getHits(), 0.);
+        assertEquals(1, Repository.INSTANCE.getCounter(new Counter.Key(Role.JDBC, insert)).getMaxConcurrency(), 0.);
+        assertEquals(2, Repository.INSTANCE.getCounter(new Counter.Key(Role.JDBC, insert)).getHits(), 0.);
     }
 }

Modified: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/CSVFormat.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/CSVFormat.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/CSVFormat.java (original)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/CSVFormat.java Thu Aug  1 11:12:51 2013
@@ -25,7 +25,7 @@ import java.util.Map;
 
 public class CSVFormat extends MapFormat implements Format {
     private static final String SEPARATOR = Configuration.getProperty(Configuration.COMMONS_MONITORING_PREFIX + "csv.separator", ";");
-    public static final String HEADER = "Monitor" + SEPARATOR + "Category" + SEPARATOR + "Role" + SEPARATOR + toCsv(ATTRIBUTES_ORDERED_LIST);
+    public static final String HEADER = "Monitor" + SEPARATOR + "Role" + SEPARATOR + toCsv(ATTRIBUTES_ORDERED_LIST);
 
 
     @Override

Modified: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/JSONFormat.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/JSONFormat.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/JSONFormat.java (original)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/JSONFormat.java Thu Aug  1 11:12:51 2013
@@ -18,7 +18,6 @@
 package org.apache.commons.monitoring.reporting.web.plugin.report.format;
 
 import org.apache.commons.monitoring.counter.Counter;
-import org.apache.commons.monitoring.monitors.Monitor;
 import org.apache.commons.monitoring.repositories.Repository;
 
 import java.io.PrintWriter;
@@ -30,31 +29,20 @@ public class JSONFormat implements Forma
 
     @Override
     public void render(final PrintWriter writer, final Map<String, ?> params) {
-        writer.write("{\"monitors\":[");
-        final Iterator<Monitor> monitors = Repository.INSTANCE.getMonitors().iterator();
-        while (monitors.hasNext()) {
-            final Monitor monitor = monitors.next();
-            writer.write("{\"name\":\"" + monitor.getKey().getName() + "\",");
-            writer.write("\"category\":\"" + monitor.getKey().getCategory() + "\",");
-            writer.write("\"counters\":[");
-            final Iterator<Counter> counters = monitor.getCounters().iterator();
-            while (counters.hasNext()) {
-                final Counter counter = counters.next();
-                writer.write("{\"role\":\"" + counter.getRole().getName() + "\",");
-                writer.write("\"unit\":\"" + counter.getRole().getUnit().getName() + "\",");
-                for (int i = 0; i < METRIC_DATA.length; i++) {
-                    writer.write("\"" + METRIC_DATA[i].name() + "\":\"" + METRIC_DATA[i].value(counter) + "\"");
-                    if (i < METRIC_DATA.length - 1) {
-                        writer.write(",");
-                    }
-                }
-                writer.write("}");
-                if (counters.hasNext()) {
+        writer.write("{\"counters\":[");
+        final Iterator<Counter> counters = Repository.INSTANCE.iterator();
+        while (counters.hasNext()) {
+            final Counter counter = counters.next();
+            writer.write("{\"name\":\"" + counter.getKey().getName() + "\",\"role\":\"" + counter.getKey().getRole().getName() + "\",");
+            writer.write("\"unit\":\"" + counter.getKey().getRole().getUnit().getName() + "\",");
+            for (int i = 0; i < METRIC_DATA.length; i++) {
+                writer.write("\"" + METRIC_DATA[i].name() + "\":\"" + METRIC_DATA[i].value(counter) + "\"");
+                if (i < METRIC_DATA.length - 1) {
                     writer.write(",");
                 }
             }
-            writer.write("]}");
-            if (monitors.hasNext()) {
+            writer.write("}");
+            if (counters.hasNext()) {
                 writer.write(",");
             }
         }

Modified: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/MapFormat.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/MapFormat.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/MapFormat.java (original)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/MapFormat.java Thu Aug  1 11:12:51 2013
@@ -18,7 +18,6 @@ package org.apache.commons.monitoring.re
 
 import org.apache.commons.monitoring.counter.Counter;
 import org.apache.commons.monitoring.counter.Unit;
-import org.apache.commons.monitoring.monitors.Monitor;
 import org.apache.commons.monitoring.repositories.Repository;
 
 import java.util.ArrayList;
@@ -31,8 +30,7 @@ public abstract class MapFormat {
 
     protected static Collection<String> buildMetricDataHeader() {
         final Collection<String> list = new CopyOnWriteArrayList<String>();
-        list.add("Monitor");
-        list.add("Category");
+        list.add("Counter");
         list.add("Role");
         for (final MetricData md : MetricData.values()) {
             list.add(md.name());
@@ -64,30 +62,27 @@ public abstract class MapFormat {
 
     protected static Collection<Collection<String>> snapshot(final Unit timeUnit) {
         final Collection<Collection<String>> data = new ArrayList<Collection<String>>();
-        for (final Monitor monitor : Repository.INSTANCE.getMonitors()) {
-            for (final Counter counter : monitor.getCounters()) {
-                final Unit counterUnit = counter.getRole().getUnit();
-                final boolean compatible = timeUnit.isCompatible(counterUnit);
-
-                final Collection<String> line = new ArrayList<String>();
-                data.add(line);
-
-                line.add(monitor.getKey().getName());
-                line.add(monitor.getKey().getCategory());
-
-                if (compatible) {
-                    line.add(counter.getRole().getName() + " (" + timeUnit.getName() + ")");
-                } else {
-                    line.add(counter.getRole().getName() + " (" + counterUnit.getName() + ")");
-                }
+        for (final Counter counter : Repository.INSTANCE) {
+            final Unit counterUnit = counter.getKey().getRole().getUnit();
+            final boolean compatible = timeUnit.isCompatible(counterUnit);
+
+            final Collection<String> line = new ArrayList<String>();
+            data.add(line);
+
+            line.add(counter.getKey().getName());
+
+            if (compatible) {
+                line.add(counter.getKey().getRole().getName() + " (" + timeUnit.getName() + ")");
+            } else {
+                line.add(counter.getKey().getRole().getName() + " (" + counterUnit.getName() + ")");
+            }
 
-                for (final MetricData md : MetricData.values()) {
-                    double value = md.value(counter);
-                    if (md.isTime() && compatible && timeUnit != counterUnit) {
-                        value = timeUnit.convert(value, counterUnit);
-                    }
-                    line.add(Double.toString(value));
+            for (final MetricData md : MetricData.values()) {
+                double value = md.value(counter);
+                if (md.isTime() && compatible && timeUnit != counterUnit) {
+                    value = timeUnit.convert(value, counterUnit);
                 }
+                line.add(Double.toString(value));
             }
         }
         return data;

Modified: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/MetricData.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/MetricData.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/MetricData.java (original)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/MetricData.java Thu Aug  1 11:12:51 2013
@@ -158,7 +158,7 @@ public enum MetricData {
     Concurrency {
         @Override
         public double value(final Counter counter) {
-            return counter.getMonitor().getConcurrency();
+            return counter.currentConcurrency().get();
         }
 
         @Override
@@ -169,7 +169,7 @@ public enum MetricData {
     MaxConcurrency {
         @Override
         public double value(final Counter counter) {
-            return counter.getMonitor().getMaxConcurrency();
+            return counter.getMaxConcurrency();
         }
 
         @Override

Modified: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/XMLFormat.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/XMLFormat.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/XMLFormat.java (original)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/XMLFormat.java Thu Aug  1 11:12:51 2013
@@ -18,7 +18,6 @@
 package org.apache.commons.monitoring.reporting.web.plugin.report.format;
 
 import org.apache.commons.monitoring.counter.Counter;
-import org.apache.commons.monitoring.monitors.Monitor;
 import org.apache.commons.monitoring.repositories.Repository;
 
 import java.io.PrintWriter;
@@ -28,16 +27,12 @@ public class XMLFormat implements Format
     @Override
     public void render(final PrintWriter writer, final Map<String, ?> params) {
         writer.write("<repository>");
-        for (final Monitor monitor : Repository.INSTANCE.getMonitors()) {
-            writer.write("<monitor name=\"" + monitor.getKey().getName() + "\" category=\"" + monitor.getKey().getCategory() + "\">");
-            for (final Counter counter : monitor.getCounters()) {
-                writer.write("<counter role=\"" + counter.getRole().getName() + "\" unit=\"" + counter.getRole().getUnit().getName() + "\"");
-                for (final MetricData md : MetricData.values()) {
-                    writer.write(" " + md.name() + "=\"" + md.value(counter) + "\"");
-                }
-                writer.write(" />");
+        for (final Counter counter : Repository.INSTANCE) {
+            writer.write("<counter name=\"" + counter.getKey().getName() + "\" role=\"" + counter.getKey().getRole().getName() + "\" unit=\"" + counter.getKey().getRole().getUnit().getName() + "\"");
+            for (final MetricData md : MetricData.values()) {
+                writer.write(" " + md.name() + "=\"" + md.value(counter) + "\"");
             }
-            writer.write("</monitor>");
+            writer.write(" />");
         }
         writer.write("</repository>");
     }

Modified: commons/sandbox/monitoring/trunk/reporting/src/test/java/org/apache/commons/monitoring/reporting/FormatsTest.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/test/java/org/apache/commons/monitoring/reporting/FormatsTest.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/test/java/org/apache/commons/monitoring/reporting/FormatsTest.java (original)
+++ commons/sandbox/monitoring/trunk/reporting/src/test/java/org/apache/commons/monitoring/reporting/FormatsTest.java Thu Aug  1 11:12:51 2013
@@ -18,7 +18,7 @@
 package org.apache.commons.monitoring.reporting;
 
 import org.apache.commons.monitoring.Role;
-import org.apache.commons.monitoring.monitors.Monitor;
+import org.apache.commons.monitoring.counter.Counter;
 import org.apache.commons.monitoring.reporting.web.plugin.report.format.CSVFormat;
 import org.apache.commons.monitoring.reporting.web.plugin.report.format.Format;
 import org.apache.commons.monitoring.repositories.Repository;
@@ -37,9 +37,9 @@ public class FormatsTest {
     public static void setup() {
         Repository.INSTANCE.clear();
 
-        final Monitor monitor = Repository.INSTANCE.getMonitor(new Monitor.Key("RendererTest", "unit"));
-        monitor.updateConcurrency(1);
-        monitor.getCounter(Role.FAILURES).add(1.);
+        final Counter counter = Repository.INSTANCE.getCounter(new Counter.Key(Role.FAILURES, "RendererTest"));
+        counter.updateConcurrency(1);
+        counter.add(1.);
     }
 
     @AfterClass
@@ -53,10 +53,8 @@ public class FormatsTest {
         Format.Defaults.XML.render(new PrintWriter(out), Collections.<String, Object>emptyMap());
 
         assertEquals("<repository>" +
-            "<monitor name=\"RendererTest\" category=\"unit\">" +
-            "<counter role=\"failures\" unit=\"u\" Hits=\"1.0\" Max=\"1.0\" Mean=\"1.0\" Min=\"1.0\" StandardDeviation=\"0.0\" Sum=\"1.0\" " +
+            "<counter name=\"RendererTest\" role=\"failures\" unit=\"u\" Hits=\"1.0\" Max=\"1.0\" Mean=\"1.0\" Min=\"1.0\" StandardDeviation=\"0.0\" Sum=\"1.0\" " +
             "SumOfLogs=\"0.0\" SumOfSquares=\"0.0\" Variance=\"0.0\" GeometricMean=\"1.0\" Value=\"1.0\" Concurrency=\"0.0\" MaxConcurrency=\"1.0\" />" +
-            "</monitor>" +
             "</repository>".trim(), out.toString());
     }
 
@@ -65,11 +63,10 @@ public class FormatsTest {
         final StringWriter out = new StringWriter();
         Format.Defaults.JSON.render(new PrintWriter(out), Collections.<String, Object>emptyMap());
 
-        assertEquals("{\"monitors\":[" +
-            "{\"name\":\"RendererTest\",\"category\":\"unit\",\"counters\":[" +
-            "{\"role\":\"failures\",\"unit\":\"u\",\"Hits\":\"1.0\",\"Max\":\"1.0\",\"Mean\":\"1.0\",\"Min\":\"1.0\"," +
+        assertEquals("{\"counters\":[" +
+            "{\"name\":\"RendererTest\",\"role\":\"failures\",\"unit\":\"u\",\"Hits\":\"1.0\",\"Max\":\"1.0\",\"Mean\":\"1.0\",\"Min\":\"1.0\"," +
             "\"StandardDeviation\":\"0.0\",\"Sum\":\"1.0\",\"SumOfLogs\":\"0.0\",\"SumOfSquares\":\"0.0\",\"Variance\":\"0.0\"," +
-            "\"GeometricMean\":\"1.0\",\"Value\":\"1.0\",\"Concurrency\":\"0.0\",\"MaxConcurrency\":\"1.0\"}]}]}", out.toString());
+            "\"GeometricMean\":\"1.0\",\"Value\":\"1.0\",\"Concurrency\":\"0.0\",\"MaxConcurrency\":\"1.0\"}]}", out.toString());
     }
 
     @Test
@@ -78,7 +75,7 @@ public class FormatsTest {
         Format.Defaults.CSV.render(new PrintWriter(out), Collections.<String, Object>emptyMap());
 
         assertEquals(CSVFormat.HEADER +
-            "RendererTest;unit;failures (u);1.0;1.0;1.0;1.0;0.0;1.0;0.0;0.0;0.0;1.0;1.0;0.0;1.0\n",
+            "RendererTest;failures (u);1.0;1.0;1.0;1.0;0.0;1.0;0.0;0.0;0.0;1.0;1.0;0.0;1.0\n",
             out.toString());
     }
 }

Modified: commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/AopaliancePerformanceInterceptor.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/AopaliancePerformanceInterceptor.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/AopaliancePerformanceInterceptor.java (original)
+++ commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/AopaliancePerformanceInterceptor.java Thu Aug  1 11:12:51 2013
@@ -33,8 +33,8 @@ public class AopaliancePerformanceInterc
     }
 
     @Override
-    protected String getMonitorName(final MethodInvocation invocation) {
-        return getMonitorName(invocation.getThis(), invocation.getMethod());
+    protected String getCounterName(final MethodInvocation invocation) {
+        return getCounterName(invocation.getThis(), invocation.getMethod());
     }
 
     @Override

Modified: commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/BeanNameMonitoringAutoProxyCreator.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/BeanNameMonitoringAutoProxyCreator.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/BeanNameMonitoringAutoProxyCreator.java (original)
+++ commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/BeanNameMonitoringAutoProxyCreator.java Thu Aug  1 11:12:51 2013
@@ -22,45 +22,24 @@ import org.apache.commons.monitoring.aop
 import org.springframework.aop.TargetSource;
 import org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator;
 
-/**
- * Creates monitored proxies for beans that match a naming pattern.
- *
- * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
- */
 public class BeanNameMonitoringAutoProxyCreator extends BeanNameAutoProxyCreator {
-    private String category = "spring";
-    private MonitorNameExtractor monitorNameExtractor = DefaultMonitorNameExtractor.INSTANCE;
+    private MonitorNameExtractor counterNameExtractor = DefaultMonitorNameExtractor.INSTANCE;
 
     @Override
     protected Object[] getAdvicesAndAdvisorsForBean(final Class beanClass, final String beanName, final TargetSource targetSource) {
         if (super.getAdvicesAndAdvisorsForBean(beanClass, beanName, targetSource) != DO_NOT_PROXY) {
             final AopaliancePerformanceInterceptor interceptor = new AopaliancePerformanceInterceptor();
-            interceptor.setCategory(category);
-            interceptor.setMonitorNameExtractor(monitorNameExtractor);
+            interceptor.setMonitorNameExtractor(counterNameExtractor);
             return new Object[] { interceptor };
         }
         return DO_NOT_PROXY;
     }
 
-    /**
-     * @param category the category to set
-     */
-    public void setCategory(final String category) {
-        this.category = category;
+    public void setCounterNameExtractor(final MonitorNameExtractor counterNameExtractor) {
+        this.counterNameExtractor = counterNameExtractor;
     }
 
-    /**
-     * @param monitorNameExtractor the monitorNameExtractor to set
-     */
-    public void setMonitorNameExtractor(final MonitorNameExtractor monitorNameExtractor) {
-        this.monitorNameExtractor = monitorNameExtractor;
-    }
-
-    public String getCategory() {
-        return category;
-    }
-
-    public MonitorNameExtractor getMonitorNameExtractor() {
-        return monitorNameExtractor;
+    public MonitorNameExtractor getCounterNameExtractor() {
+        return counterNameExtractor;
     }
 }

Modified: commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/PointcutMonitoringAutoProxyCreator.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/PointcutMonitoringAutoProxyCreator.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/PointcutMonitoringAutoProxyCreator.java (original)
+++ commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/PointcutMonitoringAutoProxyCreator.java Thu Aug  1 11:12:51 2013
@@ -35,14 +35,12 @@ import java.util.List;
  * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
  */
 public class PointcutMonitoringAutoProxyCreator extends AbstractAdvisorAutoProxyCreator {
-    private String category = "spring";
     private MonitorNameExtractor monitorNameExtractor = DefaultMonitorNameExtractor.INSTANCE;
     private Pointcut pointcut;
 
     @Override
     protected List<Advisor> findCandidateAdvisors() {
         final AopaliancePerformanceInterceptor interceptor = new AopaliancePerformanceInterceptor();
-        interceptor.setCategory(category);
         interceptor.setMonitorNameExtractor(monitorNameExtractor);
 
         final PointcutAdvisor adivsor = createPointcutAdvisor(interceptor);
@@ -56,10 +54,6 @@ public class PointcutMonitoringAutoProxy
         return new DefaultPointcutAdvisor(pointcut, advice);
     }
 
-    public void setCategory(final String category) {
-        this.category = category;
-    }
-
     public void setMonitorNameExtractor(final MonitorNameExtractor monitorNameExtractor) {
         this.monitorNameExtractor = monitorNameExtractor;
     }
@@ -68,10 +62,6 @@ public class PointcutMonitoringAutoProxy
         this.pointcut = pointcut;
     }
 
-    public String getCategory() {
-        return category;
-    }
-
     public MonitorNameExtractor getMonitorNameExtractor() {
         return monitorNameExtractor;
     }

Modified: commons/sandbox/monitoring/trunk/spring/src/test/java/org/apache/commons/monitoring/spring/SpringMonitoringTest.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/spring/src/test/java/org/apache/commons/monitoring/spring/SpringMonitoringTest.java?rev=1509169&r1=1509168&r2=1509169&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/spring/src/test/java/org/apache/commons/monitoring/spring/SpringMonitoringTest.java (original)
+++ commons/sandbox/monitoring/trunk/spring/src/test/java/org/apache/commons/monitoring/spring/SpringMonitoringTest.java Thu Aug  1 11:12:51 2013
@@ -17,7 +17,7 @@
 package org.apache.commons.monitoring.spring;
 
 import org.apache.commons.monitoring.Role;
-import org.apache.commons.monitoring.monitors.Monitor;
+import org.apache.commons.monitoring.counter.Counter;
 import org.apache.commons.monitoring.repositories.Repository;
 import org.apache.commons.monitoring.spring.service.MyService;
 import org.junit.Test;
@@ -37,6 +37,6 @@ public class SpringMonitoringTest {
     @Test
     public void checkMonitoringIsActivated() {
         service.doIt();
-        assertEquals(1, Repository.INSTANCE.getMonitor(new Monitor.Key(MyService.class.getName() + ".doIt", "spring")).getCounter(Role.PERFORMANCES).getHits());
+        assertEquals(1, Repository.INSTANCE.getCounter(new Counter.Key(Role.PERFORMANCES, MyService.class.getName() + ".doIt")).getHits());
     }
 }