AbstractCatalinaTaskpublic 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. |
Fields Summary |
---|
protected String | passwordThe login password for the Manager application. | protected String | urlThe URL of the Manager application to be used. | protected String | usernameThe login username for the Manager application. |
Methods Summary |
---|
public void | execute()Execute the specified command. This logic only performs the common
attribute validation required by all subclasses; it does not perform
any functional logic directly.
if ((username == null) || (password == null) || (url == null)) {
throw new BuildException
("Must specify all of 'username', 'password', and 'url'");
}
| public void | execute(java.lang.String command)Execute the specified command, based on the configured properties.
execute(command, null, null, -1);
| public void | execute(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.
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.String | getPassword()
return (this.password);
| public java.lang.String | getUrl()
return (this.url);
| public java.lang.String | getUsername()
return (this.username);
| public void | setPassword(java.lang.String password)
this.password = password;
| public void | setUrl(java.lang.String url)
this.url = url;
| public void | setUsername(java.lang.String username)
this.username = username;
|
|