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.Client;
00038 import org.objectweb.jonas_lib.genbase.modifier.ArchiveModifier;
00039
00040 import org.objectweb.jonas_ws.deployment.api.ServiceRefDesc;
00041 import org.objectweb.jonas_ws.wsgen.ddmodifier.WsClientDDModifier;
00042 import org.objectweb.jonas_ws.wsgen.generator.Generator;
00043 import org.objectweb.jonas_ws.wsgen.generator.GeneratorFactory;
00044
00045 import org.objectweb.util.monolog.api.BasicLevel;
00046
00052 public class ClientModifier extends ArchiveModifier {
00053
00055 private Client client;
00056
00062 public ClientModifier(Client client) {
00063 super(client);
00064 this.client = client;
00065 }
00066
00074 public Archive modify() throws GenBaseException {
00075
00076 getLogger().log(BasicLevel.INFO, "Processing Client " + client.getName());
00077
00078 GeneratorFactory gf = GeneratorFactory.getInstance();
00079 Document jclient = client.getJonasClientDoc();
00080
00081 List refs = client.getServiceRefDescs();
00082 for (Iterator i = refs.iterator(); i.hasNext();) {
00083 ServiceRefDesc ref = (ServiceRefDesc) i.next();
00084
00085
00086 Element base = null;
00087 if (jclient != null) {
00088 base = jclient.getDocumentElement();
00089 }
00090 WsClientDDModifier ddm = new WsClientDDModifier(ref.getServiceRefName(), jclient, base);
00091
00092
00093 Generator g = gf.newGenerator(ref, ddm, client);
00094 g.generate();
00095 g.compile();
00096
00097 g.addFiles(client);
00098 }
00099
00100 return save(gf.getConfiguration(), "clients" + File.separator + client.getRootFile().getName());
00101 }
00102 }