8142463: Xml schema validation failing after Xerces update; maxOccurs ignored

Reviewed-by: lancea
This commit is contained in:
Joe Wang 2015-11-30 16:17:54 -08:00
parent f7176a2886
commit 8a9ae48ba7
4 changed files with 86 additions and 0 deletions

View File

@ -136,6 +136,7 @@ public class XSDFACM
* positions in the second dimension of the transition table.
*/
private int fTransTable[][] = null;
/**
* Array containing occurence information for looping states
* which use counters to check minOccurs/maxOccurs.
@ -211,6 +212,7 @@ public class XSDFACM
// Store away our index and pools in members
fLeafCount = leafCount;
fIsCompactedForUPA = syntaxTree.isCompactedForUPA();
//
// Create some string pool indexes that represent the names of some

View File

@ -0,0 +1,59 @@
/*
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package validation.tck;
import java.io.IOException;
import javax.xml.XMLConstants;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import org.testng.annotations.Test;
import org.xml.sax.SAXException;
/*
* @bug 8142463
* @summary Tests that verify bug fixes for Particles (http://www.w3.org/TR/xmlschema11-1/#cParticles)
* @author Joe Wang (huizhe.wang@oracle.com)
*/
public class ParticleTest {
static final String SCHEMA_LANGUAGE = "http://java.sun.com/xml/jaxp/properties/schemaLanguage";
static final String SCHEMA_SOURCE = "http://java.sun.com/xml/jaxp/properties/schemaSource";
/*
@bug 8142463
This test verifies the fix for a missing flag that indicates the DFA
is compacted for UPA. Without the fix, the 2nd foo:foo element was
rejected.
*/
@Test
public void test() throws SAXException, IOException {
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(new StreamSource(ParticleTest.class.getResourceAsStream("upa01.xsd")));
Validator validator = schema.newValidator();
validator.validate(new StreamSource(ParticleTest.class.getResourceAsStream("upa01.xml")));
}
}

View File

@ -0,0 +1,6 @@
<foo:root xmlns:foo="foo">
<foo:foo>true</foo:foo>
<foo>123</foo >
<foo:foo>true</foo:foo>
<foo>123</foo >
</foo:root>

View File

@ -0,0 +1,19 @@
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
targetNamespace="foo"
xmlns="foo"
>
<xsd:element name="e1" type="xsd:boolean" />
<xsd:element name="foo" substitutionGroup="e1" type="xsd:boolean" />
<xsd:element name="root" type="B" />
<xsd:complexType name="B">
<xsd:choice maxOccurs="1000">
<xsd:element ref="e1" />
<xsd:element name="foo" type="xsd:int" form="unqualified"/>
</xsd:choice>
</xsd:complexType>
</xsd:schema>