You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by ff...@apache.org on 2012/12/18 07:01:23 UTC

svn commit: r1423283 - /karaf/branches/karaf-2.3.x/main/src/main/java/org/apache/karaf/main/StartupListener.java

Author: ffang
Date: Tue Dec 18 06:01:22 2012
New Revision: 1423283

URL: http://svn.apache.org/viewvc?rev=1423283&view=rev
Log:
[KARAF-2073]Progress bar sometimes goes backwards

Modified:
    karaf/branches/karaf-2.3.x/main/src/main/java/org/apache/karaf/main/StartupListener.java

Modified: karaf/branches/karaf-2.3.x/main/src/main/java/org/apache/karaf/main/StartupListener.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.3.x/main/src/main/java/org/apache/karaf/main/StartupListener.java?rev=1423283&r1=1423282&r2=1423283&view=diff
==============================================================================
--- karaf/branches/karaf-2.3.x/main/src/main/java/org/apache/karaf/main/StartupListener.java (original)
+++ karaf/branches/karaf-2.3.x/main/src/main/java/org/apache/karaf/main/StartupListener.java Tue Dec 18 06:01:22 2012
@@ -34,10 +34,12 @@ import org.osgi.framework.startlevel.Fra
  */
 class StartupListener implements FrameworkListener, SynchronousBundleListener {
     private static final String SYSTEM_PROP_KARAF_CONSOLE_STARTED = "karaf.console.started";
+    private int currentPercentage;
 
 	private final BundleContext context;
     StartupListener(BundleContext context) {
         this.context = context;
+        this.currentPercentage = 0;
         context.addBundleListener(this);
         context.addFrameworkListener(this);
     }
@@ -71,20 +73,24 @@ class StartupListener implements Framewo
         // progress bar can only have 72 characters so that 80 char wide terminal will display properly
         int percent = (done * 100) / total;
         int scaledPercent = (int) (72.0 * (percent / 100.0));
-        StringBuilder sb = new StringBuilder();
-        sb.append(String.format("\r%3d%% [", percent));
-        for (int i = 0; i < 72; i++) {
-            if (i < scaledPercent) {
-                sb.append('=');
-            } else if (i == scaledPercent) {
-                sb.append('>');
-            } else {
-                sb.append(' ');
+        // Make sure we do not go backwards with percentage
+        if (percent > currentPercentage) {
+            currentPercentage = percent;
+            StringBuilder sb = new StringBuilder();
+            sb.append(String.format("\r%3d%% [", percent));
+            for (int i = 0; i < 72; i++) {
+                if (i < scaledPercent) {
+                    sb.append('=');
+                } else if (i == scaledPercent) {
+                    sb.append('>');
+                } else {
+                    sb.append(' ');
+                }
             }
+            sb.append(']');
+            System.out.print(sb.toString());
+            System.out.flush();
         }
-        sb.append(']');
-        System.out.print(sb.toString());
-        System.out.flush();
         if (done == total) {
             System.out.println();
         }