00001
00025 package org.objectweb.jonas_ws.wsgen.modifier;
00026
00027 import java.io.File;
00028 import java.util.Iterator;
00029 import java.util.List;
00030
00031 import org.w3c.dom.Document;
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.archive.DummyApplication;
00037 import org.objectweb.jonas_lib.genbase.archive.DummyWebApp;
00038 import org.objectweb.jonas_lib.genbase.archive.Ejb;
00039 import org.objectweb.jonas_lib.genbase.archive.EjbJar;
00040 import org.objectweb.jonas_lib.genbase.archive.WebApp;
00041 import org.objectweb.jonas_lib.genbase.modifier.ArchiveModifier;
00042
00043 import org.objectweb.jonas_ws.deployment.api.ServiceDesc;
00044 import org.objectweb.jonas_ws.deployment.api.ServiceRefDesc;
00045 import org.objectweb.jonas_ws.wsgen.ddmodifier.WsClientDDModifier;
00046 import org.objectweb.jonas_ws.wsgen.ddmodifier.WsEndpointDDModifier;
00047 import org.objectweb.jonas_ws.wsgen.generator.Generator;
00048 import org.objectweb.jonas_ws.wsgen.generator.GeneratorFactory;
00049
00050 import org.objectweb.util.monolog.api.BasicLevel;
00051
00057 public class EjbJarModifier extends ArchiveModifier {
00058
00060 private EjbJar ejbjar = null;
00061
00067 public EjbJarModifier(EjbJar ejbjar) {
00068 super(ejbjar);
00069 this.ejbjar = ejbjar;
00070 }
00071
00083 public Archive modify() throws GenBaseException {
00084
00085 getLogger().log(BasicLevel.INFO, "Processing EjbJar " + ejbjar.getName());
00086
00087 GeneratorFactory gf = GeneratorFactory.getInstance();
00088 Document jejbjar = ejbjar.getJonasEjbJarDoc();
00089
00090
00091 List sds = ejbjar.getServiceDescs();
00092
00093 if (sds.size() != 0) {
00094 if (ejbjar.getApplication() == null) {
00095
00096
00101 String ejbName = ejbjar.getRootFile().getName();
00102 String earName = ejbName.substring(0, ejbName.length() - ".jar".length()) + ".ear";
00103 Application application = new DummyApplication(earName);
00104 ejbjar.setApplication(application);
00105 application.addEjbJar(ejbjar);
00106 ApplicationModifier am = new ApplicationModifier(application);
00107
00108 return am.modify();
00109
00110 } else {
00111
00112
00119 String warName = null;
00120 String war = ejbjar.getWarName();
00121 if (war != null) {
00122 warName = war;
00123 } else {
00124 String ejbName = ejbjar.getRootFile().getName();
00125 String contextName = ejbName.substring(0, ejbName.length() - ".jar".length());
00126 warName = contextName + ".war";
00127 }
00128
00129 Application application = ejbjar.getApplication();
00130 WebApp web = new DummyWebApp(application, warName);
00131
00132 for (Iterator i = sds.iterator(); i.hasNext();) {
00133 ServiceDesc sd = (ServiceDesc) i.next();
00134
00135
00136 WsEndpointDDModifier ddm = new WsEndpointDDModifier(web.getWebAppDoc());
00137
00138
00139 Generator g = gf.newGenerator(sd, ddm, null, ejbjar);
00140 g.generate();
00141 g.compile();
00142
00143 g.addFiles(web);
00144
00145 }
00146
00147 application.addWebApp(new WebApp(save(gf.getConfiguration(),
00148 "webapps" + File.separator + web.getName(), web)), ejbjar.getContextRoot());
00149 }
00150 }
00151
00152
00153 List ejbs = ejbjar.getEjbs();
00154 for (Iterator i = ejbs.iterator(); i.hasNext();) {
00155 Ejb ejb = (Ejb) i.next();
00156 List refs = ejb.getServiceRefDescs();
00157 for (Iterator j = refs.iterator(); j.hasNext();) {
00158 ServiceRefDesc ref = (ServiceRefDesc) j.next();
00159
00160
00161 WsClientDDModifier ddm = new WsClientDDModifier(ref.getServiceRefName(), jejbjar, ejb.getJonasBeanElement());
00162
00163
00164 Generator g = gf.newGenerator(ref, ddm, ejbjar);
00165 g.generate();
00166 g.compile();
00167
00168 g.addFiles(ejbjar);
00169 }
00170 }
00171
00172 return save(gf.getConfiguration(), "ejbjars" + File.separator + ejbjar.getRootFile().getName());
00173
00174 }
00175 }