1 package org.codehaus.xfire.java.wsdl;
2
3 import java.util.Iterator;
4 import java.util.Set;
5
6 import javax.wsdl.Message;
7 import javax.wsdl.Part;
8 import javax.wsdl.WSDLException;
9
10 import org.codehaus.xfire.java.JavaService;
11 import org.codehaus.xfire.java.Operation;
12 import org.codehaus.xfire.java.type.Type;
13
14
15 /***
16 * Creates RPC/Literal style WSDL documents for a JavaService.
17 *
18 * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
19 */
20 public class RPCLiteralWSDL
21 extends AbstractWSDL
22 {
23 public RPCLiteralWSDL( JavaService service, Set transports ) throws WSDLException
24 {
25 super( service, transports );
26 }
27
28 /***
29 * @see org.codehaus.xfire.java.wsdl.AbstractWSDL#createInputParts(javax.wsdl.Message, org.codehaus.xfire.java.Operation)
30 */
31 protected void createInputParts( Message req, Operation op )
32 {
33
34 for ( Iterator itr = op.getParameters().iterator(); itr.hasNext(); )
35 {
36 String param = (String) itr.next();
37 Class clazz = op.getParameterClass( param );
38 Type type = ((JavaService) getService()).getTypeMapping().getType( clazz );
39
40 Part part = getDefinition().createPart();
41 part.setName( param );
42 part.setTypeName( createJavaxQName(type.getSchemaType()) );
43
44 addDependency( type );
45
46 req.setUndefined(false);
47 req.addPart( part );
48 }
49 }
50
51 /***
52 * @see org.codehaus.xfire.java.wsdl.AbstractWSDL#createOutputParts(javax.wsdl.Message, org.codehaus.xfire.java.Operation)
53 */
54 protected void createOutputParts( Message req, Operation op )
55 {
56 Class clazz = op.getOutParameterClass();
57
58
59 Part part = getDefinition().createPart();
60
61 Type type = ((JavaService) getService()).getTypeMapping().getType( clazz );
62 addDependency( type );
63
64 part.setName( op.getOutParameterName() );
65 part.setTypeName( createJavaxQName(type.getSchemaType()) );
66
67 req.addPart( part );
68 }
69 }