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;


Reply via email to