You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gs...@apache.org on 2014/11/07 17:26:31 UTC
svn commit: r1637402 - in /qpid/trunk/qpid/cpp/src/qpid/xml: XmlExchange.cpp
XmlExchange.h
Author: gsim
Date: Fri Nov 7 16:26:30 2014
New Revision: 1637402
URL: http://svn.apache.org/r1637402
Log:
QPID-6218: no need to retreieve external resources
Modified:
qpid/trunk/qpid/cpp/src/qpid/xml/XmlExchange.cpp
qpid/trunk/qpid/cpp/src/qpid/xml/XmlExchange.h
Modified: qpid/trunk/qpid/cpp/src/qpid/xml/XmlExchange.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/xml/XmlExchange.cpp?rev=1637402&r1=1637401&r2=1637402&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/xml/XmlExchange.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/xml/XmlExchange.cpp Fri Nov 7 16:26:30 2014
@@ -36,6 +36,7 @@
#include "qpid/Plugin.h"
#include <xercesc/framework/MemBufInputSource.hpp>
+#include <xercesc/util/XMLEntityResolver.hpp>
#ifdef XQ_EFFECTIVE_BOOLEAN_VALUE_HPP
#include <xqilla/ast/XQEffectiveBooleanValue.hpp>
@@ -59,6 +60,23 @@ namespace _qmf = qmf::org::apache::qpid:
namespace qpid {
namespace broker {
+
+namespace {
+const char* DUMMY("dummy");
+}
+class XmlNullResolver : public XERCES_CPP_NAMESPACE::XMLEntityResolver
+{
+ public:
+ XERCES_CPP_NAMESPACE::InputSource* resolveEntity(XERCES_CPP_NAMESPACE::XMLResourceIdentifier* xmlri)
+ {
+ if (xmlri->getResourceIdentifierType() == XERCES_CPP_NAMESPACE::XMLResourceIdentifier::ExternalEntity) {
+ return new XERCES_CPP_NAMESPACE::MemBufInputSource(0, 0, DUMMY);
+ } else {
+ return 0;
+ }
+ }
+};
+
XQilla XmlBinding::xqilla;
@@ -111,7 +129,7 @@ XmlExchange::XmlExchange(const std::stri
XmlExchange::XmlExchange(const std::string& _name, bool _durable, bool autodelete,
const FieldTable& _args, Manageable* _parent, Broker* b) :
- Exchange(_name, _durable, autodelete, _args, _parent, b)
+ Exchange(_name, _durable, autodelete, _args, _parent, b), resolver(new XmlNullResolver)
{
if (mgmtExchange != 0)
mgmtExchange->set_type (typeName);
@@ -269,6 +287,7 @@ bool XmlExchange::matches(Query& query,
if (parse_message_content) {
+ if (resolver) context->setXMLEntityResolver(resolver.get());
msgContent = msg.getMessage().getContent();
QPID_LOG(trace, "matches: message content is [" << msgContent << "]");
Modified: qpid/trunk/qpid/cpp/src/qpid/xml/XmlExchange.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/xml/XmlExchange.h?rev=1637402&r1=1637401&r2=1637402&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/xml/XmlExchange.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/xml/XmlExchange.h Fri Nov 7 16:26:30 2014
@@ -58,12 +58,15 @@ struct XmlBinding : public Exchange::Bin
};
+class XmlNullResolver;
+
class XmlExchange : public virtual Exchange {
typedef std::map<std::string, XmlBinding::vector> XmlBindingsMap;
XmlBindingsMap bindingsMap;
qpid::sys::RWlock lock;
+ boost::shared_ptr<XmlNullResolver> resolver;
bool matches(Query& query, Deliverable& msg, bool parse_message_content);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org