Author: rmannibucau Date: Tue Oct 15 09:04:54 2013 New Revision: 1532253 URL: http://svn.apache.org/r1532253 Log: allowing to register automatically reporting gui
Added: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/registration/ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/registration/MonitoringReportingInitializer.java commons/sandbox/monitoring/trunk/reporting/src/main/resources/META-INF/services/javax.servlet.ServletContainerInitializer Modified: commons/sandbox/monitoring/trunk/cdi/pom.xml commons/sandbox/monitoring/trunk/graphite/pom.xml commons/sandbox/monitoring/trunk/pom.xml commons/sandbox/monitoring/trunk/reporting/pom.xml commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/MonitoringController.java commons/sandbox/monitoring/trunk/src/site/markdown/reporting.md commons/sandbox/monitoring/trunk/web/pom.xml Modified: commons/sandbox/monitoring/trunk/cdi/pom.xml URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/cdi/pom.xml?rev=1532253&r1=1532252&r2=1532253&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/cdi/pom.xml (original) +++ commons/sandbox/monitoring/trunk/cdi/pom.xml Tue Oct 15 09:04:54 2013 @@ -54,7 +54,7 @@ </dependency> <dependency> <groupId>org.apache.geronimo.specs</groupId> - <artifactId>geronimo-servlet_2.5_spec</artifactId> + <artifactId>geronimo-servlet_3.0_spec</artifactId> <scope>test</scope> </dependency> <dependency> Modified: commons/sandbox/monitoring/trunk/graphite/pom.xml URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/graphite/pom.xml?rev=1532253&r1=1532252&r2=1532253&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/graphite/pom.xml (original) +++ commons/sandbox/monitoring/trunk/graphite/pom.xml Tue Oct 15 09:04:54 2013 @@ -32,7 +32,7 @@ <dependencies> <dependency> <groupId>org.apache.geronimo.specs</groupId> - <artifactId>geronimo-servlet_2.5_spec</artifactId> + <artifactId>geronimo-servlet_3.0_spec</artifactId> </dependency> <dependency> Modified: commons/sandbox/monitoring/trunk/pom.xml URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/pom.xml?rev=1532253&r1=1532252&r2=1532253&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/pom.xml (original) +++ commons/sandbox/monitoring/trunk/pom.xml Tue Oct 15 09:04:54 2013 @@ -157,8 +157,8 @@ </dependency> <dependency> <groupId>org.apache.geronimo.specs</groupId> - <artifactId>geronimo-servlet_2.5_spec</artifactId> - <version>1.2</version> + <artifactId>geronimo-servlet_3.0_spec</artifactId> + <version>1.0</version> <scope>provided</scope> </dependency> <dependency> Modified: commons/sandbox/monitoring/trunk/reporting/pom.xml URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/pom.xml?rev=1532253&r1=1532252&r2=1532253&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/pom.xml (original) +++ commons/sandbox/monitoring/trunk/reporting/pom.xml Tue Oct 15 09:04:54 2013 @@ -37,7 +37,7 @@ <dependencies> <dependency> <groupId>org.apache.geronimo.specs</groupId> - <artifactId>geronimo-servlet_2.5_spec</artifactId> + <artifactId>geronimo-servlet_3.0_spec</artifactId> </dependency> <dependency> <groupId>org.apache.commons.monitoring</groupId> 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=1532253&r1=1532252&r2=1532253&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 Oct 15 09:04:54 2013 @@ -51,14 +51,14 @@ import java.util.regex.Pattern; public class MonitoringController implements Filter { private final Map<String, byte[]> cachedResources = new ConcurrentHashMap<String, byte[]>(); private final Map<Pattern, Invoker> invokers = new HashMap<Pattern, Invoker>(); - private String mapping; + private String mapping = null; private ClassLoader classloader; private Invoker defaultInvoker; @Override public void init(final FilterConfig config) throws ServletException { classloader = Thread.currentThread().getContextClassLoader(); - initMapping(config); + initMapping(config.getInitParameter("monitoring-mapping")); Templates.init(config.getServletContext().getContextPath(), mapping); initHandlers(); } @@ -79,13 +79,23 @@ public class MonitoringController implem } } - private void initMapping(FilterConfig config) { - mapping = config.getInitParameter("monitoring-mapping"); - if (mapping == null) { + public void setMapping(final String mapping) { + initMapping(mapping); + } + + private void initMapping(final String value) { + if (mapping != null) { // already done, surely the initializer + return; + } + + if (value == null) { mapping = ""; - } else if (!mapping.startsWith("/")) { + } else if (!value.startsWith("/")) { mapping = "/" + mapping; + } else { + mapping = value; } + if (mapping.endsWith("/")) { mapping = mapping.substring(0, mapping.length() - 1); } Added: commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/registration/MonitoringReportingInitializer.java URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/registration/MonitoringReportingInitializer.java?rev=1532253&view=auto ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/registration/MonitoringReportingInitializer.java (added) +++ commons/sandbox/monitoring/trunk/reporting/src/main/java/org/apache/commons/monitoring/reporting/web/registration/MonitoringReportingInitializer.java Tue Oct 15 09:04:54 2013 @@ -0,0 +1,52 @@ +/* + * 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.registration; + +import org.apache.commons.monitoring.configuration.Configuration; +import org.apache.commons.monitoring.reporting.web.MonitoringController; + +import javax.servlet.DispatcherType; +import javax.servlet.ServletContainerInitializer; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import java.util.EnumSet; +import java.util.Set; + +public class MonitoringReportingInitializer implements ServletContainerInitializer { + @Override + public void onStartup(final Set<Class<?>> classes, final ServletContext ctx) throws ServletException { + final String activated = ctx.getInitParameter(Configuration.COMMONS_MONITORING_PREFIX + "reporting.activated"); + if ("false".equalsIgnoreCase(activated)) { + return; + } + + String mapping = ctx.getInitParameter(Configuration.COMMONS_MONITORING_PREFIX + "reporting.mapping"); + if (mapping == null) { + mapping = "/monitoring"; + } + if (mapping.endsWith("*")) { + mapping = mapping.substring(0, mapping.length() - 1); + } + if (mapping.endsWith("/")) { + mapping = mapping.substring(0, mapping.length() - 1); + } + + final MonitoringController controller = new MonitoringController(); + controller.setMapping(mapping); + ctx.addFilter("commons-monitoring-reporting", controller).addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), true, mapping + "/*"); + } +} Added: commons/sandbox/monitoring/trunk/reporting/src/main/resources/META-INF/services/javax.servlet.ServletContainerInitializer URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/reporting/src/main/resources/META-INF/services/javax.servlet.ServletContainerInitializer?rev=1532253&view=auto ============================================================================== --- commons/sandbox/monitoring/trunk/reporting/src/main/resources/META-INF/services/javax.servlet.ServletContainerInitializer (added) +++ commons/sandbox/monitoring/trunk/reporting/src/main/resources/META-INF/services/javax.servlet.ServletContainerInitializer Tue Oct 15 09:04:54 2013 @@ -0,0 +1 @@ +org.apache.commons.monitoring.reporting.web.registration.MonitoringReportingInitializer Modified: commons/sandbox/monitoring/trunk/src/site/markdown/reporting.md URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/src/site/markdown/reporting.md?rev=1532253&r1=1532252&r2=1532253&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/src/site/markdown/reporting.md (original) +++ commons/sandbox/monitoring/trunk/src/site/markdown/reporting.md Tue Oct 15 09:04:54 2013 @@ -58,6 +58,11 @@ you can embed it. You'll need to update </web-app> +Note: in a servlet 3.0 container you can just configure it through init parameters: + +* `org.apache.commons.monitoring.reporting.activated`: boolean activating/deactivating the reporting GUI +* `org.apache.commons.monitoring.reporting.mapping`: the url mapping of the GUI + ## Usage Once started you'll arrive on the home page which should look like: Modified: commons/sandbox/monitoring/trunk/web/pom.xml URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/web/pom.xml?rev=1532253&r1=1532252&r2=1532253&view=diff ============================================================================== --- commons/sandbox/monitoring/trunk/web/pom.xml (original) +++ commons/sandbox/monitoring/trunk/web/pom.xml Tue Oct 15 09:04:54 2013 @@ -38,7 +38,7 @@ </dependency> <dependency> <groupId>org.apache.geronimo.specs</groupId> - <artifactId>geronimo-servlet_2.5_spec</artifactId> + <artifactId>geronimo-servlet_3.0_spec</artifactId> </dependency> <dependency>