You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by ca...@apache.org on 2006/04/18 13:10:04 UTC

svn commit: r394910 - /xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/

Author: cargilld
Date: Tue Apr 18 04:10:00 2006
New Revision: 394910

URL: http://svn.apache.org/viewcvs?rev=394910&view=rev
Log:
Thread safety fix, don't do lazy evaluation of patterns.

Modified:
    xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/AbstractNumericValidator.cpp
    xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/AbstractStringValidator.cpp
    xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/BooleanDatatypeValidator.cpp
    xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/DatatypeValidator.cpp
    xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/DatatypeValidator.hpp
    xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/DateTimeValidator.cpp
    xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/DecimalDatatypeValidator.cpp
    xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/DoubleDatatypeValidator.cpp
    xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/FloatDatatypeValidator.cpp
    xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/ListDatatypeValidator.cpp
    xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/NOTATIONDatatypeValidator.cpp
    xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/QNameDatatypeValidator.cpp
    xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp

Modified: xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/AbstractNumericValidator.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/AbstractNumericValidator.cpp?rev=394910&r1=394909&r2=394910&view=diff
==============================================================================
--- xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/AbstractNumericValidator.cpp (original)
+++ xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/AbstractNumericValidator.cpp Tue Apr 18 04:10:00 2006
@@ -67,66 +67,57 @@
     if (thisFacetsDefined == 0)
         return;
 
-    try
+    // must be < MaxExclusive
+    if ( (thisFacetsDefined & DatatypeValidator::FACET_MAXEXCLUSIVE) != 0 )
     {
-
-        // must be < MaxExclusive
-        if ( (thisFacetsDefined & DatatypeValidator::FACET_MAXEXCLUSIVE) != 0 )
+        result = compareValues(theData, getMaxExclusive());
+        if ( result != -1)
         {
-            result = compareValues(theData, getMaxExclusive());
-            if ( result != -1)
-            {
-                REPORT_VALUE_ERROR(theData
+            REPORT_VALUE_ERROR(theData
                                  , getMaxExclusive()
                                  , XMLExcepts::VALUE_exceed_maxExcl
                                  , manager)
-            }
-        } 	
-
-        // must be <= MaxInclusive
-        if ( (thisFacetsDefined & DatatypeValidator::FACET_MAXINCLUSIVE) != 0 )
-        {
-            result = compareValues(theData, getMaxInclusive());
-            if (result == 1)
-            {
-                REPORT_VALUE_ERROR(theData
-                                 , getMaxInclusive()
-                                 , XMLExcepts::VALUE_exceed_maxIncl
-                                 , manager)
-            }
         }
+    } 	
 
-        // must be >= MinInclusive
-        if ( (thisFacetsDefined & DatatypeValidator::FACET_MININCLUSIVE) != 0 )
+    // must be <= MaxInclusive
+    if ( (thisFacetsDefined & DatatypeValidator::FACET_MAXINCLUSIVE) != 0 )
+    {
+        result = compareValues(theData, getMaxInclusive());
+        if (result == 1)
         {
-            result = compareValues(theData, getMinInclusive());
-            if (result == -1)
-            {
-                REPORT_VALUE_ERROR(theData
-                                 , getMinInclusive()
-                                 , XMLExcepts::VALUE_exceed_minIncl
-                                 , manager)
-            }
+            REPORT_VALUE_ERROR(theData
+                             , getMaxInclusive()
+                             , XMLExcepts::VALUE_exceed_maxIncl
+                             , manager)
         }
+    }
 
-        // must be > MinExclusive
-        if ( (thisFacetsDefined & DatatypeValidator::FACET_MINEXCLUSIVE) != 0 )
+    // must be >= MinInclusive
+    if ( (thisFacetsDefined & DatatypeValidator::FACET_MININCLUSIVE) != 0 )
+    {
+        result = compareValues(theData, getMinInclusive());
+        if (result == -1)
         {
-            result = compareValues(theData, getMinExclusive());
-            if (result != 1)
-            {
-                REPORT_VALUE_ERROR(theData
-                                 , getMinExclusive()
-                                 , XMLExcepts::VALUE_exceed_minExcl
-                                 , manager)
-            }
+            REPORT_VALUE_ERROR(theData
+                             , getMinInclusive()
+                             , XMLExcepts::VALUE_exceed_minIncl
+                             , manager)
         }
     }
-    catch (XMLException &e)
+
+    // must be > MinExclusive
+    if ( (thisFacetsDefined & DatatypeValidator::FACET_MINEXCLUSIVE) != 0 )
     {
-       ThrowXMLwithMemMgr1(InvalidDatatypeValueException, XMLExcepts::RethrowError, e.getMessage(), manager);
+        result = compareValues(theData, getMinExclusive());
+        if (result != 1)
+        {
+            REPORT_VALUE_ERROR(theData
+                             , getMinExclusive()
+                             , XMLExcepts::VALUE_exceed_minExcl
+                             , manager)
+        }
     }
-
 }
 
 const XMLCh* AbstractNumericValidator::getCanonicalRepresentation(const XMLCh*         const rawData

Modified: xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/AbstractStringValidator.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/AbstractStringValidator.cpp?rev=394910&r1=394909&r2=394910&view=diff
==============================================================================
--- xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/AbstractStringValidator.cpp (original)
+++ xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/AbstractStringValidator.cpp Tue Apr 18 04:10:00 2006
@@ -565,18 +565,6 @@
     // we check pattern first
     if ( (thisFacetsDefined & DatatypeValidator::FACET_PATTERN ) != 0 )
     {
-        // lazy construction
-        if (getRegex() ==0) {
-            try {
-                // REVISIT: cargillmem fMemoryManager or manager?
-                setRegex(new (fMemoryManager) RegularExpression(getPattern(), SchemaSymbols::fgRegEx_XOption, fMemoryManager));                
-            }
-            catch (XMLException &e)
-            {
-                ThrowXMLwithMemMgr1(InvalidDatatypeValueException, XMLExcepts::RethrowError, e.getMessage(), fMemoryManager);
-            }
-        }
-
         if (getRegex()->matches(content, manager) ==false)
         {
             ThrowXMLwithMemMgr2(InvalidDatatypeValueException

Modified: xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/BooleanDatatypeValidator.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/BooleanDatatypeValidator.cpp?rev=394910&r1=394909&r2=394910&view=diff
==============================================================================
--- xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/BooleanDatatypeValidator.cpp (original)
+++ xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/BooleanDatatypeValidator.cpp Tue Apr 18 04:10:00 2006
@@ -95,17 +95,6 @@
     // we check pattern first
     if ( (getFacetsDefined() & DatatypeValidator::FACET_PATTERN ) != 0 )
     {
-        // lazy construction
-        if (getRegex() ==0) {
-            try {
-                setRegex(new (fMemoryManager) RegularExpression(getPattern(), SchemaSymbols::fgRegEx_XOption, fMemoryManager));
-            }
-            catch (XMLException &e)
-            {
-                ThrowXMLwithMemMgr1(InvalidDatatypeValueException, XMLExcepts::RethrowError, e.getMessage(), fMemoryManager);
-            }
-        }
-
         if (getRegex()->matches(content, manager) ==false)
         {
             ThrowXMLwithMemMgr2(InvalidDatatypeValueException

Modified: xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/DatatypeValidator.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/DatatypeValidator.cpp?rev=394910&r1=394909&r2=394910&view=diff
==============================================================================
--- xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/DatatypeValidator.cpp (original)
+++ xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/DatatypeValidator.cpp Tue Apr 18 04:10:00 2006
@@ -285,7 +285,7 @@
          *
          ***/
         XTemplateSerializer::loadObject(&fFacets, 29, true, serEng);
-        serEng.readString(fPattern);
+        serEng.readString(fPattern);       
 
         /***
          *   Recreate through setTypeName()
@@ -323,7 +323,7 @@
         /***
          * don't serialize fRegex
          ***/
-        fRegex = 0;
+        fRegex = new (fMemoryManager) RegularExpression(fPattern, SchemaSymbols::fgRegEx_XOption, fMemoryManager);
 
     }
 

Modified: xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/DatatypeValidator.hpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/DatatypeValidator.hpp?rev=394910&r1=394909&r2=394910&view=diff
==============================================================================
--- xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/DatatypeValidator.hpp (original)
+++ xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/DatatypeValidator.hpp Tue Apr 18 04:10:00 2006
@@ -667,9 +667,12 @@
 
 inline void DatatypeValidator::setPattern(const XMLCh* pattern)
 {
-    if (fPattern)
+    if (fPattern) {
         fMemoryManager->deallocate(fPattern);//delete [] fPattern;
+        delete fRegex;
+    }
     fPattern = XMLString::replicate(pattern, fMemoryManager);
+    fRegex = new (fMemoryManager) RegularExpression(fPattern, SchemaSymbols::fgRegEx_XOption, fMemoryManager);
 }
 
 inline void DatatypeValidator::setRegex(RegularExpression* const regex)

Modified: xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/DateTimeValidator.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/DateTimeValidator.cpp?rev=394910&r1=394909&r2=394910&view=diff
==============================================================================
--- xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/DateTimeValidator.cpp (original)
+++ xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/DateTimeValidator.cpp Tue Apr 18 04:10:00 2006
@@ -104,17 +104,6 @@
     // we check pattern first
     if ( (thisFacetsDefined & DatatypeValidator::FACET_PATTERN ) != 0 )
     {
-        // lazy construction
-        if (getRegex() ==0) {
-            try {           	
-                setRegex(new (fMemoryManager) RegularExpression(getPattern(), SchemaSymbols::fgRegEx_XOption, fMemoryManager));                
-            }
-            catch (XMLException &e)
-            {
-                ThrowXMLwithMemMgr1(InvalidDatatypeValueException, XMLExcepts::RethrowError, e.getMessage(), fMemoryManager);
-            }
-        }
-
         if (getRegex()->matches(content, manager) ==false)
         {
             ThrowXMLwithMemMgr2(InvalidDatatypeValueException

Modified: xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/DecimalDatatypeValidator.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/DecimalDatatypeValidator.cpp?rev=394910&r1=394909&r2=394910&view=diff
==============================================================================
--- xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/DecimalDatatypeValidator.cpp (original)
+++ xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/DecimalDatatypeValidator.cpp Tue Apr 18 04:10:00 2006
@@ -398,18 +398,6 @@
     // we check pattern first
     if ( (thisFacetsDefined & DatatypeValidator::FACET_PATTERN ) != 0 )
     {
-        // lazy construction
-        if (getRegex() ==0) {
-            try {
-                // REVISIT: cargillmem fMemoryManager vs manager
-                setRegex(new (fMemoryManager) RegularExpression(getPattern(), SchemaSymbols::fgRegEx_XOption, fMemoryManager));                
-            }
-            catch (XMLException &e)
-            {
-                ThrowXMLwithMemMgr1(InvalidDatatypeValueException, XMLExcepts::RethrowError, e.getMessage(), manager);
-            }
-        }
-
         if (getRegex()->matches(content, manager) ==false)
         {
             ThrowXMLwithMemMgr2(InvalidDatatypeValueException
@@ -424,90 +412,78 @@
     // all other facet were inherited by the derived type
     if (asBase)
         return;
-    XMLCh *errorMsg = 0;
-    try {
-        XMLBigDecimal  compareDataValue(content, manager);
-        XMLBigDecimal* compareData = &compareDataValue;        
+
+    XMLBigDecimal  compareDataValue(content, manager);
+    XMLBigDecimal* compareData = &compareDataValue;        
         
-        if (getEnumeration())
+    if (getEnumeration())
+    {
+        int i=0;
+        int enumLength = getEnumeration()->size();
+        for ( ; i < enumLength; i++)
         {
-            int i=0;
-            int enumLength = getEnumeration()->size();
-            for ( ; i < enumLength; i++)
-            {
-                if (compareValues(compareData, (XMLBigDecimal*) getEnumeration()->elementAt(i)) ==0 )
-                    break;
-            }
-
-            if (i == enumLength)
-                ThrowXMLwithMemMgr1(InvalidDatatypeValueException, XMLExcepts::VALUE_NotIn_Enumeration, content, manager);
+            if (compareValues(compareData, (XMLBigDecimal*) getEnumeration()->elementAt(i)) ==0 )
+                break;
         }
 
-        boundsCheck(compareData, manager);
+        if (i == enumLength)
+            ThrowXMLwithMemMgr1(InvalidDatatypeValueException, XMLExcepts::VALUE_NotIn_Enumeration, content, manager);
+    }
 
-        if ( (thisFacetsDefined & DatatypeValidator::FACET_FRACTIONDIGITS) != 0 )
-        {
-            if ( compareData->getScale() > fFractionDigits )
-            {                
-                XMLCh value1[BUF_LEN+1];
-                XMLCh value2[BUF_LEN+1];
-                XMLString::binToText(compareData->getScale(), value1, BUF_LEN, 10, manager);
-                XMLString::binToText(fFractionDigits, value2, BUF_LEN, 10, manager);
-                ThrowXMLwithMemMgr3(InvalidDatatypeFacetException
-                                 , XMLExcepts::VALUE_exceed_fractDigit
-                                 , compareData->getRawData()
-                                 , value1
-                                 , value2
-                                 , manager);
-            }
-        }
+    boundsCheck(compareData, manager);
 
-        if ( (thisFacetsDefined & DatatypeValidator::FACET_TOTALDIGITS) != 0 )
-        {
-            if ( compareData->getTotalDigit() > fTotalDigits )
-            {                
-                XMLCh value1[BUF_LEN+1];
-                XMLCh value2[BUF_LEN+1];
-                XMLString::binToText(compareData->getTotalDigit(), value1, BUF_LEN, 10, manager);
-                XMLString::binToText(fTotalDigits, value2, BUF_LEN, 10, manager);
-                ThrowXMLwithMemMgr3(InvalidDatatypeFacetException
-                                 , XMLExcepts::VALUE_exceed_totalDigit
-                                 , compareData->getRawData()
-                                 , value1
-                                 , value2
-                                 , manager);
-            }
-
-            /***
-             E2-44 totalDigits
-
-             ... by restricting it to numbers that are expressible as i � 10^-n
-             where i and n are integers such that |i| < 10^totalDigits and 0 <= n <= totalDigits.
-            ***/
-
-            if ( compareData->getScale() > fTotalDigits )  
-            {                
-                XMLCh value1[BUF_LEN+1];
-                XMLCh value2[BUF_LEN+1];
-                XMLString::binToText(compareData->getScale(), value1, BUF_LEN, 10, manager);
-                XMLString::binToText(fTotalDigits, value2, BUF_LEN, 10, manager);
-                ThrowXMLwithMemMgr3(InvalidDatatypeFacetException
-                                 , XMLExcepts::VALUE_exceed_totalDigit
-                                 , compareData->getRawData()
-                                 , value1
-                                 , value2
-                                 , manager);
-            }        
-        }
-    }
-    catch (XMLException &e)
+    if ( (thisFacetsDefined & DatatypeValidator::FACET_FRACTIONDIGITS) != 0 )
     {
-       errorMsg = XMLString::replicate(e.getMessage(), manager);
+        if ( compareData->getScale() > fFractionDigits )
+        {                
+            XMLCh value1[BUF_LEN+1];
+            XMLCh value2[BUF_LEN+1];
+            XMLString::binToText(compareData->getScale(), value1, BUF_LEN, 10, manager);
+            XMLString::binToText(fFractionDigits, value2, BUF_LEN, 10, manager);
+            ThrowXMLwithMemMgr3(InvalidDatatypeFacetException
+                              , XMLExcepts::VALUE_exceed_fractDigit
+                              , compareData->getRawData()
+                              , value1
+                              , value2
+                              , manager);
+        }
     }
-    if(errorMsg)
+
+    if ( (thisFacetsDefined & DatatypeValidator::FACET_TOTALDIGITS) != 0 )
     {
-       ArrayJanitor<XMLCh> jan(errorMsg, manager);
-       ThrowXMLwithMemMgr1(InvalidDatatypeFacetException, XMLExcepts::RethrowError, errorMsg, manager);
+        if ( compareData->getTotalDigit() > fTotalDigits )
+        {                
+            XMLCh value1[BUF_LEN+1];
+            XMLCh value2[BUF_LEN+1];
+            XMLString::binToText(compareData->getTotalDigit(), value1, BUF_LEN, 10, manager);
+            XMLString::binToText(fTotalDigits, value2, BUF_LEN, 10, manager);
+            ThrowXMLwithMemMgr3(InvalidDatatypeFacetException
+                              , XMLExcepts::VALUE_exceed_totalDigit
+                              , compareData->getRawData()
+                              , value1
+                              , value2
+                              , manager);
+        }
+
+        /***
+         E2-44 totalDigits
+         ... by restricting it to numbers that are expressible as i � 10^-n
+         where i and n are integers such that |i| < 10^totalDigits and 0 <= n <= totalDigits.
+         ***/
+
+        if ( compareData->getScale() > fTotalDigits )  
+        {                
+            XMLCh value1[BUF_LEN+1];
+            XMLCh value2[BUF_LEN+1];
+            XMLString::binToText(compareData->getScale(), value1, BUF_LEN, 10, manager);
+            XMLString::binToText(fTotalDigits, value2, BUF_LEN, 10, manager);
+            ThrowXMLwithMemMgr3(InvalidDatatypeFacetException
+                              , XMLExcepts::VALUE_exceed_totalDigit
+                              , compareData->getRawData()
+                              , value1
+                              , value2
+                              , manager);
+        }        
     }
 }
 

Modified: xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/DoubleDatatypeValidator.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/DoubleDatatypeValidator.cpp?rev=394910&r1=394909&r2=394910&view=diff
==============================================================================
--- xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/DoubleDatatypeValidator.cpp (original)
+++ xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/DoubleDatatypeValidator.cpp Tue Apr 18 04:10:00 2006
@@ -184,17 +184,6 @@
     // we check pattern first
     if ( (getFacetsDefined() & DatatypeValidator::FACET_PATTERN ) != 0 )
     {
-        // lazy construction
-        if (getRegex() ==0) {
-            try {
-                setRegex(new (fMemoryManager) RegularExpression(getPattern(), SchemaSymbols::fgRegEx_XOption, fMemoryManager));
-            }
-            catch (XMLException &e)
-            {
-                ThrowXMLwithMemMgr1(InvalidDatatypeValueException, XMLExcepts::RethrowError, e.getMessage(), fMemoryManager);
-            }
-        }
-
         if (getRegex()->matches(content, manager) ==false)
         {
             ThrowXMLwithMemMgr2(InvalidDatatypeValueException
@@ -210,32 +199,24 @@
     if (asBase)
         return;
 
-    try {
-        XMLDouble theValue(content, manager);
-        XMLDouble *theData = &theValue;
+    XMLDouble theValue(content, manager);
+    XMLDouble *theData = &theValue;
 
-        if (getEnumeration())
+    if (getEnumeration())
+    {
+        int i=0;
+        int enumLength = getEnumeration()->size();
+        for ( ; i < enumLength; i++)
         {
-            int i=0;
-            int enumLength = getEnumeration()->size();
-            for ( ; i < enumLength; i++)
-            {
-                if (compareValues(theData, (XMLDouble*) getEnumeration()->elementAt(i)) ==0 )
-                    break;
-            }
-
-            if (i == enumLength)
-                ThrowXMLwithMemMgr1(InvalidDatatypeValueException, XMLExcepts::VALUE_NotIn_Enumeration, content, manager);
+            if (compareValues(theData, (XMLDouble*) getEnumeration()->elementAt(i)) ==0 )
+                break;
         }
 
-        boundsCheck(theData, manager);
-
-    }
-    catch (XMLException &e)
-    {
-       ThrowXMLwithMemMgr1(InvalidDatatypeFacetException, XMLExcepts::RethrowError, e.getMessage(), manager);
+        if (i == enumLength)
+            ThrowXMLwithMemMgr1(InvalidDatatypeValueException, XMLExcepts::VALUE_NotIn_Enumeration, content, manager);
     }
 
+    boundsCheck(theData, manager);
 }
 
 /***

Modified: xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/FloatDatatypeValidator.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/FloatDatatypeValidator.cpp?rev=394910&r1=394909&r2=394910&view=diff
==============================================================================
--- xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/FloatDatatypeValidator.cpp (original)
+++ xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/FloatDatatypeValidator.cpp Tue Apr 18 04:10:00 2006
@@ -184,17 +184,6 @@
     // we check pattern first
     if ( (getFacetsDefined() & DatatypeValidator::FACET_PATTERN ) != 0 )
     {
-        // lazy construction
-        if (getRegex() ==0) {
-            try {
-                setRegex(new (fMemoryManager) RegularExpression(getPattern(), SchemaSymbols::fgRegEx_XOption, fMemoryManager));
-            }
-            catch (XMLException &e)
-            {
-                ThrowXMLwithMemMgr1(InvalidDatatypeValueException, XMLExcepts::RethrowError, e.getMessage(), fMemoryManager);
-            }
-        }
-
         if (getRegex()->matches(content, manager) ==false)
         {
             ThrowXMLwithMemMgr2(InvalidDatatypeValueException
@@ -210,31 +199,24 @@
     if (asBase)
         return;
 
-    try {
-        XMLFloat theValue(content, manager);
-        XMLFloat *theData = &theValue;
+    XMLFloat theValue(content, manager);
+    XMLFloat *theData = &theValue;
 
-        if (getEnumeration() != 0)
+    if (getEnumeration() != 0)
+    {
+        int i=0;
+        int enumLength = getEnumeration()->size();
+        for ( ; i < enumLength; i++)
         {
-            int i=0;
-            int enumLength = getEnumeration()->size();
-            for ( ; i < enumLength; i++)
-            {
-                if (compareValues(theData, (XMLFloat*) getEnumeration()->elementAt(i))==0)
-                    break;
-            }
-
-            if (i == enumLength)
-                ThrowXMLwithMemMgr1(InvalidDatatypeValueException, XMLExcepts::VALUE_NotIn_Enumeration, content, manager);
+            if (compareValues(theData, (XMLFloat*) getEnumeration()->elementAt(i))==0)
+                break;
         }
 
-        boundsCheck(theData, manager);
-    }
-    catch (XMLException &e)
-    {
-       ThrowXMLwithMemMgr1(InvalidDatatypeFacetException, XMLExcepts::RethrowError, e.getMessage(), manager);
+        if (i == enumLength)
+            ThrowXMLwithMemMgr1(InvalidDatatypeValueException, XMLExcepts::VALUE_NotIn_Enumeration, content, manager);
     }
 
+    boundsCheck(theData, manager);
 }
 
 /***

Modified: xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/ListDatatypeValidator.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/ListDatatypeValidator.cpp?rev=394910&r1=394909&r2=394910&view=diff
==============================================================================
--- xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/ListDatatypeValidator.cpp (original)
+++ xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/ListDatatypeValidator.cpp Tue Apr 18 04:10:00 2006
@@ -150,18 +150,6 @@
     // we check pattern first
     if ( (thisFacetsDefined & DatatypeValidator::FACET_PATTERN ) != 0 )
     {
-        // lazy construction
-        if (getRegex() == 0)
-        {
-            try {
-                setRegex(new (fMemoryManager) RegularExpression(getPattern(), SchemaSymbols::fgRegEx_XOption, fMemoryManager));            	
-            }
-            catch (XMLException &e)
-            {
-                ThrowXMLwithMemMgr1(InvalidDatatypeValueException, XMLExcepts::RethrowError, e.getMessage(), manager);
-            }
-        }
-
         //check every item in the list as a whole
         if (getRegex()->matches(content, manager) == false)
         {

Modified: xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/NOTATIONDatatypeValidator.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/NOTATIONDatatypeValidator.cpp?rev=394910&r1=394909&r2=394910&view=diff
==============================================================================
--- xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/NOTATIONDatatypeValidator.cpp (original)
+++ xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/NOTATIONDatatypeValidator.cpp Tue Apr 18 04:10:00 2006
@@ -96,18 +96,6 @@
     // we check pattern first
     if ( (thisFacetsDefined & DatatypeValidator::FACET_PATTERN ) != 0 )
     {
-        // lazy construction
-        if (getRegex() ==0) {
-            try {
-                // REVISIT: cargillmem fMemoryManager or manager?
-                setRegex(new (fMemoryManager) RegularExpression(getPattern(), SchemaSymbols::fgRegEx_XOption, fMemoryManager));                
-            }
-            catch (XMLException &e)
-            {
-                ThrowXMLwithMemMgr1(InvalidDatatypeValueException, XMLExcepts::RethrowError, e.getMessage(), fMemoryManager);
-            }
-        }
-
         if (getRegex()->matches(content, manager) ==false)
         {
             ThrowXMLwithMemMgr2(InvalidDatatypeValueException

Modified: xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/QNameDatatypeValidator.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/QNameDatatypeValidator.cpp?rev=394910&r1=394909&r2=394910&view=diff
==============================================================================
--- xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/QNameDatatypeValidator.cpp (original)
+++ xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/QNameDatatypeValidator.cpp Tue Apr 18 04:10:00 2006
@@ -96,18 +96,6 @@
     // we check pattern first
     if ( (thisFacetsDefined & DatatypeValidator::FACET_PATTERN ) != 0 )
     {
-        // lazy construction
-        if (getRegex() ==0) {
-            try {
-                // REVISIT: cargillmem fMemoryManager or manager?
-                setRegex(new (fMemoryManager) RegularExpression(getPattern(), SchemaSymbols::fgRegEx_XOption, fMemoryManager));                
-            }
-            catch (XMLException &e)
-            {
-                ThrowXMLwithMemMgr1(InvalidDatatypeValueException, XMLExcepts::RethrowError, e.getMessage(), fMemoryManager);
-            }
-        }
-
         if (getRegex()->matches(content, manager) ==false)
         {
             ThrowXMLwithMemMgr2(InvalidDatatypeValueException

Modified: xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp
URL: http://svn.apache.org/viewcvs/xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp?rev=394910&r1=394909&r2=394910&view=diff
==============================================================================
--- xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp (original)
+++ xerces/c/branches/xerces-2.7/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp Tue Apr 18 04:10:00 2006
@@ -285,18 +285,6 @@
     // 1) and 2). we check pattern first
     if ( (getFacetsDefined() & DatatypeValidator::FACET_PATTERN ) != 0 )
     {
-        // lazy construction
-        if (getRegex() == 0)
-        {
-            try {
-                setRegex(new (fMemoryManager) RegularExpression(getPattern(), SchemaSymbols::fgRegEx_XOption, fMemoryManager));            	
-            }
-            catch (XMLException &e)
-            {
-                ThrowXMLwithMemMgr1(InvalidDatatypeValueException, XMLExcepts::RethrowError, e.getMessage(), manager);
-            }
-        }
-
         if (getRegex()->matches(content, manager) == false)
         {
             ThrowXMLwithMemMgr2(InvalidDatatypeValueException



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org