aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/j2ee/WebLogicHotDeploymentTool.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/WebLogicHotDeploymentTool.java')
-rw-r--r--framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/j2ee/WebLogicHotDeploymentTool.java247
1 files changed, 247 insertions, 0 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/j2ee/WebLogicHotDeploymentTool.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/j2ee/WebLogicHotDeploymentTool.java
new file mode 100644
index 00000000..da875092
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/j2ee/WebLogicHotDeploymentTool.java
@@ -0,0 +1,247 @@
+/*
+ * 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;
+
+/**
+ * An Ant wrapper task for the weblogic.deploy tool. This is used to
+ * hot-deploy J2EE applications to a running WebLogic server.
+ * This is <b>not</b> the same as creating the application archive.
+ * This task assumes the archive (EAR, JAR, or WAR) file has been
+ * assembled and is supplied as the "source" attribute.
+ * <p>In the end, this task assembles the commandline parameters
+ * and runs the weblogic.deploy tool in a separate JVM.
+ *
+ * @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 WebLogicHotDeploymentTool extends AbstractHotDeploymentTool
+ implements HotDeploymentTool {
+ private static final int STRING_BUFFER_SIZE = 1024;
+ /** The classname of the tool to run **/
+ private static final String WEBLOGIC_DEPLOY_CLASS_NAME = "weblogic.deploy";
+
+ /** All the valid actions that weblogic.deploy permits **/
+ private static final String[] VALID_ACTIONS
+ = {ACTION_DELETE, ACTION_DEPLOY, ACTION_LIST, ACTION_UNDEPLOY, ACTION_UPDATE};
+
+ /** Represents the "-debug" flag from weblogic.deploy **/
+ private boolean debug;
+
+ /** The application name that is being deployed **/
+ private String application;
+
+ /** The component name:target(s) for the "-component" argument of weblogic.deploy **/
+ private String component;
+
+ /**
+ * Perform the actual deployment.
+ * For this implementation, a JVM is spawned and the weblogic.deploy
+ * tools is executed.
+ * @exception org.apache.tools.ant.BuildException if the attributes are invalid or incomplete.
+ */
+ public void deploy() {
+ Java java = new Java(getTask());
+ java.setFork(true);
+ java.setFailonerror(true);
+ java.setClasspath(getClasspath());
+
+ java.setClassname(WEBLOGIC_DEPLOY_CLASS_NAME);
+ java.createArg().setLine(getArguments());
+ java.execute();
+ }
+
+ /**
+ * Validates the passed in attributes.
+ * <p>The rules are:
+ * <ol><li>If action is "deploy" or "update" the "application" and "source"
+ * attributes must be supplied.
+ * <li>If action is "delete" or "undeploy" the "application" attribute must
+ * be supplied.
+ * @exception org.apache.tools.ant.BuildException if the attributes are invalid or incomplete
+ */
+ public void validateAttributes() throws BuildException {
+ super.validateAttributes();
+
+ String action = getTask().getAction();
+
+ // check that the password has been set
+ if ((getPassword() == null)) {
+ throw new BuildException("The password attribute must be set.");
+ }
+
+ // check for missing application on deploy & update
+ if ((action.equals(ACTION_DEPLOY) || action.equals(ACTION_UPDATE))
+ && application == null) {
+ throw new BuildException("The application attribute must be set "
+ + "if action = " + action);
+ }
+
+ // check for missing source on deploy & update
+ if ((action.equals(ACTION_DEPLOY) || action.equals(ACTION_UPDATE))
+ && getTask().getSource() == null) {
+ throw new BuildException("The source attribute must be set if "
+ + "action = " + action);
+ }
+
+ // check for missing application on delete & undeploy
+ if ((action.equals(ACTION_DELETE) || action.equals(ACTION_UNDEPLOY))
+ && application == null) {
+ throw new BuildException("The application attribute must be set if "
+ + "action = " + action);
+ }
+ }
+
+ /**
+ * Builds the arguments to pass to weblogic.deploy according to the
+ * supplied action.
+ * @return A String containing the arguments for the weblogic.deploy tool.
+ * @throws BuildException if there is an error.
+ */
+ public String getArguments() throws BuildException {
+ String action = getTask().getAction();
+ String args = null;
+
+ if (action.equals(ACTION_DEPLOY) || action.equals(ACTION_UPDATE)) {
+ args = buildDeployArgs();
+ } else if (action.equals(ACTION_DELETE) || action.equals(ACTION_UNDEPLOY)) {
+ args = buildUndeployArgs();
+ } else if (action.equals(ACTION_LIST)) {
+ args = buildListArgs();
+ }
+
+ return args;
+ }
+
+ /**
+ * Determines if the action supplied is valid.
+ * <p>Valid actions are contained in the static array VALID_ACTIONS
+ * @return true if the action attribute is valid, false if not.
+ */
+ protected boolean isActionValid() {
+ boolean valid = false;
+
+ String action = getTask().getAction();
+
+ for (int i = 0; i < VALID_ACTIONS.length; i++) {
+ if (action.equals(VALID_ACTIONS[i])) {
+ valid = true;
+ break;
+ }
+ }
+
+ return valid;
+ }
+
+ /**
+ * Builds the prefix arguments to pass to weblogic.deploy.
+ * These arguments are generic across all actions.
+ * @return A StringBuffer containing the prefix arguments.
+ * The action-specific build methods will append to this StringBuffer.
+ */
+ protected StringBuffer buildArgsPrefix() {
+ ServerDeploy task = getTask();
+ // constructs the "-url <url> -debug <action> <password>" portion
+ // of the commmand line
+ return new StringBuffer(STRING_BUFFER_SIZE)
+ .append((getServer() != null)
+ ? "-url " + getServer()
+ : "")
+ .append(" ")
+ .append(debug ? "-debug " : "")
+ .append((getUserName() != null)
+ ? "-username " + getUserName()
+ : "")
+ .append(" ")
+ .append(task.getAction()).append(" ")
+ .append(getPassword()).append(" ");
+ }
+
+ /**
+ * Builds the arguments to pass to weblogic.deploy for deployment actions
+ * ("deploy" and "update").
+ * @return A String containing the full argument string for weblogic.deploy.
+ */
+ protected String buildDeployArgs() {
+ String args = buildArgsPrefix()
+ .append(application).append(" ")
+ .append(getTask().getSource())
+ .toString();
+
+ if (component != null) {
+ args = "-component " + component + " " + args;
+ }
+
+ return args;
+ }
+
+ /**
+ * Builds the arguments to pass to weblogic.deploy for undeployment actions
+ * ("undeploy" and "delete").
+ * @return A String containing the full argument string for weblogic.deploy.
+ */
+ protected String buildUndeployArgs() {
+ return buildArgsPrefix()
+ .append(application).append(" ")
+ .toString();
+ }
+
+ /**
+ * Builds the arguments to pass to weblogic.deploy for the list action
+ * @return A String containing the full argument string for weblogic.deploy.
+ */
+ protected String buildListArgs() {
+ return buildArgsPrefix()
+ .toString();
+ }
+
+ /**
+ * If set to true, additional information will be
+ * printed during the deployment process; optional.
+ * @param debug A boolean representing weblogic.deploy "-debug" flag.
+ */
+ public void setDebug(boolean debug) {
+ this.debug = debug;
+ }
+
+ /**
+ * The name of the application being deployed; required.
+ * @param application A String representing the application portion of the
+ * weblogic.deploy command line.
+ */
+ public void setApplication(String application) {
+ this.application = application;
+ }
+
+ /**
+ * the component string for the deployment targets; optional.
+ * It is in the form <code>&lt;component&gt;:&lt;target1&gt;,&lt;target2&gt;...</code>
+ * Where component is the archive name (minus the .jar, .ear, .war
+ * extension). Targets are the servers where the components will be deployed
+
+ * @param component A String representing the value of the "-component"
+ * argument of the weblogic.deploy command line argument.
+ */
+ public void setComponent(String component) {
+ this.component = component;
+ }
+}