You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by Benedikt Ritter <be...@gmail.com> on 2013/10/25 09:58:17 UTC

Re: svn commit: r1535555 - in /commons/proper/lang/trunk/src: changes/changes.xml main/java/org/apache/commons/lang3/time/StopWatch.java test/java/org/apache/commons/lang3/time/StopWatchTest.java

Hi Hen,


2013/10/24 <ba...@apache.org>

> Author: bayard
> Date: Thu Oct 24 21:23:40 2013
> New Revision: 1535555
>
> URL: http://svn.apache.org/r1535555
> Log:
> Applying Sebb's patch from LANG-774 - adding isStarted, isSuspended and
> isStopped to StopWatch
>
> Modified:
>     commons/proper/lang/trunk/src/changes/changes.xml
>
> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/time/StopWatch.java
>
> commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/time/StopWatchTest.java
>
> Modified: commons/proper/lang/trunk/src/changes/changes.xml
> URL:
> http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/changes/changes.xml?rev=1535555&r1=1535554&r2=1535555&view=diff
>
> ==============================================================================
> --- commons/proper/lang/trunk/src/changes/changes.xml (original)
> +++ commons/proper/lang/trunk/src/changes/changes.xml Thu Oct 24 21:23:40
> 2013
> @@ -22,6 +22,7 @@
>    <body>
>
>    <release version="3.2" date="TBA" description="Next release">
> +    <action issue="LANG-774" type="add" due-to="Erhan Bagdemir">Added
> isStarted, isSuspended and isStopped to StopWatch</action>
>

Either the due-to or the commit log is wrong :-)


>      <action issue="LANG-917" type="fix" due-to="Arne Burmeister">Fixed
> exception when combining custom and choice format in
> ExtendedMessageFormat</action>
>      <action issue="LANG-848" type="add" due-to="Alexander Muthmann">Added
> StringUtils.isBlank/isEmpty CharSequence... methods</action>
>      <action issue="LANG-926" type="add" dev="ggregory">Added
> ArrayUtils.reverse(array, from, to) methods</action>
>
> Modified:
> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/time/StopWatch.java
> URL:
> http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/time/StopWatch.java?rev=1535555&r1=1535554&r2=1535555&view=diff
>
> ==============================================================================
> ---
> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/time/StopWatch.java
> (original)
> +++
> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/time/StopWatch.java
> Thu Oct 24 21:23:40 2013
> @@ -58,30 +58,86 @@ package org.apache.commons.lang3.time;
>  public class StopWatch {
>
>      private static final long NANO_2_MILLIS = 1000000L;
> +
> +    /**
> +     * Enumeration type which indicates the status of stopwatch.
> +     */
> +    private enum State {
>
> -    // running states
> -    private static final int STATE_UNSTARTED = 0;
> -
> -    private static final int STATE_RUNNING = 1;
> -
> -    private static final int STATE_STOPPED = 2;
> -
> -    private static final int STATE_SUSPENDED = 3;
> -
> -    // split state
> -    private static final int STATE_UNSPLIT = 10;
> -
> -    private static final int STATE_SPLIT = 11;
> -
> +        UNSTARTED {
> +            @Override boolean isStarted() { return false; }
> +            @Override boolean isStopped() { return true;  }
> +            @Override boolean isSuspended() { return false; }
> +        },
> +        RUNNING {
> +            @Override boolean isStarted() { return true; }
> +            @Override boolean isStopped() { return false; }
> +            @Override boolean isSuspended() { return false; }
> +        },
> +        STOPPED {
> +            @Override boolean isStarted() { return false; }
> +            @Override boolean isStopped() { return true; }
> +            @Override boolean isSuspended() { return false; }
> +        },
> +        SUSPENDED {
> +            @Override boolean isStarted() { return true; }
> +            @Override boolean isStopped() { return false; }
> +            @Override  boolean isSuspended() { return true; }
> +        };
> +
> +        /**
> +         * <p>
> +         * The method is used to find out if the StopWatch is started. A
> suspended
> +         * StopWatch is also started watch.
> +         * </p>
> +
> +         * @param stopWatch
> +         * @return boolean
> +         *             If the StopWatch is started.
> +         */
> +        abstract boolean isStarted();
> +
> +        /**
> +         * <p>
> +         * This method is used to find out whether the StopWatch is
> stopped. The
> +         * stopwatch which's not yet started and explicitly stopped
> stopwatch is
> +         * considered as stopped.
> +         * </p>
> +         *
> +         * @param stopWatch
> +         * @return boolean
> +         *             If the StopWatch is stopped.
> +         */
> +        abstract boolean isStopped();
> +
> +        /**
> +         * <p>
> +         * This method is used to find out whether the StopWatch is
> suspended.
> +         * </p>
> +         *
> +         * @param stopWatch
> +         * @return boolean
> +         *             If the StopWatch is suspended.
> +         */
> +        abstract boolean isSuspended();
> +    }
> +
> +    /**
> +     * Enumeration type which indicates the split status of stopwatch.
> +     */
> +    private enum SplitState {
> +        SPLIT,
> +        UNSPLIT
> +    }
>      /**
>       * The current running state of the StopWatch.
>       */
> -    private int runningState = STATE_UNSTARTED;
> +    private State runningState = State.UNSTARTED;
>
>      /**
>       * Whether the stopwatch has a split time recorded.
>       */
> -    private int splitState = STATE_UNSPLIT;
> +    private SplitState splitState = SplitState.UNSPLIT;
>
>      /**
>       * The start time.
> @@ -122,17 +178,18 @@ public class StopWatch {
>       *             if the StopWatch is already running.
>       */
>      public void start() {
> -        if (this.runningState == STATE_STOPPED) {
> +        if (this.runningState == State.STOPPED) {
>              throw new IllegalStateException("Stopwatch must be reset
> before being restarted. ");
>          }
> -        if (this.runningState != STATE_UNSTARTED) {
> +        if (this.runningState != State.UNSTARTED) {
>              throw new IllegalStateException("Stopwatch already started.
> ");
>          }
>          this.startTime = System.nanoTime();
>          this.startTimeMillis = System.currentTimeMillis();
> -        this.runningState = STATE_RUNNING;
> +        this.runningState = State.RUNNING;
>      }
>
> +
>      /**
>       * <p>
>       * Stop the stopwatch.
> @@ -146,13 +203,13 @@ public class StopWatch {
>       *             if the StopWatch is not running.
>       */
>      public void stop() {
> -        if (this.runningState != STATE_RUNNING && this.runningState !=
> STATE_SUSPENDED) {
> +        if (this.runningState != State.RUNNING && this.runningState !=
> State.SUSPENDED) {
>              throw new IllegalStateException("Stopwatch is not running. ");
>          }
> -        if (this.runningState == STATE_RUNNING) {
> +        if (this.runningState == State.RUNNING) {
>              this.stopTime = System.nanoTime();
>          }
> -        this.runningState = STATE_STOPPED;
> +        this.runningState = State.STOPPED;
>      }
>
>      /**
> @@ -165,8 +222,8 @@ public class StopWatch {
>       * </p>
>       */
>      public void reset() {
> -        this.runningState = STATE_UNSTARTED;
> -        this.splitState = STATE_UNSPLIT;
> +        this.runningState = State.UNSTARTED;
> +        this.splitState = SplitState.UNSPLIT;
>      }
>
>      /**
> @@ -183,11 +240,11 @@ public class StopWatch {
>       *             if the StopWatch is not running.
>       */
>      public void split() {
> -        if (this.runningState != STATE_RUNNING) {
> +        if (this.runningState != State.RUNNING) {
>              throw new IllegalStateException("Stopwatch is not running. ");
>          }
>          this.stopTime = System.nanoTime();
> -        this.splitState = STATE_SPLIT;
> +        this.splitState = SplitState.SPLIT;
>      }
>
>      /**
> @@ -204,10 +261,10 @@ public class StopWatch {
>       *             if the StopWatch has not been split.
>       */
>      public void unsplit() {
> -        if (this.splitState != STATE_SPLIT) {
> +        if (this.splitState != SplitState.SPLIT) {
>              throw new IllegalStateException("Stopwatch has not been
> split. ");
>          }
> -        this.splitState = STATE_UNSPLIT;
> +        this.splitState = SplitState.UNSPLIT;
>      }
>
>      /**
> @@ -224,11 +281,11 @@ public class StopWatch {
>       *             if the StopWatch is not currently running.
>       */
>      public void suspend() {
> -        if (this.runningState != STATE_RUNNING) {
> +        if (this.runningState != State.RUNNING) {
>              throw new IllegalStateException("Stopwatch must be running to
> suspend. ");
>          }
>          this.stopTime = System.nanoTime();
> -        this.runningState = STATE_SUSPENDED;
> +        this.runningState = State.SUSPENDED;
>      }
>
>      /**
> @@ -245,11 +302,11 @@ public class StopWatch {
>       *             if the StopWatch has not been suspended.
>       */
>      public void resume() {
> -        if (this.runningState != STATE_SUSPENDED) {
> +        if (this.runningState != State.SUSPENDED) {
>              throw new IllegalStateException("Stopwatch must be suspended
> to resume. ");
>          }
>          this.startTime += System.nanoTime() - this.stopTime;
> -        this.runningState = STATE_RUNNING;
> +        this.runningState = State.RUNNING;
>      }
>
>      /**
> @@ -281,11 +338,11 @@ public class StopWatch {
>       * @since 3.0
>       */
>      public long getNanoTime() {
> -        if (this.runningState == STATE_STOPPED || this.runningState ==
> STATE_SUSPENDED) {
> +        if (this.runningState == State.STOPPED || this.runningState ==
> State.SUSPENDED) {
>              return this.stopTime - this.startTime;
> -        } else if (this.runningState == STATE_UNSTARTED) {
> +        } else if (this.runningState == State.UNSTARTED) {
>              return 0;
> -        } else if (this.runningState == STATE_RUNNING) {
> +        } else if (this.runningState == State.RUNNING) {
>              return System.nanoTime() - this.startTime;
>          }
>          throw new RuntimeException("Illegal running state has occurred.");
> @@ -325,7 +382,7 @@ public class StopWatch {
>       * @since 3.0
>       */
>      public long getSplitNanoTime() {
> -        if (this.splitState != STATE_SPLIT) {
> +        if (this.splitState != SplitState.SPLIT) {
>              throw new IllegalStateException("Stopwatch must be split to
> get the split time. ");
>          }
>          return this.stopTime - this.startTime;
> @@ -340,7 +397,7 @@ public class StopWatch {
>       * @since 2.4
>       */
>      public long getStartTime() {
> -        if (this.runningState == STATE_UNSTARTED) {
> +        if (this.runningState == State.UNSTARTED) {
>              throw new IllegalStateException("Stopwatch has not been
> started");
>          }
>          // System.nanoTime is for elapsed time
> @@ -379,4 +436,49 @@ public class StopWatch {
>          return DurationFormatUtils.formatDurationHMS(getSplitTime());
>      }
>
> +    /**
> +     * <p>
> +     * The method is used to find out if the StopWatch is started. A
> suspended
> +     * StopWatch is also started watch.
> +     * </p>
> +     *
> +     * @return boolean
> +     *             If the StopWatch is started.
> +     * @see   State#isStarted()
> +     * @since 3.2
> +     */
> +    public boolean isStarted() {
> +        return runningState.isStarted();
> +    }
> +
> +    /**
> +     * <p>
> +     * This method is used to find out whether the StopWatch is suspended.
> +     * </p>
> +     *
> +     * @return boolean
> +     *             If the StopWatch is suspended.
> +     * @see   State#isSuspended()
> +     * @since 3.2
> +     */
> +    public boolean isSuspended() {
> +        return runningState.isSuspended();
> +    }
> +
> +    /**
> +     * <p>
> +     * This method is used to find out whether the StopWatch is stopped.
> The
> +     * stopwatch which's not yet started and explicitly stopped stopwatch
> is
> +     * considered as stopped.
> +     * </p>
> +     *
> +     * @return boolean
> +     *             If the StopWatch is stopped.
> +     * @see   State#isStopped()
> +     * @since 3.2
> +     */
> +    public boolean isStopped() {
> +        return runningState.isStopped();
> +    }
> +
>  }
>
> Modified:
> commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/time/StopWatchTest.java
> URL:
> http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/time/StopWatchTest.java?rev=1535555&r1=1535554&r2=1535555&view=diff
>
> ==============================================================================
> ---
> commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/time/StopWatchTest.java
> (original)
> +++
> commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/time/StopWatchTest.java
> Thu Oct 24 21:23:40 2013
> @@ -18,6 +18,7 @@ package org.apache.commons.lang3.time;
>
>  import static org.junit.Assert.assertEquals;
>  import static org.junit.Assert.assertTrue;
> +import static org.junit.Assert.assertFalse;
>  import static org.junit.Assert.fail;
>  import org.junit.Assert;
>
> @@ -224,4 +225,27 @@ public class StopWatchTest  {
>          }
>      }
>
> +    @Test
> +    public void testBooleanStates() {
> +        final StopWatch watch = new StopWatch();
> +        assertFalse(watch.isStarted());
> +        assertFalse(watch.isSuspended());
> +        assertTrue(watch.isStopped());
> +
> +        watch.start();
> +        assertTrue(watch.isStarted());
> +        assertFalse(watch.isSuspended());
> +        assertFalse(watch.isStopped());
> +
> +        watch.suspend();
> +        assertTrue(watch.isStarted());
> +        assertTrue(watch.isSuspended());
> +        assertFalse(watch.isStopped());
> +
> +        watch.stop();
> +        assertFalse(watch.isStarted());
> +        assertFalse(watch.isSuspended());
> +        assertTrue(watch.isStopped());
> +    }
> +
>  }
>
>
>

Re: svn commit: r1535555 - in /commons/proper/lang/trunk/src: changes/changes.xml main/java/org/apache/commons/lang3/time/StopWatch.java test/java/org/apache/commons/lang3/time/StopWatchTest.java

Posted by Benedikt Ritter <br...@apache.org>.
2013/10/25 Henri Yandell <fl...@gmail.com>

> On Fri, Oct 25, 2013 at 12:58 AM, Benedikt Ritter <beneritter@gmail.com
> >wrote:
>
> > Hi Hen,
> >
> >
> > 2013/10/24 <ba...@apache.org>
> >
> > > Author: bayard
> > > Date: Thu Oct 24 21:23:40 2013
> > > New Revision: 1535555
> > >
> > > URL: http://svn.apache.org/r1535555
> > > Log:
> > > Applying Sebb's patch from LANG-774 - adding isStarted, isSuspended and
> > > isStopped to StopWatch
> > >
> > > Modified:
> > >     commons/proper/lang/trunk/src/changes/changes.xml
> > >
> > >
> >
> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/time/StopWatch.java
> > >
> > >
> >
> commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/time/StopWatchTest.java
> > >
> > > Modified: commons/proper/lang/trunk/src/changes/changes.xml
> > > URL:
> > >
> >
> http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/changes/changes.xml?rev=1535555&r1=1535554&r2=1535555&view=diff
> > >
> > >
> >
> ==============================================================================
> > > --- commons/proper/lang/trunk/src/changes/changes.xml (original)
> > > +++ commons/proper/lang/trunk/src/changes/changes.xml Thu Oct 24
> 21:23:40
> > > 2013
> > > @@ -22,6 +22,7 @@
> > >    <body>
> > >
> > >    <release version="3.2" date="TBA" description="Next release">
> > > +    <action issue="LANG-774" type="add" due-to="Erhan Bagdemir">Added
> > > isStarted, isSuspended and isStopped to StopWatch</action>
> > >
> >
> > Either the due-to or the commit log is wrong :-)
> >
> >
> Erhan did the original patch, Sebb improved on it. I credited Erhan as he
> was the initiator (and because he's non Apache - the rest of us get lots of
> credit :) ).
>

Agreed! (unless Sebb raises his concerns about not getting the kudos ;-)


>
> Hen
>



-- 
http://people.apache.org/~britter/
http://www.systemoutprintln.de/
http://twitter.com/BenediktRitter
http://github.com/britter

Re: svn commit: r1535555 - in /commons/proper/lang/trunk/src: changes/changes.xml main/java/org/apache/commons/lang3/time/StopWatch.java test/java/org/apache/commons/lang3/time/StopWatchTest.java

Posted by Henri Yandell <fl...@gmail.com>.
On Fri, Oct 25, 2013 at 12:58 AM, Benedikt Ritter <be...@gmail.com>wrote:

> Hi Hen,
>
>
> 2013/10/24 <ba...@apache.org>
>
> > Author: bayard
> > Date: Thu Oct 24 21:23:40 2013
> > New Revision: 1535555
> >
> > URL: http://svn.apache.org/r1535555
> > Log:
> > Applying Sebb's patch from LANG-774 - adding isStarted, isSuspended and
> > isStopped to StopWatch
> >
> > Modified:
> >     commons/proper/lang/trunk/src/changes/changes.xml
> >
> >
> commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/time/StopWatch.java
> >
> >
> commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/time/StopWatchTest.java
> >
> > Modified: commons/proper/lang/trunk/src/changes/changes.xml
> > URL:
> >
> http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/changes/changes.xml?rev=1535555&r1=1535554&r2=1535555&view=diff
> >
> >
> ==============================================================================
> > --- commons/proper/lang/trunk/src/changes/changes.xml (original)
> > +++ commons/proper/lang/trunk/src/changes/changes.xml Thu Oct 24 21:23:40
> > 2013
> > @@ -22,6 +22,7 @@
> >    <body>
> >
> >    <release version="3.2" date="TBA" description="Next release">
> > +    <action issue="LANG-774" type="add" due-to="Erhan Bagdemir">Added
> > isStarted, isSuspended and isStopped to StopWatch</action>
> >
>
> Either the due-to or the commit log is wrong :-)
>
>
Erhan did the original patch, Sebb improved on it. I credited Erhan as he
was the initiator (and because he's non Apache - the rest of us get lots of
credit :) ).

Hen