View Javadoc

1   package org.codehaus.xfire.java.wsdl;
2   
3   import java.util.Set;
4   import javax.wsdl.WSDLException;
5   import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
6   import org.codehaus.xfire.XFireRuntimeException;
7   import org.codehaus.xfire.java.JavaService;
8   import org.codehaus.xfire.plexus.PlexusXFireComponent;
9   import org.codehaus.xfire.service.Service;
10  import org.codehaus.xfire.transport.TransportManager;
11  import org.codehaus.xfire.wsdl.WSDL;
12  import org.codehaus.xfire.wsdl.WSDLBuilder;
13  
14  /***
15   * Create a WSDL document for a JavaService.
16   * 
17   * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
18   * @since Apr 7, 2004
19   */
20  public class JavaWSDLBuilder
21  	extends PlexusXFireComponent
22  	implements WSDLBuilder
23  {
24  	/***
25  	 * @param service
26  	 * @return
27  	 */
28  	public WSDL createWSDL( Service s )
29          throws WSDLException
30  	{
31          JavaService service = (JavaService) s;
32          
33  	    TransportManager manager;
34          try
35          {
36              manager = (TransportManager) getServiceLocator().lookup( TransportManager.ROLE );
37          }
38          catch (ComponentLookupException e)
39          {
40              throw new XFireRuntimeException( "Couldn't find TransportManager.", e );
41          }
42          
43          Set transports = manager.getTransports( service.getName() );
44  	    
45  		if ( service.getStyle().equals("wrapped")
46               &&
47               service.getUse().equals("literal") )
48          {
49              return new WrappedWSDL( service, transports );
50          }
51          else if ( service.getStyle().equals("document")
52                    &&
53                    service.getUse().equals("literal") )
54          {
55              return new DocumentWSDL( service, transports );
56          }
57          else if ( service.getStyle().equals("rpc")
58                  &&
59                  service.getUse().equals("literal") )
60          {
61              return new RPCLiteralWSDL( service, transports );
62          }
63          else
64          {
65          	throw new UnsupportedOperationException( "Service style/use not supported." );
66          }
67  	}
68  }