commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Niklas Gustavsson <>
Subject Re: [exec] API sketch?
Date Sat, 14 Jan 2006 23:36:08 GMT

Brett Porter wrote:
> Hi,
> Back in September 05 (wow, is it really 2006 already? :) Jerome sent a
> comprehensive vision for exec. I found myself agreeing with most
> everything in there (I'll reply to a couple of specifics shortly).
> Message ID from then: <>
> However, it was long and wordy. I think the key part was that "we should
> have a minimal exposed API". Maybe a good step forward is to sketch that
> API, then write implementations that reuse existing code, then refactor
> code behind the scenes later?
> With this, we could get something up and working *reasonably* quickly
> that is *reasonably* stable.
> Jerome, Niklas, Trygve - anyone interested in picking this up? In some
> ways the above email described it and this is just an interface sketch.

I think getting a very clear and simple API working would be an 
excellent next step. Given such an API, we can refactor Execute and Exec 
to fit the API. Here's a quick stab at a first proposal for a new 
Execute class:

  * StreamHandlers are used for providing input,
  * retriving the output. Also used for logging.
StreamHandler getStreamHandler();
void setStreamHandler(StreamHandler streamHandler);

  * Watchdog is used to kill of processes running,
  * typically, to long time.
ExecuteWatchdog getWatchdog();
void setWatchdog(ExecuteWatchdog watchDog);

File getWorkingDirectory();
void setWorkingDirectory(File dir);

  * Methods for starting synchronous execution.
  * Returns process exit value
int execute(String[] command) throws ExecuteException;
int execute(String[] command, Map environment) throws ExecuteException;

  * Methods for starting asynchronous execution. Result provided to 
callback handler
void execute(String[] command, ExecuteResultHandler handler) throws 
void execute(String[] command, Map environment, ExecuteResultHandler 
handler) throws ExecuteException;

Besides this API, I think we should provide utility classes for 
retrieving the current Environment. I also think we should get rid of 
the current environment classes and use a Map instead. This simplifies 
working with our API and gets us inline with the Java 1.5 environment 


Niklas Gustavsson

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message