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.List;
20  
21  /**
22   * There are several value sets in UDDI that have entity keys as valid values,
23   * and other such value sets may be defined. Special handling of the keyValue
24   * values is required for these value sets to ensure that they can be used by
25   * applications using any version of the UDDI API. By categorizing a value set
26   * with this tModel the publisher of the value set indicates that entity keys
27   * form the valid values of the value set. This allows a UDDI implementation to
28   * map entity keys between versions as is done with all other uses of entity
29   * keys.
30   *
31   * If keys of only one type are valid for a particular value set, then that
32   * value set should have a single keyedReference relating to this tModel and the
33   * keyValue should contain the type of entity key that is valid, for example
34   * "tModelKey". If multiple types of key are valid, as in the case of
35   * uddi-org:isReplacedBy, then multiple keyedReferences can be used, one for
36   * each type of key. If any type of key is valid then a single keyedReference
37   * should be used with a keyValue of "entityKey".
38   *
39   * A value set categorized with this tModel SHOULD be treated as an internally
40   * checked value set, whether or not it is also categorized as checked.
41   *
42   * If the entity key supplied as the keyValue in a keyedReference relating to
43   * such a value set is not a valid entity key, or is the key of an entity of a
44   * type not supported by the particular value set, then the error E_invalidValue
45   * MAY be returned.
46   *
47   * Value sets may require additional validation, and this additional validation
48   * MAY be performed before or after the validation of the key itself, therefore
49   * a different error MAY be returned if one of these additional validation steps
50   * fails before the validation of the key itself.
51   *
52   * If an entityKeyValue value set is updated to remove all of the keyedReference
53   * elements referring to the "Entity Key Values" category system, a normative
54   * mapping behavior to update the keyValue of any existing references to the
55   * entityKeyValue value set is unspecified. Any new references or updates to
56   * existing references using keyedReference elements pointing to the tModel that
57   * formerly represented the entityKeyValue value set will be treated as a normal
58   * value set, where the keyValue is a string.  *
59   * Further, if a tModel is updated to add at least one keyedReference element
60   * referring to the "Entity Key Values" category system, a normative mapping
61   * behavior to update the keyValue of any existing references to the
62   * entityKeyValue value set is unspecified. Any new references or updates to
63   * existing references using keyedReference elements pointing to the tModel that
64   * formerly represented the value set will be case folded and validated as an
65   * entityKeyValue value set, where the keyValue is verified to be an existing
66   * and appropriate entityKey.  *
67   * In inquiry, the treatment of the keyValue is determined by the state of the
68   * value set tModel at the time of the inquiry. If the keyValue in an inquiry is
69   * contained in a keyedReference referring to the "Entity Key Value" set tModel,
70   * the keyValue must be case folded as part of the inquiry.
71   *
72   * @author Alex O'Ree
73   */
74  public class Uddiuddiorgcategorizationentitykeyvalues extends AbstractSimpleValidator {
75  
76          @Override
77          public List<String> getValidValues() {
78                  List<String> ret = new ArrayList<String>();
79                  ret.add("entityKey");
80                  ret.add("businessKey");
81                  ret.add("tModelKey");
82                  ret.add("serviceKey");
83                  ret.add("bindingKey");
84                  ret.add("subscriptionKey");
85                  return ret;
86          }
87  
88          @Override
89          public String getMyKey() {
90                  return "uddi:uddi.org:categorization:entitykeyvalues";
91          }
92  
93  }