KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > celtix > tools > generators > java2 > TypesGenerator


1 package org.objectweb.celtix.tools.generators.java2;
2
3
4 import java.util.Iterator JavaDoc;
5 import java.util.Map JavaDoc;
6 import java.util.Set JavaDoc;
7 import java.util.logging.Level JavaDoc;
8 import java.util.logging.Logger JavaDoc;
9
10 import javax.wsdl.Definition;
11 import javax.wsdl.Types;
12 import javax.wsdl.extensions.ExtensionRegistry;
13 import javax.wsdl.extensions.schema.Schema;
14 import javax.xml.bind.SchemaOutputResolver;
15 import javax.xml.namespace.QName JavaDoc;
16 import javax.xml.parsers.DocumentBuilder JavaDoc;
17 import javax.xml.parsers.DocumentBuilderFactory JavaDoc;
18
19 import org.w3c.dom.Document JavaDoc;
20 import org.w3c.dom.Element JavaDoc;
21
22 import org.objectweb.celtix.common.i18n.Message;
23 import org.objectweb.celtix.common.logging.LogUtils;
24 import org.objectweb.celtix.tools.common.ProcessorEnvironment;
25 import org.objectweb.celtix.tools.common.ToolException;
26 import org.objectweb.celtix.tools.common.WSDLConstants;
27 import org.objectweb.celtix.tools.common.model.WSDLModel;
28 import org.objectweb.celtix.tools.processors.java2.JavaToWSDLProcessor;
29 public class TypesGenerator {
30     private static final Logger JavaDoc LOG = LogUtils.getL7dLogger(JavaToWSDLProcessor.class);
31     private WSDLModel wmodel;
32     private Definition definition;
33     private ExtensionRegistry extensionRegistry;
34     private ProcessorEnvironment env;
35     
36     public TypesGenerator(WSDLModel model , ProcessorEnvironment penv) {
37         this.definition = model.getDefinition();
38         this.wmodel = model;
39         env = penv;
40         extensionRegistry = definition.getExtensionRegistry();
41         
42     }
43     public void generate() {
44         Message msg = new Message("GENERATE_TYPES_ERROR", LOG);
45         try {
46             wmodel.createJAXBContext();
47         } catch (Exception JavaDoc e) {
48             LOG.log(Level.SEVERE, "Create jaxbContext error");
49             throw new ToolException(msg, e);
50         }
51         
52         SchemaOutputResolver resolver = new WSDLOutputResolver(env, wmodel);
53
54         try {
55             wmodel.getJaxbContext().generateSchema(resolver);
56         } catch (Exception JavaDoc e2) {
57             throw new ToolException(msg, e2);
58         }
59
60         Types types = definition.createTypes();
61
62         try {
63             Schema schema;
64
65             schema = (Schema)extensionRegistry.createExtension(Types.class,
66                                                                new QName JavaDoc("http://www.w3.org/2001/XMLSchema",
67                                                                          "schema"));
68
69             DocumentBuilder JavaDoc docBuilder;
70             docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
71             Document JavaDoc doc = docBuilder.newDocument();
72             Element JavaDoc element = doc.createElement("xsd:schema");
73             Map JavaDoc<String JavaDoc, String JavaDoc> schemafileMap = wmodel.getSchemaNSFileMap();
74
75             Set JavaDoc<Map.Entry JavaDoc<String JavaDoc, String JavaDoc>> entryset = schemafileMap.entrySet();
76             Iterator JavaDoc<Map.Entry JavaDoc<String JavaDoc, String JavaDoc>> ite = entryset.iterator();
77             while (ite.hasNext()) {
78                 Map.Entry JavaDoc<String JavaDoc, String JavaDoc> entry = (Map.Entry JavaDoc<String JavaDoc, String JavaDoc>)ite.next();
79                 Element JavaDoc importelement = doc.createElement("xsd:import");
80                 importelement.setAttribute("namespace", entry.getKey());
81                 importelement.setAttribute("schemaLocation", entry.getValue());
82                 element.appendChild(importelement);
83             }
84             schema.setElement(element);
85             types.addExtensibilityElement(schema);
86             definition.setTypes(types);
87         } catch (Exception JavaDoc e) {
88             throw new ToolException(msg, e);
89         }
90
91         definition.setTargetNamespace(wmodel.getTargetNameSpace());
92
93         definition.addNamespace(WSDLConstants.WSDL_PREFIX, WSDLConstants.NS_WSDL);
94         definition.addNamespace(WSDLConstants.XSD_PREFIX, WSDLConstants.XSD_NAMESPACE);
95         definition.addNamespace(WSDLConstants.SOAP_PREFIX, WSDLConstants.SOAP11_NAMESPACE);
96         definition.addNamespace(WSDLConstants.TNS_PREFIX, wmodel.getTargetNameSpace());
97         int i = 0;
98         for (String JavaDoc s : wmodel.getJaxbContext().getKnownNamespaceURIs()) {
99             definition.addNamespace("ns" + (++i), s);
100         }
101
102     }
103
104
105 }
106
Popular Tags