1 package org.codehaus.xfire.wsdl11.builder; 2 3 import java.util.Collection; 4 5 import javax.wsdl.WSDLException; 6 7 import org.codehaus.xfire.AbstractXFireComponent; 8 import org.codehaus.xfire.service.Service; 9 import org.codehaus.xfire.service.object.ObjectService; 10 import org.codehaus.xfire.soap.SoapConstants; 11 import org.codehaus.xfire.transport.TransportManager; 12 import org.codehaus.xfire.wsdl.WSDLWriter; 13 14 /*** 15 * Create a WSDL document for a ObjectService. 16 * 17 * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a> 18 * @since Apr 7, 2004 19 */ 20 public class JavaWSDLBuilder 21 extends AbstractXFireComponent 22 implements WSDLBuilder 23 { 24 private TransportManager manager; 25 26 public JavaWSDLBuilder( TransportManager manager ) 27 { 28 this.manager = manager; 29 } 30 31 /*** 32 * @param s The service WSDL is being generated for. 33 * @return 34 */ 35 public WSDLWriter createWSDLWriter( Service s ) 36 throws WSDLException 37 { 38 ObjectService service = (ObjectService) s; 39 40 Collection transports = manager.getTransports(service.getName()); 41 42 if (service.getStyle().equals(SoapConstants.STYLE_WRAPPED) 43 && service.getUse().equals(SoapConstants.USE_LITERAL)) 44 { 45 return new WrappedWSDL(service, transports); 46 } 47 else if (service.getStyle().equals(SoapConstants.STYLE_DOCUMENT) 48 && service.getUse().equals(SoapConstants.USE_LITERAL)) 49 { 50 return new DocumentWSDL(service, transports); 51 } 52 else if (service.getStyle().equals(SoapConstants.STYLE_RPC) 53 && service.getUse().equals(SoapConstants.USE_ENCODED)) 54 { 55 return new RPCEncodedWSDL(service, transports); 56 } 57 else 58 { 59 throw new UnsupportedOperationException( 60 "Service style/use combination is not supported: " 61 + service.getStyle() + "/" + service.getUse() ); 62 } 63 } 64 }