FileDocCategorySizeDatePackage
AbstractCatalinaTask.javaAPI DocGlassfish v2 API9221Fri May 04 22:31:52 BST 2007org.apache.catalina.ant

AbstractCatalinaTask

public abstract class AbstractCatalinaTask extends org.apache.tools.ant.Task
Abstract base class for Ant tasks that interact with the Manager web application for dynamically deploying and undeploying applications. These tasks require Ant 1.4 or later.
author
Craig R. McClanahan
version
$Revision: 1.3 $ $Date: 2007/05/05 05:31:52 $
since
4.1

Fields Summary
protected String
password
The login password for the Manager application.
protected String
url
The URL of the Manager application to be used.
protected String
username
The login username for the Manager application.
Constructors Summary
Methods Summary
public voidexecute()
Execute the specified command. This logic only performs the common attribute validation required by all subclasses; it does not perform any functional logic directly.

exception
BuildException if a validation error occurs


        if ((username == null) || (password == null) || (url == null)) {
            throw new BuildException
                ("Must specify all of 'username', 'password', and 'url'");
        }

    
public voidexecute(java.lang.String command)
Execute the specified command, based on the configured properties.

param
command Command to be executed
exception
BuildException if an error occurs


        execute(command, null, null, -1);

    
public voidexecute(java.lang.String command, java.io.InputStream istream, java.lang.String contentType, int contentLength)
Execute the specified command, based on the configured properties. The input stream will be closed upon completion of this task, whether it was executed successfully or not.

param
command Command to be executed
param
istream InputStream to include in an HTTP PUT, if any
param
contentType Content type to specify for the input, if any
param
contentLength Content length to specify for the input, if any
exception
BuildException if an error occurs


        URLConnection conn = null;
        InputStreamReader reader = null;
        try {

            // Create a connection for this command
            conn = (new URL(url + command)).openConnection();
            HttpURLConnection hconn = (HttpURLConnection) conn;

            // Set up standard connection characteristics
            hconn.setAllowUserInteraction(false);
            hconn.setDoInput(true);
            hconn.setUseCaches(false);
            if (istream != null) {
                hconn.setDoOutput(true);
                hconn.setRequestMethod("PUT");
                if (contentType != null) {
                    hconn.setRequestProperty("Content-Type", contentType);
                }
                if (contentLength >= 0) {
                    hconn.setRequestProperty("Content-Length",
                                             "" + contentLength);
                }
            } else {
                hconn.setDoOutput(false);
                hconn.setRequestMethod("GET");
            }
            hconn.setRequestProperty("User-Agent",
                                     "Catalina-Ant-Task/1.0");

            // Set up an authorization header with our credentials
            String input = username + ":" + password;
            String output = new String(Base64.encode(input.getBytes()));
            hconn.setRequestProperty("Authorization",
                                     "Basic " + output);

            // Establish the connection with the server
            hconn.connect();

            // Send the request data (if any)
            if (istream != null) {
                BufferedOutputStream ostream =
                    new BufferedOutputStream(hconn.getOutputStream(), 1024);
                byte buffer[] = new byte[1024];
                while (true) {
                    int n = istream.read(buffer);
                    if (n < 0) {
                        break;
                    }
                    ostream.write(buffer, 0, n);
                }
                ostream.flush();
                ostream.close();
                istream.close();
            }

            // Process the response message
            reader = new InputStreamReader(hconn.getInputStream());
            StringBuffer buff = new StringBuffer();
            String error = null;
            boolean first = true;
            while (true) {
                int ch = reader.read();
                if (ch < 0) {
                    break;
                } else if ((ch == '\r") || (ch == '\n")) {
                    String line = buff.toString();
                    buff.setLength(0);
                    log(line, Project.MSG_INFO);
                    if (first) {
                        if (!line.startsWith("OK -")) {
                            error = line;
                        }
                        first = false;
                    }
                } else {
                    buff.append((char) ch);
                }
            }
            if (buff.length() > 0) {
                log(buff.toString(), Project.MSG_INFO);
            }
            if (error != null) {
                throw new BuildException(error);
            }

        } catch (Throwable t) {
            throw new BuildException(t);
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (Throwable u) {
                    ;
                }
                reader = null;
            }
            if (istream != null) {
                try {
                    istream.close();
                } catch (Throwable u) {
                    ;
                }
                istream = null;
            }
        }

    
public java.lang.StringgetPassword()


       
        return (this.password);
    
public java.lang.StringgetUrl()


       
        return (this.url);
    
public java.lang.StringgetUsername()


       
        return (this.username);
    
public voidsetPassword(java.lang.String password)

        this.password = password;
    
public voidsetUrl(java.lang.String url)

        this.url = url;
    
public voidsetUsername(java.lang.String username)

        this.username = username;