00001
00027 package org.objectweb.jonas.ant;
00028
00029 import org.apache.tools.ant.BuildException;
00030 import org.apache.tools.ant.Project;
00031 import org.apache.tools.ant.taskdefs.Java;
00032
00037 public class JonasHotDeploymentTool extends BootstrapTask implements HotDeploymentTool {
00038
00042 private static final String ADMIN_CLASS = "org.objectweb.jonas.adm.JonasAdmin";
00043
00047 private ServerDeploy task;
00048
00052 private static final String[] VALID_ACTIONS = {ACTION_DELETE, ACTION_DEPLOY, ACTION_LIST, ACTION_UNDEPLOY,
00053 ACTION_UPDATE};
00054
00063 public void validateAttributes() throws BuildException {
00064 if (task.getAction() == null) {
00065 throw new BuildException("The \"action\" attribute must be set");
00066 }
00067
00068 if (!isActionValid()) {
00069 throw new BuildException("Invalid action \"" + task.getAction() + "\" passed");
00070 }
00071
00072 }
00073
00079 public void setTask(ServerDeploy task) {
00080 this.task = task;
00081 }
00082
00087 protected ServerDeploy getTask() {
00088 return task;
00089 }
00090
00098 protected boolean isActionValid() {
00099
00100 String action = getTask().getAction();
00101
00102 for (int i = 0; i < VALID_ACTIONS.length; i++) {
00103 if (action.equals(VALID_ACTIONS[i])) {
00104 return true;
00105 }
00106 }
00107
00108 return false;
00109 }
00110
00117 public void deploy() throws BuildException {
00118
00119 String action = getTask().getAction();
00120 Java bootstrapTask = getBootstraptask(ADMIN_CLASS);
00121 String fileName = getTask().getSource().getPath();
00122
00123 if (action.equals(ACTION_DEPLOY) || action.equals(ACTION_UPDATE)) {
00124 bootstrapTask.setTaskName("JOnAS/Deploy");
00125 bootstrapTask.createArg().setValue("-a");
00126 bootstrapTask.createArg().setValue(fileName);
00127 bootstrapTask.log("Deploying '" + fileName + "'...", Project.MSG_INFO);
00128 } else if (action.equals(ACTION_DELETE) || action.equals(ACTION_UNDEPLOY)) {
00129 bootstrapTask.setTaskName("JOnAS/Undeploy");
00130 bootstrapTask.createArg().setValue("-r");
00131 bootstrapTask.createArg().setValue(fileName);
00132 bootstrapTask.log("Undeploying '" + fileName + "'...", Project.MSG_INFO);
00133 } else if (action.equals(ACTION_LIST)) {
00134 bootstrapTask.setTaskName("JOnAS/List");
00135 bootstrapTask.createArg().setValue("-l");
00136 getTask().log("Listing beans ...", Project.MSG_INFO);
00137 } else {
00138 throw new BuildException("Invalid action \"" + action + "\" passed");
00139 }
00140
00141 bootstrapTask.createArg().setValue("-n");
00142 bootstrapTask.createArg().setValue(getServerName());
00143 bootstrapTask.executeJava();
00144 }
00145
00146 }