summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Rudyy <orudyy@apache.org>2013-05-04 22:41:55 +0000
committerAlex Rudyy <orudyy@apache.org>2013-05-04 22:41:55 +0000
commit887a719a8da427fbe82053e0b21c1766b4739bc0 (patch)
tree71fcdc5ad1f6b55d723eb5d20d4440fe0f0d85ea
parent594f6d101273b8bcf37620c1d8cb9a21b7a604d3 (diff)
downloadqpid-python-887a719a8da427fbe82053e0b21c1766b4739bc0.tar.gz
QPID-4814: Fix the rest layer configured object update by name and multiple object parents
merged from r1479201 git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/0.22@1479210 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java27
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BindingRestTest.java1
2 files changed, 24 insertions, 4 deletions
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
index 4f6f122876..1cebe3ec19 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
+++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
@@ -443,7 +443,7 @@ public class RestServlet extends AbstractServlet
for(ConfiguredObject obj: existingChildren)
{
if((providedObject.containsKey("id") && String.valueOf(providedObject.get("id")).equals(obj.getId().toString()))
- || (obj.getName().equals(providedObject.get("name")) && equalParents(obj, otherParents)))
+ || (obj.getName().equals(providedObject.get("name")) && equalParents(obj, otherParents, objClass)))
{
doUpdate(obj, providedObject);
response.setStatus(HttpServletResponse.SC_OK);
@@ -465,13 +465,34 @@ public class RestServlet extends AbstractServlet
obj.setAttributes(providedObject);
}
- private boolean equalParents(ConfiguredObject obj, ConfiguredObject[] otherParents)
+ private boolean equalParents(ConfiguredObject obj, ConfiguredObject[] otherParents, Class<? extends ConfiguredObject> objClass)
{
if(otherParents == null || otherParents.length == 0)
{
return true;
}
- return false; //TODO - Implement.
+
+ Collection<Class<? extends ConfiguredObject>> parentClasses = Model.getInstance().getParentTypes(objClass);
+
+ for (ConfiguredObject parent : otherParents)
+ {
+ boolean found = false;
+ for (Class<? extends ConfiguredObject> parentClass : parentClasses)
+ {
+ if (parent == obj.getParent(parentClass))
+ {
+ found = true;
+ break;
+ }
+ }
+
+ if (!found)
+ {
+ return false;
+ }
+ }
+
+ return true;
}
private void setResponseStatus(HttpServletResponse response, RuntimeException e) throws IOException
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BindingRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BindingRestTest.java
index 9a57429062..a113cd734e 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BindingRestTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BindingRestTest.java
@@ -142,7 +142,6 @@ public class BindingRestTest extends QpidRestTestCase
Asserts.assertBinding(bindingName, "queue", "amq.direct", binding);
- attributes.put(Binding.ID, binding.get(Binding.ID));
attributes.put(Binding.ARGUMENTS, null);
responseCode = getRestTestHelper().submitRequest("/rest/binding/test/amq.direct/queue/" + bindingName, "PUT", attributes);