int i_aux = code->getIntegerValue();
if(i_aux < 0) {
- std::string msg = "Error processing avp <code '"; msg += code->getValue();
- msg += "': negative values are not allowed";
- throw anna::RuntimeException(msg, ANNA_FILE_LOCATION);
+ LOGWARNING(
+ std::string msg = "Error processing avp <code '"; msg += code->getValue();
+ msg += "': negative value read from xml";
+ anna::Logger::warning(msg, ANNA_FILE_LOCATION);
+ );
}
U24 u_code = i_aux;
//------------------------------------------------------------------------------
//----------------------------------------------------------- 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;
}
//------------------------------------------------------------------------------
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 */));
}
+