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