aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/j2ee/GenericHotDeploymentTool.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/j2ee/GenericHotDeploymentTool.java')
-rw-r--r--framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/j2ee/GenericHotDeploymentTool.java140
1 files changed, 140 insertions, 0 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/j2ee/GenericHotDeploymentTool.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/j2ee/GenericHotDeploymentTool.java
new file mode 100644
index 00000000..5a5abbab
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/j2ee/GenericHotDeploymentTool.java
@@ -0,0 +1,140 @@
+/*
+ * 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.taskdefs.Java;
+import org.apache.tools.ant.types.Commandline;
+
+/**
+ * A generic tool for J2EE server hot deployment.
+ * <p>The simple implementation spawns a JVM with the supplied
+ * class name, jvm args, and arguments.
+ *
+ * @see org.apache.tools.ant.taskdefs.optional.j2ee.HotDeploymentTool
+ * @see org.apache.tools.ant.taskdefs.optional.j2ee.AbstractHotDeploymentTool
+ * @see org.apache.tools.ant.taskdefs.optional.j2ee.ServerDeploy
+ */
+public class GenericHotDeploymentTool extends AbstractHotDeploymentTool {
+ /** A Java task used to run the deployment tool **/
+ private Java java;
+
+ /** The fully qualified class name of the deployment tool **/
+ private String className;
+
+ /** List of valid actions **/
+ private static final String[] VALID_ACTIONS = {ACTION_DEPLOY};
+
+ /**
+ * Add a nested argument element to hand to the deployment tool; optional.
+ * @return A Commandline.Argument object representing the
+ * command line argument being passed when the deployment
+ * tool is run. IE: "-user=mark", "-password=venture"...
+ */
+ public Commandline.Argument createArg() {
+ return java.createArg();
+ }
+
+ /**
+ * Add a nested argument element to hand to the JVM running the
+ * deployment tool.
+ * Creates a nested arg element.
+ * @return A Commandline.Argument object representing the
+ * JVM command line argument being passed when the deployment
+ * tool is run. IE: "-ms64m", "-mx128m"...
+ */
+ public Commandline.Argument createJvmarg() {
+ return java.createJvmarg();
+ }
+
+ /**
+ * 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.
+ * For this generic implementation, the only valid action is "deploy"
+ * @return true if the "action" attribute is valid, false if not.
+ */
+ protected boolean isActionValid() {
+ return (getTask().getAction().equals(VALID_ACTIONS[0]));
+ }
+
+ /**
+ * Sets the parent task.
+ * @param task An ServerDeploy object representing the parent task.
+ * @ant.attribute ignored="true"
+ */
+ public void setTask(ServerDeploy task) {
+ super.setTask(task);
+ java = new Java(task);
+ }
+
+ /**
+ * Perform the actual deployment.
+ * For this generic implementation, a JVM is spawned using the
+ * supplied classpath, classname, JVM args, and command line arguments.
+ * @exception org.apache.tools.ant.BuildException if the attributes are invalid or incomplete.
+ */
+ public void deploy() throws BuildException {
+ java.setClassname(className);
+ java.setClasspath(getClasspath());
+ java.setFork(true);
+ java.setFailonerror(true);
+ java.execute();
+ }
+
+ /**
+ * Validates the passed in attributes.
+ * Ensures the className and arguments attribute have been set.
+ * @exception org.apache.tools.ant.BuildException if the attributes are invalid or incomplete.
+ */
+ public void validateAttributes() throws BuildException {
+ super.validateAttributes();
+
+ if (className == null) {
+ throw new BuildException("The classname attribute must be set");
+ }
+ }
+
+ /**
+ * The name of the class to execute to perform
+ * deployment; required.
+ * Example: "com.foobar.tools.deploy.DeployTool"
+ * @param className The fully qualified class name of the class
+ * to perform deployment.
+ */
+ public void setClassName(String className) {
+ this.className = className;
+ }
+
+ /**
+ * get the java attribute.
+ * @return the java attribute.
+ */
+ public Java getJava() {
+ return java;
+ }
+
+ /**
+ * Get the classname attribute.
+ * @return the classname value.
+ */
+ public String getClassName() {
+ return className;
+ }
+}