Author: amassari
Date: Thu Jul 17 04:35:27 2008
New Revision: 677559
URL: http://svn.apache.org/viewvc?rev=677559&view=rev
Log:
When comparing two unions, use the validator that correctly parses both
instances
Modified:
xerces/c/trunk/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp
Modified:
xerces/c/trunk/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp
URL:
http://svn.apache.org/viewvc/xerces/c/trunk/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp?rev=677559&r1=677558&r2=677559&view=diff
==============================================================================
--- xerces/c/trunk/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp
(original)
+++ xerces/c/trunk/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp
Thu Jul 17 04:35:27 2008
@@ -343,8 +343,19 @@
for ( XMLSize_t memberIndex = 0; memberIndex < memberTypeNumber;
++memberIndex)
{
- if (memberDTV->elementAt(memberIndex)->compare(lValue, rValue,
manager) ==0)
- return 0;
+ // 'compare' can throw exceptions when the datatype is not valid, or
just
+ // return -1; so attempt to validate both values to get the right
validator
+ try
+ {
+ memberDTV->elementAt(memberIndex)->validate(lValue, 0, manager);
+ memberDTV->elementAt(memberIndex)->validate(rValue, 0, manager);
+ if (memberDTV->elementAt(memberIndex)->compare(lValue, rValue,
manager) ==0)
+ return 0;
+ }
+ catch (XMLException&)
+ {
+ //absorbed
+ }
}
//REVISIT: what does it mean for UNION1 to be <less than> or <greater
than> UNION2 ?
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]