View Javadoc

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  }