You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ni...@apache.org on 2009/02/02 15:57:20 UTC

svn commit: r739997 - in /commons/sandbox/monitoring/branches/modules: core/src/main/java/org/apache/commons/monitoring/ core/src/main/java/org/apache/commons/monitoring/stopwatches/ reporting/src/main/java/org/apache/commons/monitoring/reporting/ spri...

Author: nicolas
Date: Mon Feb  2 14:57:19 2009
New Revision: 739997

URL: http://svn.apache.org/viewvc?rev=739997&view=rev
Log:
API change : StopWatch returns itself to allow method call chaining

Added:
    commons/sandbox/monitoring/branches/modules/spring/src/main/java/org/apache/commons/monitoring/spring/config/
    commons/sandbox/monitoring/branches/modules/spring/src/main/java/org/apache/commons/monitoring/spring/config/RepositoryFactoryBean.java
    commons/sandbox/monitoring/branches/modules/spring/src/main/java/org/apache/commons/monitoring/spring/config/WebappRepositoryFactoryBean.java
Modified:
    commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/StopWatch.java
    commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/stopwatches/DefaultStopWatch.java
    commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/stopwatches/SimpleStopWatch.java
    commons/sandbox/monitoring/branches/modules/reporting/src/main/java/org/apache/commons/monitoring/reporting/AbstractPeriodicLogger.java
    commons/sandbox/monitoring/branches/modules/spring/pom.xml

Modified: commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/StopWatch.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/StopWatch.java?rev=739997&r1=739996&r2=739997&view=diff
==============================================================================
--- commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/StopWatch.java (original)
+++ commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/StopWatch.java Mon Feb  2 14:57:19 2009
@@ -37,18 +37,19 @@
      * Temporary stop the StopWatch. Elapsed time calculation will not include
      * time spent in paused mode.
      */
-    public abstract void pause();
+    public abstract StopWatch pause();
 
     /**
      * Resume the StopWatch after a pause.
      */
-    public abstract void resume();
+    public abstract StopWatch resume();
 
     /**
      * Stop monitoring the process. A StopWatch created with
      * {@link #start(Monitor)} cannot be re-used after stopped has been called.
+     * @return TODO
      */
-    public abstract void stop();
+    public abstract StopWatch stop();
 
     /**
      * Convenience method to stop or cancel a Stopwatch depending on success of
@@ -57,7 +58,7 @@
      * @param canceled
      * @return time elapsed since the probe has been started
      */
-    public abstract void stop( boolean canceled );
+    public abstract StopWatch stop( boolean canceled );
 
     /**
      * Cancel monitoring. Elapsed time will not be computed and will not be
@@ -72,7 +73,7 @@
      * In any way, the probe will still report thread concurrency even if
      * canceled.
      */
-    public abstract void cancel();
+    public abstract StopWatch cancel();
 
     /**
      * @return <code>true</code> if the StopWatch has been stopped

Modified: commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/stopwatches/DefaultStopWatch.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/stopwatches/DefaultStopWatch.java?rev=739997&r1=739996&r2=739997&view=diff
==============================================================================
--- commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/stopwatches/DefaultStopWatch.java (original)
+++ commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/stopwatches/DefaultStopWatch.java Mon Feb  2 14:57:19 2009
@@ -1,7 +1,6 @@
 package org.apache.commons.monitoring.stopwatches;
 
 import org.apache.commons.monitoring.Monitor;
-import org.apache.commons.monitoring.StopWatch;
 import org.apache.commons.monitoring.Unit;
 
 /**
@@ -10,7 +9,6 @@
  * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
  */
 public class DefaultStopWatch extends SimpleStopWatch
-    implements StopWatch
 {
 
     /**

Modified: commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/stopwatches/SimpleStopWatch.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/stopwatches/SimpleStopWatch.java?rev=739997&r1=739996&r2=739997&view=diff
==============================================================================
--- commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/stopwatches/SimpleStopWatch.java (original)
+++ commons/sandbox/monitoring/branches/modules/core/src/main/java/org/apache/commons/monitoring/stopwatches/SimpleStopWatch.java Mon Feb  2 14:57:19 2009
@@ -1,6 +1,7 @@
 package org.apache.commons.monitoring.stopwatches;
 
 import org.apache.commons.monitoring.Monitor;
+import org.apache.commons.monitoring.StopWatch;
 import org.apache.commons.monitoring.Unit;
 
 /**
@@ -9,6 +10,7 @@
  * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
  */
 public class SimpleStopWatch
+    implements StopWatch
 {
     /** Monitor that is notified of process execution state */
     public final Monitor monitor;
@@ -87,13 +89,14 @@
      * 
      * @see org.apache.commons.monitoring.StopWatch#pause()
      */
-    public void pause()
+    public StopWatch pause()
     {
         if ( !paused && !stoped )
         {
             stopedAt = nanotime();
             paused = true;
         }
+        return this;
     }
 
     /**
@@ -101,7 +104,7 @@
      * 
      * @see org.apache.commons.monitoring.StopWatch#resume()
      */
-    public void resume()
+    public StopWatch resume()
     {
         if ( paused && !stoped )
         {
@@ -109,14 +112,16 @@
             paused = false;
             stopedAt = 0;
         }
+        return this;
     }
 
     /**
      * {@inheritDoc}
      * 
+     * @return TODO
      * @see org.apache.commons.monitoring.StopWatch#stop()
      */
-    public void stop()
+    public StopWatch stop()
     {
         if ( !stoped )
         {
@@ -129,6 +134,7 @@
             stoped = true;
             doStop();
         }
+        return this;
     }
 
     protected void doStop()
@@ -141,7 +147,7 @@
      * 
      * @see org.apache.commons.monitoring.StopWatch#stop(boolean)
      */
-    public void stop( boolean canceled )
+    public StopWatch stop( boolean canceled )
     {
         if ( canceled )
         {
@@ -151,6 +157,7 @@
         {
             stop();
         }
+        return this;
     }
 
     /**
@@ -158,13 +165,14 @@
      * 
      * @see org.apache.commons.monitoring.StopWatch#cancel()
      */
-    public void cancel()
+    public StopWatch cancel()
     {
         if ( !stoped )
         {
             stoped = true;
             doCancel();
         }
+        return this;
     }
 
     protected void doCancel()

Modified: commons/sandbox/monitoring/branches/modules/reporting/src/main/java/org/apache/commons/monitoring/reporting/AbstractPeriodicLogger.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/branches/modules/reporting/src/main/java/org/apache/commons/monitoring/reporting/AbstractPeriodicLogger.java?rev=739997&r1=739996&r2=739997&view=diff
==============================================================================
--- commons/sandbox/monitoring/branches/modules/reporting/src/main/java/org/apache/commons/monitoring/reporting/AbstractPeriodicLogger.java (original)
+++ commons/sandbox/monitoring/branches/modules/reporting/src/main/java/org/apache/commons/monitoring/reporting/AbstractPeriodicLogger.java Mon Feb  2 14:57:19 2009
@@ -49,13 +49,26 @@
      */
     public AbstractPeriodicLogger( int period, Repository.Observable repository )
     {
+        this();
         this.repository = repository;
         this.period = period;
+    }
+
+    public AbstractPeriodicLogger()
+    {
         this.scheduler = Executors.newSingleThreadScheduledExecutor();
     }
 
     public void init()
     {
+        if ( period <= 0 )
+        {
+            throw new IllegalStateException( "A positive period must be set" );
+        }
+        if ( repository == null )
+        {
+            throw new IllegalStateException( "A Repository must be set" );
+        }
         observeRepositoryForPeriod();
         scheduler.scheduleAtFixedRate( new Runnable()
         {
@@ -97,4 +110,14 @@
      * @param observeRepositoryForPeriod
      */
     protected abstract void log( Repository repositoryForPeriod );
+
+    public void setRepository( Repository.Observable repository )
+    {
+        this.repository = repository;
+    }
+
+    public void setPeriod( int period )
+    {
+        this.period = period;
+    }
 }

Modified: commons/sandbox/monitoring/branches/modules/spring/pom.xml
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/branches/modules/spring/pom.xml?rev=739997&r1=739996&r2=739997&view=diff
==============================================================================
--- commons/sandbox/monitoring/branches/modules/spring/pom.xml (original)
+++ commons/sandbox/monitoring/branches/modules/spring/pom.xml Mon Feb  2 14:57:19 2009
@@ -29,5 +29,18 @@
   		<artifactId>spring-aop</artifactId>
   		<version>2.5.5</version>
   	</dependency>
+  	<dependency>
+  		<groupId>org.springframework</groupId>
+  		<artifactId>spring-web</artifactId>
+  		<version>2.5.5</version>
+  		<optional>true</optional>
+  	</dependency>
+  	<dependency>
+  		<groupId>javax.servlet</groupId>
+  		<artifactId>servlet-api</artifactId>
+  		<version>2.3</version>
+  		<scope>provided</scope>
+  		<optional>true</optional>
+  	</dependency>
   </dependencies>
 </project>
\ No newline at end of file

Added: commons/sandbox/monitoring/branches/modules/spring/src/main/java/org/apache/commons/monitoring/spring/config/RepositoryFactoryBean.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/branches/modules/spring/src/main/java/org/apache/commons/monitoring/spring/config/RepositoryFactoryBean.java?rev=739997&view=auto
==============================================================================
--- commons/sandbox/monitoring/branches/modules/spring/src/main/java/org/apache/commons/monitoring/spring/config/RepositoryFactoryBean.java (added)
+++ commons/sandbox/monitoring/branches/modules/spring/src/main/java/org/apache/commons/monitoring/spring/config/RepositoryFactoryBean.java Mon Feb  2 14:57:19 2009
@@ -0,0 +1,71 @@
+package org.apache.commons.monitoring.spring.config;
+
+import org.apache.commons.monitoring.Repository;
+import org.apache.commons.monitoring.repositories.DefaultRepository;
+import org.springframework.beans.factory.FactoryBean;
+import org.springframework.beans.factory.InitializingBean;
+
+/**
+ * @author ndeloof
+ *
+ */
+public class RepositoryFactoryBean
+    implements FactoryBean, InitializingBean
+{
+    /** The object build by this factoryBean */
+    private Repository repository;
+
+    /** The configured implementation class */
+    private Class<? extends Repository> clazz = DefaultRepository.class;
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @see org.springframework.beans.factory.FactoryBean#getObject()
+     */
+    public Object getObject()
+        throws Exception
+    {
+        return repository;
+    }
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @see org.springframework.beans.factory.FactoryBean#getObjectType()
+     */
+    public Class<? extends Repository> getObjectType()
+    {
+        return clazz;
+    }
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @see org.springframework.beans.factory.FactoryBean#isSingleton()
+     */
+    public boolean isSingleton()
+    {
+        return true;
+    }
+
+    /**
+     * @param clazz Repository implementation to use
+     */
+    public void setImplementation( Class<? extends Repository> clazz )
+    {
+        this.clazz = clazz;
+    }
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet()
+     */
+    public void afterPropertiesSet()
+        throws Exception
+    {
+        this.repository = clazz.newInstance();
+    }
+
+}
\ No newline at end of file

Added: commons/sandbox/monitoring/branches/modules/spring/src/main/java/org/apache/commons/monitoring/spring/config/WebappRepositoryFactoryBean.java
URL: http://svn.apache.org/viewvc/commons/sandbox/monitoring/branches/modules/spring/src/main/java/org/apache/commons/monitoring/spring/config/WebappRepositoryFactoryBean.java?rev=739997&view=auto
==============================================================================
--- commons/sandbox/monitoring/branches/modules/spring/src/main/java/org/apache/commons/monitoring/spring/config/WebappRepositoryFactoryBean.java (added)
+++ commons/sandbox/monitoring/branches/modules/spring/src/main/java/org/apache/commons/monitoring/spring/config/WebappRepositoryFactoryBean.java Mon Feb  2 14:57:19 2009
@@ -0,0 +1,61 @@
+/*
+ * 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.config;
+
+import javax.servlet.ServletContext;
+
+import org.apache.commons.monitoring.instrumentation.servlet.ServletContextUtil;
+import org.springframework.web.context.ServletContextAware;
+
+/**
+ * Creates monitored proxies for beans that match a pointcut.
+ * 
+ * @author <a href="mailto:nicolas@apache.org">Nicolas De Loof</a>
+ */
+public class WebappRepositoryFactoryBean extends RepositoryFactoryBean
+    implements ServletContextAware
+{
+    /** The web application context */
+    private ServletContext servletContext;
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @see org.springframework.web.context.ServletContextAware#setServletContext(javax.servlet.ServletContext)
+     */
+    public void setServletContext( ServletContext servletContext )
+    {
+        this.servletContext = servletContext;
+    };
+
+    /**
+     * {@inheritDoc}
+     * 
+     * @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet()
+     */
+    public void afterPropertiesSet()
+        throws Exception
+    {
+        super.afterPropertiesSet();
+        if ( servletContext != null )
+        {
+            servletContext.setAttribute( ServletContextUtil.REPOSITORY_KEY, getObject() );
+        }
+    }
+
+}