You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-dev@xerces.apache.org by "Michael Glavassevich (JIRA)" <xe...@xml.apache.org> on 2010/03/25 18:19:27 UTC
[jira] Updated: (XERCESJ-1432) defect for Assertions during Junit
tests
[ https://issues.apache.org/jira/browse/XERCESJ-1432?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michael Glavassevich updated XERCESJ-1432:
------------------------------------------
Component/s: XML Schema 1.1 Structures
Affects Version/s: 2.9.1
Labels: (was: missing)
> defect for Assertions during Junit tests
> ----------------------------------------
>
> Key: XERCESJ-1432
> URL: https://issues.apache.org/jira/browse/XERCESJ-1432
> Project: Xerces2-J
> Issue Type: Bug
> Components: XML Schema 1.1 Structures
> Affects Versions: 2.9.1
> Environment: Windows, Junit
> Reporter: Kun Xu
> Priority: Minor
> Original Estimate: 0.17h
> Remaining Estimate: 0.17h
>
> When we do JUnit tests for Schema 1.1, assertions on derived simple type definitions as following will cause failures for other test cases.
> For example.
> <?xml version="1.1"?>
> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
>
> <xs:simpleType name="baseType">
> <xs:restriction base="xs:string">
> <xs:maxLength value="25"/>
> <xs:assertion test="ends-with($value, 'xyz')"/>
> </xs:restriction>
> </xs:simpleType>
> <xs:simpleType name="derivedType">
> <xs:restriction base="baseType">
> <xs:assertion test="string-length($value) gt 3 "/>
> </xs:restriction>
> </xs:simpleType>
>
> <xs:element name="root" type="derivedType" />
>
> </xs:schema>
> The reason is that we put fschemaFactory into the schemafactory pool for the first two test cases (one DOM and one SAX), then for other test cases, we just reuse the schemafactory stored in the pool. When we have above schema which contains a base type including a assertion, we use a global vector "private Vector baseAsserts = new Vector();" to hold all the asserts up in the type hierarchy. We should clear up this vector after validating each test case.
> There are two options to fix it .
> @version $Id: XSDAbstractTraverser.java 912155 2010-02-20 17:20:39Z mrglavas $
> 1. clear it up in the reset method:
> void reset(SymbolTable symbolTable, boolean validateAnnotations, Locale locale) {
> baseAsserts.clear(); // clear vector baseAsserts
> fSymbolTable = symbolTable;
> fValidateAnnotations = validateAnnotations;
> fValidationState.setExtraChecking(false);
> fValidationState.setSymbolTable(symbolTable);
> fValidationState.setLocale(locale);
> fValidationState.setTypeValidatorHelper(fSchemaHandler.fTypeValidatorHelper);
> }
> 2. clear it up every time after we use it.
> // retrieve all assert definitions from all base types all the way up in the
> // type hierarchy. sets a global variable, 'baseAsserts' with all the base
> // asserts.
> if (fSchemaHandler.fSchemaVersion == Constants.SCHEMA_VERSION_1_1) {
> getAssertsFromBaseTypes(baseValidator);
> // add all base assertions to the list of assertions to be processed
> if (baseAsserts.size() > 0) {
> if (assertData == null) {
> assertData = new Vector();
> }
> assertData.addAll(baseAsserts);
> baseAsserts.clear(); // clear vector baseAsserts
> }
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: j-dev-unsubscribe@xerces.apache.org
For additional commands, e-mail: j-dev-help@xerces.apache.org