/* Define to 1 if you have the <unistd.h> header file. */
/* #undef HAVE_UNISTD_H */
+/* Define to 1 if you have the <xercesc/dom/DOMLSParser.hpp> header file. */
+#undef HAVE_XERCESC_DOM_DOMLSPARSER_HPP
+
+/* Define to 1 if you have the <xercesc/dom/DOMLSResourceResolver.hpp> header
+ file. */
+#undef HAVE_XERCESC_DOM_DOMLSRESOURCERESOLVER_HPP
+
+/* Define to 1 if you have the <xercesc/dom/DOMLSSerializer.hpp> header file.
+ */
+#undef HAVE_XERCESC_DOM_DOMLSSERIALIZER_HPP
+
+#include <xercesc/util/XercesVersion.hpp>
+
+#if (XERCES_VERSION_MAJOR >= 3)
+# define XMLTOOLING_XERCESC_COMPLIANT_DOMLS 1
+# define XMLTOOLING_XERCESC_BOOLSETIDATTRIBUTE 1
+# define XMLTOOLING_XERCESC_64BITSAFE 1
+# define XMLTOOLING_XERCESC_INPUTSTREAM_HAS_CONTENTTYPE 1
+#endif
+
/* Name of package */
#define PACKAGE "xmltooling"
[AC_DEFINE(HAVE_LIBXERCESC,1,[Define if Xerces-C library was found])],
[AC_MSG_ERROR([unable to link with Xerces])])
-# DOM3 API checks.
-AC_CHECK_HEADERS([xercesc/dom/DOMLSParser.hpp xercesc/dom/DOMLSSerializer.hpp xercesc/dom/DOMLSResourceResolver.hpp])
-
+AC_MSG_CHECKING([whether Xerces is 64-bit clean])
+AC_TRY_COMPILE([#include <xercesc/framework/MemBufInputSource.hpp>],
+ [using namespace XERCES_CPP_NAMESPACE;
+ XMLFilePos testvar;
+ ],
+ [AC_MSG_RESULT([yes])]
+ [AC_DEFINE(XMLTOOLING_XERCESC_64BITSAFE)],
+ [AC_MSG_RESULT([no])])
+
+AC_MSG_CHECKING([whether Xerces BinInputStream requires getContentType])
+AC_TRY_COMPILE([#include <xercesc/framework/MemBufInputSource.hpp>],
+ [using namespace XERCES_CPP_NAMESPACE;
+ char buf[1024];
+ BinMemInputStream in(buf,1024);
+ in.getContentType();
+ ],
+ [AC_MSG_RESULT([yes])]
+ [AC_DEFINE(XMLTOOLING_XERCESC_INPUTSTREAM_HAS_CONTENTTYPE)],
+ [AC_MSG_RESULT([no])])
+
+AC_MSG_CHECKING([whether Xerces DOMLS API is compliant])
+AC_TRY_COMPILE([#include <xercesc/dom/DOM.hpp>],
+ [using namespace XERCES_CPP_NAMESPACE;
+ DOMImplementation *impl = DOMImplementationRegistry::getDOMImplementation(NULL);
+ DOMLSSerializer *ls = ((DOMImplementationLS*)impl)->createLSSerializer();
+ ],
+ [AC_MSG_RESULT([yes])]
+ [AC_DEFINE(XMLTOOLING_XERCESC_COMPLIANT_DOMLS)],
+ [AC_MSG_RESULT([no])])
+
+AC_MSG_CHECKING([whether Xerces has setIdAttribute(XMLCh*, bool)])
+AC_TRY_COMPILE([#include <xercesc/dom/DOM.hpp>],
+ [using namespace XERCES_CPP_NAMESPACE;
+ DOMElement * elt;
+ elt->setIdAttribute(NULL, false);
+ ],
+ [AC_MSG_RESULT([yes])]
+ [AC_DEFINE(XMLTOOLING_XERCESC_BOOLSETIDATTRIBUTE)],
+ [AC_MSG_RESULT([no])])
# XML-Security settings
AC_ARG_WITH(xmlsec,
using namespace xmltooling;
using namespace std;
+using xercesc::DOMAttr;
+using xercesc::DOMElement;
+using xercesc::XMLString;
+
set<QName> AttributeExtensibleXMLObject::m_idAttributeSet;
AbstractAttributeExtensibleXMLObject::~AbstractAttributeExtensibleXMLObject()
bool ID = attribute->isId() || isRegisteredIDAttribute(q);
setAttribute(q,attribute->getNodeValue(),ID);
if (ID) {
+#ifdef XMLTOOLING_XERCESC_BOOLSETIDATTRIBUTE
+ attribute->getOwnerElement()->setIdAttributeNode(attribute, true);
+#else
attribute->getOwnerElement()->setIdAttributeNode(attribute);
+#endif
}
}
attr->setPrefix(i->first.getPrefix());
attr->setNodeValue(i->second);
domElement->setAttributeNodeNS(attr);
- if (m_idAttribute==i)
+ if (m_idAttribute==i) {
+#ifdef XMLTOOLING_XERCESC_BOOLSETIDATTRIBUTE
+ domElement->setIdAttributeNode(attr, true);
+#else
domElement->setIdAttributeNode(attr);
+#endif
+ }
}
}
using namespace xmltooling;
using namespace std;
+using xercesc::XMLString;
+
AbstractComplexElement::~AbstractComplexElement() {
for_each(m_children.begin(), m_children.end(), cleanup<XMLObject>());
for (vector<XMLCh*>::iterator i=m_text.begin(); i!=m_text.end(); ++i)
#include <functional>
using namespace xmltooling;
+using namespace xercesc;
using namespace std;
AbstractDOMCachingXMLObject::~AbstractDOMCachingXMLObject()
using namespace xmltooling;
+using xercesc::XMLString;
+
AbstractXMLObject::AbstractXMLObject(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
: m_log(logging::Category::getInstance(XMLTOOLING_LOGCAT".XMLObject")),
m_schemaLocation(NULL), m_noNamespaceSchemaLocation(NULL), m_nil(xmlconstants::XML_BOOL_NULL),
using namespace xmltooling;
+using xercesc::XMLString;
+
Namespace::Namespace(const XMLCh* uri, const XMLCh* prefix, bool alwaysDeclare) : m_pinned(alwaysDeclare)
{
#ifndef HAVE_GOOD_STL
using namespace xmltooling;
using namespace std;
+using xercesc::XMLString;
+
QName::QName(const XMLCh* uri, const XMLCh* localPart, const XMLCh* prefix)
{
#ifndef HAVE_GOOD_STL
using namespace xmltooling;
using namespace std;
+using xercesc::DOMElement;
+
map<QName,XMLObjectBuilder*> XMLObjectBuilder::m_map;
XMLObjectBuilder* XMLObjectBuilder::m_default=NULL;
using namespace xmltooling;
using namespace std;
+using xercesc::XMLPlatformUtils;
+
DECL_XMLTOOLING_EXCEPTION_FACTORY(XMLParserException,xmltooling);
DECL_XMLTOOLING_EXCEPTION_FACTORY(XMLObjectException,xmltooling);
DECL_XMLTOOLING_EXCEPTION_FACTORY(MarshallingException,xmltooling);
# define XMLTOOLING_NO_XMLSEC 1\r
#endif\r
\r
+#ifdef XMLTOOLING_NO_XMLSEC\r
+# ifdef XMLTOOLING_XERCESC_64BITSAFE\r
+# include <xercesc/util/XercesDefs.hpp>\r
+ typedef XMLSize_t xsecsize_t;\r
+# else\r
+ typedef unsigned int xsecsize_t;\r
+# endif\r
+#endif\r
+\r
// Windows and GCC4 Symbol Visibility Macros\r
#ifdef WIN32\r
#define XMLTOOL_IMPORT __declspec(dllimport)\r
domElement->setAttributeNS(namespaceURI, ucase##_ATTRIB_NAME, qstr.get()); \\r
}\r
\r
+#ifdef XMLTOOLING_XERCESC_BOOLSETIDATTRIBUTE\r
+/**\r
+ * Implements marshalling for an ID attribute\r
+ *\r
+ * @param proper the proper name of the attribute\r
+ * @param ucase the upcased name of the attribute\r
+ * @param namespaceURI the XML namespace of the attribute\r
+ */\r
+# define MARSHALL_ID_ATTRIB(proper,ucase,namespaceURI) \\r
+ if (m_##proper && *m_##proper) { \\r
+ domElement->setAttributeNS(namespaceURI, ucase##_ATTRIB_NAME, m_##proper); \\r
+ domElement->setIdAttributeNS(namespaceURI, ucase##_ATTRIB_NAME, true); \\r
+ }\r
+#else\r
/**\r
* Implements marshalling for an ID attribute\r
*\r
* @param ucase the upcased name of the attribute\r
* @param namespaceURI the XML namespace of the attribute\r
*/\r
-#define MARSHALL_ID_ATTRIB(proper,ucase,namespaceURI) \\r
+# define MARSHALL_ID_ATTRIB(proper,ucase,namespaceURI) \\r
if (m_##proper && *m_##proper) { \\r
domElement->setAttributeNS(namespaceURI, ucase##_ATTRIB_NAME, m_##proper); \\r
domElement->setIdAttributeNS(namespaceURI, ucase##_ATTRIB_NAME); \\r
}\r
+#endif\r
\r
/**\r
* Implements unmarshalling process branch for a string attribute\r
return; \\r
}\r
\r
+#ifdef XMLTOOLING_XERCESC_BOOLSETIDATTRIBUTE\r
/**\r
* Implements unmarshalling process branch for an ID attribute\r
*\r
* @param ucase the upcased name of the attribute\r
* @param namespaceURI the XML namespace of the attribute\r
*/\r
-#define PROC_ID_ATTRIB(proper,ucase,namespaceURI) \\r
+# define PROC_ID_ATTRIB(proper,ucase,namespaceURI) \\r
+ if (xmltooling::XMLHelper::isNodeNamed(attribute, namespaceURI, ucase##_ATTRIB_NAME)) { \\r
+ set##proper(attribute->getValue()); \\r
+ attribute->getOwnerElement()->setIdAttributeNode(attribute, true); \\r
+ return; \\r
+ }\r
+#else\r
+/**\r
+ * Implements unmarshalling process branch for an ID attribute\r
+ *\r
+ * @param proper the proper name of the attribute\r
+ * @param ucase the upcased name of the attribute\r
+ * @param namespaceURI the XML namespace of the attribute\r
+ */\r
+# define PROC_ID_ATTRIB(proper,ucase,namespaceURI) \\r
if (xmltooling::XMLHelper::isNodeNamed(attribute, namespaceURI, ucase##_ATTRIB_NAME)) { \\r
set##proper(attribute->getValue()); \\r
attribute->getOwnerElement()->setIdAttributeNode(attribute); \\r
return; \\r
}\r
+#endif\r
\r
/**\r
* Implements unmarshalling process branch for a DateTime attribute\r
{ \\r
public: \\r
virtual ~cname##Impl() {} \\r
- cname##Impl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) \\r
+ cname##Impl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType) \\r
: xmltooling::AbstractXMLObject(nsURI, localName, prefix, schemaType) { \\r
} \\r
cname##Impl(const cname##Impl& src) \\r
*/\r
#define IMPL_XMLOBJECTBUILDER(cname) \\r
cname* cname##Builder::buildObject( \\r
- const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType \\r
+ const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType \\r
) const \\r
{ \\r
return new cname##Impl(nsURI,localName,prefix,schemaType); \\r
*/\r
#define IMPL_XMLOBJECTBUILDER(cname) \\r
xmltooling::XMLObject* cname##Builder::buildObject( \\r
- const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType \\r
+ const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::Name* schemaType \\r
) const \\r
{ \\r
return new cname##Impl(nsURI,localName,prefix,schemaType); \\r
/* Define to 1 to disable XML-Security-dependent features. */
#undef XMLTOOLING_NO_XMLSEC
+
+/* Define to 1 if Xerces supports a compliant DOMLS API. */
+#undef XMLTOOLING_XERCESC_COMPLIANT_DOMLS
+
+/* Define to 1 if Xerces DOM ID methods take extra parameter. */
+#undef XMLTOOLING_XERCESC_BOOLSETIDATTRIBUTE
+
+/* Define to 1 if Xerces has a 64-bit-safe API. */
+#undef XMLTOOLING_XERCESC_64BITSAFE
/* Define if you wish to disable Xalan-dependent features. */
#define XSEC_NO_XALAN
+
+#include <xercesc/util/XercesVersion.hpp>
+
+#if (XERCES_VERSION_MAJOR >= 3)
+# define XMLTOOLING_XERCESC_COMPLIANT_DOMLS 1
+# define XMLTOOLING_XERCESC_BOOLSETIDATTRIBUTE 1
+# define XMLTOOLING_XERCESC_64BITSAFE 1
+#endif
using namespace xmlencryption;
using namespace xmlsignature;
using namespace xmltooling;
+using namespace xercesc;
using namespace std;
Decrypter::~Decrypter()
auto_ptr<XSECBinTXFMInputStream> in(m_cipher->decryptToBinInputStream(encryptedData.getDOM()));
XMLByte buf[8192];
- unsigned int count = in->readBytes(buf, sizeof(buf));
+ xsecsize_t count = in->readBytes(buf, sizeof(buf));
while (count > 0)
out.write(reinterpret_cast<char*>(buf),count);
}
using namespace xmlencryption;
using namespace xmlsignature;
using namespace xmltooling;
+using namespace xercesc;
using namespace std;
Encrypter::~Encrypter()
using namespace xmlencryption;
using namespace xmltooling;
+using namespace xercesc;
using namespace std;
using xmlconstants::XMLENC_NS;
using xmlconstants::XMLSIG_NS;
XMLString::release(&m_Algorithm);
}
- EncryptionMethodImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ EncryptionMethodImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
public:
virtual ~TransformsImpl() {}
- TransformsImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ TransformsImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
}
XMLString::release(&m_URI);
}
- CipherReferenceImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ CipherReferenceImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
public:
virtual ~CipherDataImpl() {}
- CipherDataImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ CipherDataImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
XMLString::release(&m_Target);
}
- EncryptionPropertyImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ EncryptionPropertyImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
IMPL_STRING_ATTRIB(Target);
IMPL_XMLOBJECT_CHILDREN(UnknownXMLObject, m_children.end());
- void setAttribute(const QName& qualifiedName, const XMLCh* value, bool ID=false) {
+ void setAttribute(const xmltooling::QName& qualifiedName, const XMLCh* value, bool ID=false) {
if (!qualifiedName.hasNamespaceURI()) {
if (XMLString::equals(qualifiedName.getLocalPart(),ID_ATTRIB_NAME)) {
setId(value);
XMLString::release(&m_Id);
}
- EncryptionPropertiesImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ EncryptionPropertiesImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
XMLString::release(&m_URI);
}
- ReferenceTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ ReferenceTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
public:
virtual ~DataReferenceImpl() {}
- DataReferenceImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ DataReferenceImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {}
DataReferenceImpl(const DataReferenceImpl& src) : AbstractXMLObject(src), ReferenceTypeImpl(src) {}
public:
virtual ~KeyReferenceImpl() {}
- KeyReferenceImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ KeyReferenceImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {}
KeyReferenceImpl(const KeyReferenceImpl& src) : AbstractXMLObject(src), ReferenceTypeImpl(src) {}
public:
virtual ~ReferenceListImpl() {}
- ReferenceListImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ ReferenceListImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
}
XMLString::release(&m_Encoding);
}
- EncryptedTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ EncryptedTypeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
public:
virtual ~EncryptedDataImpl() {}
- EncryptedDataImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ EncryptedDataImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {}
EncryptedDataImpl(const EncryptedDataImpl& src) : AbstractXMLObject(src), EncryptedTypeImpl(src) {}
XMLString::release(&m_Recipient);
}
- EncryptedKeyImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ EncryptedKeyImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
#include <xercesc/util/XMLUniDefs.hpp>\r
\r
using namespace xmltooling;\r
+using namespace xercesc;\r
using namespace std;\r
using xmlconstants::XMLTOOLING_NS;\r
\r
return s_mid;\r
}\r
\r
-inline const char* unsigned_integer_to_string(char* buf, size_t cchBuf, int i)\r
+inline const char* unsigned_integer_to_string(char* buf, size_t cchBuf, size_t i)\r
{\r
char* psz=buf + cchBuf - 1; // Set psz to last char\r
*psz = 0; // Set terminating null\r
\r
do {\r
- unsigned int lsd = i % 10; // Get least significant\r
+ size_t lsd = i % 10; // Get least significant\r
// digit\r
\r
i /= 10; // Prepare for next most\r
void XMLToolingException::addProperties(const params& p)\r
{\r
m_processedmsg.erase();\r
- int i=m_params.size()+1;\r
+ map<string,string>::size_type i=m_params.size()+1;\r
char buf[20];\r
const vector<const char*>& v=p.get();\r
for (vector<const char*>::const_iterator ci=v.begin(); ci!=v.end(); ci++) {\r
#include <xercesc/util/XMLUniDefs.hpp>
using namespace xmltooling;
+using namespace xercesc;
using namespace std;
XMLObject* AnyElementImpl::clone() const {
}
XMLObject* AnyElementBuilder::buildObject(
- const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType
+ const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType
) const {
return new AnyElementImpl(nsURI, localName, prefix, schemaType);
}
using namespace xmltooling;\r
using namespace std;\r
\r
+using xercesc::DOMElement;\r
+\r
namespace xmltooling {\r
class XMLTOOL_DLLLOCAL MemoryStorageService : public StorageService\r
{\r
using namespace xmltooling::logging;
using namespace xmltooling;
+using namespace xercesc;
using namespace std;
#ifndef XMLTOOLING_NO_XMLSEC
using xmlsignature::Signature;
}
XMLObject* UnknownElementBuilder::buildObject(
- const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType
+ const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType
) const {
return new UnknownElementImpl(nsURI,localName,prefix);
}
#include "XMLToolingConfig.h"
#include "util/ParserPool.h"
-using namespace xercesc;
-
#include <vector>
#ifndef XMLTOOLING_NO_XMLSEC
#include <xsec/framework/XSECProvider.hpp>
#endif
using namespace xmlconstants;
using namespace xmltooling;
+using namespace xercesc;
using namespace std;
DOMElement* AbstractXMLObjectMarshaller::marshall(
using namespace xmlconstants;
using namespace xmltooling;
+using namespace xercesc;
using namespace std;
}
};
-AbstractPKIXTrustEngine::AbstractPKIXTrustEngine(const DOMElement* e) : TrustEngine(e), m_fullCRLChain(false)
+AbstractPKIXTrustEngine::AbstractPKIXTrustEngine(const xercesc::DOMElement* e) : TrustEngine(e), m_fullCRLChain(false)
{
static XMLCh fullCRLChain[] = UNICODE_LITERAL_12(f,u,l,l,C,R,L,C,h,a,i,n);
const XMLCh* flag = e ? e->getAttributeNS(NULL, fullCRLChain) : NULL;
- m_fullCRLChain = (flag && (*flag == chLatin_t || *flag == chDigit_1));
+ m_fullCRLChain = (flag && (*flag == xercesc::chLatin_t || *flag == xercesc::chDigit_1));
}
bool AbstractPKIXTrustEngine::checkEntityNames(
using namespace xmltooling;
using namespace std;
+using xercesc::DOMElement;
+
namespace xmltooling {
class XMLTOOL_DLLLOCAL ChainingCredentialResolver : public CredentialResolver
{
using namespace xmltooling;
using namespace std;
+using xercesc::DOMElement;
+
namespace xmltooling {
TrustEngine* XMLTOOL_DLLLOCAL ChainingTrustEngineFactory(const DOMElement* const & e)
{
using namespace xmltooling;
namespace xmltooling {
- XMLTOOL_DLLLOCAL PluginManager<CredentialResolver,std::string,const DOMElement*>::Factory FilesystemCredentialResolverFactory;
- XMLTOOL_DLLLOCAL PluginManager<CredentialResolver,std::string,const DOMElement*>::Factory ChainingCredentialResolverFactory;
+ XMLTOOL_DLLLOCAL PluginManager<CredentialResolver,std::string,const xercesc::DOMElement*>::Factory FilesystemCredentialResolverFactory;
+ XMLTOOL_DLLLOCAL PluginManager<CredentialResolver,std::string,const xercesc::DOMElement*>::Factory ChainingCredentialResolverFactory;
};
void XMLTOOL_API xmltooling::registerCredentialResolvers()
using namespace xmltooling;
using namespace std;
+using xercesc::DOMElement;
+
namespace xmltooling {
class XMLTOOL_DLLLOCAL ExplicitKeyTrustEngine : public SignatureTrustEngine, public OpenSSLTrustEngine
{
using namespace xmltooling;
using namespace std;
+using xercesc::DOMElement;
+using xercesc::chLatin_f;
+using xercesc::chDigit_0;
+
namespace xmltooling {
// The ManagedResource classes handle memory management, loading of the files
using namespace xmlsignature;
using namespace xmltooling::logging;
using namespace xmltooling;
+using namespace xercesc;
using namespace std;
namespace xmltooling {
using namespace std;
namespace xmltooling {
- XMLTOOL_DLLLOCAL PluginManager<KeyInfoResolver,string,const DOMElement*>::Factory InlineKeyInfoResolverFactory;
+ XMLTOOL_DLLLOCAL PluginManager<KeyInfoResolver,string,const xercesc::DOMElement*>::Factory InlineKeyInfoResolverFactory;
};
void XMLTOOL_API xmltooling::registerKeyInfoResolvers()
using namespace xmltooling;
using namespace std;
+using xercesc::DOMElement;
+
namespace xmltooling {
XMLTOOL_DLLLOCAL PluginManager<TrustEngine,string,const DOMElement*>::Factory ExplicitKeyTrustEngineFactory;
XMLTOOL_DLLLOCAL PluginManager<TrustEngine,string,const DOMElement*>::Factory StaticPKIXTrustEngineFactory;
using namespace xmlsignature;
using namespace xmltooling;
+using namespace xercesc;
using namespace std;
using xmlconstants::XMLSIG_NS;
public:
virtual ~DSAKeyValueImpl() {}
- DSAKeyValueImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ DSAKeyValueImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
public:
virtual ~RSAKeyValueImpl() {}
- RSAKeyValueImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ RSAKeyValueImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
public:
virtual ~KeyValueImpl() {}
- KeyValueImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ KeyValueImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
XMLString::release(&m_Algorithm);
}
- TransformImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ TransformImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType), m_Algorithm(NULL) {
}
public:
virtual ~TransformsImpl() {}
- TransformsImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ TransformsImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
}
XMLString::release(&m_Type);
}
- RetrievalMethodImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ RetrievalMethodImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
public:
virtual ~X509IssuerSerialImpl() {}
- X509IssuerSerialImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ X509IssuerSerialImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
public:
virtual ~X509DataImpl() {}
- X509DataImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ X509DataImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
}
public:
virtual ~SPKIDataImpl() {}
- SPKIDataImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ SPKIDataImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
}
public:
virtual ~PGPDataImpl() {}
- PGPDataImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ PGPDataImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
XMLString::release(&m_Id);
}
- KeyInfoImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ KeyInfoImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType), m_Id(NULL) {
}
using namespace xmlsignature;
using namespace xmltooling::logging;
using namespace xmltooling;
+using namespace xercesc;
using namespace std;
using xmlconstants::XMLSIG_NS;
using xmlconstants::XMLSIG_PREFIX;
XMLObject*
#endif
SignatureBuilder::buildObject(
- const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType
+ const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType
) const
{
if (!XMLString::equals(nsURI,XMLSIG_NS) || !XMLString::equals(localName,Signature::LOCAL_NAME))
using namespace soap11;
using namespace xmltooling::logging;
using namespace xmltooling;
+using namespace xercesc;
using namespace std;
void SOAPTransport::send(istream* in)
bool SOAPClient::handleFault(const Fault& fault)
{
- const QName* code = (fault.getFaultcode() ? fault.getFaultcode()->getCode() : NULL);
+ const xmltooling::QName* code = (fault.getFaultcode() ? fault.getFaultcode()->getCode() : NULL);
auto_ptr_char str((fault.getFaultstring() ? fault.getFaultstring()->getString() : NULL));
Category::getInstance(XMLTOOLING_LOGCAT".SOAPClient").error(
"SOAP client detected a Fault: (%s) (%s)",
using namespace soap11;
using namespace xmltooling;
+using namespace xercesc;
using namespace std;
using xmlconstants::SOAP11ENV_NS;
using xmlconstants::SOAP11ENV_PREFIX;
public AbstractXMLObjectMarshaller,
public AbstractXMLObjectUnmarshaller
{
- QName* m_qname;
+ xmltooling::QName* m_qname;
public:
virtual ~FaultcodeImpl() {
delete m_qname;
}
- FaultcodeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ FaultcodeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType), m_qname(NULL) {
}
setCode(src.getCode());
}
- const QName* getCode() const {
+ const xmltooling::QName* getCode() const {
return m_qname;
}
- void setCode(const QName* qname) {
+ void setCode(const xmltooling::QName* qname) {
m_qname=prepareForAssignment(m_qname,qname);
if (m_qname) {
auto_ptr_XMLCh temp(m_qname->toString().c_str());
public:
virtual ~DetailImpl() {}
- DetailImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ DetailImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
}
public:
virtual ~FaultImpl() {}
- FaultImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ FaultImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
virtual ~BodyImpl() {
}
- BodyImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ BodyImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
}
virtual ~HeaderImpl() {
}
- HeaderImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ HeaderImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
}
public:
virtual ~EnvelopeImpl() {}
- EnvelopeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType)
+ EnvelopeImpl(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const xmltooling::QName* schemaType)
: AbstractXMLObject(nsURI, localName, prefix, schemaType) {
init();
}
static const XMLCh _MUSTUNDERSTAND[] = UNICODE_LITERAL_14(M,u,s,t,U,n,d,e,r,s,t,a,n,d);
static const XMLCh _VERSIONMISMATCH[] = UNICODE_LITERAL_15(V,e,r,s,i,o,n,M,i,s,m,a,t,c,h);
-QName Faultcode::CLIENT(SOAP11ENV_NS,_CLIENT,SOAP11ENV_PREFIX);
-QName Faultcode::SERVER(SOAP11ENV_NS,_SERVER,SOAP11ENV_PREFIX);
-QName Faultcode::MUSTUNDERSTAND(SOAP11ENV_NS,_MUSTUNDERSTAND,SOAP11ENV_PREFIX);
-QName Faultcode::VERSIONMISMATCH(SOAP11ENV_NS,_VERSIONMISMATCH,SOAP11ENV_PREFIX);
+xmltooling::QName Faultcode::CLIENT(SOAP11ENV_NS,_CLIENT,SOAP11ENV_PREFIX);
+xmltooling::QName Faultcode::SERVER(SOAP11ENV_NS,_SERVER,SOAP11ENV_PREFIX);
+xmltooling::QName Faultcode::MUSTUNDERSTAND(SOAP11ENV_NS,_MUSTUNDERSTAND,SOAP11ENV_PREFIX);
+xmltooling::QName Faultcode::VERSIONMISMATCH(SOAP11ENV_NS,_VERSIONMISMATCH,SOAP11ENV_PREFIX);
#include <xercesc/util/XMLUTF8Transcoder.hpp>
#include <xercesc/util/XMLUniDefs.hpp>
+using namespace xercesc;
+
static const XMLCh UTF8[]={ chLatin_U, chLatin_T, chLatin_F, chDigit_8, chNull };
char* xmltooling::toUTF8(const XMLCh* src, bool use_malloc)
{
- unsigned int eaten,factor=1,bufsize;
- unsigned int srclen=XMLString::stringLen(src);
+ xsecsize_t eaten,factor=1,bufsize;
+ xsecsize_t srclen=XMLString::stringLen(src);
XMLUTF8Transcoder t(UTF8, 4096); // block size isn't used any more anyway
do {
bufsize = factor*srclen + 10;
XMLCh* xmltooling::fromUTF8(const char* src, bool use_malloc)
{
- unsigned int eaten;
- unsigned int srclen=strlen(src);
+ xsecsize_t eaten;
+ xsecsize_t srclen=strlen(src);
XMLUTF8Transcoder t(UTF8, 4096); // block size isn't used any more anyway
XMLCh* buf = use_malloc ? reinterpret_cast<XMLCh*>(malloc((srclen+1)*sizeof(XMLCh))) : new XMLCh[srclen + 1];
unsigned char* sizes=new unsigned char[srclen];
#include <xmltooling/util/CurlNetAccessor.hpp>
using namespace xmltooling;
+using namespace xercesc;
const XMLCh xmltooling::CurlNetAccessor::fgMyName[] =
{
// a HTTP or FTP URL.
//
-class XMLTOOL_API CurlNetAccessor : public XMLNetAccessor
+class XMLTOOL_API CurlNetAccessor : public xercesc::XMLNetAccessor
{
public :
CurlNetAccessor();
~CurlNetAccessor();
- virtual BinInputStream* makeNew(const XMLURL& urlSource, const XMLNetHTTPInfo* httpInfo=0);
+ virtual xercesc::BinInputStream* makeNew(const xercesc::XMLURL& urlSource, const xercesc::XMLNetHTTPInfo* httpInfo=0);
virtual const XMLCh* getId() const;
private :
#include <xmltooling/util/CurlURLInputStream.hpp>
using namespace xmltooling;
-
+using namespace xercesc;
CurlURLInputStream::CurlURLInputStream(const XMLURL& urlSource, const XMLNetHTTPInfo* httpInfo/*=0*/)
: fMemoryManager(urlSource.getMemoryManager())
}
-unsigned int CurlURLInputStream::readBytes(XMLByte* const toFill, const unsigned int maxToRead)
+xsecsize_t CurlURLInputStream::readBytes(XMLByte* const toFill, const xsecsize_t maxToRead)
{
if (!fInputStream) {
// Allocate the curl easy handle.
// parser.
//
-class XMLTOOL_API CurlURLInputStream : public BinInputStream
+class XMLTOOL_API CurlURLInputStream : public xercesc::BinInputStream
{
public :
- CurlURLInputStream(const XMLURL& urlSource, const XMLNetHTTPInfo* httpInfo=0);
+ CurlURLInputStream(const xercesc::XMLURL& urlSource, const xercesc::XMLNetHTTPInfo* httpInfo=0);
~CurlURLInputStream();
- unsigned int curPos() const;
- unsigned int readBytes(XMLByte* const toFill, const unsigned int maxToRead);
+#ifdef XMLTOOLING_XERCESC_64BITSAFE
+ XMLFilePos
+#else
+ unsigned int
+#endif
+ curPos() const;
+ xsecsize_t readBytes(XMLByte* const toFill, const xsecsize_t maxToRead);
+
+#ifdef XMLTOOLING_XERCESC_INPUTSTREAM_HAS_CONTENTTYPE
+ const XMLCh* getContentType() const {
+ return NULL;
+ }
+#endif
private :
// -----------------------------------------------------------------------
static size_t staticWriteCallback(void* ptr, size_t size, size_t nmemb, void* stream);
- std::stringstream fUnderlyingStream;
- MemoryManager* fMemoryManager;
- XMLURL fURLSource;
- ArrayJanitor<char> fURL;
+ std::stringstream fUnderlyingStream;
+ xercesc::MemoryManager* fMemoryManager;
+ xercesc::XMLURL fURLSource;
+ xercesc::ArrayJanitor<char> fURL;
StreamInputSource::StreamBinInputStream* fInputStream;
logging::Category& m_log;
}; // CurlURLInputStream
-inline unsigned int CurlURLInputStream::curPos() const
+inline
+#ifdef XMLTOOLING_XERCESC_64BITSAFE
+ XMLFilePos
+#else
+ unsigned int
+#endif
+CurlURLInputStream::curPos() const
{
return fInputStream ? fInputStream->curPos() : 0;
}
#include <xercesc/util/Janitor.hpp>
using namespace xmltooling;
+using namespace xercesc;
using namespace std;
//
XMLCh strBuffer[16];
assert(expLen < 16);
XMLString::binToText(fValue[ind], strBuffer, expLen, 10);
- int actualLen = XMLString::stringLen(strBuffer);
+ int actualLen = (int) XMLString::stringLen(strBuffer);
int i;
//append leading zeros
for (i = 0; i < expLen - actualLen; i++)
XMLCh strBuffer[16];
// let's hope we get no years of 15 digits...
XMLString::binToText(fValue[ind], strBuffer, 15, 10);
- int actualLen = XMLString::stringLen(strBuffer);
+ int actualLen = (int) XMLString::stringLen(strBuffer);
// don't forget that years can be negative...
int negativeYear = 0;
if(strBuffer[0] == chDash)
inline void DateTime::setBuffer(const XMLCh* const aString)
{
reset();
- fEnd = xercesc::XMLString::stringLen(aString);
+ fEnd = (int) xercesc::XMLString::stringLen(aString);
if (fEnd > 0) {
if (fEnd > fBufferMaxLen) {
delete[] fBuffer;
using namespace xmltooling::logging;
using namespace xmltooling;
+using namespace xercesc;
using namespace std;
ParserPool::ParserPool(bool namespaceAware, bool schemaAware)
return DOMImplementationRegistry::getDOMImplementation(NULL)->createDocument();
}
-DOMDocument* ParserPool::parse(DOMInputSource& domsrc)
+DOMDocument* ParserPool::parse(
+#ifdef XMLTOOLING_XERCESC_COMPLIANT_DOMLS
+ DOMLSInput& domsrc
+ )
+{
+ DOMLSParser* parser=checkoutBuilder();
+ XercesJanitor<DOMLSParser> janitor(parser);
+ try {
+ DOMDocument* doc=parser->parse(&domsrc);
+ parser->getDomConfig()->setParameter(XMLUni::fgXercesUserAdoptsDOMDocument,true);
+#else
+ DOMInputSource& domsrc
+ )
{
DOMBuilder* parser=checkoutBuilder();
XercesJanitor<DOMBuilder> janitor(parser);
try {
DOMDocument* doc=parser->parse(domsrc);
parser->setFeature(XMLUni::fgXercesUserAdoptsDOMDocument,true);
+#endif
checkinBuilder(janitor.release());
return doc;
}
return true;
}
-DOMInputSource* ParserPool::resolveEntity(const XMLCh* const publicId, const XMLCh* const systemId, const XMLCh* const baseURI)
+#ifdef XMLTOOLING_XERCESC_COMPLIANT_DOMLS
+DOMLSInput* ParserPool::resolveResource(
+ const XMLCh *const resourceType,
+ const XMLCh *const namespaceUri,
+ const XMLCh *const publicId,
+ const XMLCh *const systemId,
+ const XMLCh *const baseURI
+ )
+#else
+DOMInputSource* ParserPool::resolveEntity(
+ const XMLCh* const publicId, const XMLCh* const systemId, const XMLCh* const baseURI
+ )
+#endif
{
#if _DEBUG
xmltooling::NDC ndc("resolveEntity");
throw XMLParserException(string("unclassified error during XML parsing: ") + (temp.get() ? temp.get() : "no message"));
}
+#ifdef XMLTOOLING_XERCESC_COMPLIANT_DOMLS
+
+#else
+
DOMBuilder* ParserPool::createBuilder()
{
static const XMLCh impltype[] = { chLatin_L, chLatin_S, chNull };
}
}
-unsigned int StreamInputSource::StreamBinInputStream::readBytes(XMLByte* const toFill, const unsigned int maxToRead)
+#endif
+
+xsecsize_t StreamInputSource::StreamBinInputStream::readBytes(XMLByte* const toFill, const xsecsize_t maxToRead)
{
XMLByte* target=toFill;
- unsigned int bytes_read=0,request=maxToRead;
+ xsecsize_t bytes_read=0,request=maxToRead;
// Fulfill the rest by reading from the stream.
if (request && !m_is.eof() && !m_is.fail()) {
/*
- * Copyright 2001-2007 Internet2
+ * Copyright 2001-2008 Internet2
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
/**
* @file xmltooling/util/ParserPool.h
*
- * A thread-safe pool of DOMBuilders that share characteristics.
+ * A thread-safe pool of parsers that share characteristics.
*/
#ifndef __xmltooling_pool_h__
#include <xercesc/util/BinInputStream.hpp>
#include <xercesc/util/SecurityManager.hpp>
+#ifndef XMLTOOLING_NO_XMLSEC\r
+# include <xsec/framework/XSECDefs.hpp>\r
+#endif
+
#if defined (_MSC_VER)
#pragma warning( push )
#pragma warning( disable : 4250 4251 )
/**
* A thread-safe pool of DOMBuilders that share characteristics.
*/
- class XMLTOOL_API ParserPool : public xercesc::DOMEntityResolver, xercesc::DOMErrorHandler
+ class XMLTOOL_API ParserPool : xercesc::DOMErrorHandler,
+#ifdef XMLTOOLING_XERCESC_COMPLIANT_DOMLS
+ public xercesc::DOMLSResourceResolver
+#else
+ public xercesc::DOMEntityResolver
+#endif
{
MAKE_NONCOPYABLE(ParserPool);
public:
/**
* Parses a document using a pooled parser with the proper settings
*
- * @param domsrc A DOM source containing the content to be parsed
+ * @param domsrc An input source containing the content to be parsed
* @return The DOM document resulting from the parse
* @throws XMLParserException thrown if there was a problem reading, parsing, or validating the XML
*/
- xercesc::DOMDocument* parse(xercesc::DOMInputSource& domsrc);
+ xercesc::DOMDocument* parse(
+#ifdef XMLTOOLING_XERCESC_COMPLIANT_DOMLS
+ xercesc::DOMLSInput& domsrc
+#else
+ xercesc::DOMInputSource& domsrc
+#endif
+ );
/**
* Parses a document using a pooled parser with the proper settings
/**
* Supplies all external entities (primarily schemas) to the parser
*/
- xercesc::DOMInputSource* resolveEntity(const XMLCh* const publicId, const XMLCh* const systemId, const XMLCh* const baseURI);
+#ifdef XMLTOOLING_XERCESC_COMPLIANT_DOMLS
+ xercesc::DOMLSInput* resolveResource(
+ const XMLCh *const resourceType,
+ const XMLCh *const namespaceUri,
+ const XMLCh *const publicId,
+ const XMLCh *const systemId,
+ const XMLCh *const baseURI
+ );
+#else
+ xercesc::DOMInputSource* resolveEntity(
+ const XMLCh* const publicId, const XMLCh* const systemId, const XMLCh* const baseURI
+ );
+#endif
/**
* Handles parsing errors
bool handleError(const xercesc::DOMError& e);
private:
+#ifdef XMLTOOLING_XERCESC_COMPLIANT_DOMLS
+ xercesc::DOMLSParser* createBuilder();
+ xercesc::DOMLSParser* checkoutBuilder();
+ void checkinBuilder(xercesc::DOMLSParser* builder);
+#else
xercesc::DOMBuilder* createBuilder();
xercesc::DOMBuilder* checkoutBuilder();
void checkinBuilder(xercesc::DOMBuilder* builder);
+#endif
#ifdef HAVE_GOOD_STL
xstring m_schemaLocations;
std::map<std::string,std::string> m_schemaLocMap;
#endif
bool m_namespaceAware,m_schemaAware;
+#ifdef XMLTOOLING_XERCESC_COMPLIANT_DOMLS
+ std::stack<xercesc::DOMLSParser*> m_pool;
+#else
std::stack<xercesc::DOMBuilder*> m_pool;
+#endif
Mutex* m_lock;
xercesc::SecurityManager* m_security;
};
/**
* Constructs a Xerces input stream around a C++ input stream reference.
*
- * @param is reference to an input stream
+ * @param is reference to an input stream
*/
StreamBinInputStream(std::istream& is) : m_is(is), m_pos(0) {}
/// @cond off
- virtual unsigned int curPos() const { return m_pos; }
- virtual unsigned int readBytes(XMLByte* const toFill, const unsigned int maxToRead);
+#ifdef XMLTOOLING_XERCESC_64BITSAFE
+ XMLFilePos
+#else
+ unsigned int
+#endif
+ curPos() const { return m_pos; }
+ xsecsize_t readBytes(XMLByte* const toFill, const xsecsize_t maxToRead);
+#ifdef XMLTOOLING_XERCESC_64BITSAFE
+ const XMLCh* getContentType() const { return NULL; }
+#endif
/// @endcond
private:
std::istream& m_is;
- unsigned int m_pos;
+ xsecsize_t m_pos;
};
private:
\r
using namespace xmltooling::logging;\r
using namespace xmltooling;\r
+using namespace xercesc;\r
using namespace std;\r
\r
static const XMLCh uri[] = UNICODE_LITERAL_3(u,r,i);\r
using namespace std;
namespace xmltooling {
- XMLTOOL_DLLLOCAL PluginManager<StorageService,string,const DOMElement*>::Factory MemoryStorageServiceFactory;
+ XMLTOOL_DLLLOCAL PluginManager<StorageService,string,const xercesc::DOMElement*>::Factory MemoryStorageServiceFactory;
};
void XMLTOOL_API xmltooling::registerStorageServices()
#include "util/XMLConstants.h"
#include <xercesc/util/XMLUniDefs.hpp>
+using namespace xercesc;
+
const XMLCh xmlconstants::XML_NS[] = // http://www.w3.org/XML/1998/namespace
{ chLatin_h, chLatin_t, chLatin_t, chLatin_p, chColon, chForwardSlash, chForwardSlash,
chLatin_w, chLatin_w, chLatin_w, chPeriod, chLatin_w, chDigit_3, chPeriod, chLatin_o, chLatin_r, chLatin_g, chForwardSlash,
#include <xercesc/util/XMLUniDefs.hpp>
using namespace xmltooling;
+using namespace xercesc;
using namespace std;
static const XMLCh type[]={chLatin_t, chLatin_y, chLatin_p, chLatin_e, chNull };
return false;
}
-QName* XMLHelper::getXSIType(const DOMElement* e)
+xmltooling::QName* XMLHelper::getXSIType(const DOMElement* e)
{
DOMAttr* attribute = e->getAttributeNodeNS(xmlconstants::XSI_NS, type);
if (attribute) {
XMLCh* prefix=new XMLCh[i+1];
XMLString::subString(prefix,attributeValue,0,i);
prefix[i]=chNull;
- QName* ret=new QName(e->lookupNamespaceURI(prefix), attributeValue + i + 1, prefix);
+ xmltooling::QName* ret=new xmltooling::QName(e->lookupNamespaceURI(prefix), attributeValue + i + 1, prefix);
delete[] prefix;
return ret;
}
else {
- return new QName(e->lookupNamespaceURI(NULL), attributeValue);
+ return new xmltooling::QName(e->lookupNamespaceURI(NULL), attributeValue);
}
}
}
return NULL;
}
-QName* XMLHelper::getNodeQName(const DOMNode* domNode)
+xmltooling::QName* XMLHelper::getNodeQName(const DOMNode* domNode)
{
if (domNode)
- return new QName(domNode->getNamespaceURI(), domNode->getLocalName(), domNode->getPrefix());
+ return new xmltooling::QName(domNode->getNamespaceURI(), domNode->getLocalName(), domNode->getPrefix());
return NULL;
}
-QName* XMLHelper::getAttributeValueAsQName(const DOMAttr* attribute)
+xmltooling::QName* XMLHelper::getAttributeValueAsQName(const DOMAttr* attribute)
{
if (!attribute)
return NULL;
XMLCh* prefix=new XMLCh[i+1];
XMLString::subString(prefix,attributeValue,0,i);
prefix[i]=chNull;
- QName* ret=new QName(attribute->lookupNamespaceURI(prefix), attributeValue + i + 1, prefix);
+ xmltooling::QName* ret=new xmltooling::QName(attribute->lookupNamespaceURI(prefix), attributeValue + i + 1, prefix);
delete[] prefix;
return ret;
}
- return new QName(attribute->lookupNamespaceURI(NULL), attributeValue);
+ return new xmltooling::QName(attribute->lookupNamespaceURI(NULL), attributeValue);
}
DOMElement* XMLHelper::appendChildElement(DOMElement* parentElement, DOMElement* childElement)
{
static const XMLCh impltype[] = { chLatin_L, chLatin_S, chNull };
static const XMLCh UTF8[]={ chLatin_U, chLatin_T, chLatin_F, chDigit_8, chNull };
+
+ MemBufFormatTarget target;
DOMImplementation* impl=DOMImplementationRegistry::getDOMImplementation(impltype);
- DOMWriter* serializer=(static_cast<DOMImplementationLS*>(impl))->createDOMWriter();
+
+#ifdef XMLTOOLING_XERCESC_COMPLIANT_DOMLS
+ DOMLSSerializer* serializer = static_cast<DOMImplementationLS*>(impl)->createLSSerializer();
+ XercesJanitor<DOMLSSerializer> janitor(serializer);
+ if (pretty && serializer->getDomConfig()->canSetParameter(XMLUni::fgDOMWRTFormatPrettyPrint, pretty))
+ serializer->getDomConfig()->setParameter(XMLUni::fgDOMWRTFormatPrettyPrint, pretty);
+ DOMLSOutput *theOutput = static_cast<DOMImplementationLS*>(impl)->createLSOutput();\r
+ XercesJanitor<DOMLSOutput> j_theOutput(theOutput);\r
+ theOutput->setEncoding(UTF8);\r
+ theOutput->setByteStream(&target);
+ if (!serializer->write(n, theOutput))
+ throw XMLParserException("unable to serialize XML");
+#else
+ DOMWriter* serializer = static_cast<DOMImplementationLS*>(impl)->createDOMWriter();
XercesJanitor<DOMWriter> janitor(serializer);
serializer->setEncoding(UTF8);
if (pretty && serializer->canSetFeature(XMLUni::fgDOMWRTFormatPrettyPrint, pretty))
serializer->setFeature(XMLUni::fgDOMWRTFormatPrettyPrint, pretty);
- MemBufFormatTarget target;
- if (!serializer->writeNode(&target,*n))
+ if (!serializer->writeNode(&target, *n))
throw XMLParserException("unable to serialize XML");
+#endif
+
buf.erase();
buf.append(reinterpret_cast<const char*>(target.getRawBuffer()),target.getLen());
}
StreamFormatTarget(std::ostream& out) : m_out(out) {}
~StreamFormatTarget() {}
- void writeChars(const XMLByte *const toWrite, const unsigned int count, XMLFormatter *const formatter) {
+ void writeChars(const XMLByte *const toWrite, const xsecsize_t count, XMLFormatter *const formatter) {
m_out.write(reinterpret_cast<const char*>(toWrite),count);
}
{
static const XMLCh impltype[] = { chLatin_L, chLatin_S, chNull };
static const XMLCh UTF8[]={ chLatin_U, chLatin_T, chLatin_F, chDigit_8, chNull };
+
+ StreamFormatTarget target(out);
DOMImplementation* impl=DOMImplementationRegistry::getDOMImplementation(impltype);
+
+#ifdef XMLTOOLING_XERCESC_COMPLIANT_DOMLS
+ DOMLSSerializer* serializer = static_cast<DOMImplementationLS*>(impl)->createLSSerializer();
+ XercesJanitor<DOMLSSerializer> janitor(serializer);
+ if (pretty && serializer->getDomConfig()->canSetParameter(XMLUni::fgDOMWRTFormatPrettyPrint, pretty))
+ serializer->getDomConfig()->setParameter(XMLUni::fgDOMWRTFormatPrettyPrint, pretty);
+ DOMLSOutput *theOutput = static_cast<DOMImplementationLS*>(impl)->createLSOutput();\r
+ XercesJanitor<DOMLSOutput> j_theOutput(theOutput);\r
+ theOutput->setEncoding(UTF8);\r
+ theOutput->setByteStream(&target);
+ if (!serializer->write(n, theOutput))
+ throw XMLParserException("unable to serialize XML");
+#else
DOMWriter* serializer=(static_cast<DOMImplementationLS*>(impl))->createDOMWriter();
XercesJanitor<DOMWriter> janitor(serializer);
serializer->setEncoding(UTF8);
if (pretty && serializer->canSetFeature(XMLUni::fgDOMWRTFormatPrettyPrint, pretty))
serializer->setFeature(XMLUni::fgDOMWRTFormatPrettyPrint, pretty);
- StreamFormatTarget target(out);
if (!serializer->writeNode(&target,*n))
throw XMLParserException("unable to serialize XML");
+#endif
+
return out;
}
/>\r
<Tool\r
Name="VCLinkerTool"\r
- AdditionalDependencies="wsock32.lib log4shib1D.lib xerces-c_2D.lib"\r
+ AdditionalDependencies="wsock32.lib log4shib1D.lib xerces-c_3D.lib"\r
OutputFile="$(OutDir)\$(ProjectName)1_2D.dll"\r
LinkIncremental="2"\r
GenerateDebugInformation="true"\r
/>\r
<Tool\r
Name="VCLinkerTool"\r
- AdditionalDependencies="wsock32.lib log4shib1D.lib xerces-c_2D.lib"\r
+ AdditionalDependencies="wsock32.lib log4shib1D.lib xerces-c_3D.lib"\r
OutputFile="$(OutDir)\$(ProjectName)1_2D.dll"\r
LinkIncremental="2"\r
GenerateDebugInformation="true"\r
/>\r
<Tool\r
Name="VCLinkerTool"\r
- AdditionalDependencies="wsock32.lib log4shib1.lib xerces-c_2.lib"\r
+ AdditionalDependencies="wsock32.lib log4shib1.lib xerces-c_3.lib"\r
OutputFile="$(OutDir)\$(ProjectName)1_2.dll"\r
GenerateDebugInformation="true"\r
SubSystem="2"\r
/>\r
<Tool\r
Name="VCLinkerTool"\r
- AdditionalDependencies="wsock32.lib log4shib1.lib xerces-c_2.lib"\r
+ AdditionalDependencies="wsock32.lib log4shib1.lib xerces-c_3.lib"\r
OutputFile="$(OutDir)\$(ProjectName)1_2.dll"\r
GenerateDebugInformation="true"\r
SubSystem="2"\r
/>\r
<Tool\r
Name="VCLinkerTool"\r
- AdditionalDependencies="wsock32.lib log4shib1D.lib xerces-c_2D.lib xsec_1D.lib libeay32D.lib ssleay32D.lib libcurld_imp.lib"\r
+ AdditionalDependencies="wsock32.lib log4shib1D.lib xerces-c_3D.lib xsec_1D.lib libeay32D.lib ssleay32D.lib libcurld_imp.lib"\r
OutputFile="$(OutDir)\$(ProjectName)1_2D.dll"\r
LinkIncremental="2"\r
GenerateDebugInformation="true"\r
/>\r
<Tool\r
Name="VCLinkerTool"\r
- AdditionalDependencies="wsock32.lib log4shib1D.lib xerces-c_2D.lib xsec_1D.lib libeay32D.lib ssleay32D.lib libcurld_imp.lib"\r
+ AdditionalDependencies="wsock32.lib log4shib1D.lib xerces-c_3D.lib xsec_1D.lib libeay32D.lib ssleay32D.lib libcurld_imp.lib"\r
OutputFile="$(OutDir)\$(ProjectName)1_2D.dll"\r
LinkIncremental="2"\r
GenerateDebugInformation="true"\r
/>\r
<Tool\r
Name="VCLinkerTool"\r
- AdditionalDependencies="wsock32.lib log4shib1.lib xerces-c_2.lib xsec_1.lib libeay32.lib ssleay32.lib libcurl_imp.lib"\r
+ AdditionalDependencies="wsock32.lib log4shib1.lib xerces-c_3.lib xsec_1.lib libeay32.lib ssleay32.lib libcurl_imp.lib"\r
OutputFile="$(OutDir)\$(ProjectName)1_2.dll"\r
GenerateDebugInformation="true"\r
SubSystem="2"\r
/>\r
<Tool\r
Name="VCLinkerTool"\r
- AdditionalDependencies="wsock32.lib log4shib1.lib xerces-c_2.lib xsec_1.lib libeay32.lib ssleay32.lib libcurl_imp.lib"\r
+ AdditionalDependencies="wsock32.lib log4shib1.lib xerces-c_3.lib xsec_1.lib libeay32.lib ssleay32.lib libcurl_imp.lib"\r
OutputFile="$(OutDir)\$(ProjectName)1_2.dll"\r
GenerateDebugInformation="true"\r
SubSystem="2"\r
/>\r
<Tool\r
Name="VCLinkerTool"\r
- AdditionalDependencies="xerces-c_2D.lib xsec_1D.lib"\r
+ AdditionalDependencies="xerces-c_3D.lib xsec_1D.lib"\r
LinkIncremental="2"\r
GenerateDebugInformation="true"\r
SubSystem="1"\r
/>\r
<Tool\r
Name="VCLinkerTool"\r
- AdditionalDependencies="xerces-c_2D.lib xsec_1D.lib"\r
+ AdditionalDependencies="xerces-c_3D.lib xsec_1D.lib"\r
LinkIncremental="2"\r
GenerateDebugInformation="true"\r
SubSystem="1"\r
/>\r
<Tool\r
Name="VCLinkerTool"\r
- AdditionalDependencies="xerces-c_2.lib xsec_1.lib"\r
+ AdditionalDependencies="xerces-c_3.lib xsec_1.lib"\r
GenerateDebugInformation="true"\r
SubSystem="1"\r
OptimizeReferences="2"\r
/>\r
<Tool\r
Name="VCLinkerTool"\r
- AdditionalDependencies="xerces-c_2.lib xsec_1.lib"\r
+ AdditionalDependencies="xerces-c_3.lib xsec_1.lib"\r
GenerateDebugInformation="true"\r
SubSystem="1"\r
OptimizeReferences="2"\r
>\r
<Tool\r
Name="VCCustomBuildTool"\r
- CommandLine="perl.exe -w \cxxtest\cxxtestgen.pl --part --have-eh --have-std --abort-on-fail -o "$(InputName)".cpp "$(InputPath)""\r
+ CommandLine="perl.exe -w \cxxtest\cxxtestgen.pl --part --have-eh --have-std --abort-on-fail -o "$(InputName)".cpp "$(InputPath)"
"\r
Outputs="$(InputName).cpp"\r
/>\r
</FileConfiguration>\r
>\r
<Tool\r
Name="VCCustomBuildTool"\r
- CommandLine="perl.exe -w \cxxtest\cxxtestgen.pl --part --have-eh --have-std --abort-on-fail -o "$(InputName)".cpp "$(InputPath)""\r
+ CommandLine="perl.exe -w \cxxtest\cxxtestgen.pl --part --have-eh --have-std --abort-on-fail -o "$(InputName)".cpp "$(InputPath)"
"\r
Outputs="$(InputName).cpp"\r
/>\r
</FileConfiguration>\r
>\r
<Tool\r
Name="VCCustomBuildTool"\r
- CommandLine="perl.exe -w \cxxtest\cxxtestgen.pl --part --have-eh --have-std --abort-on-fail -o "$(InputName)".cpp "$(InputPath)""\r
+ CommandLine="perl.exe -w \cxxtest\cxxtestgen.pl --part --have-eh --have-std --abort-on-fail -o "$(InputName)".cpp "$(InputPath)"
"\r
Outputs="$(InputName).cpp"\r
/>\r
</FileConfiguration>\r
>\r
<Tool\r
Name="VCCustomBuildTool"\r
- CommandLine="perl.exe -w \cxxtest\cxxtestgen.pl --part --have-eh --have-std --abort-on-fail -o "$(InputName)".cpp "$(InputPath)""\r
+ CommandLine="perl.exe -w \cxxtest\cxxtestgen.pl --part --have-eh --have-std --abort-on-fail -o "$(InputName)".cpp "$(InputPath)"
"\r
Outputs="$(InputName).cpp"\r
/>\r
</FileConfiguration>\r