diff --git a/src/xercesc/validators/datatype/DatatypeValidator.cpp b/src/xercesc/validators/datatype/DatatypeValidator.cpp index f75d3fdb216519c43affadafb51ed11c95b9d399..b814ff0ce190cc5f96593e8031dc2cc0d7b2c2ce 100644 --- a/src/xercesc/validators/datatype/DatatypeValidator.cpp +++ b/src/xercesc/validators/datatype/DatatypeValidator.cpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.22 2004/03/02 23:22:06 peiyongz + * save/load TypeUri/TypeLocalName more accurately + * * Revision 1.21 2004/01/29 11:51:22 cargilld * Code cleanup changes to get rid of various compiler diagnostic messages. * @@ -367,14 +370,26 @@ void DatatypeValidator::serialize(XSerializeEngine& serEng) serEng.writeString(fPattern); + if (fTypeUri==XMLUni::fgZeroLenString) + { + serEng<<(unsigned int)1; + } + else if (fTypeUri == SchemaSymbols::fgURI_SCHEMAFORSCHEMA) + { + serEng<<(unsigned int)2; + serEng.writeString(fTypeLocalName); + } + else + { + serEng<<(unsigned int)3; + serEng.writeString(fTypeLocalName); + serEng.writeString(fTypeUri); + } + /*** * don't serialize * fRegex - * fTypeLocalName - * fTypeUri - ***/ - serEng.writeString(fTypeName); - + ***/ } else { @@ -427,25 +442,49 @@ void DatatypeValidator::serialize(XSerializeEngine& serEng) * Deserialize RefHashTableOf<KVStringPair> * ***/ - XTemplateSerializer::loadObject(&fFacets, 29, true, serEng); + XTemplateSerializer::loadObject(&fFacets, 29, false, serEng); + //XTemplateSerializer::loadObject(&fFacets, 29, true, serEng); serEng.readString(fPattern); /*** - * don't serialize fRegex + * Recreate through setTypeName() + * fTypeName ***/ - fRegex = 0; + + unsigned int flag; + serEng>>flag; + + if ( 1 == flag ) + { + setTypeName(0); + } + else if ( 2 == flag ) + { + XMLCh* typeLocalName; + serEng.readString(typeLocalName); + ArrayJanitor<XMLCh> janName(typeLocalName, fMemoryManager); + + setTypeName(typeLocalName); + } + else //3 + { + XMLCh* typeLocalName; + serEng.readString(typeLocalName); + ArrayJanitor<XMLCh> janName(typeLocalName, fMemoryManager); + + XMLCh* typeUri; + serEng.readString(typeUri); + ArrayJanitor<XMLCh> janUri(typeUri, fMemoryManager); + + setTypeName(typeLocalName, typeUri); + + } /*** - * Recreate through setTypeName() - * fTypeName - * fTypeLocalName - * fTypeUri + * don't serialize fRegex ***/ - XMLCh* typeName; - serEng.readString(typeName); - ArrayJanitor<XMLCh> janName(typeName, fMemoryManager); - setTypeName(typeName); + fRegex = 0; }