public class NativeCommand
extends java.lang.Object
implements java.lang.Runnable
| Modifier and Type | Class and Description |
|---|---|
static interface |
NativeCommand.Listener
Interested in Processes? Be a NativeCommand Listener today!
|
static class |
NativeCommand.ListenerAdapter
An empty implementation of the Listener interface.
|
protected class |
NativeCommand.Reader
Reads a process's streams.
|
protected class |
NativeCommand.Spawner
Runs a process.
|
protected class |
NativeCommand.Watcher
Polls the process behavior and sends events
to Listeners if something interesting happens.
|
| Modifier and Type | Field and Description |
|---|---|
static java.lang.String |
CANNOTRUN |
protected java.lang.String |
command |
static long |
DEFAULT_WATCHER_DELAY |
static long |
DEFAULT_WATCHER_INTERVAL |
protected long |
delay |
protected java.lang.String |
endMark |
protected java.lang.Integer |
exitValue |
protected boolean |
foreground |
protected long |
interval |
protected java.lang.Throwable |
latestException |
protected java.util.Vector<NativeCommand.Listener> |
listeners |
protected java.util.logging.Logger |
log |
protected long |
maxExecutionTime |
static java.lang.String |
NEW |
static long |
NO_TIMEOUT |
protected java.lang.Process |
process |
static java.lang.String |
RUNNING |
protected java.lang.String |
status |
protected java.io.OutputStreamWriter |
stdin |
static java.lang.String |
TERMINATED |
protected java.util.concurrent.ThreadFactory |
threadFactory |
protected java.util.concurrent.ThreadFactory |
threadFactoryDefault
The default thread factory for background actions.
|
static java.lang.String |
TIMEOUT |
protected static java.util.Timer |
watchers |
| Constructor and Description |
|---|
NativeCommand(java.lang.String command,
boolean foreground) |
NativeCommand(java.lang.String command,
boolean foreground,
long maxExecutionTime) |
NativeCommand(java.lang.String command,
boolean foreground,
long maxExecutionTime,
java.lang.String endMark) |
NativeCommand(java.lang.String command,
boolean foreground,
long maxExecutionTime,
java.lang.String endMark,
long interval,
long delay) |
| Modifier and Type | Method and Description |
|---|---|
void |
addListener(NativeCommand.Listener po) |
protected void |
changeStatus(java.lang.String newStatus) |
protected void |
fireOutputWritten(java.io.InputStream sourceStream,
java.lang.String additionalOutput) |
protected void |
fireStatusChanged(java.lang.String oldStatus,
java.lang.String newStatus) |
java.lang.Integer |
getExitValue() |
java.lang.Throwable |
getLatestException()
Returns the most recent occured error.
|
java.lang.String |
getStatus() |
void |
removeListener(NativeCommand.Listener po) |
void |
run()
We use four delegates:
One to start a process
One to watch its progress
Two to read its output (out and err)
The delegates give feedback to the main thread by provoking InterruptedExceptions on it.
|
void |
send(java.lang.String text)
Writes the given text to the STDIN of the process.
|
void |
setThreadFactory(java.util.concurrent.ThreadFactory threads)
This class executes various actions concurrently.
|
public static final java.lang.String NEW
public static final java.lang.String RUNNING
public static final java.lang.String TERMINATED
public static final java.lang.String CANNOTRUN
public static final java.lang.String TIMEOUT
public static final long NO_TIMEOUT
public static long DEFAULT_WATCHER_INTERVAL
public static long DEFAULT_WATCHER_DELAY
protected static java.util.Timer watchers
protected java.io.OutputStreamWriter stdin
protected java.util.Vector<NativeCommand.Listener> listeners
protected java.lang.String command
protected java.lang.Process process
protected long interval
protected long delay
protected long maxExecutionTime
protected java.lang.String status
protected boolean foreground
protected java.lang.String endMark
protected java.lang.Throwable latestException
protected java.lang.Integer exitValue
protected java.util.logging.Logger log
protected java.util.concurrent.ThreadFactory threadFactoryDefault
protected java.util.concurrent.ThreadFactory threadFactory
public NativeCommand(java.lang.String command,
boolean foreground)
public NativeCommand(java.lang.String command,
boolean foreground,
long maxExecutionTime)
public NativeCommand(java.lang.String command,
boolean foreground,
long maxExecutionTime,
java.lang.String endMark)
public NativeCommand(java.lang.String command,
boolean foreground,
long maxExecutionTime,
java.lang.String endMark,
long interval,
long delay)
public void setThreadFactory(java.util.concurrent.ThreadFactory threads)
threads - - null for defaultpublic void addListener(NativeCommand.Listener po)
public void removeListener(NativeCommand.Listener po)
public java.lang.String getStatus()
public java.lang.Integer getExitValue()
public java.lang.Throwable getLatestException()
public void send(java.lang.String text)
text - the input to send to the processpublic void run()
run in interface java.lang.Runnableprotected void changeStatus(java.lang.String newStatus)
protected void fireStatusChanged(java.lang.String oldStatus,
java.lang.String newStatus)
protected void fireOutputWritten(java.io.InputStream sourceStream,
java.lang.String additionalOutput)