diff options
| author | Keith Wall <kwall@apache.org> | 2014-12-27 08:55:28 +0000 |
|---|---|---|
| committer | Keith Wall <kwall@apache.org> | 2014-12-27 08:55:28 +0000 |
| commit | f8f58ec7e1e5517ff0a3ecc25248fa636b67a393 (patch) | |
| tree | c294063b6f6b7f1418f7032d49330ead40f6ad00 /qpid/java/broker-plugins | |
| parent | ef98f2d05fabd0cf8dceb5f02394be00345bf30c (diff) | |
| download | qpid-python-f8f58ec7e1e5517ff0a3ecc25248fa636b67a393.tar.gz | |
QPID-6289: [Java Broker] Extend Java Broker model to encapsulate permitted child types
Work of Robert Godfrey <rgodfrey@apache.org>
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1648039 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker-plugins')
4 files changed, 45 insertions, 3 deletions
diff --git a/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhostnode/derby/DerbyVirtualHostNodeImpl.java b/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhostnode/derby/DerbyVirtualHostNodeImpl.java index 4bb3cc5376..dc768aff09 100644 --- a/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhostnode/derby/DerbyVirtualHostNodeImpl.java +++ b/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhostnode/derby/DerbyVirtualHostNodeImpl.java @@ -21,6 +21,8 @@ package org.apache.qpid.server.virtualhostnode.derby; +import java.util.Collection; +import java.util.Collections; import java.util.Map; import org.apache.qpid.server.logging.messages.ConfigStoreMessages; @@ -33,7 +35,9 @@ import org.apache.qpid.server.store.DurableConfigurationStore; import org.apache.qpid.server.store.derby.DerbyConfigurationStore; import org.apache.qpid.server.virtualhostnode.AbstractStandardVirtualHostNode; -@ManagedObject( category = false, type = DerbyVirtualHostNodeImpl.VIRTUAL_HOST_NODE_TYPE ) +@ManagedObject( category = false, + type = DerbyVirtualHostNodeImpl.VIRTUAL_HOST_NODE_TYPE, + validChildTypes = "org.apache.qpid.server.virtualhostnode.derby.DerbyVirtualHostNodeImpl#getSupportedChildTypes()" ) public class DerbyVirtualHostNodeImpl extends AbstractStandardVirtualHostNode<DerbyVirtualHostNodeImpl> implements DerbyVirtualHostNode<DerbyVirtualHostNodeImpl> { public static final String VIRTUAL_HOST_NODE_TYPE = "DERBY"; @@ -70,4 +74,10 @@ public class DerbyVirtualHostNodeImpl extends AbstractStandardVirtualHostNode<De { return getClass().getSimpleName() + " [id=" + getId() + ", name=" + getName() + ", storePath=" + getStorePath() + "]"; } + + + public static Map<String, Collection<String>> getSupportedChildTypes() + { + return Collections.singletonMap(VirtualHost.class.getSimpleName(), getSupportedVirtualHostTypes(true)); + } } diff --git a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeImpl.java b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeImpl.java index eab53e6744..cb20549b80 100644 --- a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeImpl.java +++ b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeImpl.java @@ -20,6 +20,8 @@ */ package org.apache.qpid.server.virtualhostnode.jdbc; +import java.util.Collection; +import java.util.Collections; import java.util.Map; import org.apache.qpid.server.model.Broker; @@ -31,7 +33,8 @@ import org.apache.qpid.server.store.DurableConfigurationStore; import org.apache.qpid.server.store.jdbc.GenericJDBCConfigurationStore; import org.apache.qpid.server.virtualhostnode.AbstractStandardVirtualHostNode; -@ManagedObject(type = JDBCVirtualHostNodeImpl.VIRTUAL_HOST_NODE_TYPE, category = false ) +@ManagedObject(type = JDBCVirtualHostNodeImpl.VIRTUAL_HOST_NODE_TYPE, category = false , + validChildTypes = "org.apache.qpid.server.virtualhostnode.jdbc.JDBCVirtualHostNodeImpl#getSupportedChildTypes()") public class JDBCVirtualHostNodeImpl extends AbstractStandardVirtualHostNode<JDBCVirtualHostNodeImpl> implements JDBCVirtualHostNode<JDBCVirtualHostNodeImpl> { public static final String VIRTUAL_HOST_NODE_TYPE = "JDBC"; @@ -97,4 +100,10 @@ public class JDBCVirtualHostNodeImpl extends AbstractStandardVirtualHostNode<JDB ", connectionPoolType=" + getConnectionPoolType() + ", username=" + getUsername() + "]"; } + + + public static Map<String, Collection<String>> getSupportedChildTypes() + { + return Collections.singletonMap(VirtualHost.class.getSimpleName(), getSupportedVirtualHostTypes(true)); + } } diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MetaDataServlet.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MetaDataServlet.java index 2947cfb85b..01dd873aa5 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MetaDataServlet.java +++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MetaDataServlet.java @@ -24,6 +24,7 @@ import java.io.IOException; import java.io.Writer; import java.util.ArrayList; import java.util.Collection; +import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; import java.util.Map; @@ -101,9 +102,24 @@ public class MetaDataServlet extends AbstractServlet Map<String,Object> typeDetails = new LinkedHashMap<>(); typeDetails.put("attributes", processAttributes(type)); typeDetails.put("managedInterfaces", getManagedInterfaces(type)); + typeDetails.put("validChildTypes", getValidChildTypes(type)); return typeDetails; } + private Map<String, Collection<String>> getValidChildTypes(final Class<? extends ConfiguredObject> type) + { + Map<String, Collection<String>> validChildTypes = new HashMap<>(); + for(Class<? extends ConfiguredObject> childType : _instance.getChildTypes(ConfiguredObjectTypeRegistry.getCategory(type))) + { + Collection<String> validValues = _instance.getTypeRegistry().getValidChildTypes(type, childType); + if(validValues != null) + { + validChildTypes.put(childType.getSimpleName(), validValues); + } + } + return validChildTypes; + } + private Set<String> getManagedInterfaces(Class<? extends ConfiguredObject> type) { Set<String> interfaces = new HashSet<>(); diff --git a/qpid/java/broker-plugins/memory-store/src/main/java/org/apache/qpid/server/virtualhostnode/memory/MemoryVirtualHostNode.java b/qpid/java/broker-plugins/memory-store/src/main/java/org/apache/qpid/server/virtualhostnode/memory/MemoryVirtualHostNode.java index f57c0df4c0..10c30cf87a 100644 --- a/qpid/java/broker-plugins/memory-store/src/main/java/org/apache/qpid/server/virtualhostnode/memory/MemoryVirtualHostNode.java +++ b/qpid/java/broker-plugins/memory-store/src/main/java/org/apache/qpid/server/virtualhostnode/memory/MemoryVirtualHostNode.java @@ -20,6 +20,8 @@ */ package org.apache.qpid.server.virtualhostnode.memory; +import java.util.Collection; +import java.util.Collections; import java.util.Map; import org.apache.qpid.server.model.Broker; @@ -30,7 +32,7 @@ import org.apache.qpid.server.store.DurableConfigurationStore; import org.apache.qpid.server.store.MemoryConfigurationStore; import org.apache.qpid.server.virtualhostnode.AbstractStandardVirtualHostNode; -@ManagedObject(type=MemoryVirtualHostNode.VIRTUAL_HOST_NODE_TYPE, category=false) +@ManagedObject(type=MemoryVirtualHostNode.VIRTUAL_HOST_NODE_TYPE, category=false, validChildTypes = "org.apache.qpid.server.virtualhostnode.memory.MemoryVirtualHostNode#getSupportedChildTypes()") public class MemoryVirtualHostNode extends AbstractStandardVirtualHostNode<MemoryVirtualHostNode> { public static final String VIRTUAL_HOST_NODE_TYPE = "Memory"; @@ -51,4 +53,9 @@ public class MemoryVirtualHostNode extends AbstractStandardVirtualHostNode<Memor { return new MemoryConfigurationStore(VirtualHost.class); } + + public static Map<String, Collection<String>> getSupportedChildTypes() + { + return Collections.singletonMap(VirtualHost.class.getSimpleName(), getSupportedVirtualHostTypes(true)); + } } |
