summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/IcePack/ComponentBuilder.cpp3
-rw-r--r--cpp/src/IcePack/ComponentBuilder.h2
-rw-r--r--cpp/src/IcePack/IcePackNode.cpp2
-rw-r--r--cpp/src/IcePack/IcePackRegistry.cpp2
-rw-r--r--cpp/src/IceSSL/ConfigParser.cpp155
-rw-r--r--cpp/src/IceSSL/ConfigParser.h29
-rw-r--r--cpp/src/IceSSL/ConfigParserErrorReporter.cpp54
-rw-r--r--cpp/src/IceSSL/ConfigParserErrorReporter.h20
-rw-r--r--cpp/src/IceSSL/icessl.dsp4
-rw-r--r--cpp/src/IceStorm/Admin.cpp2
-rw-r--r--cpp/src/IceStorm/WeightedGraph.cpp4
-rw-r--r--cpp/src/IceStorm/icestormC.dsp4
-rw-r--r--cpp/src/IceXML/StreamI.cpp294
-rw-r--r--cpp/src/IceXML/icexml.dsp4
-rw-r--r--cpp/src/XMLTransform/ErrorReporter.cpp16
-rw-r--r--cpp/src/XMLTransform/ErrorReporter.h7
-rw-r--r--cpp/src/XMLTransform/XMLTransform.cpp541
-rw-r--r--cpp/src/XMLTransform/xmltransform.dsp4
-rw-r--r--cpp/src/Yellow/yellowC.dsp4
-rw-r--r--cpp/src/slice2xsd/Validate.cpp65
20 files changed, 598 insertions, 618 deletions
diff --git a/cpp/src/IcePack/ComponentBuilder.cpp b/cpp/src/IcePack/ComponentBuilder.cpp
index 0dd68963fb4..6346cbc4bea 100644
--- a/cpp/src/IcePack/ComponentBuilder.cpp
+++ b/cpp/src/IcePack/ComponentBuilder.cpp
@@ -12,8 +12,7 @@
#include <IcePack/ComponentBuilder.h>
#include <Yellow/Yellow.h>
-#include <parsers/SAXParser.hpp>
-#include <sax/HandlerBase.hpp>
+#include <xercesc/parsers/SAXParser.hpp>
#include <sys/stat.h>
#include <sys/types.h>
diff --git a/cpp/src/IcePack/ComponentBuilder.h b/cpp/src/IcePack/ComponentBuilder.h
index c6f0799539f..90b15a537b4 100644
--- a/cpp/src/IcePack/ComponentBuilder.h
+++ b/cpp/src/IcePack/ComponentBuilder.h
@@ -15,7 +15,7 @@
#include <IcePack/Admin.h>
#include <Yellow/Yellow.h>
-#include <sax/HandlerBase.hpp>
+#include <xercesc/sax/HandlerBase.hpp>
#include <map>
#include <vector>
diff --git a/cpp/src/IcePack/IcePackNode.cpp b/cpp/src/IcePack/IcePackNode.cpp
index 392cd8199e4..ff00477bb42 100644
--- a/cpp/src/IcePack/IcePackNode.cpp
+++ b/cpp/src/IcePack/IcePackNode.cpp
@@ -20,7 +20,7 @@
#include <IcePack/NodeInfo.h>
#include <IcePack/TraceLevels.h>
#include <IcePack/Registry.h>
-#include <util/PlatformUtils.hpp>
+#include <xercesc/util/PlatformUtils.hpp>
#include <csignal>
#include <signal.h>
diff --git a/cpp/src/IcePack/IcePackRegistry.cpp b/cpp/src/IcePack/IcePackRegistry.cpp
index a49fb795252..1b824694ab5 100644
--- a/cpp/src/IcePack/IcePackRegistry.cpp
+++ b/cpp/src/IcePack/IcePackRegistry.cpp
@@ -13,7 +13,7 @@
#include <Ice/Application.h>
#include <IcePack/Registry.h>
-#include <util/PlatformUtils.hpp>
+#include <xercesc/util/PlatformUtils.hpp>
using namespace std;
using namespace IcePack;
diff --git a/cpp/src/IceSSL/ConfigParser.cpp b/cpp/src/IceSSL/ConfigParser.cpp
index 124d51b4069..87620277ff4 100644
--- a/cpp/src/IceSSL/ConfigParser.cpp
+++ b/cpp/src/IceSSL/ConfigParser.cpp
@@ -13,10 +13,10 @@
#include <IceSSL/OpenSSL.h>
#include <IceSSL/Exception.h>
-#include <util/PlatformUtils.hpp>
-#include <parsers/DOMParser.hpp>
-#include <framework/LocalFileInputSource.hpp>
-#include <util/Janitor.hpp>
+#include <xercesc/util/PlatformUtils.hpp>
+#include <xercesc/parsers/XercesDOMParser.hpp>
+#include <xercesc/framework/LocalFileInputSource.hpp>
+#include <xercesc/util/Janitor.hpp>
#include <algorithm>
@@ -28,6 +28,7 @@ using namespace IceSSL;
//
IceSSL::ConfigParser::ConfigParser(const string& configFile) :
+ _root(0),
_configFile(configFile)
{
assert(!configFile.empty());
@@ -37,6 +38,7 @@ IceSSL::ConfigParser::ConfigParser(const string& configFile) :
}
IceSSL::ConfigParser::ConfigParser(const string& configFile, const string& configPath) :
+ _root(0),
_configFile(configFile),
_configPath(configPath)
{
@@ -48,6 +50,11 @@ IceSSL::ConfigParser::ConfigParser(const string& configFile, const string& confi
IceSSL::ConfigParser::~ConfigParser()
{
+ if(_root)
+ {
+ _root->release();
+ }
+
XMLPlatformUtils::Terminate();
}
@@ -64,7 +71,7 @@ IceSSL::ConfigParser::process()
ostringstream s;
s << "while parsing " << _configFile << ": " << endl;
- s << "xerces-c init exception: " << DOMString(toCatch.getMessage());
+ s << "xerces-c init exception: " << toString(toCatch.getMessage());
configEx.message = s.str();
@@ -73,19 +80,17 @@ IceSSL::ConfigParser::process()
int errorCount = 0;
- ConfigParserErrorReporterPtr errReporter = new ConfigParserErrorReporter(_traceLevels, _logger);
- assert(errReporter != 0);
+ ConfigParserErrorReporter errReporter(_traceLevels, _logger);
// Create our parser, then attach an error handler to the parser.
// The parser will call back to methods of the ConfigParserErrorHandler
// if it discovers errors during the course of parsing the XML document.
- DOMParser parser;
- parser.setValidationScheme(DOMParser::Val_Auto);
+ XercesDOMParser parser;
+ parser.setValidationScheme(AbstractDOMParser::Val_Auto);
parser.setDoNamespaces(false);
parser.setDoSchema(false);
parser.setCreateEntityReferenceNodes(false);
- parser.setToCreateXMLDeclTypeNode(true);
- parser.setErrorHandler(errReporter.get());
+ parser.setErrorHandler(&errReporter);
try
{
@@ -118,7 +123,7 @@ IceSSL::ConfigParser::process()
if(errorCount == 0)
{
// Get the root of the parse tree.
- _root = parser.getDocument();
+ _root = parser.adoptDocument();
}
}
catch(const XMLException& e)
@@ -127,13 +132,13 @@ IceSSL::ConfigParser::process()
ostringstream s;
s << "while parsing " << _configFile << ": " << endl;
- s << "xerces-c parsing error: " << DOMString(e.getMessage());
+ s << "xerces-c parsing error: " << toString(e.getMessage());
configEx.message = s.str();
throw configEx;
}
- catch(const DOM_DOMException& e)
+ catch(const DOMException& e)
{
ConfigParseException configEx(__FILE__, __LINE__);
@@ -165,7 +170,7 @@ IceSSL::ConfigParser::process()
configEx.message = errStr.str();
- string reporterErrors = errReporter->getErrors();
+ string reporterErrors = errReporter.getErrors();
if(!reporterErrors.empty())
{
@@ -183,7 +188,7 @@ IceSSL::ConfigParser::loadClientConfig(GeneralConfig& general,
BaseCertificates& baseCerts)
{
string clientSectionString("SSLConfig:client");
- DOM_Node clientSection = find(clientSectionString);
+ DOMNode* clientSection = find(clientSectionString);
try
{
@@ -196,7 +201,7 @@ IceSSL::ConfigParser::loadClientConfig(GeneralConfig& general,
return true;
}
}
- catch(const DOM_DOMException& e)
+ catch(const DOMException& e)
{
ConfigParseException configEx(__FILE__, __LINE__);
@@ -220,7 +225,7 @@ IceSSL::ConfigParser::loadServerConfig(GeneralConfig& general,
TempCertificates& tempCerts)
{
string serverSectionString("SSLConfig:server");
- DOM_Node serverSection = find(serverSectionString);
+ DOMNode* serverSection = find(serverSectionString);
try
{
@@ -234,7 +239,7 @@ IceSSL::ConfigParser::loadServerConfig(GeneralConfig& general,
return true;
}
}
- catch(const DOM_DOMException& e)
+ catch(const DOMException& e)
{
ConfigParseException configEx(__FILE__, __LINE__);
@@ -297,17 +302,17 @@ IceSSL::ConfigParser::popRoot(string& path, string& root, string& tail)
}
}
-DOM_Node
+DOMNode*
IceSSL::ConfigParser::find(string& nodePath)
{
return find(_root, nodePath);
}
-DOM_Node
-IceSSL::ConfigParser::find(DOM_Node rootNode, string& nodePath)
+DOMNode*
+IceSSL::ConfigParser::find(DOMNode* rootNode, string& nodePath)
{
// The target node that we're looking for.
- DOM_Node tNode;
+ DOMNode* tNode = 0;
if(rootNode == 0)
{
@@ -320,14 +325,14 @@ IceSSL::ConfigParser::find(DOM_Node rootNode, string& nodePath)
// Pop the root off the path.
popRoot(nodePath, rootNodeName, tailNodes);
- DOM_Node child = rootNode.getFirstChild();
+ DOMNode* child = rootNode->getFirstChild();
while(child != 0)
{
// Ignore any other node types - we're only interested in ELEMENT_NODEs.
- if(child.getNodeType() == DOM_Node::ELEMENT_NODE)
+ if(child->getNodeType() == DOMNode::ELEMENT_NODE)
{
- string nodeName = toString(child.getNodeName());
+ string nodeName = toString(child->getNodeName());
if(nodeName.compare(rootNodeName) == 0)
{
@@ -344,14 +349,14 @@ IceSSL::ConfigParser::find(DOM_Node rootNode, string& nodePath)
}
}
- child = child.getNextSibling();
+ child = child->getNextSibling();
}
return tNode;
}
void
-IceSSL::ConfigParser::getGeneral(DOM_Node rootNode, GeneralConfig& generalConfig)
+IceSSL::ConfigParser::getGeneral(DOMNode* rootNode, GeneralConfig& generalConfig)
{
if(rootNode == 0)
{
@@ -359,17 +364,17 @@ IceSSL::ConfigParser::getGeneral(DOM_Node rootNode, GeneralConfig& generalConfig
}
string generalString("general");
- DOM_Node general = find(rootNode, generalString);
+ DOMNode* general = find(rootNode, generalString);
- DOM_NamedNodeMap attributes = general.getAttributes();
+ DOMNamedNodeMap* attributes = general->getAttributes();
- int attrCount = attributes.getLength();
+ int attrCount = attributes->getLength();
for(int i = 0; i < attrCount; i++)
{
- DOM_Node attribute = attributes.item(i);
- string nodeName = toString(attribute.getNodeName());
- string nodeValue = toString(attribute.getNodeValue());
+ DOMNode* attribute = attributes->item(i);
+ string nodeName = toString(attribute->getNodeName());
+ string nodeValue = toString(attribute->getNodeValue());
// Set the property.
generalConfig.set(nodeName, nodeValue);
@@ -377,7 +382,7 @@ IceSSL::ConfigParser::getGeneral(DOM_Node rootNode, GeneralConfig& generalConfig
}
void
-IceSSL::ConfigParser::getCertAuth(DOM_Node rootNode, CertificateAuthority& certAuth)
+IceSSL::ConfigParser::getCertAuth(DOMNode* rootNode, CertificateAuthority& certAuth)
{
if(rootNode == 0)
{
@@ -385,22 +390,22 @@ IceSSL::ConfigParser::getCertAuth(DOM_Node rootNode, CertificateAuthority& certA
}
string nodeName = "certauthority";
- DOM_Node certAuthNode = find(rootNode, nodeName);
+ DOMNode* certAuthNode = find(rootNode, nodeName);
if(certAuthNode == 0)
{
return;
}
- DOM_NamedNodeMap attributes = certAuthNode.getAttributes();
+ DOMNamedNodeMap* attributes = certAuthNode->getAttributes();
- int attrCount = attributes.getLength();
+ int attrCount = attributes->getLength();
for(int i = 0; i < attrCount; i++)
{
- DOM_Node attribute = attributes.item(i);
- string nodeName = toString(attribute.getNodeName());
- string nodeValue = toString(attribute.getNodeValue());
+ DOMNode* attribute = attributes->item(i);
+ string nodeName = toString(attribute->getNodeName());
+ string nodeValue = toString(attribute->getNodeValue());
if(nodeName.compare("file") == 0)
{
@@ -422,7 +427,7 @@ IceSSL::ConfigParser::getCertAuth(DOM_Node rootNode, CertificateAuthority& certA
}
void
-IceSSL::ConfigParser::getBaseCerts(DOM_Node rootNode, BaseCertificates& baseCerts)
+IceSSL::ConfigParser::getBaseCerts(DOMNode* rootNode, BaseCertificates& baseCerts)
{
if(rootNode == 0)
{
@@ -430,7 +435,7 @@ IceSSL::ConfigParser::getBaseCerts(DOM_Node rootNode, BaseCertificates& baseCert
}
string nodeName = "basecerts";
- DOM_Node baseCertsRoot = find(rootNode, nodeName);
+ DOMNode* baseCertsRoot = find(rootNode, nodeName);
if(baseCertsRoot == 0)
{
@@ -454,7 +459,7 @@ IceSSL::ConfigParser::getBaseCerts(DOM_Node rootNode, BaseCertificates& baseCert
}
void
-IceSSL::ConfigParser::getTempCerts(DOM_Node rootNode, TempCertificates& tempCerts)
+IceSSL::ConfigParser::getTempCerts(DOMNode* rootNode, TempCertificates& tempCerts)
{
if(rootNode == 0)
{
@@ -462,19 +467,18 @@ IceSSL::ConfigParser::getTempCerts(DOM_Node rootNode, TempCertificates& tempCert
}
string nodeName = "tempcerts";
- DOM_Node tempCertsRoot = find(rootNode, nodeName);
+ DOMNode* tempCertsRoot = find(rootNode, nodeName);
if(tempCertsRoot == 0)
{
return;
}
- DOM_Node child = tempCertsRoot.getFirstChild();
+ DOMNode* child = tempCertsRoot->getFirstChild();
while(child != 0)
{
- DOMString nodeName = child.getNodeName();
- string name = toString(nodeName);
+ string name = toString(child->getNodeName());
if(name.compare("dhparams") == 0)
{
@@ -485,12 +489,12 @@ IceSSL::ConfigParser::getTempCerts(DOM_Node rootNode, TempCertificates& tempCert
loadRSACert(child, tempCerts);
}
- child = child.getNextSibling();
+ child = child->getNextSibling();
}
}
void
-IceSSL::ConfigParser::loadDHParams(DOM_Node rootNode, TempCertificates& tempCerts)
+IceSSL::ConfigParser::loadDHParams(DOMNode* rootNode, TempCertificates& tempCerts)
{
DiffieHellmanParamsFile dhParams;
@@ -500,7 +504,7 @@ IceSSL::ConfigParser::loadDHParams(DOM_Node rootNode, TempCertificates& tempCert
}
void
-IceSSL::ConfigParser::loadRSACert(DOM_Node rootNode, TempCertificates& tempCerts)
+IceSSL::ConfigParser::loadRSACert(DOMNode* rootNode, TempCertificates& tempCerts)
{
CertificateDesc rsaCert;
@@ -510,7 +514,7 @@ IceSSL::ConfigParser::loadRSACert(DOM_Node rootNode, TempCertificates& tempCerts
}
void
-IceSSL::ConfigParser::getCert(DOM_Node rootNode, CertificateDesc& certDesc)
+IceSSL::ConfigParser::getCert(DOMNode* rootNode, CertificateDesc& certDesc)
{
if(rootNode == 0)
{
@@ -521,14 +525,14 @@ IceSSL::ConfigParser::getCert(DOM_Node rootNode, CertificateDesc& certDesc)
CertificateFile privateFile;
int keySize = 0;
- DOM_NamedNodeMap attributes = rootNode.getAttributes();
- int attrCount = attributes.getLength();
+ DOMNamedNodeMap* attributes = rootNode->getAttributes();
+ int attrCount = attributes->getLength();
for(int i = 0; i < attrCount; i++)
{
- DOM_Node attribute = attributes.item(i);
- string nodeName = toString(attribute.getNodeName());
- string nodeValue = toString(attribute.getNodeValue());
+ DOMNode* attribute = attributes->item(i);
+ string nodeName = toString(attribute->getNodeName());
+ string nodeValue = toString(attribute->getNodeValue());
if(nodeName.compare("keysize") == 0)
{
@@ -547,7 +551,7 @@ IceSSL::ConfigParser::getCert(DOM_Node rootNode, CertificateDesc& certDesc)
}
void
-IceSSL::ConfigParser::getDHParams(DOM_Node rootNode, DiffieHellmanParamsFile& dhParams)
+IceSSL::ConfigParser::getDHParams(DOMNode* rootNode, DiffieHellmanParamsFile& dhParams)
{
if(rootNode == 0)
{
@@ -557,15 +561,15 @@ IceSSL::ConfigParser::getDHParams(DOM_Node rootNode, DiffieHellmanParamsFile& dh
CertificateFile certFile;
loadCertificateFile(rootNode, certFile);
- DOM_NamedNodeMap attributes = rootNode.getAttributes();
+ DOMNamedNodeMap* attributes = rootNode->getAttributes();
int keySize = 0;
- int attrCount = attributes.getLength();
+ int attrCount = attributes->getLength();
for(int i = 0; i < attrCount; i++)
{
- DOM_Node attribute = attributes.item(i);
- string nodeName = toString(attribute.getNodeName());
- string nodeValue = toString(attribute.getNodeValue());
+ DOMNode* attribute = attributes->item(i);
+ string nodeName = toString(attribute->getNodeName());
+ string nodeValue = toString(attribute->getNodeValue());
if(nodeName.compare("keysize") == 0)
{
@@ -577,7 +581,7 @@ IceSSL::ConfigParser::getDHParams(DOM_Node rootNode, DiffieHellmanParamsFile& dh
}
void
-IceSSL::ConfigParser::loadCertificateFile(DOM_Node rootNode, CertificateFile& certFile)
+IceSSL::ConfigParser::loadCertificateFile(DOMNode* rootNode, CertificateFile& certFile)
{
if(rootNode == 0)
{
@@ -587,14 +591,14 @@ IceSSL::ConfigParser::loadCertificateFile(DOM_Node rootNode, CertificateFile& ce
string filename;
int encoding = 0; // Initialize, to keep the compiler from complaining.
- DOM_NamedNodeMap attributes = rootNode.getAttributes();
- int attrCount = attributes.getLength();
+ DOMNamedNodeMap* attributes = rootNode->getAttributes();
+ int attrCount = attributes->getLength();
for(int i = 0; i < attrCount; i++)
{
- DOM_Node attribute = attributes.item(i);
- string nodeName = toString(attribute.getNodeName());
- string nodeValue = toString(attribute.getNodeValue());
+ DOMNode* attribute = attributes->item(i);
+ string nodeName = toString(attribute->getNodeName());
+ string nodeValue = toString(attribute->getNodeValue());
if(nodeName.compare("encoding") == 0)
{
@@ -633,14 +637,11 @@ IceSSL::ConfigParser::parseEncoding(string& encodingString)
}
string
-IceSSL::ConfigParser::toString(const DOMString& domString)
+IceSSL::ConfigParser::toString(const XMLCh* s)
{
- char* cString = domString.transcode();
-
- string stlString(cString);
-
- delete []cString;
-
- return stlString;
+ char* t = XMLString::transcode(s);
+ string r(t);
+ delete[] t;
+ return r;
}
diff --git a/cpp/src/IceSSL/ConfigParser.h b/cpp/src/IceSSL/ConfigParser.h
index 5f56d020262..02f4f762836 100644
--- a/cpp/src/IceSSL/ConfigParser.h
+++ b/cpp/src/IceSSL/ConfigParser.h
@@ -18,7 +18,8 @@
#include <IceSSL/BaseCerts.h>
#include <IceSSL/TempCerts.h>
#include <IceSSL/TraceLevelsF.h>
-#include <dom/DOM.hpp>
+
+#include <xercesc/dom/DOM.hpp>
namespace IceSSL
{
@@ -48,7 +49,7 @@ public:
private:
- DOM_Node _root;
+ DOMNode* _root;
std::string _configFile;
std::string _configPath;
@@ -57,31 +58,31 @@ private:
// Parse tree walking utility methods.
void popRoot(std::string&, std::string&, std::string&);
- DOM_Node find(std::string&);
- DOM_Node find(DOM_Node, std::string&);
+ DOMNode* find(std::string&);
+ DOMNode* find(DOMNode*, std::string&);
// Loading of the base elements of the file.
- void getGeneral(DOM_Node, GeneralConfig&);
- void getCertAuth(DOM_Node, CertificateAuthority&);
- void getBaseCerts(DOM_Node, BaseCertificates&);
- void getTempCerts(DOM_Node, TempCertificates&);
+ void getGeneral(DOMNode*, GeneralConfig&);
+ void getCertAuth(DOMNode*, CertificateAuthority&);
+ void getBaseCerts(DOMNode*, BaseCertificates&);
+ void getTempCerts(DOMNode*, TempCertificates&);
// Loading of temporary certificates/params (Ephemeral Keys).
- void loadDHParams(DOM_Node, TempCertificates&);
- void loadRSACert(DOM_Node, TempCertificates&);
+ void loadDHParams(DOMNode*, TempCertificates&);
+ void loadRSACert(DOMNode*, TempCertificates&);
// Populate with information from the indicated node in the parse tree.
- void getCert(DOM_Node, CertificateDesc&);
- void getDHParams(DOM_Node, DiffieHellmanParamsFile&);
+ void getCert(DOMNode*, CertificateDesc&);
+ void getDHParams(DOMNode*, DiffieHellmanParamsFile&);
// Populate a certificate file object, basis of all certificates.
- void loadCertificateFile(DOM_Node, CertificateFile&);
+ void loadCertificateFile(DOMNode*, CertificateFile&);
// Parses the certificate encoding format from a string representation
// to the proper integer value used by the underlying SSL framework.
int parseEncoding(std::string&);
- std::string toString(const DOMString&);
+ std::string toString(const XMLCh*);
};
}
diff --git a/cpp/src/IceSSL/ConfigParserErrorReporter.cpp b/cpp/src/IceSSL/ConfigParserErrorReporter.cpp
index 21dcb82d9e0..a73284cdead 100644
--- a/cpp/src/IceSSL/ConfigParserErrorReporter.cpp
+++ b/cpp/src/IceSSL/ConfigParserErrorReporter.cpp
@@ -13,14 +13,23 @@
#include <IceSSL/OpenSSL.h>
#include <IceSSL/TraceLevels.h>
-#include <sax/SAXParseException.hpp>
+#include <xercesc/sax/SAXParseException.hpp>
#include <sstream>
using namespace std;
-void ::IceInternal::incRef(::IceSSL::ConfigParserErrorReporter* p) { p->__incRef(); }
-void ::IceInternal::decRef(::IceSSL::ConfigParserErrorReporter* p) { p->__decRef(); }
+//
+// Utility to make the usage of xerces easier.
+//
+static string
+toString(const XMLCh* s)
+{
+ char* t = XMLString::transcode(s);
+ string r(t);
+ delete[] t;
+ return r;
+}
IceSSL::ConfigParserErrorReporter::ConfigParserErrorReporter(const IceSSL::TraceLevelsPtr& traceLevels,
const Ice::LoggerPtr& logger) :
@@ -41,11 +50,11 @@ IceSSL::ConfigParserErrorReporter::warning(const SAXParseException& toCatch)
{
ostringstream s;
- s << "ssl configuration file parse error" << endl;
- s << DOMString(toCatch.getSystemId());
- s << ", line " << toCatch.getLineNumber();
- s << ", column " << toCatch.getColumnNumber() << endl;
- s << "Message " << DOMString(toCatch.getMessage()) << endl;
+ s << "ssl configuration file parse error" << endl
+ << toString(toCatch.getSystemId())
+ << ", line " << toCatch.getLineNumber()
+ << ", column " << toCatch.getColumnNumber() << endl
+ << "Message " << toString(toCatch.getMessage()) << endl;
_logger->trace(_traceLevels->securityCat, "PWN " + s.str());
}
@@ -56,11 +65,11 @@ IceSSL::ConfigParserErrorReporter::error(const SAXParseException& toCatch)
{
_errorCount++;
- _errors << "ssl configuration file parse error" << endl;
- _errors << " " << DOMString(toCatch.getSystemId());
- _errors << ", line " << toCatch.getLineNumber();
- _errors << ", column " << toCatch.getColumnNumber() << endl;
- _errors << " " << "Message " << DOMString(toCatch.getMessage()) << endl;
+ _errors << "ssl configuration file parse error" << endl
+ << " " << toString(toCatch.getSystemId())
+ << ", line " << toCatch.getLineNumber()
+ << ", column " << toCatch.getColumnNumber() << endl
+ << " " << "Message " << toString(toCatch.getMessage()) << endl;
}
void
@@ -68,11 +77,11 @@ IceSSL::ConfigParserErrorReporter::fatalError(const SAXParseException& toCatch)
{
_errorCount++;
- _errors << "ssl configuration file parse error" << endl;
- _errors << " " << DOMString(toCatch.getSystemId());
- _errors << ", line " << toCatch.getLineNumber();
- _errors << ", column " << toCatch.getColumnNumber() << endl;
- _errors << " " << "Message " << DOMString(toCatch.getMessage()) << endl;
+ _errors << "ssl configuration file parse error" << endl
+ << " " << toString(toCatch.getSystemId())
+ << ", line " << toCatch.getLineNumber()
+ << ", column " << toCatch.getColumnNumber() << endl
+ << " " << "Message " << toString(toCatch.getMessage()) << endl;
}
void
@@ -92,12 +101,3 @@ IceSSL::ConfigParserErrorReporter::getErrors() const
{
return _errors.str();
}
-
-std::ostream&
-IceSSL::operator << (std::ostream& target, const DOMString& s)
-{
- char *p = s.transcode();
- target << p;
- delete [] p;
- return target;
-}
diff --git a/cpp/src/IceSSL/ConfigParserErrorReporter.h b/cpp/src/IceSSL/ConfigParserErrorReporter.h
index cc6d02ed7d1..2d49844caf2 100644
--- a/cpp/src/IceSSL/ConfigParserErrorReporter.h
+++ b/cpp/src/IceSSL/ConfigParserErrorReporter.h
@@ -13,14 +13,14 @@
#include <Ice/LoggerF.h>
#include <IceSSL/TraceLevelsF.h>
-#include <util/XercesDefs.hpp>
-#include <dom/DOMString.hpp>
-#include <sax/ErrorHandler.hpp>
+
+//#include <xercesc/util/XercesDefs.hpp>
+#include <xercesc/sax/ErrorHandler.hpp>
namespace IceSSL
{
-class ConfigParserErrorReporter : public ErrorHandler, public IceUtil::Shared
+class ConfigParserErrorReporter : public ErrorHandler
{
public:
@@ -46,18 +46,6 @@ private:
int _errorCount;
};
-typedef IceInternal::Handle<ConfigParserErrorReporter> ConfigParserErrorReporterPtr;
-
-std::ostream& operator << (std::ostream& target, const DOMString& s);
-
-}
-
-namespace IceInternal
-{
-
-void incRef(::IceSSL::ConfigParserErrorReporter*);
-void decRef(::IceSSL::ConfigParserErrorReporter*);
-
}
#endif
diff --git a/cpp/src/IceSSL/icessl.dsp b/cpp/src/IceSSL/icessl.dsp
index d9d08ffd030..f663e9c462a 100644
--- a/cpp/src/IceSSL/icessl.dsp
+++ b/cpp/src/IceSSL/icessl.dsp
@@ -54,7 +54,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
-# ADD LINK32 ws2_32.lib libeay32.lib ssleay32.lib xerces-c_1.lib /nologo /dll /machine:I386 /out:"Release/icessl001.dll"
+# ADD LINK32 ws2_32.lib libeay32.lib ssleay32.lib xerces-c_2.lib /nologo /dll /machine:I386 /out:"Release/icessl001.dll"
# SUBTRACT LINK32 /pdb:none /debug /nodefaultlib
# Begin Special Build Tool
SOURCE="$(InputPath)"
@@ -86,7 +86,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 ws2_32.lib libeay32.lib ssleay32.lib xerces-c_1D.lib /nologo /dll /debug /machine:I386 /out:"Debug/icessl001d.dll" /pdbtype:sept
+# ADD LINK32 ws2_32.lib libeay32.lib ssleay32.lib xerces-c_2D.lib /nologo /dll /debug /machine:I386 /out:"Debug/icessl001d.dll" /pdbtype:sept
# SUBTRACT LINK32 /pdb:none /nodefaultlib
# Begin Special Build Tool
SOURCE="$(InputPath)"
diff --git a/cpp/src/IceStorm/Admin.cpp b/cpp/src/IceStorm/Admin.cpp
index c06a44b304b..a0bcd06acff 100644
--- a/cpp/src/IceStorm/Admin.cpp
+++ b/cpp/src/IceStorm/Admin.cpp
@@ -10,7 +10,7 @@
#include <Ice/Application.h>
#include <IceStorm/Parser.h>
-#include <util/PlatformUtils.hpp>
+#include <xercesc/util/PlatformUtils.hpp>
#include <fstream>
using namespace std;
diff --git a/cpp/src/IceStorm/WeightedGraph.cpp b/cpp/src/IceStorm/WeightedGraph.cpp
index ab7a0208e95..d27c7b4b704 100644
--- a/cpp/src/IceStorm/WeightedGraph.cpp
+++ b/cpp/src/IceStorm/WeightedGraph.cpp
@@ -9,8 +9,8 @@
// **********************************************************************
#include <IceStorm/WeightedGraph.h>
-#include <parsers/SAXParser.hpp>
-#include <sax/HandlerBase.hpp>
+#include <xercesc/parsers/SAXParser.hpp>
+#include <xercesc/sax/HandlerBase.hpp>
#include <map>
#include <list>
#include <iostream>
diff --git a/cpp/src/IceStorm/icestormC.dsp b/cpp/src/IceStorm/icestormC.dsp
index f856704d4c7..7fa3d181e32 100644
--- a/cpp/src/IceStorm/icestormC.dsp
+++ b/cpp/src/IceStorm/icestormC.dsp
@@ -51,7 +51,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 setargv.obj xerces-c_1.lib /nologo /subsystem:console /machine:I386 /out:"../../bin/icestormadmin.exe" /libpath:"../../../lib"
+# ADD LINK32 setargv.obj xerces-c_2.lib /nologo /subsystem:console /machine:I386 /out:"../../bin/icestormadmin.exe" /libpath:"../../../lib"
# SUBTRACT LINK32 /debug /nodefaultlib
!ELSEIF "$(CFG)" == "IceStormC - Win32 Debug"
@@ -77,7 +77,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 setargv.obj xerces-c_1D.lib /nologo /subsystem:console /debug /machine:I386 /out:"../../bin/icestormadmin.exe" /pdbtype:sept /libpath:"../../../lib"
+# ADD LINK32 setargv.obj xerces-c_2D.lib /nologo /subsystem:console /debug /machine:I386 /out:"../../bin/icestormadmin.exe" /pdbtype:sept /libpath:"../../../lib"
# SUBTRACT LINK32 /nodefaultlib
!ENDIF
diff --git a/cpp/src/IceXML/StreamI.cpp b/cpp/src/IceXML/StreamI.cpp
index fa474a535de..0dd8abaa73b 100644
--- a/cpp/src/IceXML/StreamI.cpp
+++ b/cpp/src/IceXML/StreamI.cpp
@@ -21,46 +21,43 @@
//
// For input streaming
//
-#include <framework/MemBufInputSource.hpp>
-#include <util/PlatformUtils.hpp>
-#include <util/XMLString.hpp>
-#include <util/XMLUniDefs.hpp>
-#include <framework/XMLFormatter.hpp>
-#include <util/TranscodingException.hpp>
+#include <xercesc/framework/MemBufInputSource.hpp>
+#include <xercesc/util/PlatformUtils.hpp>
+#include <xercesc/util/XMLString.hpp>
-#include <dom/DOM_DOMException.hpp>
-#include <parsers/DOMParser.hpp>
+#include <xercesc/dom/DOMException.hpp>
+#include <xercesc/parsers/XercesDOMParser.hpp>
-#include <dom/DOM_Node.hpp>
-#include <dom/DOM_NamedNodeMap.hpp>
+#include <xercesc/dom/DOMNode.hpp>
+#include <xercesc/dom/DOMNamedNodeMap.hpp>
-#include <sax/ErrorHandler.hpp>
-#include <sax/SAXParseException.hpp>
-#include <dom/DOMString.hpp>
+#include <xercesc/sax/ErrorHandler.hpp>
+#include <xercesc/sax/SAXParseException.hpp>
using namespace std;
using namespace IceXML;
using namespace IceUtil;
//
-// Utilities to make the usage of xerces easier.
+// Utility to make the usage of xerces easier.
//
static string
-toString(const DOMString& s)
-{
- char* t = s.transcode();
- string r(t);
- delete[] t;
- return r;
-}
-
-static string
toString(const XMLCh* s)
{
- char* t = XMLString::transcode(s);
- string r(t);
- delete[] t;
- return r;
+ //
+ // Some DOM Level 2 operations can return 0.
+ //
+ if(s)
+ {
+ char* t = XMLString::transcode(s);
+ string r(t);
+ delete[] t;
+ return r;
+ }
+ else
+ {
+ return string();
+ }
}
//
@@ -162,24 +159,23 @@ static XercesInitializer _xercesInitializer;
struct StreamInputImpl
{
StreamInputImpl() :
- source(0),
- parser(0),
- errReporter(0)
+ document(0)
{
}
+
~StreamInputImpl()
{
- delete parser;
- delete errReporter;
- delete source;
+ if(document)
+ {
+ document->release();
+ }
}
-
- InputSource* source;
- DOMParser* parser;
- DOMTreeErrorReporter* errReporter;
- DOM_Node current;
- list<DOM_Node> nodeStack;
+ DOMDocument* document;
+
+ DOMNode* current;
+
+ list<DOMNode*> nodeStack;
map<string, ::Ice::ObjectPtr> readObjects;
};
@@ -203,6 +199,7 @@ IceXML::StreamI::StreamI(const ::Ice::CommunicatorPtr& communicator, std::ostrea
IceXML::StreamI::StreamI(const ::Ice::CommunicatorPtr& communicator, std::istream& is, bool schema) :
_communicator(communicator),
+ _input(0),
_nextId(0),
_dump(false)
{
@@ -218,31 +215,24 @@ IceXML::StreamI::StreamI(const ::Ice::CommunicatorPtr& communicator, std::istrea
::Ice::LoggerPtr logger = communicator->getLogger();
- _input = new StreamInputImpl();
- _input->source = new MemBufInputSource((const XMLByte*)_content.data(), _content.size(), "inputsource");
-
//
// Create our parser, then attach an error handler to the parser.
// The parser will call back to methods of the ErrorHandler if it
// discovers errors during the course of parsing the XML
// document.
//
- _input->parser = new DOMParser;
- _input->parser->setValidationScheme(DOMParser::Val_Auto);
+ XercesDOMParser parser;
+ parser.setValidationScheme(AbstractDOMParser::Val_Auto);
if(schema)
{
- _input->parser->setDoNamespaces(true);
- _input->parser->setDoSchema(true);
+ parser.setDoNamespaces(true);
+ parser.setDoSchema(true);
}
- //_input->parser->setValidationSchemaFullChecking(true);
-
- _input->errReporter = new DOMTreeErrorReporter(logger);
- _input->parser->setErrorHandler(_input->errReporter);
- _input->parser->setCreateEntityReferenceNodes(false);
- _input->parser->setToCreateXMLDeclTypeNode(true);
+ //parser.setValidationSchemaFullChecking(true);
- // TODO:
- // parser->setEntityResolver
+ DOMTreeErrorReporter errReporter(logger);
+ parser.setErrorHandler(&errReporter);
+ parser.setCreateEntityReferenceNodes(false);
//
// Parse the XML file, catching any XML exceptions that might propagate
@@ -251,9 +241,9 @@ IceXML::StreamI::StreamI(const ::Ice::CommunicatorPtr& communicator, std::istrea
bool errorsOccured = false;
try
{
- _input->parser->parse(*_input->source);
- int errorCount = _input->parser->getErrorCount();
- if(errorCount > 0)
+ MemBufInputSource source((const XMLByte*)_content.data(), _content.size(), "inputsource");
+ parser.parse(source);
+ if(parser.getErrorCount() > 0)
{
errorsOccured = true;
}
@@ -265,7 +255,7 @@ IceXML::StreamI::StreamI(const ::Ice::CommunicatorPtr& communicator, std::istrea
logger->error(os.str());
errorsOccured = true;
}
- catch(const DOM_DOMException& ex)
+ catch(const DOMException& ex)
{
ostringstream os;
os << "xerces: DOM parsing error: " << toString(ex.msg);
@@ -275,7 +265,6 @@ IceXML::StreamI::StreamI(const ::Ice::CommunicatorPtr& communicator, std::istrea
if(errorsOccured)
{
- delete _input;
throw ::Ice::MarshalException(__FILE__, __LINE__);
}
@@ -283,8 +272,10 @@ IceXML::StreamI::StreamI(const ::Ice::CommunicatorPtr& communicator, std::istrea
// The first child of the document is the root node - ignore
// that. Move to the top-level node in the document content.
//
- _input->current = _input->parser->getDocument().getFirstChild();
- _input->current = _input->current.getFirstChild();
+ _input = new StreamInputImpl();
+ _input->document = parser.adoptDocument();
+ _input->current = _input->document->getFirstChild();
+ _input->current = _input->current->getFirstChild();
}
IceXML::StreamI::~StreamI()
@@ -323,7 +314,7 @@ IceXML::StreamI::startReadDictionary(const string& name)
{
startRead(name);
::Ice::Int size = readLength();
- _input->current = _input->current.getFirstChild();
+ _input->current = _input->current->getFirstChild();
return size;
}
@@ -337,7 +328,7 @@ void
IceXML::StreamI::startReadDictionaryElement()
{
startRead(getReadPrefix() + seqElementName);
- _input->current = _input->current.getFirstChild();
+ _input->current = _input->current->getFirstChild();
}
void
@@ -377,7 +368,7 @@ IceXML::StreamI::startReadSequence(const string& name)
{
startRead(name);
::Ice::Int size = readLength();
- _input->current = _input->current.getFirstChild();
+ _input->current = _input->current->getFirstChild();
return size;
}
@@ -415,7 +406,7 @@ void
IceXML::StreamI::startReadStruct(const string& name)
{
startRead(name);
- _input->current = _input->current.getFirstChild();
+ _input->current = _input->current->getFirstChild();
}
void
@@ -440,7 +431,7 @@ void
IceXML::StreamI::startReadException(const string& name)
{
startRead(name);
- _input->current = _input->current.getFirstChild();
+ _input->current = _input->current->getFirstChild();
}
void
@@ -465,13 +456,13 @@ IceXML::StreamI::readEnum(const string& name, const ::Ice::StringSeq& table)
{
startRead(name);
- DOM_Node child = _input->current.getFirstChild();
- if(child.isNull() || child.getNodeType() != DOM_Node::TEXT_NODE)
+ DOMNode* child = _input->current->getFirstChild();
+ if(child == 0 || child->getNodeType() != DOMNode::TEXT_NODE)
{
throw ::Ice::MarshalException(__FILE__, __LINE__);
}
- string value = toString(child.getNodeValue());
+ string value = toString(child->getNodeValue());
::Ice::StringSeq::const_iterator p = find(table.begin(), table.end(), value);
if(p == table.end())
{
@@ -513,13 +504,13 @@ IceXML::StreamI::readByte(const string& name)
{
startRead(name);
- DOM_Node child = _input->current.getFirstChild();
- if(child.isNull() || child.getNodeType() != DOM_Node::TEXT_NODE)
+ DOMNode* child = _input->current->getFirstChild();
+ if(child == 0 || child->getNodeType() != DOMNode::TEXT_NODE)
{
throw ::Ice::MarshalException(__FILE__, __LINE__);
}
- string s = toString(child.getNodeValue());
+ string s = toString(child->getNodeValue());
::Ice::Int i = atoi(s.c_str());
if(i < -127 || i > 128)
{
@@ -540,29 +531,29 @@ IceXML::StreamI::readByte(const string& name)
// ::Ice::Int size = readLength();
// value.resize(size);
// value_type::iterator p = value.begin();
-// DOM_NodeList children = _input->current.getChildNodes();
+// DOMNodeList* children = _input->current->getChildNodes();
//
-// int nchildren = children.getLength();
+// int nchildren = children->getLength();
// for(int i = 0; i < nchildren; ++i)
// {
-// DOM_Node child = children.item(i);
-// while(child.getNodeType() != DOM_Node::ELEMENT_NODE)
+// DOMNode* child = children->item(i);
+// while(child->getNodeType() != DOMNode::ELEMENT_NODE)
// {
-// child = child.getNextSibling();
+// child = child->getNextSibling();
// }
-// string name = toString(child.getNodeName());
+// string name = toString(child->getNodeName());
// if(name != seqElementName)
// {
// throw ::Ice::MarshalException(__FILE__, __LINE__);
// }
//
-// child = child.getFirstChild();
-// if(child.isNull() || child.getNodeType() != DOM_Node::TEXT_NODE)
+// child = child->getFirstChild();
+// if(child == 0 || child->getNodeType() != DOMNode::TEXT_NODE)
// {
// throw ::Ice::MarshalException(__FILE__, __LINE__);
// }
//
-// string s = toString(child.getNodeValue());
+// string s = toString(child->getNodeValue());
// *p++ = ???;
// }
//
@@ -583,7 +574,7 @@ IceXML::StreamI::readByteSeq(const string& name)
value.resize(size);
if(size > 0)
{
- _input->current = _input->current.getFirstChild();
+ _input->current = _input->current->getFirstChild();
for(int i = 0; i < size; ++i)
{
value[i] = readByte(elem);
@@ -600,7 +591,6 @@ IceXML::StreamI::writeBool(const string& name, bool value)
{
// No attributes
assert(name.find_first_of(" \t") == string::npos);
-
_os << se(name) << (value ? "true" : "false") << ee;
}
@@ -620,13 +610,13 @@ IceXML::StreamI::readBool(const string& name)
{
startRead(name);
- DOM_Node child = _input->current.getFirstChild();
- if(child.isNull() || child.getNodeType() != DOM_Node::TEXT_NODE)
+ DOMNode* child = _input->current->getFirstChild();
+ if(child == 0 || child->getNodeType() != DOMNode::TEXT_NODE)
{
throw ::Ice::MarshalException(__FILE__, __LINE__);
}
- string s = toString(child.getNodeValue());
+ string s = toString(child->getNodeValue());
endRead();
@@ -645,7 +635,7 @@ IceXML::StreamI::readBoolSeq(const string& name)
value.resize(size);
if(size > 0)
{
- _input->current = _input->current.getFirstChild();
+ _input->current = _input->current->getFirstChild();
for(int i = 0; i < size; ++i)
{
value[i] = readBool(elem);
@@ -662,7 +652,6 @@ IceXML::StreamI::writeShort(const string& name, ::Ice::Short value)
{
// No attributes
assert(name.find_first_of(" \t") == string::npos);
-
_os << se(name) << value << ee;
}
@@ -682,13 +671,13 @@ IceXML::StreamI::readShort(const string& name)
{
startRead(name);
- DOM_Node child = _input->current.getFirstChild();
- if(child.isNull() || child.getNodeType() != DOM_Node::TEXT_NODE)
+ DOMNode* child = _input->current->getFirstChild();
+ if(child == 0 || child->getNodeType() != DOMNode::TEXT_NODE)
{
throw ::Ice::MarshalException(__FILE__, __LINE__);
}
- string s = toString(child.getNodeValue());
+ string s = toString(child->getNodeValue());
::Ice::Int i = atoi(s.c_str());
if(i < -32767 || i > 32768)
{
@@ -712,7 +701,7 @@ IceXML::StreamI::readShortSeq(const string& name)
value.resize(size);
if(size > 0)
{
- _input->current = _input->current.getFirstChild();
+ _input->current = _input->current->getFirstChild();
for(int i = 0; i < size; ++i)
{
value[i] = readShort(elem);
@@ -748,13 +737,13 @@ IceXML::StreamI::readInt(const string& name)
{
startRead(name);
- DOM_Node child = _input->current.getFirstChild();
- if(child.isNull() || child.getNodeType() != DOM_Node::TEXT_NODE)
+ DOMNode* child = _input->current->getFirstChild();
+ if(child == 0 || child->getNodeType() != DOMNode::TEXT_NODE)
{
throw ::Ice::MarshalException(__FILE__, __LINE__);
}
- string s = toString(child.getNodeValue());
+ string s = toString(child->getNodeValue());
endRead();
@@ -773,7 +762,7 @@ IceXML::StreamI::readIntSeq(const string& name)
value.resize(size);
if(size > 0)
{
- _input->current = _input->current.getFirstChild();
+ _input->current = _input->current->getFirstChild();
for(int i = 0; i < size; ++i)
{
value[i] = readInt(elem);
@@ -809,13 +798,13 @@ IceXML::StreamI::readLong(const string& name)
{
startRead(name);
- DOM_Node child = _input->current.getFirstChild();
- if(child.isNull() || child.getNodeType() != DOM_Node::TEXT_NODE)
+ DOMNode* child = _input->current->getFirstChild();
+ if(child == 0 || child->getNodeType() != DOMNode::TEXT_NODE)
{
throw ::Ice::MarshalException(__FILE__, __LINE__);
}
- string s = toString(child.getNodeValue());
+ string s = toString(child->getNodeValue());
endRead();
@@ -834,7 +823,7 @@ IceXML::StreamI::readLongSeq(const string& name)
value.resize(size);
if(size > 0)
{
- _input->current = _input->current.getFirstChild();
+ _input->current = _input->current->getFirstChild();
for(int i = 0; i < size; ++i)
{
value[i] = readLong(elem);
@@ -870,13 +859,13 @@ IceXML::StreamI::readFloat(const string& name)
{
startRead(name);
- DOM_Node child = _input->current.getFirstChild();
- if(child.isNull() || child.getNodeType() != DOM_Node::TEXT_NODE)
+ DOMNode* child = _input->current->getFirstChild();
+ if(child == 0 || child->getNodeType() != DOMNode::TEXT_NODE)
{
throw ::Ice::MarshalException(__FILE__, __LINE__);
}
- string s = toString(child.getNodeValue());
+ string s = toString(child->getNodeValue());
endRead();
@@ -895,7 +884,7 @@ IceXML::StreamI::readFloatSeq(const string& name)
value.resize(size);
if(size > 0)
{
- _input->current = _input->current.getFirstChild();
+ _input->current = _input->current->getFirstChild();
for(int i = 0; i < size; ++i)
{
value[i] = readFloat(elem);
@@ -931,13 +920,13 @@ IceXML::StreamI::readDouble(const string& name)
{
startRead(name);
- DOM_Node child = _input->current.getFirstChild();
- if(child.isNull() || child.getNodeType() != DOM_Node::TEXT_NODE)
+ DOMNode* child = _input->current->getFirstChild();
+ if(child == 0 || child->getNodeType() != DOMNode::TEXT_NODE)
{
throw ::Ice::MarshalException(__FILE__, __LINE__);
}
- string s = toString(child.getNodeValue());
+ string s = toString(child->getNodeValue());
endRead();
@@ -956,7 +945,7 @@ IceXML::StreamI::readDoubleSeq(const string& name)
value.resize(size);
if(size > 0)
{
- _input->current = _input->current.getFirstChild();
+ _input->current = _input->current->getFirstChild();
for(int i = 0; i < size; ++i)
{
value[i] = readDouble(elem);
@@ -999,14 +988,14 @@ IceXML::StreamI::readString(const string& name)
startRead(name);
- DOM_Node child = _input->current.getFirstChild();
- if(!child.isNull())
+ DOMNode* child = _input->current->getFirstChild();
+ if(child)
{
- if(child.getNodeType() != DOM_Node::TEXT_NODE)
+ if(child->getNodeType() != DOMNode::TEXT_NODE)
{
throw ::Ice::MarshalException(__FILE__, __LINE__);
}
- value = toString(child.getNodeValue());
+ value = toString(child->getNodeValue());
}
else
{
@@ -1031,7 +1020,7 @@ IceXML::StreamI::readStringSeq(const string& name)
value.resize(size);
if(size > 0)
{
- _input->current = _input->current.getFirstChild();
+ _input->current = _input->current->getFirstChild();
for(int i = 0; i < size; ++i)
{
value[i] = readString(elem);
@@ -1060,15 +1049,15 @@ IceXML::StreamI::readProxy(const string& name)
{
startRead(name);
- DOM_Node child = _input->current.getFirstChild();
+ DOMNode* child = _input->current->getFirstChild();
string s;
- if(!child.isNull())
+ if(child)
{
- if(child.getNodeType() != DOM_Node::TEXT_NODE)
+ if(child->getNodeType() != DOMNode::TEXT_NODE)
{
throw ::Ice::MarshalException(__FILE__, __LINE__);
}
- s = toString(child.getNodeValue());
+ s = toString(child->getNodeValue());
}
endRead();
@@ -1147,11 +1136,11 @@ IceXML::StreamI::readObject(const string& name, const string& signatureType, con
// The first child of the document is the root node - ignore
// that. Move to the top-level node in the document content.
//
- _input->current = _input->parser->getDocument().getFirstChild();
- _input->current = _input->current.getFirstChild();
- while(!_input->current.isNull())
+ _input->current = _input->document->getFirstChild();
+ _input->current = _input->current->getFirstChild();
+ while(_input->current)
{
- if(_input->current.getNodeType() == DOM_Node::ELEMENT_NODE)
+ if(_input->current->getNodeType() == DOMNode::ELEMENT_NODE)
{
string dummy;
readAttributes(id, type, dummy);
@@ -1160,12 +1149,12 @@ IceXML::StreamI::readObject(const string& name, const string& signatureType, con
break;
}
}
- _input->current = _input->current.getNextSibling();
+ _input->current = _input->current->getNextSibling();
}
//
// If the object isn't found, that's an error.
//
- if(_input->current.isNull())
+ if(_input->current == 0)
{
throw ::Ice::MarshalException(__FILE__, __LINE__);
}
@@ -1219,7 +1208,7 @@ IceXML::StreamI::readObject(const string& name, const string& signatureType, con
// child node & unmarshal the object.
//
_input->readObjects.insert(map<string, ::Ice::ObjectPtr>::value_type(id, value));
- _input->current = _input->current.getFirstChild();
+ _input->current = _input->current->getFirstChild();
value->__unmarshal(this);
}
@@ -1251,38 +1240,19 @@ IceXML::StreamI::endWrite()
void
IceXML::StreamI::startRead(const ::std::string& element)
{
- while(!_input->current.isNull() && _input->current.getNodeType() != DOM_Node::ELEMENT_NODE)
+ while(_input->current && _input->current->getNodeType() != DOMNode::ELEMENT_NODE)
{
- _input->current = _input->current.getNextSibling();
+ _input->current = _input->current->getNextSibling();
}
- if(_input->current.isNull())
+ if(_input->current == 0)
{
throw ::Ice::MarshalException(__FILE__, __LINE__);
}
- string nodeName = toString(_input->current.getNodeName());
+ string nodeName = toString(_input->current->getNodeName());
if(element != nodeName)
{
- //
- // TODO: Work around for bug in xerces. Specifically, when schema
- // validation is enabled, the namespace prefix is always empty.
- // In this case, we compare only the local names, but only if the
- // prefix is empty.
- //
- string::size_type pos = element.find(':');
- if(pos != string::npos)
- {
- string localName = toString(_input->current.getLocalName());
- string prefix = toString(_input->current.getPrefix());
- if(!prefix.empty() || pos + 1 == element.size() || localName != element.substr(pos + 1))
- {
- throw ::Ice::MarshalException(__FILE__, __LINE__);
- }
- }
- else
- {
- throw ::Ice::MarshalException(__FILE__, __LINE__);
- }
+ throw ::Ice::MarshalException(__FILE__, __LINE__);
}
_input->nodeStack.push_back(_input->current);
@@ -1293,7 +1263,7 @@ IceXML::StreamI::endRead()
{
_input->current = _input->nodeStack.back();
_input->nodeStack.pop_back();
- _input->current = _input->current.getNextSibling();
+ _input->current = _input->current->getNextSibling();
}
void
@@ -1396,23 +1366,23 @@ IceXML::StreamI::readAttributes(::std::string& id, ::std::string& type, ::std::s
static const string typeStr("type");
static const string hrefStr("href");
- DOM_NamedNodeMap attributes = _input->current.getAttributes();
- int attrCount = attributes.getLength();
+ DOMNamedNodeMap* attributes = _input->current->getAttributes();
+ int attrCount = attributes->getLength();
for(int i = 0; i < attrCount; i++)
{
- DOM_Node attribute = attributes.item(i);
- string name = toString(attribute.getNodeName());
+ DOMNode* attribute = attributes->item(i);
+ string name = toString(attribute->getNodeName());
if(name == idStr)
{
- id = toString(attribute.getNodeValue());
+ id = toString(attribute->getNodeValue());
}
else if(name == typeStr)
{
- type = toString(attribute.getNodeValue());
+ type = toString(attribute->getNodeValue());
}
else if(name == hrefStr)
{
- href = toString(attribute.getNodeValue());
+ href = toString(attribute->getNodeValue());
}
}
}
@@ -1422,15 +1392,15 @@ IceXML::StreamI::readLength()
{
static const string lengthStr("length");
- DOM_NamedNodeMap attributes = _input->current.getAttributes();
- int attrCount = attributes.getLength();
+ DOMNamedNodeMap* attributes = _input->current->getAttributes();
+ int attrCount = attributes->getLength();
for(int i = 0; i < attrCount; i++)
{
- DOM_Node attribute = attributes.item(i);
- string name = toString(attribute.getNodeName());
+ DOMNode* attribute = attributes->item(i);
+ string name = toString(attribute->getNodeName());
if(name == lengthStr)
{
- return atoi(toString(attribute.getNodeValue()).c_str());
+ return atoi(toString(attribute->getNodeValue()).c_str());
}
}
@@ -1449,7 +1419,7 @@ string
IceXML::StreamI::getReadPrefix() const
{
assert(!_input->nodeStack.empty());
- return getPrefix(toString(_input->nodeStack.back().getNodeName()));
+ return getPrefix(toString(_input->nodeStack.back()->getNodeName()));
}
string
diff --git a/cpp/src/IceXML/icexml.dsp b/cpp/src/IceXML/icexml.dsp
index 54823d8513b..7f9ba03fabe 100644
--- a/cpp/src/IceXML/icexml.dsp
+++ b/cpp/src/IceXML/icexml.dsp
@@ -54,7 +54,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
-# ADD LINK32 xerces-c_1.lib /nologo /dll /machine:I386 /out:"Release/icexml001.dll"
+# ADD LINK32 xerces-c_2.lib /nologo /dll /machine:I386 /out:"Release/icexml001.dll"
# SUBTRACT LINK32 /pdb:none /debug /nodefaultlib
# Begin Special Build Tool
SOURCE="$(InputPath)"
@@ -86,7 +86,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 xerces-c_1D.lib /nologo /dll /debug /machine:I386 /out:"Debug/icexml001d.dll" /pdbtype:sept
+# ADD LINK32 xerces-c_2D.lib /nologo /dll /debug /machine:I386 /out:"Debug/icexml001d.dll" /pdbtype:sept
# SUBTRACT LINK32 /pdb:none /nodefaultlib
# Begin Special Build Tool
SOURCE="$(InputPath)"
diff --git a/cpp/src/XMLTransform/ErrorReporter.cpp b/cpp/src/XMLTransform/ErrorReporter.cpp
index 186a5ab8095..c4fda858aba 100644
--- a/cpp/src/XMLTransform/ErrorReporter.cpp
+++ b/cpp/src/XMLTransform/ErrorReporter.cpp
@@ -24,10 +24,10 @@ void
DOMTreeErrorReporter::warning(const SAXParseException& ex)
{
ostringstream out;
- out << "Warning at file \"" << toString(DOMString(ex.getSystemId()))
+ out << "Warning at file \"" << toString(ex.getSystemId())
<< "\", line " << ex.getLineNumber()
<< ", column " << ex.getColumnNumber()
- << "\n Message: " << toString(DOMString(ex.getMessage())) << "\n";
+ << "\n Message: " << toString(ex.getMessage()) << "\n";
_errors.append(out.str());
}
@@ -35,10 +35,10 @@ void
DOMTreeErrorReporter::error(const SAXParseException& ex)
{
ostringstream out;
- out << "Error at file \"" << toString(DOMString(ex.getSystemId()))
+ out << "Error at file \"" << toString(ex.getSystemId())
<< "\", line " << ex.getLineNumber()
<< ", column " << ex.getColumnNumber()
- << "\n Message: " << toString(DOMString(ex.getMessage())) << "\n";
+ << "\n Message: " << toString(ex.getMessage()) << "\n";
_errors.append(out.str());
}
@@ -46,10 +46,10 @@ void
DOMTreeErrorReporter::fatalError(const SAXParseException& ex)
{
ostringstream out;
- out << "Fatal at file \"" << toString(DOMString(ex.getSystemId()))
+ out << "Fatal at file \"" << toString(ex.getSystemId())
<< "\", line " << ex.getLineNumber()
<< ", column " << ex.getColumnNumber()
- << "\n Message: " << toString(DOMString(ex.getMessage())) << "\n";
+ << "\n Message: " << toString(ex.getMessage()) << "\n";
_errors.append(out.str());
}
@@ -72,9 +72,9 @@ DOMTreeErrorReporter::getErrors() const
}
string
-DOMTreeErrorReporter::toString(const DOMString& s)
+DOMTreeErrorReporter::toString(const XMLCh* s)
{
- char* t = s.transcode();
+ char* t = XMLString::transcode(s);
string r(t);
delete[] t;
return r;
diff --git a/cpp/src/XMLTransform/ErrorReporter.h b/cpp/src/XMLTransform/ErrorReporter.h
index 8f65786c864..91f0946f489 100644
--- a/cpp/src/XMLTransform/ErrorReporter.h
+++ b/cpp/src/XMLTransform/ErrorReporter.h
@@ -11,9 +11,8 @@
#ifndef ERROR_REPORTER_H
#define ERROR_REPORTER_H
-#include <sax/ErrorHandler.hpp>
-#include <sax/SAXParseException.hpp>
-#include <dom/DOMString.hpp>
+#include <xercesc/sax/ErrorHandler.hpp>
+#include <xercesc/sax/SAXParseException.hpp>
#include <string>
@@ -42,7 +41,7 @@ private:
::std::string _errors;
- ::std::string toString(const DOMString&);
+ ::std::string toString(const XMLCh*);
};
}
diff --git a/cpp/src/XMLTransform/XMLTransform.cpp b/cpp/src/XMLTransform/XMLTransform.cpp
index f200bf9286b..32e26f71743 100644
--- a/cpp/src/XMLTransform/XMLTransform.cpp
+++ b/cpp/src/XMLTransform/XMLTransform.cpp
@@ -13,16 +13,13 @@
#include <XMLTransform/ErrorReporter.h>
#include <Freeze/DB.h>
-#include <util/PlatformUtils.hpp>
-#include <util/XMLString.hpp>
-#include <util/XMLUniDefs.hpp>
-#include <util/TranscodingException.hpp>
-#include <framework/MemBufInputSource.hpp>
-#include <framework/XMLFormatter.hpp>
-#include <dom/DOMString.hpp>
-#include <dom/DOM.hpp>
-#include <parsers/DOMParser.hpp>
-#include <sax/SAXParseException.hpp>
+#include <xercesc/util/PlatformUtils.hpp>
+#include <xercesc/util/XMLString.hpp>
+#include <xercesc/util/Janitor.hpp>
+#include <xercesc/framework/MemBufInputSource.hpp>
+#include <xercesc/dom/DOM.hpp>
+#include <xercesc/parsers/XercesDOMParser.hpp>
+#include <xercesc/sax/SAXParseException.hpp>
#include <sys/stat.h>
@@ -187,60 +184,72 @@ XMLTransform::TransformException::ice_throw() const
// Helper to convert a DOMString to a native string.
//
static string
-toString(const DOMString& s)
+toString(const XMLCh* s)
{
- char* t = s.transcode();
- string r(t);
- delete[] t;
- return r;
+ //
+ // Some DOM Level 2 operations can return 0.
+ //
+ if(s)
+ {
+ char* t = XMLString::transcode(s);
+ string r(t);
+ delete[] t;
+ return r;
+ }
+ else
+ {
+ return string();
+ }
}
//
// Helpers for finding named child nodes.
//
-static DOM_Node
-findChild(const DOM_Node& parent, const string& namespaceURI, const string& localname)
+static DOMNode*
+findChild(DOMNode* parent, const string& namespaceURI, const string& localname)
{
- DOM_NodeList children = parent.getChildNodes();
- for(unsigned int i = 0; i < children.getLength(); ++i)
+ DOMNodeList* children = parent->getChildNodes();
+ for(unsigned int i = 0; i < children->getLength(); ++i)
{
- DOM_Node child = children.item(i);
- if(toString(child.getNamespaceURI()) == namespaceURI && toString(child.getLocalName()) == localname)
+ DOMNode* child = children->item(i);
+ if(toString(child->getNamespaceURI()) == namespaceURI && toString(child->getLocalName()) == localname)
{
return child;
}
}
- return DOM_Node();
+ return 0;
}
-static DOM_Node
-findChild(const DOM_Node& parent, const string& name)
+static DOMNode*
+findChild(DOMNode* parent, const string& name)
{
- DOM_NodeList children = parent.getChildNodes();
- for(unsigned int i = 0; i < children.getLength(); ++i)
+ DOMNodeList* children = parent->getChildNodes();
+ for(unsigned int i = 0; i < children->getLength(); ++i)
{
- DOM_Node child = children.item(i);
- if(toString(child.getNodeName()) == name)
+ DOMNode* child = children->item(i);
+ if(toString(child->getNodeName()) == name)
{
return child;
}
}
- return DOM_Node();
+
+ return 0;
}
//
// Helpers to retrieve a named attribute.
//
static string
-getAttributeByName(const DOM_Node& node, const string& name)
+getAttributeByName(DOMNode* node, const string& name)
{
- DOM_NamedNodeMap attributes = node.getAttributes();
+ DOMNamedNodeMap* attributes = node->getAttributes();
string value;
- DOM_Node n = attributes.getNamedItem(DOMString(name.c_str()));
- if(!n.isNull())
+ ArrayJanitor<XMLCh> s(XMLString::transcode(name.c_str()));
+ DOMNode* n = attributes->getNamedItem(s.get());
+ if(n)
{
- value = toString(n.getNodeValue());
+ value = toString(n->getNodeValue());
}
return value;
@@ -250,14 +259,14 @@ getAttributeByName(const DOM_Node& node, const string& name)
// Helpers for specific attributes.
//
static string
-getTypeAttribute(const DOM_Node& node)
+getTypeAttribute(DOMNode* node)
{
static const string typeName = "type";
return getAttributeByName(node, typeName);
}
static string
-getNameAttribute(const DOM_Node& node)
+getNameAttribute(DOMNode* node)
{
static const string nameName = "name";
return getAttributeByName(node, nameName);
@@ -292,7 +301,6 @@ findFile(const string& name, const Ice::StringSeq& paths)
return name;
}
-
//
// DocumentMap. This maps namespace uri -> a set of documents.
//
@@ -302,20 +310,21 @@ typedef multimap< string, DocumentInfoPtr> DocumentMap;
// Document info holds the DOM root of the document, a map of prefix to namespace URI & the documents
// targetNamespace.
//
-XMLTransform::DocumentInfo::DocumentInfo(const DOM_Document& document, const DOM_Node& root,
+XMLTransform::DocumentInfo::DocumentInfo(DOMDocument* document, bool releaseDocument, DOMNode* root,
const string& targetNamespace) :
_document(document),
+ _releaseDocument(releaseDocument),
_targetNamespace(targetNamespace)
{
static const string targetNamespaceAttrName = "targetNamespace";
static const string xmlnsAttrName = "xmlns";
- DOM_NamedNodeMap attributes = root.getAttributes();
- unsigned int max = attributes.getLength();
+ DOMNamedNodeMap* attributes = root->getAttributes();
+ unsigned int max = attributes->getLength();
for(unsigned int i = 0; i < max; ++i)
{
- DOM_Node attribute = attributes.item(i);
- string attrName = toString(attribute.getNodeName());
+ DOMNode* attribute = attributes->item(i);
+ string attrName = toString(attribute->getNodeName());
if(attrName.substr(0, 5) == xmlnsAttrName)
{
string ns;
@@ -323,17 +332,25 @@ XMLTransform::DocumentInfo::DocumentInfo(const DOM_Document& document, const DOM
{
ns = attrName.substr(6);
}
- string uri = toString(attribute.getNodeValue());
+ string uri = toString(attribute->getNodeValue());
_nsMap.insert(make_pair(ns, uri));
}
else if(attrName == targetNamespaceAttrName)
{
- _targetNamespace = toString(attribute.getNodeValue());
+ _targetNamespace = toString(attribute->getNodeValue());
}
}
}
-DOM_Document
+XMLTransform::DocumentInfo::~DocumentInfo()
+{
+ if(_releaseDocument)
+ {
+ _document->release();
+ }
+}
+
+DOMDocument*
XMLTransform::DocumentInfo::getDocument() const
{
return _document;
@@ -428,31 +445,31 @@ XMLTransform::Transform::~Transform()
}
static ::IceUtil::XMLOutput&
-operator<<(::IceUtil::XMLOutput& os, const DOM_Node& node)
+operator<<(::IceUtil::XMLOutput& os, DOMNode* node)
{
- switch(node.getNodeType())
+ switch(node->getNodeType())
{
- case DOM_Node::TEXT_NODE:
+ case DOMNode::TEXT_NODE:
{
- os << ::IceUtil::startEscapes << toString(node.getNodeValue()) << ::IceUtil::endEscapes;
+ os << ::IceUtil::startEscapes << toString(node->getNodeValue()) << ::IceUtil::endEscapes;
break;
}
- case DOM_Node::ELEMENT_NODE:
+ case DOMNode::ELEMENT_NODE:
{
- os << ::IceUtil::se(toString(node.getNodeName()));
- DOM_NamedNodeMap attributes = node.getAttributes();
- for(unsigned int i = 0; i < attributes.getLength(); ++i)
+ os << ::IceUtil::se(toString(node->getNodeName()));
+ DOMNamedNodeMap* attributes = node->getAttributes();
+ for(unsigned int i = 0; i < attributes->getLength(); ++i)
{
- DOM_Node attribute = attributes.item(i);
- os << ::IceUtil::attr(toString(attribute.getNodeName()), toString(attribute.getNodeValue()));
+ DOMNode* attribute = attributes->item(i);
+ os << ::IceUtil::attr(toString(attribute->getNodeName()), toString(attribute->getNodeValue()));
}
- DOM_Node child = node.getFirstChild();
- while(!child.isNull())
+ DOMNode* child = node->getFirstChild();
+ while(child)
{
os << child;
- child = child.getNextSibling();
+ child = child->getNextSibling();
}
os << ::IceUtil::ee;
@@ -480,9 +497,9 @@ public:
}
virtual void
- transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr&, const string&, const DOM_Node& node)
+ transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr&, const string&, DOMNode* node)
{
- if(node.isNull())
+ if(node == 0)
{
throw SchemaViolation(__FILE__, __LINE__);
}
@@ -514,7 +531,7 @@ public:
}
virtual void
- transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr&, const string&, const DOM_Node& node)
+ transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr&, const string&, DOMNode*)
{
}
@@ -543,7 +560,7 @@ public:
}
virtual void
- transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr& info, const string&, const DOM_Node& node)
+ transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr& info, const string&, DOMNode* node)
{
_transform->transform(os, info, _name, node);
}
@@ -583,19 +600,19 @@ public:
}
virtual void
- transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr&, const string&, const DOM_Node& node)
+ transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr&, const string&, DOMNode* node)
{
- if(node.isNull())
+ if(node == 0)
{
throw SchemaViolation(__FILE__, __LINE__);
}
- DOM_Node child = node.getFirstChild();
- if(child.isNull() || child.getNodeType() != DOM_Node::TEXT_NODE)
+ DOMNode* child = node->getFirstChild();
+ if(child == 0 || child->getNodeType() != DOMNode::TEXT_NODE)
{
throw SchemaViolation(__FILE__, __LINE__);
}
- string value = toString(child.getNodeValue());
+ string value = toString(child->getNodeValue());
if(find(_values.begin(), _values.end(), value) == _values.end())
{
throw IllegalTransform(__FILE__, __LINE__);
@@ -631,19 +648,19 @@ public:
}
virtual void
- transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr&, const string&, const DOM_Node& node)
+ transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr&, const string&, DOMNode* node)
{
- if(node.isNull())
+ if(node == 0)
{
throw SchemaViolation(__FILE__, __LINE__);
}
- DOM_Node child = node.getFirstChild();
- if(child.isNull() || child.getNodeType() != DOM_Node::TEXT_NODE)
+ DOMNode* child = node->getFirstChild();
+ if(child == 0 || child->getNodeType() != DOMNode::TEXT_NODE)
{
throw SchemaViolation(__FILE__, __LINE__);
}
- string value = toString(child.getNodeValue());
+ string value = toString(child->getNodeValue());
#ifdef WIN32
Ice::Long v = _atoi64(value.c_str());
#else
@@ -705,15 +722,15 @@ public:
}
virtual void
- transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr&, const string&, const DOM_Node& node)
+ transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr&, const string&, DOMNode* node)
{
- if(node.isNull())
+ if(node == 0)
{
throw SchemaViolation(__FILE__, __LINE__);
}
- DOM_Node child = node.getFirstChild();
- if(child.isNull() || child.getNodeType() != DOM_Node::TEXT_NODE)
+ DOMNode* child = node->getFirstChild();
+ if(child == 0 || child->getNodeType() != DOMNode::TEXT_NODE)
{
throw SchemaViolation(__FILE__, __LINE__);
}
@@ -748,13 +765,13 @@ public:
}
virtual void
- transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr& info, const string&, const DOM_Node& node)
+ transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr& info, const string&, DOMNode* node)
{
- if(node.isNull())
+ if(node == 0)
{
throw SchemaViolation(__FILE__, __LINE__);
}
- string name = toString(node.getNodeName());
+ string name = toString(node->getNodeName());
os << ::IceUtil::se(name);
string length = getAttributeByName(node, "length");
@@ -762,17 +779,17 @@ public:
long l = atol(length.c_str());
- DOM_NodeList children = node.getChildNodes();
- for(unsigned int i = 0; i < children.getLength(); ++i)
+ DOMNodeList* children = node->getChildNodes();
+ for(unsigned int i = 0; i < children->getLength(); ++i)
{
- DOM_Node child = children.item(i);
- if(child.getNodeType() != DOM_Node::ELEMENT_NODE)
+ DOMNode* child = children->item(i);
+ if(child->getNodeType() != DOMNode::ELEMENT_NODE)
{
continue;
}
static const string sequenceElementName = "e";
- string nodeName = toString(child.getLocalName());
+ string nodeName = toString(child->getLocalName());
if(l == 0 || nodeName != sequenceElementName)
{
throw SchemaViolation(__FILE__, __LINE__);
@@ -824,24 +841,23 @@ public:
}
virtual void
- transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr& info, const string&, const DOM_Node& node)
+ transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr& info, const string&, DOMNode* node)
{
- if(node.isNull())
+ if(node == 0)
{
throw SchemaViolation(__FILE__, __LINE__);
}
- os << ::IceUtil::se(toString(node.getNodeName()));
- DOM_NamedNodeMap attributes = node.getAttributes();
- for(unsigned int i = 0; i < attributes.getLength(); ++i)
+ os << ::IceUtil::se(toString(node->getNodeName()));
+ DOMNamedNodeMap* attributes = node->getAttributes();
+ for(unsigned int i = 0; i < attributes->getLength(); ++i)
{
- DOM_Node attribute = attributes.item(i);
- os << ::IceUtil::attr(toString(attribute.getNodeName()), toString(attribute.getNodeValue()));
+ DOMNode* attribute = attributes->item(i);
+ os << ::IceUtil::attr(toString(attribute->getNodeName()), toString(attribute->getNodeValue()));
}
- DOM_NodeList children = node.getChildNodes();
for(vector<ElementTransformPtr>::const_iterator p = _transforms.begin(); p != _transforms.end(); ++p)
{
- DOM_Node child = findChild(node, (*p)->namespaceURI(), (*p)->name());
+ DOMNode* child = findChild(node, (*p)->namespaceURI(), (*p)->name());
(*p)->transform(os, info, (*p)->name(), child);
}
@@ -882,7 +898,7 @@ public:
}
virtual void
- transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr& info, const string& name, const DOM_Node& node)
+ transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr& info, const string& name, DOMNode* node)
{
//
// First check for the "href" attribute, which indicates a
@@ -951,11 +967,11 @@ public:
}
virtual void
- transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr& info, const string& name, const DOM_Node& node)
+ transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr& info, const string& name, DOMNode* node)
{
os << ::IceUtil::se(name);
- DOM_Node child; // Nil
+ DOMNode* child = 0; // Nil
for(vector<ElementTransformPtr>::const_iterator p = _transforms.begin(); p != _transforms.end(); ++p)
{
@@ -997,7 +1013,7 @@ public:
}
virtual void
- transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr&, const string& name, const DOM_Node&)
+ transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr&, const string& name, DOMNode*)
{
os << ::IceUtil::se(name);
os << ::IceUtil::startEscapes << _s << ::IceUtil::endEscapes;
@@ -1032,7 +1048,7 @@ public:
}
virtual void
- transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr&, const string& name, const DOM_Node&)
+ transform(::IceUtil::XMLOutput& os, const DocumentInfoPtr&, const string& name, DOMNode*)
{
os << ::IceUtil::se(name);
os << ::IceUtil::attr(_attrName, _attrValue);
@@ -1066,7 +1082,7 @@ public:
TransformFactory(const Ice::StringSeq&);
~TransformFactory();
- void create(const DOM_Document&, const DOM_Document&, TransformMap*, TransformMap*);
+ void create(DOMDocument*, DOMDocument*, TransformMap*, TransformMap*);
private:
@@ -1091,21 +1107,21 @@ private:
// Schema import handling.
//
void import(DocumentMap&, const string&, const string&);
- void processImport(const DOM_Document&, DocumentMap&);
+ void processImport(DOMDocument*, DocumentMap&);
//
// Element processing.
//
- void processElements(const DocumentInfoPtr& info);
+ void processElements(const DocumentInfoPtr&);
//
// Type searching primitives.
//
- bool findTypeInDocument(const DOM_Document& doc, const string& local, DOM_Node&);
- bool findType(const DocumentMap&, const DocumentInfoPtr&, const string&, DOM_Node&, DocumentInfoPtr&);
+ bool findTypeInDocument(DOMDocument*, const string&, DOMNode*&);
+ bool findType(const DocumentMap&, const DocumentInfoPtr&, const string&, DOMNode*&, DocumentInfoPtr&);
- Type getType(const DOM_Node&);
- Type getTypeByName(const DocumentMap&, const DocumentInfoPtr&, const string&, DOM_Node&, DocumentInfoPtr&);
+ Type getType(DOMNode*);
+ Type getTypeByName(const DocumentMap&, const DocumentInfoPtr&, const string&, DOMNode*&, DocumentInfoPtr&);
//
// Top-level transform creation routine.
@@ -1116,18 +1132,18 @@ private:
//
// Subsequent creation routines.
//
- TransformPtr createComplexTypeTransform(const DOM_Node&, const DOM_Node&);
- TransformPtr createSimpleTypeTransform(const DOM_Node&, const DOM_Node&);
+ TransformPtr createComplexTypeTransform(DOMNode*, DOMNode*);
+ TransformPtr createSimpleTypeTransform(DOMNode*, DOMNode*);
- TransformPtr createStaticClassTransform(const DOM_Node&, const DOM_Node&);
- void createEnumValues(const DOM_Node&, vector< string>&);
- TransformPtr createEnumerationTransform(const DOM_Node&);
+ TransformPtr createStaticClassTransform(DOMNode*, DOMNode*);
+ void createEnumValues(DOMNode*, vector< string>&);
+ TransformPtr createEnumerationTransform(DOMNode*);
- void createSequenceElementTransform(const DocumentInfoPtr&, const DOM_Node&,
- const DocumentInfoPtr&, const DOM_Node&,
+ void createSequenceElementTransform(const DocumentInfoPtr&, DOMNode*,
+ const DocumentInfoPtr&, DOMNode*,
vector<ElementTransformPtr>&);
- void createClassContentTransform(const DocumentInfoPtr&, const DOM_Node&,
- const DocumentInfoPtr&, const DOM_Node&,
+ void createClassContentTransform(const DocumentInfoPtr&, DOMNode*,
+ const DocumentInfoPtr&, DOMNode*,
vector<ElementTransformPtr>&);
//
@@ -1139,13 +1155,13 @@ private:
//
// Subsequent creation routines for new datatypes.
//
- void createDefaultInitializedSequenceElementTransform(const DocumentInfoPtr&, const DOM_Node&,
+ void createDefaultInitializedSequenceElementTransform(const DocumentInfoPtr&, DOMNode*,
vector<ElementTransformPtr>&);
//
// Utility routines.
//
- DOM_Node findSchemaRoot(const DOM_Document&);
+ DOMNode* findSchemaRoot(DOMDocument*);
//
// Search paths for importing schemas.
@@ -1206,7 +1222,7 @@ XMLTransform::TransformFactory::~TransformFactory()
// maps: A map of local@uri -> element transform and a map of transforms for specific class types.
//
void
-XMLTransform::TransformFactory::create(const DOM_Document& fromDoc, const DOM_Document& toDoc, TransformMap* elements,
+XMLTransform::TransformFactory::create(DOMDocument* fromDoc, DOMDocument* toDoc, TransformMap* elements,
TransformMap* staticClassTransforms)
{
//
@@ -1223,13 +1239,13 @@ XMLTransform::TransformFactory::create(const DOM_Document& fromDoc, const DOM_Do
// Create both of the document infos for the old & new schemas.
// Add the root documents to the document map.
//
- DOM_Node fromSchema = findSchemaRoot(fromDoc);
- assert(!fromSchema.isNull());
- DocumentInfoPtr fromInfo = new DocumentInfo(fromDoc, fromSchema);
+ DOMNode* fromSchema = findSchemaRoot(fromDoc);
+ assert(fromSchema);
+ DocumentInfoPtr fromInfo = new DocumentInfo(fromDoc, false, fromSchema);
- DOM_Node toSchema = findSchemaRoot(toDoc);
- assert(!toSchema.isNull());
- DocumentInfoPtr toInfo = new DocumentInfo(toDoc, toSchema);
+ DOMNode* toSchema = findSchemaRoot(toDoc);
+ assert(toSchema);
+ DocumentInfoPtr toInfo = new DocumentInfo(toDoc, false, toSchema);
_fromDocs.insert(make_pair(fromInfo->getTargetNamespace(), fromInfo));
_toDocs.insert(make_pair(toInfo->getTargetNamespace(), toInfo));
@@ -1253,8 +1269,8 @@ void
XMLTransform::TransformFactory::import(DocumentMap& documents, const string& ns, const string& loc)
{
DOMTreeErrorReporter errorReporter;
- DOMParser parser;
- parser.setValidationScheme(DOMParser::Val_Never);
+ XercesDOMParser parser;
+ parser.setValidationScheme(AbstractDOMParser::Val_Never);
parser.setDoNamespaces(true);
parser.setErrorHandler(&errorReporter);
@@ -1288,10 +1304,17 @@ XMLTransform::TransformFactory::import(DocumentMap& documents, const string& ns,
throw e;
}
- DOM_Document document = parser.getDocument();
- DOM_Node schema = findSchemaRoot(document);
+ DOMDocument* document = parser.getDocument();
+ DOMNode* schema = findSchemaRoot(document);
+
+ //
+ // For exception safety, we don't call adoptDocument() until after findSchemaRoot().
+ // We need to adopt the document because otherwise the parser would release it
+ // when the parser is destroyed.
+ //
+ parser.adoptDocument();
- DocumentInfoPtr info = new DocumentInfo(document, schema, ns);
+ DocumentInfoPtr info = new DocumentInfo(document, true, schema, ns);
documents.insert(make_pair(info->getTargetNamespace(), info));
//
@@ -1301,15 +1324,15 @@ XMLTransform::TransformFactory::import(DocumentMap& documents, const string& ns,
}
void
-XMLTransform::TransformFactory::processImport(const DOM_Document& parent, DocumentMap& documents)
+XMLTransform::TransformFactory::processImport(DOMDocument* parent, DocumentMap& documents)
{
- DOM_Node schema = findSchemaRoot(parent);
- assert(!schema.isNull());
+ DOMNode* schema = findSchemaRoot(parent);
+ assert(schema);
- DOM_Node child = schema.getFirstChild();
- while(!child.isNull())
+ DOMNode* child = schema->getFirstChild();
+ while(child)
{
- string nodeName = toString(child.getNodeName());
+ string nodeName = toString(child->getNodeName());
if(nodeName == importElementName)
{
string ns = getAttributeByName(child, "namespace");
@@ -1317,25 +1340,25 @@ XMLTransform::TransformFactory::processImport(const DOM_Document& parent, Docume
import(documents, ns, loc);
}
- child = child.getNextSibling();
+ child = child->getNextSibling();
}
}
void
XMLTransform::TransformFactory::processElements(const DocumentInfoPtr& info)
{
- DOM_Node schema = findSchemaRoot(info->getDocument());
+ DOMNode* schema = findSchemaRoot(info->getDocument());
- DOM_NodeList children = schema.getChildNodes();
- for(unsigned int i = 0; i < children.getLength(); ++i)
+ DOMNodeList* children = schema->getChildNodes();
+ for(unsigned int i = 0; i < children->getLength(); ++i)
{
- DOM_Node child = children.item(i);
- if(child.getNodeType() != DOM_Node::ELEMENT_NODE)
+ DOMNode* child = children->item(i);
+ if(child->getNodeType() != DOMNode::ELEMENT_NODE)
{
continue;
}
- string nodeName = toString(child.getNodeName());
+ string nodeName = toString(child->getNodeName());
if(nodeName != elementElementName)
{
continue;
@@ -1347,7 +1370,7 @@ XMLTransform::TransformFactory::processElements(const DocumentInfoPtr& info)
string nameAttr = getNameAttribute(child);
assert(nameAttr.find(':') == string::npos);
- DOM_Node to;
+ DOMNode* to;
DocumentInfoPtr toNodeInfo; // Overrides the top-level toInfo.
if(!findType(_toDocs, info, nameAttr, to, toNodeInfo))
{
@@ -1356,9 +1379,9 @@ XMLTransform::TransformFactory::processElements(const DocumentInfoPtr& info)
//
continue;
}
- assert(!to.isNull() && toNodeInfo);
+ assert(to && toNodeInfo);
- string toNodeName = toString(to.getNodeName());
+ string toNodeName = toString(to->getNodeName());
string toNameAttr = getNameAttribute(to);
assert(toNameAttr == nameAttr); // Sanity check.
@@ -1413,16 +1436,16 @@ XMLTransform::TransformFactory::processElements(const DocumentInfoPtr& info)
// Search for a type in a particular document. Return true if the type is present, false otherwise.
//
bool
-XMLTransform::TransformFactory::findTypeInDocument(const DOM_Document& doc, const string& local, DOM_Node& target)
+XMLTransform::TransformFactory::findTypeInDocument(DOMDocument* doc, const string& local, DOMNode*& target)
{
- DOM_Node schema = findSchemaRoot(doc);
+ DOMNode* schema = findSchemaRoot(doc);
- DOM_NodeList children = schema.getChildNodes();
+ DOMNodeList* children = schema->getChildNodes();
unsigned int i;
- for(i = 0; i < children.getLength(); ++i)
+ for(i = 0; i < children->getLength(); ++i)
{
- DOM_Node child = children.item(i);
- if(child.getNodeType() == DOM_Node::ELEMENT_NODE)
+ DOMNode* child = children->item(i);
+ if(child->getNodeType() == DOMNode::ELEMENT_NODE)
{
string na = getNameAttribute(child);
if(na == local)
@@ -1443,7 +1466,7 @@ XMLTransform::TransformFactory::findTypeInDocument(const DOM_Document& doc, cons
//
bool
XMLTransform::TransformFactory::findType(const DocumentMap& docs, const DocumentInfoPtr& info, const string& type,
- DOM_Node& n, DocumentInfoPtr& nInfo)
+ DOMNode*& n, DocumentInfoPtr& nInfo)
{
string uri;
string local;
@@ -1501,7 +1524,7 @@ struct StringTypeTable
}
TransformFactory::Type
-XMLTransform::TransformFactory::getType(const DOM_Node& node)
+XMLTransform::TransformFactory::getType(DOMNode* node)
{
//
// Check the appinfo element for the actual type.
@@ -1526,19 +1549,19 @@ XMLTransform::TransformFactory::getType(const DOM_Node& node)
//
// Locate the annotation/appinfo/type node.
//
- DOM_Node child = findChild(node, annotationElementName);
- if(!child.isNull())
+ DOMNode* child = findChild(node, annotationElementName);
+ if(child)
{
child = findChild(child, appinfoElementName);
- if(!child.isNull())
+ if(child)
{
child = findChild(child, "type");
- if(!child.isNull())
+ if(child)
{
- child = child.getFirstChild();
- if(!child.isNull())
+ child = child->getFirstChild();
+ if(child)
{
- type = toString(child.getNodeValue());
+ type = toString(child->getNodeValue());
}
}
}
@@ -1557,7 +1580,7 @@ XMLTransform::TransformFactory::getType(const DOM_Node& node)
TransformFactory::Type
XMLTransform::TransformFactory::getTypeByName(const DocumentMap& docs, const DocumentInfoPtr& info, const string& type,
- DOM_Node& n, DocumentInfoPtr& nInfo)
+ DOMNode*& n, DocumentInfoPtr& nInfo)
{
//
// First check to see if the type is a primitive schema type.
@@ -1587,7 +1610,7 @@ XMLTransform::TransformFactory::getTypeByName(const DocumentMap& docs, const Doc
ex.reason = "no node found for type " + type;
throw ex;
}
- assert(!n.isNull() && nInfo);
+ assert(n && nInfo);
return getType(n);
}
@@ -1596,11 +1619,11 @@ TransformPtr
XMLTransform::TransformFactory::createTransform(const DocumentInfoPtr& fromTypeInfo, const string& fromTypeName,
const DocumentInfoPtr& toTypeInfo, const string& toTypeName)
{
- DOM_Node from;
+ DOMNode* from;
DocumentInfoPtr fromInfo;
Type fromType = getTypeByName(_fromDocs, fromTypeInfo, fromTypeName, from, fromInfo);
- DOM_Node to;
+ DOMNode* to;
DocumentInfoPtr toInfo;
Type toType = getTypeByName(_toDocs, toTypeInfo, toTypeName, to, toInfo);
@@ -1699,9 +1722,9 @@ XMLTransform::TransformFactory::createTransform(const DocumentInfoPtr& fromTypeI
throw ex;
}
- DOM_Node fromSeq = findChild(from, sequenceElementName);
- DOM_Node toSeq = findChild(to, sequenceElementName);
- if(fromSeq.isNull() || toSeq.isNull())
+ DOMNode* fromSeq = findChild(from, sequenceElementName);
+ DOMNode* toSeq = findChild(to, sequenceElementName);
+ if(fromSeq == 0 || toSeq == 0)
{
InvalidSchema ex(__FILE__, __LINE__);
ex.reason = "missing sequence element in " + fromTypeName;
@@ -1711,10 +1734,10 @@ XMLTransform::TransformFactory::createTransform(const DocumentInfoPtr& fromTypeI
//
// Sequences have one element - which contains the type of the sequence.
//
- DOM_Node fromElement = findChild(fromSeq, elementElementName);
- DOM_Node toElement = findChild(toSeq, elementElementName);
+ DOMNode* fromElement = findChild(fromSeq, elementElementName);
+ DOMNode* toElement = findChild(toSeq, elementElementName);
- if(fromElement.isNull() || toElement.isNull())
+ if(fromElement == 0 || toElement == 0)
{
InvalidSchema ex(__FILE__, __LINE__);
ex.reason = "invalid sequence element in " + fromTypeName;
@@ -1741,9 +1764,9 @@ XMLTransform::TransformFactory::createTransform(const DocumentInfoPtr& fromTypeI
throw ex;
}
- DOM_Node fromSeq = findChild(from, sequenceElementName);
- DOM_Node toSeq = findChild(to, sequenceElementName);
- if(fromSeq.isNull() || toSeq.isNull())
+ DOMNode* fromSeq = findChild(from, sequenceElementName);
+ DOMNode* toSeq = findChild(to, sequenceElementName);
+ if(fromSeq == 0 || toSeq == 0)
{
InvalidSchema ex(__FILE__, __LINE__);
ex.reason = "missing sequence element in " + fromTypeName;
@@ -1753,9 +1776,9 @@ XMLTransform::TransformFactory::createTransform(const DocumentInfoPtr& fromTypeI
//
// Sequences have one element - which contains the type of the sequence.
//
- DOM_Node fromElement = findChild(fromSeq, elementElementName);
- DOM_Node toElement = findChild(toSeq, elementElementName);
- if(fromElement.isNull() || toElement.isNull())
+ DOMNode* fromElement = findChild(fromSeq, elementElementName);
+ DOMNode* toElement = findChild(toSeq, elementElementName);
+ if(fromElement == 0 || toElement == 0)
{
InvalidSchema ex(__FILE__, __LINE__);
ex.reason = "invalid sequence element in " + fromTypeName;
@@ -1858,14 +1881,14 @@ XMLTransform::TransformFactory::createTransform(const DocumentInfoPtr& fromTypeI
}
void
-XMLTransform::TransformFactory::createSequenceElementTransform(const DocumentInfoPtr& fromInfo, const DOM_Node& from,
- const DocumentInfoPtr& toInfo, const DOM_Node& to,
+XMLTransform::TransformFactory::createSequenceElementTransform(const DocumentInfoPtr& fromInfo, DOMNode* from,
+ const DocumentInfoPtr& toInfo, DOMNode* to,
vector<ElementTransformPtr>& v)
{
//
// Precondition: The nodes must not be nil.
//
- if(from.isNull() || to.isNull())
+ if(from == 0 || to == 0)
{
throw InvalidSchema(__FILE__, __LINE__);
}
@@ -1878,27 +1901,27 @@ XMLTransform::TransformFactory::createSequenceElementTransform(const DocumentInf
// * Node moved.
//
- DOM_NodeList fromSeqChildren = from.getChildNodes();
- DOM_NodeList toSeqChildren = to.getChildNodes();
+ DOMNodeList* fromSeqChildren = from->getChildNodes();
+ DOMNodeList* toSeqChildren = to->getChildNodes();
//
// First run through the to set. This loop handles the node
// remove, and node changed transforms (plus allowable type
// changes).
//
- for(unsigned int i = 0; i < toSeqChildren.getLength(); ++i)
+ for(unsigned int i = 0; i < toSeqChildren->getLength(); ++i)
{
ElementTransformPtr transform;
- DOM_Node toChild = toSeqChildren.item(i);
- if(toChild.getNodeType() != DOM_Node::ELEMENT_NODE)
+ DOMNode* toChild = toSeqChildren->item(i);
+ if(toChild->getNodeType() != DOMNode::ELEMENT_NODE)
{
continue;
}
- if(toString(toChild.getNodeName()) != elementElementName)
+ if(toString(toChild->getNodeName()) != elementElementName)
{
InvalidSchema ex(__FILE__, __LINE__);
- ex.reason = "expected " + elementElementName + " but found " + toString(toChild.getNodeName());
+ ex.reason = "expected " + elementElementName + " but found " + toString(toChild->getNodeName());
throw ex;
}
@@ -1908,20 +1931,20 @@ XMLTransform::TransformFactory::createSequenceElementTransform(const DocumentInf
//
// Search for the node in the fromSeqChildren list.
//
- for(unsigned int j = 0; j < fromSeqChildren.getLength(); ++j)
+ for(unsigned int j = 0; j < fromSeqChildren->getLength(); ++j)
{
- DOM_Node fromChild = fromSeqChildren.item(j);
+ DOMNode* fromChild = fromSeqChildren->item(j);
- if(fromChild.getNodeType() != DOM_Node::ELEMENT_NODE)
+ if(fromChild->getNodeType() != DOMNode::ELEMENT_NODE)
{
// Skip non element nodes.
continue;
}
- if(toString(fromChild.getNodeName()) != elementElementName)
+ if(toString(fromChild->getNodeName()) != elementElementName)
{
InvalidSchema ex(__FILE__, __LINE__);
- ex.reason = "expected " + elementElementName + " but found " + toString(fromChild.getNodeName());
+ ex.reason = "expected " + elementElementName + " but found " + toString(fromChild->getNodeName());
throw ex;
}
@@ -1950,16 +1973,16 @@ XMLTransform::TransformFactory::createSequenceElementTransform(const DocumentInf
}
void
-XMLTransform::TransformFactory::createClassContentTransform(const DocumentInfoPtr& fromInfo, const DOM_Node& from,
- const DocumentInfoPtr& toInfo, const DOM_Node& to,
+XMLTransform::TransformFactory::createClassContentTransform(const DocumentInfoPtr& fromInfo, DOMNode* from,
+ const DocumentInfoPtr& toInfo, DOMNode* to,
vector<ElementTransformPtr>& v)
{
static const string baseAttrName = "base";
- DOM_Node fromContent = findChild(from, complexContentElementName);
- DOM_Node toContent = findChild(to, complexContentElementName);
+ DOMNode* fromContent = findChild(from, complexContentElementName);
+ DOMNode* toContent = findChild(to, complexContentElementName);
- if(fromContent.isNull() && toContent.isNull())
+ if(fromContent == 0 && toContent == 0)
{
//
// Must be base of a class hierarchy (while this implementation is a little more flexible, with Ice it
@@ -1970,15 +1993,15 @@ XMLTransform::TransformFactory::createClassContentTransform(const DocumentInfoPt
return;
}
- if(fromContent.isNull() || toContent.isNull())
+ if(fromContent == 0 || toContent == 0)
{
throw InvalidSchema(__FILE__, __LINE__);
}
- DOM_Node fromExtension = findChild(fromContent, extensionElementName);
- DOM_Node toExtension = findChild(toContent, extensionElementName);
+ DOMNode* fromExtension = findChild(fromContent, extensionElementName);
+ DOMNode* toExtension = findChild(toContent, extensionElementName);
- if(fromExtension.isNull() || toExtension.isNull())
+ if(fromExtension == 0 || toExtension == 0)
{
throw InvalidSchema(__FILE__, __LINE__);
}
@@ -1996,7 +2019,7 @@ XMLTransform::TransformFactory::createClassContentTransform(const DocumentInfoPt
throw ex;
}
- DOM_Node fromBaseNode;
+ DOMNode* fromBaseNode;
DocumentInfoPtr fromBaseInfo;
if(!findType(_fromDocs, fromInfo, fromBaseName, fromBaseNode, fromBaseInfo))
{
@@ -2004,9 +2027,9 @@ XMLTransform::TransformFactory::createClassContentTransform(const DocumentInfoPt
ex.reason = "unable to find type for " + fromBaseName;
throw ex;
}
- assert(!fromBaseNode.isNull() && fromBaseInfo);
+ assert(fromBaseNode && fromBaseInfo);
- DOM_Node toBaseNode;
+ DOMNode* toBaseNode;
DocumentInfoPtr toBaseInfo;
if(!findType(_toDocs, toInfo, toBaseName, toBaseNode, toBaseInfo))
{
@@ -2014,7 +2037,7 @@ XMLTransform::TransformFactory::createClassContentTransform(const DocumentInfoPt
ex.reason = "unable to find type for " + toBaseName;
throw ex;
}
- assert(!toBaseNode.isNull() && toBaseInfo);
+ assert(toBaseNode && toBaseInfo);
//
// Find the content transform for the base type.
@@ -2026,34 +2049,34 @@ XMLTransform::TransformFactory::createClassContentTransform(const DocumentInfoPt
}
void
-XMLTransform::TransformFactory::createEnumValues(const DOM_Node& to, vector<string>& values)
+XMLTransform::TransformFactory::createEnumValues(DOMNode* to, vector<string>& values)
{
- DOM_Node toRes = findChild(to, restrictionElementName);
- if(toRes.isNull())
+ DOMNode* toRes = findChild(to, restrictionElementName);
+ if(toRes == 0)
{
InvalidSchema ex(__FILE__, __LINE__);
- ex.reason = "didn't find " + restrictionElementName + " in " + toString(to.getNodeName());
+ ex.reason = "didn't find " + restrictionElementName + " in " + toString(to->getNodeName());
throw ex;
}
//
// Gather up a list of allowable values.
//
- DOM_NodeList toResChildren = toRes.getChildNodes();
+ DOMNodeList* toResChildren = toRes->getChildNodes();
- for(unsigned int i = 0; i < toResChildren.getLength(); ++i)
+ for(unsigned int i = 0; i < toResChildren->getLength(); ++i)
{
- DOM_Node toChild = toResChildren.item(i);
+ DOMNode* toChild = toResChildren->item(i);
- if(toChild.getNodeType() != DOM_Node::ELEMENT_NODE)
+ if(toChild->getNodeType() != DOMNode::ELEMENT_NODE)
{
continue;
}
- if(toString(toChild.getNodeName()) != enumerationElementName)
+ if(toString(toChild->getNodeName()) != enumerationElementName)
{
InvalidSchema ex(__FILE__, __LINE__);
- ex.reason = "expected " + enumerationElementName + " but found " + toString(toChild.getNodeName());
+ ex.reason = "expected " + enumerationElementName + " but found " + toString(toChild->getNodeName());
throw ex;
}
@@ -2061,7 +2084,7 @@ XMLTransform::TransformFactory::createEnumValues(const DOM_Node& to, vector<stri
if(value.empty())
{
InvalidSchema ex(__FILE__, __LINE__);
- ex.reason = "didn't find value attribute in " + toString(toChild.getNodeName());
+ ex.reason = "didn't find value attribute in " + toString(toChild->getNodeName());
throw ex;
}
@@ -2070,7 +2093,7 @@ XMLTransform::TransformFactory::createEnumValues(const DOM_Node& to, vector<stri
}
TransformPtr
-XMLTransform::TransformFactory::createEnumerationTransform(const DOM_Node& to)
+XMLTransform::TransformFactory::createEnumerationTransform(DOMNode* to)
{
vector<string> values;
createEnumValues(to, values);
@@ -2091,7 +2114,7 @@ XMLTransform::TransformFactory::createDefaultInitializedTransform(const Document
return p->second;
}
- DOM_Node n;
+ DOMNode* n;
DocumentInfoPtr nInfo;
Type type = getTypeByName(_toDocs, info, typeName, n, nInfo);
@@ -2117,7 +2140,7 @@ XMLTransform::TransformFactory::createDefaultInitializedTransform(const Document
case TypeEnumeration:
{
- if(n.isNull())
+ if(n == 0)
{
throw InvalidSchema(__FILE__, __LINE__);
}
@@ -2130,13 +2153,13 @@ XMLTransform::TransformFactory::createDefaultInitializedTransform(const Document
case TypeStruct:
{
- if(n.isNull())
+ if(n == 0)
{
throw InvalidSchema(__FILE__, __LINE__);
}
- DOM_Node seq = findChild(n, sequenceElementName);
- if(seq.isNull())
+ DOMNode* seq = findChild(n, sequenceElementName);
+ if(seq == 0)
{
InvalidSchema ex(__FILE__, __LINE__);
ex.reason = "didn't find " + sequenceElementName + " in struct";
@@ -2152,7 +2175,7 @@ XMLTransform::TransformFactory::createDefaultInitializedTransform(const Document
case TypeDictionary:
case TypeSequence:
{
- if(n.isNull())
+ if(n == 0)
{
throw InvalidSchema(__FILE__, __LINE__);
}
@@ -2185,7 +2208,7 @@ XMLTransform::TransformFactory::createDefaultInitializedTransform(const Document
void
XMLTransform::TransformFactory::createDefaultInitializedSequenceElementTransform(const DocumentInfoPtr& info,
- const DOM_Node& node,
+ DOMNode* node,
vector<ElementTransformPtr>& v)
{
//
@@ -2196,19 +2219,19 @@ XMLTransform::TransformFactory::createDefaultInitializedSequenceElementTransform
// * Node moved.
//
- DOM_NodeList seqChild = node.getChildNodes();
- for(unsigned int i = 0; i < seqChild.getLength(); ++i)
+ DOMNodeList* seqChild = node->getChildNodes();
+ for(unsigned int i = 0; i < seqChild->getLength(); ++i)
{
- DOM_Node child = seqChild.item(i);
- if(child.getNodeType() != DOM_Node::ELEMENT_NODE)
+ DOMNode* child = seqChild->item(i);
+ if(child->getNodeType() != DOMNode::ELEMENT_NODE)
{
continue;
}
- if(toString(child.getNodeName()) != elementElementName)
+ if(toString(child->getNodeName()) != elementElementName)
{
InvalidSchema ex(__FILE__, __LINE__);
- ex.reason = "expected " + elementElementName + " but found " + toString(child.getNodeName());
+ ex.reason = "expected " + elementElementName + " but found " + toString(child->getNodeName());
throw ex;
}
@@ -2217,26 +2240,25 @@ XMLTransform::TransformFactory::createDefaultInitializedSequenceElementTransform
}
}
-DOM_Node
-XMLTransform::TransformFactory::findSchemaRoot(const DOM_Document& root)
+DOMNode*
+XMLTransform::TransformFactory::findSchemaRoot(DOMDocument* root)
{
- DOMString schemaURI("http://www.w3.org/2001/XMLSchema");
- DOMString schemaLocalName("schema");
- DOM_Node n;
+ ArrayJanitor<XMLCh> schemaURI(XMLString::transcode("http://www.w3.org/2001/XMLSchema"));
+ ArrayJanitor<XMLCh> schemaLocalName(XMLString::transcode("schema"));
- DOM_NodeList nodes = root.getElementsByTagNameNS(schemaURI, schemaLocalName);
- if(nodes.getLength() != 1)
+ DOMNodeList* nodes = root->getElementsByTagNameNS(schemaURI.get(), schemaLocalName.get());
+ if(nodes->getLength() != 1)
{
InvalidSchema ex(__FILE__, __LINE__);
ex.reason = "unable to find schema root";
throw ex;
}
- return nodes.item(0);
+ return nodes->item(0);
}
-XMLTransform::Transformer::Transformer(const Ice::StringSeq& paths, const DOM_Document& fromDoc,
- const DOM_Document& toDoc)
+XMLTransform::Transformer::Transformer(const Ice::StringSeq& paths, DOMDocument* fromDoc,
+ DOMDocument* toDoc)
{
TransformFactory factory(paths);
factory.create(fromDoc, toDoc, &_elements, &_staticClassTransforms);
@@ -2247,35 +2269,35 @@ XMLTransform::Transformer::~Transformer()
}
void
-XMLTransform::Transformer::transform(::IceUtil::XMLOutput& os, const DOM_Document& doc, bool emitRoot)
+XMLTransform::Transformer::transform(::IceUtil::XMLOutput& os, DOMDocument* doc, bool emitRoot)
{
- DOM_Node root = doc.getFirstChild();
+ DOMNode* root = doc->getFirstChild();
unsigned int i;
if(emitRoot)
{
- os << ::IceUtil::se(toString(root.getNodeName()));
- DOM_NamedNodeMap attributes = root.getAttributes();
- for(i = 0; i < attributes.getLength(); ++i)
+ os << ::IceUtil::se(toString(root->getNodeName()));
+ DOMNamedNodeMap* attributes = root->getAttributes();
+ for(i = 0; i < attributes->getLength(); ++i)
{
- DOM_Node attribute = attributes.item(i);
- os << ::IceUtil::attr(toString(attribute.getNodeName()), toString(attribute.getNodeValue()));
+ DOMNode* attribute = attributes->item(i);
+ os << ::IceUtil::attr(toString(attribute->getNodeName()), toString(attribute->getNodeValue()));
}
}
- DocumentInfoPtr info = new DocumentInfo(doc, root);
+ DocumentInfoPtr info = new DocumentInfo(doc, false, root);
- DOM_NodeList children = root.getChildNodes();
- for(i = 0; i < children.getLength(); ++i)
+ DOMNodeList* children = root->getChildNodes();
+ for(i = 0; i < children->getLength(); ++i)
{
- DOM_Node child = children.item(i);
- if(child.getNodeType() != DOM_Node::ELEMENT_NODE)
+ DOMNode* child = children->item(i);
+ if(child->getNodeType() != DOMNode::ELEMENT_NODE)
{
continue;
}
- string nodeName = toString(child.getNodeName());
+ string nodeName = toString(child->getNodeName());
//
// Create local@namespace version of the element name.
@@ -2321,14 +2343,15 @@ void
XMLTransform::DBTransformer::transform(const DBEnvironmentPtr& dbEnv, const DBPtr& db, const Ice::StringSeq& paths,
const string& oldSchemaFile, const string& newSchemaFile)
{
- DOMParser parser;
- parser.setValidationScheme(DOMParser::Val_Auto);
- parser.setDoNamespaces(true);
-
DOMTreeErrorReporter errReporter;
+
+ XercesDOMParser parser;
+ parser.setValidationScheme(AbstractDOMParser::Val_Auto);
+ parser.setDoNamespaces(true);
parser.setErrorHandler(&errReporter);
- DOM_Document oldSchema, newSchema;
+ DOMDocument* oldSchema;
+ DOMDocument* newSchema;
try
{
@@ -2404,7 +2427,7 @@ XMLTransform::DBTransformer::transform(const DBEnvironmentPtr& dbEnv, const DBPt
fullKey.append(footer);
MemBufInputSource keySource((const XMLByte*)fullKey.data(), fullKey.size(), "key");
parser.parse(keySource);
- DOM_Document keyDoc = parser.getDocument();
+ DOMDocument* keyDoc = parser.getDocument();
ostringstream keyStream;
IceUtil::XMLOutput keyOut(keyStream);
@@ -2425,7 +2448,7 @@ XMLTransform::DBTransformer::transform(const DBEnvironmentPtr& dbEnv, const DBPt
fullValue.append(footer);
MemBufInputSource valueSource((const XMLByte*)fullValue.data(), fullValue.size(), "value");
parser.parse(valueSource);
- DOM_Document valueDoc = parser.getDocument();
+ DOMDocument* valueDoc = parser.getDocument();
ostringstream valueStream;
IceUtil::XMLOutput valueOut(valueStream);
@@ -2469,7 +2492,7 @@ XMLTransform::DBTransformer::transform(const DBEnvironmentPtr& dbEnv, const DBPt
{
reason = "SAX exception: " + toString(ex.getMessage());
}
- catch(const DOM_DOMException& ex)
+ catch(DOMException& ex)
{
ostringstream out;
out << "DOM exception (" << ex.code << ") " << toString(ex.msg);
diff --git a/cpp/src/XMLTransform/xmltransform.dsp b/cpp/src/XMLTransform/xmltransform.dsp
index cfc0277cfbd..acde75c77b1 100644
--- a/cpp/src/XMLTransform/xmltransform.dsp
+++ b/cpp/src/XMLTransform/xmltransform.dsp
@@ -54,7 +54,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
-# ADD LINK32 xerces-c_1.lib /nologo /dll /machine:I386 /out:"Release/xmltransform001.dll" /libpath:"../../../lib"
+# ADD LINK32 xerces-c_2.lib /nologo /dll /machine:I386 /out:"Release/xmltransform001.dll" /libpath:"../../../lib"
# SUBTRACT LINK32 /pdb:none /debug /nodefaultlib
# Begin Special Build Tool
SOURCE="$(InputPath)"
@@ -86,7 +86,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 xerces-c_1D.lib /nologo /dll /debug /machine:I386 /out:"Debug/xmltransform001d.dll" /pdbtype:sept /libpath:"../../../lib"
+# ADD LINK32 xerces-c_2D.lib /nologo /dll /debug /machine:I386 /out:"Debug/xmltransform001d.dll" /pdbtype:sept /libpath:"../../../lib"
# SUBTRACT LINK32 /pdb:none /nodefaultlib
# Begin Special Build Tool
SOURCE="$(InputPath)"
diff --git a/cpp/src/Yellow/yellowC.dsp b/cpp/src/Yellow/yellowC.dsp
index 4704bc94c47..3c9fd1b3428 100644
--- a/cpp/src/Yellow/yellowC.dsp
+++ b/cpp/src/Yellow/yellowC.dsp
@@ -51,7 +51,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 setargv.obj xerces-c_1.lib /nologo /subsystem:console /machine:I386 /out:"../../bin/yellowadmin.exe" /libpath:"../../../lib"
+# ADD LINK32 setargv.obj xerces-c_2.lib /nologo /subsystem:console /machine:I386 /out:"../../bin/yellowadmin.exe" /libpath:"../../../lib"
# SUBTRACT LINK32 /debug /nodefaultlib
!ELSEIF "$(CFG)" == "YellowC - Win32 Debug"
@@ -77,7 +77,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 setargv.obj xerces-c_1D.lib /nologo /subsystem:console /debug /machine:I386 /out:"../../bin/yellowadmin.exe" /pdbtype:sept /libpath:"../../../lib"
+# ADD LINK32 setargv.obj xerces-c_2D.lib /nologo /subsystem:console /debug /machine:I386 /out:"../../bin/yellowadmin.exe" /pdbtype:sept /libpath:"../../../lib"
# SUBTRACT LINK32 /nodefaultlib
!ENDIF
diff --git a/cpp/src/slice2xsd/Validate.cpp b/cpp/src/slice2xsd/Validate.cpp
index b2bed446c19..2f8c8cd6baf 100644
--- a/cpp/src/slice2xsd/Validate.cpp
+++ b/cpp/src/slice2xsd/Validate.cpp
@@ -10,33 +10,29 @@
#include <IceUtil/Config.h>
-#include <util/PlatformUtils.hpp>
-#include <util/XMLString.hpp>
-#include <util/XMLUniDefs.hpp>
-#include <framework/XMLFormatter.hpp>
-#include <util/TranscodingException.hpp>
+#include <xercesc/util/PlatformUtils.hpp>
+#include <xercesc/util/XMLString.hpp>
-#include <dom/DOM_DOMException.hpp>
-#include <parsers/DOMParser.hpp>
-//#include <dom/DOM.hpp>
+#include <xercesc/dom/DOMException.hpp>
+#include <xercesc/parsers/XercesDOMParser.hpp>
-
-#include <sax/ErrorHandler.hpp>
-#include <sax/SAXParseException.hpp>
-#include <dom/DOMString.hpp>
+#include <xercesc/sax/ErrorHandler.hpp>
+#include <xercesc/sax/SAXParseException.hpp>
#include <iostream>
using namespace std;
-// Global streaming operator for DOMString is defined in DOMPrint.cpp
-//extern ostream& operator<<(ostream& target, const DOMString& s);
-ostream& operator<< (ostream& target, const DOMString& s)
+//
+// Utility to make the usage of xerces easier.
+//
+static string
+toString(const XMLCh* s)
{
- char *p = s.transcode();
- target << p;
- delete [] p;
- return target;
+ char* t = XMLString::transcode(s);
+ string r(t);
+ delete[] t;
+ return r;
}
class DOMTreeErrorReporter : public ErrorHandler
@@ -50,30 +46,30 @@ public:
void
warning(const SAXParseException& toCatch)
{
- cerr << "Warning at file \"" << DOMString(toCatch.getSystemId())
+ cerr << "Warning at file \"" << toString(toCatch.getSystemId())
<< "\", line " << toCatch.getLineNumber()
<< ", column " << toCatch.getColumnNumber()
- << "\n Message: " << DOMString(toCatch.getMessage()) << endl;
+ << "\n Message: " << toString(toCatch.getMessage()) << endl;
}
void
error(const SAXParseException& toCatch)
{
_sawErrors = true;
- cerr << "Error at file \"" << DOMString(toCatch.getSystemId())
+ cerr << "Error at file \"" << toString(toCatch.getSystemId())
<< "\", line " << toCatch.getLineNumber()
<< ", column " << toCatch.getColumnNumber()
- << "\n Message: " << DOMString(toCatch.getMessage()) << endl;
+ << "\n Message: " << toString(toCatch.getMessage()) << endl;
}
void
fatalError(const SAXParseException& toCatch)
{
_sawErrors = true;
- cerr << "Fatal at file \"" << DOMString(toCatch.getSystemId())
+ cerr << "Fatal at file \"" << toString(toCatch.getSystemId())
<< "\", line " << toCatch.getLineNumber()
<< ", column " << toCatch.getColumnNumber()
- << "\n Message: " << DOMString(toCatch.getMessage()) << endl;
+ << "\n Message: " << toString(toCatch.getMessage()) << endl;
}
void resetErrors()
@@ -110,7 +106,7 @@ main(int argc, char** argv)
{
cerr << "Error during Xerces-c Initialization.\n"
<< " Exception message:"
- << DOMString(toCatch.getMessage()) << endl;
+ << toString(toCatch.getMessage()) << endl;
return 1;
}
@@ -154,16 +150,15 @@ main(int argc, char** argv)
// The parser will call back to methods of the ErrorHandler if it
// discovers errors during the course of parsing the XML document.
//
- DOMParser* parser = new DOMParser;
- parser->setValidationScheme(DOMParser::Val_Auto);
+ XercesDOMParser* parser = new XercesDOMParser;
+ parser->setValidationScheme(XercesDOMParser::Val_Auto);
parser->setDoNamespaces(true);
parser->setDoSchema(true);
parser->setValidationSchemaFullChecking(true);
- DOMTreeErrorReporter *errReporter = new DOMTreeErrorReporter();
- parser->setErrorHandler(errReporter);
+ DOMTreeErrorReporter errReporter;
+ parser->setErrorHandler(&errReporter);
parser->setCreateEntityReferenceNodes(false);
- parser->setToCreateXMLDeclTypeNode(true);
//
// Parse the XML file, catching any XML exceptions that might propogate
@@ -179,10 +174,10 @@ main(int argc, char** argv)
}
catch(const XMLException& e)
{
- cerr << "An error occured during parsing\n Message: " << DOMString(e.getMessage()) << endl;
+ cerr << "An error occured during parsing\n Message: " << toString(e.getMessage()) << endl;
errorsOccured = true;
}
- catch(const DOM_DOMException& e)
+ catch(const DOMException& e)
{
cerr << "A DOM error occured during parsing\n DOMException code: " << e.code << endl;
errorsOccured = true;
@@ -192,7 +187,11 @@ main(int argc, char** argv)
cerr << "An error occured during parsing\n " << endl;
errorsOccured = true;
}
+
+ delete parser;
}
+ XMLPlatformUtils::Terminate();
+
return (errorsOccured) ? EXIT_FAILURE : EXIT_SUCCESS;
}