mirror of https://github.com/noisymime/Arduino.git
Introducing CollectStdOut and CollectStdOutStderrExecutor, handy classes for executing external execs and collecting their outputs
This commit is contained in:
parent
b93bd8ea7f
commit
ad72e41aa0
|
@ -26,8 +26,8 @@ import org.apache.commons.exec.CommandLine;
|
||||||
import org.apache.commons.exec.Executor;
|
import org.apache.commons.exec.Executor;
|
||||||
import processing.app.PreferencesData;
|
import processing.app.PreferencesData;
|
||||||
import processing.app.debug.TargetPackage;
|
import processing.app.debug.TargetPackage;
|
||||||
import processing.app.tools.ExternalProcessExecutor;
|
|
||||||
import processing.app.legacy.PConstants;
|
import processing.app.legacy.PConstants;
|
||||||
|
import processing.app.tools.CollectStdOutExecutor;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -131,7 +131,7 @@ public class Platform extends processing.app.Platform {
|
||||||
@Override
|
@Override
|
||||||
public Map<String, Object> resolveDeviceAttachedTo(String serial, Map<String, TargetPackage> packages, String devicesListOutput) {
|
public Map<String, Object> resolveDeviceAttachedTo(String serial, Map<String, TargetPackage> packages, String devicesListOutput) {
|
||||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||||
Executor executor = new ExternalProcessExecutor(baos);
|
Executor executor = new CollectStdOutExecutor(baos);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
CommandLine toDevicePath = CommandLine.parse("udevadm info -q path -n " + serial);
|
CommandLine toDevicePath = CommandLine.parse("udevadm info -q path -n " + serial);
|
||||||
|
|
|
@ -27,9 +27,9 @@ import com.apple.eio.FileManager;
|
||||||
import org.apache.commons.exec.CommandLine;
|
import org.apache.commons.exec.CommandLine;
|
||||||
import org.apache.commons.exec.Executor;
|
import org.apache.commons.exec.Executor;
|
||||||
import processing.app.debug.TargetPackage;
|
import processing.app.debug.TargetPackage;
|
||||||
import processing.app.tools.ExternalProcessExecutor;
|
|
||||||
import processing.app.legacy.PApplet;
|
import processing.app.legacy.PApplet;
|
||||||
import processing.app.legacy.PConstants;
|
import processing.app.legacy.PConstants;
|
||||||
|
import processing.app.tools.CollectStdOutExecutor;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
@ -231,7 +231,7 @@ public class Platform extends processing.app.Platform {
|
||||||
@Override
|
@Override
|
||||||
public String preListAllCandidateDevices() {
|
public String preListAllCandidateDevices() {
|
||||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||||
Executor executor = new ExternalProcessExecutor(baos);
|
Executor executor = new CollectStdOutExecutor(baos);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
CommandLine toDevicePath = CommandLine.parse("/usr/sbin/system_profiler SPUSBDataType");
|
CommandLine toDevicePath = CommandLine.parse("/usr/sbin/system_profiler SPUSBDataType");
|
||||||
|
|
|
@ -10,9 +10,9 @@ import java.io.OutputStream;
|
||||||
/**
|
/**
|
||||||
* Handy process executor, collecting stdout into a given OutputStream
|
* Handy process executor, collecting stdout into a given OutputStream
|
||||||
*/
|
*/
|
||||||
public class ExternalProcessExecutor extends DefaultExecutor {
|
public class CollectStdOutExecutor extends DefaultExecutor {
|
||||||
|
|
||||||
public ExternalProcessExecutor(final OutputStream os) {
|
public CollectStdOutExecutor(final OutputStream stdout) {
|
||||||
this.setStreamHandler(new ExecuteStreamHandler() {
|
this.setStreamHandler(new ExecuteStreamHandler() {
|
||||||
@Override
|
@Override
|
||||||
public void setProcessInputStream(OutputStream outputStream) throws IOException {
|
public void setProcessInputStream(OutputStream outputStream) throws IOException {
|
||||||
|
@ -27,7 +27,7 @@ public class ExternalProcessExecutor extends DefaultExecutor {
|
||||||
byte[] buf = new byte[4096];
|
byte[] buf = new byte[4096];
|
||||||
int bytes = -1;
|
int bytes = -1;
|
||||||
while ((bytes = inputStream.read(buf)) != -1) {
|
while ((bytes = inputStream.read(buf)) != -1) {
|
||||||
os.write(buf, 0, bytes);
|
stdout.write(buf, 0, bytes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
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 and stderr into given OutputStreams
|
||||||
|
*/
|
||||||
|
public class CollectStdOutStdErrExecutor extends DefaultExecutor {
|
||||||
|
|
||||||
|
public CollectStdOutStdErrExecutor(final OutputStream stdout, final OutputStream stderr) {
|
||||||
|
this.setStreamHandler(new ExecuteStreamHandler() {
|
||||||
|
@Override
|
||||||
|
public void setProcessInputStream(OutputStream outputStream) throws IOException {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setProcessErrorStream(InputStream inputStream) throws IOException {
|
||||||
|
byte[] buf = new byte[4096];
|
||||||
|
int bytes = -1;
|
||||||
|
while ((bytes = inputStream.read(buf)) != -1) {
|
||||||
|
stderr.write(buf, 0, bytes);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setProcessOutputStream(InputStream inputStream) throws IOException {
|
||||||
|
byte[] buf = new byte[4096];
|
||||||
|
int bytes = -1;
|
||||||
|
while ((bytes = inputStream.read(buf)) != -1) {
|
||||||
|
stdout.write(buf, 0, bytes);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void start() throws IOException {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void stop() {
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -32,7 +32,8 @@ import processing.app.PreferencesData;
|
||||||
import processing.app.debug.TargetPackage;
|
import processing.app.debug.TargetPackage;
|
||||||
import processing.app.legacy.PApplet;
|
import processing.app.legacy.PApplet;
|
||||||
import processing.app.legacy.PConstants;
|
import processing.app.legacy.PConstants;
|
||||||
import processing.app.tools.ExternalProcessExecutor;
|
import processing.app.tools.CollectStdOutExecutor;
|
||||||
|
import processing.app.tools.CollectStdOutStdErrExecutor;
|
||||||
import processing.app.windows.Registry.REGISTRY_ROOT_KEY;
|
import processing.app.windows.Registry.REGISTRY_ROOT_KEY;
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
|
@ -338,7 +339,7 @@ public class Platform extends processing.app.Platform {
|
||||||
@Override
|
@Override
|
||||||
public String preListAllCandidateDevices() {
|
public String preListAllCandidateDevices() {
|
||||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||||
Executor executor = new ExternalProcessExecutor(baos);
|
Executor executor = new CollectStdOutExecutor(baos);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
String listComPorts = new File(System.getProperty("user.dir"), "hardware/tools/listComPorts.exe").getCanonicalPath();
|
String listComPorts = new File(System.getProperty("user.dir"), "hardware/tools/listComPorts.exe").getCanonicalPath();
|
||||||
|
|
Loading…
Reference in New Issue