diff options
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/j2ee/AbstractHotDeploymentTool.java')
-rw-r--r-- | framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/j2ee/AbstractHotDeploymentTool.java | 193 |
1 files changed, 193 insertions, 0 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/j2ee/AbstractHotDeploymentTool.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/j2ee/AbstractHotDeploymentTool.java new file mode 100644 index 00000000..fdbde749 --- /dev/null +++ b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/j2ee/AbstractHotDeploymentTool.java @@ -0,0 +1,193 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.tools.ant.taskdefs.optional.j2ee; + +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.types.Path; + +/** + * Abstract class to support vendor-specific hot deployment tools. + * This class will validate boilerplate attributes. + * + * Subclassing this class for a vendor specific tool involves the + * following. + * <ol><li>Implement the <code>isActionValid()<code> method to insure the + * action supplied as the "action" attribute of ServerDeploy is valid. + * <li>Implement the <code>validateAttributes()</code> method to insure + * all required attributes are supplied, and are in the correct format. + * <li>Add a <code>add<TOOL></code> method to the ServerDeploy + * class. This method will be called when Ant encounters a + * <code>add<TOOL></code> task nested in the + * <code>serverdeploy</code> task. + * <li>Define the <code>deploy</code> method. This method should perform + * whatever task it takes to hot-deploy the component. IE: spawn a JVM and + * run class, exec a native executable, run Java code... + * + * @see org.apache.tools.ant.taskdefs.optional.j2ee.HotDeploymentTool + * @see org.apache.tools.ant.taskdefs.optional.j2ee.ServerDeploy + */ +public abstract class AbstractHotDeploymentTool implements HotDeploymentTool { + /** The parent task **/ + private ServerDeploy task; + + /** The classpath passed to the JVM on execution. **/ + private Path classpath; + + /** The username for the deployment server. **/ + private String userName; + + /** The password for the deployment server. **/ + private String password; + + /** The address of the deployment server **/ + private String server; + + /** + * Add a classpath as a nested element. + * @return A Path object representing the classpath to be used. + */ + public Path createClasspath() { + if (classpath == null) { + classpath = new Path(task.getProject()); + } + return classpath.createPath(); + } + + /** + * Determines if the "action" attribute defines a valid action. + * <p>Subclasses should determine if the action passed in is + * supported by the vendor's deployment tool. + * <p>Actions may by "deploy", "delete", etc... It all depends + * on the tool. + * @return true if the "action" attribute is valid, false if not. + */ + protected abstract boolean isActionValid(); + + /** + * Validates the passed in attributes. + * Subclasses should chain to this super-method to insure + * validation of boilerplate attributes. + * <p>Only the "action" attribute is required in the + * base class. Subclasses should check attributes accordingly. + * @exception org.apache.tools.ant.BuildException if the attributes are invalid or incomplete. + */ + public void validateAttributes() throws BuildException { + if (task.getAction() == null) { + throw new BuildException("The \"action\" attribute must be set"); + } + + if (!isActionValid()) { + throw new BuildException("Invalid action \"" + task.getAction() + "\" passed"); + } + + if (classpath == null) { + throw new BuildException("The classpath attribute must be set"); + } + } + + /** + * Perform the actual deployment. + * It's up to the subclasses to implement the actual behavior. + * @exception org.apache.tools.ant.BuildException if the attributes are invalid or incomplete. + */ + public abstract void deploy() throws BuildException; + + /** + * Sets the parent task. + * @param task a ServerDeploy object representing the parent task. + * @ant.attribute ignore="true" + */ + public void setTask(ServerDeploy task) { + this.task = task; + } + + /** + * Returns the task field, a ServerDeploy object. + * @return An ServerDeploy representing the parent task. + */ + protected ServerDeploy getTask() { + return task; + } + + /** + * gets the classpath field. + * @return A Path representing the "classpath" attribute. + */ + public Path getClasspath() { + return classpath; + } + + /** + * The classpath to be passed to the JVM running the tool; + * optional depending upon the tool. + * The classpath may also be supplied as a nested element. + * @param classpath A Path object representing the "classpath" attribute. + */ + public void setClasspath(Path classpath) { + this.classpath = classpath; + } + + /** + * Returns the userName field. + * @return A String representing the "userName" attribute. + */ + public String getUserName() { + return userName; + } + + /** + * The user with privileges to deploy applications to the server; optional. + * @param userName A String representing the "userName" attribute. + */ + public void setUserName(String userName) { + this.userName = userName; + } + + /** + * Returns the password field. + * @return A String representing the "password" attribute. + */ + public String getPassword() { + return password; + } + + /** + * The password of the user; optional. + * @param password A String representing the "password" attribute. + */ + public void setPassword(String password) { + this.password = password; + } + + /** + * Returns the server field. + * @return A String representing the "server" attribute. + */ + public String getServer() { + return server; + } + + /** + * The address or URL for the server where the component will be deployed. + * @param server A String representing the "server" attribute. + */ + public void setServer(String server) { + this.server = server; + } +} |