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">