View Javadoc

1   package org.codehaus.xfire.annotations;
2   
3   
4   /***
5    * Represents a common representation of a web parameter annotation. Customizes the mapping of an individual parameter
6    * to a Web Service message part and XML element.
7    *
8    * @author Arjen Poutsma
9    */
10  public class WebParamAnnotation
11  {
12      private String name = "";
13      private String targetNamespace = "";
14      private boolean header = false;
15      private int mode = MODE_IN;
16  
17      /***
18       * Constant used to specify that a parameter flows inwards. This is the default mode.
19       */
20      public final static int MODE_IN = 0;
21      /***
22       * Constant used to specify that a parameter flows both in and outwards.
23       */
24      public final static int MODE_INOUT = 1;
25      /***
26       * Constant used to specify that a parameter flows outwards.
27       */
28      public final static int MODE_OUT = 2;
29  
30      /***
31       * Returns the name of the parameter as it appears in the WSDL. For RPC bindings, this is name of the wsdl:part
32       * representing  the parameter. For document bindings, this is the local name of the XML element representing the
33       * parameter.  Defaults to the name of the parameter as it appears in the argument list.
34       *
35       * @return the name of the parameter as it appears in the WSDL.
36       */
37      public String getName()
38      {
39          return name;
40      }
41  
42      /***
43       * Sets the name of the parameter as it appears in the WSDL. For RPC bindings, this is name of the wsdl:part
44       * representing  the parameter. For document bindings, this is the local name of the XML element representing the
45       * parameter.  Defaults to the name of the parameter as it appears in the argument list.
46       *
47       * @param name the new name of the parameter as it appears in the WSDL.
48       */
49      public void setName(String name)
50      {
51          this.name = name;
52      }
53  
54      /***
55       * Returns the XML namespace for the parameter. Only used with document bindings, where the parameter maps to an XML
56       * element. Defaults to the targetNamespace for the Web Service.
57       *
58       * @return the XML namespace for the parameter.
59       */
60      public String getTargetNamespace()
61      {
62          return targetNamespace;
63      }
64  
65      /***
66       * Sets the XML namespace for the parameter. Only used with document bindings, where the parameter maps to an XML
67       * element. Defaults to the targetNamespace for the Web Service.
68       *
69       * @param targetNamespace the XML namespace for the parameter.
70       */
71      public void setTargetNamespace(String targetNamespace)
72      {
73          this.targetNamespace = targetNamespace;
74      }
75  
76      /***
77       * Returns the direction in which the parameter is flowing. One of {@link #MODE_IN}, {@link #MODE_OUT}, or {@link
78       * #MODE_INOUT}.
79       *
80       * @return the parameter mode.
81       */
82      public int getMode()
83      {
84          return mode;
85      }
86  
87      /***
88       * Sets the direction in which the parameter is flowing. The given parameter must be  of {@link #MODE_IN}, {@link
89       * #MODE_OUT}, or {@link #MODE_INOUT}.
90       *
91       * @param mode the new parameter mode.
92       * @throws IllegalArgumentException if <code>mode</code> is not a valid mode.
93       */
94      public void setMode(int mode)
95      {
96          if (mode == WebParamAnnotation.MODE_IN || mode == WebParamAnnotation.MODE_INOUT ||
97                  mode == WebParamAnnotation.MODE_OUT)
98          {
99              this.mode = mode;
100         }
101         else
102         {
103             throw new IllegalArgumentException("Invalid mode: " + mode);
104         }
105     }
106 
107     /***
108      * If <code>true</code>, the parameter is pulled from a message header rather then the message body.
109      *
110      * @return <code>true</code> if a header; <code>false</code> otherwise.
111      */
112     public boolean isHeader()
113     {
114         return header;
115     }
116 
117     /***
118      * Determines whether this parameter is a header.
119      *
120      * @param header <code>true</code> if a header; <code>false</code> otherwise.
121      */
122     public void setHeader(boolean header)
123     {
124         this.header = header;
125     }
126 }