All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.ow2.jonas.ant.JonasHotDeploymentTool Maven / Gradle / Ivy

/**
 * JOnAS: Java(TM) Open Application Server
 * Copyright (C) 2004 Bull S.A.
 * Contact: [email protected]
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
 * USA
 *
 * Initial developer: Florent BENOIT
 * --------------------------------------------------------------------------
 * $Id: JonasHotDeploymentTool.java 15428 2008-10-07 11:20:29Z sauthieg $
 * --------------------------------------------------------------------------
 */

package org.ow2.jonas.ant;

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.Java;

/**
 * Class used to manage deployment on JOnAS (with ant and ServerDeploy task)
 * @author Florent Benoit
 */
public class JonasHotDeploymentTool extends BootstrapTask implements HotDeploymentTool {

    /**
     * Admin class (JonasAdmin class)
     */
    private static final String ADMIN_CLASS = "org.ow2.jonas.commands.admin.ClientAdmin";

    /**
     * The parent task
     */
    private ServerDeploy task;

    /**
     * All actions supported by JOnAS
     */
    private static final String[] VALID_ACTIONS = {ACTION_DELETE, ACTION_DEPLOY, ACTION_LIST, ACTION_UNDEPLOY,
            ACTION_UPDATE};

    /**
     * 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. * @throws 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"); } } /** * 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; } /** * 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. * @return true if the "action" attribute is valid, false if not. */ protected boolean isActionValid() { String action = getTask().getAction(); for (int i = 0; i < VALID_ACTIONS.length; i++) { if (action.equals(VALID_ACTIONS[i])) { return true; } } return false; } /** * 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 void deploy() throws BuildException { String action = getTask().getAction(); Java bootstrapTask = getBootstraptask(ADMIN_CLASS); String fileName = getTask().getSource().getPath(); if (action.equals(ACTION_DEPLOY) || action.equals(ACTION_UPDATE)) { bootstrapTask.setTaskName("JOnAS/Deploy"); bootstrapTask.createArg().setValue("-a"); bootstrapTask.createArg().setValue(fileName); bootstrapTask.log("Deploying '" + fileName + "'...", Project.MSG_INFO); } else if (action.equals(ACTION_DELETE) || action.equals(ACTION_UNDEPLOY)) { bootstrapTask.setTaskName("JOnAS/Undeploy"); bootstrapTask.createArg().setValue("-r"); bootstrapTask.createArg().setValue(fileName); bootstrapTask.log("Undeploying '" + fileName + "'...", Project.MSG_INFO); } else if (action.equals(ACTION_LIST)) { bootstrapTask.setTaskName("JOnAS/List"); bootstrapTask.createArg().setValue("-l"); getTask().log("Listing beans ...", Project.MSG_INFO); } else { throw new BuildException("Invalid action \"" + action + "\" passed"); } bootstrapTask.createArg().setValue("-n"); bootstrapTask.createArg().setValue(getServerName()); bootstrapTask.executeJava(); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy