Author: rmannibucau Date: Wed Jul 31 11:54:19 2013 New Revision: 1508823 URL: http://svn.apache.org/r1508823 Log: replacing hardcoded report stuff in MonitoringController by a plugin
Added: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/ClearHandler.java - copied, changed from r1508808, 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/plugin/report/FormatReportHandler.java - copied, changed from r1508808, commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/ReportHandler.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/java/org/apache/commons/monitoring/reporting/web/plugin/report/ReportPlugin.java commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/ResetHandler.java - copied, changed from r1508808, 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/plugin/report/format/ - copied from r1508808, commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/format/ commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/report/ commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/report/report.vm - copied, changed from r1508808, commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/report.vm Removed: 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/ReportHandler.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/handler/format/ commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/report.vm Modified: 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/HandlerRendererAdapter.java commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/HomeHandler.java commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/Plugin.java commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/PluginRepository.java commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/jmx/JMXHandler.java commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/jmx/JMXPlugin.java commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/CSVFormat.java commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/Format.java commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/HTMLFormat.java commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/JSONFormat.java commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/MapFormat.java commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/MetricData.java commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/XMLFormat.java commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/template/MapBuilder.java commons/sandbox/monitoring/trunk/reporting/src/main/resources/META-INF/services/org.apache.commons.monitoring.reporting.web.plugin.Plugin commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/home.vm commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/jmx/main.vm commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/page.vm commons/sandbox/monitoring/trunk/reporting/src/test/java/org/apache/commons/monitoring/reporting/FormatsTest.java Modified: 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=1508823&r1=1508822&r2=1508823&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/MonitoringController.java (original) +++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/MonitoringController.java Wed Jul 31 11:54:19 2013 @@ -16,14 +16,10 @@ */ package org.apache.commons.monitoring.reporting.web; -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.HomeHandler; 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 org.apache.commons.monitoring.reporting.web.handler.format.Format; import org.apache.commons.monitoring.reporting.web.plugin.PluginRepository; import org.apache.commons.monitoring.reporting.web.template.MapBuilder; import org.apache.commons.monitoring.reporting.web.template.Templates; @@ -63,12 +59,6 @@ public class MonitoringController implem handlers.put("/", defaultHandler); handlers.put("/home", defaultHandler); - handlers.put("/report", new ReportHandler(Format.Defaults.HTML)); - handlers.put("/report.csv", new ReportHandler(Format.Defaults.CSV)); - handlers.put("/report.json", new ReportHandler(Format.Defaults.JSON)); - handlers.put("/report.xml", new ReportHandler(Format.Defaults.XML)); - 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 for (final PluginRepository.PluginInfo plugin : PluginRepository.PLUGIN_INFO) { Modified: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/HandlerRendererAdapter.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/HandlerRendererAdapter.java?rev=1508823&r1=1508822&r2=1508823&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/HandlerRendererAdapter.java (original) +++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/HandlerRendererAdapter.java Wed Jul 31 11:54:19 2013 @@ -16,29 +16,47 @@ */ package org.apache.commons.monitoring.reporting.web.handler; +import org.apache.commons.monitoring.reporting.web.template.MapBuilder; import org.apache.commons.monitoring.reporting.web.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 abstract class HandlerRendererAdapter implements Handler, Renderer { @Override public Renderer handle(final HttpServletRequest request, final HttpServletResponse response, final String path) { + final Renderer renderer = rendererFor(response, path); + if (renderer != null) { + return renderer; + } return rendererFor(path); } @Override public void render(final PrintWriter writer, final Map<String, ?> params) { - Templates.htmlRender(writer, getTemplate(), getVariables()); + Templates.htmlRender(writer, getTemplate(), + new MapBuilder<String, Object>() + .set(Map.class.cast(params)) + .set(Map.class.cast(getVariables())) + .build()); + } + + protected Renderer rendererFor(final HttpServletResponse response, final String path) { + return null; } protected Renderer rendererFor(final String path) { return this; } - protected abstract String getTemplate(); + protected String getTemplate() { + return null; + } - protected abstract Map<String,?> getVariables(); + protected Map<String,?> getVariables() { + return Collections.emptyMap(); + } } Modified: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/HomeHandler.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/HomeHandler.java?rev=1508823&r1=1508822&r2=1508823&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/HomeHandler.java (original) +++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/HomeHandler.java Wed Jul 31 11:54:19 2013 @@ -16,29 +16,9 @@ */ package org.apache.commons.monitoring.reporting.web.handler; -import org.apache.commons.monitoring.reporting.web.template.Templates; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.PrintWriter; -import java.util.Map; - -public class HomeHandler implements Handler { - private final HomeRenderer renderer; - - public HomeHandler() { - this.renderer = new HomeRenderer(); - } - +public class HomeHandler extends HandlerRendererAdapter { @Override - public Renderer handle(final HttpServletRequest request, final HttpServletResponse response, final String path) { - return renderer; - } - - protected static class HomeRenderer implements Renderer { - @Override - public void render(final PrintWriter writer, final Map<String, ?> params) { - Templates.htmlRender(writer, "home.vm", params); - } + protected String getTemplate() { + return "home.vm"; } } Modified: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/Plugin.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/Plugin.java?rev=1508823&r1=1508822&r2=1508823&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/Plugin.java (original) +++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/Plugin.java Wed Jul 31 11:54:19 2013 @@ -30,7 +30,7 @@ public interface Plugin { Class<? extends Handler> handler(); /** - * @return the mapping of the handler if not null. Note: it shouldn't start with '/'. + * @return the mapping of the handler if not null. Note: it shouldn't start with '/' but can end with /*. */ - String[] mappings(); + String mapping(); } Modified: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/PluginRepository.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/PluginRepository.java?rev=1508823&r1=1508822&r2=1508823&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/PluginRepository.java (original) +++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/PluginRepository.java Wed Jul 31 11:54:19 2013 @@ -37,14 +37,12 @@ public class PluginRepository { continue; } - final String[] mappings = plugin.mappings(); + final String mapping = plugin.mapping(); final Class<? extends Handler> handler = plugin.handler(); - if (mappings != null && handler != null) { + if (mapping != null && handler != null) { try { final Handler handlerInstance = new PluginDecoratorHandler(handler.newInstance(), name); - for (final String mapping : mappings) { - PLUGIN_INFO.add(new PluginInfo(mapping, handlerInstance, name)); - } + PLUGIN_INFO.add(new PluginInfo(mapping, handlerInstance, name)); } catch (final Exception e) { throw new MonitoringException(e); } @@ -62,10 +60,14 @@ public class PluginRepository { this.url = url; this.handler = handler; this.name = name; - if (!url.endsWith("/*")) { + if (!url.endsWith("*")) { rootUrl = url; } else { - rootUrl = url.substring(0, url.length() - "/*".length()); + if (url.endsWith("/")) { + rootUrl = url.substring(0, url.length() - "/*".length()); + } else { + rootUrl = url.substring(0, url.length() - "*".length()); + } } } Modified: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/jmx/JMXHandler.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/jmx/JMXHandler.java?rev=1508823&r1=1508822&r2=1508823&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/jmx/JMXHandler.java (original) +++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/jmx/JMXHandler.java Wed Jul 31 11:54:19 2013 @@ -23,16 +23,12 @@ import org.apache.commons.monitoring.rep import org.apache.commons.monitoring.reporting.web.template.MapBuilder; import org.apache.commons.monitoring.reporting.web.template.Templates; -import javax.management.AttributeNotFoundException; -import javax.management.InstanceNotFoundException; import javax.management.MBeanAttributeInfo; -import javax.management.MBeanException; import javax.management.MBeanInfo; import javax.management.MBeanServer; import javax.management.MalformedObjectNameException; import javax.management.ObjectInstance; import javax.management.ObjectName; -import javax.management.ReflectionException; import javax.management.openmbean.CompositeData; import javax.management.openmbean.TabularData; import java.io.PrintWriter; Modified: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/jmx/JMXPlugin.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/jmx/JMXPlugin.java?rev=1508823&r1=1508822&r2=1508823&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/jmx/JMXPlugin.java (original) +++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/jmx/JMXPlugin.java Wed Jul 31 11:54:19 2013 @@ -31,7 +31,7 @@ public class JMXPlugin implements Plugin } @Override - public String[] mappings() { - return new String[] { "jmx/*" }; + public String mapping() { + return "jmx/*"; } } Copied: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/ClearHandler.java (from r1508808, 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/plugin/report/ClearHandler.java?p2=commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/ClearHandler.java&p1=commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/ClearHandler.java&r1=1508808&r2=1508823&rev=1508823&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/ClearHandler.java (original) +++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/ClearHandler.java Wed Jul 31 11:54:19 2013 @@ -14,8 +14,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.commons.monitoring.reporting.web.handler; +package org.apache.commons.monitoring.reporting.web.plugin.report; +import org.apache.commons.monitoring.reporting.web.handler.RedirectHandler; import org.apache.commons.monitoring.repositories.Repository; public class ClearHandler extends RedirectHandler { Copied: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/FormatReportHandler.java (from r1508808, commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/ReportHandler.java) URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/FormatReportHandler.java?p2=commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/FormatReportHandler.java&p1=commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/ReportHandler.java&r1=1508808&r2=1508823&rev=1508823&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/ReportHandler.java (original) +++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/FormatReportHandler.java Wed Jul 31 11:54:19 2013 @@ -14,17 +14,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.commons.monitoring.reporting.web.handler; +package org.apache.commons.monitoring.reporting.web.plugin.report; -import org.apache.commons.monitoring.reporting.web.handler.format.Format; +import org.apache.commons.monitoring.reporting.web.handler.Handler; +import org.apache.commons.monitoring.reporting.web.handler.Renderer; +import org.apache.commons.monitoring.reporting.web.plugin.report.format.Format; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -public class ReportHandler implements Handler { +public class FormatReportHandler implements Handler { private final Format format; - public ReportHandler(final Format frm) { + public FormatReportHandler(final Format frm) { format = frm; } Added: 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=1508823&view=auto ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/ReportHandler.java (added) +++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/ReportHandler.java Wed Jul 31 11:54:19 2013 @@ -0,0 +1,63 @@ +/* + * 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.plugin.report; + +import org.apache.commons.monitoring.reporting.web.handler.Handler; +import org.apache.commons.monitoring.reporting.web.handler.Renderer; +import org.apache.commons.monitoring.reporting.web.plugin.report.format.Format; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +public class ReportHandler implements Handler { + private final FormatReportHandler html; + private final FormatReportHandler csv; + private final FormatReportHandler json; + private final FormatReportHandler xml; + private final ClearHandler clear; + private final ResetHandler reset; + + public ReportHandler() { + html = new FormatReportHandler(Format.Defaults.HTML); + csv = new FormatReportHandler(Format.Defaults.CSV); + json = new FormatReportHandler(Format.Defaults.JSON); + xml = new FormatReportHandler(Format.Defaults.XML); + clear = new ClearHandler(); + reset = new ResetHandler(); + } + + @Override + public Renderer handle(final HttpServletRequest request, final HttpServletResponse response, final String path) { + if (path.endsWith(".csv")) { + return csv.handle(request, response, path); + } + if (path.endsWith(".json")) { + return json.handle(request, response, path); + } + if (path.endsWith(".xml")) { + return xml.handle(request, response, path); + } + 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); + } +} Added: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/ReportPlugin.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/ReportPlugin.java?rev=1508823&view=auto ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/ReportPlugin.java (added) +++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/ReportPlugin.java Wed Jul 31 11:54:19 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.plugin.report; + +import org.apache.commons.monitoring.reporting.web.handler.Handler; +import org.apache.commons.monitoring.reporting.web.plugin.Plugin; + +public class ReportPlugin implements Plugin { + @Override + public String name() { + return "Report"; + } + + @Override + public Class<? extends Handler> handler() { + return ReportHandler.class; + } + + @Override + public String mapping() { + return "report*"; + } +} Copied: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/ResetHandler.java (from r1508808, 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/plugin/report/ResetHandler.java?p2=commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/ResetHandler.java&p1=commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/ResetHandler.java&r1=1508808&r2=1508823&rev=1508823&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/ResetHandler.java (original) +++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/ResetHandler.java Wed Jul 31 11:54:19 2013 @@ -14,8 +14,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.commons.monitoring.reporting.web.handler; +package org.apache.commons.monitoring.reporting.web.plugin.report; +import org.apache.commons.monitoring.reporting.web.handler.RedirectHandler; import org.apache.commons.monitoring.repositories.Repository; public class ResetHandler extends RedirectHandler { Modified: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/CSVFormat.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/CSVFormat.java?rev=1508823&r1=1508808&r2=1508823&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/CSVFormat.java (original) +++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/CSVFormat.java Wed Jul 31 11:54:19 2013 @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.commons.monitoring.reporting.web.handler.format; +package org.apache.commons.monitoring.reporting.web.plugin.report.format; import org.apache.commons.monitoring.configuration.Configuration; import org.apache.commons.monitoring.counter.Unit; Modified: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/Format.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/Format.java?rev=1508823&r1=1508808&r2=1508823&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/Format.java (original) +++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/Format.java Wed Jul 31 11:54:19 2013 @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.commons.monitoring.reporting.web.handler.format; +package org.apache.commons.monitoring.reporting.web.plugin.report.format; import org.apache.commons.monitoring.reporting.web.handler.Renderer; Modified: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/HTMLFormat.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/HTMLFormat.java?rev=1508823&r1=1508808&r2=1508823&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/HTMLFormat.java (original) +++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/HTMLFormat.java Wed Jul 31 11:54:19 2013 @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.commons.monitoring.reporting.web.handler.format; +package org.apache.commons.monitoring.reporting.web.plugin.report.format; import org.apache.commons.monitoring.counter.Unit; import org.apache.commons.monitoring.reporting.web.template.MapBuilder; @@ -27,8 +27,9 @@ public class HTMLFormat extends MapForma @Override public void render(final PrintWriter writer, final Map<String, ?> params) { final Unit timeUnit = timeUnit(params); - Templates.htmlRender(writer, "report.vm", + Templates.htmlRender(writer, "report/report.vm", new MapBuilder<String, Object>() + .set(Map.class.cast(params)) .set("headers", ATTRIBUTES_ORDERED_LIST) .set("data", snapshot(timeUnit)) .build()); Modified: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/JSONFormat.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/JSONFormat.java?rev=1508823&r1=1508808&r2=1508823&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/JSONFormat.java (original) +++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/JSONFormat.java Wed Jul 31 11:54:19 2013 @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.commons.monitoring.reporting.web.handler.format; +package org.apache.commons.monitoring.reporting.web.plugin.report.format; import org.apache.commons.monitoring.counter.Counter; import org.apache.commons.monitoring.monitors.Monitor; Modified: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/MapFormat.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/MapFormat.java?rev=1508823&r1=1508808&r2=1508823&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/MapFormat.java (original) +++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/MapFormat.java Wed Jul 31 11:54:19 2013 @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.commons.monitoring.reporting.web.handler.format; +package org.apache.commons.monitoring.reporting.web.plugin.report.format; import org.apache.commons.monitoring.counter.Counter; import org.apache.commons.monitoring.counter.Unit; Modified: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/MetricData.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/MetricData.java?rev=1508823&r1=1508808&r2=1508823&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/MetricData.java (original) +++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/MetricData.java Wed Jul 31 11:54:19 2013 @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.commons.monitoring.reporting.web.handler.format; +package org.apache.commons.monitoring.reporting.web.plugin.report.format; import org.apache.commons.monitoring.counter.Counter; Modified: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/XMLFormat.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/XMLFormat.java?rev=1508823&r1=1508808&r2=1508823&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/XMLFormat.java (original) +++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/report/format/XMLFormat.java Wed Jul 31 11:54:19 2013 @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.commons.monitoring.reporting.web.handler.format; +package org.apache.commons.monitoring.reporting.web.plugin.report.format; import org.apache.commons.monitoring.counter.Counter; import org.apache.commons.monitoring.monitors.Monitor; Modified: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/template/MapBuilder.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/template/MapBuilder.java?rev=1508823&r1=1508822&r2=1508823&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/template/MapBuilder.java (original) +++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/template/MapBuilder.java Wed Jul 31 11:54:19 2013 @@ -27,6 +27,11 @@ public class MapBuilder<A, B> { return this; } + public MapBuilder<A, B> set(final Map<A, B> params) { + map.putAll(params); + return this; + } + public Map<A, B> build() { return map; } Modified: commons/sandbox/monitoring/trunk/reporting/src/main/resources/META-INF/services/org.apache.commons.monitoring.reporting.web.plugin.Plugin URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/resources/META-INF/services/org.apache.commons.monitoring.reporting.web.plugin.Plugin?rev=1508823&r1=1508822&r2=1508823&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/resources/META-INF/services/org.apache.commons.monitoring.reporting.web.plugin.Plugin (original) +++ commons/sandbox/monitoring/trunk/reporting/src/main/resources/META-INF/services/org.apache.commons.monitoring.reporting.web.plugin.Plugin Wed Jul 31 11:54:19 2013 @@ -1 +1,2 @@ +org.apache.commons.monitoring.reporting.web.plugin.report.ReportPlugin org.apache.commons.monitoring.reporting.web.plugin.jmx.JMXPlugin Modified: commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/home.vm URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/home.vm?rev=1508823&r1=1508822&r2=1508823&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/home.vm (original) +++ commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/home.vm Wed Jul 31 11:54:19 2013 @@ -21,7 +21,6 @@ </div> <div> <ul> - <li><a href="$mapping/report">Report</a> (<a href="$mapping/report.xml">xml</a>, <a href="$mapping/report.json">json</a>, <a href="$mapping/report.csv">csv</a>)</li> #foreach ( $plugin in $plugins ) <li><a href="$mapping/$plugin.rootUrl">$plugin.name</a></li> #end Modified: commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/jmx/main.vm URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/jmx/main.vm?rev=1508823&r1=1508822&r2=1508823&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/jmx/main.vm (original) +++ commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/jmx/main.vm Wed Jul 31 11:54:19 2013 @@ -35,7 +35,7 @@ #tree ( $jmxTree ) </div> <div id="jmx-info" class="span10"> - TODO + Click on the left tree to select a leaf top show the attributes of a MBean. </div> </div> </div> Modified: commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/page.vm URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/page.vm?rev=1508823&r1=1508822&r2=1508823&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/page.vm (original) +++ commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/page.vm Wed Jul 31 11:54:19 2013 @@ -39,13 +39,6 @@ #end <a href="$mapping/">Home</a> </li> - #if ( $templateId == "report") - <li class="active"> - #else - <li> - #end - <a href="$mapping/report">Report</a> - </li> #foreach ( $plugin in $plugins ) #if ( $templateId == $plugin.name ) <li class="active"> Copied: commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/report/report.vm (from r1508808, commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/report.vm) URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/report/report.vm?p2=commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/report/report.vm&p1=commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/report.vm&r1=1508808&r2=1508823&rev=1508823&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/report.vm (original) +++ commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/report/report.vm Wed Jul 31 11:54:19 2013 @@ -16,13 +16,36 @@ *# <h1>Report</h1> -<ul class="breadcrumb"> - <li><a href="$mapping/clear">Clear</a> <span class="divider">/</span></li> - <li><a href="$mapping/reset">Reset</a> </li> - - <li class="pull-right"><a href="$mapping/report?unit=s">s</a></li> - <li class="pull-right"><a href="$mapping/report?unit=ms">ms</a> <span class="divider">/</span></li> - <li class="pull-right"><a href="$mapping/report?unit=ns">ns</a> <span class="divider">/</span></li> +<ul class="nav nav-pills"> + <li class="dropdown"> + <a class="dropdown-toggle" data-toggle="dropdown" href="#"> + Actions <b class="caret"></b> + </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"> + <a class="dropdown-toggle" data-toggle="dropdown" href="#"> + Formats <b class="caret"></b> + </a> + <ul class="dropdown-menu"> + <li><a href="$mapping/report.xml">xml</a></li> + <li><a href="$mapping/report.csv">csv</a></li> + <li><a href="$mapping/report.json">json</a></li> + </ul> + </li> + <li class="dropdown"> + <a class="dropdown-toggle" data-toggle="dropdown" href="#"> + Time Unit <b class="caret"></b> + </a> + <ul class="dropdown-menu"> + <li><a href="$mapping/report?unit=s">s</a></li> + <li><a href="$mapping/report?unit=ms">ms</a></li> + <li><a href="$mapping/report?unit=ns">ns</a></li> + </ul> + </li> </ul> <table id="report-table" class="table table-bordered table-striped table-hover"> Modified: commons/sandbox/monitoring/trunk/reporting/src/test/java/org/apache/commons/monitoring/reporting/FormatsTest.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/test/java/org/apache/commons/monitoring/reporting/FormatsTest.java?rev=1508823&r1=1508822&r2=1508823&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/test/java/org/apache/commons/monitoring/reporting/FormatsTest.java (original) +++ commons/sandbox/monitoring/trunk/reporting/src/test/java/org/apache/commons/monitoring/reporting/FormatsTest.java Wed Jul 31 11:54:19 2013 @@ -19,8 +19,8 @@ package org.apache.commons.monitoring.re import org.apache.commons.monitoring.Role; import org.apache.commons.monitoring.monitors.Monitor; -import org.apache.commons.monitoring.reporting.web.handler.format.CSVFormat; -import org.apache.commons.monitoring.reporting.web.handler.format.Format; +import org.apache.commons.monitoring.reporting.web.plugin.report.format.CSVFormat; +import org.apache.commons.monitoring.reporting.web.plugin.report.format.Format; import org.apache.commons.monitoring.repositories.Repository; import org.junit.AfterClass; import org.junit.BeforeClass;