From 66a811eeeef529f2337f6c281b9d307f32f630dc Mon Sep 17 00:00:00 2001 From: Federico Fissore Date: Mon, 4 Feb 2013 11:00:39 +0100 Subject: [PATCH] refactored DefaultExecutor to ExternalProcessExecutor --- app/src/processing/app/linux/Platform.java | 34 ++------------ app/src/processing/app/macosx/Platform.java | 34 ++------------ .../app/tools/ExternalProcessExecutor.java | 44 +++++++++++++++++++ 3 files changed, 50 insertions(+), 62 deletions(-) create mode 100644 app/src/processing/app/tools/ExternalProcessExecutor.java diff --git a/app/src/processing/app/linux/Platform.java b/app/src/processing/app/linux/Platform.java index b1d5b04ed..f932d67e6 100644 --- a/app/src/processing/app/linux/Platform.java +++ b/app/src/processing/app/linux/Platform.java @@ -23,11 +23,10 @@ package processing.app.linux; import org.apache.commons.exec.CommandLine; -import org.apache.commons.exec.DefaultExecutor; -import org.apache.commons.exec.ExecuteStreamHandler; import org.apache.commons.exec.Executor; import processing.app.Preferences; import processing.app.debug.TargetPackage; +import processing.app.tools.ExternalProcessExecutor; import processing.core.PConstants; import java.io.*; @@ -131,35 +130,8 @@ public class Platform extends processing.app.Platform { @Override public String resolveDeviceAttachedTo(String serial, Map packages) { - Executor executor = new DefaultExecutor(); - - final ByteArrayOutputStream baos = new ByteArrayOutputStream(); - executor.setStreamHandler(new ExecuteStreamHandler() { - @Override - public void setProcessInputStream(OutputStream outputStream) throws IOException { - } - - @Override - public void setProcessErrorStream(InputStream inputStream) throws IOException { - } - - @Override - public void setProcessOutputStream(InputStream inputStream) throws IOException { - byte[] buf = new byte[4096]; - int bytes = -1; - while ((bytes = inputStream.read(buf)) != -1) { - baos.write(buf, 0, bytes); - } - } - - @Override - public void start() throws IOException { - } - - @Override - public void stop() { - } - }); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + Executor executor = new ExternalProcessExecutor(baos); try { CommandLine toDevicePath = CommandLine.parse("udevadm info -q path -n " + serial); diff --git a/app/src/processing/app/macosx/Platform.java b/app/src/processing/app/macosx/Platform.java index 35283a217..1ee00696c 100644 --- a/app/src/processing/app/macosx/Platform.java +++ b/app/src/processing/app/macosx/Platform.java @@ -24,11 +24,10 @@ package processing.app.macosx; import com.apple.eio.FileManager; import org.apache.commons.exec.CommandLine; -import org.apache.commons.exec.DefaultExecutor; -import org.apache.commons.exec.ExecuteStreamHandler; import org.apache.commons.exec.Executor; import processing.app.Base; import processing.app.debug.TargetPackage; +import processing.app.tools.ExternalProcessExecutor; import processing.core.PApplet; import processing.core.PConstants; @@ -207,35 +206,8 @@ public class Platform extends processing.app.Platform { @Override public String resolveDeviceAttachedTo(String serial, Map packages) { - Executor executor = new DefaultExecutor(); - - final ByteArrayOutputStream baos = new ByteArrayOutputStream(); - executor.setStreamHandler(new ExecuteStreamHandler() { - @Override - public void setProcessInputStream(OutputStream outputStream) throws IOException { - } - - @Override - public void setProcessErrorStream(InputStream inputStream) throws IOException { - } - - @Override - public void setProcessOutputStream(InputStream inputStream) throws IOException { - byte[] buf = new byte[4096]; - int bytes = -1; - while ((bytes = inputStream.read(buf)) != -1) { - baos.write(buf, 0, bytes); - } - } - - @Override - public void start() throws IOException { - } - - @Override - public void stop() { - } - }); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + Executor executor = new ExternalProcessExecutor(baos); try { CommandLine toDevicePath = CommandLine.parse("/usr/sbin/system_profiler SPUSBDataType"); diff --git a/app/src/processing/app/tools/ExternalProcessExecutor.java b/app/src/processing/app/tools/ExternalProcessExecutor.java new file mode 100644 index 000000000..98c2d0695 --- /dev/null +++ b/app/src/processing/app/tools/ExternalProcessExecutor.java @@ -0,0 +1,44 @@ +package processing.app.tools; + +import org.apache.commons.exec.DefaultExecutor; +import org.apache.commons.exec.ExecuteStreamHandler; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +/** + * Handy process executor, collecting stdout into a given OutputStream + */ +public class ExternalProcessExecutor extends DefaultExecutor { + + public ExternalProcessExecutor(final OutputStream os) { + this.setStreamHandler(new ExecuteStreamHandler() { + @Override + public void setProcessInputStream(OutputStream outputStream) throws IOException { + } + + @Override + public void setProcessErrorStream(InputStream inputStream) throws IOException { + } + + @Override + public void setProcessOutputStream(InputStream inputStream) throws IOException { + byte[] buf = new byte[4096]; + int bytes = -1; + while ((bytes = inputStream.read(buf)) != -1) { + os.write(buf, 0, bytes); + } + } + + @Override + public void start() throws IOException { + } + + @Override + public void stop() { + } + }); + + } +}