You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by ts...@apache.org on 2016/03/16 17:56:17 UTC

[03/17] wicket git commit: Wicket Metrics - Time measurement / license header

Wicket Metrics - Time measurement / license header

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

Branch: refs/heads/master
Commit: 5f8b9fe07b6581cebb5f88a2b00e657e292dc31c
Parents: fc85c03
Author: Tobias Soloschenko <ts...@apache.org>
Authored: Thu Mar 10 14:03:19 2016 +0100
Committer: Tobias Soloschenko <ts...@apache.org>
Committed: Wed Mar 16 17:55:09 2016 +0100

----------------------------------------------------------------------
 .../apache/wicket/metrics/WicketMetrics.java    | 54 +++++++++++++++++++-
 .../metrics/aspects/ApplicationAspect.java      | 45 ++++++++++++++--
 .../wicket/metrics/aspects/PageAspect.java      | 16 ++++++
 3 files changed, 108 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/5f8b9fe0/wicket-metrics/src/main/java/org/apache/wicket/metrics/WicketMetrics.java
----------------------------------------------------------------------
diff --git a/wicket-metrics/src/main/java/org/apache/wicket/metrics/WicketMetrics.java b/wicket-metrics/src/main/java/org/apache/wicket/metrics/WicketMetrics.java
index 26314f0..055b07f 100644
--- a/wicket-metrics/src/main/java/org/apache/wicket/metrics/WicketMetrics.java
+++ b/wicket-metrics/src/main/java/org/apache/wicket/metrics/WicketMetrics.java
@@ -1,7 +1,24 @@
+/*
+ * 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.wicket.metrics;
 
 import com.codahale.metrics.JmxReporter;
 import com.codahale.metrics.MetricRegistry;
+import com.codahale.metrics.Timer.Context;
 
 /**
  * Base aspect provides access to the metric registry
@@ -16,7 +33,7 @@ public class WicketMetrics
 
 	private static boolean enabled = true;
 
-	private static final String JMX_PREFIX = "ApacheWicket/";
+	private static final String PREFIX = "ApacheWicket/";
 
 	/**
 	 * Gets the metric registry
@@ -43,7 +60,40 @@ public class WicketMetrics
 	{
 		if (WicketMetrics.enabled)
 		{
-			getMetricRegistry().meter(JMX_PREFIX + name).mark();
+			getMetricRegistry().meter(PREFIX + name).mark();
+		}
+	}
+
+	/**
+	 * Gets a timer context
+	 * 
+	 * @param name
+	 *            the name of the timer context
+	 * @return the timer context
+	 */
+	protected Context context(String name)
+	{
+		if (WicketMetrics.enabled)
+		{
+			return getMetricRegistry().timer(PREFIX + name).time();
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	/**
+	 * Stops the contex quietly
+	 * 
+	 * @param context
+	 *            the context to stop
+	 */
+	public void stopQuietly(Context context)
+	{
+		if (context != null)
+		{
+			context.stop();
 		}
 	}
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/5f8b9fe0/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/ApplicationAspect.java
----------------------------------------------------------------------
diff --git a/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/ApplicationAspect.java b/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/ApplicationAspect.java
index 2f56e50..10d51a8 100644
--- a/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/ApplicationAspect.java
+++ b/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/ApplicationAspect.java
@@ -1,8 +1,27 @@
+/*
+ * 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.wicket.metrics.aspects;
 
 import org.apache.wicket.metrics.WicketMetrics;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
 import org.aspectj.lang.annotation.Aspect;
-import org.aspectj.lang.annotation.Before;
+
+import com.codahale.metrics.Timer.Context;
 
 /**
  * Aspect to handle basic web application information
@@ -14,11 +33,27 @@ public class ApplicationAspect extends WicketMetrics
 {
 
 	/**
-	 * Collects data how often a request has been made against the web app
+	 * Collects data how often a request has been made against the webapp and counts the time how
+	 * long the request remains
+	 * 
+	 * @param joinPoint
+	 *            the joinPoint to be proceed
+	 * @return returns the boolean of the processRequest method
+	 * 
+	 * @throws Throwable
+	 *             might occure while invoking process request
 	 */
-	@Before("call(* org.apache.wicket.protocol.http.WicketFilter.processRequest(..))")
-	public void beforeRequestProcessed()
+	@Around("execution(* org.apache.wicket.protocol.http.WicketFilter.processRequest(..))")
+	public Object aroundRequestProcessed(ProceedingJoinPoint joinPoint) throws Throwable
 	{
-		mark("core/application/request");
+		Context context = context("core/application/request");
+		try
+		{
+			return joinPoint.proceed();
+		}
+		finally
+		{
+			stopQuietly(context);
+		}
 	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/5f8b9fe0/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/PageAspect.java
----------------------------------------------------------------------
diff --git a/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/PageAspect.java b/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/PageAspect.java
index 4e85a36..1f03d35 100644
--- a/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/PageAspect.java
+++ b/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/PageAspect.java
@@ -1,3 +1,19 @@
+/*
+ * 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.wicket.metrics.aspects;
 
 import org.apache.wicket.metrics.WicketMetrics;