View Javadoc

1   package org.codehaus.xfire.service.object;
2   
3   import javax.xml.namespace.QName;
4   
5   import org.codehaus.xfire.MessageContext;
6   import org.codehaus.xfire.fault.XFireFault;
7   import org.codehaus.xfire.message.MessageReader;
8   import org.codehaus.xfire.message.MessageWriter;
9   import org.codehaus.xfire.type.Type;
10  
11  /***
12   * A parameter for an operation.
13   * 
14   * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
15   * @since Nov 16, 2004
16   */
17  public class Parameter
18  {
19      private QName name;
20      private Class typeClass;
21      
22      public Parameter()
23      {
24      }
25      
26      public Parameter(QName name, Class typeClass)
27      {
28          this.name = name;
29          this.typeClass = typeClass;
30      }
31      
32      /***
33       * @return Returns the name.
34       */
35      public QName getName()
36      {
37          return name;
38      }
39      
40      /***
41       * @param name The name to set.
42       */
43      public void setName(QName name)
44      {
45          this.name = name;
46      }
47  
48      public Class getTypeClass()
49      {
50          return typeClass;
51      }
52      
53      public void setTypeClass(Class typeClass)
54      {
55          this.typeClass = typeClass;
56      }
57      
58      public Object read(MessageReader reader, MessageContext context) 
59          throws XFireFault
60      {
61          Type type = ((ObjectService)context.getService()).getTypeMapping().getType(getTypeClass());
62          
63          return type.readObject(reader, context);
64      }
65      
66      public void write(Object value, MessageWriter writer, MessageContext context) 
67          throws XFireFault
68      {
69          Type type = ((ObjectService)context.getService()).getTypeMapping().getType(getTypeClass());
70  
71          MessageWriter childWriter = writer.getChildWriter(getName());
72  
73          type.writeObject(value, childWriter, context);
74  
75          writer.close();
76      }
77  }