WebAppModifier.java

00001 
00026 package org.objectweb.jonas_ws.wsgen.modifier;
00027 
00028 import java.io.File;
00029 import java.util.Iterator;
00030 import java.util.List;
00031 
00032 import org.w3c.dom.Document;
00033 import org.w3c.dom.Element;
00034 
00035 import org.objectweb.jonas_lib.genbase.GenBaseException;
00036 import org.objectweb.jonas_lib.genbase.archive.Archive;
00037 import org.objectweb.jonas_lib.genbase.archive.WebApp;
00038 import org.objectweb.jonas_lib.genbase.modifier.ArchiveModifier;
00039 
00040 import org.objectweb.jonas_ws.deployment.api.ServiceDesc;
00041 import org.objectweb.jonas_ws.deployment.api.ServiceRefDesc;
00042 import org.objectweb.jonas_ws.wsgen.ddmodifier.WebServicesDDModifier;
00043 import org.objectweb.jonas_ws.wsgen.ddmodifier.WsClientDDModifier;
00044 import org.objectweb.jonas_ws.wsgen.ddmodifier.WsEndpointDDModifier;
00045 import org.objectweb.jonas_ws.wsgen.generator.Generator;
00046 import org.objectweb.jonas_ws.wsgen.generator.GeneratorFactory;
00047 
00048 import org.objectweb.util.monolog.api.BasicLevel;
00049 
00055 public class WebAppModifier extends ArchiveModifier {
00056 
00058     private WebApp web;
00059 
00066     public WebAppModifier(WebApp webapp) {
00067         super(webapp);
00068         web = webapp;
00069     }
00070 
00079     public Archive modify() throws GenBaseException {
00080 
00081         getLogger().log(BasicLevel.INFO, "Processing WebApp " + web.getName());
00082 
00083         GeneratorFactory gf = GeneratorFactory.getInstance();
00084         Document jwebapp = web.getJonasWebAppDoc();
00085         Document webapp = web.getWebAppDoc();
00086         Document webservices = web.getWebservicesDoc();
00087 
00088         List refs = web.getServiceRefDescs();
00089 
00090         for (Iterator i = refs.iterator(); i.hasNext();) {
00091             ServiceRefDesc ref = (ServiceRefDesc) i.next();
00092 
00093             // create dd modifier
00094             Element base = null;
00095             if (jwebapp != null) {
00096                 base = jwebapp.getDocumentElement();
00097             }
00098             WsClientDDModifier ddm = new WsClientDDModifier(ref.getServiceRefName(), jwebapp, base);
00099 
00100             // launch generation
00101             Generator g = gf.newGenerator(ref, ddm, web);
00102             g.generate();
00103             g.compile();
00104 
00105             // add files in web archive
00106             g.addFiles(web);
00107         }
00108 
00109         // create dd modifier
00110         WsEndpointDDModifier ddm = new WsEndpointDDModifier(webapp);
00111         WebServicesDDModifier wsddm = null;
00112         if (webservices != null) {
00113             wsddm = new WebServicesDDModifier(webservices);
00114         }
00115 
00116         List sds = web.getServiceDescs();
00117 
00118         for (Iterator i = sds.iterator(); i.hasNext();) {
00119             ServiceDesc sd = (ServiceDesc) i.next();
00120 
00121             // launch generation
00122             Generator g = gf.newGenerator(sd, ddm, wsddm, web);
00123             g.generate();
00124             g.compile();
00125 
00126             // add files in web archive
00127             g.addFiles(web);
00128 
00129         }
00130 
00131         return save(gf.getConfiguration(), "webapps" + File.separator
00132                 + web.getName());
00133     }
00134 }

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