[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xerces-cvs
Subject:    cvs commit: xml-xerces/c/src/validators/datatype Base64BinaryDatatypeValidator.cpp BooleanDatatypeVa
From:       tng () apache ! org
Date:       2001-05-29 19:49:41
[Download RAW message or body]

tng         01/05/29 12:49:41

  Modified:    c/src/validators/datatype Base64BinaryDatatypeValidator.cpp
                        BooleanDatatypeValidator.cpp
                        DecimalDatatypeValidator.cpp
                        HexBinaryDatatypeValidator.cpp
                        StringDatatypeValidator.cpp
  Log:
  Schema: Constraint Checking Fix in datatypeValidators.  By Pei Yong Zhang.
  
  Revision  Changes    Path
  1.6       +47 -39    \
xml-xerces/c/src/validators/datatype/Base64BinaryDatatypeValidator.cpp  
  Index: Base64BinaryDatatypeValidator.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/validators/datatype/Base64BinaryDatatypeValidator.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Base64BinaryDatatypeValidator.cpp	2001/05/28 21:11:17	1.5
  +++ Base64BinaryDatatypeValidator.cpp	2001/05/29 19:49:31	1.6
  @@ -56,6 +56,9 @@
   
   /*
    * $Log: Base64BinaryDatatypeValidator.cpp,v $
  + * Revision 1.6  2001/05/29 19:49:31  tng
  + * Schema: Constraint Checking Fix in datatypeValidators.  By Pei Yong Zhang.
  + *
    * Revision 1.5  2001/05/28 21:11:17  tng
    * Schema: Various DatatypeValidator fix.  By Pei Yong Zhang
    *
  @@ -393,52 +396,57 @@
                   }
               }
   
  -            /***
  -                Inherit facets from base.facets
  +        } //if baseValidator
  +
  +    }// End of Facet setting
  +
  +    if (baseValidator ) 
  +    {
  +        Base64BinaryDatatypeValidator *pBaseValidator = \
(Base64BinaryDatatypeValidator*) baseValidator;  +
  +        /***
  +            Inherit facets from base.facets
                   
  -                The reason of this inheriting (or copying values) is to ease
  -                schema constraint checking, so that we need NOT trace back to our 
  -                very first base validator in the hierachy. Instead, we are pretty 
  -                sure checking against immediate base validator is enough.
  -            
  -            ***/
  +            The reason of this inheriting (or copying values) is to ease
  +            schema constraint checking, so that we need NOT trace back to our 
  +            very first base validator in the hierachy. Instead, we are pretty 
  +            sure checking against immediate base validator is enough.            
  +        ***/
   
  -            // inherit length
  -            if (((pBaseValidator->getFacetsDefined() & \
                DatatypeValidator::FACET_LENGTH) != 0) &&
  -                ((getFacetsDefined() & DatatypeValidator::FACET_LENGTH) == 0))
  -            {
  -                setLength(pBaseValidator->getLength());
  -                setFacetsDefined(DatatypeValidator::FACET_LENGTH);
  -            }
  +        // inherit length
  +        if (((pBaseValidator->getFacetsDefined() & \
DatatypeValidator::FACET_LENGTH) != 0) &&  +            ((getFacetsDefined() & \
DatatypeValidator::FACET_LENGTH) == 0))  +        {
  +            setLength(pBaseValidator->getLength());
  +            setFacetsDefined(DatatypeValidator::FACET_LENGTH);
  +        }
               
  -            // inherit minLength
  -            if (((pBaseValidator->getFacetsDefined() & \
                DatatypeValidator::FACET_MINLENGTH) !=0) &&
  -                ((getFacetsDefined() & DatatypeValidator::FACET_MINLENGTH) == 0))
  -            {
  -                setMinLength(pBaseValidator->getMinLength());
  -                setFacetsDefined(DatatypeValidator::FACET_MINLENGTH);
  -            }
  +        // inherit minLength
  +        if (((pBaseValidator->getFacetsDefined() & \
DatatypeValidator::FACET_MINLENGTH) !=0) &&  +            ((getFacetsDefined() & \
DatatypeValidator::FACET_MINLENGTH) == 0))  +        {
  +            setMinLength(pBaseValidator->getMinLength());
  +            setFacetsDefined(DatatypeValidator::FACET_MINLENGTH);
  +        }
               
  -            // inherit maxLength
  -            if (((pBaseValidator->getFacetsDefined() & \
                DatatypeValidator::FACET_MAXLENGTH) !=0) &&
  -                ((getFacetsDefined() & DatatypeValidator::FACET_MAXLENGTH) == 0))
  -            {
  -                setMaxLength(pBaseValidator->getMaxLength());
  -                setFacetsDefined(DatatypeValidator::FACET_MAXLENGTH);
  -            }
  - 
  -            // inherit enumeration
  -            if (((pBaseValidator->getFacetsDefined() & \
                DatatypeValidator::FACET_ENUMERATION) !=0) &&
  -                ((getFacetsDefined() & DatatypeValidator::FACET_ENUMERATION) == \
                0))
  -            {
  -                setEnumeration(pBaseValidator->getEnumeration(), true);
  -            }
  +        // inherit maxLength
  +        if (((pBaseValidator->getFacetsDefined() & \
DatatypeValidator::FACET_MAXLENGTH) !=0) &&  +            ((getFacetsDefined() & \
DatatypeValidator::FACET_MAXLENGTH) == 0))  +        {
  +            setMaxLength(pBaseValidator->getMaxLength());
  +            setFacetsDefined(DatatypeValidator::FACET_MAXLENGTH);
  +        }
   
  -            // we don't inherit pattern
  +        // inherit enumeration
  +        if (((pBaseValidator->getFacetsDefined() & \
DatatypeValidator::FACET_ENUMERATION) !=0) &&  +            ((getFacetsDefined() & \
DatatypeValidator::FACET_ENUMERATION) == 0))  +        {
  +            setEnumeration(pBaseValidator->getEnumeration(), true);
  +        }
   
  -        } //if baseValidator
  +        // we don't inherit pattern
   
  -    }// End of Facet setting
  +    } // end of inheritance
   
   }
   
  
  
  
  1.5       +9 -0      \
xml-xerces/c/src/validators/datatype/BooleanDatatypeValidator.cpp  
  Index: BooleanDatatypeValidator.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/validators/datatype/BooleanDatatypeValidator.cpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- BooleanDatatypeValidator.cpp	2001/05/28 21:11:17	1.4
  +++ BooleanDatatypeValidator.cpp	2001/05/29 19:49:33	1.5
  @@ -56,6 +56,9 @@
   
   /*
    * $Log: BooleanDatatypeValidator.cpp,v $
  + * Revision 1.5  2001/05/29 19:49:33  tng
  + * Schema: Constraint Checking Fix in datatypeValidators.  By Pei Yong Zhang.
  + *
    * Revision 1.4  2001/05/28 21:11:17  tng
    * Schema: Various DatatypeValidator fix.  By Pei Yong Zhang
    *
  @@ -97,9 +100,15 @@
                           , const int                           finalSet)
   :DatatypeValidator(baseValidator, facets, finalSet, DatatypeValidator::Boolean)
   {
  +
       // Set Facets if any defined
       if ( facets )
       {
  +
  +        // Boolean shall NOT have enumeration
  +        if (enums)
  +            ThrowXML(InvalidDatatypeFacetException, \
XMLExcepts::FACET_Invalid_Tag);  +    
           XMLCh* key;
           XMLCh* value;
           RefHashTableOfEnumerator<KVStringPair> e(facets);
  
  
  
  1.8       +73 -65    \
xml-xerces/c/src/validators/datatype/DecimalDatatypeValidator.cpp  
  Index: DecimalDatatypeValidator.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/validators/datatype/DecimalDatatypeValidator.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- DecimalDatatypeValidator.cpp	2001/05/28 21:11:18	1.7
  +++ DecimalDatatypeValidator.cpp	2001/05/29 19:49:34	1.8
  @@ -56,6 +56,9 @@
   
   /*
    * $Log: DecimalDatatypeValidator.cpp,v $
  + * Revision 1.8  2001/05/29 19:49:34  tng
  + * Schema: Constraint Checking Fix in datatypeValidators.  By Pei Yong Zhang.
  + *
    * Revision 1.7  2001/05/28 21:11:18  tng
    * Schema: Various DatatypeValidator fix.  By Pei Yong Zhang
    *
  @@ -792,71 +795,6 @@
   
                   }
   
  -                /***
  -                   Schema constraint: Part III -- inherit from base
  -                ***/
  -
  -                    // inherit enumeration
  -                    if ((( numBase->getFacetsDefined() & \
                DatatypeValidator::FACET_ENUMERATION) !=0) &&
  -                        (( getFacetsDefined() & \
                DatatypeValidator::FACET_ENUMERATION) == 0))
  -                    {
  -                        fEnumeration = numBase->getEnumeration();
  -                        fEnumerationInherited = true;
  -                        setFacetsDefined(DatatypeValidator::FACET_ENUMERATION);
  -                    }
  -
  -                    // inherit maxExclusive
  -                    if ( (( numBase->getFacetsDefined() & \
                DatatypeValidator::FACET_MAXEXCLUSIVE) != 0) &&
  -                         (( getFacetsDefined() & \
                DatatypeValidator::FACET_MAXEXCLUSIVE) == 0) &&
  -                         (( getFacetsDefined() & \
                DatatypeValidator::FACET_MAXINCLUSIVE) == 0) )
  -                    {
  -                        setMaxExclusive(new \
                XMLBigDecimal(*(numBase->getMaxExclusive())));
  -                        setFacetsDefined(DatatypeValidator::FACET_MAXEXCLUSIVE);
  -                    }
  -
  -                    // inherit maxInclusive
  -                    if ( (( numBase->getFacetsDefined() & \
                DatatypeValidator::FACET_MAXINCLUSIVE) != 0) &&
  -                         (( getFacetsDefined() & \
                DatatypeValidator::FACET_MAXEXCLUSIVE) == 0) &&
  -                         (( getFacetsDefined() & \
                DatatypeValidator::FACET_MAXINCLUSIVE) == 0) )
  -                    {
  -                        setMaxInclusive(new \
                XMLBigDecimal(*(numBase->getMaxInclusive())));
  -                        setFacetsDefined(DatatypeValidator::FACET_MAXINCLUSIVE);
  -                    }
  -
  -                    // inherit minExclusive
  -                    if ( (( numBase->getFacetsDefined() & \
                DatatypeValidator::FACET_MINEXCLUSIVE) != 0) &&
  -                         (( getFacetsDefined() & \
                DatatypeValidator::FACET_MINEXCLUSIVE) == 0) &&
  -                         (( getFacetsDefined() & \
                DatatypeValidator::FACET_MININCLUSIVE) == 0) )
  -                    {
  -                        setMinExclusive(new \
                XMLBigDecimal(*(numBase->getMinExclusive())));
  -                        setFacetsDefined(DatatypeValidator::FACET_MINEXCLUSIVE);
  -                    }
  -
  -                    // inherit minExclusive
  -                    if ( (( numBase->getFacetsDefined() & \
                DatatypeValidator::FACET_MININCLUSIVE) != 0) &&
  -                         (( getFacetsDefined() & \
                DatatypeValidator::FACET_MINEXCLUSIVE) == 0) &&
  -                         (( getFacetsDefined() & \
                DatatypeValidator::FACET_MININCLUSIVE) == 0) )
  -                    {
  -                        setMinInclusive(new \
                XMLBigDecimal(*(numBase->getMinInclusive())));
  -                        setFacetsDefined(DatatypeValidator::FACET_MININCLUSIVE);
  -                    }
  -
  -                    // inherit totalDigits
  -                    if ( (( numBase->getFacetsDefined() & \
                DatatypeValidator::FACET_PRECISSION) != 0) &&
  -                         (( getFacetsDefined() & \
                DatatypeValidator::FACET_PRECISSION) == 0) )
  -                    {
  -                        setTotalDigits(numBase->fTotalDigits);
  -                        setFacetsDefined(DatatypeValidator::FACET_PRECISSION);
  -                    }
  -
  -                    // inherit fractionDigits
  -                    if ( (( numBase->getFacetsDefined() & \
                DatatypeValidator::FACET_SCALE) != 0) &&
  -                         (( getFacetsDefined() & DatatypeValidator::FACET_SCALE) \
                == 0) )
  -                    {
  -                        setFractionDigits(numBase->fFractionDigits);
  -                        setFacetsDefined(DatatypeValidator::FACET_SCALE);
  -                    }
  -
               } //if baseValidator
           }
           catch (XMLException &e)
  @@ -865,6 +803,76 @@
           }
   
       }// End of Facet setting
  +
  +
  +    /***
  +         Schema constraint: Part III -- inherit from base
  +     ***/
  +    if ( baseValidator )    
  +    {     
  +        DecimalDatatypeValidator* numBase = \
(DecimalDatatypeValidator*)baseValidator;           +        // inherit enumeration   \
  +        if ((( numBase->getFacetsDefined() & DatatypeValidator::FACET_ENUMERATION) \
!=0) &&            +            (( getFacetsDefined() & \
DatatypeValidator::FACET_ENUMERATION) == 0))                +        {          
  +            fEnumeration = numBase->getEnumeration();              
  +            fEnumerationInherited = true;              
  +            setFacetsDefined(DatatypeValidator::FACET_ENUMERATION);              
  +        }
  +
  +        // inherit maxExclusive         
  +        if ((( numBase->getFacetsDefined() & \
DatatypeValidator::FACET_MAXEXCLUSIVE) != 0) &&            +            (( \
getFacetsDefined() & DatatypeValidator::FACET_MAXEXCLUSIVE) == 0) &&                + \
(( getFacetsDefined() & DatatypeValidator::FACET_MAXINCLUSIVE) == 0) )                \
+        {            +            setMaxExclusive(new \
XMLBigDecimal(*(numBase->getMaxExclusive())));                +            \
setFacetsDefined(DatatypeValidator::FACET_MAXEXCLUSIVE);                +        }
  +         
  +        // inherit maxInclusive          
  +        if ((( numBase->getFacetsDefined() & \
DatatypeValidator::FACET_MAXINCLUSIVE) != 0) &&           +            (( \
getFacetsDefined() & DatatypeValidator::FACET_MAXEXCLUSIVE) == 0) &&                + \
(( getFacetsDefined() & DatatypeValidator::FACET_MAXINCLUSIVE) == 0) )                \
+        {            +            setMaxInclusive(new \
XMLBigDecimal(*(numBase->getMaxInclusive())));  +            \
setFacetsDefined(DatatypeValidator::FACET_MAXINCLUSIVE);  +        }
  +
  +        // inherit minExclusive          
  +        if ((( numBase->getFacetsDefined() & \
DatatypeValidator::FACET_MINEXCLUSIVE) != 0) &&            +            (( \
getFacetsDefined() & DatatypeValidator::FACET_MINEXCLUSIVE) == 0) &&                + \
(( getFacetsDefined() & DatatypeValidator::FACET_MININCLUSIVE) == 0) )                \
+        {            +            setMinExclusive(new \
XMLBigDecimal(*(numBase->getMinExclusive())));                +            \
setFacetsDefined(DatatypeValidator::FACET_MINEXCLUSIVE);                +        }
  +          
  +        // inherit minExclusive          
  +        if ((( numBase->getFacetsDefined() & \
DatatypeValidator::FACET_MININCLUSIVE) != 0) &&            +            (( \
getFacetsDefined() & DatatypeValidator::FACET_MINEXCLUSIVE) == 0) &&  +            (( \
getFacetsDefined() & DatatypeValidator::FACET_MININCLUSIVE) == 0) )                +  \
{            +            setMinInclusive(new \
XMLBigDecimal(*(numBase->getMinInclusive())));                +            \
setFacetsDefined(DatatypeValidator::FACET_MININCLUSIVE);                +        }
  +
  +        // inherit totalDigits         
  +        if ((( numBase->getFacetsDefined() & DatatypeValidator::FACET_PRECISSION) \
!= 0) &&            +            (( getFacetsDefined() & \
DatatypeValidator::FACET_PRECISSION) == 0) )                +        {          
  +            setTotalDigits(numBase->fTotalDigits);              
  +            setFacetsDefined(DatatypeValidator::FACET_PRECISSION);              
  +        }
  +          
  +        // inherit fractionDigits          
  +        if ((( numBase->getFacetsDefined() & DatatypeValidator::FACET_SCALE) != 0) \
&&            +            (( getFacetsDefined() & DatatypeValidator::FACET_SCALE) == \
0) )                +        {          
  +            setFractionDigits(numBase->fFractionDigits);              
  +            setFacetsDefined(DatatypeValidator::FACET_SCALE);              
  +        }
  +          
  +    }
   
   }
   
  
  
  
  1.6       +49 -42    \
xml-xerces/c/src/validators/datatype/HexBinaryDatatypeValidator.cpp  
  Index: HexBinaryDatatypeValidator.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/validators/datatype/HexBinaryDatatypeValidator.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- HexBinaryDatatypeValidator.cpp	2001/05/28 21:11:18	1.5
  +++ HexBinaryDatatypeValidator.cpp	2001/05/29 19:49:35	1.6
  @@ -56,6 +56,9 @@
   
   /*
    * $Log: HexBinaryDatatypeValidator.cpp,v $
  + * Revision 1.6  2001/05/29 19:49:35  tng
  + * Schema: Constraint Checking Fix in datatypeValidators.  By Pei Yong Zhang.
  + *
    * Revision 1.5  2001/05/28 21:11:18  tng
    * Schema: Various DatatypeValidator fix.  By Pei Yong Zhang
    *
  @@ -391,53 +394,57 @@
                   }
               }
   
  -            /***
  -                Inherit facets from base.facets
  -                
  -                The reason of this inheriting (or copying values) is to ease
  -                schema constraint checking, so that we need NOT trace back to our 
  -                very first base validator in the hierachy. Instead, we are pretty 
  -                sure checking against immediate base validator is enough.
  -            
  -            ***/
   
  -            // inherit length
  -            if (((pBaseValidator->getFacetsDefined() & \
                DatatypeValidator::FACET_LENGTH) != 0) &&
  -                ((getFacetsDefined() & DatatypeValidator::FACET_LENGTH) == 0))
  -            {
  -                setLength(pBaseValidator->getLength());
  -                setFacetsDefined(DatatypeValidator::FACET_LENGTH);
  -            }
  -            
  -            // inherit minLength
  -            if (((pBaseValidator->getFacetsDefined() & \
                DatatypeValidator::FACET_MINLENGTH) !=0) &&
  -                ((getFacetsDefined() & DatatypeValidator::FACET_MINLENGTH) == 0))
  -            {
  -                setMinLength(pBaseValidator->getMinLength());
  -                setFacetsDefined(DatatypeValidator::FACET_MINLENGTH);
  -            }
  -            
  -            // inherit maxLength
  -            if (((pBaseValidator->getFacetsDefined() & \
                DatatypeValidator::FACET_MAXLENGTH) !=0) &&
  -                ((getFacetsDefined() & DatatypeValidator::FACET_MAXLENGTH) == 0))
  -            {
  -                setMaxLength(pBaseValidator->getMaxLength());
  -                setFacetsDefined(DatatypeValidator::FACET_MAXLENGTH);
  -            }
  - 
  -            // inherit enumeration
  -            if (((pBaseValidator->getFacetsDefined() & \
                DatatypeValidator::FACET_ENUMERATION) !=0) &&
  -                ((getFacetsDefined() & DatatypeValidator::FACET_ENUMERATION) == \
                0))
  -            {
  -                setEnumeration(pBaseValidator->getEnumeration(), true);
  -            }
  -
  -            // we don't inherit pattern
  -
           } //if baseValidator
   
       }// End of Facet setting
   
  +
  +    /***
  +        Inherit facets from base.facets
  +                
  +        The reason of this inheriting (or copying values) is to ease
  +        schema constraint checking, so that we need NOT trace back to our 
  +        very first base validator in the hierachy. Instead, we are pretty 
  +        sure checking against immediate base validator is enough.          
  +     ***/
  +     if ( baseValidator ) 
  +     {
  +          HexBinaryDatatypeValidator *pBaseValidator = \
(HexBinaryDatatypeValidator*) baseValidator;  +                  
  +          // inherit length
  +          if (((pBaseValidator->getFacetsDefined() & \
DatatypeValidator::FACET_LENGTH) != 0) &&  +              ((getFacetsDefined() & \
DatatypeValidator::FACET_LENGTH) == 0))  +          {
  +              setLength(pBaseValidator->getLength());
  +              setFacetsDefined(DatatypeValidator::FACET_LENGTH);
  +          }
  +            
  +          // inherit minLength
  +          if (((pBaseValidator->getFacetsDefined() & \
DatatypeValidator::FACET_MINLENGTH) !=0) &&  +              ((getFacetsDefined() & \
DatatypeValidator::FACET_MINLENGTH) == 0))  +          {
  +              setMinLength(pBaseValidator->getMinLength());
  +              setFacetsDefined(DatatypeValidator::FACET_MINLENGTH);
  +          }
  +            
  +          // inherit maxLength
  +          if (((pBaseValidator->getFacetsDefined() & \
DatatypeValidator::FACET_MAXLENGTH) !=0) &&  +              ((getFacetsDefined() & \
DatatypeValidator::FACET_MAXLENGTH) == 0))  +          {
  +              setMaxLength(pBaseValidator->getMaxLength());
  +              setFacetsDefined(DatatypeValidator::FACET_MAXLENGTH);
  +          }
  +
  +          // inherit enumeration
  +          if (((pBaseValidator->getFacetsDefined() & \
DatatypeValidator::FACET_ENUMERATION) !=0) &&  +              ((getFacetsDefined() & \
DatatypeValidator::FACET_ENUMERATION) == 0))  +          {
  +              setEnumeration(pBaseValidator->getEnumeration(), true);
  +          }
  +
  +          // we don't inherit pattern
  +     } // end of inheritance
   }
   
   void HexBinaryDatatypeValidator::checkContent( const XMLCh* const content, bool \
asBase)  
  
  
  1.10      +51 -46    \
xml-xerces/c/src/validators/datatype/StringDatatypeValidator.cpp  
  Index: StringDatatypeValidator.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/validators/datatype/StringDatatypeValidator.cpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- StringDatatypeValidator.cpp	2001/05/28 21:11:18	1.9
  +++ StringDatatypeValidator.cpp	2001/05/29 19:49:36	1.10
  @@ -56,6 +56,9 @@
   
   /*
    * $Log: StringDatatypeValidator.cpp,v $
  + * Revision 1.10  2001/05/29 19:49:36  tng
  + * Schema: Constraint Checking Fix in datatypeValidators.  By Pei Yong Zhang.
  + *
    * Revision 1.9  2001/05/28 21:11:18  tng
    * Schema: Various DatatypeValidator fix.  By Pei Yong Zhang
    *
  @@ -432,62 +435,64 @@
                       (getWSFacet() == DatatypeValidator::PRESERVE))
                        ThrowXML(InvalidDatatypeFacetException, \
XMLExcepts::FACET_WS_replace);  }
  -
  -            /***
  -                Inherit facets from base.facets
   
  -                The reason of this inheriting (or copying values) is to ease
  -                schema constraint checking, so that we need NOT trace back to our
  -                very first base validator in the hierachy. Instead, we are pretty
  -                sure checking against immediate base validator is enough.
  -
  -            ***/
  +        } //if baseValidator
   
  -            // inherit length
  -            if (((pBaseValidator->getFacetsDefined() & \
                DatatypeValidator::FACET_LENGTH) != 0) &&
  -                ((getFacetsDefined() & DatatypeValidator::FACET_LENGTH) == 0))
  -            {
  -                setLength(pBaseValidator->getLength());
  -                setFacetsDefined(DatatypeValidator::FACET_LENGTH);
  -            }
  +    }// End of Facet setting
   
  -            // inherit minLength
  -            if (((pBaseValidator->getFacetsDefined() & \
                DatatypeValidator::FACET_MINLENGTH) !=0) &&
  -                ((getFacetsDefined() & DatatypeValidator::FACET_MINLENGTH) == 0))
  -            {
  -                setMinLength(pBaseValidator->getMinLength());
  -                setFacetsDefined(DatatypeValidator::FACET_MINLENGTH);
  -            }
  +    /***
  +        Inherit facets from base.facets
   
  -            // inherit maxLength
  -            if (((pBaseValidator->getFacetsDefined() & \
                DatatypeValidator::FACET_MAXLENGTH) !=0) &&
  -                ((getFacetsDefined() & DatatypeValidator::FACET_MAXLENGTH) == 0))
  -            {
  -                setMaxLength(pBaseValidator->getMaxLength());
  -                setFacetsDefined(DatatypeValidator::FACET_MAXLENGTH);
  -            }
  +        The reason of this inheriting (or copying values) is to ease
  +        schema constraint checking, so that we need NOT trace back to our
  +        very first base validator in the hierachy. Instead, we are pretty
  +        sure checking against immediate base validator is enough.  
  +    ***/
  +    if ( baseValidator )
  +    {
  +        StringDatatypeValidator *pBaseValidator = (StringDatatypeValidator*) \
baseValidator;  
  -            // inherit enumeration
  -            if (((pBaseValidator->getFacetsDefined() & \
                DatatypeValidator::FACET_ENUMERATION) !=0) &&
  -                ((getFacetsDefined() & DatatypeValidator::FACET_ENUMERATION) == \
                0))
  -            {
  -                setEnumeration(pBaseValidator->getEnumeration(), true);
  -            }
  +        // inherit length
  +        if (((pBaseValidator->getFacetsDefined() & \
DatatypeValidator::FACET_LENGTH) != 0) &&  +            ((getFacetsDefined() & \
DatatypeValidator::FACET_LENGTH) == 0))  +        {
  +            setLength(pBaseValidator->getLength());
  +            setFacetsDefined(DatatypeValidator::FACET_LENGTH);
  +        }
   
  -            // we don't inherit pattern
  +        // inherit minLength
  +        if (((pBaseValidator->getFacetsDefined() & \
DatatypeValidator::FACET_MINLENGTH) !=0) &&  +            ((getFacetsDefined() & \
DatatypeValidator::FACET_MINLENGTH) == 0))  +        {
  +            setMinLength(pBaseValidator->getMinLength());
  +            setFacetsDefined(DatatypeValidator::FACET_MINLENGTH);
  +        }
   
  -            // inherit whitespace
  -            if (((pBaseValidator->getFacetsDefined() & \
                DatatypeValidator::FACET_WHITESPACE) !=0) &&
  -                ((getFacetsDefined() & DatatypeValidator::FACET_WHITESPACE) == 0))
  -            {
  -                setWhiteSpace(pBaseValidator->getWSFacet());
  -                setFacetsDefined(DatatypeValidator::FACET_WHITESPACE);
  -            }
  +        // inherit maxLength
  +        if (((pBaseValidator->getFacetsDefined() & \
DatatypeValidator::FACET_MAXLENGTH) !=0) &&  +            ((getFacetsDefined() & \
DatatypeValidator::FACET_MAXLENGTH) == 0))  +        {
  +            setMaxLength(pBaseValidator->getMaxLength());
  +            setFacetsDefined(DatatypeValidator::FACET_MAXLENGTH);
  +        }
   
  -        } //if baseValidator
  +        // inherit enumeration
  +        if (((pBaseValidator->getFacetsDefined() & \
DatatypeValidator::FACET_ENUMERATION) !=0) &&  +            ((getFacetsDefined() & \
DatatypeValidator::FACET_ENUMERATION) == 0))  +        {
  +            setEnumeration(pBaseValidator->getEnumeration(), true);
  +        }
   
  -    }// End of Facet setting
  +        // we don't inherit pattern
   
  +        // inherit whitespace
  +        if (((pBaseValidator->getFacetsDefined() & \
DatatypeValidator::FACET_WHITESPACE) !=0) &&  +            ((getFacetsDefined() & \
DatatypeValidator::FACET_WHITESPACE) == 0))  +        {
  +            setWhiteSpace(pBaseValidator->getWSFacet());
  +            setFacetsDefined(DatatypeValidator::FACET_WHITESPACE);
  +        }
  +    } // end of inheritance
   }
   
   void StringDatatypeValidator::checkContent( const XMLCh* const content, bool \
asBase)  
  
  

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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic