1 package org.codehaus.xfire.jaxb;
2
3 import org.codehaus.xfire.service.Service;
4 import org.codehaus.xfire.transport.TransportManager;
5 import org.codehaus.xfire.wsdl11.WSDL11ParameterBinding;
6 import org.codehaus.xfire.wsdl11.builder.WSDLBuilder;
7 import org.codehaus.yom.Document;
8 import org.codehaus.yom.Element;
9
10 import javax.wsdl.WSDLException;
11
12 /***
13 * User: chris
14 * Date: Aug 12, 2005
15 * Time: 4:04:24 PM
16 */
17 public class JaxbWsdlBuilder extends WSDLBuilder
18 {
19 JaxbSchemaProvider jaxbSchemaProvider;
20
21 public JaxbWsdlBuilder(Service service, TransportManager transportManager, WSDL11ParameterBinding paramBinding, JaxbSchemaProvider jaxbSchemaProvider) throws WSDLException
22 {
23 super(service, transportManager, paramBinding);
24
25 this.jaxbSchemaProvider = jaxbSchemaProvider;
26 }
27
28 public void addDependency(org.codehaus.xfire.wsdl.SchemaType type)
29 {
30 if (!hasDependency(type))
31 {
32 if (type instanceof JaxbType)
33 {
34 JaxbType jaxbType = (JaxbType) type;
35
36 Element schema = jaxbSchemaProvider.getSchema(jaxbType, this);
37 schema.detach();
38 setSchema(jaxbType.getSchemaType().getNamespaceURI(), schema);
39 }
40
41 }
42 super.addDependency(type);
43 }
44
45
46 }