You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by js...@apache.org on 2006/05/09 16:41:22 UTC
svn commit: r405446 -
/geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/LongStartupMonitor.java
Author: jsisson
Date: Tue May 9 07:41:20 2006
New Revision: 405446
URL: http://svn.apache.org/viewcvs?rev=405446&view=rev
Log:
GERONIMO-1997 Not possible to account for startup time in --long startup output due to configurations showing 0s
Modified:
geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/LongStartupMonitor.java
Modified: geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/LongStartupMonitor.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/LongStartupMonitor.java?rev=405446&r1=405445&r2=405446&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/LongStartupMonitor.java (original)
+++ geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/LongStartupMonitor.java Tue May 9 07:41:20 2006
@@ -4,6 +4,10 @@
import org.apache.geronimo.kernel.Kernel;
import org.apache.geronimo.kernel.repository.Artifact;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.TimeZone;
+import java.util.Date;
/**
* A startup monitor that shows the progress of loading and starting
@@ -22,10 +26,6 @@
* @version $Revision: 1.0$
*/
public class LongStartupMonitor implements StartupMonitor {
- /**
- * Minimum width of the time (padded with leading spaces) in configuration start messages
- */
- private final static int MIN_TIME_WIDTH = 3;
/**
* PrintStream
@@ -114,15 +114,27 @@
}
public synchronized void configurationStarted(Artifact configuration) {
- int time = Math.round((float) (System.currentTimeMillis() - configStarted) / 1000f);
+ long time = System.currentTimeMillis() - configStarted;
StringBuffer buf = new StringBuffer();
buf.append(" started in ");
- // pad configuration startup time
- int timeDigits = Integer.toString(time).length();
- for (; timeDigits < MIN_TIME_WIDTH; timeDigits++) {
- buf.append(' ');
+
+ String formattedTime = getFormattedTime(time);
+ if (formattedTime.startsWith("0.")) {
+ // don't display zero seconds
+ formattedTime = " " +formattedTime.substring(1);
}
- buf.append(time).append("s ");
+
+ // if first number (e.g. seconds or minutes) is one digit,
+ // pad it with a leading space to get times to line up nicely
+ int index = formattedTime.indexOf(':'); // must look for colon first
+ if (index == -1)
+ index = formattedTime.indexOf('.');
+
+ if (index == 1)
+ buf.append(' ');
+
+ buf.append(formattedTime);
+
out.println(buf.toString());
}
@@ -139,4 +151,20 @@
problem.printStackTrace(out);
}
+ // time formatting method - thanks to Maven
+ private static String getFormattedTime( long time )
+ {
+ String pattern = "s.SSS's'";
+ if ( time / 60000L > 0 )
+ {
+ pattern = "m:s" + pattern;
+ if ( time / 3600000L > 0 )
+ {
+ pattern = "H:m" + pattern;
+ }
+ }
+ DateFormat fmt = new SimpleDateFormat( pattern );
+ fmt.setTimeZone( TimeZone.getTimeZone( "UTC" ) );
+ return fmt.format( new Date( time ) );
+ }
}