From 7505243f188a9b978a472090f582baea9d96a318 Mon Sep 17 00:00:00 2001 From: Robert Godfrey Date: Mon, 28 Apr 2014 10:38:02 +0000 Subject: QPID-5665 : Address review comments from Alex Rudyy git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1590593 13f79535-47bb-0310-9956-ffa450edef68 --- .../server/jmx/mbeans/VirtualHostManagerMBean.java | 30 +++++++++++-- .../jmx/mbeans/VirtualHostManagerMBeanTest.java | 52 ++++++++++++++++++++-- 2 files changed, 76 insertions(+), 6 deletions(-) (limited to 'qpid/java/broker-plugins') diff --git a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java index a7f2ec3257..3fdee24ff8 100644 --- a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java +++ b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java @@ -42,14 +42,16 @@ import org.apache.qpid.management.common.mbeans.ManagedQueue; import org.apache.qpid.management.common.mbeans.annotations.MBeanConstructor; import org.apache.qpid.management.common.mbeans.annotations.MBeanDescription; import org.apache.qpid.management.common.mbeans.annotations.MBeanOperationParameter; +import org.apache.qpid.server.exchange.AMQUnknownExchangeType; import org.apache.qpid.server.jmx.ManagedObject; import org.apache.qpid.server.model.Exchange; import org.apache.qpid.server.model.LifetimePolicy; import org.apache.qpid.server.model.Queue; -import org.apache.qpid.server.model.State; import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.queue.QueueArgumentsConverter; +import org.apache.qpid.server.virtualhost.ExchangeExistsException; import org.apache.qpid.server.virtualhost.RequiredExchangeException; +import org.apache.qpid.server.virtualhost.ReservedExchangeNameException; @MBeanDescription("This MBean exposes the broker level management features") public class VirtualHostManagerMBean extends AbstractStatisticsGatheringMBean implements ManagedBroker @@ -166,8 +168,29 @@ public class VirtualHostManagerMBean extends AbstractStatisticsGatheringMBean attributes = new HashMap<>(); + attributes.put(Exchange.NAME, name); + attributes.put(Exchange.TYPE, type); + attributes.put(Exchange.DURABLE, durable); + attributes.put(Exchange.LIFETIME_POLICY, LifetimePolicy.PERMANENT); + + getConfiguredObject().createExchange(attributes); + } + catch(ExchangeExistsException e) + { + String message = "Exchange with name '" + name + "' already exists"; + JMException jme = new JMException(message); + throw new MBeanException(jme, "Error in creating exchange " + name); + + } + catch(ReservedExchangeNameException e) + { + throw new UnsupportedOperationException("'" + name + "' is a reserved exchange name"); + } + catch(AMQUnknownExchangeType e) + { + JMException jme = new JMException(e.getMessage()); + throw new MBeanException(jme, "Error in creating exchange " + name); } catch (IllegalArgumentException iae) { @@ -175,6 +198,7 @@ public class VirtualHostManagerMBean extends AbstractStatisticsGatheringMBean matchesMap(final String name, + final boolean durable, + final LifetimePolicy lifetimePolicy, + final String exchangeType) + { + return argThat(new MapMatcher(name, durable, lifetimePolicy, exchangeType)); + } + + private static class MapMatcher extends ArgumentMatcher> + { + + private final String _name; + private final boolean _durable; + private final LifetimePolicy _lifetimePolicy; + private final String _exchangeType; + + public MapMatcher(final String name, + final boolean durable, + final LifetimePolicy lifetimePolicy, + final String exchangeType) + { + _name = name; + _durable = durable; + _lifetimePolicy = lifetimePolicy; + _exchangeType = exchangeType; + + } + + @Override + public boolean matches(final Object o) + { + Map map = (Map)o; + + return _name.equals(map.get(Exchange.NAME)) + && _durable == (Boolean) map.get(Exchange.DURABLE) + && _lifetimePolicy == map.get(Exchange.LIFETIME_POLICY) + && _exchangeType.equals(map.get(Exchange.TYPE)); + } + } + } -- cgit v1.2.1