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/07/29 15:47:41 UTC
svn commit: r1508066 [1/2] - in /commons/sandbox/monitoring/trunk: ./
aop/src/main/java/org/apache/commons/monitoring/aop/
cdi/src/test/java/org/apache/commons/monitoring/cdi/
core/src/main/java/org/apache/commons/monitoring/
core/src/main/java/org/apa...
Author: rmannibucau
Date: Mon Jul 29 13:47:39 2013
New Revision: 1508066
URL: http://svn.apache.org/r1508066
Log:
basic gui + getting rid of visitable/visitor pattern for formats
Added:
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/MapFormat.java
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/template/
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/template/MapBuilder.java
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/template/Templates.java
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/template/WebResourceLoader.java
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/MonitoringController.java
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/ClearHandler.java
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/FilteringHandler.java
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/Handler.java
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/HtmlHandler.java
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/RedirectHandler.java
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/Renderer.java
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/ReportHandler.java
- copied, changed from r1507950, commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/MonitoringServlet.java
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/ResetHandler.java
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/util/
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/util/HttpUtils.java
- copied, changed from r1507950, commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/HttpUtils.java
commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/
commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/home.vm
commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/page.vm
commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/report.vm
commons/sandbox/monitoring/trunk/reporting/src/main/webapp/resources/
commons/sandbox/monitoring/trunk/reporting/src/main/webapp/resources/css/
- copied from r1507950, commons/sandbox/monitoring/trunk/reporting/src/main/webapp/css/
commons/sandbox/monitoring/trunk/reporting/src/main/webapp/resources/css/bootstrap.min.css
commons/sandbox/monitoring/trunk/reporting/src/main/webapp/resources/css/monitoring.css
commons/sandbox/monitoring/trunk/reporting/src/main/webapp/resources/images/
commons/sandbox/monitoring/trunk/reporting/src/main/webapp/resources/images/asc.gif (with props)
commons/sandbox/monitoring/trunk/reporting/src/main/webapp/resources/images/desc.gif (with props)
commons/sandbox/monitoring/trunk/reporting/src/main/webapp/resources/js/
- copied from r1507950, commons/sandbox/monitoring/trunk/reporting/src/main/webapp/js/
commons/sandbox/monitoring/trunk/reporting/src/test/java/org/apache/commons/monitoring/reporting/FormatsTest.java
- copied, changed from r1507950, commons/sandbox/monitoring/trunk/reporting/src/test/java/org/apache/commons/monitoring/reporting/FormattingVisitorTest.java
Removed:
commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/Visitable.java
commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/Visitor.java
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/AbstractVisitor.java
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/FormattingVisitor.java
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/HttpUtils.java
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/MonitoringServlet.java
commons/sandbox/monitoring/trunk/reporting/src/main/webapp/css/
commons/sandbox/monitoring/trunk/reporting/src/main/webapp/js/
commons/sandbox/monitoring/trunk/reporting/src/main/webapp/resources/css/theme.blue.css
commons/sandbox/monitoring/trunk/reporting/src/test/java/org/apache/commons/monitoring/reporting/FormattingVisitorTest.java
commons/sandbox/monitoring/trunk/reporting/src/test/resources/
Modified:
commons/sandbox/monitoring/trunk/aop/src/main/java/org/apache/commons/monitoring/aop/AbstractPerformanceInterceptor.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/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/counter/Unit.java
commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/monitors/DefaultMonitor.java
commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/monitors/Monitor.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/test/java/org/apache/commons/monitoring/stopwatches/DefaultStopWatchTest.java
commons/sandbox/monitoring/trunk/jdbc/src/main/java/org/apache/commons/monitoring/jdbc/MonitoredConnection.java
commons/sandbox/monitoring/trunk/pom.xml
commons/sandbox/monitoring/trunk/reporting/pom.xml
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/CSVFormat.java
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/Format.java
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/HTMLFormat.java
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/JSONFormat.java
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/MetricData.java
commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/XMLFormat.java
commons/sandbox/monitoring/trunk/reporting/src/main/resources/META-INF/NOTICE.txt
commons/sandbox/monitoring/trunk/reporting/src/main/webapp/WEB-INF/web.xml
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=1508066&r1=1508065&r2=1508066&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 Mon Jul 29 13:47:39 2013
@@ -24,8 +24,6 @@ import org.apache.commons.monitoring.sto
import java.lang.reflect.Method;
-import static org.apache.commons.monitoring.counter.Unit.UNARY;
-
/**
* A method interceptor that compute method invocation performances.
* <p/>
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=1508066&r1=1508065&r2=1508066&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 Mon Jul 29 13:47:39 2013
@@ -24,7 +24,6 @@ import org.junit.Test;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.spi.BeanManager;
-
import java.util.concurrent.TimeUnit;
import static org.junit.Assert.assertEquals;
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=1508066&r1=1508065&r2=1508066&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 Mon Jul 29 13:47:39 2013
@@ -18,7 +18,6 @@
package org.apache.commons.monitoring.counter;
import org.apache.commons.monitoring.Role;
-import org.apache.commons.monitoring.Visitable;
import org.apache.commons.monitoring.monitors.Monitor;
/**
@@ -27,7 +26,7 @@ import org.apache.commons.monitoring.mon
*
* @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
*/
-public interface Counter extends Visitable {
+public interface Counter {
/**
* reset the Metric
*/
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=1508066&r1=1508065&r2=1508066&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 Mon Jul 29 13:47:39 2013
@@ -18,7 +18,6 @@ package org.apache.commons.monitoring.co
import org.apache.commons.math.stat.descriptive.SummaryStatistics;
import org.apache.commons.monitoring.Role;
-import org.apache.commons.monitoring.Visitor;
import org.apache.commons.monitoring.configuration.Configuration;
import org.apache.commons.monitoring.counter.queuemanager.MetricQueueManager;
import org.apache.commons.monitoring.monitors.Monitor;
@@ -130,11 +129,6 @@ public class DefaultCounter implements C
return statistics.getN();
}
- @Override
- public void accept(final Visitor visitor) {
- visitor.visit(this);
- }
-
public Lock getLock() {
return lock;
}
Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/counter/Unit.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/counter/Unit.java?rev=1508066&r1=1508065&r2=1508066&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/counter/Unit.java (original)
+++ commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/counter/Unit.java Mon Jul 29 13:47:39 2013
@@ -44,8 +44,7 @@ public class Unit implements Comparable<
/**
* Time based units
*/
- public static class Time
- extends Unit {
+ 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);
@@ -95,7 +94,7 @@ public class Unit implements Comparable<
// "BILLION" does not have same signification depending on country (10^12 or 10^9).
// We use International system of unit names to avoid confusion
// @see http://en.wikipedia.org/wiki/SI
- public static final Unit UNARY = new Unit("-");
+ public static final Unit UNARY = new Unit("u");
public static final Unit DECA = new Unit("*10", UNARY, 10);
public static final Unit HECTO = new Unit("*100", DECA, 10);
public static final Unit KILO = new Unit("*1000", HECTO, 10);
Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/monitors/DefaultMonitor.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/monitors/DefaultMonitor.java?rev=1508066&r1=1508065&r2=1508066&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/monitors/DefaultMonitor.java (original)
+++ commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/monitors/DefaultMonitor.java Mon Jul 29 13:47:39 2013
@@ -18,7 +18,6 @@
package org.apache.commons.monitoring.monitors;
import org.apache.commons.monitoring.Role;
-import org.apache.commons.monitoring.Visitor;
import org.apache.commons.monitoring.configuration.Configuration;
import org.apache.commons.monitoring.counter.Counter;
import org.apache.commons.monitoring.counter.factory.CounterFactory;
@@ -111,9 +110,4 @@ public class DefaultMonitor implements M
public int getMaxConcurrency() {
return maxConcurrency;
}
-
- @Override
- public void accept(final Visitor visitor) {
- visitor.visit(this);
- }
}
Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/monitors/Monitor.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/monitors/Monitor.java?rev=1508066&r1=1508065&r2=1508066&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/monitors/Monitor.java (original)
+++ commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/monitors/Monitor.java Mon Jul 29 13:47:39 2013
@@ -18,7 +18,6 @@
package org.apache.commons.monitoring.monitors;
import org.apache.commons.monitoring.Role;
-import org.apache.commons.monitoring.Visitable;
import org.apache.commons.monitoring.counter.Counter;
import java.util.Collection;
@@ -46,7 +45,7 @@ import java.util.concurrent.atomic.Atomi
*
* @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
*/
-public interface Monitor extends Visitable {
+public interface Monitor {
/**
* @return the monitor key
*/
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=1508066&r1=1508065&r2=1508066&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 Mon Jul 29 13:47:39 2013
@@ -17,8 +17,6 @@
package org.apache.commons.monitoring.repositories;
-import org.apache.commons.monitoring.Visitor;
-import org.apache.commons.monitoring.configuration.Configuration;
import org.apache.commons.monitoring.monitors.DefaultMonitor;
import org.apache.commons.monitoring.monitors.Monitor;
import org.apache.commons.monitoring.monitors.Monitor.Key;
@@ -108,9 +106,4 @@ public class DefaultRepository implement
public StopWatch start(final Monitor monitor) {
return new CounterStopWatch(monitor);
}
-
- @Override
- public void accept(final Visitor visitor) {
- visitor.visit(this);
- }
}
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=1508066&r1=1508065&r2=1508066&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 Mon Jul 29 13:47:39 2013
@@ -17,7 +17,6 @@
package org.apache.commons.monitoring.repositories;
-import org.apache.commons.monitoring.Visitable;
import org.apache.commons.monitoring.configuration.Configuration;
import org.apache.commons.monitoring.monitors.Monitor;
import org.apache.commons.monitoring.stopwatches.StopWatch;
@@ -31,7 +30,7 @@ import java.util.Set;
*
* @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
*/
-public interface Repository extends Visitable {
+public interface Repository {
static final Repository INSTANCE = Configuration.newInstance(Repository.class);
/**
Modified: commons/sandbox/monitoring/trunk/core/src/test/java/org/apache/commons/monitoring/stopwatches/DefaultStopWatchTest.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/test/java/org/apache/commons/monitoring/stopwatches/DefaultStopWatchTest.java?rev=1508066&r1=1508065&r2=1508066&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/core/src/test/java/org/apache/commons/monitoring/stopwatches/DefaultStopWatchTest.java (original)
+++ commons/sandbox/monitoring/trunk/core/src/test/java/org/apache/commons/monitoring/stopwatches/DefaultStopWatchTest.java Mon Jul 29 13:47:39 2013
@@ -21,7 +21,6 @@ import org.apache.commons.monitoring.Rol
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.Visitor;
import org.apache.commons.monitoring.util.ClassLoaders;
import org.junit.Test;
@@ -189,9 +188,5 @@ public class DefaultStopWatchTest {
public int getMaxConcurrency() {
return 0;
}
-
- public void accept(Visitor visitor) {
- // NoOp
- }
}
}
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=1508066&r1=1508065&r2=1508066&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 Mon Jul 29 13:47:39 2013
@@ -20,7 +20,6 @@ package org.apache.commons.monitoring.jd
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.repositories.Repository;
import org.apache.commons.monitoring.stopwatches.CounterStopWatch;
import org.apache.commons.monitoring.stopwatches.StopWatch;
import org.apache.commons.monitoring.util.ClassLoaders;
Modified: commons/sandbox/monitoring/trunk/pom.xml
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/pom.xml?rev=1508066&r1=1508065&r2=1508066&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/pom.xml (original)
+++ commons/sandbox/monitoring/trunk/pom.xml Mon Jul 29 13:47:39 2013
@@ -79,8 +79,8 @@
<exclude>**/*/MANIFEST.MF</exclude>
<exclude>.git</exclude>
<exclude>.gitignore</exclude>
- <exclude>**/webapp/js/*.js</exclude>
- <exclude>**/webapp/css/*.css</exclude>
+ <exclude>**/webapp/resources/js/*.js</exclude>
+ <exclude>**/webapp/resources/css/*.css</exclude>
</excludes>
</configuration>
<executions>
Modified: commons/sandbox/monitoring/trunk/reporting/pom.xml
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/pom.xml?rev=1508066&r1=1508065&r2=1508066&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/pom.xml (original)
+++ commons/sandbox/monitoring/trunk/reporting/pom.xml Mon Jul 29 13:47:39 2013
@@ -31,6 +31,10 @@
<dependencies>
<dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-servlet_2.5_spec</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.apache.commons.monitoring</groupId>
<artifactId>commons-monitoring-core</artifactId>
<version>${project.version}</version>
@@ -43,26 +47,15 @@
<version>3.1</version>
</dependency>
<dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-servlet_2.5_spec</artifactId>
+ <groupId>org.apache.velocity</groupId>
+ <artifactId>velocity</artifactId>
+ <version>1.7</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
- <dependency>
- <groupId>xmlunit</groupId>
- <artifactId>xmlunit</artifactId>
- <version>1.3</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.codehaus.jettison</groupId>
- <artifactId>jettison</artifactId>
- <version>1.2</version>
- <scope>test</scope>
- </dependency>
</dependencies>
<repositories>
Modified: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/CSVFormat.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/CSVFormat.java?rev=1508066&r1=1508065&r2=1508066&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/CSVFormat.java (original)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/CSVFormat.java Mon Jul 29 13:47:39 2013
@@ -17,82 +17,39 @@
package org.apache.commons.monitoring.reporting.format;
import org.apache.commons.monitoring.configuration.Configuration;
-import org.apache.commons.monitoring.monitors.Monitor;
+import org.apache.commons.monitoring.counter.Unit;
import java.io.PrintWriter;
-import java.util.Arrays;
import java.util.Collection;
-import java.util.HashMap;
import java.util.Map;
-public class CSVFormat implements Format {
+public class CSVFormat extends MapFormat implements Format {
private static final String SEPARATOR = Configuration.getProperty(Configuration.COMMONS_MONITORING_PREFIX + "csv.separator", ";");
- private static final String ATTRIBUTES_CSV = buildMetricDataHeader();
+ public static final String HEADER = "Monitor" + SEPARATOR + "Category" + SEPARATOR + "Role" + SEPARATOR + toCsv(ATTRIBUTES_ORDERED_LIST);
- public static final String HEADER = "Monitor" + SEPARATOR + "Category" + SEPARATOR + "Role" + SEPARATOR + ATTRIBUTES_CSV + "\n";
- private static final Collection<String> ATTRIBUTES_ORDERED_LIST = Arrays.asList(ATTRIBUTES_CSV.split(SEPARATOR));
+ @Override
+ public void render(final PrintWriter writer, final Map<String, ?> params) {
+ final Unit timeUnit = timeUnit(params);
- private static String buildMetricDataHeader() {
- final StringBuilder builder = new StringBuilder();
- for (final MetricData md : MetricData.values()) {
- builder.append(md.name()).append(SEPARATOR);
- }
-
- final String str = builder.toString();
- return str.substring(0, str.length() - 1);
- }
-
- private String monitorName;
- private StringBuilder builder = new StringBuilder();
- private final Map<String, String> attributes = new HashMap<String, String>();
-
- public void repositoryStart(final PrintWriter writer) {
writer.write(HEADER);
- }
-
- public void repositoryEnd(final PrintWriter writer) {
- // no-op
- }
-
- public void monitorStart(final PrintWriter writer, final Monitor monitor) {
- monitorName = monitor.getKey().getName() + SEPARATOR + monitor.getKey().getCategory() + SEPARATOR;
- }
-
- public void monitorEnd(final PrintWriter writer, final String name) {
- // no-op
- }
-
- public void counterStart(final PrintWriter writer, final String name) {
- builder.append(monitorName).append(name).append(SEPARATOR);
- attributes.clear();
- }
-
- public void counterEnd(final PrintWriter writer, final String name) {
- for (final String key : ATTRIBUTES_ORDERED_LIST) {
- final String value = attributes.get(key);
- if (value != null) {
- builder.append(value);
- } else {
- builder.append("?");
- }
- builder.append(SEPARATOR);
+ for (final Collection<String> line : snapshot(timeUnit)) {
+ writer.write(toCsv(line));
}
-
- final String s = builder.toString();
- writer.write(s.substring(0, s.length() - 1) + "\n");
- builder = new StringBuilder();
}
- public void attribute(final PrintWriter writer, String name, final String value) {
- attributes.put(name, value);
+ @Override
+ public String type() {
+ return "text/plain";
}
- public void separator(final PrintWriter writer) {
- // no-op
- }
+ private static String toCsv(final Collection<String> line) {
+ final StringBuilder builder = new StringBuilder();
+ for (final String s : line) {
+ builder.append(s).append(SEPARATOR);
+ }
- public void escape(final PrintWriter writer, final String string) {
- builder.append(string).append(SEPARATOR);
+ final String str = builder.toString();
+ return str.substring(0, str.length() - 1) + '\n';
}
}
Modified: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/Format.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/Format.java?rev=1508066&r1=1508065&r2=1508066&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/Format.java (original)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/Format.java Mon Jul 29 13:47:39 2013
@@ -17,35 +17,14 @@
package org.apache.commons.monitoring.reporting.format;
-import org.apache.commons.monitoring.monitors.Monitor;
+import org.apache.commons.monitoring.reporting.web.handler.Renderer;
-import java.io.PrintWriter;
-
-public interface Format {
-
- void repositoryStart(PrintWriter writer);
-
- void repositoryEnd(PrintWriter writer);
-
- void monitorStart(PrintWriter writer, Monitor monitor);
-
- void monitorEnd(PrintWriter writer, String name);
-
- void counterStart(PrintWriter writer, String name);
-
- void counterEnd(PrintWriter writer, String name);
-
- void attribute(PrintWriter writer, String name, String value);
-
- void separator(PrintWriter writer);
-
- void escape(PrintWriter writer, String string);
+public interface Format extends Renderer {
+ String type();
public static interface Defaults {
- static final Format JSON = new JSONFormat(false);
- static final Format JSON_PRETTY = new JSONFormat(true);
- static final Format XML = new XMLFormat(false);
- static final Format XML_PRETTY = new XMLFormat(true);
+ static final Format JSON = new JSONFormat();
+ static final Format XML = new XMLFormat();
static final Format CSV = new CSVFormat();
static final Format HTML = new HTMLFormat();
}
Modified: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/HTMLFormat.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/HTMLFormat.java?rev=1508066&r1=1508065&r2=1508066&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/HTMLFormat.java (original)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/HTMLFormat.java Mon Jul 29 13:47:39 2013
@@ -16,135 +16,26 @@
*/
package org.apache.commons.monitoring.reporting.format;
-import org.apache.commons.lang3.StringEscapeUtils;
-import org.apache.commons.monitoring.monitors.Monitor;
+import org.apache.commons.monitoring.counter.Unit;
+import org.apache.commons.monitoring.reporting.template.MapBuilder;
+import org.apache.commons.monitoring.reporting.template.Templates;
import java.io.PrintWriter;
-import java.util.Collection;
-import java.util.HashMap;
import java.util.Map;
-import java.util.concurrent.CopyOnWriteArrayList;
-// TODO: write a real front?
-public class HTMLFormat implements Format {
- private static final Collection<String> ATTRIBUTES_ORDERED_LIST = buildMetricDataHeader();
-
- private static Collection<String> buildMetricDataHeader() {
- final Collection<String> list = new CopyOnWriteArrayList<String>();
- list.add("Monitor");
- list.add("Category");
- list.add("Role");
- for (final MetricData md : MetricData.values()) {
- list.add(md.name());
- }
- return list;
- }
-
- private final Map<String, String> attributes = new HashMap<String, String>();
-
- public void repositoryStart(final PrintWriter writer) {
- writer.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n" +
- "<html>\n" +
- " <head>\n" +
- " <meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n" +
- " \n" +
- " <title>Monitoring HTML Report</title>\n" +
- "\n" +
- " <link href=\"" + RenderingContext.getBase() + "/css/theme.blue.css\" rel=\"stylesheet\">\n" +
- " <script type=\"text/javascript\" language=\"javascript\" src=\"" + RenderingContext.getBase() + "/js/jquery.min.js" +"\"></script>\n" +
- " <script type=\"text/javascript\" language=\"javascript\" src=\"" + RenderingContext.getBase() + "/js/jquery.tablesorter.js" +"\"></script>\n" +
- " <script type=\"text/javascript\" language=\"javascript\" src=\"" + RenderingContext.getBase() + "/js/jquery.tablesorter.widgets.js" +"\"></script>\n" +
- " </head>\n" +
- " <body>\n" +
- " <div id=\"container\">\n" +
- " <h1>Report</h1>\n" +
- "\n" +
- " <table class=\"sort-table\" id=\"report-table\" border=\"1\">\n" +
- " <thead>\n");
- writeColumnNames(writer);
- writer.write(" </thead>\n <tbody>\n");
- }
-
- private void writeColumnNames(PrintWriter writer) {
- for (final String n : ATTRIBUTES_ORDERED_LIST) {
- writer.write("<th>");
- writer.write(n);
- writer.write("</th>\n");
- }
- }
-
- public void repositoryEnd(final PrintWriter writer) {
- writer.write(" </table>\n" +
- "\n" +
- " </div>" +
- "" +
- " <script type=\"text/javascript\">\n" +
- " $(function(){\n" +
- " $(\"#report-table\").tablesorter({\n" +
- " theme: 'blue',\n" +
- " widthFixed : true,\n" +
- " widgets: [\"zebra\", \"filter\"],\n" +
- " widgetOptions : {\n" +
- " filter_childRows : false,\n" +
- " filter_columnFilters : true,\n" +
- " filter_cssFilter : 'tablesorter-filter',\n" +
- " filter_filteredRow : 'filtered',\n" +
- " filter_formatter : null,\n" +
- " filter_functions : null,\n" +
- " filter_hideFilters : false, // true, (see note in the options section above)\n" +
- " filter_ignoreCase : true,\n" +
- " filter_liveSearch : true,\n" +
- " filter_reset : 'button.reset',\n" +
- " filter_searchDelay : 300,\n" +
- " filter_serversideFiltering: false,\n" +
- " filter_startsWith : false,\n" +
- " filter_useParsedData : false\n" +
- "\n" +
- " }\n" +
- "\n" +
- " });\n" +
- " });" +
- " </script>" +
- " </body>\n" +
- "</html>");
- }
-
- public void monitorStart(final PrintWriter writer, final Monitor monitor) {
- attributes.put("Monitor", StringEscapeUtils.escapeHtml4(monitor.getKey().getName()));
- attributes.put("Category", monitor.getKey().getCategory());
- }
-
- public void monitorEnd(final PrintWriter writer, final String name) {
- }
-
- public void counterStart(final PrintWriter writer, final String name) {
- attributes.put("Role", name);
- }
-
- public void counterEnd(final PrintWriter writer, final String name) {
- writer.write("<tr>\n");
- for (final String key : ATTRIBUTES_ORDERED_LIST) {
- writer.write("<td>");
- final String value = attributes.get(key);
- if (value != null) {
- writer.write(value);
- } else {
- writer.write("");
- }
- writer.write("</td>\n");
- }
- writer.write("</tr>\n");
- }
-
- public void attribute(final PrintWriter writer, String name, final String value) {
- attributes.put(name, value);
- }
-
- public void separator(final PrintWriter writer) {
- // no-op
+public class HTMLFormat extends MapFormat implements Format {
+ @Override
+ public void render(final PrintWriter writer, final Map<String, ?> params) {
+ final Unit timeUnit = timeUnit(params);
+ Templates.htmlRender(writer, "report.vm",
+ new MapBuilder<String, Object>()
+ .set("headers", ATTRIBUTES_ORDERED_LIST)
+ .set("data", snapshot(timeUnit))
+ .build());
}
- public void escape(final PrintWriter writer, final String string) {
- // no-op
+ @Override
+ public String type() {
+ return "text/html";
}
}
Modified: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/JSONFormat.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/JSONFormat.java?rev=1508066&r1=1508065&r2=1508066&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/JSONFormat.java (original)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/JSONFormat.java Mon Jul 29 13:47:39 2013
@@ -17,83 +17,52 @@
package org.apache.commons.monitoring.reporting.format;
-import org.apache.commons.lang3.StringEscapeUtils;
+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;
+import java.util.Iterator;
+import java.util.Map;
-
-/**
- * Format to JSON (JavaScript), with optional indentation
- *
- * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
- */
public class JSONFormat implements Format {
- private boolean indent;
-
- public JSONFormat(boolean indent) {
- this.indent = indent;
- }
-
- public void repositoryStart(PrintWriter writer) {
- writer.append("{");
- }
-
- public void repositoryEnd(PrintWriter writer) {
- if (indent) {
- writer.append("\n");
- }
- writer.append("}");
- }
-
- public void monitorStart(PrintWriter writer, Monitor monitor) {
- if (indent) {
- writer.append("\n ");
- }
- Monitor.Key key = monitor.getKey();
- escape(writer, key.getName());
- writer.append(":{");
- if (indent) {
- writer.append("\n \"category\": \"").append(monitor.getKey().getCategory()).append("\",");
- }
- }
+ private static final MetricData[] METRIC_DATA = MetricData.values();
- public void monitorEnd(PrintWriter writer, String name) {
- if (indent) {
- writer.append("\n ");
+ @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(",");
+ }
+ }
+ writer.write("]}");
+ if (monitors.hasNext()) {
+ writer.write(",");
+ }
}
-
- writer.append("}");
- }
-
- public void counterStart(PrintWriter writer, String name) {
- if (indent) {
- writer.append("\n ");
- }
- escape(writer, name);
- writer.append(":{");
- writeAttribute(writer, "type", "counter");
- }
-
- public void counterEnd(PrintWriter writer, String name) {
- writer.append("}");
- }
-
- public void attribute(PrintWriter writer, String name, String value) {
- separator(writer);
- writeAttribute(writer, name, value);
- }
-
- protected void writeAttribute(PrintWriter writer, String name, String value) {
- writer.append("\"").append(name).append("\"").append(":");
- escape(writer, value);
- }
-
- public void escape(PrintWriter writer, String string) {
- writer.append('\"').append(StringEscapeUtils.escapeEcmaScript(string)).append('\"');
+ writer.write("]}");
}
- public void separator(PrintWriter writer) {
- writer.append(",");
+ @Override
+ public String type() {
+ return "application/json";
}
}
\ No newline at end of file
Added: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/MapFormat.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/MapFormat.java?rev=1508066&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/MapFormat.java (added)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/MapFormat.java Mon Jul 29 13:47:39 2013
@@ -0,0 +1,81 @@
+/*
+ * 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.reporting.format;
+
+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;
+import java.util.Collection;
+import java.util.Map;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+public class MapFormat {
+ protected static final Collection<String> ATTRIBUTES_ORDERED_LIST = buildMetricDataHeader();
+
+ protected static Collection<String> buildMetricDataHeader() {
+ final Collection<String> list = new CopyOnWriteArrayList<String>();
+ list.add("Monitor");
+ list.add("Category");
+ list.add("Role");
+ for (final MetricData md : MetricData.values()) {
+ list.add(md.name());
+ }
+ return list;
+ }
+
+ protected static Unit timeUnit(final Map<String, ?> params) {
+ final Object u = params.get("unit");
+ if (u != null && String.class.isInstance(u)) {
+ return Unit.get(String.class.cast(u).toUpperCase());
+ }
+ return Unit.Time.MILLISECOND;
+ }
+
+ 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 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/format/MetricData.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/MetricData.java?rev=1508066&r1=1508065&r2=1508066&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/MetricData.java (original)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/MetricData.java Mon Jul 29 13:47:39 2013
@@ -39,73 +39,134 @@ public enum MetricData {
public double value(final Counter counter) {
return counter.getHits();
}
+
+ @Override
+ public boolean isTime() {
+ return false;
+ }
},
Max {
@Override
public double value(final Counter counter) {
return counter.getMax();
}
+
+ @Override
+ public boolean isTime() {
+ return true;
+ }
},
Mean {
@Override
public double value(final Counter counter) {
return counter.getMean();
}
+
+ @Override
+ public boolean isTime() {
+ return true;
+ }
},
Min {
@Override
public double value(final Counter counter) {
return counter.getMin();
}
+
+ @Override
+ public boolean isTime() {
+ return true;
+ }
},
StandardDeviation {
@Override
public double value(final Counter counter) {
return counter.getStandardDeviation();
}
+
+ @Override
+ public boolean isTime() {
+ return false;
+ }
},
Sum {
@Override
public double value(final Counter counter) {
return counter.getSum();
}
+
+ @Override
+ public boolean isTime() {
+ return true;
+ }
},
SumOfLogs {
@Override
public double value(final Counter counter) {
return counter.getSumOfLogs();
}
+
+ @Override
+ public boolean isTime() {
+ return false;
+ }
},
SumOfSquares {
@Override
public double value(final Counter counter) {
return counter.getSumOfSquares();
}
+
+ @Override
+ public boolean isTime() {
+ return false;
+ }
},
Variance {
@Override
public double value(final Counter counter) {
return counter.getVariance();
}
+
+ @Override
+ public boolean isTime() {
+ return false;
+ }
},
GeometricMean {
@Override
public double value(final Counter counter) {
return counter.getGeometricMean();
}
+
+ @Override
+ public boolean isTime() {
+ return false;
+ }
},
Value {
@Override
public double value(final Counter counter) {
return counter.getSum();
}
+
+ @Override
+ public boolean isTime() {
+ return true;
+ }
},
MaxConcurrency {
@Override
public double value(final Counter counter) {
return counter.getMonitor().getMaxConcurrency();
}
+
+ @Override
+ public boolean isTime() {
+ return false;
+ }
};
public abstract double value(Counter counter);
+ public abstract boolean isTime();
}
\ No newline at end of file
Modified: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/XMLFormat.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/XMLFormat.java?rev=1508066&r1=1508065&r2=1508066&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/XMLFormat.java (original)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/format/XMLFormat.java Mon Jul 29 13:47:39 2013
@@ -17,78 +17,33 @@
package org.apache.commons.monitoring.reporting.format;
-import org.apache.commons.lang3.StringEscapeUtils;
+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;
+import java.util.Map;
-/**
- * Format to XML, with optional indentation
- *
- * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
- */
public class XMLFormat implements Format {
- public XMLFormat(boolean indent) {
- super();
- this.indent = indent;
- }
-
- private boolean indent;
-
- public void repositoryStart(PrintWriter writer) {
- writer.append("<repository>");
- }
-
- public void repositoryEnd(PrintWriter writer) {
- if (indent) {
- writer.append("\n");
- }
- writer.append("</repository>");
- }
-
- public void monitorStart(PrintWriter writer, Monitor monitor) {
- if (indent) {
- writer.append("\n ");
- }
- writer.append("<monitor");
- Monitor.Key key = monitor.getKey();
- attribute(writer, "name", key.getName());
- attribute(writer, "category", key.getCategory());
- writer.append('>');
- }
-
- public void monitorEnd(PrintWriter writer, String name) {
- if (indent) {
- writer.append("\n ");
+ @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(" />");
+ }
+ writer.write("</monitor>");
}
- writer.append("</monitor>");
- }
-
- public void counterStart(PrintWriter writer, String name) {
- if (indent) {
- writer.append("\n ");
- }
- writer.append("<counter");
- attribute(writer, "role", name);
- }
-
- public void counterEnd(PrintWriter writer, String name) {
- writer.append("/>");
- }
-
- public void attribute(PrintWriter writer, String name, String value) {
- writer.append(" ")
- .append(name)
- .append("=\"");
- escape(writer, value);
- writer.append("\"");
- }
-
- public void escape(PrintWriter writer, String string) {
- writer.append(StringEscapeUtils.escapeXml(string));
+ writer.write("</repository>");
}
- public void separator(PrintWriter writer) {
- // Nop
+ @Override
+ public String type() {
+ return "application/xml";
}
}
\ No newline at end of file
Added: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/template/MapBuilder.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/template/MapBuilder.java?rev=1508066&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/template/MapBuilder.java (added)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/template/MapBuilder.java Mon Jul 29 13:47:39 2013
@@ -0,0 +1,33 @@
+/*
+ * 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.reporting.template;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class MapBuilder<A, B> {
+ private final Map<A, B> map = new HashMap<A, B>();
+
+ public MapBuilder<A, B> set(final A a, final B b) {
+ map.put(a, b);
+ return this;
+ }
+
+ public Map<A, B> build() {
+ return map;
+ }
+}
Added: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/template/Templates.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/template/Templates.java?rev=1508066&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/template/Templates.java (added)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/template/Templates.java Mon Jul 29 13:47:39 2013
@@ -0,0 +1,91 @@
+/*
+ * 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.reporting.template;
+
+import org.apache.velocity.Template;
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.Velocity;
+import org.apache.velocity.runtime.RuntimeConstants;
+import org.apache.velocity.runtime.log.JdkLogChute;
+
+import javax.servlet.ServletContext;
+import java.io.PrintWriter;
+import java.util.Map;
+import java.util.Properties;
+
+public final class Templates {
+ private static String base;
+ private static String mapping;
+ private static ServletContext servletContext;
+
+ public static void init(final ServletContext context, final String filterMapping) {
+ servletContext = context;
+
+ final Properties velocityConfiguration = new Properties();
+ velocityConfiguration.setProperty(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM_CLASS, JdkLogChute.class.getName());
+ velocityConfiguration.setProperty(RuntimeConstants.ENCODING_DEFAULT, "UTF-8");
+ velocityConfiguration.setProperty(RuntimeConstants.INPUT_ENCODING, "UTF-8");
+ velocityConfiguration.setProperty(RuntimeConstants.OUTPUT_ENCODING, "UTF-8");
+ velocityConfiguration.setProperty(RuntimeConstants.RUNTIME_REFERENCES_STRICT, Boolean.TRUE.toString());
+ velocityConfiguration.setProperty(RuntimeConstants.RUNTIME_REFERENCES_STRICT_ESCAPE, Boolean.TRUE.toString());
+ velocityConfiguration.setProperty(RuntimeConstants.RESOURCE_LOADER, "monitoring");
+ velocityConfiguration.setProperty("monitoring." + RuntimeConstants.RESOURCE_LOADER + ".class", WebResourceLoader.class.getName());
+ Velocity.init(velocityConfiguration);
+
+ base = context.getContextPath();
+ if (filterMapping.isEmpty()) {
+ mapping = context.getContextPath();
+ } else {
+ mapping = context.getContextPath() + filterMapping;
+ }
+ }
+
+ public static ServletContext getServletContext() {
+ return servletContext;
+ }
+
+ public static void htmlRender(final PrintWriter writer, final String template, final Map<String, ?> variables) {
+ final VelocityContext context = newVelocityContext(variables);
+ context.put("base", base);
+ context.put("mapping", mapping);
+ context.put("currentTemplate", template);
+
+ final Template velocityTemplate = Velocity.getTemplate("/templates/page.vm", "UTF-8");
+ velocityTemplate.merge(context, writer);
+ }
+
+ public static void render(final PrintWriter writer, final String template, final Map<String, ?> variables) {
+ final VelocityContext context = newVelocityContext(variables);
+ context.put("base", base);
+ final Template velocityTemplate = Velocity.getTemplate(template, "UTF-8");
+ velocityTemplate.merge(context, writer);
+ }
+
+ private static VelocityContext newVelocityContext(final Map<String, ?> variables) {
+ final VelocityContext context;
+ if (variables.isEmpty()) {
+ context = new VelocityContext();
+ } else {
+ context = new VelocityContext(variables);
+ }
+ return context;
+ }
+
+ private Templates() {
+ // no-op
+ }
+}
Added: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/template/WebResourceLoader.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/template/WebResourceLoader.java?rev=1508066&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/template/WebResourceLoader.java (added)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/template/WebResourceLoader.java Mon Jul 29 13:47:39 2013
@@ -0,0 +1,54 @@
+/*
+ * 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.reporting.template;
+
+import org.apache.commons.collections.ExtendedProperties;
+import org.apache.velocity.exception.ResourceNotFoundException;
+import org.apache.velocity.runtime.resource.Resource;
+import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader;
+
+import java.io.InputStream;
+
+public class WebResourceLoader extends ClasspathResourceLoader {
+ @Override
+ public void init(final ExtendedProperties configuration) {
+ // no-op
+ }
+
+ @Override
+ public InputStream getResourceStream(final String source) throws ResourceNotFoundException {
+ try {
+ return super.getResourceStream(source);
+ } catch (final ResourceNotFoundException rnfe) {
+ final InputStream is = Templates.getServletContext().getResourceAsStream(source);
+ if (is == null) {
+ throw rnfe;
+ }
+ return is;
+ }
+ }
+
+ @Override
+ public boolean isSourceModified(final Resource resource) {
+ return false;
+ }
+
+ @Override
+ public long getLastModified(final Resource resource) {
+ return 0;
+ }
+}
Added: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/MonitoringController.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/MonitoringController.java?rev=1508066&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/MonitoringController.java (added)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/MonitoringController.java Mon Jul 29 13:47:39 2013
@@ -0,0 +1,121 @@
+/*
+ * 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.reporting.web;
+
+import org.apache.commons.monitoring.reporting.template.Templates;
+import org.apache.commons.monitoring.reporting.web.handler.ClearHandler;
+import org.apache.commons.monitoring.reporting.web.handler.FilteringHandler;
+import org.apache.commons.monitoring.reporting.web.handler.Handler;
+import org.apache.commons.monitoring.reporting.web.handler.HtmlHandler;
+import org.apache.commons.monitoring.reporting.web.handler.Renderer;
+import org.apache.commons.monitoring.reporting.web.handler.ReportHandler;
+import org.apache.commons.monitoring.reporting.web.handler.ResetHandler;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+public class MonitoringController implements Filter {
+ private final Map<String, Handler> handlers = new HashMap<String, Handler>();
+ private Handler defaultHandler;
+ private String mapping;
+ private ServletContext servletContext;
+
+ @Override
+ public void init(final FilterConfig config) throws ServletException {
+ servletContext = config.getServletContext();
+ initMapping(config);
+ initHandlers();
+ initTemplates();
+ }
+
+ private void initHandlers() {
+ defaultHandler = new HtmlHandler("home.vm");
+ handlers.put("/", defaultHandler);
+ handlers.put("/home", defaultHandler);
+ handlers.put("/report", new ReportHandler());
+ handlers.put("/clear", new ClearHandler());
+ handlers.put("/reset", new ResetHandler());
+ handlers.put("/resources/css/monitoring.css", FilteringHandler.INSTANCE); // filtered to get the right base for pictures
+ }
+
+ private void initTemplates() {
+ Templates.init(servletContext, mapping);
+ }
+
+ private void initMapping(FilterConfig config) {
+ mapping = config.getInitParameter("monitoring-mapping");
+ if (mapping == null) {
+ mapping = "";
+ } else if (!mapping.startsWith("/")) {
+ mapping = "/" + mapping;
+ }
+ if (mapping.endsWith("/")) {
+ mapping = mapping.substring(0, mapping.length() - 1);
+ }
+ }
+
+ @Override
+ public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException, ServletException {
+ if (!HttpServletRequest.class.isInstance(request)) {
+ chain.doFilter(request, response);
+ return;
+ }
+
+ final HttpServletRequest httpRequest = HttpServletRequest.class.cast(request);
+
+ final Handler handler = findHandler(httpRequest);
+ final String path = httpRequest.getRequestURI().substring(httpRequest.getContextPath().length());
+ if (handler == defaultHandler && servletContext.getResourceAsStream(path) != null) {
+ chain.doFilter(request, response);
+ return;
+ }
+
+ final Renderer renderer = handler.handle(httpRequest, HttpServletResponse.class.cast(response));
+ if (renderer != null) {
+ renderer.render(response.getWriter(), request.getParameterMap());
+ }
+ }
+
+ private Handler findHandler(final HttpServletRequest request) {
+ String path = request.getRequestURI().substring(request.getContextPath().length() + mapping.length());
+ if (!path.startsWith("/")) {
+ path = "/" + path;
+ }
+
+ final Handler handler = handlers.get(path);
+ if (handler != null) {
+ return handler;
+ }
+
+ return defaultHandler;
+ }
+
+ @Override
+ public void destroy() {
+ handlers.clear();
+ }
+}
Added: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/ClearHandler.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/ClearHandler.java?rev=1508066&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/ClearHandler.java (added)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/ClearHandler.java Mon Jul 29 13:47:39 2013
@@ -0,0 +1,40 @@
+/*
+ * 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.reporting.web.handler;
+
+import org.apache.commons.monitoring.repositories.Repository;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+public class ClearHandler extends RedirectHandler {
+ @Override
+ public Renderer handle(final HttpServletRequest request, final HttpServletResponse response) {
+ Repository.INSTANCE.clear();
+ return super.handle(request, response);
+ }
+
+ @Override
+ public String from() {
+ return "clear";
+ }
+
+ @Override
+ public String to() {
+ return "report";
+ }
+}
Added: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/FilteringHandler.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/FilteringHandler.java?rev=1508066&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/FilteringHandler.java (added)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/FilteringHandler.java Mon Jul 29 13:47:39 2013
@@ -0,0 +1,51 @@
+/*
+ * 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.reporting.web.handler;
+
+import org.apache.commons.monitoring.reporting.template.Templates;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.PrintWriter;
+import java.util.Collections;
+import java.util.Map;
+
+public class FilteringHandler implements Handler {
+ public static final FilteringHandler INSTANCE = new FilteringHandler();
+
+ private FilteringHandler() {
+ // no-op
+ }
+
+ @Override
+ public Renderer handle(final HttpServletRequest request, final HttpServletResponse response) {
+ return new FilteringRenderer(request.getRequestURI().substring(request.getContextPath().length()));
+ }
+
+ private static class FilteringRenderer implements Renderer {
+ private final String path;
+
+ public FilteringRenderer(final String path) {
+ this.path = path;
+ }
+
+ @Override
+ public void render(final PrintWriter writer, final Map<String, ?> params) {
+ Templates.render(writer, path, Collections.<String, Object>emptyMap());
+ }
+ }
+}
Added: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/Handler.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/Handler.java?rev=1508066&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/Handler.java (added)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/Handler.java Mon Jul 29 13:47:39 2013
@@ -0,0 +1,24 @@
+/*
+ * 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.reporting.web.handler;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+public interface Handler {
+ Renderer handle(HttpServletRequest request, HttpServletResponse response);
+}
Added: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/HtmlHandler.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/HtmlHandler.java?rev=1508066&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/HtmlHandler.java (added)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/HtmlHandler.java Mon Jul 29 13:47:39 2013
@@ -0,0 +1,50 @@
+/*
+ * 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.reporting.web.handler;
+
+import org.apache.commons.monitoring.reporting.template.Templates;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.PrintWriter;
+import java.util.Map;
+
+public class HtmlHandler implements Handler {
+ private final HtmlRenderer renderer;
+
+ public HtmlHandler(final String template) {
+ this.renderer = new HtmlRenderer(template);
+ }
+
+ @Override
+ public Renderer handle(final HttpServletRequest request, final HttpServletResponse response) {
+ return renderer;
+ }
+
+ protected static class HtmlRenderer implements Renderer {
+ private final String template;
+
+ public HtmlRenderer(final String template) {
+ this.template = template;
+ }
+
+ @Override
+ public void render(PrintWriter writer, Map<String, ?> params) {
+ Templates.htmlRender(writer, template, params);
+ }
+ }
+}
Added: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/RedirectHandler.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/RedirectHandler.java?rev=1508066&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/RedirectHandler.java (added)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/RedirectHandler.java Mon Jul 29 13:47:39 2013
@@ -0,0 +1,37 @@
+/*
+ * 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.reporting.web.handler;
+
+import org.apache.commons.monitoring.MonitoringException;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+public abstract class RedirectHandler implements Handler {
+ @Override
+ public Renderer handle(final HttpServletRequest request, final HttpServletResponse response) {
+ try {
+ response.sendRedirect(request.getRequestURI().substring(0, request.getRequestURI().length() - from().length()) + to());
+ } catch (final Exception e) {
+ throw new MonitoringException(e);
+ }
+ return null;
+ }
+
+ public abstract String from();
+ public abstract String to();
+}
Added: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/Renderer.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/Renderer.java?rev=1508066&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/Renderer.java (added)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/Renderer.java Mon Jul 29 13:47:39 2013
@@ -0,0 +1,24 @@
+/*
+ * 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.reporting.web.handler;
+
+import java.io.PrintWriter;
+import java.util.Map;
+
+public interface Renderer {
+ void render(PrintWriter writer, Map<String, ?> params);
+}
Copied: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/ReportHandler.java (from r1507950, commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/MonitoringServlet.java)
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/ReportHandler.java?p2=commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/ReportHandler.java&p1=commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/MonitoringServlet.java&r1=1507950&r2=1508066&rev=1508066&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/MonitoringServlet.java (original)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/ReportHandler.java Mon Jul 29 13:47:39 2013
@@ -14,24 +14,18 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
-package org.apache.commons.monitoring.reporting.web;
+package org.apache.commons.monitoring.reporting.web.handler;
import org.apache.commons.monitoring.reporting.format.Format;
-import org.apache.commons.monitoring.reporting.format.FormattingVisitor;
-import org.apache.commons.monitoring.reporting.format.RenderingContext;
-import org.apache.commons.monitoring.repositories.Repository;
+import org.apache.commons.monitoring.reporting.web.util.HttpUtils;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
-public class MonitoringServlet extends HttpServlet {
+public class ReportHandler implements Handler {
private static Map<String, Format> extensions = new HashMap<String, Format>();
private static Map<String, Format> formats = new HashMap<String, Format>();
@@ -54,15 +48,15 @@ public class MonitoringServlet extends H
}
@Override
- protected void doGet(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException {
+ public Renderer handle(final HttpServletRequest request, final HttpServletResponse response) {
Format format = null;
- final String path = req.getRequestURI();
+ final String path = request.getRequestURI();
final int dot = path.lastIndexOf('.');
if (dot >= 0) {
format = extensions.get(path.substring(dot + 1).toLowerCase(Locale.ENGLISH));
} else {
- final String mime = HttpUtils.parseAccept(req.getHeader("Accept"));
+ final String mime = HttpUtils.parseAccept(request.getHeader("Accept"));
if (mime != null) {
format = formats.get(mime);
}
@@ -71,11 +65,7 @@ public class MonitoringServlet extends H
format = Format.Defaults.CSV;
}
- RenderingContext.setBase(req.getContextPath());
- try {
- Repository.INSTANCE.accept(new FormattingVisitor(format, resp.getWriter()));
- } finally {
- RenderingContext.clear();
- }
+ response.setContentType(format.type());
+ return format;
}
}
Added: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/ResetHandler.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/ResetHandler.java?rev=1508066&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/ResetHandler.java (added)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/ResetHandler.java Mon Jul 29 13:47:39 2013
@@ -0,0 +1,40 @@
+/*
+ * 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.reporting.web.handler;
+
+import org.apache.commons.monitoring.repositories.Repository;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+public class ResetHandler extends RedirectHandler {
+ @Override
+ public Renderer handle(final HttpServletRequest request, final HttpServletResponse response) {
+ Repository.INSTANCE.reset();
+ return super.handle(request, response);
+ }
+
+ @Override
+ public String from() {
+ return "reset";
+ }
+
+ @Override
+ public String to() {
+ return "report";
+ }
+}
Copied: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/util/HttpUtils.java (from r1507950, commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/HttpUtils.java)
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/util/HttpUtils.java?p2=commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/util/HttpUtils.java&p1=commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/HttpUtils.java&r1=1507950&r2=1508066&rev=1508066&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/HttpUtils.java (original)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/util/HttpUtils.java Mon Jul 29 13:47:39 2013
@@ -15,9 +15,9 @@
* limitations under the License.
*/
-package org.apache.commons.monitoring.reporting.web;
+package org.apache.commons.monitoring.reporting.web.util;
-public class HttpUtils {
+public final class HttpUtils {
public static String parseAccept(String header) {
return getPrefered(header);
@@ -56,4 +56,7 @@ public class HttpUtils {
return 1;
}
+ private HttpUtils() {
+ // no-op
+ }
}