1 package org.objectweb.celtix.tools.generators.java2; 2 3 import javax.wsdl.Definition; 4 import javax.wsdl.factory.WSDLFactory; 5 import javax.wsdl.xml.WSDLWriter; 6 7 import org.objectweb.celtix.tools.common.ProcessorEnvironment; 8 import org.objectweb.celtix.tools.common.ToolConstants; 9 import org.objectweb.celtix.tools.common.ToolException; 10 import org.objectweb.celtix.tools.common.model.WSDLModel; 11 12 public class WSDLGenerator { 13 private final WSDLModel wmodel; 14 15 private final ProcessorEnvironment env; 16 17 private final Definition definition; 18 19 private WSDLFactory wsdlFactory; 20 21 private String wsdlFile; 22 23 private String portTypeName; 24 25 public WSDLGenerator(WSDLModel model, ProcessorEnvironment penv) { 26 wmodel = model; 27 env = penv; 28 definition = model.getDefinition(); 29 try { 30 wsdlFactory = WSDLFactory.newInstance(); 31 } catch (javax.wsdl.WSDLException e) { 32 throw new ToolException(e.getMessage(), e); 33 } 34 } 35 36 public void generate() { 37 preGenerate(); 38 TypesGenerator typeGen = new TypesGenerator(wmodel , env); 39 typeGen.generate(); 40 MessagePortTypeGenerator messagePortTypeGen = new MessagePortTypeGenerator(wmodel); 41 messagePortTypeGen.generate(); 42 BindingGenerator bindingGen = new BindingGenerator(wmodel); 43 bindingGen.generate(); 44 ServiceGenerator serviceGen = new ServiceGenerator(wmodel); 45 serviceGen.generate(); 46 writeDefinition(); 47 48 } 49 50 private void preGenerate() { 51 Object obj = env.get(ToolConstants.CFG_OUTPUTFILE); 52 wsdlFile = obj == null ? "./" + wmodel.getServiceName() + ".wsdl" : (String )obj; 53 obj = env.get(ToolConstants.CFG_TNS); 54 String targetNameSpace; 55 targetNameSpace = obj == null ? wmodel.getTargetNameSpace() : (String )obj; 56 wmodel.setTargetNameSpace(targetNameSpace); 57 obj = env.get(ToolConstants.CFG_PORTTYPE); 58 portTypeName = obj == null ? wmodel.getPortName() : (String )obj; 59 wmodel.setPortName(portTypeName); 60 61 } 62 63 private boolean writeDefinition() { 64 65 WSDLWriter writer = wsdlFactory.newWSDLWriter(); 66 67 java.io.File file = new java.io.File (wsdlFile); 68 java.io.OutputStream outstream = null; 69 try { 70 outstream = new java.io.FileOutputStream (file); 71 } catch (java.io.FileNotFoundException e) { 72 throw new ToolException(e.getMessage(), e); 73 } 74 75 try { 76 writer.writeWSDL(this.definition, outstream); 77 } catch (javax.wsdl.WSDLException e) { 78 throw new ToolException(e.getMessage(), e); 79 } 80 return true; 81 } 82 83 84 85 86 } 87 | Popular Tags |