diff options
author | Robert Godfrey <rgodfrey@apache.org> | 2014-03-08 12:59:05 +0000 |
---|---|---|
committer | Robert Godfrey <rgodfrey@apache.org> | 2014-03-08 12:59:05 +0000 |
commit | 7406a6f60213fc6592021d42ab863e233d7e9b0b (patch) | |
tree | a177d99458f605418cca270dbfcc0aa1f6ca9303 | |
parent | fc62e352c30d2ec12b78a9ce1a6403f368b10e85 (diff) | |
download | qpid-python-7406a6f60213fc6592021d42ab863e233d7e9b0b.tar.gz |
QPID-5616 : [Java Broker] update to management node to comply with working draft WD08
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1575536 13f79535-47bb-0310-9956-ffa450edef68
3 files changed, 38 insertions, 25 deletions
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostAlias.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostAlias.java index 51ca7d8418..4af5fbfde5 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostAlias.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostAlias.java @@ -22,6 +22,7 @@ package org.apache.qpid.server.model; import java.util.Collection; +@ManagedObject public interface VirtualHostAlias<X extends VirtualHostAlias<X>> extends ConfiguredObject<X> { // parents diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAliasAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAliasAdapter.java index 8c715c3519..ae7325c928 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAliasAdapter.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAliasAdapter.java @@ -130,4 +130,10 @@ public class VirtualHostAliasAdapter extends AbstractConfiguredObject<VirtualHos // TODO: state is not supported at the moment return false; } + + @Override + public Collection<String> getAttributeNames() + { + return getAttributeNames(getClass()); + } } diff --git a/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java b/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java index a6c5131222..a47506f804 100644 --- a/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java +++ b/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java @@ -88,6 +88,8 @@ class ManagementNode implements MessageSource, MessageDestination public static final int STATUS_CODE_FORBIDDEN = 403; public static final int STATUS_CODE_BAD_REQUEST = 400; public static final int STATUS_CODE_INTERNAL_ERROR = 500; + public static final String ATTRIBUTE_NAMES = "attributeNames"; + public static final String RESULTS = "results"; private final VirtualHost _virtualHost; @@ -117,25 +119,8 @@ class ManagementNode implements MessageSource, MessageDestination _managedObject = configuredObject; - populateTypeMetaData(configuredObject.getClass(), false); - configuredObject.addChangeListener(new ModelObjectListener()); - final Class managementClass = getManagementClass(_managedObject.getClass()); - _entities.get(_entityTypes.get(managementClass.getName())).put(_managedObject.getName(), _managedObject); - - Collection<Class<? extends ConfiguredObject>> childClasses = Model.getInstance().getChildTypes(managementClass); - for(Class<? extends ConfiguredObject> childClass : childClasses) - { - if(getManagementClass(childClass) != null) - { - for(ConfiguredObject child : _managedObject.getChildren(childClass)) - { - _entities.get(_entityTypes.get(getManagementClass(childClass).getName())).put(child.getName(), child); - } - } - } - } private Class getManagementClass(Class objectClass) @@ -798,9 +783,9 @@ class ManagementNode implements MessageSource, MessageDestination } - if(messageBody instanceof List && !((List)messageBody).isEmpty()) + if(messageBody instanceof Map && ((Map)messageBody).get(ATTRIBUTE_NAMES) instanceof List) { - attributes = (List<String>) messageBody; + attributes = (List<String>) ((Map)messageBody).get(ATTRIBUTE_NAMES); } else { @@ -842,7 +827,6 @@ class ManagementNode implements MessageSource, MessageDestination responseHeader.setHeader(STATUS_CODE_HEADER, STATUS_CODE_OK); List<List<? extends Object>> responseList = new ArrayList<List<? extends Object>>(); - responseList.add(attributes); int rowNo = 0; for(String type : restriction) { @@ -886,15 +870,18 @@ class ManagementNode implements MessageSource, MessageDestination } } - if(responseList.size()==count+1) + if(responseList.size()==count) { break; } } - responseHeader.setHeader(COUNT_HEADER, responseList.size()-1); - responseMessage = InternalMessage.createListMessage(_virtualHost.getMessageStore(), - responseHeader, - responseList); + responseHeader.setHeader(COUNT_HEADER, responseList.size()); + Map<String,List> responseMap = new HashMap<String, List>(); + responseMap.put(ATTRIBUTE_NAMES, attributes); + responseMap.put(RESULTS, responseList); + responseMessage = InternalMessage.createMapMessage(_virtualHost.getMessageStore(), + responseHeader, + responseMap); return responseMessage; } @@ -1210,6 +1197,25 @@ class ManagementNode implements MessageSource, MessageDestination { _registry.removeSystemNode(ManagementNode.this); } + else if(newState == State.ACTIVE && object instanceof org.apache.qpid.server.model.VirtualHost) + { + populateTypeMetaData(object.getClass(), false); + final Class managementClass = getManagementClass(_managedObject.getClass()); + _entities.get(_entityTypes.get(managementClass.getName())).put(_managedObject.getName(), _managedObject); + + Collection<Class<? extends ConfiguredObject>> childClasses = Model.getInstance().getChildTypes(managementClass); + for(Class<? extends ConfiguredObject> childClass : childClasses) + { + if(getManagementClass(childClass) != null) + { + for(ConfiguredObject child : _managedObject.getChildren(childClass)) + { + _entities.get(_entityTypes.get(getManagementClass(childClass).getName())).put(child.getName(), child); + } + } + } + + } } @Override |