You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2014/02/09 23:57:49 UTC

svn commit: r1566462 - /qpid/branches/java-broker-amqp-1-0-management/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java

Author: rgodfrey
Date: Sun Feb  9 22:57:49 2014
New Revision: 1566462

URL: http://svn.apache.org/r1566462
Log:
Implement update

Modified:
    qpid/branches/java-broker-amqp-1-0-management/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java

Modified: qpid/branches/java-broker-amqp-1-0-management/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-amqp-1-0-management/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java?rev=1566462&r1=1566461&r2=1566462&view=diff
==============================================================================
--- qpid/branches/java-broker-amqp-1-0-management/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java (original)
+++ qpid/branches/java-broker-amqp-1-0-management/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java Sun Feb  9 22:57:49 2014
@@ -422,6 +422,10 @@ class ManagementNode implements MessageS
         {
             return performDeleteOperation(requestMessage, entity);
         }
+        else if(UPDATE_OPERATION.equals(operation))
+        {
+            return performUpdateOperation(requestMessage, entity);
+        }
         else
         {
             return createFailureResponse(requestMessage, NOT_IMPLEMENTED_STATUS_CODE, "Unable to perform the {0} operation",operation);
@@ -486,6 +490,50 @@ class ManagementNode implements MessageS
         return InternalMessage.createMapMessage(_virtualHost.getMessageStore(),responseHeader, Collections.emptyMap());
     }
 
+
+    private InternalMessage performUpdateOperation(final InternalMessage requestMessage, final ConfiguredObject entity)
+    {
+        final InternalMessageHeader requestHeader = requestMessage.getMessageHeader();
+        final MutableMessageHeader responseHeader = new MutableMessageHeader();
+        responseHeader.setCorrelationId(requestHeader.getCorrelationId() == null
+                                                ? requestHeader.getMessageId()
+                                                : requestHeader.getCorrelationId());
+        responseHeader.setMessageId(UUID.randomUUID().toString());
+        responseHeader.setHeader(NAME_ATTRIBUTE, entity.getName());
+        responseHeader.setHeader(IDENTITY_ATTRIBUTE, entity.getId().toString());
+        final String type = getManagementClass(entity.getClass()).getName();
+        responseHeader.setHeader(TYPE_ATTRIBUTE, type);
+
+        Object messageBody = requestMessage.getMessageBody();
+        if(messageBody instanceof Map)
+        {
+            try
+            {
+                entity.setAttributes((Map)messageBody);
+                return performReadOperation(requestMessage, entity);
+            }
+            catch(RuntimeException e)
+            {
+                if (e instanceof AccessControlException || e.getCause() instanceof AMQSecurityException)
+                {
+                    return createFailureResponse(requestMessage, STATUS_CODE_FORBIDDEN, e.getMessage());
+                }
+                else
+                {
+                    throw e;
+                }
+            }
+        }
+        else
+        {
+            return createFailureResponse(requestMessage,
+                                             STATUS_CODE_BAD_REQUEST,
+                                             "The message body in the request was not of the correct type");
+        }
+
+
+    }
+
     private ConfiguredObject findSubject(final String name, final String id, final String type)
     {
         ConfiguredObject subject;



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org