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;
+ }
}