? jakarta-tomcat-catalina/site.patch Index: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/ant/AbstractC atalinaTask.java =================================================================== RCS file: /home/cvspublic/jakarta-tomcat-catalina/catalina/src/share/org/apache/catali na/ant/AbstractCatalinaTask.java,v retrieving revision 1.2 diff -u -r1.2 AbstractCatalinaTask.java --- jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/ant/AbstractC atalinaTask.java 6 Oct 2003 09:04:43 -0000 1.2 +++ jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/ant/AbstractC atalinaTask.java 19 Feb 2004 15:44:54 -0000 @@ -1,307 +1,354 @@ -/* - * $Header: /home/cvspublic/jakarta-tomcat-catalina/catalina/src/share/org/apache/catali na/ant/AbstractCatalinaTask.java,v 1.2 2003/10/06 09:04:43 remm Exp $ - * $Revision: 1.2 $ - * $Date: 2003/10/06 09:04:43 $ - * - * ==================================================================== - * - * The Apache Software License, Version 1.1 - * - * Copyright (c) 2002 The Apache Software Foundation. All rights - * reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. The end-user documentation included with the redistribution, if - * any, must include the following acknowlegement: - * "This product includes software developed by the - * Apache Software Foundation (http://www.apache.org/)." - * Alternately, this acknowlegement may appear in the software itself, - * if and wherever such third-party acknowlegements normally appear. - * - * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software - * Foundation" must not be used to endorse or promote products derived - * from this software without prior written permission. For written - * permission, please contact [EMAIL PROTECTED] - * - * 5. Products derived from this software may not be called "Apache" - * nor may "Apache" appear in their names without prior written - * permission of the Apache Group. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * ==================================================================== - * - * This software consists of voluntary contributions made by many - * individuals on behalf of the Apache Software Foundation. For more - * information on the Apache Software Foundation, please see - * <http://www.apache.org/>. - * - */ - - -package org.apache.catalina.ant; - - -import java.io.BufferedOutputStream; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.net.HttpURLConnection; -import java.net.URL; -import java.net.URLConnection; -import org.apache.catalina.util.Base64; -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.Task; - - -/** - * Abstract base class for Ant tasks that interact with the - * <em>Manager</em> web application for dynamically deploying and - * undeploying applications. These tasks require Ant 1.4 or later. - * - * @author Craig R. McClanahan - * @version $Revision: 1.2 $ $Date: 2003/10/06 09:04:43 $ - * @since 4.1 - */ - -public abstract class AbstractCatalinaTask extends Task { - - - // ----------------------------------------------------- Instance Variables - - - /** - * manager webapp's encoding. - */ - private static String CHARSET = "utf-8"; - - - // ------------------------------------------------------------- Properties - - - /** - * The login password for the <code>Manager</code> application. - */ - protected String password = null; - - public String getPassword() { - return (this.password); - } - - public void setPassword(String password) { - this.password = password; - } - - - /** - * The URL of the <code>Manager</code> application to be used. - */ - protected String url = "http://localhost:8080/manager"; - - public String getUrl() { - return (this.url); - } - - public void setUrl(String url) { - this.url = url; - } - - - /** - * The login username for the <code>Manager</code> application. - */ - protected String username = null; - - public String getUsername() { - return (this.username); - } - - public void setUsername(String username) { - this.username = username; - } - - - // --------------------------------------------------------- Public Methods - - - /** - * 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 - */ - public void execute() throws BuildException { - - if ((username == null) || (password == null) || (url == null)) { - throw new BuildException - ("Must specify all of 'username', 'password', and 'url'"); - } - - } - - - // ------------------------------------------------------ Protected Methods - - - /** - * Execute the specified command, based on the configured properties. - * - * @param command Command to be executed - * - * @exception BuildException if an error occurs - */ - public void execute(String command) throws BuildException { - - execute(command, null, null, -1); - - } - - - /** - * 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 - */ - public void execute(String command, InputStream istream, - String contentType, int contentLength) - throws BuildException { - - 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; - 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; - } - } - - } - - -} +/* + * $Header: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/ant /AbstractCatalinaTask.java,v 1.2 2003/10/06 09:04:43 remm Exp $ + * $Revision: 1.2 $ + * $Date: 2003/10/06 09:04:43 $ + * + * ==================================================================== + * + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, if + * any, must include the following acknowlegement: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowlegement may appear in the software itself, + * if and wherever such third-party acknowlegements normally appear. + * + * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software + * Foundation" must not be used to endorse or promote products derived + * from this software without prior written permission. For written + * permission, please contact [EMAIL PROTECTED] + * + * 5. Products derived from this software may not be called "Apache" + * nor may "Apache" appear in their names without prior written + * permission of the Apache Group. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * <http://www.apache.org/>. + * + */ + + +package org.apache.catalina.ant; + + +import java.io.BufferedOutputStream; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLConnection; +import org.apache.catalina.util.Base64; +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.Project; +import org.apache.tools.ant.Task; + + +/** + * Abstract base class for Ant tasks that interact with the + * <em>Manager</em> web application for dynamically deploying and + * undeploying applications. These tasks require Ant 1.4 or later. + * + * @author Craig R. McClanahan + * @version $Revision: 1.2 $ $Date: 2003/10/06 09:04:43 $ + * @since 4.1 + */ + +public abstract class AbstractCatalinaTask extends Task { + + + // ----------------------------------------------------- Instance Variables + + + /** + * manager webapp's encoding. + */ + private static String CHARSET = "utf-8"; + + + // ------------------------------------------------------------- Properties + + + /** + * The login password for the <code>Manager</code> application. + */ + protected String password = null; + + public String getPassword() { + return (this.password); + } + + public void setPassword(String password) { + this.password = password; + } + + + /** + * The URL of the <code>Manager</code> application to be used. + */ + protected String url = "http://localhost:8080/manager"; + + public String getUrl() { + return (this.url); + } + + public void setUrl(String url) { + this.url = url; + } + + + /** + * The login username for the <code>Manager</code> application. + */ + protected String username = null; + + public String getUsername() { + return (this.username); + } + + public void setUsername(String username) { + this.username = username; + } + + /** + * The http proxy for the <code>Manager</code> application. + */ + protected String isProxy = "false"; + + public String getIsProxy() { + return (this.isProxy); + } + + public void setIsProxy(String isProxy) { + this.isProxy = isProxy; + } + + /** + * The http proxy address for the <code>Manager</code> application. + */ + protected String proxyHost = null; + + public String getProxyHost() { + return (this.proxyHost); + } + + public void setProxyHost(String proxyHost) { + this.proxyHost = proxyHost; + } + + /** + * The http proxy port for the <code>Manager</code> application. + */ + protected String proxyPort = null; + + public String getProxyPort() { + return (this.proxyPort); + } + + public void setProxyPort(String proxyPort) { + this.proxyPort = proxyPort; + } + + // --------------------------------------------------------- Public Methods + + + /** + * 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 + */ + public void execute() throws BuildException { + if (isProxy.equals("true")) + { + System.setProperty("http.proxyHost", proxyHost); + System.setProperty("http.proxyPort", proxyPort); + } + if ((username == null) || (password == null) || (url == null)) { + throw new BuildException + ("Must specify all of 'username', 'password', and 'url'"); + } + + } + + + // ------------------------------------------------------ Protected Methods + + + /** + * Execute the specified command, based on the configured properties. + * + * @param command Command to be executed + * + * @exception BuildException if an error occurs + */ + public void execute(String command) throws BuildException { + + execute(command, null, null, -1); + + } + + + /** + * 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 + */ + public void execute(String command, InputStream istream, + String contentType, int contentLength) + throws BuildException { + + if (isProxy.equals("true")) + { + System.setProperty("http.proxyHost", proxyHost); + System.setProperty("http.proxyPort", proxyPort); + } + 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; + 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; + } + } + + } + + +}
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]