peiyongz    2004/09/09 13:08:31

  Modified:    c/src/xercesc/framework/psvi XSValue.hpp XSValue.cpp
  Log:
  Using new error code
  
  Revision  Changes    Path
  1.10      +9 -4      xml-xerces/c/src/xercesc/framework/psvi/XSValue.hpp
  
  Index: XSValue.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/framework/psvi/XSValue.hpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- XSValue.hpp       8 Sep 2004 19:56:05 -0000       1.9
  +++ XSValue.hpp       9 Sep 2004 20:08:31 -0000       1.10
  @@ -16,6 +16,9 @@
   
   /*
    * $Log$
  + * Revision 1.10  2004/09/09 20:08:31  peiyongz
  + * Using new error code
  + *
    * Revision 1.9  2004/09/08 19:56:05  peiyongz
    * Remove parameter toValidate from validation interface
    *
  @@ -112,13 +115,15 @@
   
       enum Status {
               st_Init,
  -            st_Invalid,
  -            st_InvalidChar,     //for numeric
  -            st_InvalidRange,    //for numeric
  +            st_InvalidRange,    
               st_NoCanRep,
               st_NoActVal,
               st_NotSupported,
               st_CantCreateRegEx,
  +            st_FOCA0002,        //invalid lexical value 
  +            st_FOCA0001,        //input value too large for decimal 
  +            st_FOCA0003,        //input value too large for integer 
  +            st_FODT0003,        //invalid timezone value 
               st_UnknownType
       };
   
  
  
  
  1.10      +74 -27    xml-xerces/c/src/xercesc/framework/psvi/XSValue.cpp
  
  Index: XSValue.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/framework/psvi/XSValue.cpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- XSValue.cpp       8 Sep 2004 19:56:05 -0000       1.9
  +++ XSValue.cpp       9 Sep 2004 20:08:31 -0000       1.10
  @@ -16,6 +16,9 @@
   
   /*
    * $Log$
  + * Revision 1.10  2004/09/09 20:08:31  peiyongz
  + * Using new error code
  + *
    * Revision 1.9  2004/09/08 19:56:05  peiyongz
    * Remove parameter toValidate from validation interface
    *
  @@ -198,6 +201,17 @@
       return sXSValueRegEx;
   }
   
  +inline
  +static bool checkTimeZoneError(XSValue::DataType       const &datatype
  +                             , SchemaDateTimeException const &e       )
  +{
  +    return (((datatype == XSValue::dt_dateTime) || (datatype == XSValue::dt_time)) 
&&
  +            ((e.getCode() == XMLExcepts::DateTime_tz_noUTCsign)   ||
  +             (e.getCode() == XMLExcepts::DateTime_tz_stuffAfterZ) ||
  +             (e.getCode() == XMLExcepts::DateTime_tz_invalid)     ||
  +             (e.getCode() == XMLExcepts::DateTime_tz_hh_invalid)));
  +}
  +
   // ---------------------------------------------------------------------------
   //  Local Data
   // ---------------------------------------------------------------------------
  @@ -619,7 +633,7 @@
       {
           //getActValue()/getCanonical() need to know the failure details
           //if validation is required
  -        status = st_InvalidChar; 
  +        status = st_FOCA0002; 
           return false; 
       }
   
  @@ -673,11 +687,17 @@
           return true; //parsing succeed
       }
   
  +    catch (SchemaDateTimeException &e)
  +    {       
  +        status = checkTimeZoneError(datatype, e)? XSValue::st_FODT0003 : 
st_FOCA0002;
  +        return false;
  +    }
  +
       catch (...)
       {
           //getActValue()/getCanonical() need to know the failure details
           //if validation is required
  -        status = st_Invalid;
  +        status = st_FOCA0002;
           return false; 
       }      
   
  @@ -705,7 +725,7 @@
   
                   if (i == XMLUni::fgBooleanValueSpaceArraySize)
                   {
  -                    status = st_Invalid;
  +                    status = st_FOCA0002;
                       return false;
                   }
               }
  @@ -714,7 +734,7 @@
               {
                   if (HexBin::getDataLength(content) == -1) 
                   {
  -                    status = st_Invalid;
  +                    status = st_FOCA0002;
                       return false;
                   }
               }
  @@ -723,7 +743,7 @@
               {
                   if (Base64::getDataLength(content, manager) == -1) 
                   {
  -                    status = st_Invalid;
  +                    status = st_FOCA0002;
                       return false;
                   }
               }
  @@ -953,7 +973,7 @@
   
       catch (...)
       {
  -        status = st_Invalid;
  +        status = st_FOCA0002;
           return false; 
       }
   
  @@ -983,7 +1003,7 @@
               retVal = XMLBigDecimal::getCanonicalRepresentation(content, manager);
   
               if (!retVal)
  -                status = st_InvalidChar;
  +                status = st_FOCA0002;
   
               return retVal;
   
  @@ -993,7 +1013,7 @@
               retVal = XMLAbstractDoubleFloat::getCanonicalRepresentation(content, 
manager);
   
               if (!retVal)
  -                status = st_InvalidChar;
  +                status = st_FOCA0002;
   
               return retVal;
           }  
  @@ -1002,7 +1022,7 @@
               retVal = XMLBigInteger::getCanonicalRepresentation(content, manager, 
datatype == XSValue::dt_nonPositiveInteger);
   
               if (!retVal)
  -                status = st_InvalidChar;
  +                status = st_FOCA0002;
   
               return retVal;
           }
  @@ -1010,7 +1030,7 @@
   
       catch (...)
       {
  -        status = st_InvalidChar;
  +        status = st_FOCA0002;
           return 0;
       }
   
  @@ -1050,7 +1070,7 @@
           case XSValue::dt_gMonth:
               {
                   if (toValidate && !validateDateTimes(content, datatype, status, 
version, manager))
  -                    status = st_Invalid;
  +                    status = st_FOCA0002;
                   else
                       status = st_NoCanRep;
   
  @@ -1063,9 +1083,15 @@
           }
       }
   
  +    catch (SchemaDateTimeException &e)
  +    {
  +        status = checkTimeZoneError(datatype, e)? XSValue::st_FODT0003 : 
st_FOCA0002;
  +        return 0;
  +    }
  +
       catch (...)
       {
  -        status = st_Invalid;
  +        status = st_FOCA0002;
           return 0;
       }
   
  @@ -1097,7 +1123,7 @@
                   }
                   else
                   {
  -                    status = st_Invalid;
  +                    status = st_FOCA0002;
                       return 0;
                   }
               }
  @@ -1107,7 +1133,7 @@
                   //HexBin::getCanonicalRepresentation does validation automatically
                   XMLCh* canRep = HexBin::getCanonicalRepresentation(content, 
manager);
                   if (!canRep)
  -                    status = st_Invalid;
  +                    status = st_FOCA0002;
   
                   return canRep;
               }
  @@ -1117,7 +1143,7 @@
                   //Base64::getCanonicalRepresentation does validation automatically
                   XMLCh* canRep = Base64::getCanonicalRepresentation(content, 
manager);
                   if (!canRep)
  -                    status = st_Invalid;
  +                    status = st_FOCA0002;
   
                   return canRep;
               }
  @@ -1140,7 +1166,7 @@
           case XSValue::dt_IDREFS:
               {
                   if (toValidate && !validateStrings(content, datatype, status, 
version, manager))
  -                    status = st_Invalid;
  +                    status = st_FOCA0002;
                   else
                       status = st_NoCanRep;
   
  @@ -1155,7 +1181,7 @@
   
       catch (...)
       {
  -        status = st_Invalid;
  +        status = st_FOCA0002;
           return 0;
       }
   }
  @@ -1193,7 +1219,12 @@
                                   , manager
                                   )
                   )
  +            {
  +                if (status != st_FOCA0002)
  +                    status = st_FOCA0001;
  +
                   return 0;
  +            }
   
               // get the integer
               t_value  actValInt;
  @@ -1209,13 +1240,18 @@
                                   , manager
                                   )
                   )
  +            {
  +                if (status != st_FOCA0002)
  +                    status = st_FOCA0001;
  +
                   return 0;
  +            }
   
               //Prepare the double value
               XMLDouble  data2(content, manager);
               if (data2.isDataConverted())
               {
  -                status = st_InvalidRange;
  +                status = data2.isDataOverflowed()? st_FOCA0001 : st_InvalidRange;
                   return 0;
               }
   
  @@ -1282,7 +1318,12 @@
                                   , manager
                                   )
                   )
  +            {
  +                if (status != st_FOCA0002)
  +                    status = st_FOCA0003;
  +
                   return 0;
  +            }
   
               switch (datatype)
               { 
  @@ -1501,7 +1542,7 @@
   
       catch (...)
       {
  -        status = st_InvalidChar;
  +        status = st_FOCA0002;
           return 0; 
       }
   }
  @@ -1567,9 +1608,15 @@
           return retVal;
       }
   
  +    catch (SchemaDateTimeException const &e)
  +    {
  +        status = checkTimeZoneError(datatype, e)? XSValue::st_FODT0003 : 
st_FOCA0002;
  +        return 0;
  +    }
  +
       catch (...)
       {
  -        status = st_Invalid;
  +        status = st_FOCA0002;
           return 0; 
       }
   
  @@ -1606,7 +1653,7 @@
                   }
                   else
                   {
  -                    status = st_Invalid;
  +                    status = st_FOCA0002;
                       return 0;
                   }
               }
  @@ -1617,7 +1664,7 @@
   
                   if (!decodedData)
                   {
  -                    status = st_Invalid;
  +                    status = st_FOCA0002;
                       return 0;
                   }
   
  @@ -1634,7 +1681,7 @@
   
                   if (!decodedData)
                   {
  -                    status = st_Invalid;
  +                    status = st_FOCA0002;
                       return 0;
                   }
   
  @@ -1662,7 +1709,7 @@
           case XSValue::dt_IDREFS:
               {
                   if (toValidate && !validateStrings(content, datatype, status, 
version, manager))
  -                    status = st_Invalid;
  +                    status = st_FOCA0002;
                   else
                       status = st_NoActVal;
   
  @@ -1677,7 +1724,7 @@
   
       catch (...)
       {
  -        status = st_Invalid;
  +        status = st_FOCA0002;
           return 0; 
       }
   }
  @@ -1718,7 +1765,7 @@
       // check if all chars are valid char
       if ( (endptr - nptr) != strLen)
       {
  -        status = st_InvalidChar;
  +        status = st_FOCA0002;
           return false;
       }
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to