diff options
author | Alex Rudyy <orudyy@apache.org> | 2013-05-04 22:41:55 +0000 |
---|---|---|
committer | Alex Rudyy <orudyy@apache.org> | 2013-05-04 22:41:55 +0000 |
commit | 887a719a8da427fbe82053e0b21c1766b4739bc0 (patch) | |
tree | 71fcdc5ad1f6b55d723eb5d20d4440fe0f0d85ea | |
parent | 594f6d101273b8bcf37620c1d8cb9a21b7a604d3 (diff) | |
download | qpid-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
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); |