View Javadoc

1   /*
2    * $Id: NamedParameter.java 10489 2008-01-23 17:53:38Z dfeist $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
9    */
10  
11  package org.mule.transport.soap;
12  
13  import org.mule.config.i18n.CoreMessages;
14  
15  import javax.xml.namespace.QName;
16  import javax.xml.rpc.ParameterMode;
17  
18  /**
19   * Representation of a Named parameter in a SOAP call
20   */
21  public class NamedParameter
22  {
23      public final int MODE_IN = 0;
24      public final int MODE_OUT = 1;
25      public final int MODE_INOUT = 2;
26  
27      public static final String URI_1999_SCHEMA_XSD = "http://www.w3.org/1999/XMLSchema";
28      public static final String URI_2000_SCHEMA_XSD = "http://www.w3.org/2000/10/XMLSchema";
29      public static final String URI_2001_SCHEMA_XSD = "http://www.w3.org/2001/XMLSchema";
30  
31      public static final String URI_DEFAULT_SCHEMA_XSD = URI_2001_SCHEMA_XSD;
32  
33      public static final QName XSD_STRING = new QName(URI_DEFAULT_SCHEMA_XSD, "string");
34      public static final QName XSD_BOOLEAN = new QName(URI_DEFAULT_SCHEMA_XSD, "boolean");
35      public static final QName XSD_DOUBLE = new QName(URI_DEFAULT_SCHEMA_XSD, "double");
36      public static final QName XSD_FLOAT = new QName(URI_DEFAULT_SCHEMA_XSD, "float");
37      public static final QName XSD_INT = new QName(URI_DEFAULT_SCHEMA_XSD, "int");
38      public static final QName XSD_INTEGER = new QName(URI_DEFAULT_SCHEMA_XSD, "integer");
39      public static final QName XSD_LONG = new QName(URI_DEFAULT_SCHEMA_XSD, "long");
40      public static final QName XSD_SHORT = new QName(URI_DEFAULT_SCHEMA_XSD, "short");
41      public static final QName XSD_BYTE = new QName(URI_DEFAULT_SCHEMA_XSD, "byte");
42      public static final QName XSD_DECIMAL = new QName(URI_DEFAULT_SCHEMA_XSD, "decimal");
43      public static final QName XSD_BASE64 = new QName(URI_DEFAULT_SCHEMA_XSD, "base64Binary");
44      public static final QName XSD_HEXBIN = new QName(URI_DEFAULT_SCHEMA_XSD, "hexBinary");
45      public static final QName XSD_ANYSIMPLETYPE = new QName(URI_DEFAULT_SCHEMA_XSD, "anySimpleType");
46      public static final QName XSD_ANYTYPE = new QName(URI_DEFAULT_SCHEMA_XSD, "anyType");
47      public static final QName XSD_ANY = new QName(URI_DEFAULT_SCHEMA_XSD, "any");
48      public static final QName XSD_QNAME = new QName(URI_DEFAULT_SCHEMA_XSD, "QName");
49      public static final QName XSD_DATETIME = new QName(URI_DEFAULT_SCHEMA_XSD, "dateTime");
50      public static final QName XSD_DATE = new QName(URI_DEFAULT_SCHEMA_XSD, "date");
51      public static final QName XSD_TIME = new QName(URI_DEFAULT_SCHEMA_XSD, "time");
52      public static final QName XSD_TIMEINSTANT1999 = new QName(URI_1999_SCHEMA_XSD, "timeInstant");
53      public static final QName XSD_TIMEINSTANT2000 = new QName(URI_2000_SCHEMA_XSD, "timeInstant");
54  
55      public static final QName XSD_NORMALIZEDSTRING = new QName(URI_2001_SCHEMA_XSD, "normalizedString");
56      public static final QName XSD_TOKEN = new QName(URI_2001_SCHEMA_XSD, "token");
57  
58      public static final QName XSD_UNSIGNEDLONG = new QName(URI_DEFAULT_SCHEMA_XSD, "unsignedLong");
59      public static final QName XSD_UNSIGNEDINT = new QName(URI_DEFAULT_SCHEMA_XSD, "unsignedInt");
60      public static final QName XSD_UNSIGNEDSHORT = new QName(URI_DEFAULT_SCHEMA_XSD, "unsignedShort");
61      public static final QName XSD_UNSIGNEDBYTE = new QName(URI_DEFAULT_SCHEMA_XSD, "unsignedByte");
62      public static final QName XSD_POSITIVEINTEGER = new QName(URI_DEFAULT_SCHEMA_XSD, "positiveInteger");
63      public static final QName XSD_NEGATIVEINTEGER = new QName(URI_DEFAULT_SCHEMA_XSD, "negativeInteger");
64      public static final QName XSD_NONNEGATIVEINTEGER = new QName(URI_DEFAULT_SCHEMA_XSD, "nonNegativeInteger");
65      public static final QName XSD_NONPOSITIVEINTEGER = new QName(URI_DEFAULT_SCHEMA_XSD, "nonPositiveInteger");
66  
67      public static final QName XSD_YEARMONTH = new QName(URI_DEFAULT_SCHEMA_XSD, "gYearMonth");
68      public static final QName XSD_MONTHDAY = new QName(URI_DEFAULT_SCHEMA_XSD, "gMonthDay");
69      public static final QName XSD_YEAR = new QName(URI_DEFAULT_SCHEMA_XSD, "gYear");
70      public static final QName XSD_MONTH = new QName(URI_DEFAULT_SCHEMA_XSD, "gMonth");
71      public static final QName XSD_DAY = new QName(URI_DEFAULT_SCHEMA_XSD, "gDay");
72      public static final QName XSD_DURATION = new QName(URI_DEFAULT_SCHEMA_XSD, "duration");
73  
74      public static final QName XSD_NAME = new QName(URI_DEFAULT_SCHEMA_XSD, "Name");
75      public static final QName XSD_NCNAME = new QName(URI_DEFAULT_SCHEMA_XSD, "NCName");
76      public static final QName XSD_NMTOKEN = new QName(URI_DEFAULT_SCHEMA_XSD, "NMTOKEN");
77      public static final QName XSD_NMTOKENS = new QName(URI_DEFAULT_SCHEMA_XSD, "NMTOKENS");
78      public static final QName XSD_NOTATION = new QName(URI_DEFAULT_SCHEMA_XSD, "NOTATION");
79      public static final QName XSD_ENTITY = new QName(URI_DEFAULT_SCHEMA_XSD, "ENTITY");
80      public static final QName XSD_ENTITIES = new QName(URI_DEFAULT_SCHEMA_XSD, "ENTITIES");
81      public static final QName XSD_IDREF = new QName(URI_DEFAULT_SCHEMA_XSD, "IDREF");
82      public static final QName XSD_IDREFS = new QName(URI_DEFAULT_SCHEMA_XSD, "IDREFS");
83      public static final QName XSD_ANYURI = new QName(URI_DEFAULT_SCHEMA_XSD, "anyURI");
84      public static final QName XSD_LANGUAGE = new QName(URI_DEFAULT_SCHEMA_XSD, "language");
85      public static final QName XSD_ID = new QName(URI_DEFAULT_SCHEMA_XSD, "ID");
86      public static final QName XSD_SCHEMA = new QName(URI_DEFAULT_SCHEMA_XSD, "schema");
87  
88      private QName name;
89      private QName type;
90      private ParameterMode mode;
91  
92      public NamedParameter(QName name, QName type, String mode)
93      {
94          this.name = name;
95          this.type = type;
96          setMode(mode);
97      }
98  
99      public NamedParameter(QName name, QName type, ParameterMode mode)
100     {
101         this.name = name;
102         this.type = type;
103         this.mode = mode;
104     }
105 
106     public NamedParameter(String name, String type, ParameterMode mode)
107     {
108         this.name = new QName(name);
109         this.type = createQName(name);
110         this.mode = mode;
111     }
112 
113     protected void setMode(String mode)
114     {
115         mode = mode.toLowerCase().trim();
116         if (mode.equals("in"))
117         {
118             this.mode = ParameterMode.IN;
119         }
120         else if (mode.equals("out"))
121         {
122             this.mode = ParameterMode.OUT;
123         }
124         else if (mode.equals("inout"))
125         {
126             this.mode = ParameterMode.INOUT;
127         }
128         else
129         {
130             throw new IllegalArgumentException(CoreMessages.valueIsInvalidFor(mode, "mode").toString());
131         }
132     }
133 
134     public QName getName()
135     {
136         return name;
137     }
138 
139     public QName getType()
140     {
141         return type;
142     }
143 
144     public ParameterMode getMode()
145     {
146         return mode;
147     }
148 
149     public static QName createQName(String value)
150     {
151         return new QName(URI_DEFAULT_SCHEMA_XSD, value);
152     }
153 }