AbstractCatalinaTaskpublic abstract class AbstractCatalinaTask extends BaseRedirectorHelperTask 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 |
---|
private static String | CHARSETmanager webapp's encoding. | protected String | charsetThe charset used during URL encoding. | 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(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(), CHARSET);
StringBuffer buff = new StringBuffer();
String error = null;
int msgPriority = Project.MSG_INFO;
boolean first = true;
while (true) {
int ch = reader.read();
if (ch < 0) {
break;
} else if ((ch == '\r") || (ch == '\n")) {
// in Win \r\n would cause handleOutput() to be called
// twice, the second time with an empty string,
// producing blank lines
if (buff.length() > 0) {
String line = buff.toString();
buff.setLength(0);
if (first) {
if (!line.startsWith("OK -")) {
error = line;
msgPriority = Project.MSG_ERR;
}
first = false;
}
handleOutput(line, msgPriority);
}
} else {
buff.append((char) ch);
}
}
if (buff.length() > 0) {
handleOutput(buff.toString(), msgPriority);
}
if (error != null && isFailOnError()) {
// exception should be thrown only if failOnError == true
// or error line will be logged twice
throw new BuildException(error);
}
} catch (Throwable t) {
if (isFailOnError()) {
throw new BuildException(t);
} else {
handleErrorOutput(t.getMessage());
}
} finally {
closeRedirector();
if (reader != null) {
try {
reader.close();
} catch (Throwable u) {
;
}
reader = null;
}
if (istream != null) {
try {
istream.close();
} catch (Throwable u) {
;
}
istream = null;
}
}
| 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 java.lang.String | getCharset()
return (this.charset);
| 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 | setCharset(java.lang.String charset)
this.charset = charset;
| 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;
|
|