You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2014/04/28 12:38:02 UTC

svn commit: r1590593 - in /qpid/trunk/qpid/java: broker-core/src/main/java/org/apache/qpid/server/model/ broker-core/src/main/java/org/apache/qpid/server/virtualhost/ broker-core/src/test/java/org/apache/qpid/server/virtualhost/ broker-plugins/manageme...

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: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org