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/08/01 11:02:57 UTC

svn commit: r1509129 - in /commons/sandbox/monitoring/trunk/spring: ./ src/main/java/org/apache/commons/monitoring/spring/ src/main/java/org/apache/commons/monitoring/spring/aop/ src/main/java/org/apache/commons/monitoring/spring/config/ src/test/java/...

Author: rmannibucau
Date: Thu Aug  1 09:02:57 2013
New Revision: 1509129

URL: http://svn.apache.org/r1509129
Log:
adding a basic test for spring module

Added:
    commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/AopaliancePerformanceInterceptor.java
      - copied, changed from r1509112, commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/aop/AopaliancePerformanceInterceptor.java
    commons/sandbox/monitoring/trunk/spring/src/test/java/org/
    commons/sandbox/monitoring/trunk/spring/src/test/java/org/apache/
    commons/sandbox/monitoring/trunk/spring/src/test/java/org/apache/commons/
    commons/sandbox/monitoring/trunk/spring/src/test/java/org/apache/commons/monitoring/
    commons/sandbox/monitoring/trunk/spring/src/test/java/org/apache/commons/monitoring/spring/
    commons/sandbox/monitoring/trunk/spring/src/test/java/org/apache/commons/monitoring/spring/SpringMonitoringTest.java
    commons/sandbox/monitoring/trunk/spring/src/test/java/org/apache/commons/monitoring/spring/service/
    commons/sandbox/monitoring/trunk/spring/src/test/java/org/apache/commons/monitoring/spring/service/MyService.java
    commons/sandbox/monitoring/trunk/spring/src/test/resources/monitoring.xml
Removed:
    commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/AspectJMonitoringAutoProxyCreator.java
    commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/MonitoringAdviceFactory.java
    commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/aop/
    commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/config/
Modified:
    commons/sandbox/monitoring/trunk/spring/pom.xml
    commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/BeanNameMonitoringAutoProxyCreator.java
    commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/PointcutMonitoringAutoProxyCreator.java

Modified: commons/sandbox/monitoring/trunk/spring/pom.xml
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/spring/pom.xml?rev=1509129&r1=1509128&r2=1509129&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/spring/pom.xml (original)
+++ commons/sandbox/monitoring/trunk/spring/pom.xml Thu Aug  1 09:02:57 2013
@@ -23,7 +23,6 @@
     <version>1.0-SNAPSHOT</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
-  <groupId>org.apache.commons.monitoring</groupId>
   <artifactId>commons-monitoring-spring</artifactId>
   <name>Commons Monitoring (Sandbox) :: Spring Integration</name>
 
@@ -34,12 +33,7 @@
   <dependencies>
     <dependency>
       <groupId>org.springframework</groupId>
-      <artifactId>spring-context</artifactId>
-      <version>${spring.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.springframework</groupId>
-      <artifactId>spring-beans</artifactId>
+      <artifactId>spring-aop</artifactId>
       <version>${spring.version}</version>
     </dependency>
     <dependency>
@@ -48,18 +42,7 @@
     </dependency>
     <dependency>
       <groupId>org.apache.commons.monitoring</groupId>
-      <artifactId>commons-monitoring-instrumentation</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.springframework</groupId>
-      <artifactId>spring-aop</artifactId>
-      <version>${spring.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.springframework</groupId>
-      <artifactId>spring-web</artifactId>
-      <version>${spring.version}</version>
-      <optional>true</optional>
+      <artifactId>commons-monitoring-aop</artifactId>
     </dependency>
     <dependency>
       <groupId>aopalliance</groupId>
@@ -67,12 +50,22 @@
       <version>1.0</version>
       <optional>true</optional>
     </dependency>
+
     <dependency>
-      <groupId>javax.servlet</groupId>
-      <artifactId>servlet-api</artifactId>
-      <version>2.3</version>
-      <scope>provided</scope>
-      <optional>true</optional>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-context</artifactId>
+      <version>${spring.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-test</artifactId>
+      <version>${spring.version}</version>
+      <scope>test</scope>
     </dependency>
   </dependencies>
 </project>
\ No newline at end of file

Copied: commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/AopaliancePerformanceInterceptor.java (from r1509112, commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/aop/AopaliancePerformanceInterceptor.java)
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/AopaliancePerformanceInterceptor.java?p2=commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/AopaliancePerformanceInterceptor.java&p1=commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/aop/AopaliancePerformanceInterceptor.java&r1=1509112&r2=1509129&rev=1509129&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/aop/AopaliancePerformanceInterceptor.java (original)
+++ commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/AopaliancePerformanceInterceptor.java Thu Aug  1 09:02:57 2013
@@ -15,39 +15,30 @@
  * limitations under the License.
  */
 
-package org.apache.commons.monitoring.spring.aop;
+package org.apache.commons.monitoring.spring;
 
 import org.aopalliance.intercept.MethodInterceptor;
 import org.aopalliance.intercept.MethodInvocation;
-import org.apache.commons.monitoring.instrumentation.aop.AbstractPerformanceInterceptor;
+import org.apache.commons.monitoring.aop.AbstractPerformanceInterceptor;
 
 /**
  * Spring-aop implementation of PerformanceInterceptor.
  *
  * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
  */
-public class AopaliancePerformanceInterceptor
-    extends AbstractPerformanceInterceptor<MethodInvocation>
-    implements MethodInterceptor {
-
-    /**
-     * {@inheritDoc}
-     *
-     * @see org.aopalliance.intercept.MethodInterceptor#invoke(org.aopalliance.intercept.MethodInvocation)
-     */
-    public Object invoke(MethodInvocation invocation)
-        throws Throwable {
+public class AopaliancePerformanceInterceptor extends AbstractPerformanceInterceptor<MethodInvocation> implements MethodInterceptor {
+    @Override
+    public Object invoke(final MethodInvocation invocation) throws Throwable {
         return doInvoke(invocation);
     }
 
     @Override
-    protected String getMonitorName(MethodInvocation invocation) {
-        return getMonitorName(invocation.getMethod());
+    protected String getMonitorName(final MethodInvocation invocation) {
+        return getMonitorName(invocation.getThis(), invocation.getMethod());
     }
 
     @Override
-    protected Object proceed(MethodInvocation invocation)
-        throws Throwable {
+    protected Object proceed(final MethodInvocation invocation) throws Throwable {
         return invocation.proceed();
     }
 

Modified: commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/BeanNameMonitoringAutoProxyCreator.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/BeanNameMonitoringAutoProxyCreator.java?rev=1509129&r1=1509128&r2=1509129&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/BeanNameMonitoringAutoProxyCreator.java (original)
+++ commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/BeanNameMonitoringAutoProxyCreator.java Thu Aug  1 09:02:57 2013
@@ -17,9 +17,8 @@
 
 package org.apache.commons.monitoring.spring;
 
-import org.aopalliance.aop.Advice;
-import org.apache.commons.monitoring.instrumentation.aop.MonitorNameExtractor;
-import org.apache.commons.monitoring.spring.MonitoringAdviceFactory.MonitoringConfigSource;
+import org.apache.commons.monitoring.aop.DefaultMonitorNameExtractor;
+import org.apache.commons.monitoring.aop.MonitorNameExtractor;
 import org.springframework.aop.TargetSource;
 import org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator;
 
@@ -28,23 +27,17 @@ import org.springframework.aop.framework
  *
  * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
  */
-public class BeanNameMonitoringAutoProxyCreator
-    extends BeanNameAutoProxyCreator implements MonitoringConfigSource {
-    private String category;
+public class BeanNameMonitoringAutoProxyCreator extends BeanNameAutoProxyCreator {
+    private String category = "spring";
+    private MonitorNameExtractor monitorNameExtractor = DefaultMonitorNameExtractor.INSTANCE;
 
-    private MonitorNameExtractor monitorNameExtractor;
-
-    /**
-     * {@inheritDoc}
-     *
-     * @see org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator#getAdvicesAndAdvisorsForBean(java.lang.Class,
-     * java.lang.String, org.springframework.aop.TargetSource)
-     */
     @Override
-    protected Object[] getAdvicesAndAdvisorsForBean(Class beanClass, String beanName, TargetSource targetSource) {
+    protected Object[] getAdvicesAndAdvisorsForBean(final Class beanClass, final String beanName, final TargetSource targetSource) {
         if (super.getAdvicesAndAdvisorsForBean(beanClass, beanName, targetSource) != DO_NOT_PROXY) {
-            Advice advice = MonitoringAdviceFactory.getAdvice(this);
-            return new Object[]{advice};
+            final AopaliancePerformanceInterceptor interceptor = new AopaliancePerformanceInterceptor();
+            interceptor.setCategory(category);
+            interceptor.setMonitorNameExtractor(monitorNameExtractor);
+            return new Object[] { interceptor };
         }
         return DO_NOT_PROXY;
     }
@@ -52,14 +45,14 @@ public class BeanNameMonitoringAutoProxy
     /**
      * @param category the category to set
      */
-    public void setCategory(String category) {
+    public void setCategory(final String category) {
         this.category = category;
     }
 
     /**
      * @param monitorNameExtractor the monitorNameExtractor to set
      */
-    public void setMonitorNameExtractor(MonitorNameExtractor monitorNameExtractor) {
+    public void setMonitorNameExtractor(final MonitorNameExtractor monitorNameExtractor) {
         this.monitorNameExtractor = monitorNameExtractor;
     }
 

Modified: commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/PointcutMonitoringAutoProxyCreator.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/PointcutMonitoringAutoProxyCreator.java?rev=1509129&r1=1509128&r2=1509129&view=diff
==============================================================================
--- commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/PointcutMonitoringAutoProxyCreator.java (original)
+++ commons/sandbox/monitoring/trunk/spring/src/main/java/org/apache/commons/monitoring/spring/PointcutMonitoringAutoProxyCreator.java Thu Aug  1 09:02:57 2013
@@ -18,8 +18,8 @@
 package org.apache.commons.monitoring.spring;
 
 import org.aopalliance.aop.Advice;
-import org.apache.commons.monitoring.instrumentation.aop.MonitorNameExtractor;
-import org.apache.commons.monitoring.spring.MonitoringAdviceFactory.MonitoringConfigSource;
+import org.apache.commons.monitoring.aop.DefaultMonitorNameExtractor;
+import org.apache.commons.monitoring.aop.MonitorNameExtractor;
 import org.springframework.aop.Advisor;
 import org.springframework.aop.Pointcut;
 import org.springframework.aop.PointcutAdvisor;
@@ -34,26 +34,20 @@ import java.util.List;
  *
  * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
  */
-public class PointcutMonitoringAutoProxyCreator
-    extends AbstractAdvisorAutoProxyCreator
-    implements MonitoringConfigSource {
-    private String category;
-
-    private MonitorNameExtractor monitorNameExtractor;
-
+public class PointcutMonitoringAutoProxyCreator extends AbstractAdvisorAutoProxyCreator {
+    private String category = "spring";
+    private MonitorNameExtractor monitorNameExtractor = DefaultMonitorNameExtractor.INSTANCE;
     private Pointcut pointcut;
 
-    /**
-     * {@inheritDoc}
-     *
-     * @see org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator#findCandidateAdvisors()
-     */
     @Override
     protected List<Advisor> findCandidateAdvisors() {
-        List<Advisor> adivisors = new ArrayList<Advisor>(1);
+        final AopaliancePerformanceInterceptor interceptor = new AopaliancePerformanceInterceptor();
+        interceptor.setCategory(category);
+        interceptor.setMonitorNameExtractor(monitorNameExtractor);
 
-        PointcutAdvisor adivsor = createPointcutAdvisor(MonitoringAdviceFactory.getAdvice(this));
+        final PointcutAdvisor adivsor = createPointcutAdvisor(interceptor);
 
+        final List<Advisor> adivisors = new ArrayList<Advisor>(1);
         adivisors.add(adivsor);
         return adivisors;
     }
@@ -62,37 +56,22 @@ public class PointcutMonitoringAutoProxy
         return new DefaultPointcutAdvisor(pointcut, advice);
     }
 
-    /**
-     * @param category the category to set
-     */
-    public void setCategory(String category) {
+    public void setCategory(final String category) {
         this.category = category;
     }
 
-    /**
-     * @param monitorNameExtractor the monitorNameExtractor to set
-     */
-    public void setMonitorNameExtractor(MonitorNameExtractor monitorNameExtractor) {
+    public void setMonitorNameExtractor(final MonitorNameExtractor monitorNameExtractor) {
         this.monitorNameExtractor = monitorNameExtractor;
     }
 
-    /**
-     * @param pointcut the pointcut to set
-     */
-    public void setPointcut(Pointcut pointcut) {
+    public void setPointcut(final Pointcut pointcut) {
         this.pointcut = pointcut;
     }
 
-    /**
-     * @return the category
-     */
     public String getCategory() {
         return category;
     }
 
-    /**
-     * @return the monitorNameExtractor
-     */
     public MonitorNameExtractor getMonitorNameExtractor() {
         return monitorNameExtractor;
     }

Added: commons/sandbox/monitoring/trunk/spring/src/test/java/org/apache/commons/monitoring/spring/SpringMonitoringTest.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/spring/src/test/java/org/apache/commons/monitoring/spring/SpringMonitoringTest.java?rev=1509129&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/spring/src/test/java/org/apache/commons/monitoring/spring/SpringMonitoringTest.java (added)
+++ commons/sandbox/monitoring/trunk/spring/src/test/java/org/apache/commons/monitoring/spring/SpringMonitoringTest.java Thu Aug  1 09:02:57 2013
@@ -0,0 +1,42 @@
+/*
+ * 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.spring;
+
+import org.apache.commons.monitoring.Role;
+import org.apache.commons.monitoring.monitors.Monitor;
+import org.apache.commons.monitoring.repositories.Repository;
+import org.apache.commons.monitoring.spring.service.MyService;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import static org.junit.Assert.assertEquals;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration("/monitoring.xml")
+public class SpringMonitoringTest {
+    @Autowired
+    private MyService service;
+
+    @Test
+    public void checkMonitoringIsActivated() {
+        service.doIt();
+        assertEquals(1, Repository.INSTANCE.getMonitor(new Monitor.Key(MyService.class.getName() + ".doIt", "spring")).getCounter(Role.PERFORMANCES).getHits());
+    }
+}

Added: commons/sandbox/monitoring/trunk/spring/src/test/java/org/apache/commons/monitoring/spring/service/MyService.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/spring/src/test/java/org/apache/commons/monitoring/spring/service/MyService.java?rev=1509129&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/spring/src/test/java/org/apache/commons/monitoring/spring/service/MyService.java (added)
+++ commons/sandbox/monitoring/trunk/spring/src/test/java/org/apache/commons/monitoring/spring/service/MyService.java Thu Aug  1 09:02:57 2013
@@ -0,0 +1,23 @@
+/*
+ * 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.spring.service;
+
+public class MyService {
+    public String doIt() {
+        return "ok";
+    }
+}

Added: commons/sandbox/monitoring/trunk/spring/src/test/resources/monitoring.xml
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/trunk/spring/src/test/resources/monitoring.xml?rev=1509129&view=auto
==============================================================================
--- commons/sandbox/monitoring/trunk/spring/src/test/resources/monitoring.xml (added)
+++ commons/sandbox/monitoring/trunk/spring/src/test/resources/monitoring.xml Thu Aug  1 09:02:57 2013
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans
+                           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
+
+  <bean id="service" class="org.apache.commons.monitoring.spring.service.MyService" />
+
+  <bean id="monitoringAdvisor" class="org.apache.commons.monitoring.spring.AopaliancePerformanceInterceptor" />
+
+  <bean class="org.apache.commons.monitoring.spring.BeanNameMonitoringAutoProxyCreator">
+    <property name="beanNames">
+      <list>
+        <value>service</value>
+      </list>
+    </property>
+    <property name="interceptorNames">
+      <list>
+        <value>monitoringAdvisor</value>
+      </list>
+    </property>
+  </bean>
+</beans>
\ No newline at end of file