JOnASBaseTask.java

00001 
00026 package org.objectweb.jonas.ant;
00027 
00028 import java.io.File;
00029 import java.util.ArrayList;
00030 import java.util.Iterator;
00031 import java.util.List;
00032 
00033 import org.apache.tools.ant.BuildException;
00034 import org.apache.tools.ant.Project;
00035 import org.apache.tools.ant.Task;
00036 import org.apache.tools.ant.taskdefs.Copy;
00037 import org.apache.tools.ant.types.FileSet;
00038 import org.apache.tools.ant.types.PatternSet.NameEntry;
00039 import org.objectweb.jonas.ant.jonasbase.Archives;
00040 import org.objectweb.jonas.ant.jonasbase.BaseTaskItf;
00041 import org.objectweb.jonas.ant.jonasbase.Carol;
00042 import org.objectweb.jonas.ant.jonasbase.Db;
00043 import org.objectweb.jonas.ant.jonasbase.Dbm;
00044 import org.objectweb.jonas.ant.jonasbase.Ejbjars;
00045 import org.objectweb.jonas.ant.jonasbase.JdbcRa;
00046 import org.objectweb.jonas.ant.jonasbase.Jms;
00047 import org.objectweb.jonas.ant.jonasbase.Lib;
00048 import org.objectweb.jonas.ant.jonasbase.Mail;
00049 import org.objectweb.jonas.ant.jonasbase.Rars;
00050 import org.objectweb.jonas.ant.jonasbase.Services;
00051 import org.objectweb.jonas.ant.jonasbase.Tasks;
00052 import org.objectweb.jonas.ant.jonasbase.Wars;
00053 import org.objectweb.jonas.ant.jonasbase.WebContainer;
00054 import org.objectweb.jonas.ant.jonasbase.WsdlPublish;
00055 
00061 public class JOnASBaseTask extends Task {
00062 
00066     public static final String JONAS_CONF_FILE = "jonas.properties";
00067 
00071     public static final String JORAM_CONF_FILE = "a3servers.xml";
00072 
00076     public static final String JORAM_ADMIN_CONF_FILE = "joram-admin.cfg";
00077 
00081     public static final String CAROL_CONF_FILE = "carol.properties";
00082 
00086     public static final String TOMCAT_CONF_FILE = "server.xml";
00087 
00091     public static final String JETTY_CONF_FILE = "jetty5.xml";
00092 
00096     public static final String P6SPY_CONF_FILE = "spy.properties";
00097 
00101     public static final String[] WARS_LIST = new String[] {"juddi.war", "autoload/jonasAdmin.war"};
00102 
00106     public static final String[] RARS_LIST =  new String[] {"autoload/JOnAS_jdbcCP.rar", "autoload/JOnAS_jdbcDM.rar", "autoload/JOnAS_jdbcDS.rar", "autoload/JOnAS_jdbcXA.rar"};
00107 
00111     public static final String[] EJBJARS_LIST = new String[] {"autoload/mejb.jar"};
00112 
00113 
00117     private File jonasRoot = null;
00118 
00122     private File destDir = null;
00123 
00127     private boolean onlyUpdate = false;
00128 
00132     private List tasks = null;
00133 
00137     public JOnASBaseTask() {
00138         tasks = new ArrayList();
00139     }
00140 
00145     public void execute() {
00146         if (jonasRoot == null) {
00147             throw new BuildException("jonasRoot element is not set");
00148         }
00149 
00150         if (destDir == null) {
00151             throw new BuildException("destDir element is not set");
00152         }
00153 
00154         if (jonasRoot.getPath().equals(destDir.getPath())) {
00155             throw new BuildException("jonasRoot and destDir is the same path !");
00156         }
00157 
00158         File jprops = new File(destDir.getPath() + File.separator + "conf" + File.separator + "jonas.properties");
00159 
00160         if (onlyUpdate) {
00161             if (jprops.exists()) {
00162                 log("Only updating JONAS_BASE in the directory '" + destDir + "' from source directory '" + jonasRoot + "'",
00163                     Project.MSG_INFO);
00164                 updateJonasBase();
00165                 return;
00166             } else {
00167                 throw new BuildException("JOnAS base directory '" + destDir.getPath() + "' doesn't exists. Cannot update.");
00168             }
00169         }
00170 
00171         // First, create JOnAS base
00172         log("Creating JONAS_BASE in the directory '" + destDir + "' from source directory '" + jonasRoot + "'",
00173                 Project.MSG_INFO);
00174         Copy copy = new Copy();
00175         configure(copy);
00176         copy.setTodir(destDir);
00177         FileSet fileSet = new FileSet();
00178         fileSet.setDir(new File(new File(jonasRoot, "templates"), "conf"));
00179         copy.addFileset(fileSet);
00180         copy.setOverwrite(true);
00181         copy.execute();
00182 
00183         for (Iterator it = tasks.iterator(); it.hasNext();) {
00184             BaseTaskItf task = (BaseTaskItf) it.next();
00185             task.setDestDir(destDir);
00186             task.setJonasRoot(jonasRoot);
00187             configure((Task) task);
00188             String info = task.getLogInfo();
00189             if (info != null) {
00190                 log(info, Project.MSG_INFO);
00191             }
00192             task.execute();
00193         }
00194 
00195         // Then update JonasBase
00196         updateJonasBase();
00197     }
00198 
00202     private void updateJonasBase() {
00203         Archives wars = new Wars();
00204         updateJonasBaseForArchives(wars, "webapps", WARS_LIST);
00205 
00206         Archives ejbjars = new Ejbjars();
00207         updateJonasBaseForArchives(ejbjars, "ejbjars", EJBJARS_LIST);
00208 
00209         Archives rars = new Rars();
00210         updateJonasBaseForArchives(rars, "rars", RARS_LIST);
00211 
00212     }
00213 
00220     private void updateJonasBaseForArchives(Archives archives, String folderName, String[] listOfIncludes) {
00221         configure(archives);
00222         archives.setDestDir(destDir);
00223         FileSet fileSet = new FileSet();
00224         fileSet.setDir(new File(jonasRoot, folderName));
00225         for (int f = 0; f < listOfIncludes.length; f++) {
00226             NameEntry ne = fileSet.createInclude();
00227             ne.setName(listOfIncludes[f]);
00228         }
00229         archives.addFileset(fileSet);
00230         archives.setOverwrite(true);
00231         String info = archives.getLogInfo();
00232         if (info != null) {
00233             log(info, Project.MSG_INFO);
00234         }
00235         archives.execute();
00236     }
00237 
00242     public void addTasks(Tasks subTasks) {
00243         if (subTasks != null) {
00244             for (Iterator it = subTasks.getTasks().iterator(); it.hasNext();) {
00245                 tasks.add(it.next());
00246             }
00247         }
00248     }
00249 
00254     public void addTask(BaseTaskItf task) {
00255         if (task != null) {
00256             tasks.add(task);
00257         }
00258     }
00259 
00264     public void addConfiguredServices(Services servicesTasks) {
00265         addTask(servicesTasks);
00266     }
00267 
00272     public void addConfiguredJms(Jms jmsTasks) {
00273         addTasks(jmsTasks);
00274     }
00275 
00280     public void addConfiguredJdbcRa(JdbcRa jdbcRaTask) {
00281         addTask(jdbcRaTask);
00282     }
00283 
00288     public void addConfiguredMail(Mail mailTask) {
00289         addTask(mailTask);
00290     }
00291 
00296     public void addConfiguredDb(Db dbTask) {
00297         addTask(dbTask);
00298     }
00299 
00304     public void addConfiguredDbm(Dbm dbTask) {
00305         addTask(dbTask);
00306     }
00311     public void addConfiguredLib(Lib libTask) {
00312         addTask(libTask);
00313     }
00314 
00319     public void addConfiguredWsdlPublish(WsdlPublish wsdlTask) {
00320         addTask(wsdlTask);
00321     }
00322 
00327     public void addConfiguredCarol(Carol carolTasks) {
00328         addTasks(carolTasks);
00329     }
00330 
00335     public void addConfiguredWebContainer(WebContainer webContainerTasks) {
00336         addTasks(webContainerTasks);
00337     }
00338 
00343     public void setDestDir(File destDir) {
00344         this.destDir = destDir;
00345     }
00346 
00351     public void setJonasRoot(File jonasRoot) {
00352         this.jonasRoot = jonasRoot;
00353     }
00354 
00359     private void configure(Task task) {
00360         task.setTaskName(getTaskName());
00361         task.setProject(getProject());
00362     }
00363 
00364 
00369     public void setUpdate(boolean onlyUpdate) {
00370         this.onlyUpdate = onlyUpdate;
00371     }
00372 
00373 }

Generated on Tue Feb 15 15:05:14 2005 for JOnAS by  doxygen 1.3.9.1