EjbJarModifier.java

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         // Webservices endpoint
00091         List sds = ejbjar.getServiceDescs();
00092 
00093         if (sds.size() != 0) {
00094             if (ejbjar.getApplication() == null) {
00095                 // we have webservices outside of an application
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                 // we have webservices inside of an application
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                     // create dd modifier
00136                     WsEndpointDDModifier ddm = new WsEndpointDDModifier(web.getWebAppDoc());
00137 
00138                     // launch generation
00139                     Generator g = gf.newGenerator(sd, ddm, null, ejbjar);
00140                     g.generate();
00141                     g.compile();
00142                     // add files in web archive
00143                     g.addFiles(web);
00144 
00145                 }
00146                 // save webapp
00147                 application.addWebApp(new WebApp(save(gf.getConfiguration(),
00148                         "webapps" + File.separator + web.getName(), web)), ejbjar.getContextRoot());
00149             }
00150         }
00151 
00152         // add client files
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                 // create dd modifier
00161                 WsClientDDModifier ddm = new WsClientDDModifier(ref.getServiceRefName(), jejbjar, ejb.getJonasBeanElement());
00162 
00163                 // launch generation
00164                 Generator g = gf.newGenerator(ref, ddm, ejbjar);
00165                 g.generate();
00166                 g.compile();
00167                 // add files in web archive
00168                 g.addFiles(ejbjar);
00169             }
00170         }
00171 
00172         return save(gf.getConfiguration(), "ejbjars" + File.separator + ejbjar.getRootFile().getName());
00173 
00174     }
00175 }

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