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 }