X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=source%2Fdiameter%2Fcodec%2FAvp.cpp;h=23381117b1cc754a344c5ccb0a9ea54827678916;hb=e782294456d0877aa8fc05aa931291ac79808eb3;hp=be51349b25189c37c348179f1949aab199a77e7b;hpb=7b7396649970852a360255f1db2f044d13913e39;p=anna.git diff --git a/source/diameter/codec/Avp.cpp b/source/diameter/codec/Avp.cpp index be51349..2338111 100644 --- a/source/diameter/codec/Avp.cpp +++ b/source/diameter/codec/Avp.cpp @@ -1425,9 +1425,11 @@ void Avp::fromXML(const anna::xml::Node* avpNode) throw(anna::RuntimeException) int i_aux = code->getIntegerValue(); if(i_aux < 0) { - std::string msg = "Error processing avp getValue(); - msg += "': negative values are not allowed"; - throw anna::RuntimeException(msg, ANNA_FILE_LOCATION); + LOGWARNING( + std::string msg = "Error processing avp getValue(); + msg += "': negative value read from xml"; + anna::Logger::warning(msg, ANNA_FILE_LOCATION); + ); } U24 u_code = i_aux; @@ -1646,9 +1648,16 @@ anna::xml::Node* Avp::asXML(anna::xml::Node* parent) const throw() { //------------------------------------------------------------------------------ //----------------------------------------------------------- Avp::asXMLString() //------------------------------------------------------------------------------ -std::string Avp::asXMLString() const throw() { +std::string Avp::asXMLString(bool normalize) const throw() { anna::xml::Node root("root"); - return anna::xml::Compiler().apply(asXML(&root)); + + anna::xml::Compiler::Mode::_v mode = normalize ? anna::xml::Compiler::Mode::Sort : anna::xml::Compiler::Mode::Visual; + std::string result = anna::xml::Compiler().apply(asXML(&root), mode); + + if (normalize) + result.erase(std::remove(result.begin(), result.end(), '\n'), result.end()); + + return result; } @@ -1657,5 +1666,6 @@ std::string Avp::asXMLString() const throw() { //------------------------------------------------------------------------------ bool Avp::isLike(const std::string &pattern) const throw() { anna::RegularExpression re(pattern); - return re.isLike(asXMLString()); + return re.isLike(asXMLString(true /* normalize by mean sorting attribute names and removing new lines */)); } +