commons-dev mailing list archives

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

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: <5a2cf1f605092513417c5d0fd7@mail.gmail.com>
> 
> 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 
ExecuteException;
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 
support.

/niklas

-------
Niklas Gustavsson
http://www.protocol7.com
mailto:niklas@protocol7.com


---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Mime
View raw message