diff options
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); |