AbstractHotDeploymentTool (Apache Ant API)
Date: 2016-08-23

org.apache.tools.ant.taskdefs.optional.j2ee

## Class AbstractHotDeploymentTool

- java.lang.Object
- - org.apache.tools.ant.taskdefs.optional.j2ee.AbstractHotDeploymentTool

- All Implemented Interfaces:
    HotDeploymentTool
  Direct Known Subclasses:
    GenericHotDeploymentTool, WebLogicHotDeploymentTool

      public abstract class AbstractHotDeploymentTool
      extends java.lang.Object
      implements HotDeploymentTool

  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.
  1. Implement the `isActionValid()`method to insure the action supplied as the "action" attribute of ServerDeploy is valid.``
  2. Implement the `validateAttributes()` method to insure all required attributes are supplied, and are in the correct format.
  3. Add a `add<TOOL>` method to the ServerDeploy class. This method will be called when Ant encounters a `add<TOOL>` task nested in the `serverdeploy` task.
  4. Define the `deploy` 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 Also:
    `HotDeploymentTool`, `ServerDeploy`

- - ### Field Summary

    - ### Fields inherited from interface org.apache.tools.ant.taskdefs.optional.j2ee.HotDeploymentTool

      `ACTION_DELETE, ACTION_DEPLOY, ACTION_LIST, ACTION_UNDEPLOY, ACTION_UPDATE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractHotDeploymentTool()`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `Path` | `createClasspath()` Add a classpath as a nested element.
    `abstract void` | `deploy()` Perform the actual deployment.
    `Path` | `getClasspath()` gets the classpath field.
    `java.lang.String` | `getPassword()` Returns the password field.
    `java.lang.String` | `getServer()` Returns the server field.
    `protected ServerDeploy` | `getTask()` Returns the task field, a ServerDeploy object.
    `java.lang.String` | `getUserName()` Returns the userName field.
    `protected abstract boolean` | `isActionValid()` Determines if the "action" attribute defines a valid action.
    `void` | `setClasspath(Path classpath)` The classpath to be passed to the JVM running the tool; optional depending upon the tool.
    `void` | `setPassword(java.lang.String password)` The password of the user; optional.
    `void` | `setServer(java.lang.String server)` The address or URL for the server where the component will be deployed.
    `void` | `setTask(ServerDeploy task)` Sets the parent task.
    `void` | `setUserName(java.lang.String userName)` The user with privileges to deploy applications to the server; optional.
    `void` | `validateAttributes()` Validates the passed in attributes.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### AbstractHotDeploymentTool

          public AbstractHotDeploymentTool()

  - ### Method Detail

    - #### createClasspath

          public Path createClasspath()

      Add a classpath as a nested element.
      Returns:
        A Path object representing the classpath to be used.

    - #### isActionValid

          protected abstract boolean isActionValid()

      Determines if the "action" attribute defines a valid action.

      Subclasses should determine if the action passed in is supported by the vendor's deployment tool.

      Actions may by "deploy", "delete", etc... It all depends on the tool.

      Returns:
        true if the "action" attribute is valid, false if not.

    - #### validateAttributes

          public void validateAttributes()
                                  throws BuildException

      Validates the passed in attributes. Subclasses should chain to this super-method to insure validation of boilerplate attributes.

      Only the "action" attribute is required in the base class. Subclasses should check attributes accordingly.

      Specified by:
        `validateAttributes` in interface `HotDeploymentTool`
      Throws:
        `BuildException` - if the attributes are invalid or incomplete.

    - #### deploy

          public abstract void deploy()
                               throws BuildException

      Perform the actual deployment. It's up to the subclasses to implement the actual behavior.
      Specified by:
        `deploy` in interface `HotDeploymentTool`
      Throws:
        `BuildException` - if the attributes are invalid or incomplete.

    - #### setTask

          public void setTask(ServerDeploy task)

      Sets the parent task.
      Specified by:
        `setTask` in interface `HotDeploymentTool`
      Parameters:
        `task` - a ServerDeploy object representing the parent task.

    - #### getTask

          protected ServerDeploy getTask()

      Returns the task field, a ServerDeploy object.
      Returns:
        An ServerDeploy representing the parent task.

    - #### getClasspath

          public Path getClasspath()

      gets the classpath field.
      Returns:
        A Path representing the "classpath" attribute.

    - #### setClasspath

          public void setClasspath(Path 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.
      Parameters:
        `classpath` - A Path object representing the "classpath" attribute.

    - #### getUserName

          public java.lang.String getUserName()

      Returns the userName field.
      Returns:
        A String representing the "userName" attribute.

    - #### setUserName

          public void setUserName(java.lang.String userName)

      The user with privileges to deploy applications to the server; optional.
      Parameters:
        `userName` - A String representing the "userName" attribute.

    - #### getPassword

          public java.lang.String getPassword()

      Returns the password field.
      Returns:
        A String representing the "password" attribute.

    - #### setPassword

          public void setPassword(java.lang.String password)

      The password of the user; optional.
      Parameters:
        `password` - A String representing the "password" attribute.

    - #### getServer

          public java.lang.String getServer()

      Returns the server field.
      Returns:
        A String representing the "server" attribute.

    - #### setServer

          public void setServer(java.lang.String server)

      The address or URL for the server where the component will be deployed.
      Parameters:
        `server` - A String representing the "server" attribute.