View Javadoc
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.&nbsp; 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">&nbsp;</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">&nbsp;</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">&nbsp; 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">&nbsp;&nbsp;&nbsp; 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">&nbsp;&nbsp;&nbsp; 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">&nbsp;&nbsp;&nbsp; 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">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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">&nbsp; 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">&nbsp; 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">&nbsp; 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">&nbsp;&nbsp;&nbsp; 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">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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">&nbsp;&nbsp;&nbsp; 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">&nbsp; 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">&nbsp;&nbsp;&nbsp; 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">&nbsp; 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">&nbsp; 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">&nbsp; 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">&nbsp; 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">&nbsp; 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">&nbsp; 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">&nbsp; 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">&nbsp; 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">&nbsp;&nbsp;&nbsp; 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">&nbsp; 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">&nbsp;</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">&nbsp; 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">&nbsp;</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 &quot;Times New
642  * Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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 &quot;Times New
651  * Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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 &quot;Times New
660  * Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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  * &amp; 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 &quot;Times New
669  * Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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 &quot;Times New
679  * Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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 &quot;Times New
686  * Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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 &quot;Times New
694  * Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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 &quot;Times New
701  * Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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 &quot;Times New
708  * Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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 &quot;Times New
717  * Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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 &quot;Times New
724  * Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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 &quot;Times New
732  * Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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 &quot;Times New
738  * Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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 &quot;Times New
743  * Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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 &quot;Times New
749  * Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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 &quot;Times New
760  * Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
761  * </span></span>unvalidatable: Used to mark a categorization or identifier
762  * tModel as unavailable for use by keyedReferences.&nbsp; A value set provider
763  * may mark its value set tModel <i>unvalidatable</i> if it wants to temporarily
764  * disallow its use.&nbsp; 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 &quot;Times New
769  * Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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.&nbsp; 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 &quot;Times New
777  * Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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 &quot;Times New
784  * Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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.&nbsp; 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&nbsp; 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 &quot;Times New
793  * Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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.&nbsp; 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 &quot;Times New
803  * Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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 &quot;Times New
813  * Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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 &quot;Times New
820  * Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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 &quot;Times New
826  * Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
827  * </span></span>useTypeDesignator: A useTypeDesignator tModel is used to
828  * describe the way a piece of data should be interpreted.&nbsp; 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.&nbsp; 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 &quot;Times New
836  * Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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 &quot;Times New
844  * Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
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 }