You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2016/03/28 09:27:46 UTC

wicket git commit: WiCKET-6127 WICKET-6128 Use IInitializer and ServletContext to store the MetricRegistry

Repository: wicket
Updated Branches:
  refs/heads/master 22df12f14 -> 6078966e6


WiCKET-6127 WICKET-6128 Use IInitializer and ServletContext to store the MetricRegistry

WIP


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/6078966e
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/6078966e
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/6078966e

Branch: refs/heads/master
Commit: 6078966e604e6b61846a182cd3af0c729e45106d
Parents: 22df12f
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Mon Mar 28 09:26:51 2016 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Mon Mar 28 09:26:51 2016 +0200

----------------------------------------------------------------------
 .../org/apache/wicket/metrics/Initializer.java  | 40 ++++++++++++++++++++
 .../aspects/session/SessionCountListener.java   | 32 ++++++++++++----
 .../services/org.apache.wicket.IInitializer     |  1 +
 3 files changed, 65 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/6078966e/wicket-experimental/wicket-metrics/src/main/java/org/apache/wicket/metrics/Initializer.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-metrics/src/main/java/org/apache/wicket/metrics/Initializer.java b/wicket-experimental/wicket-metrics/src/main/java/org/apache/wicket/metrics/Initializer.java
new file mode 100644
index 0000000..7c3a451
--- /dev/null
+++ b/wicket-experimental/wicket-metrics/src/main/java/org/apache/wicket/metrics/Initializer.java
@@ -0,0 +1,40 @@
+package org.apache.wicket.metrics;
+
+import javax.servlet.ServletContext;
+
+import com.codahale.metrics.MetricRegistry;
+import org.apache.wicket.Application;
+import org.apache.wicket.IInitializer;
+import org.apache.wicket.MetaDataKey;
+import org.apache.wicket.protocol.http.WebApplication;
+
+/**
+ * Creates an instance of {@link MetricRegistry} and saves it in the
+ * {@link Application#getMetaData(MetaDataKey) meta data} and in the
+ * {@link ServletContext}
+ */
+public class Initializer implements IInitializer
+{
+	public static final String METRICS_SERVLET_REGISTRY = "com.codahale.metrics.servlets.MetricsServlet.registry";
+
+	@Override
+	public void init(Application application)
+	{
+		WebApplication webApplication = (WebApplication) application;
+		MetricRegistry metricRegistry = new MetricRegistry();
+		application.setMetaData(WicketMetrics.METRIC_REGISTRY, metricRegistry);
+
+		ServletContext servletContext = webApplication.getServletContext();
+		servletContext.setAttribute(METRICS_SERVLET_REGISTRY, metricRegistry);
+	}
+
+	@Override
+	public void destroy(Application application)
+	{
+		WebApplication webApplication = (WebApplication) application;
+		webApplication.setMetaData(WicketMetrics.METRIC_REGISTRY, null);
+
+		ServletContext servletContext = webApplication.getServletContext();
+		servletContext.setAttribute(METRICS_SERVLET_REGISTRY, null);
+	}
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/6078966e/wicket-experimental/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/session/SessionCountListener.java
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/session/SessionCountListener.java b/wicket-experimental/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/session/SessionCountListener.java
index 6aacfee..3f89ca3 100644
--- a/wicket-experimental/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/session/SessionCountListener.java
+++ b/wicket-experimental/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/session/SessionCountListener.java
@@ -16,10 +16,15 @@
  */
 package org.apache.wicket.metrics.aspects.session;
 
+import static org.apache.wicket.metrics.Initializer.METRICS_SERVLET_REGISTRY;
+
+import javax.servlet.ServletContext;
 import javax.servlet.annotation.WebListener;
 import javax.servlet.http.HttpSessionEvent;
 import javax.servlet.http.HttpSessionListener;
 
+import com.codahale.metrics.MetricRegistry;
+
 
 /**
  * Listener that counts the current active sessions
@@ -30,36 +35,47 @@ import javax.servlet.http.HttpSessionListener;
 @WebListener
 public class SessionCountListener implements HttpSessionListener
 {
-
 	@Override
 	public void sessionDestroyed(HttpSessionEvent event)
 	{
-		dec(event);
+		ServletContext servletContext = event.getSession().getServletContext();
+		MetricRegistry metricRegistry = (MetricRegistry) servletContext.getAttribute(METRICS_SERVLET_REGISTRY);
+		if (metricRegistry != null)
+		{
+			dec(event, metricRegistry);
+		}
 	}
 
 	@Override
 	public void sessionCreated(HttpSessionEvent event)
 	{
-		inc(event);
+		ServletContext servletContext = event.getSession().getServletContext();
+		MetricRegistry metricRegistry = (MetricRegistry) servletContext.getAttribute(METRICS_SERVLET_REGISTRY);
+		if (metricRegistry != null)
+		{
+			inc(event, metricRegistry);
+		}
 	}
 
 	/**
 	 * Used to wire an aspect around
-	 * 
+	 *
 	 * @param event the http session event
+	 * @param metricRegistry
 	 */
-	public void dec(HttpSessionEvent event)
+	public void dec(HttpSessionEvent event, MetricRegistry metricRegistry)
 	{
 		// NOOP for aspect usage
 	}
 	
 	/**
 	 * Used to wire an aspect around
-	 * 
+	 *
 	 * @param event the http session event
+	 * @param metricRegistry
 	 */
-	public void inc(HttpSessionEvent event)
+	public void inc(HttpSessionEvent event, MetricRegistry metricRegistry)
 	{
 		// NOOP for aspect usage
 	}
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/6078966e/wicket-experimental/wicket-metrics/src/main/resources/META-INF/services/org.apache.wicket.IInitializer
----------------------------------------------------------------------
diff --git a/wicket-experimental/wicket-metrics/src/main/resources/META-INF/services/org.apache.wicket.IInitializer b/wicket-experimental/wicket-metrics/src/main/resources/META-INF/services/org.apache.wicket.IInitializer
new file mode 100644
index 0000000..70dfbbd
--- /dev/null
+++ b/wicket-experimental/wicket-metrics/src/main/resources/META-INF/services/org.apache.wicket.IInitializer
@@ -0,0 +1 @@
+org.apache.wicket.metrics.Initializer