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 }