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 }