Author: nicolas
Date: Wed Feb 18 08:14:29 2009
New Revision: 745420

URL: http://svn.apache.org/viewvc?rev=745420&view=rev
Log:
Cleaner Unit API

Modified:
    
commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/Monitor.java
    
commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/Unit.java
    
commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/stopwatches/CpuTimeStopWatch.java
    
commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/stopwatches/SimpleStopWatch.java
    
commons/sandbox/monitoring/branches/modules/core/src/test/java/org/apache/commons/monitoring/UnitTest.java
    
commons/sandbox/monitoring/branches/modules/instrumentation/src/main/java/org/apache/commons/monitoring/instrumentation/aop/AbstractPerformanceInterceptor.java
    
commons/sandbox/monitoring/branches/modules/reporting/src/main/java/org/apache/commons/monitoring/reporting/AbstractPeriodicLogger.java

Modified: 
commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/Monitor.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/Monitor.java?rev=745420&r1=745419&r2=745420&view=diff
==============================================================================
--- 
commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/Monitor.java
 (original)
+++ 
commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/Monitor.java
 Wed Feb 18 08:14:29 2009
@@ -17,6 +17,8 @@
 
 package org.apache.commons.monitoring;
 
+import static org.apache.commons.monitoring.Unit.Time.MILLISECOND;
+
 import java.util.Collection;
 import java.util.EventListener;
 
@@ -50,10 +52,10 @@
     // --- Predefined roles 
-------------------------------------------------------------------
 
     /** Predefined role key for code performances */
-    Role PERFORMANCES = new Role( "performances", Unit.MILLIS, 
Metric.Type.COUNTER );
+    Role PERFORMANCES = new Role( "performances", MILLISECOND, 
Metric.Type.COUNTER );
 
     /** Predefined role key for cpu time */
-    Role CPU = new Role( "cpu", Unit.MILLIS, Metric.Type.COUNTER );
+    Role CPU = new Role( "cpu", MILLISECOND, Metric.Type.COUNTER );
 
     /** Predefined role for multi-thread concurrency */
     Role CONCURRENCY = new Role( "concurrency", Unit.UNARY, Metric.Type.GAUGE 
);

Modified: 
commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/Unit.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/Unit.java?rev=745420&r1=745419&r2=745420&view=diff
==============================================================================
--- 
commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/Unit.java
 (original)
+++ 
commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/Unit.java
 Wed Feb 18 08:14:29 2009
@@ -43,21 +43,54 @@
     private static final Map<String, Unit> UNITS = new 
ConcurrentHashMap<String,Unit>();
 
     /** Time based units */
-    public static final Unit NANOS = new Unit( "ns" );
-    public static final Unit MICROS = new Unit( "µs", NANOS, 1000 );
-    public static final Unit MILLIS = new Unit( "ms", MICROS, 1000 );
-    public static final Unit SECOND = new Unit( "s", MILLIS, 1000 );
-    public static final Unit MINUTE = new Unit( "min", SECOND, 60 );
-    public static final Unit HOUR = new Unit( "h", MINUTE, 60 );
-    public static final Unit DAY = new Unit( "day", HOUR, 24 );
+    public static class Time
+        extends Unit
+    {
+        public static final Unit NANOSECOND = new Unit( "ns" );
+        public static final Unit MICROSECOND = new Unit( "µs", NANOSECOND, 
1000 );
+        public static final Unit MILLISECOND = new Unit( "ms", MICROSECOND, 
1000 );
+        public static final Unit SECOND = new Unit( "s", MILLISECOND, 1000 );
+        public static final Unit MINUTE = new Unit( "min", SECOND, 60 );
+        public static final Unit HOUR = new Unit( "h", MINUTE, 60 );
+        public static final Unit DAY = new Unit( "day", HOUR, 24 );
+
+        public Time( String name )
+        {
+            super( name );
+        }
+
+        public Time( String name, Unit derived, long scale )
+        {
+            super( name, derived, scale );
+        }
+
+    }
 
     /** Binary data units */
-    public static final Unit BYTE = new Unit( "b" );
-    public static final Unit KBYTE = new Unit( "Kb", BYTE, 1024 );
-    public static final Unit MBYTE = new Unit( "Mb", KBYTE, 1024 );
-    public static final Unit GBYTE = new Unit( "Gb", MBYTE, 1024 );
+    public static class Binary
+        extends Unit
+    {
+
+        public static final Unit BYTE = new Unit( "b" );
 
+        public static final Unit KBYTE = new Unit( "Kb", BYTE, 1024 );
 
+        public static final Unit MBYTE = new Unit( "Mb", KBYTE, 1024 );
+
+        public static final Unit GBYTE = new Unit( "Gb", MBYTE, 1024 );
+
+        public Binary( String name )
+        {
+            super( name );
+        }
+
+        public Binary( String name, Unit derived, long scale )
+        {
+            super( name, derived, scale );
+        }
+
+
+    }
     /** unit for basic item counters & gauges */
     // "BILLION" does not have same signification depending on country (10^12 
or 10^9).
     // We use International system of unit names to avoid confusion

Modified: 
commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/stopwatches/CpuTimeStopWatch.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/stopwatches/CpuTimeStopWatch.java?rev=745420&r1=745419&r2=745420&view=diff
==============================================================================
--- 
commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/stopwatches/CpuTimeStopWatch.java
 (original)
+++ 
commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/stopwatches/CpuTimeStopWatch.java
 Wed Feb 18 08:14:29 2009
@@ -64,7 +64,7 @@
         if ( mx.isCurrentThreadCpuTimeSupported() )
         {
             long cpu = mx.getCurrentThreadCpuTime() - cpuStartedAt;
-            monitor.getCounter( Monitor.CPU ).add( cpu, Unit.NANOS );
+            monitor.getCounter( Monitor.CPU ).add( cpu, Unit.Time.NANOSECOND );
         }
     }
 }

Modified: 
commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/stopwatches/SimpleStopWatch.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/stopwatches/SimpleStopWatch.java?rev=745420&r1=745419&r2=745420&view=diff
==============================================================================
--- 
commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/stopwatches/SimpleStopWatch.java
 (original)
+++ 
commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/stopwatches/SimpleStopWatch.java
 Wed Feb 18 08:14:29 2009
@@ -1,12 +1,13 @@
 package org.apache.commons.monitoring.stopwatches;
 
+import static org.apache.commons.monitoring.Unit.Time.NANOSECOND;
+
 import org.apache.commons.monitoring.Monitor;
 import org.apache.commons.monitoring.StopWatch;
-import org.apache.commons.monitoring.Unit;
 
 /**
  * Simple implementation of StopWatch that estimate monitored element 
execution time.
- * 
+ *
  * @author <a href="mailto:nico...@apache.org";>Nicolas De Loof</a>
  */
 public class SimpleStopWatch
@@ -34,7 +35,7 @@
      * Constructor.
      * <p>
      * The monitor can be set to null to use the StopWatch without the 
monitoring infrastructure.
-     * 
+     *
      * @param monitor the monitor associated with the process to be monitored
      */
     public SimpleStopWatch( Monitor monitor )
@@ -57,7 +58,7 @@
      * Returns the current value of the most precise available system timer, 
in nanoseconds. The real precision depends
      * on the JVM and the underlying system. On JRE before java5, 
<tt>backport-util-concurrent</tt> provides some
      * limited support for equivalent timer.
-     * 
+     *
      * @see System#nanoTime()
      * @return time in nanosecond
      */
@@ -68,7 +69,7 @@
 
     /**
      * {...@inheritdoc}
-     * 
+     *
      * @see org.apache.commons.monitoring.StopWatch#getElapsedTime()
      */
     public long getElapsedTime()
@@ -86,7 +87,7 @@
 
     /**
      * {...@inheritdoc}
-     * 
+     *
      * @see org.apache.commons.monitoring.StopWatch#pause()
      */
     public StopWatch pause()
@@ -101,7 +102,7 @@
 
     /**
      * {...@inheritdoc}
-     * 
+     *
      * @see org.apache.commons.monitoring.StopWatch#resume()
      */
     public StopWatch resume()
@@ -117,7 +118,7 @@
 
     /**
      * {...@inheritdoc}
-     * 
+     *
      * @return TODO
      * @see org.apache.commons.monitoring.StopWatch#stop()
      */
@@ -139,12 +140,12 @@
 
     protected void doStop()
     {
-        monitor.getCounter( Monitor.PERFORMANCES ).add( getElapsedTime(), 
Unit.NANOS );
+        monitor.getCounter( Monitor.PERFORMANCES ).add( getElapsedTime(), 
NANOSECOND );
     }
 
     /**
      * {...@inheritdoc}
-     * 
+     *
      * @see org.apache.commons.monitoring.StopWatch#stop(boolean)
      */
     public StopWatch stop( boolean canceled )
@@ -162,7 +163,7 @@
 
     /**
      * {...@inheritdoc}
-     * 
+     *
      * @see org.apache.commons.monitoring.StopWatch#cancel()
      */
     public StopWatch cancel()
@@ -187,7 +188,7 @@
      * {...@link #cancel()} method is invoked, even when an exception occurs. 
To avoid StopWatches to keep running if the
      * application didn't follow this recommendation, the finalizer is used to 
cancel the StopWatch and will log a
      * educational warning.
-     * 
+     *
      * @see java.lang.Object#finalize()
      */
     protected void finalize()
@@ -203,7 +204,7 @@
 
     /**
      * {...@inheritdoc}
-     * 
+     *
      * @see org.apache.commons.monitoring.StopWatch#isStoped()
      */
     public boolean isStoped()
@@ -213,7 +214,7 @@
 
     /**
      * {...@inheritdoc}
-     * 
+     *
      * @see org.apache.commons.monitoring.StopWatch#isPaused()
      */
     public boolean isPaused()
@@ -247,7 +248,7 @@
 
     /**
      * {...@inheritdoc}
-     * 
+     *
      * @see org.apache.commons.monitoring.StopWatch#getMonitor()
      */
     public Monitor getMonitor()

Modified: 
commons/sandbox/monitoring/branches/modules/core/src/test/java/org/apache/commons/monitoring/UnitTest.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/branches/modules/core/src/test/java/org/apache/commons/monitoring/UnitTest.java?rev=745420&r1=745419&r2=745420&view=diff
==============================================================================
--- 
commons/sandbox/monitoring/branches/modules/core/src/test/java/org/apache/commons/monitoring/UnitTest.java
 (original)
+++ 
commons/sandbox/monitoring/branches/modules/core/src/test/java/org/apache/commons/monitoring/UnitTest.java
 Wed Feb 18 08:14:29 2009
@@ -18,6 +18,11 @@
 package org.apache.commons.monitoring;
 
 import static junit.framework.Assert.assertEquals;
+import static org.apache.commons.monitoring.Unit.Time.HOUR;
+import static org.apache.commons.monitoring.Unit.Time.MICROSECOND;
+import static org.apache.commons.monitoring.Unit.Time.MILLISECOND;
+import static org.apache.commons.monitoring.Unit.Time.NANOSECOND;
+import static org.apache.commons.monitoring.Unit.Time.SECOND;
 
 import org.junit.Test;
 
@@ -30,19 +35,19 @@
     @Test
     public void derived()
     {
-        assertEquals( Unit.NANOS, Unit.HOUR.getPrimary() );
-        assertEquals( Unit.NANOS, Unit.NANOS.getDerived( "ns" ) );
-        assertEquals( Unit.MICROS, Unit.NANOS.getDerived( "µs" ) );
-        assertEquals( Unit.MILLIS, Unit.NANOS.getDerived( "ms" ) );
-        assertEquals( Unit.SECOND, Unit.NANOS.getDerived( "s" ) );
+        assertEquals( NANOSECOND, HOUR.getPrimary() );
+        assertEquals( NANOSECOND, NANOSECOND.getDerived( "ns" ) );
+        assertEquals( MICROSECOND, NANOSECOND.getDerived( "µs" ) );
+        assertEquals( MILLISECOND, NANOSECOND.getDerived( "ms" ) );
+        assertEquals( SECOND, NANOSECOND.getDerived( "s" ) );
     }
 
     @Test
     public void scales()
     {
-        assertEquals( 1L, Unit.NANOS.getScale() );
-        assertEquals( 1000L, Unit.MICROS.getScale() );
-        assertEquals( 1000000L, Unit.MILLIS.getScale() );
-        assertEquals( 1000000000L, Unit.SECOND.getScale() );
+        assertEquals( 1L, NANOSECOND.getScale() );
+        assertEquals( 1000L, MICROSECOND.getScale() );
+        assertEquals( 1000000L, MILLISECOND.getScale() );
+        assertEquals( 1000000000L, SECOND.getScale() );
     }
 }

Modified: 
commons/sandbox/monitoring/branches/modules/instrumentation/src/main/java/org/apache/commons/monitoring/instrumentation/aop/AbstractPerformanceInterceptor.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/branches/modules/instrumentation/src/main/java/org/apache/commons/monitoring/instrumentation/aop/AbstractPerformanceInterceptor.java?rev=745420&r1=745419&r2=745420&view=diff
==============================================================================
--- 
commons/sandbox/monitoring/branches/modules/instrumentation/src/main/java/org/apache/commons/monitoring/instrumentation/aop/AbstractPerformanceInterceptor.java
 (original)
+++ 
commons/sandbox/monitoring/branches/modules/instrumentation/src/main/java/org/apache/commons/monitoring/instrumentation/aop/AbstractPerformanceInterceptor.java
 Wed Feb 18 08:14:29 2009
@@ -17,12 +17,13 @@
 
 package org.apache.commons.monitoring.instrumentation.aop;
 
+import static org.apache.commons.monitoring.Unit.Time.NANOSECOND;
+
 import java.lang.reflect.Method;
 
 import org.apache.commons.monitoring.Monitor;
 import org.apache.commons.monitoring.Repository;
 import org.apache.commons.monitoring.StopWatch;
-import org.apache.commons.monitoring.Unit;
 
 /**
  * A method interceptor that compute method invocation performances.
@@ -111,7 +112,7 @@
     {
         if ( error != null )
         {
-            monitor.getCounter( Monitor.FAILURES ).add( duration, Unit.NANOS );
+            monitor.getCounter( Monitor.FAILURES ).add( duration, NANOSECOND );
         }
     }
 

Modified: 
commons/sandbox/monitoring/branches/modules/reporting/src/main/java/org/apache/commons/monitoring/reporting/AbstractPeriodicLogger.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/monitoring/branches/modules/reporting/src/main/java/org/apache/commons/monitoring/reporting/AbstractPeriodicLogger.java?rev=745420&r1=745419&r2=745420&view=diff
==============================================================================
--- 
commons/sandbox/monitoring/branches/modules/reporting/src/main/java/org/apache/commons/monitoring/reporting/AbstractPeriodicLogger.java
 (original)
+++ 
commons/sandbox/monitoring/branches/modules/reporting/src/main/java/org/apache/commons/monitoring/reporting/AbstractPeriodicLogger.java
 Wed Feb 18 08:14:29 2009
@@ -17,16 +17,19 @@
 
 package org.apache.commons.monitoring.reporting;
 
+import static org.apache.commons.monitoring.Unit.Time.MILLISECOND;
+
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.commons.monitoring.Repository;
+import org.apache.commons.monitoring.Unit;
 import org.apache.commons.monitoring.repositories.ObserverRepository;
 
 /**
  * Base class to periodically log a fixed set of monitored data.
- * 
+ *
  * @author <a href="mailto:nico...@apache.org";>Nicolas De Loof</a>
  */
 public abstract class AbstractPeriodicLogger
@@ -94,7 +97,7 @@
     /**
      * An error occured during logging. To avoid the scheduler to stop we 
catch any throwable. By default we just log to
      * System.err, this method is expected to be overriden.
-     * 
+     *
      * @param t error
      */
     protected void handleLogError( Throwable t )
@@ -157,6 +160,15 @@
     }
 
     /**
+     * @param period The period to wait between logging processes
+     * @param unit time unit
+     */
+    public void setPeriod( long period, Unit.Time unit )
+    {
+        this.period = (long) MILLISECOND.convert( period, unit );
+    }
+
+    /**
      * @param delay in MILLISECONDS
      * @see #setDelay(long, TimeUnit)
      */
@@ -174,6 +186,15 @@
         this.delay = TimeUnit.MILLISECONDS.convert( delay, unit );
     }
 
+    /**
+     * @param delay The delay to wait before first logging process
+     * @param unit time unit
+     */
+    public void setDelay( long period, Unit.Time unit )
+    {
+        this.delay = (long) MILLISECOND.convert( period, unit );
+    }
+
     public long getPeriod()
     {
         return period;


Reply via email to