org.apache.catalina.servlets

Class CGIServlet.CGIRunner

protected class CGIServlet.CGIRunner extends Object

Encapsulates the knowledge of how to run a CGI script, given the script's desired environment and (optionally) input/output streams

Exposes a run method used to actually invoke the CGI.

The CGI environment and settings are derived from the information passed to the constuctor.

The input and output streams can be set by the setInput and setResponse methods, respectively.

Version: $Revision: 896371 $, $Date: 2010-01-06 11:30:07 +0100 (Wed, 06 Jan 2010) $

Constructor Summary
protected CGIRunner(String command, Hashtable env, File wd, ArrayList params)
Creates a CGIRunner and initializes its environment, working directory, and query parameters.
Method Summary
protected String[]hashToStringArray(Hashtable h)
Converts a Hashtable to a String array by converting each key/value pair in the Hashtable to a String in the form "key=value" (hashkey + "=" + hash.get(hashkey).toString())
protected booleanisReady()
Gets ready status
protected voidrun()
Executes a CGI script with the desired environment, current working directory, and input/output streams

This implements the following CGI specification recommedations:

  • Servers SHOULD provide the "query" component of the script-URI as command-line arguments to scripts if it does not contain any unencoded "=" characters and the command-line arguments can be generated in an unambiguous manner.
protected voidsetInput(InputStream stdin)
Sets standard input to be passed on to the invoked cgi script
protected voidsetResponse(HttpServletResponse response)
Sets HttpServletResponse object used to set headers and send output to
protected voidupdateReadyStatus()
Checks & sets ready status

Constructor Detail

CGIRunner

protected CGIRunner(String command, Hashtable env, File wd, ArrayList params)
Creates a CGIRunner and initializes its environment, working directory, and query parameters.
Input/output streams (optional) are set using the setInput and setResponse methods, respectively.

Parameters: command string full path to command to be executed env Hashtable with the desired script environment wd File with the script's desired working directory params ArrayList with the script's query command line paramters as strings

Method Detail

hashToStringArray

protected String[] hashToStringArray(Hashtable h)
Converts a Hashtable to a String array by converting each key/value pair in the Hashtable to a String in the form "key=value" (hashkey + "=" + hash.get(hashkey).toString())

Parameters: h Hashtable to convert

Returns: converted string array

Throws: NullPointerException if a hash key has a null value

isReady

protected boolean isReady()
Gets ready status

Returns: false if not ready (run will throw an exception), true if ready

run

protected void run()
Executes a CGI script with the desired environment, current working directory, and input/output streams

This implements the following CGI specification recommedations:

Throws: IOException if problems during reading/writing occur

See Also: java.lang.Runtime#exec(String command, String[] envp, File dir)

setInput

protected void setInput(InputStream stdin)
Sets standard input to be passed on to the invoked cgi script

Parameters: stdin InputStream to be used

setResponse

protected void setResponse(HttpServletResponse response)
Sets HttpServletResponse object used to set headers and send output to

Parameters: response HttpServletResponse to be used

updateReadyStatus

protected void updateReadyStatus()
Checks & sets ready status
Copyright © 2000-2011 Apache Software Foundation. All Rights Reserved.