00001
00026 package org.objectweb.jonas_lib.genbase.modifier;
00027
00028 import java.io.File;
00029 import java.util.Iterator;
00030 import java.util.List;
00031 import java.util.Vector;
00032
00033 import org.objectweb.jonas_lib.genbase.GenBaseException;
00034 import org.objectweb.jonas_lib.genbase.archive.Application;
00035 import org.objectweb.jonas_lib.genbase.archive.Archive;
00036 import org.objectweb.jonas_lib.genbase.generator.Config;
00037
00038 import org.objectweb.util.monolog.api.BasicLevel;
00039
00045 public abstract class AbsApplicationModifier extends ArchiveModifier {
00046
00050 private List ejbModifiers = null;
00051
00055 private List webModifiers = null;
00056
00060 private List cltModifiers = null;
00061
00065 private Application app = null;
00066
00070 private Config config = null;
00071
00077 public AbsApplicationModifier(Application archive, Config config) {
00078 super(archive);
00079 this.config = config;
00080 app = archive;
00081 initVectors();
00082 init();
00083 }
00084
00088 private void initVectors() {
00089
00090 ejbModifiers = new Vector();
00091 webModifiers = new Vector();
00092 cltModifiers = new Vector();
00093 }
00094
00098 protected abstract void init();
00099
00105 public Archive modify() throws GenBaseException {
00106
00107 getLogger().log(BasicLevel.INFO, "Processing Application " + app.getName());
00108
00112 for (Iterator i = webModifiers.iterator(); i.hasNext();) {
00113 ArchiveModifier wm = (ArchiveModifier) i.next();
00114 Archive a = wm.modify();
00115 getLogger().log(BasicLevel.DEBUG, "Modifying WebApp '" + a.getName() + "'");
00116 app.addFile(a.getRootFile());
00117 }
00118
00119 for (Iterator i = cltModifiers.iterator(); i.hasNext();) {
00120 ArchiveModifier cm = (ArchiveModifier) i.next();
00121 Archive a = cm.modify();
00122 getLogger().log(BasicLevel.DEBUG, "Modifying Client '" + a.getName() + "'");
00123 app.addFile(a.getRootFile());
00124 }
00125
00126 for (Iterator i = ejbModifiers.iterator(); i.hasNext();) {
00127 ArchiveModifier em = (ArchiveModifier) i.next();
00128 Archive a = em.modify();
00129 getLogger().log(BasicLevel.DEBUG, "Modifying EjbJar '" + a.getName() + "'");
00130 app.addFile(a.getRootFile());
00131 }
00132
00133 return save(config, "apps" + File.separator + app.getName());
00134
00135 }
00136
00140 protected List getCltModifiers() {
00141 return cltModifiers;
00142 }
00143
00147 protected List getEjbModifiers() {
00148 return ejbModifiers;
00149 }
00150
00154 protected List getWebModifiers() {
00155 return webModifiers;
00156 }
00160 protected Application getApplication() {
00161 return app;
00162 }
00163 }