xerces-j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Den Orekhoff <orekh...@gmail.com>
Subject Re: [jira] [Commented] (XERCESJ-1538) Multithread validation failed in Xerces2 with XML Schema 1.1 support when assert instruction in XSD
Date Thu, 29 Sep 2011 17:15:00 GMT
I prepare project that demonstrate error in multithread scenario.
For run - launch Runner.java.
In Runner.java you can change delay between running threads.
Validation error appearance depends on this time.
May be it indicate to memory allocation error...

src\props_wrong.xml - it is wrong data for assertion.
Your assertion expresion don't handle it because not check
main_context element position.

src\schemas\webtextSettingsFull2.xsd contains initial assertion expresion,
src\schemas\webtextSettingsFull.xsd contains yours variant.

You can switch schema in src\ValidatingThread.java.

2011/9/28 Mukul Gandhi (Commented) (JIRA) <xerces-j-dev@xml.apache.org>:
>
>    [ https://issues.apache.org/jira/browse/XERCESJ-1538?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13116583#comment-13116583
]
>
> Mukul Gandhi commented on XERCESJ-1538:
> ---------------------------------------
>
> Xerces (the latest code base from SVN) reports your schema to be correct. And it also
reports the XML document that you've posted, to be valid as per the schema you've posted.
>
> It seems your sample XML doesn't have any "datapanel" or "server" elements (so I couldn't
test assertion [particularly the failure scenario] specified in your schema, with the test
case that you've posted). If you may want to post a modified test case with assertion success
and failure scenarios both, then that would be helpful for us to determine if the observation
you're experiencing is a bug.
>
> If you want us to test the multithreaded scenario, then it would help us if you could
post the end to end java application, so Xerces developers can verify the behavior you're
mentioning.
>
> May I also suggest a modified assertion XPath expression as below, that probably solves
your use case (easy for me to understand at least the logic of assertion),
>
> if (datapanel or server) then main_context[../self::action] else true()
>
> (I couldn't test this expression, since your sample XML instance doesn't have a failure
scenario -- I would ideally like to have such a test case, so our verification of the bug
is easier)
>
>> Multithread validation failed in Xerces2 with XML Schema 1.1 support when assert
instruction in XSD
>> ---------------------------------------------------------------------------------------------------
>>
>>                 Key: XERCESJ-1538
>>                 URL: https://issues.apache.org/jira/browse/XERCESJ-1538
>>             Project: Xerces2-J
>>          Issue Type: Bug
>>          Components: JAXP (javax.xml.validation)
>>    Affects Versions: 2.11.0
>>         Environment: Windows 7 x64, Java 6 Update 26 x64
>>            Reporter: Denis Orekhov
>>
>> I'm using Xerces2 Java 2.11.0 (XML Schema 1.1) (Beta) in my app. Schema validation
in my app can occurs simultaneously in separate threads.
>> This is part of my xsd:
>>       <xs:element name="action">
>>               <xs:complexType>
>>                       <xs:all>
>>                               <xs:element name="main_context" minOccurs="0"
/>
>>                               <xs:element name="navigator" minOccurs="0">
>>                                       <xs:complexType>
>>                                               <xs:attribute
name="element" type="xs:string" />
>>                                               <xs:attribute
name="refresh" type="xs:boolean" />
>>                                       </xs:complexType>
>>                               </xs:element>
>>                               <xs:element name="datapanel" minOccurs="0">
>>                                       <xs:complexType>
>>                                               <xs:sequence>
>>                                                      
<xs:element name="element" maxOccurs="unbounded"
>>                                                      
        minOccurs="0">
>>                                                      
        <xs:complexType>
>>                                                      
                <xs:sequence>
>>                                                      
                        <xs:element name="add_context" minOccurs="0" />
>>                                                      
                </xs:sequence>
>>                                                      
                <xs:attribute name="id" type="xs:string" use="required" />
>>                                                      
                <xs:attribute name="refresh_context_only" type="xs:boolean" />
>>                                                      
                <xs:attribute name="skip_refresh_context_only"
>>                                                      
                        type="xs:boolean" />
>>                                                      
                <xs:attribute name="keep_user_settings" type="xs:boolean" />
>>                                                      
        </xs:complexType>
>>                                                      
</xs:element>
>>                                               </xs:sequence>
>>                                               <xs:attribute
name="type" type="xs:string" use="required" />
>>                                               <xs:attribute
name="tab" type="xs:string" />
>>                                       </xs:complexType>
>>                               </xs:element>
>>                               <xs:element name="server" minOccurs="0">
>>                                       <xs:complexType>
>>                                               <xs:sequence>
>>                                                      
<xs:element name="activity" minOccurs="0" maxOccurs="unbounded">
>>                                                      
        <xs:complexType>
>>                                                      
                <xs:sequence>
>>                                                      
                        <xs:element name="add_context" minOccurs="0" />
>>                                                      
                </xs:sequence>
>>                                                      
                <xs:attribute name="type" type="xs:string"
>>                                                      
                        use="required" />
>>                                                      
        </xs:complexType>
>>                                                      
</xs:element>
>>                                               </xs:sequence>
>>                                       </xs:complexType>
>>                               </xs:element>
>>                       </xs:all>
>>                       <xs:assert
>>                               test="(count(datapanel) + count(server)
=0) or (count(*[position()=1 and name()='main_context']) = 1)" />
>>               </xs:complexType>
>>       </xs:element>
>> And sometimes I have SAXException with text "cvc-assertion.3.13.4.1: Assertion evaluation
('(count(datapanel) + count(server) =0) or (count(*[position()=1 and name()='main_context'])
= 1)') for element 'action' with type '#anonymous' did not succeed.".
>> I checked my data and schema text before validation error - both is good.
>
> --
> This message is automatically generated by JIRA.
> If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
> For more information on JIRA, see: http://www.atlassian.com/software/jira
>
>
>

Mime
View raw message