cargilld 2004/12/03 11:40:33 Modified: c/src/xercesc/internal DGXMLScanner.cpp DGXMLScanner.hpp IGXMLScanner.cpp IGXMLScanner.hpp IGXMLScanner2.cpp SGXMLScanner.cpp SGXMLScanner.hpp WFXMLScanner.cpp WFXMLScanner.hpp XMLScanner.cpp XMLScanner.hpp c/src/xercesc/util XMLResourceIdentifier.hpp Log: Change call to resolveEntity to pass in public id so that only one call to resolveEntity is needed (a follow-on to Alberto's fix). Revision Changes Path 1.57 +12 -8 xml-xerces/c/src/xercesc/internal/DGXMLScanner.cpp Index: DGXMLScanner.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/DGXMLScanner.cpp,v retrieving revision 1.56 retrieving revision 1.57 diff -u -r1.56 -r1.57 --- DGXMLScanner.cpp 3 Dec 2004 17:01:58 -0000 1.56 +++ DGXMLScanner.cpp 3 Dec 2004 19:40:30 -0000 1.57 @@ -925,7 +925,7 @@ // Eat the opening square bracket fReaderMgr.getNextChar(); - checkInternalDTD(hasExtSubset, sysId); + checkInternalDTD(hasExtSubset, sysId, pubId); // And try to scan the internal subset. If we fail, try to recover // by skipping forward tot he close angle and returning. @@ -974,7 +974,8 @@ Janitor<InputSource> janSrc(srcUsed); if (fUseCachedGrammar) { - srcUsed = resolveSystemId(sysId); + srcUsed = resolveSystemId(sysId, pubId); + janSrc.reset(srcUsed); Grammar* grammar = fGrammarResolver->getGrammar(srcUsed->getSystemId()); if (grammar && grammar->getGrammarType() == Grammar::DTDGrammarType) { @@ -1021,7 +1022,7 @@ { // And now create a reader to read this entity XMLReader* reader; - if(srcUsed!=0) + if(srcUsed) { reader = fReaderMgr.createReader ( *srcUsed @@ -1031,7 +1032,8 @@ , XMLReader::Source_External , fCalculateSrcOfs ); - else + } + else { reader = fReaderMgr.createReader ( sysId @@ -1043,7 +1045,8 @@ , srcUsed , fCalculateSrcOfs ); - + janSrc.reset(srcUsed); + } // If it failed then throw an exception if (!reader) ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::Gen_CouldNotOpenDTD, srcUsed->getSystemId(), fMemoryManager); @@ -2470,7 +2473,8 @@ } } -InputSource* DGXMLScanner::resolveSystemId(const XMLCh* const sysId) +InputSource* DGXMLScanner::resolveSystemId(const XMLCh* const sysId + ,const XMLCh* const pubId) { //Normalize sysId XMLBufBid nnSys(&fBufMgr); @@ -2493,7 +2497,7 @@ ReaderMgr::LastExtEntityInfo lastInfo; fReaderMgr.getLastExtEntityInfo(lastInfo); XMLResourceIdentifier resourceIdentifier(XMLResourceIdentifier::ExternalEntity, - expSysId.getRawBuffer(), 0, XMLUni::fgZeroLenString, lastInfo.systemId); + expSysId.getRawBuffer(), 0, pubId, lastInfo.systemId); srcToFill = fEntityHandler->resolveEntity(&resourceIdentifier); } else 1.15 +5 -1 xml-xerces/c/src/xercesc/internal/DGXMLScanner.hpp Index: DGXMLScanner.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/DGXMLScanner.hpp,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- DGXMLScanner.hpp 8 Sep 2004 13:56:13 -0000 1.14 +++ DGXMLScanner.hpp 3 Dec 2004 19:40:30 -0000 1.15 @@ -16,6 +16,9 @@ /* * $Log$ + * Revision 1.15 2004/12/03 19:40:30 cargilld + * Change call to resolveEntity to pass in public id so that only one call to resolveEntity is needed (a follow-on to Alberto's fix). + * * Revision 1.14 2004/09/08 13:56:13 peiyongz * Apache License Version 2.0 * @@ -150,7 +153,8 @@ virtual void scanDocTypeDecl(); virtual void scanReset(const InputSource& src); virtual void sendCharData(XMLBuffer& toSend); - virtual InputSource* resolveSystemId(const XMLCh* const sysId); + virtual InputSource* resolveSystemId(const XMLCh* const sysId + ,const XMLCh* const pubId); // ----------------------------------------------------------------------- // Private helper methods 1.80 +9 -6 xml-xerces/c/src/xercesc/internal/IGXMLScanner.cpp Index: IGXMLScanner.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/IGXMLScanner.cpp,v retrieving revision 1.79 retrieving revision 1.80 diff -u -r1.79 -r1.80 --- IGXMLScanner.cpp 3 Dec 2004 17:01:58 -0000 1.79 +++ IGXMLScanner.cpp 3 Dec 2004 19:40:30 -0000 1.80 @@ -1376,7 +1376,7 @@ // Eat the opening square bracket fReaderMgr.getNextChar(); - checkInternalDTD(hasExtSubset, sysId); + checkInternalDTD(hasExtSubset, sysId, pubId); // And try to scan the internal subset. If we fail, try to recover // by skipping forward tot he close angle and returning. @@ -1425,7 +1425,8 @@ Janitor<InputSource> janSrc(srcUsed); if (fUseCachedGrammar) { - srcUsed = resolveSystemId(sysId); + srcUsed = resolveSystemId(sysId, pubId); + janSrc.reset(srcUsed); Grammar* grammar = fGrammarResolver->getGrammar(srcUsed->getSystemId()); if (grammar && grammar->getGrammarType() == Grammar::DTDGrammarType) { @@ -1470,7 +1471,7 @@ { // And now create a reader to read this entity XMLReader* reader; - if(srcUsed!=0) + if (srcUsed) { reader = fReaderMgr.createReader ( *srcUsed @@ -1480,7 +1481,8 @@ , XMLReader::Source_External , fCalculateSrcOfs ); - else + } + else { reader = fReaderMgr.createReader ( sysId @@ -1492,7 +1494,8 @@ , srcUsed , fCalculateSrcOfs ); - + janSrc.reset(srcUsed); + } // If it failed then throw an exception if (!reader) ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::Gen_CouldNotOpenDTD, srcUsed->getSystemId(), fMemoryManager); 1.24 +5 -1 xml-xerces/c/src/xercesc/internal/IGXMLScanner.hpp Index: IGXMLScanner.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/IGXMLScanner.hpp,v retrieving revision 1.23 retrieving revision 1.24 diff -u -r1.23 -r1.24 --- IGXMLScanner.hpp 8 Sep 2004 13:56:13 -0000 1.23 +++ IGXMLScanner.hpp 3 Dec 2004 19:40:30 -0000 1.24 @@ -16,6 +16,9 @@ /* * $Log$ + * Revision 1.24 2004/12/03 19:40:30 cargilld + * Change call to resolveEntity to pass in public id so that only one call to resolveEntity is needed (a follow-on to Alberto's fix). + * * Revision 1.23 2004/09/08 13:56:13 peiyongz * Apache License Version 2.0 * @@ -189,7 +192,8 @@ virtual void scanDocTypeDecl(); virtual void scanReset(const InputSource& src); virtual void sendCharData(XMLBuffer& toSend); - virtual InputSource* resolveSystemId(const XMLCh* const sysId); + virtual InputSource* resolveSystemId(const XMLCh* const sysId + ,const XMLCh* const pubId); // ----------------------------------------------------------------------- // Private helper methods 1.76 +4 -3 xml-xerces/c/src/xercesc/internal/IGXMLScanner2.cpp Index: IGXMLScanner2.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/IGXMLScanner2.cpp,v retrieving revision 1.75 retrieving revision 1.76 diff -u -r1.75 -r1.76 --- IGXMLScanner2.cpp 19 Oct 2004 15:08:53 -0000 1.75 +++ IGXMLScanner2.cpp 3 Dec 2004 19:40:30 -0000 1.76 @@ -1839,7 +1839,8 @@ fModel = fGrammarResolver->getXSModel(); } -InputSource* IGXMLScanner::resolveSystemId(const XMLCh* const sysId) +InputSource* IGXMLScanner::resolveSystemId(const XMLCh* const sysId + ,const XMLCh* const pubId) { //Normalize sysId XMLBufBid nnSys(&fBufMgr); @@ -1862,7 +1863,7 @@ ReaderMgr::LastExtEntityInfo lastInfo; fReaderMgr.getLastExtEntityInfo(lastInfo); XMLResourceIdentifier resourceIdentifier(XMLResourceIdentifier::ExternalEntity, - expSysId.getRawBuffer(), 0, XMLUni::fgZeroLenString, lastInfo.systemId); + expSysId.getRawBuffer(), 0, pubId, lastInfo.systemId); srcToFill = fEntityHandler->resolveEntity(&resourceIdentifier); } else 1.101 +4 -3 xml-xerces/c/src/xercesc/internal/SGXMLScanner.cpp Index: SGXMLScanner.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/SGXMLScanner.cpp,v retrieving revision 1.100 retrieving revision 1.101 diff -u -r1.100 -r1.101 --- SGXMLScanner.cpp 19 Oct 2004 15:08:53 -0000 1.100 +++ SGXMLScanner.cpp 3 Dec 2004 19:40:30 -0000 1.101 @@ -3671,7 +3671,8 @@ fModel = fGrammarResolver->getXSModel(); } -InputSource* SGXMLScanner::resolveSystemId(const XMLCh* const sysId) +InputSource* SGXMLScanner::resolveSystemId(const XMLCh* const sysId + ,const XMLCh* const pubId) { //Normalize sysId XMLBufBid nnSys(&fBufMgr); @@ -3694,7 +3695,7 @@ ReaderMgr::LastExtEntityInfo lastInfo; fReaderMgr.getLastExtEntityInfo(lastInfo); XMLResourceIdentifier resourceIdentifier(XMLResourceIdentifier::ExternalEntity, - expSysId.getRawBuffer(), 0, XMLUni::fgZeroLenString, lastInfo.systemId); + expSysId.getRawBuffer(), 0, pubId, lastInfo.systemId); srcToFill = fEntityHandler->resolveEntity(&resourceIdentifier); } else 1.22 +5 -1 xml-xerces/c/src/xercesc/internal/SGXMLScanner.hpp Index: SGXMLScanner.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/SGXMLScanner.hpp,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- SGXMLScanner.hpp 27 Sep 2004 21:04:38 -0000 1.21 +++ SGXMLScanner.hpp 3 Dec 2004 19:40:30 -0000 1.22 @@ -16,6 +16,9 @@ /* * $Log$ + * Revision 1.22 2004/12/03 19:40:30 cargilld + * Change call to resolveEntity to pass in public id so that only one call to resolveEntity is needed (a follow-on to Alberto's fix). + * * Revision 1.21 2004/09/27 21:04:38 knoaman * Update SGXMLScanner to allow access of data and methods to XSAXMLScanner * @@ -280,7 +283,8 @@ ); virtual void scanDocTypeDecl(); virtual void sendCharData(XMLBuffer& toSend); - virtual InputSource* resolveSystemId(const XMLCh* const sysId); + virtual InputSource* resolveSystemId(const XMLCh* const sysId + ,const XMLCh* const pubId); // ----------------------------------------------------------------------- // Private helper methods 1.26 +3 -2 xml-xerces/c/src/xercesc/internal/WFXMLScanner.cpp Index: WFXMLScanner.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/WFXMLScanner.cpp,v retrieving revision 1.25 retrieving revision 1.26 diff -u -r1.25 -r1.26 --- WFXMLScanner.cpp 28 Sep 2004 21:27:38 -0000 1.25 +++ WFXMLScanner.cpp 3 Dec 2004 19:40:30 -0000 1.26 @@ -2053,7 +2053,8 @@ sendCharData(toUse); } -InputSource* WFXMLScanner::resolveSystemId(const XMLCh* const) +InputSource* WFXMLScanner::resolveSystemId(const XMLCh* const + ,const XMLCh* const pubId) { return 0; } 1.12 +5 -1 xml-xerces/c/src/xercesc/internal/WFXMLScanner.hpp Index: WFXMLScanner.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/WFXMLScanner.hpp,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- WFXMLScanner.hpp 8 Sep 2004 13:56:13 -0000 1.11 +++ WFXMLScanner.hpp 3 Dec 2004 19:40:30 -0000 1.12 @@ -16,6 +16,9 @@ /* * $Log$ + * Revision 1.12 2004/12/03 19:40:30 cargilld + * Change call to resolveEntity to pass in public id so that only one call to resolveEntity is needed (a follow-on to Alberto's fix). + * * Revision 1.11 2004/09/08 13:56:13 peiyongz * Apache License Version 2.0 * @@ -138,7 +141,8 @@ virtual void scanDocTypeDecl(); virtual void scanReset(const InputSource& src); virtual void sendCharData(XMLBuffer& toSend); - virtual InputSource* resolveSystemId(const XMLCh* const sysId); + virtual InputSource* resolveSystemId(const XMLCh* const sysId + ,const XMLCh* const pubId); // ----------------------------------------------------------------------- // Private helper methods 1.75 +5 -3 xml-xerces/c/src/xercesc/internal/XMLScanner.cpp Index: XMLScanner.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/XMLScanner.cpp,v retrieving revision 1.74 retrieving revision 1.75 diff -u -r1.74 -r1.75 --- XMLScanner.cpp 20 Oct 2004 15:18:20 -0000 1.74 +++ XMLScanner.cpp 3 Dec 2004 19:40:30 -0000 1.75 @@ -1745,14 +1745,16 @@ * otherwise it is allowed. * ***/ -void XMLScanner::checkInternalDTD(bool hasExtSubset, const XMLCh* const sysId) +void XMLScanner::checkInternalDTD(bool hasExtSubset + ,const XMLCh* const sysId + ,const XMLCh* const pubId) { if (fToCacheGrammar) ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Val_CantHaveIntSS, fMemoryManager); if (fUseCachedGrammar && hasExtSubset ) { - InputSource* sysIdSrc = resolveSystemId(sysId); + InputSource* sysIdSrc = resolveSystemId(sysId, pubId); Janitor<InputSource> janSysIdSrc(sysIdSrc); Grammar* grammar = fGrammarResolver->getGrammar(sysIdSrc->getSystemId()); 1.44 +6 -2 xml-xerces/c/src/xercesc/internal/XMLScanner.hpp Index: XMLScanner.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/XMLScanner.hpp,v retrieving revision 1.43 retrieving revision 1.44 diff -u -r1.43 -r1.44 --- XMLScanner.hpp 12 Oct 2004 21:33:05 -0000 1.43 +++ XMLScanner.hpp 3 Dec 2004 19:40:30 -0000 1.44 @@ -16,6 +16,9 @@ /* * $Log$ + * Revision 1.44 2004/12/03 19:40:30 cargilld + * Change call to resolveEntity to pass in public id so that only one call to resolveEntity is needed (a follow-on to Alberto's fix). + * * Revision 1.43 2004/10/12 21:33:05 peiyongz * Change attribute number threshold to 100 * @@ -728,7 +731,8 @@ virtual void sendCharData(XMLBuffer& toSend) = 0; //return owned by the caller - virtual InputSource* resolveSystemId(const XMLCh* const sysId) {return 0;}; + virtual InputSource* resolveSystemId(const XMLCh* const sysId + ,const XMLCh* const pubId) {return 0;}; // ----------------------------------------------------------------------- // Protected scanning methods @@ -744,7 +748,7 @@ // ----------------------------------------------------------------------- // Private helper methods // ----------------------------------------------------------------------- - void checkInternalDTD(bool hasExtSubset, const XMLCh* const sysId); + void checkInternalDTD(bool hasExtSubset, const XMLCh* const sysId, const XMLCh* const pubId); void checkIDRefs(); bool isLegalToken(const XMLPScanToken& toCheck); XMLTokens senseNextToken(unsigned int& orgReader); 1.8 +6 -3 xml-xerces/c/src/xercesc/util/XMLResourceIdentifier.hpp Index: XMLResourceIdentifier.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/XMLResourceIdentifier.hpp,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- XMLResourceIdentifier.hpp 26 Sep 2004 01:06:31 -0000 1.7 +++ XMLResourceIdentifier.hpp 3 Dec 2004 19:40:32 -0000 1.8 @@ -16,6 +16,9 @@ /* * $Log$ + * Revision 1.8 2004/12/03 19:40:32 cargilld + * Change call to resolveEntity to pass in public id so that only one call to resolveEntity is needed (a follow-on to Alberto's fix). + * * Revision 1.7 2004/09/26 01:06:31 cargilld * Fix documentation generation problem. Replace <pre> with <code>. Patch from James Littlejohn. * @@ -210,10 +213,10 @@ , const XMLCh* const publicId , const XMLCh* const baseURI ) : fResourceIdentifierType(resourceIdentifierType) - , fPublicId(publicId) , fSystemId(systemId) - , fBaseURI(baseURI) - , fNameSpace(nameSpace) + , fNameSpace(nameSpace) + , fPublicId(publicId) + , fBaseURI(baseURI) { }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]