Author: rgodfrey
Date: Mon Apr 28 10:38:02 2014
New Revision: 1590593
URL: http://svn.apache.org/r1590593
Log:
QPID-5665 : Address review comments from Alex Rudyy
Modified:
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/MockVirtualHost.java
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBeanTest.java
Modified:
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java?rev=1590593&r1=1590592&r2=1590593&view=diff
==============================================================================
---
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
(original)
+++
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
Mon Apr 28 10:38:02 2014
@@ -1687,7 +1687,7 @@ public abstract class AbstractConfigured
}
}
- protected final static class DuplicateIdException extends RuntimeException
+ protected final static class DuplicateIdException extends
IllegalArgumentException
{
public DuplicateIdException(final ConfiguredObject<?> child)
{
@@ -1695,7 +1695,7 @@ public abstract class AbstractConfigured
}
}
- protected final static class DuplicateNameException extends
RuntimeException
+ protected final static class DuplicateNameException extends
IllegalArgumentException
{
private final String _name;
public DuplicateNameException(final ConfiguredObject<?> child)
Modified:
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java?rev=1590593&r1=1590592&r2=1590593&view=diff
==============================================================================
---
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
(original)
+++
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
Mon Apr 28 10:38:02 2014
@@ -137,8 +137,7 @@ public interface VirtualHost<X extends V
Collection<Q> getQueues();
Collection<E> getExchanges();
- E createExchange(String name, State initialState, boolean durable,
- LifetimePolicy lifetime, String type, Map<String,
Object> attributes)
+ E createExchange(Map<String, Object> attributes)
throws AccessControlException, IllegalArgumentException;
Q createQueue(Map<String, Object> attributes)
Modified:
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java?rev=1590593&r1=1590592&r2=1590593&view=diff
==============================================================================
---
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
(original)
+++
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
Mon Apr 28 10:38:02 2014
@@ -98,8 +98,6 @@ public abstract class AbstractVirtualHos
private static final int HOUSEKEEPING_SHUTDOWN_TIMEOUT = 5;
- private final long _createTime = System.currentTimeMillis();
-
private ScheduledThreadPoolExecutor _houseKeepingTasks;
private final Broker<?> _broker;
@@ -391,14 +389,6 @@ public abstract class AbstractVirtualHos
}
}
- public String setType(final String currentType, final String desiredType)
- throws IllegalStateException, AccessControlException
- {
- throw new IllegalStateException();
- }
-
-
-
@Override
public State getState()
{
@@ -566,11 +556,6 @@ public abstract class AbstractVirtualHos
return _houseKeepingTasks.getActiveCount();
}
- public long getCreateTime()
- {
- return _createTime;
- }
-
@Override
public AMQQueue<?> getQueue(String name)
{
@@ -682,98 +667,6 @@ public abstract class AbstractVirtualHos
return children;
}
- public ExchangeImpl<?> createExchange(final String name,
- final State initialState,
- final boolean durable,
- final LifetimePolicy lifetime,
- final String type,
- final Map<String, Object> attributes)
- throws AccessControlException, IllegalArgumentException
- {
- checkVHostStateIsActive();
-
- try
- {
- String alternateExchange = null;
- if(attributes.containsKey(Exchange.ALTERNATE_EXCHANGE))
- {
- Object altExchangeObject =
attributes.get(Exchange.ALTERNATE_EXCHANGE);
- if(altExchangeObject instanceof Exchange)
- {
- alternateExchange = ((Exchange)
altExchangeObject).getName();
- }
- else if(altExchangeObject instanceof UUID)
- {
- for(Exchange ex : getExchanges())
- {
- if(altExchangeObject.equals(ex.getId()))
- {
- alternateExchange = ex.getName();
- break;
- }
- }
- }
- else if(altExchangeObject instanceof String)
- {
-
- for(Exchange ex : getExchanges())
- {
- if(altExchangeObject.equals(ex.getName()))
- {
- alternateExchange = ex.getName();
- break;
- }
- }
- if(alternateExchange == null)
- {
- try
- {
- UUID id =
UUID.fromString(altExchangeObject.toString());
- for(Exchange ex : getExchanges())
- {
- if(id.equals(ex.getId()))
- {
- alternateExchange = ex.getName();
- break;
- }
- }
- }
- catch(IllegalArgumentException e)
- {
- // ignore
- }
-
- }
- }
- }
- Map<String,Object> attributes1 = new HashMap<String, Object>();
-
- attributes1.put(ID, null);
- attributes1.put(NAME, name);
- attributes1.put(Exchange.TYPE, type);
- attributes1.put(Exchange.DURABLE, durable);
- attributes1.put(Exchange.LIFETIME_POLICY,
- lifetime != null && lifetime !=
LifetimePolicy.PERMANENT
- ? LifetimePolicy.DELETE_ON_NO_LINKS :
LifetimePolicy.PERMANENT);
- attributes1.put(Exchange.ALTERNATE_EXCHANGE, alternateExchange);
- ExchangeImpl exchange = createExchange(attributes1);
- return exchange;
-
- }
- catch(ExchangeExistsException e)
- {
- throw new IllegalArgumentException("Exchange with name '" + name +
"' already exists");
- }
- catch(ReservedExchangeNameException e)
- {
- throw new UnsupportedOperationException("'" + name + "' is a
reserved exchange name");
- }
- catch(AMQUnknownExchangeType e)
- {
- throw new IllegalArgumentException(e);
- }
- }
-
@Override
public ExchangeImpl createExchange(Map<String,Object> attributes)
@@ -1247,15 +1140,6 @@ public abstract class AbstractVirtualHos
{
return getState();
}
- else if(SUPPORTED_EXCHANGE_TYPES.equals(name))
- {
- return getObjectFactory().getSupportedTypes(Exchange.class);
- }
- else if(SUPPORTED_QUEUE_TYPES.equals(name))
- {
- // TODO
- }
-
return super.getAttribute(name);
}
@@ -1268,8 +1152,7 @@ public abstract class AbstractVirtualHos
@Override
public Collection<String> getSupportedQueueTypes()
{
- // TODO
- return null;
+ return getObjectFactory().getSupportedTypes(Queue.class);
}
@Override
Modified:
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/MockVirtualHost.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/MockVirtualHost.java?rev=1590593&r1=1590592&r2=1590593&view=diff
==============================================================================
---
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/MockVirtualHost.java
(original)
+++
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/MockVirtualHost.java
Mon Apr 28 10:38:02 2014
@@ -404,18 +404,6 @@ public class MockVirtualHost implements
return null;
}
- @Override
- public ExchangeImpl<?> createExchange(final String name,
- final State initialState,
- final boolean durable,
- final LifetimePolicy lifetime,
- final String type,
- final Map<String, Object> attributes)
- throws AccessControlException, IllegalArgumentException
- {
- return null;
- }
-
public SecurityManager getSecurityManager()
{
return null;
Modified:
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java?rev=1590593&r1=1590592&r2=1590593&view=diff
==============================================================================
---
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java
(original)
+++
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java
Mon Apr 28 10:38:02 2014
@@ -42,14 +42,16 @@ import org.apache.qpid.management.common
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<VirtualHost> implements ManagedBroker
@@ -166,8 +168,29 @@ public class VirtualHostManagerMBean ext
try
{
- getConfiguredObject().createExchange(name, State.ACTIVE, durable,
- LifetimePolicy.PERMANENT, type,
Collections.EMPTY_MAP);
+ Map<String,Object> 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 ext
throw new MBeanException(jme, "Error in creating exchange " +
name);
}
+
}
@Override
Modified:
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBeanTest.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBeanTest.java?rev=1590593&r1=1590592&r2=1590593&view=diff
==============================================================================
---
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBeanTest.java
(original)
+++
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBeanTest.java
Mon Apr 28 10:38:02 2014
@@ -19,6 +19,7 @@
*/
package org.apache.qpid.server.jmx.mbeans;
+import static org.mockito.Matchers.argThat;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
@@ -32,12 +33,12 @@ import javax.management.OperationsExcept
import junit.framework.TestCase;
import org.mockito.ArgumentCaptor;
+import org.mockito.ArgumentMatcher;
import org.apache.qpid.server.jmx.ManagedObjectRegistry;
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;
@@ -150,7 +151,8 @@ public class VirtualHostManagerMBeanTest
public void testCreateNewDurableExchange() throws Exception
{
_virtualHostManagerMBean.createNewExchange(TEST_EXCHANGE_NAME,
TEST_EXCHANGE_TYPE, true);
- verify(_mockVirtualHost).createExchange(TEST_EXCHANGE_NAME,
State.ACTIVE, true, LifetimePolicy.PERMANENT, TEST_EXCHANGE_TYPE,
EMPTY_ARGUMENT_MAP);
+
+ verify(_mockVirtualHost).createExchange(matchesMap(TEST_EXCHANGE_NAME,
true, LifetimePolicy.PERMANENT, TEST_EXCHANGE_TYPE));
}
public void testCreateNewExchangeWithUnknownExchangeType() throws Exception
@@ -165,7 +167,10 @@ public class VirtualHostManagerMBeanTest
{
// PASS
}
- verify(_mockVirtualHost, never()).createExchange(TEST_EXCHANGE_NAME,
State.ACTIVE, true, LifetimePolicy.PERMANENT, exchangeType, EMPTY_ARGUMENT_MAP);
+ verify(_mockVirtualHost,
never()).createExchange(matchesMap(TEST_EXCHANGE_NAME,
+ true,
+
LifetimePolicy.PERMANENT,
+
exchangeType));
}
public void testUnregisterExchange() throws Exception
@@ -200,4 +205,45 @@ public class VirtualHostManagerMBeanTest
verify(mockExchange, never()).delete();
}
+
+ private static Map<String,Object> 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<Map<String,Object>>
+ {
+
+ 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<String,Object> map = (Map<String,Object>)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));
+ }
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]