Allow diameter message & avp to normalize their xml representation
[anna.git] / source / diameter / codec / Avp.cpp
index be51349..f0477e2 100644 (file)
@@ -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 <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;
@@ -1646,9 +1648,11 @@ anna::xml::Node* Avp::asXML(anna::xml::Node* parent) const throw() {
 //------------------------------------------------------------------------------
 //----------------------------------------------------------- Avp::asXMLString()
 //------------------------------------------------------------------------------
-std::string Avp::asXMLString() const throw() {
+std::string Avp::asXMLString(bool sortAttributes) const throw() {
   anna::xml::Node root("root");
-  return anna::xml::Compiler().apply(asXML(&root));
+
+  anna::xml::Compiler::Mode::_v mode = sortAttributes ? anna::xml::Compiler::Mode::Sort : anna::xml::Compiler::Mode::Visual;
+  return anna::xml::Compiler().apply(asXML(&root), mode);
 }