You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kg...@apache.org on 2010/04/22 23:30:01 UTC

svn commit: r937072 - /qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.cpp

Author: kgiusti
Date: Thu Apr 22 21:30:01 2010
New Revision: 937072

URL: http://svn.apache.org/viewvc?rev=937072&view=rev
Log:
QMF: correct the build of exception response messages.

Modified:
    qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.cpp

Modified: qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.cpp?rev=937072&r1=937071&r2=937072&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/management/ManagementAgent.cpp Thu Apr 22 21:30:01 2010
@@ -1076,9 +1076,11 @@ void ManagementAgent::handleMethodReques
     if ((oid = inMap.find("_object_id")) == inMap.end() ||
         (mid = inMap.find("_method_name")) == inMap.end())
     {
+        Variant::Map _values;
         headers["qmf.opcode"] = "_exception";
-        (outMap["_values"].asMap())["_status"] = Manageable::STATUS_PARAMETER_INVALID;
-        (outMap["_values"].asMap())["_status_text"] = Manageable::StatusText(Manageable::STATUS_PARAMETER_INVALID);
+        _values["_status"] = Manageable::STATUS_PARAMETER_INVALID;
+        _values["_status_text"] = Manageable::StatusText(Manageable::STATUS_PARAMETER_INVALID);
+        outMap["_values"] = _values;
 
         MapCodec::encode(outMap, content);
         sendBufferLH(content, cid, headers, "amqp/map", v2Direct, replyTo);
@@ -1099,9 +1101,12 @@ void ManagementAgent::handleMethodReques
             inArgs = (mid->second).asMap();
         }
     } catch(exception& e) {
+        Variant::Map _values;
         headers["qmf.opcode"] = "_exception";
-        (outMap["_values"].asMap())["_status"] = Manageable::STATUS_EXCEPTION;
-        (outMap["_values"].asMap())["_status_text"] = e.what();
+        _values["_status"] = Manageable::STATUS_EXCEPTION;
+        _values["_status_text"] = e.what();
+        outMap["_values"] = _values;
+
 
         MapCodec::encode(outMap, content);
         sendBufferLH(content, cid, headers, "amqp/map", v2Direct, replyTo);
@@ -1112,9 +1117,11 @@ void ManagementAgent::handleMethodReques
     ManagementObjectMap::iterator iter = managementObjects.find(objId);
 
     if (iter == managementObjects.end() || iter->second->isDeleted()) {
+        Variant::Map _values;
         headers["qmf.opcode"] = "_exception";
-        (outMap["_values"].asMap())["_status"] = Manageable::STATUS_UNKNOWN_OBJECT;
-        (outMap["_values"].asMap())["_status_text"] = Manageable::StatusText(Manageable::STATUS_UNKNOWN_OBJECT);
+        _values["_status"] = Manageable::STATUS_UNKNOWN_OBJECT;
+        _values["_status_text"] = Manageable::StatusText(Manageable::STATUS_UNKNOWN_OBJECT);
+        outMap["_values"] = _values;
 
         MapCodec::encode(outMap, content);
         sendBufferLH(content, cid, headers, "amqp/map", v2Direct, replyTo);
@@ -1128,9 +1135,11 @@ void ManagementAgent::handleMethodReques
 
     i = disallowed.find(std::make_pair(iter->second->getClassName(), methodName));
     if (i != disallowed.end()) {
+        Variant::Map _values;
         headers["qmf.opcode"] = "_exception";
-        (outMap["_values"].asMap())["_status"] = Manageable::STATUS_FORBIDDEN;
-        (outMap["_values"].asMap())["_status_text"] = i->second;
+        _values["_status"] = Manageable::STATUS_FORBIDDEN;
+        _values["_status_text"] = i->second;
+        outMap["_values"] = _values;
 
         MapCodec::encode(outMap, content);
         sendBufferLH(content, cid, headers, "amqp/map", v2Direct, replyTo);
@@ -1145,9 +1154,11 @@ void ManagementAgent::handleMethodReques
         params[acl::PROP_SCHEMACLASS]   = iter->second->getClassName();
 
         if (!acl->authorise(userId, acl::ACT_ACCESS, acl::OBJ_METHOD, methodName, &params)) {
+            Variant::Map _values;
             headers["qmf.opcode"] = "_exception";
-            (outMap["_values"].asMap())["_status"] = Manageable::STATUS_FORBIDDEN;
-            (outMap["_values"].asMap())["_status_text"] = Manageable::StatusText(Manageable::STATUS_FORBIDDEN);
+            _values["_status"] = Manageable::STATUS_FORBIDDEN;
+            _values["_status_text"] = Manageable::StatusText(Manageable::STATUS_FORBIDDEN);
+            outMap["_values"] = _values;
 
             MapCodec::encode(outMap, content);
             sendBufferLH(content, cid, headers, "amqp/map", v2Direct, replyTo);
@@ -1166,10 +1177,12 @@ void ManagementAgent::handleMethodReques
         sys::Mutex::ScopedUnlock u(userLock);
         iter->second->doMethod(methodName, inArgs, outMap);
     } catch(exception& e) {
+        Variant::Map _values;
         outMap.clear();
         headers["qmf.opcode"] = "_exception";
-        (outMap["_values"].asMap())["_status"] = Manageable::STATUS_EXCEPTION;
-        (outMap["_values"].asMap())["_status_text"] = e.what();
+        _values["_status"] = Manageable::STATUS_EXCEPTION;
+        _values["_status_text"] = e.what();
+        outMap["_values"] = _values;
 
         MapCodec::encode(outMap, content);
         sendBufferLH(content, cid, headers, "amqp/map", v2Direct, replyTo);
@@ -1841,16 +1854,17 @@ bool ManagementAgent::authorizeAgentMess
             string replyToKey = rt.getRoutingKey();
 
             if (mapMsg) {
-
+                Variant::Map _values;
                 Variant::Map outMap;
                 Variant::Map headers;
 
                 headers["method"] = "response";
-                headers["qmf.opcode"] = "_method_response";
+                headers["qmf.opcode"] = "_exception";
                 headers["qmf.agent"] = name_address;
 
-                ((outMap["_error"].asMap())["_values"].asMap())["_status"] = Manageable::STATUS_FORBIDDEN;
-                ((outMap["_error"].asMap())["_values"].asMap())["_status_text"] = Manageable::StatusText(Manageable::STATUS_FORBIDDEN);
+                _values["_status"] = Manageable::STATUS_FORBIDDEN;
+                _values["_status_text"] = Manageable::StatusText(Manageable::STATUS_FORBIDDEN);
+                outMap["_values"] = _values;
 
                 string content;
                 MapCodec::encode(outMap, content);



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org