Author: ffang
Date: Thu Jul 11 07:29:31 2013
New Revision: 1502136

URL: http://svn.apache.org/r1502136
Log:
[KARAF-2378]Shell:exec doesn't show output for commands that execute too 
quickly 

Modified:
    
karaf/branches/karaf-2.3.x/shell/commands/src/main/java/org/apache/karaf/shell/commands/ExecuteAction.java
    
karaf/branches/karaf-2.3.x/util/src/main/java/org/apache/karaf/util/process/PumpStreamHandler.java
    
karaf/branches/karaf-2.3.x/util/src/main/java/org/apache/karaf/util/process/StreamPumper.java

Modified: 
karaf/branches/karaf-2.3.x/shell/commands/src/main/java/org/apache/karaf/shell/commands/ExecuteAction.java
URL: 
http://svn.apache.org/viewvc/karaf/branches/karaf-2.3.x/shell/commands/src/main/java/org/apache/karaf/shell/commands/ExecuteAction.java?rev=1502136&r1=1502135&r2=1502136&view=diff
==============================================================================
--- 
karaf/branches/karaf-2.3.x/shell/commands/src/main/java/org/apache/karaf/shell/commands/ExecuteAction.java
 (original)
+++ 
karaf/branches/karaf-2.3.x/shell/commands/src/main/java/org/apache/karaf/shell/commands/ExecuteAction.java
 Thu Jul 11 07:29:31 2013
@@ -43,6 +43,13 @@ public class ExecuteAction extends Abstr
         handler.attach(p);
         handler.start();
 
+        do {
+            //give some time to let StreamPumper to pump the stream from
+            //external process
+            Thread.sleep(1000);
+        } while (handler.getOutputPump().getInputStream().available() > 0
+            || handler.getErrorPump().getInputStream().available() > 0);
+        
         log.debug("Waiting for process to exit...");
 
         int status = p.waitFor();

Modified: 
karaf/branches/karaf-2.3.x/util/src/main/java/org/apache/karaf/util/process/PumpStreamHandler.java
URL: 
http://svn.apache.org/viewvc/karaf/branches/karaf-2.3.x/util/src/main/java/org/apache/karaf/util/process/PumpStreamHandler.java?rev=1502136&r1=1502135&r2=1502136&view=diff
==============================================================================
--- 
karaf/branches/karaf-2.3.x/util/src/main/java/org/apache/karaf/util/process/PumpStreamHandler.java
 (original)
+++ 
karaf/branches/karaf-2.3.x/util/src/main/java/org/apache/karaf/util/process/PumpStreamHandler.java
 Thu Jul 11 07:29:31 2013
@@ -16,6 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+
 package org.apache.karaf.util.process;
 
 import java.io.InputStream;
@@ -26,7 +27,6 @@ import java.io.IOException;
  * Copies standard output and error of children streams to standard output and 
error of the parent.
  */
 public class PumpStreamHandler {
-
     private final InputStream in;
 
     private final OutputStream out;
@@ -238,4 +238,12 @@ public class PumpStreamHandler {
         pumper.setAutoflush(true);
         return pumper;
     }
+    
+    public StreamPumper getOutputPump() {
+        return this.outputPump;
+    }
+    
+    public StreamPumper getErrorPump() {
+        return this.errorPump;
+    }
 }

Modified: 
karaf/branches/karaf-2.3.x/util/src/main/java/org/apache/karaf/util/process/StreamPumper.java
URL: 
http://svn.apache.org/viewvc/karaf/branches/karaf-2.3.x/util/src/main/java/org/apache/karaf/util/process/StreamPumper.java?rev=1502136&r1=1502135&r2=1502136&view=diff
==============================================================================
--- 
karaf/branches/karaf-2.3.x/util/src/main/java/org/apache/karaf/util/process/StreamPumper.java
 (original)
+++ 
karaf/branches/karaf-2.3.x/util/src/main/java/org/apache/karaf/util/process/StreamPumper.java
 Thu Jul 11 07:29:31 2013
@@ -16,6 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+
 package org.apache.karaf.util.process;
 
 import java.io.InputStream;
@@ -26,7 +27,6 @@ import java.io.IOException;
  * Copies all data from an input stream to an output stream.
  */
 public class StreamPumper implements Runnable {
-
     private InputStream in;
 
     private OutputStream out;
@@ -195,4 +195,8 @@ public class StreamPumper implements Run
 
         notifyAll();
     }
+    
+    public InputStream getInputStream() {
+        return this.in;
+    }
 }


Reply via email to