Mon, 02 Oct 2017 14:20:23 +0100
8159240: XSOM parser incorrectly processes type names with whitespaces
Reviewed-by: coffeys
1 /*
2 * Copyright (c) 1997, 2017, 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 */
26 /* this file is generated by RelaxNGCC */
27 package com.sun.xml.internal.xsom.impl.parser.state;
29 import com.sun.xml.internal.bind.WhiteSpaceProcessor;
30 import com.sun.xml.internal.xsom.impl.*;
31 import com.sun.xml.internal.xsom.impl.parser.*;
32 import com.sun.xml.internal.xsom.parser.*;
34 import org.xml.sax.Attributes;
35 import org.xml.sax.Locator;
36 import org.xml.sax.SAXException;
38 class attributeDeclBody extends NGCCHandler {
39 private String name;
40 private ForeignAttributesImpl fa;
41 private AnnotationImpl annotation;
42 private Locator locator;
43 private boolean isLocal;
44 private String defaultValue;
45 private UName typeName;
46 private String fixedValue;
47 protected final NGCCRuntimeEx $runtime;
48 private int $_ngcc_current_state;
49 protected String $uri;
50 protected String $localName;
51 protected String $qname;
53 public final NGCCRuntime getRuntime() {
54 return($runtime);
55 }
57 public attributeDeclBody(NGCCHandler parent, NGCCEventSource source, NGCCRuntimeEx runtime, int cookie, Locator _locator, boolean _isLocal, String _defaultValue, String _fixedValue) {
58 super(source, parent, cookie);
59 $runtime = runtime;
60 this.locator = _locator;
61 this.isLocal = _isLocal;
62 this.defaultValue = _defaultValue;
63 this.fixedValue = _fixedValue;
64 $_ngcc_current_state = 13;
65 }
67 public attributeDeclBody(NGCCRuntimeEx runtime, Locator _locator, boolean _isLocal, String _defaultValue, String _fixedValue) {
68 this(null, runtime, runtime, -1, _locator, _isLocal, _defaultValue, _fixedValue);
69 }
71 private void action0()throws SAXException {
73 type = new DelayedRef.SimpleType(
74 $runtime, locator, $runtime.currentSchema, typeName );
76 }
78 private void action1()throws SAXException {
79 formSpecified = true;
80 }
82 public void enterElement(String $__uri, String $__local, String $__qname, Attributes $attrs) throws SAXException {
83 int $ai;
84 $uri = $__uri;
85 $localName = $__local;
86 $qname = $__qname;
87 switch($_ngcc_current_state) {
88 case 0:
89 {
90 revertToParentFromEnterElement(makeResult(), super._cookie, $__uri, $__local, $__qname, $attrs);
91 }
92 break;
93 case 12:
94 {
95 if(($ai = $runtime.getAttributeIndex("","name"))>=0) {
96 $runtime.consumeAttribute($ai);
97 $runtime.sendEnterElement(super._cookie, $__uri, $__local, $__qname, $attrs);
98 }
99 else {
100 unexpectedEnterElement($__qname);
101 }
102 }
103 break;
104 case 7:
105 {
106 if(($__uri.equals("http://www.w3.org/2001/XMLSchema") && $__local.equals("annotation"))) {
107 NGCCHandler h = new annotation(this, super._source, $runtime, 388, null,AnnotationContext.ATTRIBUTE_DECL);
108 spawnChildFromEnterElement(h, $__uri, $__local, $__qname, $attrs);
109 }
110 else {
111 $_ngcc_current_state = 1;
112 $runtime.sendEnterElement(super._cookie, $__uri, $__local, $__qname, $attrs);
113 }
114 }
115 break;
116 case 9:
117 {
118 if((($__uri.equals("http://www.w3.org/2001/XMLSchema") && $__local.equals("annotation")) || ((($ai = $runtime.getAttributeIndex("","type"))>=0 && (($__uri.equals("http://www.w3.org/2001/XMLSchema") && $__local.equals("simpleType")) || ($__uri.equals("http://www.w3.org/2001/XMLSchema") && $__local.equals("annotation")))) || ($__uri.equals("http://www.w3.org/2001/XMLSchema") && $__local.equals("simpleType"))))) {
119 NGCCHandler h = new foreignAttributes(this, super._source, $runtime, 390, fa);
120 spawnChildFromEnterElement(h, $__uri, $__local, $__qname, $attrs);
121 }
122 else {
123 NGCCHandler h = new foreignAttributes(this, super._source, $runtime, 390, fa);
124 spawnChildFromEnterElement(h, $__uri, $__local, $__qname, $attrs);
125 }
126 }
127 break;
128 case 13:
129 {
130 if(($ai = $runtime.getAttributeIndex("","form"))>=0) {
131 $runtime.consumeAttribute($ai);
132 $runtime.sendEnterElement(super._cookie, $__uri, $__local, $__qname, $attrs);
133 }
134 else {
135 $_ngcc_current_state = 12;
136 $runtime.sendEnterElement(super._cookie, $__uri, $__local, $__qname, $attrs);
137 }
138 }
139 break;
140 case 1:
141 {
142 if(($ai = $runtime.getAttributeIndex("","type"))>=0) {
143 $runtime.consumeAttribute($ai);
144 $runtime.sendEnterElement(super._cookie, $__uri, $__local, $__qname, $attrs);
145 }
146 else {
147 if(($__uri.equals("http://www.w3.org/2001/XMLSchema") && $__local.equals("simpleType"))) {
148 NGCCHandler h = new simpleType(this, super._source, $runtime, 379);
149 spawnChildFromEnterElement(h, $__uri, $__local, $__qname, $attrs);
150 }
151 else {
152 $_ngcc_current_state = 0;
153 $runtime.sendEnterElement(super._cookie, $__uri, $__local, $__qname, $attrs);
154 }
155 }
156 }
157 break;
158 default:
159 {
160 unexpectedEnterElement($__qname);
161 }
162 break;
163 }
164 }
166 public void leaveElement(String $__uri, String $__local, String $__qname) throws SAXException {
167 int $ai;
168 $uri = $__uri;
169 $localName = $__local;
170 $qname = $__qname;
171 switch($_ngcc_current_state) {
172 case 0:
173 {
174 revertToParentFromLeaveElement(makeResult(), super._cookie, $__uri, $__local, $__qname);
175 }
176 break;
177 case 12:
178 {
179 if(($ai = $runtime.getAttributeIndex("","name"))>=0) {
180 $runtime.consumeAttribute($ai);
181 $runtime.sendLeaveElement(super._cookie, $__uri, $__local, $__qname);
182 }
183 else {
184 unexpectedLeaveElement($__qname);
185 }
186 }
187 break;
188 case 7:
189 {
190 $_ngcc_current_state = 1;
191 $runtime.sendLeaveElement(super._cookie, $__uri, $__local, $__qname);
192 }
193 break;
194 case 9:
195 {
196 if(($ai = $runtime.getAttributeIndex("","type"))>=0) {
197 NGCCHandler h = new foreignAttributes(this, super._source, $runtime, 390, fa);
198 spawnChildFromLeaveElement(h, $__uri, $__local, $__qname);
199 }
200 else {
201 NGCCHandler h = new foreignAttributes(this, super._source, $runtime, 390, fa);
202 spawnChildFromLeaveElement(h, $__uri, $__local, $__qname);
203 }
204 }
205 break;
206 case 13:
207 {
208 if(($ai = $runtime.getAttributeIndex("","form"))>=0) {
209 $runtime.consumeAttribute($ai);
210 $runtime.sendLeaveElement(super._cookie, $__uri, $__local, $__qname);
211 }
212 else {
213 $_ngcc_current_state = 12;
214 $runtime.sendLeaveElement(super._cookie, $__uri, $__local, $__qname);
215 }
216 }
217 break;
218 case 1:
219 {
220 if(($ai = $runtime.getAttributeIndex("","type"))>=0) {
221 $runtime.consumeAttribute($ai);
222 $runtime.sendLeaveElement(super._cookie, $__uri, $__local, $__qname);
223 }
224 else {
225 $_ngcc_current_state = 0;
226 $runtime.sendLeaveElement(super._cookie, $__uri, $__local, $__qname);
227 }
228 }
229 break;
230 default:
231 {
232 unexpectedLeaveElement($__qname);
233 }
234 break;
235 }
236 }
238 public void enterAttribute(String $__uri, String $__local, String $__qname) throws SAXException {
239 int $ai;
240 $uri = $__uri;
241 $localName = $__local;
242 $qname = $__qname;
243 switch($_ngcc_current_state) {
244 case 0:
245 {
246 revertToParentFromEnterAttribute(makeResult(), super._cookie, $__uri, $__local, $__qname);
247 }
248 break;
249 case 12:
250 {
251 if(($__uri.equals("") && $__local.equals("name"))) {
252 $_ngcc_current_state = 11;
253 }
254 else {
255 unexpectedEnterAttribute($__qname);
256 }
257 }
258 break;
259 case 7:
260 {
261 $_ngcc_current_state = 1;
262 $runtime.sendEnterAttribute(super._cookie, $__uri, $__local, $__qname);
263 }
264 break;
265 case 9:
266 {
267 if(($__uri.equals("") && $__local.equals("type"))) {
268 NGCCHandler h = new foreignAttributes(this, super._source, $runtime, 390, fa);
269 spawnChildFromEnterAttribute(h, $__uri, $__local, $__qname);
270 }
271 else {
272 NGCCHandler h = new foreignAttributes(this, super._source, $runtime, 390, fa);
273 spawnChildFromEnterAttribute(h, $__uri, $__local, $__qname);
274 }
275 }
276 break;
277 case 13:
278 {
279 if(($__uri.equals("") && $__local.equals("form"))) {
280 $_ngcc_current_state = 15;
281 }
282 else {
283 $_ngcc_current_state = 12;
284 $runtime.sendEnterAttribute(super._cookie, $__uri, $__local, $__qname);
285 }
286 }
287 break;
288 case 1:
289 {
290 if(($__uri.equals("") && $__local.equals("type"))) {
291 $_ngcc_current_state = 5;
292 }
293 else {
294 $_ngcc_current_state = 0;
295 $runtime.sendEnterAttribute(super._cookie, $__uri, $__local, $__qname);
296 }
297 }
298 break;
299 default:
300 {
301 unexpectedEnterAttribute($__qname);
302 }
303 break;
304 }
305 }
307 public void leaveAttribute(String $__uri, String $__local, String $__qname) throws SAXException {
308 int $ai;
309 $uri = $__uri;
310 $localName = $__local;
311 $qname = $__qname;
312 switch($_ngcc_current_state) {
313 case 0:
314 {
315 revertToParentFromLeaveAttribute(makeResult(), super._cookie, $__uri, $__local, $__qname);
316 }
317 break;
318 case 14:
319 {
320 if(($__uri.equals("") && $__local.equals("form"))) {
321 $_ngcc_current_state = 12;
322 }
323 else {
324 unexpectedLeaveAttribute($__qname);
325 }
326 }
327 break;
328 case 7:
329 {
330 $_ngcc_current_state = 1;
331 $runtime.sendLeaveAttribute(super._cookie, $__uri, $__local, $__qname);
332 }
333 break;
334 case 10:
335 {
336 if(($__uri.equals("") && $__local.equals("name"))) {
337 $_ngcc_current_state = 9;
338 }
339 else {
340 unexpectedLeaveAttribute($__qname);
341 }
342 }
343 break;
344 case 9:
345 {
346 NGCCHandler h = new foreignAttributes(this, super._source, $runtime, 390, fa);
347 spawnChildFromLeaveAttribute(h, $__uri, $__local, $__qname);
348 }
349 break;
350 case 13:
351 {
352 $_ngcc_current_state = 12;
353 $runtime.sendLeaveAttribute(super._cookie, $__uri, $__local, $__qname);
354 }
355 break;
356 case 1:
357 {
358 $_ngcc_current_state = 0;
359 $runtime.sendLeaveAttribute(super._cookie, $__uri, $__local, $__qname);
360 }
361 break;
362 case 4:
363 {
364 if(($__uri.equals("") && $__local.equals("type"))) {
365 $_ngcc_current_state = 0;
366 }
367 else {
368 unexpectedLeaveAttribute($__qname);
369 }
370 }
371 break;
372 default:
373 {
374 unexpectedLeaveAttribute($__qname);
375 }
376 break;
377 }
378 }
380 public void text(String $value) throws SAXException {
381 int $ai;
382 switch($_ngcc_current_state) {
383 case 0:
384 {
385 revertToParentFromText(makeResult(), super._cookie, $value);
386 }
387 break;
388 case 12:
389 {
390 if(($ai = $runtime.getAttributeIndex("","name"))>=0) {
391 $runtime.consumeAttribute($ai);
392 $runtime.sendText(super._cookie, $value);
393 }
394 }
395 break;
396 case 7:
397 {
398 $_ngcc_current_state = 1;
399 $runtime.sendText(super._cookie, $value);
400 }
401 break;
402 case 9:
403 {
404 if(($ai = $runtime.getAttributeIndex("","type"))>=0) {
405 NGCCHandler h = new foreignAttributes(this, super._source, $runtime, 390, fa);
406 spawnChildFromText(h, $value);
407 }
408 else {
409 NGCCHandler h = new foreignAttributes(this, super._source, $runtime, 390, fa);
410 spawnChildFromText(h, $value);
411 }
412 }
413 break;
414 case 13:
415 {
416 if(($ai = $runtime.getAttributeIndex("","form"))>=0) {
417 $runtime.consumeAttribute($ai);
418 $runtime.sendText(super._cookie, $value);
419 }
420 else {
421 $_ngcc_current_state = 12;
422 $runtime.sendText(super._cookie, $value);
423 }
424 }
425 break;
426 case 15:
427 {
428 if($value.equals("unqualified")) {
429 NGCCHandler h = new qualification(this, super._source, $runtime, 395);
430 spawnChildFromText(h, $value);
431 }
432 else {
433 if($value.equals("qualified")) {
434 NGCCHandler h = new qualification(this, super._source, $runtime, 395);
435 spawnChildFromText(h, $value);
436 }
437 }
438 }
439 break;
440 case 1:
441 {
442 if(($ai = $runtime.getAttributeIndex("","type"))>=0) {
443 $runtime.consumeAttribute($ai);
444 $runtime.sendText(super._cookie, $value);
445 }
446 else {
447 $_ngcc_current_state = 0;
448 $runtime.sendText(super._cookie, $value);
449 }
450 }
451 break;
452 case 11:
453 {
454 name = WhiteSpaceProcessor.collapse($value);
455 $_ngcc_current_state = 10;
456 }
457 break;
458 case 5:
459 {
460 NGCCHandler h = new qname(this, super._source, $runtime, 381);
461 spawnChildFromText(h, $value);
462 }
463 break;
464 }
465 }
467 public void onChildCompleted(Object $__result__, int $__cookie__, boolean $__needAttCheck__)throws SAXException {
468 switch($__cookie__) {
469 case 388:
470 {
471 annotation = ((AnnotationImpl)$__result__);
472 $_ngcc_current_state = 1;
473 }
474 break;
475 case 379:
476 {
477 type = ((SimpleTypeImpl)$__result__);
478 $_ngcc_current_state = 0;
479 }
480 break;
481 case 390:
482 {
483 fa = ((ForeignAttributesImpl)$__result__);
484 $_ngcc_current_state = 7;
485 }
486 break;
487 case 395:
488 {
489 form = ((Boolean)$__result__).booleanValue();
490 action1();
491 $_ngcc_current_state = 14;
492 }
493 break;
494 case 381:
495 {
496 typeName = ((UName)$__result__);
497 action0();
498 $_ngcc_current_state = 4;
499 }
500 break;
501 }
502 }
504 public boolean accepted() {
505 return((($_ngcc_current_state == 0) || (($_ngcc_current_state == 1) || ($_ngcc_current_state == 7))));
506 }
509 private boolean form;
510 private boolean formSpecified = false;
512 private AttributeDeclImpl makeResult() {
514 if(type==null)
515 // type defaults to anySimpleType
516 type = $runtime.parser.schemaSet.anySimpleType;
518 if(!formSpecified) form = $runtime.attributeFormDefault;
519 // global attributes are always qualified
520 if(!isLocal) form = true;
522 String tns;
523 if(form==true) tns = $runtime.currentSchema.getTargetNamespace();
524 else tns = "";
526 // proper handling of anonymous types
527 return new AttributeDeclImpl( $runtime.document, tns, name,
528 annotation, locator, fa, isLocal,
529 $runtime.createXmlString(defaultValue),
530 $runtime.createXmlString(fixedValue),
531 type );
532 }
533 private Ref.SimpleType type;
535 }