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/30 09:29:01 UTC

svn commit: r1508328 - in /commons/sandbox/monitoring/trunk: ./ core/src/main/java/org/apache/commons/monitoring/configuration/ reporting/src/main/java/org/apache/commons/monitoring/reporting/template/ reporting/src/main/java/org/apache/commons/monitor...

Author: rmannibucau
Date: Tue Jul 30 07:29:00 2013
New Revision: 1508328

URL: http://svn.apache.org/r1508328
Log:
adding basic plugin API

Added:
    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/
    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/PluginDecoratorHandler.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/
    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/resources/META-INF/services/
    commons/sandbox/monitoring/trunk/reporting/src/main/resources/META-INF/services/org.apache.commons.monitoring.reporting.web.plugin.Plugin
Modified:
    commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/configuration/Configuration.java
    commons/sandbox/monitoring/trunk/pom.xml
    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/web/MonitoringController.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/resources/templates/home.vm
    commons/sandbox/monitoring/trunk/reporting/src/main/resources/templates/page.vm

Modified: commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/configuration/Configuration.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/configuration/Configuration.java?rev=1508328&r1=1508327&r2=1508328&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/configuration/Configuration.java (original)
+++ commons/sandbox/monitoring/trunk/core/src/main/java/org/apache/commons/monitoring/configuration/Configuration.java Tue Jul 30 07:29:00 2013
@@ -97,6 +97,10 @@ public final class Configuration {
         return Boolean.parseBoolean(getProperty(key.key, "false"));
     }
 
+    public static boolean is(final String key, final boolean defaultValue) {
+        return Boolean.parseBoolean(getProperty(key, Boolean.toString(defaultValue)));
+    }
+
     public static String getProperty(final String key, final String defaultValue) {
         return PROPERTIES.getProperty(key, defaultValue);
     }

Modified: commons/sandbox/monitoring/trunk/pom.xml
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/pom.xml?rev=1508328&r1=1508327&r2=1508328&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/pom.xml (original)
+++ commons/sandbox/monitoring/trunk/pom.xml Tue Jul 30 07:29:00 2013
@@ -81,6 +81,7 @@
             <exclude>.gitignore</exclude>
             <exclude>**/webapp/resources/js/*.js</exclude>
             <exclude>**/webapp/resources/css/*.css</exclude>
+            <exclude>**/META-INF/services/*</exclude>
           </excludes>
         </configuration>
         <executions>

Modified: 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=1508328&r1=1508327&r2=1508328&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/template/Templates.java (original)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/template/Templates.java Tue Jul 30 07:29:00 2013
@@ -16,6 +16,7 @@
  */
 package org.apache.commons.monitoring.reporting.template;
 
+import org.apache.commons.monitoring.reporting.web.plugin.PluginRepository;
 import org.apache.velocity.Template;
 import org.apache.velocity.VelocityContext;
 import org.apache.velocity.app.Velocity;
@@ -63,6 +64,10 @@ public final class Templates {
         context.put("base", base);
         context.put("mapping", mapping);
         context.put("currentTemplate", template);
+        context.put("plugins", PluginRepository.PLUGIN_INFO);
+        if (context.get("templateId") == null) {
+            context.put("templateId", template.replace(".vm", ""));
+        }
 
         final Template velocityTemplate = Velocity.getTemplate("/templates/page.vm", "UTF-8");
         velocityTemplate.merge(context, writer);

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=1508328&r1=1508327&r2=1508328&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 Tue Jul 30 07:29:00 2013
@@ -21,10 +21,11 @@ import org.apache.commons.monitoring.rep
 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.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.plugin.PluginRepository;
 
 import javax.servlet.Filter;
 import javax.servlet.FilterChain;
@@ -54,7 +55,8 @@ public class MonitoringController implem
     }
 
     private void initHandlers() {
-        defaultHandler = new HtmlHandler("home.vm");
+        defaultHandler = new HomeHandler();
+
         handlers.put("/", defaultHandler);
         handlers.put("/home", defaultHandler);
         handlers.put("/report", new ReportHandler(Format.Defaults.HTML));
@@ -64,6 +66,12 @@ public class MonitoringController implem
         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) {
+            if (plugin.getHandler() != null && plugin.getUrl() != null) {
+                handlers.put("/" + plugin.getUrl(), plugin.getHandler());
+            }
+        }
     }
 
     private void initTemplates() {

Added: 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=1508328&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/HomeHandler.java (added)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/HomeHandler.java Tue Jul 30 07:29:00 2013
@@ -0,0 +1,44 @@
+/*
+ * 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 HomeHandler implements Handler {
+    private final HomeRenderer renderer;
+
+    public HomeHandler() {
+        this.renderer = new HomeRenderer();
+    }
+
+    @Override
+    public Renderer handle(final HttpServletRequest request, final HttpServletResponse response) {
+        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);
+        }
+    }
+}

Modified: 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=1508328&r1=1508327&r2=1508328&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/HtmlHandler.java (original)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/handler/HtmlHandler.java Tue Jul 30 07:29:00 2013
@@ -43,7 +43,7 @@ public class HtmlHandler implements Hand
         }
 
         @Override
-        public void render(PrintWriter writer, Map<String, ?> params) {
+        public void render(final PrintWriter writer, final Map<String, ?> params) {
             Templates.htmlRender(writer, template, params);
         }
     }

Added: 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=1508328&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/Plugin.java (added)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/Plugin.java Tue Jul 30 07:29:00 2013
@@ -0,0 +1,36 @@
+/*
+ * 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;
+
+import org.apache.commons.monitoring.reporting.web.handler.Handler;
+
+public interface Plugin {
+    /**
+     * @return plugin name.
+     */
+    String name();
+
+    /**
+     * @return the handler to call when mappings() are matched.
+     */
+    Class<? extends Handler> handler();
+
+    /**
+     * @return the mapping of the handler if not null. Note: it shouldn't start with '/'.
+     */
+    String[] mappings();
+}

Added: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/PluginDecoratorHandler.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/PluginDecoratorHandler.java?rev=1508328&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/PluginDecoratorHandler.java (added)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/PluginDecoratorHandler.java Tue Jul 30 07:29:00 2013
@@ -0,0 +1,62 @@
+/*
+ * 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;
+
+import org.apache.commons.monitoring.reporting.web.handler.Handler;
+import org.apache.commons.monitoring.reporting.web.handler.Renderer;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.PrintWriter;
+import java.util.HashMap;
+import java.util.Map;
+
+public class PluginDecoratorHandler implements Handler {
+    private final Handler delegate;
+    private final String plugin;
+
+    public PluginDecoratorHandler(final Handler handler, final String name) {
+        delegate = handler;
+        plugin = name;
+    }
+
+    @Override
+    public Renderer handle(final HttpServletRequest request, final HttpServletResponse response) {
+        return new PluginDecoratorRenderer(delegate.handle(request, response), plugin);
+    }
+
+    private static class PluginDecoratorRenderer implements Renderer {
+        private final Renderer delegate;
+        private final String plugin;
+
+        public PluginDecoratorRenderer(final Renderer handle, final String name) {
+            delegate = handle;
+            plugin = name;
+        }
+
+        @Override
+        public void render(final PrintWriter writer, final Map<String, ?> params) {
+            final Map<String, Object> map = new HashMap<String, Object>();
+            if (params != null && !params.isEmpty()) {
+                map.putAll(params);
+            }
+            map.put("templateId", plugin);
+
+            delegate.render(writer, map);
+        }
+    }
+}

Added: 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=1508328&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/PluginRepository.java (added)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/PluginRepository.java Tue Jul 30 07:29:00 2013
@@ -0,0 +1,78 @@
+/*
+ * 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;
+
+import org.apache.commons.monitoring.MonitoringException;
+import org.apache.commons.monitoring.configuration.Configuration;
+import org.apache.commons.monitoring.reporting.web.handler.Handler;
+
+import java.util.Collection;
+import java.util.ServiceLoader;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+public class PluginRepository {
+    public static Collection<PluginInfo> PLUGIN_INFO = new CopyOnWriteArrayList<PluginInfo>();
+
+    static {
+        for (final Plugin plugin : ServiceLoader.load(Plugin.class, Plugin.class.getClassLoader())) {
+            final String name = plugin.name();
+            if (name == null) {
+                throw new IllegalArgumentException("plugin name can't be null");
+            }
+            if (!Configuration.is(name + ".activated", true)) {
+                continue;
+            }
+
+            final String[] mappings = plugin.mappings();
+            final Class<? extends Handler> handler = plugin.handler();
+            if (mappings != 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));
+                    }
+                } catch (final Exception e) {
+                    throw new MonitoringException(e);
+                }
+            }
+        }
+    }
+
+    public static class PluginInfo {
+        private final String url;
+        private final Handler handler;
+        private final String name;
+
+        public PluginInfo(final String url, final Handler handler, final String name) {
+            this.url = url;
+            this.handler = handler;
+            this.name = name;
+        }
+
+        public String getUrl() {
+            return url;
+        }
+
+        public Handler getHandler() {
+            return handler;
+        }
+
+        public String getName() {
+            return name;
+        }
+    }
+}

Added: 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=1508328&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/jmx/JMXHandler.java (added)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/jmx/JMXHandler.java Tue Jul 30 07:29:00 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.jmx;
+
+import org.apache.commons.monitoring.reporting.web.handler.Handler;
+import org.apache.commons.monitoring.reporting.web.handler.Renderer;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.PrintWriter;
+import java.util.Map;
+
+public class JMXHandler implements Handler {
+    @Override
+    public Renderer handle(final HttpServletRequest request, final HttpServletResponse response) {
+        return new Renderer() {
+            @Override
+            public void render(final PrintWriter writer, final Map<String, ?> params) {
+                writer.write("TODO");
+            }
+        };
+    }
+}

Added: 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=1508328&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/jmx/JMXPlugin.java (added)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/plugin/jmx/JMXPlugin.java Tue Jul 30 07:29:00 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.jmx;
+
+import org.apache.commons.monitoring.reporting.web.handler.Handler;
+import org.apache.commons.monitoring.reporting.web.plugin.Plugin;
+
+public class JMXPlugin implements Plugin {
+    @Override
+    public String name() {
+        return "JMX";
+    }
+
+    @Override
+    public Class<? extends Handler> handler() {
+        return JMXHandler.class;
+    }
+
+    @Override
+    public String[] mappings() {
+        return new String[] { "jmx" };
+    }
+}

Added: 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=1508328&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/reporting/src/main/resources/META-INF/services/org.apache.commons.monitoring.reporting.web.plugin.Plugin (added)
+++ commons/sandbox/monitoring/trunk/reporting/src/main/resources/META-INF/services/org.apache.commons.monitoring.reporting.web.plugin.Plugin Tue Jul 30 07:29:00 2013
@@ -0,0 +1 @@
+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=1508328&r1=1508327&r2=1508328&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 Tue Jul 30 07:29:00 2013
@@ -23,6 +23,9 @@
     <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.url">$plugin.name</a></li>
+            #end
         </ul>
     </div>
 </div>
\ No newline at end of file

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=1508328&r1=1508327&r2=1508328&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 Tue Jul 30 07:29:00 2013
@@ -36,20 +36,29 @@
               <a class="brand" href="http://commons.apache.org/sandbox/commons-monitoring/">Commons Monitoring</a>
               <div class="nav-collapse">
                   <ul class="nav">
-                      #if ( $currentTemplate == "home.vm")
+                      #if ( $templateId == "home")
                         <li class="active">
                       #else
                         <li>
                       #end
                           <a href="$mapping/">Home</a>
                       </li>
-                      #if ( $currentTemplate == "report.vm")
+                      #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">
+                          #else
+                            <li>
+                          #end
+                              <a href="$mapping/$plugin.url">$plugin.name</a>
+                          </li>
+                      #end
                   </ul>
                   <ul class="nav pull-right">
                       <li><a href="http://www.apache.org/">ASF</a></li>