You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ni...@apache.org on 2009/09/04 17:39:05 UTC

svn commit: r811448 - in /commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring: ./ metrics/

Author: nicolas
Date: Fri Sep  4 15:39:04 2009
New Revision: 811448

URL: http://svn.apache.org/viewvc?rev=811448&view=rev
Log:
avoid method override in design, set method final where possible

Added:
    commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/AbstractNoOpMetric.java
Modified:
    commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/Counter.java
    commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/Gauge.java
    commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/AbstractMetric.java
    commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/NoOpCounter.java
    commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/NoOpGauge.java
    commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/ObservableMetric.java
    commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/ObserverCounter.java
    commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/ObserverGauge.java
    commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/ObserverMetric.java
    commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/SynchronizedCounter.java
    commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/SynchronizedGauge.java
    commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/ThreadSafeCounter.java
    commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/ThreadSafeGauge.java

Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/Counter.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/Counter.java?rev=811448&r1=811447&r2=811448&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/Counter.java (original)
+++ commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/Counter.java Fri Sep  4 15:39:04 2009
@@ -32,4 +32,6 @@
     {
 
     }
+
+    public void add( double delta );
 }

Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/Gauge.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/Gauge.java?rev=811448&r1=811447&r2=811448&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/Gauge.java (original)
+++ commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/Gauge.java Fri Sep  4 15:39:04 2009
@@ -30,11 +30,15 @@
      */
     double getValue();
 
+    void increment();
+	
     void increment( Unit unit );
 
     void set( double value, Unit unit );
 
     void decrement( Unit unit );
+	
+	void decrement();
 
     public interface Observable
         extends Metric.Observable, Gauge

Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/AbstractMetric.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/AbstractMetric.java?rev=811448&r1=811447&r2=811448&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/AbstractMetric.java (original)
+++ commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/AbstractMetric.java Fri Sep  4 15:39:04 2009
@@ -74,7 +74,7 @@
         add( delta );
     }
 
-    protected double normalize( double value, Unit unit )
+    protected final double normalize( double value, Unit unit )
     {
         if ( !this.unit.isCompatible( unit ) )
         {
@@ -83,17 +83,17 @@
         return value * unit.getScale() / this.unit.getScale();
     }
 
-    public Monitor getMonitor()
+    public final Monitor getMonitor()
     {
         return monitor;
     }
 
-    public Role getRole()
+    public final Role getRole()
     {
         return role;
     }
 
-    public void setMonitor( Monitor monitor )
+    public final void setMonitor( Monitor monitor )
     {
         if ( this.monitor != null && this.monitor != monitor )
         {
@@ -102,43 +102,16 @@
         this.monitor = monitor;
     }
 
-    public Unit getUnit()
+    public final Unit getUnit()
     {
         return unit;
     }
 
     /**
      * @return
-     * @see org.apache.commons.math.stat.descriptive.StatisticalSummary#getMax()
-     */
-    public double getMax()
-    {
-        return getSummary().getMax();
-    }
-
-    /**
-     * @return
-     * @see org.apache.commons.math.stat.descriptive.StatisticalSummary#getMin()
-     */
-    public double getMin()
-    {
-        return getSummary().getMin();
-    }
-
-    /**
-     * @return
-     * @see org.apache.commons.math.stat.descriptive.StatisticalSummary#getN()
-     */
-    public long getHits()
-    {
-        return getSummary().getN();
-    }
-
-    /**
-     * @return
      * @see org.apache.commons.math.stat.descriptive.StatisticalSummary#getStandardDeviation()
      */
-    public double getStandardDeviation()
+    public final double getStandardDeviation()
     {
         return getSummary().getStandardDeviation();
     }
@@ -147,7 +120,7 @@
      * @return
      * @see org.apache.commons.math.stat.descriptive.StatisticalSummary#getSum()
      */
-    public double getSum()
+    public final double getSum()
     {
         return getSummary().getSum();
     }
@@ -156,25 +129,16 @@
      * @return
      * @see org.apache.commons.math.stat.descriptive.StatisticalSummary#getVariance()
      */
-    public double getVariance()
+    public final double getVariance()
     {
         return getSummary().getVariance();
     }
 
     /**
      * @return
-     * @see org.apache.commons.math.stat.descriptive.SummaryStatistics#getMean()
-     */
-    public double getMean()
-    {
-        return getSummary().getMean();
-    }
-
-    /**
-     * @return
      * @see org.apache.commons.math.stat.descriptive.SummaryStatistics#getGeometricMean()
      */
-    public double getGeometricMean()
+    public final double getGeometricMean()
     {
         return getSummary().getGeometricMean();
     }
@@ -183,7 +147,7 @@
      * @return
      * @see org.apache.commons.math.stat.descriptive.SummaryStatistics#getSumOfLogs()
      */
-    public double getSumOfLogs()
+    public final double getSumOfLogs()
     {
         return getSummary().getSumOfLogs();
     }
@@ -192,12 +156,12 @@
      * @return
      * @see org.apache.commons.math.stat.descriptive.SummaryStatistics#getSumsq()
      */
-    public double getSumOfSquares()
+    public final double getSumOfSquares()
     {
         return getSummary().getSumsq();
     }
 
-    public void accept( Visitor visitor )
+    public final void accept( Visitor visitor )
     {
         switch ( getType() )
         {

Added: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/AbstractNoOpMetric.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/AbstractNoOpMetric.java?rev=811448&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/AbstractNoOpMetric.java (added)
+++ commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/AbstractNoOpMetric.java Fri Sep  4 15:39:04 2009
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.commons.monitoring.metrics;
+
+import org.apache.commons.monitoring.Role;
+
+/**
+ * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
+ */
+public abstract class AbstractNoOpMetric
+    extends AbstractMetric
+{
+
+    /**
+     * @param role
+     */
+    public AbstractNoOpMetric( Role role )
+    {
+        super( role );
+    }
+
+    public final void reset()
+    {
+        // NoOp
+    }
+
+    public final long getHits()
+    {
+        return 0;
+    }
+
+    public final double getMin()
+    {
+        return 0;
+    }
+
+    public final double getMax()
+    {
+        return 0;
+    }
+
+    public final double getMean()
+    {
+        return 0;
+    }
+
+    public final void add( double delta )
+    {
+        // NoOp
+    }
+}
\ No newline at end of file

Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/NoOpCounter.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/NoOpCounter.java?rev=811448&r1=811447&r2=811448&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/NoOpCounter.java (original)
+++ commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/NoOpCounter.java Fri Sep  4 15:39:04 2009
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.apache.commons.monitoring.metrics;
 
 import org.apache.commons.monitoring.Counter;
@@ -5,7 +22,7 @@
 import org.apache.commons.monitoring.Role;
 
 public class NoOpCounter
-    extends AbstractMetric
+    extends AbstractNoOpMetric
     implements Counter
 {
     public NoOpCounter( Role role )
@@ -17,14 +34,4 @@
     {
         return Metric.Type.COUNTER;
     }
-
-    public void reset()
-    {
-        // NoOp
-    }
-
-    public void add( double delta )
-    {
-        // NoOp
-    }
 }

Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/NoOpGauge.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/NoOpGauge.java?rev=811448&r1=811447&r2=811448&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/NoOpGauge.java (original)
+++ commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/NoOpGauge.java Fri Sep  4 15:39:04 2009
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.apache.commons.monitoring.metrics;
 
 import org.apache.commons.monitoring.Gauge;
@@ -6,7 +23,7 @@
 import org.apache.commons.monitoring.Unit;
 
 public class NoOpGauge
-    extends AbstractMetric
+    extends AbstractNoOpMetric
     implements Gauge
 {
     public NoOpGauge( Role role )
@@ -19,32 +36,32 @@
         return Metric.Type.GAUGE;
     }
 
-    public void add( double delta )
+    public final void decrement()
     {
         // NoOp
     }
 
-    public void reset()
+    public final void decrement( Unit unit )
     {
         // NoOp
     }
 
-    public void decrement( Unit unit )
+    public final double getValue()
     {
-        // NoOp
+        return 0;
     }
 
-    public double getValue()
+    public final void increment()
     {
-        return 0;
+        // NoOp
     }
 
-    public void increment( Unit unit )
+    public final void increment( Unit unit )
     {
         // NoOp
     }
 
-    public void set( double value, Unit unit )
+    public final void set( double value, Unit unit )
     {
         // NoOp
     }

Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/ObservableMetric.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/ObservableMetric.java?rev=811448&r1=811447&r2=811448&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/ObservableMetric.java (original)
+++ commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/ObservableMetric.java Fri Sep  4 15:39:04 2009
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.apache.commons.monitoring.metrics;
 
 import java.util.List;

Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/ObserverCounter.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/ObserverCounter.java?rev=811448&r1=811447&r2=811448&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/ObserverCounter.java (original)
+++ commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/ObserverCounter.java Fri Sep  4 15:39:04 2009
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.apache.commons.monitoring.metrics;
 
 import org.apache.commons.math.stat.descriptive.SummaryStatistics;
@@ -10,8 +27,8 @@
  * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
  */
 public class ObserverCounter
-    extends ObserverMetric
-implements Counter
+    extends ObserverMetric<Counter>
+    implements Counter
 {
     private Counter.Observable observable;
 
@@ -25,34 +42,39 @@
         observable.addListener( this );
     }
 
+    protected Counter getDelegate()
+    {
+        return delegate;
+    }
+
     @Override
-    protected SummaryStatistics getSummary()
+    protected final SummaryStatistics getSummary()
     {
         return delegate.getSummary();
     }
 
     @Override
-    protected Metric.Observable getObservable()
+    protected final Metric.Observable getObservable()
     {
         return observable;
     }
 
-    public void onValueChanged( Metric.Observable metric, double value )
+    public final void onValueChanged( Metric.Observable metric, double value )
     {
         delegate.threadSafeAdd( value );
     }
 
-    public void add( double delta )
+    public final void add( double delta )
     {
         throw new UnsupportedOperationException( "Observer cannot be updated directly" );
     }
 
-    public Metric.Type getType()
+    public final Metric.Type getType()
     {
         return Metric.Type.COUNTER;
     }
 
-    public void reset()
+    public final void reset()
     {
         throw new UnsupportedOperationException( "Observer cannot be updated directly" );
     }

Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/ObserverGauge.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/ObserverGauge.java?rev=811448&r1=811447&r2=811448&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/ObserverGauge.java (original)
+++ commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/ObserverGauge.java Fri Sep  4 15:39:04 2009
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.apache.commons.monitoring.metrics;
 
 import org.apache.commons.math.stat.descriptive.SummaryStatistics;
@@ -11,7 +28,7 @@
  * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
  */
 public class ObserverGauge
-    extends ObserverMetric
+    extends ObserverMetric<Gauge>
     implements Gauge
 {
     private Gauge.Observable observable;
@@ -27,6 +44,11 @@
         observable.addListener( this );
     }
 
+    protected Gauge getDelegate()
+    {
+        return delegate;
+    }
+
     @Override
     protected SummaryStatistics getSummary()
     {
@@ -39,32 +61,42 @@
         return observable;
     }
 
-    public void onValueChanged( Metric.Observable metric, double value )
+    public final void onValueChanged( Metric.Observable metric, double value )
     {
         delegate.threadSafeSet( value );
     }
 
-    public double getValue()
+    public final double getValue()
     {
         return delegate.getValue();
     }
 
-    public void add( double delta )
+    public final void add( double delta )
+    {
+        throw new UnsupportedOperationException( "Observer cannot be updated directly" );
+    }
+
+    public final void increment()
+    {
+        throw new UnsupportedOperationException( "Observer cannot be updated directly" );
+    }
+
+    public final void increment( Unit unit )
     {
         throw new UnsupportedOperationException( "Observer cannot be updated directly" );
     }
 
-    public void increment( Unit unit )
+    public final void set( double value, Unit unit )
     {
         throw new UnsupportedOperationException( "Observer cannot be updated directly" );
     }
 
-    public void set( double value, Unit unit )
+    public final void decrement()
     {
         throw new UnsupportedOperationException( "Observer cannot be updated directly" );
     }
 
-    public void decrement( Unit unit )
+    public final void decrement( Unit unit )
     {
         throw new UnsupportedOperationException( "Observer cannot be updated directly" );
     }

Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/ObserverMetric.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/ObserverMetric.java?rev=811448&r1=811447&r2=811448&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/ObserverMetric.java (original)
+++ commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/ObserverMetric.java Fri Sep  4 15:39:04 2009
@@ -1,10 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.apache.commons.monitoring.metrics;
 
 import org.apache.commons.monitoring.Detachable;
 import org.apache.commons.monitoring.Metric;
 import org.apache.commons.monitoring.Role;
 
-public abstract class ObserverMetric
+public abstract class ObserverMetric<T extends Metric>
     extends AbstractMetric
     implements Detachable, Metric.Listener
 {
@@ -22,10 +39,32 @@
         attachedAt = System.currentTimeMillis();
     }
 
+    protected abstract T getDelegate();
+
+    public final long getHits()
+    {
+        return getDelegate().getHits();
+    }
+
+    public final double getMin()
+    {
+        return getDelegate().getMin();
+    }
+
+    public final double getMax()
+    {
+        return getDelegate().getMax();
+    }
+
+    public final double getMean()
+    {
+        return getDelegate().getMean();
+    }
+
     /**
      * @see org.apache.commons.monitoring.Detachable#detach()
      */
-    public void detach()
+    public final void detach()
     {
         getObservable().removeListener( this );
         detached = true;
@@ -35,7 +74,7 @@
     /**
      * @see org.apache.commons.monitoring.Detachable#getAttachedAt()
      */
-    public long getAttachedAt()
+    public final long getAttachedAt()
     {
         return attachedAt;
     }
@@ -43,7 +82,7 @@
     /**
      * @see org.apache.commons.monitoring.Detachable#getDetachedAt()
      */
-    public long getDetachedAt()
+    public final long getDetachedAt()
     {
         return detachedAt;
     }
@@ -51,7 +90,7 @@
     /**
      * @see org.apache.commons.monitoring.Detachable#isDetached()
      */
-    public boolean isDetached()
+    public final boolean isDetached()
     {
         return detached;
     }

Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/SynchronizedCounter.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/SynchronizedCounter.java?rev=811448&r1=811447&r2=811448&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/SynchronizedCounter.java (original)
+++ commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/SynchronizedCounter.java Fri Sep  4 15:39:04 2009
@@ -54,5 +54,4 @@
         doReset();
     }
 
-
 }

Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/SynchronizedGauge.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/SynchronizedGauge.java?rev=811448&r1=811447&r2=811448&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/SynchronizedGauge.java (original)
+++ commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/SynchronizedGauge.java Fri Sep  4 15:39:04 2009
@@ -38,16 +38,6 @@
         super( role );
     }
 
-    /**
-     * {@inheritDoc}
-     *
-     * @see org.apache.commons.monitoring.Metric#getType()
-     */
-    public Type getType()
-    {
-        return Type.GAUGE;
-    }
-
     public synchronized void reset()
     {
         doReset();

Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/ThreadSafeCounter.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/ThreadSafeCounter.java?rev=811448&r1=811447&r2=811448&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/ThreadSafeCounter.java (original)
+++ commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/ThreadSafeCounter.java Fri Sep  4 15:39:04 2009
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.apache.commons.monitoring.metrics;
 
 import org.apache.commons.monitoring.Counter;
@@ -12,17 +29,32 @@
         super( role );
     }
 
-    /**
-     * {@inheritDoc}
-     *
-     * @see org.apache.commons.monitoring.Metric#getType()
-     */
-    public Type getType()
+    public final Type getType()
     {
         return Type.COUNTER;
     }
 
-    public void add( double delta )
+    public final long getHits()
+    {
+        return getSummary().getN();
+    }
+
+    public final double getMax()
+    {
+        return getSummary().getMax();
+    }
+
+    public final double getMin()
+    {
+        return getSummary().getMin();
+    }
+
+    public final double getMean()
+    {
+        return getSummary().getMean();
+    }
+
+    public final void add( double delta )
     {
         threadSafeAdd( delta );
         fireValueChanged( delta );
@@ -35,12 +67,12 @@
      */
     protected abstract void threadSafeAdd( double delta );
 
-    protected void doThreadSafeAdd( double delta )
+    protected final void doThreadSafeAdd( double delta )
     {
         getSummary().addValue( delta );
     }
 
-    protected void doReset()
+    protected final void doReset()
     {
         getSummary().clear();
     }

Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/ThreadSafeGauge.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/ThreadSafeGauge.java?rev=811448&r1=811447&r2=811448&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/ThreadSafeGauge.java (original)
+++ commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/metrics/ThreadSafeGauge.java Fri Sep  4 15:39:04 2009
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.apache.commons.monitoring.metrics;
 
 import org.apache.commons.math.stat.descriptive.rank.Max;
@@ -27,45 +44,74 @@
 
     protected Max max = new Max();
 
-    @Override
-    public double getMax()
+    protected long hits;
+
+    public ThreadSafeGauge( Role role )
+    {
+        super( role );
+    }
+
+    public final Type getType()
+    {
+        return Type.GAUGE;
+    }
+
+    public final long getHits()
+    {
+        return hits;
+    }
+
+    public final double getMax()
     {
         return max.getResult();
     }
 
-    @Override
-    public double getMin()
+    public final double getMin()
     {
         return min.getResult();
-    }	
-	
-    public ThreadSafeGauge( Role role )
+    }
+
+    public final double getMean()
     {
-        super( role );
+        if ( Double.isNaN( lastUse ) || Double.isNaN( firstUse ) )
+        {
+            return Double.NaN;
+        }
+        return getSummary().getMean() / ( lastUse - firstUse );
     }
 
-    public double getValue()
+    public final double getValue()
     {
         return value;
     }
 
-    public void increment( Unit unit )
+    public final void increment()
+    {
+        add( 1 );
+    }
+
+    public final void increment( Unit unit )
     {
         add( 1, unit );
     }
 
-    public void decrement( Unit unit )
+    public final void decrement( Unit unit )
     {
         add( -1, unit );
     }
 
-    public void add( double delta )
+    public final void decrement()
+    {
+        add( -1 );
+    }
+
+    public final void add( double delta )
     {
         double d = threadSafeAdd( delta );
         fireValueChanged( d );
     }
 
-    protected double threadSafeAdd( double delta )
+    protected final double threadSafeAdd( double delta )
     {
         threadSafeSet( value + delta );
         return value;
@@ -76,12 +122,12 @@
         return System.nanoTime();
     }
 
-    public double get()
+    public final double get()
     {
         return value;
     }
 
-    public void set( double d, Unit unit )
+    public final void set( double d, Unit unit )
     {
         d = normalize( d, unit );
         threadSafeSet( d );
@@ -95,7 +141,7 @@
      */
     protected abstract void threadSafeSet( double d );
 
-    protected void doReset()
+    protected final void doReset()
     {
         // Don't reset value !
         getSummary().clear();
@@ -103,7 +149,7 @@
         firstUse = Double.NaN;
     }
 
-    protected void doThreadSafeSet( double d )
+    protected final void doThreadSafeSet( double d )
     {
         value = d;
         long now = nanotime();
@@ -118,18 +164,9 @@
             getSummary().addValue( s );
         }
         lastUse = now;
+        hits++;
         min.increment( value );
         max.increment( value );
     }
 
-    @Override
-    public double getMean()
-    {
-        if ( Double.isNaN( lastUse ) || Double.isNaN( firstUse ) )
-        {
-            return Double.NaN;
-        }
-        return super.getMean() / ( lastUse - firstUse );
-    }
-
 }
\ No newline at end of file