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]