summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2014-03-08 12:59:05 +0000
committerRobert Godfrey <rgodfrey@apache.org>2014-03-08 12:59:05 +0000
commit7406a6f60213fc6592021d42ab863e233d7e9b0b (patch)
treea177d99458f605418cca270dbfcc0aa1f6ca9303
parentfc62e352c30d2ec12b78a9ce1a6403f368b10e85 (diff)
downloadqpid-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
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostAlias.java1
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAliasAdapter.java6
-rw-r--r--qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java56
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