001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: *
017: */
018:
019: package org.apache.tools.ant.taskdefs.optional.j2ee;
020:
021: import java.io.File;
022: import java.util.Enumeration;
023: import java.util.Vector;
024: import org.apache.tools.ant.BuildException;
025: import org.apache.tools.ant.Task;
026:
027: /**
028: * Controls hot deployment tools for J2EE servers.
029: *
030: * This class is used as a framework for the creation of vendor specific
031: * hot deployment tools.
032: *
033: * @see org.apache.tools.ant.taskdefs.optional.j2ee.HotDeploymentTool
034: * @see org.apache.tools.ant.taskdefs.optional.j2ee.AbstractHotDeploymentTool
035: * @see org.apache.tools.ant.taskdefs.optional.j2ee.GenericHotDeploymentTool
036: * @see org.apache.tools.ant.taskdefs.optional.j2ee.WebLogicHotDeploymentTool
037: */
038: public class ServerDeploy extends Task {
039: /** The action to be performed. IE: "deploy", "delete", etc... **/
040: private String action;
041:
042: /** The source (fully-qualified path) to the component being deployed **/
043: private File source;
044:
045: /** The vendor specific tool for deploying the component **/
046: private Vector vendorTools = new Vector();
047:
048: ///////////////////////////////////////////////////////////////////////////
049: //
050: // Place vendor specific tool creations here.
051: //
052: ///////////////////////////////////////////////////////////////////////////
053:
054: /**
055: * Creates a generic deployment tool.
056: * <p>Ant calls this method on creation to handle embedded "generic" elements
057: * in the ServerDeploy task.
058: * @param tool An instance of GenericHotDeployment tool, passed in by Ant.
059: */
060: public void addGeneric(GenericHotDeploymentTool tool) {
061: tool.setTask(this );
062: vendorTools.addElement(tool);
063: }
064:
065: /**
066: * Creates a WebLogic deployment tool, for deployment to WebLogic servers.
067: * <p>Ant calls this method on creation to handle embedded "weblogic" elements
068: * in the ServerDeploy task.
069: * @param tool An instance of WebLogicHotDeployment tool, passed in by Ant.
070: */
071: public void addWeblogic(WebLogicHotDeploymentTool tool) {
072: tool.setTask(this );
073: vendorTools.addElement(tool);
074: }
075:
076: /**
077: * Creates a JOnAS deployment tool, for deployment to JOnAS servers.
078: * <p>Ant calls this method on creation to handle embedded "jonas" elements
079: * in the ServerDeploy task.
080: * @param tool An instance of JonasHotDeployment tool, passed in by Ant.
081: */
082: public void addJonas(JonasHotDeploymentTool tool) {
083: tool.setTask(this );
084: vendorTools.addElement(tool);
085: }
086:
087: ///////////////////////////////////////////////////////////////////////////
088: //
089: // Execute method
090: //
091: ///////////////////////////////////////////////////////////////////////////
092:
093: /**
094: * Execute the task.
095: * <p>This method calls the deploy() method on each of the vendor-specific tools
096: * in the <code>vendorTools</code> collection. This performs the actual
097: * process of deployment on each tool.
098: * @exception org.apache.tools.ant.BuildException if the attributes
099: * are invalid or incomplete, or a failure occurs in the deployment process.
100: */
101: public void execute() throws BuildException {
102: for (Enumeration e = vendorTools.elements(); e
103: .hasMoreElements();) {
104: HotDeploymentTool tool = (HotDeploymentTool) e
105: .nextElement();
106: tool.validateAttributes();
107: tool.deploy();
108: }
109: }
110:
111: ///////////////////////////////////////////////////////////////////////////
112: //
113: // Set/get methods
114: //
115: ///////////////////////////////////////////////////////////////////////////
116:
117: /**
118: * Returns the action field.
119: * @return A string representing the "action" attribute.
120: */
121: public String getAction() {
122: return action;
123: }
124:
125: /**
126: * The action to be performed, usually "deploy"; required.
127: * Some tools support additional actions, such as "delete", "list", "undeploy", "update"...
128: * @param action A String representing the "action" attribute.
129: */
130: public void setAction(String action) {
131: this .action = action;
132: }
133:
134: /**
135: * Returns the source field (the path/filename of the component to be
136: * deployed.
137: * @return A File object representing the "source" attribute.
138: */
139: public File getSource() {
140: return source;
141: }
142:
143: /**
144: * The filename of the component to be deployed; optional
145: * depending upon the tool and the action.
146: * @param source String representing the "source" attribute.
147: */
148: public void setSource(File source) {
149: this.source = source;
150: }
151: }
|