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
00094 Element base = null;
00095 if (jwebapp != null) {
00096 base = jwebapp.getDocumentElement();
00097 }
00098 WsClientDDModifier ddm = new WsClientDDModifier(ref.getServiceRefName(), jwebapp, base);
00099
00100
00101 Generator g = gf.newGenerator(ref, ddm, web);
00102 g.generate();
00103 g.compile();
00104
00105
00106 g.addFiles(web);
00107 }
00108
00109
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
00122 Generator g = gf.newGenerator(sd, ddm, wsddm, web);
00123 g.generate();
00124 g.compile();
00125
00126
00127 g.addFiles(web);
00128
00129 }
00130
00131 return save(gf.getConfiguration(), "webapps" + File.separator
00132 + web.getName());
00133 }
00134 }