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:53:37 UTC

svn commit: r1509181 - in /commons/sandbox/monitoring/trunk: core/src/main/java/org/apache/commons/monitoring/configuration/ core/src/main/java/org/apache/commons/monitoring/counter/queuemanager/ core/src/main/java/org/apache/commons/monitoring/reposit...

Author: rmannibucau
Date: Thu Aug  1 11:53:36 2013
New Revision: 1509181

URL: http://svn.apache.org/r1509181
Log:
cleaning up repository/counter APIs

Removed:
    commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/ResetHandler.java
Modified:
    commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/configuration/Configuration.java
    commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/counter/queuemanager/DefaultMetricQueueManager.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/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/ReportHandler.java
    commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/report/report.vm

Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/configuration/Configuration.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/configuration/Configuration.java?rev=1509181&r1=1509180&r2=1509181&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/configuration/Configuration.java (original)
+++ commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/configuration/Configuration.java Thu Aug  1 11:53:36 2013
@@ -19,12 +19,15 @@ package org.apache.commons.monitoring.co
 import org.apache.commons.monitoring.MonitoringException;
 import org.apache.commons.monitoring.util.ClassLoaders;
 
-import java.io.Closeable;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
-import java.io.IOException;
 import java.io.InputStream;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Properties;
@@ -34,20 +37,12 @@ import java.util.logging.Logger;
 public final class Configuration {
     private static final Logger LOGGER = Logger.getLogger(Configuration.class.getName());
 
-    private static final Collection<Closeable> INSTANCES = new ArrayList<Closeable>();
+    private static final Collection<ToDestroy> INSTANCES = new ArrayList<ToDestroy>();
 
     public static final String COMMONS_MONITORING_PREFIX = "org.apache.commons.monitoring.";
     private static final String DEFAULT_CONFIGURATION_FILE = "commons-monitoring.properties";
 
-    public static enum Keys {
-        JMX("org.apache.commons.monitoring.jmx");
-
-        public final String key;
-
-        Keys(final String s) {
-            key = s;
-        }
-    }
+    private static Thread shutdownHook = null;
 
     private static final Properties PROPERTIES = new Properties(System.getProperties());
     static {
@@ -69,7 +64,7 @@ public final class Configuration {
         return ClassLoaders.current().getResourceAsStream(filename);
     }
 
-    public static <T> T newInstance(final Class<T> clazz) {
+    public static synchronized <T> T newInstance(final Class<T> clazz) {
         try {
             String config = PROPERTIES.getProperty(clazz.getName());
             if (config == null) {
@@ -84,19 +79,29 @@ public final class Configuration {
             }
 
             final Object instance = loadedClass.newInstance();
-            if (Closeable.class.isInstance(instance)) {
-                INSTANCES.add(Closeable.class.cast(instance));
+            for (final Method m : loadedClass.getMethods()) {
+                if (m.getAnnotation(Created.class) != null) {
+                    m.invoke(instance);
+                } else if (m.getAnnotation(Destroying.class) != null) {
+                    if (is("org.apache.commons.monitoring.shutdown.hook", false) && shutdownHook == null) {
+                        shutdownHook = new Thread() {
+                            @Override
+                            public void run() {
+                                shutdown();
+                            }
+                        };
+                        Runtime.getRuntime().addShutdownHook(shutdownHook);
+                    }
+                    INSTANCES.add(new ToDestroy(m, instance));
+                }
             }
+
             return clazz.cast(instance);
         } catch (final Exception e) {
             throw new MonitoringException(e);
         }
     }
 
-    public static boolean isActivated(final Keys key) {
-        return Boolean.parseBoolean(getProperty(key.key, "false"));
-    }
-
     public static boolean is(final String key, final boolean defaultValue) {
         return Boolean.parseBoolean(getProperty(key, Boolean.toString(defaultValue)));
     }
@@ -106,12 +111,8 @@ public final class Configuration {
     }
 
     public static void shutdown() {
-        for (final Closeable c : INSTANCES) {
-            try {
-                c.close();
-            } catch (IOException e) {
-                // no-op
-            }
+        for (final ToDestroy c : INSTANCES) {
+            c.destroy();
         }
         INSTANCES.clear();
     }
@@ -119,4 +120,32 @@ public final class Configuration {
     private Configuration() {
         // no-op
     }
+
+    @Retention(RetentionPolicy.RUNTIME)
+    @Target(ElementType.METHOD)
+    public static @interface Created {
+    }
+
+    @Retention(RetentionPolicy.RUNTIME)
+    @Target(ElementType.METHOD)
+    public static @interface Destroying {
+    }
+
+    private static class ToDestroy {
+        private final Method method;
+        private final Object target;
+
+        public ToDestroy(final Method m, final Object instance) {
+            this.method = m;
+            this.target = instance;
+        }
+
+        public void destroy() {
+            try {
+                method.invoke(target);
+            } catch (final Exception e) {
+                // no-op
+            }
+        }
+    }
 }

Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/counter/queuemanager/DefaultMetricQueueManager.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/counter/queuemanager/DefaultMetricQueueManager.java?rev=1509181&r1=1509180&r2=1509181&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/counter/queuemanager/DefaultMetricQueueManager.java (original)
+++ commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/counter/queuemanager/DefaultMetricQueueManager.java Thu Aug  1 11:53:36 2013
@@ -47,7 +47,6 @@ import com.lmax.disruptor.dsl.ProducerTy
 import org.apache.commons.monitoring.counter.DefaultCounter;
 import org.apache.commons.monitoring.util.DaemonThreadFactory;
 
-import java.io.Closeable;
 import java.io.IOException;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -55,7 +54,7 @@ import java.util.concurrent.TimeUnit;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-public class DisruptorMetricQueueManager implements MetricQueueManager, Closeable {
+public class DisruptorMetricQueueManager implements MetricQueueManager {
     private static final Logger LOGGER = Logger.getLogger(DefaultCounter.class.getName());
 
     private static final int RINGBUFFER_DEFAULT_SIZE = 256 * 1024;
@@ -92,8 +91,8 @@ public class DisruptorMetricQueueManager
         DISRUPTOR.publishEvent(new MetricEventTranslator(metric, delta));
     }
 
-    @Override
-    public void close() throws IOException {
+    @Destroying
+    public void shutdown()  {
         DISRUPTOR.shutdown();
         flushRingBuffer();
 

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=1509181&r1=1509180&r2=1509181&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:53:36 2013
@@ -29,20 +29,11 @@ import java.util.concurrent.ConcurrentMa
 public class DefaultRepository implements Repository {
     private final ConcurrentMap<Counter.Key, Counter> counters = new ConcurrentHashMap<Counter.Key, Counter>(50);
 
-    protected Counter newCounterInstance(final Counter.Key key) {
-        return new DefaultCounter(key);
-    }
-
-    protected Counter register(final Counter monitor) {
-        return counters.putIfAbsent(monitor.getKey(), monitor);
-    }
-
-    @Override
     public Counter getCounter(final Counter.Key key) {
         Counter monitor = counters.get(key);
         if (monitor == null) {
-            monitor = newCounterInstance(key);
-            final Counter previous = register(monitor);
+            monitor = new DefaultCounter(key);
+            final Counter previous = counters.putIfAbsent(key, monitor);
             if (previous != null) {
                 monitor = previous;
             }
@@ -56,13 +47,6 @@ public class DefaultRepository implement
     }
 
     @Override
-    public void reset() {
-        for (final Counter monitor : counters.values()) {
-            monitor.reset();
-        }
-    }
-
-    @Override
     public StopWatch start(final Counter monitor) {
         return new CounterStopWatch(monitor);
     }

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=1509181&r1=1509180&r2=1509181&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:53:36 2013
@@ -41,12 +41,6 @@ public interface Repository extends Iter
     void clear();
 
     /**
-     * Convenience method to reset all monitors (don't remove them from repository)
-     */
-    void reset();
-
-
-    /**
      * Start a StopWatch to counter execution
      *
      * @param counter the counter associated with the process

Modified: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/ReportHandler.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/ReportHandler.java?rev=1509181&r1=1509180&r2=1509181&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/ReportHandler.java (original)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/ReportHandler.java Thu Aug  1 11:53:36 2013
@@ -29,7 +29,6 @@ public class ReportHandler implements Ha
     private final FormatReportHandler json;
     private final FormatReportHandler xml;
     private final ClearHandler clear;
-    private final ResetHandler reset;
 
     public ReportHandler() {
         html = new FormatReportHandler(Format.Defaults.HTML);
@@ -37,7 +36,6 @@ public class ReportHandler implements Ha
         json = new FormatReportHandler(Format.Defaults.JSON);
         xml = new FormatReportHandler(Format.Defaults.XML);
         clear = new ClearHandler();
-        reset = new ResetHandler();
     }
 
     @Override
@@ -54,9 +52,6 @@ public class ReportHandler implements Ha
         if (path.endsWith("/clear")) {
             return clear.handle(request, response, path);
         }
-        if (path.endsWith("/reset")) {
-            return reset.handle(request, response, path);
-        }
 
         return html.handle(request, response, path);
     }

Modified: commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/report/report.vm
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/report/report.vm?rev=1509181&r1=1509180&r2=1509181&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/report/report.vm (original)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/report/report.vm Thu Aug  1 11:53:36 2013
@@ -23,7 +23,6 @@
         </a>
         <ul class="dropdown-menu">
             <li><a href="$mapping/report/clear">Clear</a></li>
-            <li><a href="$mapping/report/reset">Reset</a></li>
         </ul>
     </li>
     <li class="dropdown">