annotate WebServiceExtensionsV1.1/WebServiceToolWorkflow_REST_SOAP/lib/SAWADLParser/src/javax/wadls/extensions/ExtensionRegistry.java @ 0:049760c677de default tip

Galaxy WSExtensions added successfully
author uga-galaxy-group
date Tue, 05 Jul 2011 19:34:18 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
1 /*
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
2 * (c) Copyright IBM Corp 2001, 2005
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
3 */
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
4
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
5 package javax.wadls.extensions;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
6
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
7 import java.util.*;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
8
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
9 import javax.wadls.*;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
10 import javax.xml.namespace.*;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
11
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
12 /**
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
13 * This class is used to associate serializers, deserializers, and
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
14 * Java implementation types with extensibility elements.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
15 *
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
16 * @author Matthew J. Duftler (duftler@us.ibm.com)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
17 */
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
18 public class ExtensionRegistry implements java.io.Serializable
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
19 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
20 public static final long serialVersionUID = 1;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
21
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
22 /**
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
23 * Creates the extension registry, and sets the defaultSerializer
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
24 * and defaultDeserializer properties to instances of an
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
25 * UnknownExtensionSerializer, and an UnknownExtensionDeserializer,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
26 * respectively.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
27 */
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
28 public ExtensionRegistry()
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
29 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
30 setDefaultSerializer(new UnknownExtensionSerializer());
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
31 setDefaultDeserializer(new UnknownExtensionDeserializer());
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
32 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
33
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
34 /*
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
35 This is a Map of Maps. The top-level Map is keyed by (Class)parentType,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
36 and the inner Maps are keyed by (QName)elementType.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
37 */
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
38 protected Map serializerReg = new Hashtable();
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
39 /*
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
40 This is a Map of Maps. The top-level Map is keyed by (Class)parentType,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
41 and the inner Maps are keyed by (QName)elementType.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
42 */
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
43 protected Map deserializerReg = new Hashtable();
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
44 /*
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
45 This is a Map of Maps. The top-level Map is keyed by (Class)parentType,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
46 and the inner Maps are keyed by (QName)elementType.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
47 */
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
48 protected Map extensionTypeReg = new Hashtable();
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
49 protected ExtensionSerializer defaultSer = null;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
50 protected ExtensionDeserializer defaultDeser = null;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
51 /*
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
52 This is a Map of Maps. The top-level Map is keyed by (Class)parentType,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
53 and the inner Maps are keyed by (QName)attrName.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
54 */
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
55 protected Map extensionAttributeTypeReg = new Hashtable();
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
56
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
57 /**
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
58 * Set the serializer to be used when none is found for an extensibility
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
59 * element. Set this to null to have an exception thrown when
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
60 * unexpected extensibility elements are encountered. Default value is
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
61 * an instance of UnknownExtensionSerializer.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
62 *
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
63 * @see UnknownExtensionSerializer
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
64 */
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
65 public void setDefaultSerializer(ExtensionSerializer defaultSer)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
66 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
67 this.defaultSer = defaultSer;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
68 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
69
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
70 /**
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
71 * Get the serializer to be used when none is found for an extensibility
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
72 * element. Default value is an instance of UnknownExtensionSerializer.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
73 *
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
74 * @see UnknownExtensionSerializer
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
75 */
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
76 public ExtensionSerializer getDefaultSerializer()
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
77 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
78 return defaultSer;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
79 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
80
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
81 /**
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
82 * Set the deserializer to be used when none is found for an encountered
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
83 * element. Set this to null to have an exception thrown when
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
84 * unexpected extensibility elements are encountered. Default value is
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
85 * an instance of UnknownExtensionDeserializer.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
86 *
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
87 * @see UnknownExtensionDeserializer
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
88 */
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
89 public void setDefaultDeserializer(ExtensionDeserializer defaultDeser)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
90 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
91 this.defaultDeser = defaultDeser;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
92 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
93
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
94 /**
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
95 * Get the deserializer to be used when none is found for an encountered
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
96 * element. Default value is an instance of UnknownExtensionDeserializer.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
97 *
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
98 * @see UnknownExtensionDeserializer
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
99 */
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
100 public ExtensionDeserializer getDefaultDeserializer()
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
101 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
102 return defaultDeser;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
103 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
104
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
105 /**
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
106 * Declare that the specified serializer should be used to serialize
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
107 * all extensibility elements with a qname matching elementType, when
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
108 * encountered as children of the specified parentType.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
109 *
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
110 * @param parentType a class object indicating where in the WSDL
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
111 * definition this extension was encountered. For
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
112 * example, javax.wsdls.Binding.class would be used to indicate
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
113 * this extensibility element was found in the list of
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
114 * extensibility elements belonging to a javax.wsdls.Binding.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
115 * @param elementType the qname of the extensibility element
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
116 * @param es the extension serializer to use
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
117 *
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
118 * @see #querySerializer(Class, QName)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
119 */
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
120 public void registerSerializer(Class parentType,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
121 QName elementType,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
122 ExtensionSerializer es)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
123 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
124 Map innerSerializerReg = (Map)serializerReg.get(parentType);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
125
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
126 if (innerSerializerReg == null)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
127 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
128 innerSerializerReg = new Hashtable();
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
129
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
130 serializerReg.put(parentType, innerSerializerReg);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
131 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
132
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
133 innerSerializerReg.put(elementType, es);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
134 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
135
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
136 /**
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
137 * Declare that the specified deserializer should be used to deserialize
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
138 * all extensibility elements with a qname matching elementType, when
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
139 * encountered as immediate children of the element represented by the
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
140 * specified parentType.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
141 *
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
142 * @param parentType a class object indicating where in the WSDL
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
143 * document this extensibility element was encountered. For
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
144 * example, javax.wsdls.Binding.class would be used to indicate
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
145 * this element was encountered as an immediate child of
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
146 * a <wsdl:binding> element.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
147 * @param elementType the qname of the extensibility element
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
148 * @param ed the extension deserializer to use
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
149 *
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
150 * @see #queryDeserializer(Class, QName)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
151 */
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
152 public void registerDeserializer(Class parentType,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
153 QName elementType,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
154 ExtensionDeserializer ed)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
155 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
156 Map innerDeserializerReg = (Map)deserializerReg.get(parentType);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
157
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
158 if (innerDeserializerReg == null)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
159 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
160 innerDeserializerReg = new Hashtable();
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
161
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
162 deserializerReg.put(parentType, innerDeserializerReg);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
163 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
164
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
165 innerDeserializerReg.put(elementType, ed);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
166 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
167
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
168 /**
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
169 * Look up the serializer to use for the extensibility element with
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
170 * the qname elementType, which was encountered as a child of the
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
171 * specified parentType.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
172 *
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
173 * @param parentType a class object indicating where in the WSDL
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
174 * definition this extension was encountered. For
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
175 * example, javax.wsdls.Binding.class would be used to indicate
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
176 * this extensibility element was found in the list of
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
177 * extensibility elements belonging to a javax.wsdls.Binding.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
178 * @param elementType the qname of the extensibility element
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
179 *
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
180 * @return the extension serializer, if one was found. If none was
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
181 * found, the behavior depends on the value of the defaultSerializer
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
182 * property. If the defaultSerializer property is set to a non-null
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
183 * value, that value is returned; otherwise, a WSDLSException is
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
184 * thrown.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
185 *
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
186 * @see #registerSerializer(Class, QName, ExtensionSerializer)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
187 * @see #setDefaultSerializer(ExtensionSerializer)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
188 */
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
189 public ExtensionSerializer querySerializer(Class parentType,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
190 QName elementType)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
191 throws WADLSException
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
192 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
193 Map innerSerializerReg = (Map)serializerReg.get(parentType);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
194 ExtensionSerializer es = null;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
195
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
196 if (innerSerializerReg != null)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
197 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
198 es = (ExtensionSerializer)innerSerializerReg.get(elementType);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
199 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
200
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
201 if (es == null)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
202 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
203 es = defaultSer;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
204 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
205
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
206 if (es == null)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
207 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
208 throw new WADLSException(WADLSException.CONFIGURATION_ERROR,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
209 "No ExtensionSerializer found " +
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
210 "to serialize a '" + elementType +
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
211 "' element in the context of a '" +
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
212 parentType.getName() + "'.");
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
213 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
214
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
215 return es;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
216 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
217
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
218 /**
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
219 * Look up the deserializer for the extensibility element with the
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
220 * qname elementType, which was encountered as an immediate child
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
221 * of the element represented by the specified parentType.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
222 *
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
223 * @param parentType a class object indicating where in the WSDL
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
224 * document this extensibility element was encountered. For
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
225 * example, javax.wsdls.Binding.class would be used to indicate
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
226 * this element was encountered as an immediate child of
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
227 * a <wsdl:binding> element.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
228 * @param elementType the qname of the extensibility element
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
229 *
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
230 * @return the extension deserializer, if one was found. If none was
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
231 * found, the behavior depends on the value of the defaultDeserializer
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
232 * property. If the defaultDeserializer property is set to a non-null
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
233 * value, that value is returned; otherwise, a WSDLSException is thrown.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
234 *
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
235 * @see #registerDeserializer(Class, QName, ExtensionDeserializer)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
236 * @see #setDefaultDeserializer(ExtensionDeserializer)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
237 */
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
238 public ExtensionDeserializer queryDeserializer(Class parentType,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
239 QName elementType)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
240 throws WADLSException
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
241 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
242
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
243 System.out.println("%%%% Inside Query Deserializer");
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
244 Map innerDeserializerReg = (Map)deserializerReg.get(parentType);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
245 System.out.println("%%%% inner DeserializerReg Size:"+innerDeserializerReg.size());
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
246 ExtensionDeserializer ed = null;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
247
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
248 if (innerDeserializerReg != null)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
249 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
250 System.out.println("%%%% Inner Deserializer not null");
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
251 ed = (ExtensionDeserializer)innerDeserializerReg.get(elementType);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
252 System.out.println("%%%% Ed string "+ed.toString());
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
253 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
254
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
255 if (ed == null)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
256 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
257 ed = defaultDeser;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
258 System.out.println("%%%% Default Deser String:"+defaultDeser.toString());
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
259 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
260
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
261 if (ed == null)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
262 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
263 throw new WADLSException(WADLSException.CONFIGURATION_ERROR,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
264 "No ExtensionDeserializer found " +
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
265 "to deserialize a '" + elementType +
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
266 "' element in the context of a '" +
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
267 parentType.getName() + "'.");
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
268 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
269
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
270 return ed;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
271 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
272
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
273 /**
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
274 * Returns a set of QNames representing the extensibility elements
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
275 * that are allowed as children of the specified parent type.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
276 * Basically, this method returns the keys associated with the set
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
277 * of extension deserializers registered for this parent type.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
278 * Returns null if no extension deserializers are registered for
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
279 * this parent type.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
280 */
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
281 public Set getAllowableExtensions(Class parentType)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
282 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
283 Map innerDeserializerReg = (Map)deserializerReg.get(parentType);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
284
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
285 return (innerDeserializerReg != null)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
286 ? innerDeserializerReg.keySet()
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
287 : null;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
288 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
289
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
290 /**
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
291 * Declare that the specified extensionType is the concrete
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
292 * class which should be used to represent extensibility elements
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
293 * with qnames matching elementType, that are intended to exist as
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
294 * children of the specified parentType.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
295 *
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
296 * @param parentType a class object indicating where in the WSDL
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
297 * definition this extension would exist. For example,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
298 * javax.wsdls.Binding.class would be used to indicate
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
299 * this extensibility element would be added to the list of
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
300 * extensibility elements belonging to a javax.wsdls.Binding,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
301 * after being instantiated.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
302 * @param elementType the qname of the extensibility element
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
303 * @param extensionType the concrete class which should be instantiated
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
304 *
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
305 * @see #createExtension(Class, QName)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
306 */
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
307 public void mapExtensionTypes(Class parentType,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
308 QName elementType,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
309 Class extensionType)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
310 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
311 Map innerExtensionTypeReg = (Map)extensionTypeReg.get(parentType);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
312
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
313 if (innerExtensionTypeReg == null)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
314 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
315 innerExtensionTypeReg = new Hashtable();
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
316
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
317 extensionTypeReg.put(parentType, innerExtensionTypeReg);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
318 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
319
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
320 innerExtensionTypeReg.put(elementType, extensionType);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
321 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
322
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
323 /**
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
324 * Create an instance of the type which was declared to be used to
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
325 * represent extensibility elements with qnames matching elementType,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
326 * when intended to exist as children of the specified parentType.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
327 * This method allows a user to instantiate an extensibility element
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
328 * without having to know the implementing type.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
329 *
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
330 * @param parentType a class object indicating where in the WSDL
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
331 * definition this extension will exist. For example,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
332 * javax.wsdls.Binding.class would be used to indicate
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
333 * this extensibility element is going to be added to the list of
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
334 * extensibility elements belonging to a javax.wsdls.Binding,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
335 * after being instantiated.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
336 * @param elementType the qname of the extensibility element
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
337 *
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
338 * @return a new instance of the type used to represent the
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
339 * specified extension
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
340 *
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
341 * @see #mapExtensionTypes(Class, QName, Class)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
342 */
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
343 public ExtensibilityElement createExtension(Class parentType,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
344 QName elementType)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
345 throws WADLSException
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
346 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
347 Map innerExtensionTypeReg = (Map)extensionTypeReg.get(parentType);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
348 Class extensionType = null;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
349
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
350 if (innerExtensionTypeReg != null)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
351 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
352 extensionType = (Class)innerExtensionTypeReg.get(elementType);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
353 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
354
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
355 if (extensionType == null)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
356 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
357 throw new WADLSException(WADLSException.CONFIGURATION_ERROR,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
358 "No Java extensionType found " +
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
359 "to represent a '" + elementType +
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
360 "' element in the context of a '" +
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
361 parentType.getName() + "'.");
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
362 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
363 else if (!(ExtensibilityElement.class.isAssignableFrom(extensionType)))
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
364 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
365 throw new WADLSException(WADLSException.CONFIGURATION_ERROR,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
366 "The Java extensionType '" +
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
367 extensionType.getName() + "' does " +
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
368 "not implement the ExtensibilityElement " +
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
369 "interface.");
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
370 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
371
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
372 try
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
373 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
374 ExtensibilityElement ee = (ExtensibilityElement)extensionType.newInstance();
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
375
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
376 if (ee.getElementType() == null)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
377 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
378 ee.setElementType(elementType);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
379 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
380
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
381 return ee;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
382 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
383 catch (Exception e)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
384 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
385 /*
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
386 Catches:
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
387 InstantiationException
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
388 IllegalAccessException
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
389 */
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
390 throw new WADLSException(WADLSException.CONFIGURATION_ERROR,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
391 "Problem instantiating Java " +
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
392 "extensionType '" + extensionType.getName() +
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
393 "'.",
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
394 e);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
395 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
396 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
397
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
398 /**
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
399 * Declare that the type of the specified extension attribute, when it occurs
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
400 * as an attribute of the specified parent type, should be assumed to be
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
401 * attrType.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
402 *
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
403 * @param parentType a class object indicating where in the WSDL
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
404 * document this extensibility attribute was encountered. For
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
405 * example, javax.wsdls.Binding.class would be used to indicate
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
406 * this attribute was defined on a <wsdl:binding> element.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
407 * @param attrName the qname of the extensibility attribute
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
408 * @param attrType one of the constants defined on the AttributeExtensible
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
409 * class
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
410 *
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
411 * @see #queryExtensionAttributeType(Class, QName)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
412 * @see AttributeExtensible
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
413 */
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
414 public void registerExtensionAttributeType(Class parentType,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
415 QName attrName,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
416 int attrType)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
417 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
418 Map innerExtensionAttributeTypeReg =
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
419 (Map)extensionAttributeTypeReg.get(parentType);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
420
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
421 if (innerExtensionAttributeTypeReg == null)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
422 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
423 innerExtensionAttributeTypeReg = new Hashtable();
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
424
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
425 extensionAttributeTypeReg.put(parentType, innerExtensionAttributeTypeReg);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
426 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
427
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
428 innerExtensionAttributeTypeReg.put(attrName, new Integer(attrType));
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
429 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
430
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
431 /**
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
432 * Look up the type of the extensibility attribute with the qname attrName,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
433 * which was defined on an element represented by the specified parentType.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
434 *
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
435 * @param parentType a class object indicating where in the WSDL
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
436 * document this extensibility attribute was encountered. For
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
437 * example, javax.wsdls.Binding.class would be used to indicate
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
438 * this attribute was defined on a <wsdl:binding> element.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
439 * @param attrName the qname of the extensibility attribute
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
440 *
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
441 * @return one of the constants defined on the AttributeExtensible class
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
442 *
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
443 * @see #registerExtensionAttributeType(Class, QName, int)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
444 * @see AttributeExtensible
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
445 */
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
446 public int queryExtensionAttributeType(Class parentType, QName attrName)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
447 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
448 Map innerExtensionAttributeTypeReg =
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
449 (Map)extensionAttributeTypeReg.get(parentType);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
450 Integer attrType = null;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
451
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
452 if (innerExtensionAttributeTypeReg != null)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
453 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
454 attrType = (Integer)innerExtensionAttributeTypeReg.get(attrName);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
455 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
456
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
457 if (attrType != null)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
458 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
459 return attrType.intValue();
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
460 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
461 else
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
462 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
463 return AttributeExtensible.NO_DECLARED_TYPE;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
464 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
465 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
466 }