1 /*
2 * Copyright 2014 The Apache Software Foundation.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 package org.apache.juddi.validation.vsv;
17
18 import java.util.ArrayList;
19 import java.util.HashMap;
20 import java.util.List;
21 import java.util.Map;
22 import org.apache.juddi.v3.error.ErrorMessage;
23 import org.apache.juddi.v3.error.InvalidValueException;
24 import org.uddi.api_v3.BindingTemplate;
25 import org.uddi.api_v3.BusinessEntity;
26 import org.uddi.api_v3.BusinessService;
27 import org.uddi.api_v3.KeyedReference;
28 import org.uddi.api_v3.KeyedReferenceGroup;
29 import org.uddi.api_v3.PublisherAssertion;
30 import org.uddi.api_v3.TModel;
31 import org.uddi.api_v3.TModelInstanceInfo;
32 import org.uddi.v3_service.DispositionReportFaultMessage;
33
34 /**
35 * To distinguish among various types of concept, UDDI has established the Types
36 * category system. Publishers should categorize the tModels they publish using
37 * values from uddi-org:types to make them easy to find. The approach to
38 * categorization of tModels within the UDDI Type Category system is consistent
39 * with that used for categorizing other entities using other category systems.
40 * The categorization information for each tModel is added to the <categoryBag>
41 * elements in a save_tModel API. One or more <keyedReference> elements are
42 * added to the category bag to indicate the types of the tModel that is being
43 * registered. See Appendix F Using Categorization for more information.
44 *
45 * <h4 style="margin-left:0in;text-indent:0in">11.1.1.4 Valid Values</h4>
46 *
47 * <p class="MsoBodyText">Checking of references to this value set consists of
48 * ensuring that the keyValues are from the set of categories listed
49 * below. No contextual checks are performed unless otherwise specified
50 * for a given value.</p>
51 *
52 * <p class="MsoBodyText">The following constitute the value set for this
53 * category system. The valid values are those categories marked as being
54 * "allowed". These values are used in the keyValue attributes of keyedReference
55 * elements that are contained in categoryBag elements.</p>
56 *
57 * <p class="MsoBodyText"> </p>
58 *
59 * <table class="specTable"
60 * style="width:6.0in;margin-left:.5in;border-collapse:collapse;border:none"
61 * border="1" cellpadding="0" cellspacing="0" width="576">
62 * <thead>
63 * <tr style="page-break-inside:avoid;height:6.75pt">
64 * <td style="width:26.78%;border:solid black 1.0pt;
65 * background:#FFFFCA;padding:0in 5.4pt 0in 5.4pt;height:6.75pt" valign="top"
66 * width="26%">
67 * <p class="MsoNormal"><b>ID</b></p>
68 * </td>
69 * <td style="width:19.4%;border:solid black 1.0pt;
70 * border-left:none;background:#FFFFCA;padding:0in 5.4pt 0in
71 * 5.4pt;height:6.75pt" valign="top" width="19%">
72 * <p class="MsoNormal"><b>Parent ID</b></p>
73 * </td>
74 * <td style="width:13.14%;border:solid black 1.0pt;
75 * border-left:none;background:#FFFFCA;padding:0in 5.4pt 0in
76 * 5.4pt;height:6.75pt" valign="top" width="13%">
77 * <p class="MsoNormal"><b>Allowed</b></p>
78 * </td>
79 * <td style="width:40.68%;border:solid black 1.0pt;
80 * border-left:none;background:#FFFFCA;padding:0in 5.4pt 0in
81 * 5.4pt;height:6.75pt" valign="top" width="40%">
82 * <p class="MsoNormal"><b>Description</b></p>
83 * </td>
84 * </tr>
85 * </thead>
86 * <tbody><tr style="height:6.75pt">
87 * <td style="width:26.78%;border:solid black 1.0pt; border-top:none;padding:0in
88 * 5.4pt 0in 5.4pt;height:6.75pt" valign="top" width="26%">
89 * <p class="MsoNormal">tModel</p>
90 * </td>
91 * <td style="width:19.4%;border-top:none;border-left: none;border-bottom:solid
92 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
93 * 5.4pt;height:6.75pt" valign="top" width="19%">
94 * <p class="MsoNormal"> </p>
95 * </td>
96 * <td style="width:13.14%;border-top:none;border-left: none;border-bottom:solid
97 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
98 * 5.4pt;height:6.75pt" valign="top" width="13%">
99 * <p class="MsoNormal">No</p>
100 * </td>
101 * <td style="width:40.68%;border-top:none;border-left: none;border-bottom:solid
102 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
103 * 5.4pt;height:6.75pt" valign="top" width="40%">
104 * <p class="MsoNormal">These types are used for tModels</p>
105 * </td>
106 * </tr>
107 * <tr>
108 * <td style="width:26.78%;border:solid black 1.0pt; border-top:none;padding:0in
109 * 5.4pt 0in 5.4pt" valign="top" width="26%">
110 * <p class="MsoNormal"> valueSet</p>
111 * </td>
112 * <td style="width:19.4%;border-top:none;border-left: none;border-bottom:solid
113 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
114 * valign="top" width="19%">
115 * <p class="MsoNormal">tModel</p>
116 * </td>
117 * <td style="width:13.14%;border-top:none;border-left: none;border-bottom:solid
118 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
119 * valign="top" width="13%">
120 * <p class="MsoNormal">Yes</p>
121 * </td>
122 * <td style="width:40.68%;border-top:none;border-left: none;border-bottom:solid
123 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
124 * valign="top" width="40%">
125 * <p class="MsoNormal">Value set</p>
126 * </td>
127 * </tr>
128 * <tr style="height:6.75pt">
129 * <td style="width:26.78%;border:solid black 1.0pt; border-top:none;padding:0in
130 * 5.4pt 0in 5.4pt;height:6.75pt" valign="top" width="26%">
131 * <p class="MsoNormal"> identifier</p>
132 * </td>
133 * <td style="width:19.4%;border-top:none;border-left: none;border-bottom:solid
134 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
135 * 5.4pt;height:6.75pt" valign="top" width="19%">
136 * <p class="MsoNormal">valueSet</p>
137 * </td>
138 * <td style="width:13.14%;border-top:none;border-left: none;border-bottom:solid
139 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
140 * 5.4pt;height:6.75pt" valign="top" width="13%">
141 * <p class="MsoNormal">Yes</p>
142 * </td>
143 * <td style="width:40.68%;border-top:none;border-left: none;border-bottom:solid
144 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
145 * 5.4pt;height:6.75pt" valign="top" width="40%">
146 * <p class="MsoNormal">Identifier system</p>
147 * </td>
148 * </tr>
149 * <tr style="height:6.75pt">
150 * <td style="width:26.78%;border:solid black 1.0pt; border-top:none;padding:0in
151 * 5.4pt 0in 5.4pt;height:6.75pt" valign="top" width="26%">
152 * <p class="MsoNormal"> namespace</p>
153 * </td>
154 * <td style="width:19.4%;border-top:none;border-left: none;border-bottom:solid
155 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
156 * 5.4pt;height:6.75pt" valign="top" width="19%">
157 * <p class="MsoNormal">valueSet</p>
158 * </td>
159 * <td style="width:13.14%;border-top:none;border-left: none;border-bottom:solid
160 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
161 * 5.4pt;height:6.75pt" valign="top" width="13%">
162 * <p class="MsoNormal">Yes</p>
163 * </td>
164 * <td style="width:40.68%;border-top:none;border-left: none;border-bottom:solid
165 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
166 * 5.4pt;height:6.75pt" valign="top" width="40%">
167 * <p class="MsoNormal">Namespace</p>
168 * </td>
169 * </tr>
170 * <tr style="height:6.75pt">
171 * <td style="width:26.78%;border:solid black 1.0pt; border-top:none;padding:0in
172 * 5.4pt 0in 5.4pt;height:6.75pt" valign="top" width="26%">
173 * <p class="MsoNormal"> categorization </p>
174 * </td>
175 * <td style="width:19.4%;border-top:none;border-left: none;border-bottom:solid
176 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
177 * 5.4pt;height:6.75pt" valign="top" width="19%">
178 * <p class="MsoNormal">valueSet</p>
179 * </td>
180 * <td style="width:13.14%;border-top:none;border-left: none;border-bottom:solid
181 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
182 * 5.4pt;height:6.75pt" valign="top" width="13%">
183 * <p class="MsoNormal">Yes</p>
184 * </td>
185 * <td style="width:40.68%;border-top:none;border-left: none;border-bottom:solid
186 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
187 * 5.4pt;height:6.75pt" valign="top" width="40%">
188 * <p class="MsoNormal">Categorization system</p>
189 * </td>
190 * </tr>
191 * <tr style="height:6.75pt">
192 * <td style="width:26.78%;border:solid black 1.0pt; border-top:none;padding:0in
193 * 5.4pt 0in 5.4pt;height:6.75pt" valign="top" width="26%">
194 * <p class="MsoNormal"> postalAddress</p>
195 * </td>
196 * <td style="width:19.4%;border-top:none;border-left: none;border-bottom:solid
197 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
198 * 5.4pt;height:6.75pt" valign="top" width="19%">
199 * <p class="MsoNormal">categorization</p>
200 * </td>
201 * <td style="width:13.14%;border-top:none;border-left: none;border-bottom:solid
202 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
203 * 5.4pt;height:6.75pt" valign="top" width="13%">
204 * <p class="MsoNormal">Yes</p>
205 * </td>
206 * <td style="width:40.68%;border-top:none;border-left: none;border-bottom:solid
207 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
208 * 5.4pt;height:6.75pt" valign="top" width="40%">
209 * <p class="MsoNormal">Postal address system</p>
210 * </td>
211 * </tr>
212 * <tr>
213 * <td style="width:26.78%;border:solid black 1.0pt; border-top:none;padding:0in
214 * 5.4pt 0in 5.4pt" valign="top" width="26%">
215 * <p class="MsoNormal"> categorizationGroup</p>
216 * </td>
217 * <td style="width:19.4%;border-top:none;border-left: none;border-bottom:solid
218 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
219 * valign="top" width="19%">
220 * <p class="MsoNormal">tModel</p>
221 * </td>
222 * <td style="width:13.14%;border-top:none;border-left: none;border-bottom:solid
223 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
224 * valign="top" width="13%">
225 * <p class="MsoNormal">Yes</p>
226 * </td>
227 * <td style="width:40.68%;border-top:none;border-left: none;border-bottom:solid
228 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
229 * valign="top" width="40%">
230 * <p class="MsoNormal">Category group system </p>
231 * </td>
232 * </tr>
233 * <tr>
234 * <td style="width:26.78%;border:solid black 1.0pt; border-top:none;padding:0in
235 * 5.4pt 0in 5.4pt" valign="top" width="26%">
236 * <p class="MsoNormal"> relationship</p>
237 * </td>
238 * <td style="width:19.4%;border-top:none;border-left: none;border-bottom:solid
239 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
240 * valign="top" width="19%">
241 * <p class="MsoNormal">tModel</p>
242 * </td>
243 * <td style="width:13.14%;border-top:none;border-left: none;border-bottom:solid
244 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
245 * valign="top" width="13%">
246 * <p class="MsoNormal">Yes</p>
247 * </td>
248 * <td style="width:40.68%;border-top:none;border-left: none;border-bottom:solid
249 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
250 * valign="top" width="40%">
251 * <p class="MsoNormal">Relationship type system</p>
252 * </td>
253 * </tr>
254 * <tr style="height:6.75pt">
255 * <td style="width:26.78%;border:solid black 1.0pt; border-top:none;padding:0in
256 * 5.4pt 0in 5.4pt;height:6.75pt" valign="top" width="26%">
257 * <p class="MsoNormal"> specification </p>
258 * </td>
259 * <td style="width:19.4%;border-top:none;border-left: none;border-bottom:solid
260 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
261 * 5.4pt;height:6.75pt" valign="top" width="19%">
262 * <p class="MsoNormal">tModel</p>
263 * </td>
264 * <td style="width:13.14%;border-top:none;border-left: none;border-bottom:solid
265 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
266 * 5.4pt;height:6.75pt" valign="top" width="13%">
267 * <p class="MsoNormal">Yes</p>
268 * </td>
269 * <td style="width:40.68%;border-top:none;border-left: none;border-bottom:solid
270 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
271 * 5.4pt;height:6.75pt" valign="top" width="40%">
272 * <p class="MsoNormal">Specification for a Web service</p>
273 * </td>
274 * </tr>
275 * <tr style="height:6.75pt">
276 * <td style="width:26.78%;border:solid black 1.0pt; border-top:none;padding:0in
277 * 5.4pt 0in 5.4pt;height:6.75pt" valign="top" width="26%">
278 * <p class="MsoNormal"> xmlSpec</p>
279 * </td>
280 * <td style="width:19.4%;border-top:none;border-left: none;border-bottom:solid
281 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
282 * 5.4pt;height:6.75pt" valign="top" width="19%">
283 * <p class="MsoNormal">specification</p>
284 * </td>
285 * <td style="width:13.14%;border-top:none;border-left: none;border-bottom:solid
286 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
287 * 5.4pt;height:6.75pt" valign="top" width="13%">
288 * <p class="MsoNormal">Yes</p>
289 * </td>
290 * <td style="width:40.68%;border-top:none;border-left: none;border-bottom:solid
291 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
292 * 5.4pt;height:6.75pt" valign="top" width="40%">
293 * <p class="MsoNormal">Specification for a Web service using XML messages</p>
294 * </td>
295 * </tr>
296 * <tr style="height:6.75pt">
297 * <td style="width:26.78%;border:solid black 1.0pt; border-top:none;padding:0in
298 * 5.4pt 0in 5.4pt;height:6.75pt" valign="top" width="26%">
299 * <p class="MsoNormal"> soapSpec</p>
300 * </td>
301 * <td style="width:19.4%;border-top:none;border-left: none;border-bottom:solid
302 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
303 * 5.4pt;height:6.75pt" valign="top" width="19%">
304 * <p class="MsoNormal">xmlSpec</p>
305 * </td>
306 * <td style="width:13.14%;border-top:none;border-left: none;border-bottom:solid
307 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
308 * 5.4pt;height:6.75pt" valign="top" width="13%">
309 * <p class="MsoNormal">Yes</p>
310 * </td>
311 * <td style="width:40.68%;border-top:none;border-left: none;border-bottom:solid
312 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
313 * 5.4pt;height:6.75pt" valign="top" width="40%">
314 * <p class="MsoNormal">Specification for interaction with a Web service using
315 * SOAP messages</p>
316 * </td>
317 * </tr>
318 * <tr style="height:6.75pt">
319 * <td style="width:26.78%;border:solid black 1.0pt; border-top:none;padding:0in
320 * 5.4pt 0in 5.4pt;height:6.75pt" valign="top" width="26%">
321 * <p class="MsoNormal"> wsdlSpec</p>
322 * </td>
323 * <td style="width:19.4%;border-top:none;border-left: none;border-bottom:solid
324 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
325 * 5.4pt;height:6.75pt" valign="top" width="19%">
326 * <p class="MsoNormal">specification</p>
327 * </td>
328 * <td style="width:13.14%;border-top:none;border-left: none;border-bottom:solid
329 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
330 * 5.4pt;height:6.75pt" valign="top" width="13%">
331 * <p class="MsoNormal">Yes</p>
332 * </td>
333 * <td style="width:40.68%;border-top:none;border-left: none;border-bottom:solid
334 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
335 * 5.4pt;height:6.75pt" valign="top" width="40%">
336 * <p class="MsoNormal">Specification for a Web service described in WSDL</p>
337 * </td>
338 * </tr>
339 * <tr style="height:6.75pt">
340 * <td style="width:26.78%;border:solid black 1.0pt; border-top:none;padding:0in
341 * 5.4pt 0in 5.4pt;height:6.75pt" valign="top" width="26%">
342 * <p class="MsoNormal"> protocol</p>
343 * </td>
344 * <td style="width:19.4%;border-top:none;border-left: none;border-bottom:solid
345 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
346 * 5.4pt;height:6.75pt" valign="top" width="19%">
347 * <p class="MsoNormal">tModel</p>
348 * </td>
349 * <td style="width:13.14%;border-top:none;border-left: none;border-bottom:solid
350 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
351 * 5.4pt;height:6.75pt" valign="top" width="13%">
352 * <p class="MsoNormal">Yes</p>
353 * </td>
354 * <td style="width:40.68%;border-top:none;border-left: none;border-bottom:solid
355 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
356 * 5.4pt;height:6.75pt" valign="top" width="40%">
357 * <p class="MsoNormal">Protocol</p>
358 * </td>
359 * </tr>
360 * <tr style="height:6.75pt">
361 * <td style="width:26.78%;border:solid black 1.0pt; border-top:none;padding:0in
362 * 5.4pt 0in 5.4pt;height:6.75pt" valign="top" width="26%">
363 * <p class="MsoNormal"> transport</p>
364 * </td>
365 * <td style="width:19.4%;border-top:none;border-left: none;border-bottom:solid
366 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
367 * 5.4pt;height:6.75pt" valign="top" width="19%">
368 * <p class="MsoNormal">protocol</p>
369 * </td>
370 * <td style="width:13.14%;border-top:none;border-left: none;border-bottom:solid
371 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
372 * 5.4pt;height:6.75pt" valign="top" width="13%">
373 * <p class="MsoNormal">Yes</p>
374 * </td>
375 * <td style="width:40.68%;border-top:none;border-left: none;border-bottom:solid
376 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
377 * 5.4pt;height:6.75pt" valign="top" width="40%">
378 * <p class="MsoNormal">Wire/transport protocol</p>
379 * </td>
380 * </tr>
381 * <tr style="height:6.75pt">
382 * <td style="width:26.78%;border:solid black 1.0pt; border-top:none;padding:0in
383 * 5.4pt 0in 5.4pt;height:6.75pt" valign="top" width="26%">
384 * <p class="MsoNormal"> signatureComponent</p>
385 * </td>
386 * <td style="width:19.4%;border-top:none;border-left: none;border-bottom:solid
387 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
388 * 5.4pt;height:6.75pt" valign="top" width="19%">
389 * <p class="MsoNormal">tModel</p>
390 * </td>
391 * <td style="width:13.14%;border-top:none;border-left: none;border-bottom:solid
392 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
393 * 5.4pt;height:6.75pt" valign="top" width="13%">
394 * <p class="MsoNormal">Yes</p>
395 * </td>
396 * <td style="width:40.68%;border-top:none;border-left: none;border-bottom:solid
397 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
398 * 5.4pt;height:6.75pt" valign="top" width="40%">
399 * <p class="MsoNormal">Signature component</p>
400 * </td>
401 * </tr>
402 * <tr style="height:6.75pt">
403 * <td style="width:26.78%;border:solid black 1.0pt; border-top:none;padding:0in
404 * 5.4pt 0in 5.4pt;height:6.75pt" valign="top" width="26%">
405 * <p class="MsoNormal"> unvalidatable</p>
406 * </td>
407 * <td style="width:19.4%;border-top:none;border-left: none;border-bottom:solid
408 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
409 * 5.4pt;height:6.75pt" valign="top" width="19%">
410 * <p class="MsoNormal">tModel</p>
411 * </td>
412 * <td style="width:13.14%;border-top:none;border-left: none;border-bottom:solid
413 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
414 * 5.4pt;height:6.75pt" valign="top" width="13%">
415 * <p class="MsoNormal">Yes</p>
416 * </td>
417 * <td style="width:40.68%;border-top:none;border-left: none;border-bottom:solid
418 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in
419 * 5.4pt;height:6.75pt" valign="top" width="40%">
420 * <p class="MsoNormal">Prevents a checked value set from being used</p>
421 * </td>
422 * </tr>
423 * <tr>
424 * <td style="width:26.78%;border:solid black 1.0pt; border-top:none;padding:0in
425 * 5.4pt 0in 5.4pt" valign="top" width="26%">
426 * <p class="MsoNormal"> checked</p>
427 * </td>
428 * <td style="width:19.4%;border-top:none;border-left: none;border-bottom:solid
429 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
430 * valign="top" width="19%">
431 * <p class="MsoNormal">tModel</p>
432 * </td>
433 * <td style="width:13.14%;border-top:none;border-left: none;border-bottom:solid
434 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
435 * valign="top" width="13%">
436 * <p class="MsoNormal">Yes</p>
437 * </td>
438 * <td style="width:40.68%;border-top:none;border-left: none;border-bottom:solid
439 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
440 * valign="top" width="40%">
441 * <p class="MsoNormal">Checked value set</p>
442 * </td>
443 * </tr>
444 * <tr>
445 * <td style="width:26.78%;border:solid black 1.0pt; border-top:none;padding:0in
446 * 5.4pt 0in 5.4pt" valign="top" width="26%">
447 * <p class="MsoNormal"> unchecked</p>
448 * </td>
449 * <td style="width:19.4%;border-top:none;border-left: none;border-bottom:solid
450 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
451 * valign="top" width="19%">
452 * <p class="MsoNormal">tModel</p>
453 * </td>
454 * <td style="width:13.14%;border-top:none;border-left: none;border-bottom:solid
455 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
456 * valign="top" width="13%">
457 * <p class="MsoNormal">Yes</p>
458 * </td>
459 * <td style="width:40.68%;border-top:none;border-left: none;border-bottom:solid
460 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
461 * valign="top" width="40%">
462 * <p class="MsoNormal">Unchecked value set</p>
463 * </td>
464 * </tr>
465 * <tr>
466 * <td style="width:26.78%;border:solid black 1.0pt; border-top:none;padding:0in
467 * 5.4pt 0in 5.4pt" valign="top" width="26%">
468 * <p class="MsoNormal"> cacheable</p>
469 * </td>
470 * <td style="width:19.4%;border-top:none;border-left: none;border-bottom:solid
471 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
472 * valign="top" width="19%">
473 * <p class="MsoNormal">tModel</p>
474 * </td>
475 * <td style="width:13.14%;border-top:none;border-left: none;border-bottom:solid
476 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
477 * valign="top" width="13%">
478 * <p class="MsoNormal">Yes</p>
479 * </td>
480 * <td style="width:40.68%;border-top:none;border-left: none;border-bottom:solid
481 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
482 * valign="top" width="40%">
483 * <p class="MsoNormal">Cacheable checked value set</p>
484 * </td>
485 * </tr>
486 * <tr>
487 * <td style="width:26.78%;border:solid black 1.0pt; border-top:none;padding:0in
488 * 5.4pt 0in 5.4pt" valign="top" width="26%">
489 * <p class="MsoNormal"> uncacheable</p>
490 * </td>
491 * <td style="width:19.4%;border-top:none;border-left: none;border-bottom:solid
492 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
493 * valign="top" width="19%">
494 * <p class="MsoNormal">tModel</p>
495 * </td>
496 * <td style="width:13.14%;border-top:none;border-left: none;border-bottom:solid
497 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
498 * valign="top" width="13%">
499 * <p class="MsoNormal">Yes</p>
500 * </td>
501 * <td style="width:40.68%;border-top:none;border-left: none;border-bottom:solid
502 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
503 * valign="top" width="40%">
504 * <p class="MsoNormal">Uncacheable checked value set</p>
505 * </td>
506 * </tr>
507 * <tr>
508 * <td style="width:26.78%;border:solid black 1.0pt; border-top:none;padding:0in
509 * 5.4pt 0in 5.4pt" valign="top" width="26%">
510 * <p class="MsoNormal"> keyGenerator</p>
511 * </td>
512 * <td style="width:19.4%;border-top:none;border-left: none;border-bottom:solid
513 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
514 * valign="top" width="19%">
515 * <p class="MsoNormal">tModel</p>
516 * </td>
517 * <td style="width:13.14%;border-top:none;border-left: none;border-bottom:solid
518 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
519 * valign="top" width="13%">
520 * <p class="MsoNormal">Yes</p>
521 * </td>
522 * <td style="width:40.68%;border-top:none;border-left: none;border-bottom:solid
523 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
524 * valign="top" width="40%">
525 * <p class="MsoNormal">Key generator (Note: A contextual check is performed as
526 * specified below if this value is used)</p>
527 * </td>
528 * </tr>
529 * <tr>
530 * <td style="width:26.78%;border:solid black 1.0pt; border-top:none;padding:0in
531 * 5.4pt 0in 5.4pt" valign="top" width="26%">
532 * <p class="MsoNormal"> findQualifier</p>
533 * </td>
534 * <td style="width:19.4%;border-top:none;border-left: none;border-bottom:solid
535 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
536 * valign="top" width="19%">
537 * <p class="MsoNormal">tModel</p>
538 * </td>
539 * <td style="width:13.14%;border-top:none;border-left: none;border-bottom:solid
540 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
541 * valign="top" width="13%">
542 * <p class="MsoNormal">Yes</p>
543 * </td>
544 * <td style="width:40.68%;border-top:none;border-left: none;border-bottom:solid
545 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
546 * valign="top" width="40%">
547 * <p class="MsoNormal">Find qualifier</p>
548 * </td>
549 * </tr>
550 * <tr>
551 * <td style="width:26.78%;border:solid black 1.0pt; border-top:none;padding:0in
552 * 5.4pt 0in 5.4pt" valign="top" width="26%">
553 * <p class="MsoNormal"> sortOrder</p>
554 * </td>
555 * <td style="width:19.4%;border-top:none;border-left: none;border-bottom:solid
556 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
557 * valign="top" width="19%">
558 * <p class="MsoNormal">findQualifier</p>
559 * </td>
560 * <td style="width:13.14%;border-top:none;border-left: none;border-bottom:solid
561 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
562 * valign="top" width="13%">
563 * <p class="MsoNormal">Yes</p>
564 * </td>
565 * <td style="width:40.68%;border-top:none;border-left: none;border-bottom:solid
566 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
567 * valign="top" width="40%">
568 * <p class="MsoNormal">Sort order</p>
569 * </td>
570 * </tr>
571 * <tr>
572 * <td style="width:26.78%;border:solid black 1.0pt; border-top:none;padding:0in
573 * 5.4pt 0in 5.4pt" valign="top" width="26%">
574 * <p class="MsoNormal"> useTypeDesignator</p>
575 * </td>
576 * <td style="width:19.4%;border-top:none;border-left: none;border-bottom:solid
577 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
578 * valign="top" width="19%">
579 * <p class="MsoNormal">tModel</p>
580 * </td>
581 * <td style="width:13.14%;border-top:none;border-left: none;border-bottom:solid
582 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
583 * valign="top" width="13%">
584 * <p class="MsoNormal">Yes</p>
585 * </td>
586 * <td style="width:40.68%;border-top:none;border-left: none;border-bottom:solid
587 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
588 * valign="top" width="40%">
589 * <p class="MsoNormal">Designates a kind of usage for the pieces of data with
590 * which it is associated</p>
591 * </td>
592 * </tr>
593 * <tr>
594 * <td style="width:26.78%;border:solid black 1.0pt; border-top:none;padding:0in
595 * 5.4pt 0in 5.4pt" valign="top" width="26%">
596 * <p class="MsoNormal">bindingTemplate</p>
597 * </td>
598 * <td style="width:19.4%;border-top:none;border-left: none;border-bottom:solid
599 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
600 * valign="top" width="19%">
601 * <p class="MsoNormal"> </p>
602 * </td>
603 * <td style="width:13.14%;border-top:none;border-left: none;border-bottom:solid
604 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
605 * valign="top" width="13%">
606 * <p class="MsoNormal">No</p>
607 * </td>
608 * <td style="width:40.68%;border-top:none;border-left: none;border-bottom:solid
609 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
610 * valign="top" width="40%">
611 * <p class="MsoNormal">These types are used for bindingTemplates</p>
612 * </td>
613 * </tr>
614 * <tr>
615 * <td style="width:26.78%;border:solid black 1.0pt; border-top:none;padding:0in
616 * 5.4pt 0in 5.4pt" valign="top" width="26%">
617 * <p class="MsoNormal"> wsdlDeployment</p>
618 * </td>
619 * <td style="width:19.4%;border-top:none;border-left: none;border-bottom:solid
620 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
621 * valign="top" width="19%">
622 * <p class="MsoNormal">bindingTemplate</p>
623 * </td>
624 * <td style="width:13.14%;border-top:none;border-left: none;border-bottom:solid
625 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
626 * valign="top" width="13%">
627 * <p class="MsoNormal">Yes</p>
628 * </td>
629 * <td style="width:40.68%;border-top:none;border-left: none;border-bottom:solid
630 * black 1.0pt;border-right:solid black 1.0pt; padding:0in 5.4pt 0in 5.4pt"
631 * valign="top" width="40%">
632 * <p class="MsoNormal">bindingTemplate represents the WSDL deployment of a Web
633 * service</p>
634 * </td>
635 * </tr>
636 * </tbody></table>
637 *
638 * <p class="MsoBodyText"> </p>
639 *
640 * <p class="MsoBodyText" style="margin-left:1.0in;text-indent:-.25in"><span
641 * style="font-family:Symbol">·<span style="font:7.0pt "Times New
642 * Roman"">
643 * </span></span>tModel: The UDDI type category system is structured to allow
644 * for categorization of registry entries other than tModels. This key is the
645 * root of the branch of the category system that is intended for use in
646 * categorization of tModels within the UDDI registry. Categorization is not
647 * allowed with this key.</p>
648 *
649 * <p class="MsoBodyText" style="margin-left:1.0in;text-indent:-.25in"><span
650 * style="font-family:Symbol">·<span style="font:7.0pt "Times New
651 * Roman"">
652 * </span></span>valueSet: A valueSet is the parent branch for the identifier,
653 * namespace, and categorization values in this category system. A tModel
654 * categorized with this value indicates it can be referenced by some other
655 * value set tModel to indicate redefinition of purpose, derivation, extension
656 * or equivalence.</p>
657 *
658 * <p class="MsoBodyText" style="margin-left:1.0in;text-indent:-.25in"><span
659 * style="font-family:Symbol">·<span style="font:7.0pt "Times New
660 * Roman"">
661 * </span></span>identifier: An identifier tModel represents a specific set of
662 * values used to uniquely identify information. Identifier tModels are intended
663 * to be used in keyedReferences inside of identifierBags. For example, a Dun
664 * & Bradstreet D-U-N-S® Number uniquely identifies companies globally. The
665 * D-U-N-S® Number system is an identifier system. </p>
666 *
667 * <p class="MsoBodyText" style="margin-left:1.0in;text-indent:-.25in"><span
668 * style="font-family:Symbol">·<span style="font:7.0pt "Times New
669 * Roman"">
670 * </span></span>namespace: A namespace tModel represents a scoping constraint
671 * or domain for a set of information. In contrast to an identifier, a namespace
672 * does not have a predefined set of values within the domain, but acts to avoid
673 * collisions. It is similar to the namespace functionality used for XML. For
674 * example, the uddi-org:relationships tModel, which is used to assert
675 * relationships between businessEntity elements, is a namespace tModel.</p>
676 *
677 * <p class="MsoBodyText" style="margin-left:1.0in;text-indent:-.25in"><span
678 * style="font-family:Symbol">·<span style="font:7.0pt "Times New
679 * Roman"">
680 * </span></span>categorization: A categorization tModel is used for category
681 * systems within the UDDI registry. NAICS and UNSPSC are examples of
682 * categorization tModels.</p>
683 *
684 * <p class="MsoBodyText" style="margin-left:1.0in;text-indent:-.25in"><span
685 * style="font-family:Symbol">·<span style="font:7.0pt "Times New
686 * Roman"">
687 * </span></span>postalAddress: A postalAddress tModel is used to identify
688 * different forms of postal address within the UDDI registry. postalAddress
689 * tModels may be used with the address element to distinguish different forms
690 * of postal address.</p>
691 *
692 * <p class="MsoBodyText" style="margin-left:1.0in;text-indent:-.25in"><span
693 * style="font-family:Symbol">·<span style="font:7.0pt "Times New
694 * Roman"">
695 * </span></span>categorizationGroup: A categorizationGroup tModel is used to
696 * relate one or more category system tModels to one another so that they can be
697 * used in keyedReferenceGroups.</p>
698 *
699 * <p class="MsoBodyText" style="margin-left:1.0in;text-indent:-.25in"><span
700 * style="font-family:Symbol">·<span style="font:7.0pt "Times New
701 * Roman"">
702 * </span></span>relationship: A relationship tModel is used for relationship
703 * categorizations within the UDDI registry. relationship tModels are typically
704 * used in connection with publisher relationship assertions.</p>
705 *
706 * <p class="MsoBodyText" style="margin-left:1.0in;text-indent:-.25in"><span
707 * style="font-family:Symbol">·<span style="font:7.0pt "Times New
708 * Roman"">
709 * </span></span>specification: A specification tModel is used for tModels that
710 * define interactions with a Web service. These interactions typically include
711 * the definition of the set of requests and responses, or other types of
712 * interaction that are prescribed by the Web service. tModels describing XML,
713 * COM, CORBA, or any other Web services are specification tModels.</p>
714 *
715 * <p class="MsoBodyText" style="margin-left:1.0in;text-indent:-.25in"><span
716 * style="font-family:Symbol">·<span style="font:7.0pt "Times New
717 * Roman"">
718 * </span></span>xmlSpec: An xmlSpec tModel is a refinement of the specification
719 * tModel type. It is used to indicate that the interaction with the Web service
720 * is via XML. The UDDI API tModels are xmlSpec tModels.</p>
721 *
722 * <p class="MsoBodyText" style="margin-left:1.0in;text-indent:-.25in"><span
723 * style="font-family:Symbol">·<span style="font:7.0pt "Times New
724 * Roman"">
725 * </span></span>soapSpec: Further refining the xmlSpec tModel type, a soapSpec
726 * is used to indicate that the interaction with the Web service is via SOAP.
727 * The UDDI API tModels are soapSpec tModels, in addition to xmlSpec
728 * tModels.</p>
729 *
730 * <p class="MsoBodyText" style="margin-left:1.0in;text-indent:-.25in"><span
731 * style="font-family:Symbol">·<span style="font:7.0pt "Times New
732 * Roman"">
733 * </span></span>wsdlSpec: A tModel for a Web service described using WSDL is
734 * categorized as a wsdlSpec.</p>
735 *
736 * <p class="MsoBodyText" style="margin-left:1.0in;text-indent:-.25in"><span
737 * style="font-family:Symbol">·<span style="font:7.0pt "Times New
738 * Roman"">
739 * </span></span>protocol: A tModel describing a protocol of any sort.</p>
740 *
741 * <p class="MsoBodyText" style="margin-left:1.0in;text-indent:-.25in"><span
742 * style="font-family:Symbol">·<span style="font:7.0pt "Times New
743 * Roman"">
744 * </span></span>transport: A transport tModel is a specific type of protocol.
745 * HTTP, FTP, and SMTP are types of transport tModels.</p>
746 *
747 * <p class="MsoBodyText" style="margin-left:1.0in;text-indent:-.25in"><span
748 * style="font-family:Symbol">·<span style="font:7.0pt "Times New
749 * Roman"">
750 * </span></span>signatureComponent: A signature component is used to for cases
751 * where a single tModel can not represent a complete specification for a Web
752 * service. This is the case for specifications like RosettaNet, where
753 * implementation requires the composition of three tModels to be complete - a
754 * general tModel indicating RNIF, one for the specific PIP, and one for the
755 * error handling services. Each of these tModels would be of type signature
756 * component, in addition to any others as appropriate.</p>
757 *
758 * <p class="MsoBodyText" style="margin-left:1.0in;text-indent:-.25in"><span
759 * style="font-family:Symbol">·<span style="font:7.0pt "Times New
760 * Roman"">
761 * </span></span>unvalidatable: Used to mark a categorization or identifier
762 * tModel as unavailable for use by keyedReferences. A value set provider
763 * may mark its value set tModel <i>unvalidatable</i> if it wants to temporarily
764 * disallow its use. See Section <a href="#_Ref8981064 ">6.4</a>
765 * <i>Checked Value Set Validation</i> for more information.</p>
766 *
767 * <p class="MsoBodyText" style="margin-left:1.0in;text-indent:-.25in"><span
768 * style="font-family:Symbol">·<span style="font:7.0pt "Times New
769 * Roman"">
770 * </span></span>checked: Marking a tModel with this categorization asserts that
771 * it represents a value set or category group system whose use, through
772 * keyedReferences, may be checked. Registry, and possibly node policy
773 * determines when and how a checked value set is supported.</p>
774 *
775 * <p class="MsoBodyText" style="margin-left:1.0in;text-indent:-.25in"><span
776 * style="font-family:Symbol">·<span style="font:7.0pt "Times New
777 * Roman"">
778 * </span></span>unchecked: Marking a tModel with this categorization asserts
779 * that it represents a value set or category group system whose use, through
780 * keyedReferences, is not checked.</p>
781 *
782 * <p class="MsoBodyText" style="margin-left:1.0in;text-indent:-.25in"><span
783 * style="font-family:Symbol">·<span style="font:7.0pt "Times New
784 * Roman"">
785 * </span></span>cacheable: Marking a tModel with this categorization asserts
786 * that it represents a checked value set or category group system whose values
787 * may be cached for validation. The validation algorithm for a supported
788 * cacheable checked value set or category group system must rely solely upon
789 * matching references against the cached set of values.</p>
790 *
791 * <p class="MsoBodyText" style="margin-left:1.0in;text-indent:-.25in"><span
792 * style="font-family:Symbol">·<span style="font:7.0pt "Times New
793 * Roman"">
794 * </span></span>uncacheable: Marking a tModel with this categorization asserts
795 * that it represents a checked value set or category group system whose values
796 * must not be cached for validation. The validation algorithm for a
797 * supported uncacheable checked value set must be specified and associated with
798 * the tModel marked with this categorization and may consider contextual
799 * criteria involving the entity associated with the reference.</p>
800 *
801 * <p class="MsoBodyText" style="margin-left:1.0in;text-indent:-.25in"><span
802 * style="font-family:Symbol">·<span style="font:7.0pt "Times New
803 * Roman"">
804 * </span></span>keyGenerator: Marking a tModel with this categorization
805 * designates it as one whose tModelKey identifies a key generator partition
806 * that can be used by its owner to derive and assign other entity keys. This
807 * categorization is reserved for key generator tModels. Any attempt to use this
808 * categorization for something other than a key generator tModel will fail with
809 * E_valueNotAllowed returned. </p>
810 *
811 * <p class="MsoBodyText" style="margin-left:1.0in;text-indent:-.25in"><span
812 * style="font-family:Symbol">·<span style="font:7.0pt "Times New
813 * Roman"">
814 * </span></span>findQualifier: A findQualifier tModel is used as the value of a
815 * findQualifier element to indicate the type of processing to occur for the
816 * inquiry function in which it is included.</p>
817 *
818 * <p class="MsoBodyText" style="margin-left:1.0in;text-indent:-.25in"><span
819 * style="font-family:Symbol">·<span style="font:7.0pt "Times New
820 * Roman"">
821 * </span></span>sortOrder: A sort order tModel defines a collation sequence
822 * that can be used during inquiries to control ordering of the results.</p>
823 *
824 * <p class="MsoBodyText" style="margin-left:1.0in;text-indent:-.25in"><span
825 * style="font-family:Symbol">·<span style="font:7.0pt "Times New
826 * Roman"">
827 * </span></span>useTypeDesignator: A useTypeDesignator tModel is used to
828 * describe the way a piece of data should be interpreted. It is
829 * frequently used to extend the space of resource types found at a URI, such as
830 * access points, overview URLs, and discovery URLs. UDDI designates a set
831 * of common use types as simple strings; tModels of the useTypeDesignator type
832 * are used to describe others.</p>
833 *
834 * <p class="MsoBodyText" style="margin-left:1.0in;text-indent:-.25in"><span
835 * style="font-family:Symbol">·<span style="font:7.0pt "Times New
836 * Roman"">
837 * </span></span>bindingTemplate: This key is the root of the branch of the
838 * category system that is intended for use in categorization of
839 * bindingTemplates within the UDDI registry. Categorization is not allowed with
840 * this key.</p>
841 *
842 * <p class="MsoBodyText" style="margin-left:1.0in;text-indent:-.25in"><span
843 * style="font-family:Symbol">·<span style="font:7.0pt "Times New
844 * Roman"">
845 * </span></span>wsdlDeployment: A bindingTemplate categorized as a
846 * wsdlDeployment contains within its accessPoint the endpoint for a WSDL
847 * deployment document.</p>
848 *
849 * @author Alex O'Ree
850 */
851 public class Uddiuddiorgcategorizationtypes implements ValueSetValidator {
852
853 public static final String key = "uddi:uddi.org:categorization:types";
854
855 private static Map<String, Boolean> NotAllowedOnBindings;
856 private static Map<String, Boolean> NotAllowedOnTModels;
857
858 static {
859 NotAllowedOnTModels = new HashMap<String, Boolean>();
860 NotAllowedOnTModels.put("wsdlDeployment".toLowerCase(), true);
861 NotAllowedOnBindings = new HashMap<String, Boolean>();
862 NotAllowedOnBindings.put("valueSet".toLowerCase(), true);
863 NotAllowedOnBindings.put("identifier".toLowerCase(), true);
864 NotAllowedOnBindings.put("namespace".toLowerCase(), true);
865 NotAllowedOnBindings.put("categorization".toLowerCase(), true);
866 NotAllowedOnBindings.put("postalAddress".toLowerCase(), true);
867 NotAllowedOnBindings.put("categorizationGroup".toLowerCase(), true);
868 NotAllowedOnBindings.put("relationship".toLowerCase(), true);
869 NotAllowedOnBindings.put("specification".toLowerCase(), true);
870 NotAllowedOnBindings.put("xmlSpec".toLowerCase(), true);
871 NotAllowedOnBindings.put("soapSpec".toLowerCase(), true);
872 NotAllowedOnBindings.put("wsdlSpec".toLowerCase(), true);
873 NotAllowedOnBindings.put("protocol".toLowerCase(), true);
874 NotAllowedOnBindings.put("transport".toLowerCase(), true);
875 NotAllowedOnBindings.put("signatureComponent".toLowerCase(), true);
876 NotAllowedOnBindings.put("unvalidatable".toLowerCase(), true);
877 NotAllowedOnBindings.put("checked".toLowerCase(), true);
878 NotAllowedOnBindings.put("unchecked".toLowerCase(), true);
879 NotAllowedOnBindings.put("cacheable".toLowerCase(), true);
880 NotAllowedOnBindings.put("uncacheable".toLowerCase(), true);
881 NotAllowedOnBindings.put("keyGenerator".toLowerCase(), true);
882 NotAllowedOnBindings.put("findQualifier".toLowerCase(), true);
883 NotAllowedOnBindings.put("sortOrder".toLowerCase(), true);
884 NotAllowedOnBindings.put("useTypeDesignator".toLowerCase(), true);
885 }
886
887 @Override
888 public void validateValuesBindingTemplate(List<BindingTemplate> items, String xpath) throws DispositionReportFaultMessage {
889 if (items == null) {
890 return;
891 }
892 //can't use everything else
893 for (int i = 0; i < items.size(); i++) {
894 if (items.get(i).getCategoryBag() != null) {
895 for (int k = 0; k < items.get(i).getCategoryBag().getKeyedReference().size(); k++) {
896 if (items.get(i).getCategoryBag().getKeyedReference().get(k).getTModelKey() != null) {
897 if (NotAllowedOnBindings.containsKey(items.get(i).getCategoryBag().getKeyedReference().get(k).getTModelKey().toLowerCase())) {
898 throw new InvalidValueException(new ErrorMessage("errors.valuesetvalidation.invalidcontent", xpath+"(" + i + ").catbag.keyedReferences(" +k +").tModelKey " + "Value [" + items.get(i).getCategoryBag().getKeyedReference().get(k).getTModelKey() + "] not allowed on bindingtemplates for key " + key));
899 }
900 }
901
902 }
903
904 for (int k = 0; k < items.get(i).getCategoryBag().getKeyedReferenceGroup().size(); k++) {
905 if (items.get(i).getCategoryBag().getKeyedReferenceGroup().get(k).getTModelKey() != null) {
906 if (NotAllowedOnBindings.containsKey(items.get(i).getCategoryBag().getKeyedReferenceGroup().get(k).getTModelKey().toLowerCase())) {
907 throw new InvalidValueException(new ErrorMessage("errors.valuesetvalidation.invalidcontent", xpath+"(" + i + ").catbag.keyedReferenceGroup(" +k +").tModelKey " +"Value [" + items.get(i).getCategoryBag().getKeyedReferenceGroup().get(k).getTModelKey() + "] not allowed on bindingtemplates for key " + key));
908 }
909 for (int j = 0; j < items.get(i).getCategoryBag().getKeyedReferenceGroup().get(k).getKeyedReference().size(); j++) {
910 if (items.get(i).getCategoryBag().getKeyedReferenceGroup().get(k).getKeyedReference().get(j).getTModelKey() != null) {
911 if (NotAllowedOnBindings.containsKey(items.get(i).getCategoryBag().getKeyedReferenceGroup().get(k).getKeyedReference().get(j).getTModelKey().toLowerCase())) {
912 throw new InvalidValueException(new ErrorMessage("errors.valuesetvalidation.invalidcontent", xpath+"(" + i + ").catbag.keyedReferenceGroup(" +k +").keyedReference(" + j + ").tModel " +"Value [" + items.get(i).getCategoryBag().getKeyedReferenceGroup().get(k).getKeyedReference().get(j).getTModelKey() + "] not allowed on bindingtemplates for key " + key));
913 }
914 }
915 }
916 }
917 }
918 }
919 if (items.get(i).getTModelInstanceDetails() != null) {
920
921 for (int k = 0; k < items.get(i).getTModelInstanceDetails().getTModelInstanceInfo().size(); k++) {
922 if (items.get(i).getTModelInstanceDetails().getTModelInstanceInfo().get(k) != null) {
923 if (key.equalsIgnoreCase(items.get(i).getTModelInstanceDetails().getTModelInstanceInfo().get(k).getTModelKey())) {
924 throw new InvalidValueException(new ErrorMessage("errors.valuesetvalidation.invalidcontent", xpath+"tModelInstanceDetails(" + k +").tModelKey " + key + " is not allowed on tModelInstanceInfos"));
925 }
926 }
927 }
928 }
929 }
930 }
931
932 @Override
933 public void validateValuesBusinessEntity(List<BusinessEntity> items) throws DispositionReportFaultMessage {
934 if (items == null) {
935 return;
936 }
937
938 //cant use the following
939 //wsdlDeployment
940 for (int i = 0; i < items.size(); i++) {
941
942 if (items.get(i).getBusinessServices() != null) {
943 validateValuesBusinessService(items.get(i).getBusinessServices().getBusinessService(), "businessEntity(" + i + ").");
944 }
945 }
946 }
947
948 @Override
949 public void validateValuesBusinessService(List<BusinessService> items, String xpath) throws DispositionReportFaultMessage {
950 if (items == null) {
951 return;
952 }
953 for (int i = 0; i < items.size(); i++) {
954 if (items.get(i).getCategoryBag() != null) {
955 //No specific rules for business services
956
957 }
958 if (items.get(i).getBindingTemplates() != null) {
959 validateValuesBindingTemplate(items.get(i).getBindingTemplates().getBindingTemplate(), xpath + "businessService(" + i + ").bindingTemplates.");
960 }
961 }
962 }
963
964 @Override
965 public void validateValuesPublisherAssertion(List<PublisherAssertion> items) throws DispositionReportFaultMessage {
966 if (items == null) {
967 return;
968 }
969 //no rules for PA
970 }
971
972 @Override
973 public void validateTmodelInstanceDetails(List<TModelInstanceInfo> tModelInstanceInfo, String xpath) throws DispositionReportFaultMessage {
974
975 }
976
977 @Override
978 public List<String> getValidValues() {
979 List<String> ret = new ArrayList<String>();
980 ret.addAll(NotAllowedOnBindings.keySet());
981 ret.addAll(NotAllowedOnTModels.keySet());
982 return ret;
983 }
984
985 @Override
986 public void validateValuesTModel(List<TModel> items) throws DispositionReportFaultMessage {
987 if (items == null) {
988 return;
989 }
990 for (int i = 0; i < items.size(); i++) {
991 if (items.get(i).getCategoryBag() != null) {
992 for (int k = 0; k < items.get(i).getCategoryBag().getKeyedReference().size(); k++) {
993 if (items.get(i).getCategoryBag().getKeyedReference().get(k).getTModelKey() != null
994 && key.equalsIgnoreCase(items.get(i).getCategoryBag().getKeyedReference().get(k).getTModelKey())) {
995 if (items.get(i).getCategoryBag().getKeyedReference().get(k).getKeyValue() != null && NotAllowedOnTModels.containsKey(items.get(i).getCategoryBag().getKeyedReference().get(k).getKeyValue().toLowerCase())) {
996 throw new InvalidValueException(new ErrorMessage("errors.valuesetvalidation.invalidcontent", "Value [" + items.get(i).getCategoryBag().getKeyedReference().get(k).getTModelKey() + "] not allowed on tModels for key " + key));
997 }
998 }
999
1000 }
1001
1002 for (int k = 0; k < items.get(i).getCategoryBag().getKeyedReferenceGroup().size(); k++) {
1003 if (items.get(i).getCategoryBag().getKeyedReferenceGroup().get(k).getTModelKey() != null) {
1004
1005 for (int j = 0; j < items.get(i).getCategoryBag().getKeyedReferenceGroup().get(k).getKeyedReference().size(); j++) {
1006 if (items.get(i).getCategoryBag().getKeyedReferenceGroup().get(k).getKeyedReference().get(j).getTModelKey() != null
1007 && key.equalsIgnoreCase(items.get(i).getCategoryBag().getKeyedReferenceGroup().get(k).getKeyedReference().get(j).getTModelKey())) {
1008 if (items.get(i).getCategoryBag().getKeyedReferenceGroup().get(k).getKeyedReference().get(j).getKeyValue() != null
1009 && NotAllowedOnTModels.containsKey(items.get(i).getCategoryBag().getKeyedReferenceGroup().get(k).getKeyedReference().get(j).getKeyValue().toLowerCase())) {
1010 throw new InvalidValueException(new ErrorMessage("errors.valuesetvalidation.invalidcontent", "Value [" + items.get(i).getCategoryBag().getKeyedReferenceGroup().get(k).getKeyedReference().get(j).getTModelKey() + "] not allowed on tModels for key " + key));
1011 }
1012 }
1013 }
1014 }
1015 }
1016 }
1017 if (items.get(i).getIdentifierBag() != null) {
1018 for (int k = 0; k < items.get(i).getCategoryBag().getKeyedReference().size(); k++) {
1019 if (items.get(i).getCategoryBag().getKeyedReference().get(k).getTModelKey() != null) {
1020 if (NotAllowedOnTModels.containsKey(items.get(i).getCategoryBag().getKeyedReference().get(k).getTModelKey().toLowerCase())) {
1021 throw new InvalidValueException(new ErrorMessage("errors.valuesetvalidation.invalidcontent", "Value [" + items.get(i).getCategoryBag().getKeyedReference().get(k).getTModelKey() + "] not allowed on tModels for key " + key));
1022 }
1023 }
1024
1025 }
1026 }
1027 }
1028 }
1029
1030 }