src/share/jaxws_classes/com/sun/tools/internal/ws/wsdl/parser/SOAPEntityReferenceValidator.java

changeset 286
f50545b5e2f1
child 368
0989ad8c0860
equal deleted inserted replaced
284:88b85470e72c 286:f50545b5e2f1
1 /*
2 * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package com.sun.tools.internal.ws.wsdl.parser;
27
28 import com.sun.tools.internal.ws.wsdl.document.schema.SchemaConstants;
29 import com.sun.tools.internal.ws.wsdl.document.schema.SchemaKinds;
30 import com.sun.tools.internal.ws.wsdl.document.soap.SOAPConstants;
31 import com.sun.tools.internal.ws.wsdl.framework.EntityReferenceValidator;
32 import com.sun.tools.internal.ws.wsdl.framework.Kind;
33
34 import javax.xml.namespace.QName;
35 import java.util.HashSet;
36 import java.util.Set;
37
38 /**
39 * An interface implemented by a class that is capable of validating
40 * a QName/Kind pair referring to an external entity.
41 *
42 * @author WS Development Team
43 */
44 public class SOAPEntityReferenceValidator implements EntityReferenceValidator {
45 public SOAPEntityReferenceValidator() {
46 }
47
48 public boolean isValid(Kind kind, QName name) {
49
50 // just let all "xml:" QNames through
51 if (name.getNamespaceURI().equals(Constants.NS_XML))
52 return true;
53
54 if (kind == SchemaKinds.XSD_TYPE) {
55 return _validTypes.contains(name);
56 } else if (kind == SchemaKinds.XSD_ELEMENT) {
57 return _validElements.contains(name);
58 } else if (kind == SchemaKinds.XSD_ATTRIBUTE) {
59 return _validAttributes.contains(name);
60 } else {
61 // no luck
62 return false;
63 }
64 }
65
66 private static final Set _validTypes;
67 private static final Set _validElements;
68 private static final Set _validAttributes;
69
70 static {
71 // add all XML Schema and SOAP types
72 _validTypes = new HashSet();
73 _validTypes.add(SOAPConstants.QNAME_TYPE_ARRAY);
74 _validTypes.add(SchemaConstants.QNAME_TYPE_STRING);
75 _validTypes.add(SchemaConstants.QNAME_TYPE_NORMALIZED_STRING);
76 _validTypes.add(SchemaConstants.QNAME_TYPE_TOKEN);
77 _validTypes.add(SchemaConstants.QNAME_TYPE_BYTE);
78 _validTypes.add(SchemaConstants.QNAME_TYPE_UNSIGNED_BYTE);
79 _validTypes.add(SchemaConstants.QNAME_TYPE_BASE64_BINARY);
80 _validTypes.add(SchemaConstants.QNAME_TYPE_HEX_BINARY);
81 _validTypes.add(SchemaConstants.QNAME_TYPE_INTEGER);
82 _validTypes.add(SchemaConstants.QNAME_TYPE_POSITIVE_INTEGER);
83 _validTypes.add(SchemaConstants.QNAME_TYPE_NEGATIVE_INTEGER);
84 _validTypes.add(SchemaConstants.QNAME_TYPE_NON_NEGATIVE_INTEGER);
85 _validTypes.add(SchemaConstants.QNAME_TYPE_NON_POSITIVE_INTEGER);
86 _validTypes.add(SchemaConstants.QNAME_TYPE_INT);
87 _validTypes.add(SchemaConstants.QNAME_TYPE_UNSIGNED_INT);
88 _validTypes.add(SchemaConstants.QNAME_TYPE_LONG);
89 _validTypes.add(SchemaConstants.QNAME_TYPE_UNSIGNED_LONG);
90 _validTypes.add(SchemaConstants.QNAME_TYPE_SHORT);
91 _validTypes.add(SchemaConstants.QNAME_TYPE_UNSIGNED_SHORT);
92 _validTypes.add(SchemaConstants.QNAME_TYPE_DECIMAL);
93 _validTypes.add(SchemaConstants.QNAME_TYPE_FLOAT);
94 _validTypes.add(SchemaConstants.QNAME_TYPE_DOUBLE);
95 _validTypes.add(SchemaConstants.QNAME_TYPE_BOOLEAN);
96 _validTypes.add(SchemaConstants.QNAME_TYPE_TIME);
97 _validTypes.add(SchemaConstants.QNAME_TYPE_DATE_TIME);
98 _validTypes.add(SchemaConstants.QNAME_TYPE_DURATION);
99 _validTypes.add(SchemaConstants.QNAME_TYPE_DATE);
100 _validTypes.add(SchemaConstants.QNAME_TYPE_G_MONTH);
101 _validTypes.add(SchemaConstants.QNAME_TYPE_G_YEAR);
102 _validTypes.add(SchemaConstants.QNAME_TYPE_G_YEAR_MONTH);
103 _validTypes.add(SchemaConstants.QNAME_TYPE_G_DAY);
104 _validTypes.add(SchemaConstants.QNAME_TYPE_G_MONTH_DAY);
105 _validTypes.add(SchemaConstants.QNAME_TYPE_NAME);
106 _validTypes.add(SchemaConstants.QNAME_TYPE_QNAME);
107 _validTypes.add(SchemaConstants.QNAME_TYPE_NCNAME);
108 _validTypes.add(SchemaConstants.QNAME_TYPE_ANY_URI);
109 _validTypes.add(SchemaConstants.QNAME_TYPE_ID);
110 _validTypes.add(SchemaConstants.QNAME_TYPE_IDREF);
111 _validTypes.add(SchemaConstants.QNAME_TYPE_IDREFS);
112 _validTypes.add(SchemaConstants.QNAME_TYPE_ENTITY);
113 _validTypes.add(SchemaConstants.QNAME_TYPE_ENTITIES);
114 _validTypes.add(SchemaConstants.QNAME_TYPE_NOTATION);
115 _validTypes.add(SchemaConstants.QNAME_TYPE_NMTOKEN);
116 _validTypes.add(SchemaConstants.QNAME_TYPE_NMTOKENS);
117 _validTypes.add(SchemaConstants.QNAME_TYPE_URTYPE);
118 _validTypes.add(SchemaConstants.QNAME_TYPE_SIMPLE_URTYPE);
119 _validTypes.add(SOAPConstants.QNAME_TYPE_STRING);
120 _validTypes.add(SOAPConstants.QNAME_TYPE_NORMALIZED_STRING);
121 _validTypes.add(SOAPConstants.QNAME_TYPE_TOKEN);
122 _validTypes.add(SOAPConstants.QNAME_TYPE_BYTE);
123 _validTypes.add(SOAPConstants.QNAME_TYPE_UNSIGNED_BYTE);
124 _validTypes.add(SOAPConstants.QNAME_TYPE_BASE64_BINARY);
125 _validTypes.add(SOAPConstants.QNAME_TYPE_HEX_BINARY);
126 _validTypes.add(SOAPConstants.QNAME_TYPE_INTEGER);
127 _validTypes.add(SOAPConstants.QNAME_TYPE_POSITIVE_INTEGER);
128 _validTypes.add(SOAPConstants.QNAME_TYPE_NEGATIVE_INTEGER);
129 _validTypes.add(SOAPConstants.QNAME_TYPE_NON_NEGATIVE_INTEGER);
130 _validTypes.add(SOAPConstants.QNAME_TYPE_NON_POSITIVE_INTEGER);
131 _validTypes.add(SOAPConstants.QNAME_TYPE_INT);
132 _validTypes.add(SOAPConstants.QNAME_TYPE_UNSIGNED_INT);
133 _validTypes.add(SOAPConstants.QNAME_TYPE_LONG);
134 _validTypes.add(SOAPConstants.QNAME_TYPE_UNSIGNED_LONG);
135 _validTypes.add(SOAPConstants.QNAME_TYPE_SHORT);
136 _validTypes.add(SOAPConstants.QNAME_TYPE_UNSIGNED_SHORT);
137 _validTypes.add(SOAPConstants.QNAME_TYPE_DECIMAL);
138 _validTypes.add(SOAPConstants.QNAME_TYPE_FLOAT);
139 _validTypes.add(SOAPConstants.QNAME_TYPE_DOUBLE);
140 _validTypes.add(SOAPConstants.QNAME_TYPE_BOOLEAN);
141 _validTypes.add(SOAPConstants.QNAME_TYPE_TIME);
142 _validTypes.add(SOAPConstants.QNAME_TYPE_DATE_TIME);
143 _validTypes.add(SOAPConstants.QNAME_TYPE_DURATION);
144 _validTypes.add(SOAPConstants.QNAME_TYPE_DATE);
145 _validTypes.add(SOAPConstants.QNAME_TYPE_G_MONTH);
146 _validTypes.add(SOAPConstants.QNAME_TYPE_G_YEAR);
147 _validTypes.add(SOAPConstants.QNAME_TYPE_G_YEAR_MONTH);
148 _validTypes.add(SOAPConstants.QNAME_TYPE_G_DAY);
149 _validTypes.add(SOAPConstants.QNAME_TYPE_G_MONTH_DAY);
150 _validTypes.add(SOAPConstants.QNAME_TYPE_NAME);
151 _validTypes.add(SOAPConstants.QNAME_TYPE_QNAME);
152 _validTypes.add(SOAPConstants.QNAME_TYPE_NCNAME);
153 _validTypes.add(SOAPConstants.QNAME_TYPE_ANY_URI);
154 _validTypes.add(SOAPConstants.QNAME_TYPE_ID);
155 _validTypes.add(SOAPConstants.QNAME_TYPE_IDREF);
156 _validTypes.add(SOAPConstants.QNAME_TYPE_IDREFS);
157 _validTypes.add(SOAPConstants.QNAME_TYPE_ENTITY);
158 _validTypes.add(SOAPConstants.QNAME_TYPE_ENTITIES);
159 _validTypes.add(SOAPConstants.QNAME_TYPE_NOTATION);
160 _validTypes.add(SOAPConstants.QNAME_TYPE_NMTOKEN);
161 _validTypes.add(SOAPConstants.QNAME_TYPE_NMTOKENS);
162 _validTypes.add(SOAPConstants.QNAME_TYPE_BASE64);
163 // New types 12/3/02
164 _validTypes.add(SchemaConstants.QNAME_TYPE_LANGUAGE);
165
166 // add all SOAP encoding elements
167 _validElements = new HashSet();
168 _validElements.add(SOAPConstants.QNAME_ELEMENT_STRING);
169 _validElements.add(SOAPConstants.QNAME_ELEMENT_NORMALIZED_STRING);
170 _validElements.add(SOAPConstants.QNAME_ELEMENT_TOKEN);
171 _validElements.add(SOAPConstants.QNAME_ELEMENT_BYTE);
172 _validElements.add(SOAPConstants.QNAME_ELEMENT_UNSIGNED_BYTE);
173 _validElements.add(SOAPConstants.QNAME_ELEMENT_BASE64_BINARY);
174 _validElements.add(SOAPConstants.QNAME_ELEMENT_HEX_BINARY);
175 _validElements.add(SOAPConstants.QNAME_ELEMENT_INTEGER);
176 _validElements.add(SOAPConstants.QNAME_ELEMENT_POSITIVE_INTEGER);
177 _validElements.add(SOAPConstants.QNAME_ELEMENT_NEGATIVE_INTEGER);
178 _validElements.add(SOAPConstants.QNAME_ELEMENT_NON_NEGATIVE_INTEGER);
179 _validElements.add(SOAPConstants.QNAME_ELEMENT_NON_POSITIVE_INTEGER);
180 _validElements.add(SOAPConstants.QNAME_ELEMENT_INT);
181 _validElements.add(SOAPConstants.QNAME_ELEMENT_UNSIGNED_INT);
182 _validElements.add(SOAPConstants.QNAME_ELEMENT_LONG);
183 _validElements.add(SOAPConstants.QNAME_ELEMENT_UNSIGNED_LONG);
184 _validElements.add(SOAPConstants.QNAME_ELEMENT_SHORT);
185 _validElements.add(SOAPConstants.QNAME_ELEMENT_UNSIGNED_SHORT);
186 _validElements.add(SOAPConstants.QNAME_ELEMENT_DECIMAL);
187 _validElements.add(SOAPConstants.QNAME_ELEMENT_FLOAT);
188 _validElements.add(SOAPConstants.QNAME_ELEMENT_DOUBLE);
189 _validElements.add(SOAPConstants.QNAME_ELEMENT_BOOLEAN);
190 _validElements.add(SOAPConstants.QNAME_ELEMENT_TIME);
191 _validElements.add(SOAPConstants.QNAME_ELEMENT_DATE_TIME);
192 _validElements.add(SOAPConstants.QNAME_ELEMENT_DURATION);
193 _validElements.add(SOAPConstants.QNAME_ELEMENT_DATE);
194 _validElements.add(SOAPConstants.QNAME_ELEMENT_G_MONTH);
195 _validElements.add(SOAPConstants.QNAME_ELEMENT_G_YEAR);
196 _validElements.add(SOAPConstants.QNAME_ELEMENT_G_YEAR_MONTH);
197 _validElements.add(SOAPConstants.QNAME_ELEMENT_G_DAY);
198 _validElements.add(SOAPConstants.QNAME_ELEMENT_G_MONTH_DAY);
199 _validElements.add(SOAPConstants.QNAME_ELEMENT_NAME);
200 _validElements.add(SOAPConstants.QNAME_ELEMENT_QNAME);
201 _validElements.add(SOAPConstants.QNAME_ELEMENT_NCNAME);
202 _validElements.add(SOAPConstants.QNAME_ELEMENT_ANY_URI);
203 _validElements.add(SOAPConstants.QNAME_ELEMENT_ID);
204 _validElements.add(SOAPConstants.QNAME_ELEMENT_IDREF);
205 _validElements.add(SOAPConstants.QNAME_ELEMENT_IDREFS);
206 _validElements.add(SOAPConstants.QNAME_ELEMENT_ENTITY);
207 _validElements.add(SOAPConstants.QNAME_ELEMENT_ENTITIES);
208 _validElements.add(SOAPConstants.QNAME_ELEMENT_NOTATION);
209 _validElements.add(SOAPConstants.QNAME_ELEMENT_NMTOKEN);
210 _validElements.add(SOAPConstants.QNAME_ELEMENT_NMTOKENS);
211
212 _validAttributes = new HashSet();
213 _validAttributes.add(SOAPConstants.QNAME_ATTR_ARRAY_TYPE);
214 _validAttributes.add(SOAPConstants.QNAME_ATTR_OFFSET);
215 _validAttributes.add(SOAPConstants.QNAME_ATTR_POSITION);
216 }
217 }

mercurial