Author: ffang
Date: Tue Jul 9 07:17:11 2013
New Revision: 1501113
URL: http://svn.apache.org/r1501113
Log:
[KARAF-2738]Shell:exec doesn't show output for commands that execute too quickly
Modified:
karaf/trunk/shell/commands/src/main/java/org/apache/karaf/shell/commands/impl/ExecuteAction.java
karaf/trunk/util/src/main/java/org/apache/karaf/util/process/PumpStreamHandler.java
karaf/trunk/util/src/main/java/org/apache/karaf/util/process/StreamPumper.java
Modified:
karaf/trunk/shell/commands/src/main/java/org/apache/karaf/shell/commands/impl/ExecuteAction.java
URL:
http://svn.apache.org/viewvc/karaf/trunk/shell/commands/src/main/java/org/apache/karaf/shell/commands/impl/ExecuteAction.java?rev=1501113&r1=1501112&r2=1501113&view=diff
==============================================================================
---
karaf/trunk/shell/commands/src/main/java/org/apache/karaf/shell/commands/impl/ExecuteAction.java
(original)
+++
karaf/trunk/shell/commands/src/main/java/org/apache/karaf/shell/commands/impl/ExecuteAction.java
Tue Jul 9 07:17:11 2013
@@ -44,7 +44,15 @@ public class ExecuteAction extends Abstr
handler.start();
log.debug("Waiting for process to exit...");
-
+
+ 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);
+
+
int status = p.waitFor();
Modified:
karaf/trunk/util/src/main/java/org/apache/karaf/util/process/PumpStreamHandler.java
URL:
http://svn.apache.org/viewvc/karaf/trunk/util/src/main/java/org/apache/karaf/util/process/PumpStreamHandler.java?rev=1501113&r1=1501112&r2=1501113&view=diff
==============================================================================
---
karaf/trunk/util/src/main/java/org/apache/karaf/util/process/PumpStreamHandler.java
(original)
+++
karaf/trunk/util/src/main/java/org/apache/karaf/util/process/PumpStreamHandler.java
Tue Jul 9 07:17:11 2013
@@ -239,4 +239,12 @@ public class PumpStreamHandler
pumper.setAutoflush(true);
return pumper;
}
+
+ public StreamPumper getOutputPump() {
+ return this.outputPump;
+ }
+
+ public StreamPumper getErrorPump() {
+ return this.errorPump;
+ }
}
Modified:
karaf/trunk/util/src/main/java/org/apache/karaf/util/process/StreamPumper.java
URL:
http://svn.apache.org/viewvc/karaf/trunk/util/src/main/java/org/apache/karaf/util/process/StreamPumper.java?rev=1501113&r1=1501112&r2=1501113&view=diff
==============================================================================
---
karaf/trunk/util/src/main/java/org/apache/karaf/util/process/StreamPumper.java
(original)
+++
karaf/trunk/util/src/main/java/org/apache/karaf/util/process/StreamPumper.java
Tue Jul 9 07:17:11 2013
@@ -196,4 +196,8 @@ public class StreamPumper implements Run
notifyAll();
}
+
+ public InputStream getInputStream() {
+ return this.in;
+ }
}