You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by or...@apache.org on 2015/09/15 18:40:11 UTC

svn commit: r1703250 - in /qpid/java/trunk: bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/ broker-core/src/main/java/org/apache/qpid/server/exchange/ broker-core/src/main/java/org/apache/qpid/server/model/ broker-core/src/main/ja...

Author: orudyy
Date: Tue Sep 15 16:40:10 2015
New Revision: 1703250

URL: http://svn.apache.org/r1703250
Log:
QPID-6678: Address review comments from Keith Wall

           Remove a number of redundant methods for exchange deletion and replace invocation of deleted methods with Exchange#delete
           ExchangeExistsException, QueueExistsException, ExchangeIsAlternateException, RequiredExchangeException extends IntegrityViolationException to simplify exception handling in management layers
           Set attain state future even when state transition method invocation results in exception

Modified:
    qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHostImpl.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Exchange.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ExchangeExistsException.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ExchangeIsAlternateException.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/QueueExistsException.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/RequiredExchangeException.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ReservedExchangeNameException.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java
    qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/RedirectingVirtualHostImpl.java
    qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/exchange/DirectExchangeTest.java
    qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java
    qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/test/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegateTest.java
    qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java
    qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/AMQChannelTest.java
    qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
    qpid/java/trunk/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBeanTest.java

Modified: qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHostImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHostImpl.java?rev=1703250&r1=1703249&r2=1703250&view=diff
==============================================================================
--- qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHostImpl.java (original)
+++ qpid/java/trunk/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHostImpl.java Tue Sep 15 16:40:10 2015
@@ -161,21 +161,6 @@ public class BDBHAReplicaVirtualHostImpl
     }
 
     @Override
-    public void removeExchange(final ExchangeImpl<?> exchange, final boolean force)
-            throws ExchangeIsAlternateException, RequiredExchangeException
-    {
-        throwUnsupportedForReplica();
-    }
-
-    @Override
-    public ListenableFuture<Void> removeExchangeAsync(final ExchangeImpl<?> exchange, final boolean force)
-            throws ExchangeIsAlternateException, RequiredExchangeException
-    {
-        throwUnsupportedForReplica();
-        return null;
-    }
-
-    @Override
     public MessageDestination getAttainedMessageDestination(final String name)
     {
         return null;

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java?rev=1703250&r1=1703249&r2=1703250&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java Tue Sep 15 16:40:10 2015
@@ -171,8 +171,7 @@ public abstract class AbstractExchange<T
         return getLifetimePolicy() != LifetimePolicy.PERMANENT;
     }
 
-    @Override
-    public ListenableFuture<Void> deleteWithChecks()
+    private ListenableFuture<Void> deleteWithChecks()
     {
         if(hasReferrers())
         {
@@ -818,7 +817,7 @@ public abstract class AbstractExchange<T
     {
         try
         {
-            ListenableFuture<Void> removeExchangeFuture = _virtualHost.removeExchangeAsync(this, true);
+            ListenableFuture<Void> removeExchangeFuture = deleteWithChecks();
             return doAfter(removeExchangeFuture, new Runnable()
             {
                 @Override

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java?rev=1703250&r1=1703249&r2=1703250&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java Tue Sep 15 16:40:10 2015
@@ -1164,19 +1164,38 @@ public abstract class AbstractConfigured
             {
                 try
                 {
-                    returnVal = (ListenableFuture<Void>) stateChangingMethod.invoke(this);
-                    doAfter(returnVal, new Runnable()
+                    final SettableFuture<Void> stateTransitionResult = SettableFuture.create();
+                    ListenableFuture<Void> stateTransitionFuture = (ListenableFuture<Void>) stateChangingMethod.invoke(this);
+                    Futures.addCallback(stateTransitionFuture, new FutureCallback<Void>()
                     {
                         @Override
-                        public void run()
+                        public void onSuccess(Void result)
                         {
-                            _attainStateFuture.set(AbstractConfiguredObject.this);
-                            if(getState() != currentState)
+                            try
+                            {
+                                _attainStateFuture.set(AbstractConfiguredObject.this);
+                                if (getState() != currentState)
+                                {
+                                    notifyStateChanged(currentState, getState());
+                                }
+                                stateTransitionResult.set(null);
+                            }
+                            catch (Throwable e)
                             {
-                                notifyStateChanged(currentState, getState());
+                                stateTransitionResult.setException(e);
                             }
                         }
+
+                        @Override
+                        public void onFailure(Throwable t)
+                        {
+                            // state transition failed to attain desired state
+                            // setting the _attainStateFuture, so, object relying on it could get the configured object
+                            _attainStateFuture.set(AbstractConfiguredObject.this);
+                            stateTransitionResult.setException(t);
+                        }
                     });
+                    returnVal = stateTransitionResult;
                 }
                 catch (IllegalAccessException e)
                 {
@@ -1184,6 +1203,10 @@ public abstract class AbstractConfigured
                 }
                 catch (InvocationTargetException e)
                 {
+                    // state transition failed to attain desired state
+                    // setting the _attainStateFuture, so, object relying on it could get the configured object
+                    _attainStateFuture.set(this);
+
                     Throwable underlying = e.getTargetException();
                     if(underlying instanceof RuntimeException)
                     {

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Exchange.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Exchange.java?rev=1703250&r1=1703249&r2=1703250&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Exchange.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/model/Exchange.java Tue Sep 15 16:40:10 2015
@@ -69,7 +69,4 @@ public interface Exchange<X extends Exch
                           Map<String,Object> bindingArguments,
                           Map<String, Object> attributes);
 
-
-
-    ListenableFuture<Void> deleteWithChecks();
 }

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java?rev=1703250&r1=1703249&r2=1703250&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java Tue Sep 15 16:40:10 2015
@@ -877,20 +877,6 @@ public abstract class AbstractVirtualHos
     }
 
     @Override
-    public void removeExchange(final ExchangeImpl<?> exchange, final boolean force)
-            throws ExchangeIsAlternateException, RequiredExchangeException
-    {
-        doSync(removeExchangeAsync(exchange, force));
-    }
-
-    @Override
-    public ListenableFuture<Void> removeExchangeAsync(ExchangeImpl exchange, boolean force)
-            throws ExchangeIsAlternateException, RequiredExchangeException
-    {
-        return exchange.deleteWithChecks();
-    }
-
-    @Override
     public String getLocalAddress(final String routingAddress)
     {
         String localAddress = routingAddress;

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ExchangeExistsException.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ExchangeExistsException.java?rev=1703250&r1=1703249&r2=1703250&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ExchangeExistsException.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ExchangeExistsException.java Tue Sep 15 16:40:10 2015
@@ -22,8 +22,9 @@
 package org.apache.qpid.server.virtualhost;
 
 import org.apache.qpid.server.exchange.ExchangeImpl;
+import org.apache.qpid.server.model.IntegrityViolationException;
 
-public class ExchangeExistsException extends RuntimeException
+public class ExchangeExistsException extends IntegrityViolationException
 {
     private final ExchangeImpl _existing;
 

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ExchangeIsAlternateException.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ExchangeIsAlternateException.java?rev=1703250&r1=1703249&r2=1703250&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ExchangeIsAlternateException.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ExchangeIsAlternateException.java Tue Sep 15 16:40:10 2015
@@ -20,7 +20,9 @@
  */
 package org.apache.qpid.server.virtualhost;
 
-public class ExchangeIsAlternateException extends RuntimeException
+import org.apache.qpid.server.model.IntegrityViolationException;
+
+public class ExchangeIsAlternateException extends IntegrityViolationException
 {
     public ExchangeIsAlternateException(String name)
     {

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/QueueExistsException.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/QueueExistsException.java?rev=1703250&r1=1703249&r2=1703250&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/QueueExistsException.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/QueueExistsException.java Tue Sep 15 16:40:10 2015
@@ -20,9 +20,10 @@
  */
 package org.apache.qpid.server.virtualhost;
 
+import org.apache.qpid.server.model.IntegrityViolationException;
 import org.apache.qpid.server.queue.AMQQueue;
 
-public class QueueExistsException extends RuntimeException
+public class QueueExistsException extends IntegrityViolationException
 {
     private final AMQQueue _existing;
 

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/RequiredExchangeException.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/RequiredExchangeException.java?rev=1703250&r1=1703249&r2=1703250&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/RequiredExchangeException.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/RequiredExchangeException.java Tue Sep 15 16:40:10 2015
@@ -20,7 +20,9 @@
  */
 package org.apache.qpid.server.virtualhost;
 
-public class RequiredExchangeException extends RuntimeException
+import org.apache.qpid.server.model.IntegrityViolationException;
+
+public class RequiredExchangeException extends IntegrityViolationException
 {
     public RequiredExchangeException(String name)
     {

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ReservedExchangeNameException.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ReservedExchangeNameException.java?rev=1703250&r1=1703249&r2=1703250&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ReservedExchangeNameException.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ReservedExchangeNameException.java Tue Sep 15 16:40:10 2015
@@ -20,7 +20,9 @@
  */
 package org.apache.qpid.server.virtualhost;
 
-public class ReservedExchangeNameException extends RuntimeException
+import org.apache.qpid.server.model.IntegrityViolationException;
+
+public class ReservedExchangeNameException extends IntegrityViolationException
 {
     private final String _name;
 

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java?rev=1703250&r1=1703249&r2=1703250&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java Tue Sep 15 16:40:10 2015
@@ -70,12 +70,6 @@ public interface VirtualHostImpl< X exte
             throws ExchangeExistsException, ReservedExchangeNameException,
                    NoFactoryForTypeException;
 
-    void removeExchange(E exchange, boolean force) throws ExchangeIsAlternateException,
-                                                                                 RequiredExchangeException;
-
-    ListenableFuture<Void> removeExchangeAsync(E exchange, boolean force) throws ExchangeIsAlternateException,
-                                                                 RequiredExchangeException;
-
     E getAttainedExchange(String name);
 
     MessageDestination getAttainedMessageDestination(String name);

Modified: qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/RedirectingVirtualHostImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/RedirectingVirtualHostImpl.java?rev=1703250&r1=1703249&r2=1703250&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/RedirectingVirtualHostImpl.java (original)
+++ qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/RedirectingVirtualHostImpl.java Tue Sep 15 16:40:10 2015
@@ -162,21 +162,6 @@ class RedirectingVirtualHostImpl
     }
 
     @Override
-    public void removeExchange(final ExchangeImpl<?> exchange, final boolean force)
-            throws ExchangeIsAlternateException, RequiredExchangeException
-    {
-        throwUnsupportedForRedirector();
-    }
-
-    @Override
-    public ListenableFuture<Void> removeExchangeAsync(final ExchangeImpl<?> exchange, final boolean force)
-            throws ExchangeIsAlternateException, RequiredExchangeException
-    {
-        throwUnsupportedForRedirector();
-        return null;
-    }
-
-    @Override
     public MessageDestination getAttainedMessageDestination(final String name)
     {
         return null;

Modified: qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/exchange/DirectExchangeTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/exchange/DirectExchangeTest.java?rev=1703250&r1=1703249&r2=1703250&view=diff
==============================================================================
--- qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/exchange/DirectExchangeTest.java (original)
+++ qpid/java/trunk/broker-core/src/test/java/org/apache/qpid/server/exchange/DirectExchangeTest.java Tue Sep 15 16:40:10 2015
@@ -121,33 +121,6 @@ public class DirectExchangeTest extends
 
     }
 
-    public void testDeleteWithChecksOfExchangeSetAsAlternate() throws Exception
-    {
-        Map<String, Object> attributes = new HashMap<>();
-        attributes.put(Queue.NAME, getTestName());
-        attributes.put(Queue.DURABLE, false);
-        attributes.put(Queue.ALTERNATE_EXCHANGE, _exchange.getName());
-
-        Queue queue = (Queue) _vhost.createChild(Queue.class, attributes);
-        queue.open();
-
-        assertEquals("Unexpected alternate exchange on queue", _exchange, queue.getAlternateExchange());
-
-        try
-        {
-            ListenableFuture<Void> deleteFuture = _exchange.deleteWithChecks();
-            deleteFuture.get(1000, TimeUnit.MILLISECONDS);
-            fail("Exchange deletion should fail with ExchangeIsAlternateException");
-        }
-        catch(ExchangeIsAlternateException e)
-        {
-            // pass
-        }
-
-        assertEquals("Unexpected effective exchange state", State.ACTIVE, _exchange.getState());
-        assertEquals("Unexpected desired exchange state", State.ACTIVE, _exchange.getDesiredState());
-    }
-
     public void testDeleteOfExchangeSetAsAlternate() throws Exception
     {
         Map<String, Object> attributes = new HashMap<>();

Modified: qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java?rev=1703250&r1=1703249&r2=1703250&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java (original)
+++ qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java Tue Sep 15 16:40:10 2015
@@ -987,46 +987,44 @@ public class ServerSessionDelegate exten
     @Override
     public void exchangeDelete(Session session, ExchangeDelete method)
     {
-        VirtualHostImpl virtualHost = getVirtualHost(session);
-
-        try
+        if (nameNullOrEmpty(method.getExchange()))
         {
-            if (nameNullOrEmpty(method.getExchange()))
-            {
-                exception(session, method, ExecutionErrorCode.INVALID_ARGUMENT, "Delete not allowed for default exchange");
-                return;
-            }
+            exception(session, method, ExecutionErrorCode.INVALID_ARGUMENT, "Delete not allowed for default exchange");
+            return;
+        }
 
-            ExchangeImpl exchange = getExchange(session, method.getExchange());
+        ExchangeImpl exchange = getExchange(session, method.getExchange());
 
-            if(exchange == null)
+        if(exchange == null)
+        {
+            exception(session, method, ExecutionErrorCode.NOT_FOUND, "No such exchange '" + method.getExchange() + "'");
+        }
+        else
+        {
+            if (method.getIfUnused() && exchange.hasBindings())
             {
-                exception(session, method, ExecutionErrorCode.NOT_FOUND, "No such exchange '" + method.getExchange() + "'");
+                exception(session, method, ExecutionErrorCode.PRECONDITION_FAILED, "Exchange has bindings");
             }
             else
             {
-                if (method.getIfUnused() && exchange.hasBindings())
+                try
+                {
+                    exchange.delete();
+                }
+                catch (ExchangeIsAlternateException e)
                 {
-                    exception(session, method, ExecutionErrorCode.PRECONDITION_FAILED, "Exchange has bindings");
+                    exception(session, method, ExecutionErrorCode.NOT_ALLOWED, "Exchange in use as an alternate exchange");
                 }
-                else
+                catch (RequiredExchangeException e)
                 {
-                    virtualHost.removeExchange(exchange, !method.getIfUnused());
+                    exception(session, method, ExecutionErrorCode.NOT_ALLOWED, "Exchange '"+method.getExchange()+"' cannot be deleted");
+                }
+                catch (AccessControlException e)
+                {
+                    exception(session, method, ExecutionErrorCode.UNAUTHORIZED_ACCESS, e.getMessage());
                 }
             }
         }
-        catch (ExchangeIsAlternateException e)
-        {
-            exception(session, method, ExecutionErrorCode.NOT_ALLOWED, "Exchange in use as an alternate exchange");
-        }
-        catch (RequiredExchangeException e)
-        {
-            exception(session, method, ExecutionErrorCode.NOT_ALLOWED, "Exchange '"+method.getExchange()+"' cannot be deleted");
-        }
-        catch (AccessControlException e)
-        {
-            exception(session, method, ExecutionErrorCode.UNAUTHORIZED_ACCESS, e.getMessage());
-        }
     }
 
     private boolean nameNullOrEmpty(String name)

Modified: qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/test/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegateTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/test/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegateTest.java?rev=1703250&r1=1703249&r2=1703250&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/test/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegateTest.java (original)
+++ qpid/java/trunk/broker-plugins/amqp-0-10-protocol/src/test/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegateTest.java Tue Sep 15 16:40:10 2015
@@ -88,7 +88,7 @@ public class ServerSessionDelegateTest e
         final ExchangeDelete method = new ExchangeDelete(getTestName(), Option.IF_UNUSED);
         _delegate.exchangeDelete(_session, method);
 
-        verify(_host).removeExchange(exchange, false);
+        verify(exchange).delete();
     }
 
 }

Modified: qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java?rev=1703250&r1=1703249&r2=1703250&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java (original)
+++ qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java Tue Sep 15 16:40:10 2015
@@ -3047,55 +3047,54 @@ public class AMQChannel
 
         VirtualHostImpl virtualHost = _connection.getVirtualHost();
         sync();
-        try
+
+        if (isDefaultExchange(exchangeStr))
         {
+            _connection.sendConnectionClose(AMQConstant.NOT_ALLOWED,
+                    "Default Exchange cannot be deleted", getChannelId());
 
-            if (isDefaultExchange(exchangeStr))
-            {
-                _connection.sendConnectionClose(AMQConstant.NOT_ALLOWED,
-                        "Default Exchange cannot be deleted", getChannelId());
+        }
 
-            }
+        else
+        {
+            final String exchangeName = exchangeStr.toString();
 
+            final ExchangeImpl exchange = virtualHost.getAttainedExchange(exchangeName);
+            if (exchange == null)
+            {
+                closeChannel(AMQConstant.NOT_FOUND, "No such exchange: '" + exchangeStr + "'");
+            }
             else
             {
-                final String exchangeName = exchangeStr.toString();
-
-                final ExchangeImpl exchange = virtualHost.getAttainedExchange(exchangeName);
-                if (exchange == null)
+                if (ifUnused && exchange.hasBindings())
                 {
-                    closeChannel(AMQConstant.NOT_FOUND, "No such exchange: '" + exchangeStr + "'");
+                    closeChannel(AMQConstant.IN_USE, "Exchange has bindings");
                 }
                 else
                 {
-                    if (ifUnused && exchange.hasBindings())
+                    try
                     {
-                        closeChannel(AMQConstant.IN_USE, "Exchange has bindings");
-                    }
-                    else
-                    {
-                        virtualHost.removeExchange(exchange, !ifUnused);
+                        exchange.delete();
 
                         ExchangeDeleteOkBody responseBody = _connection.getMethodRegistry().createExchangeDeleteOkBody();
 
                         _connection.writeFrame(responseBody.generateFrame(getChannelId()));
                     }
+                    catch (ExchangeIsAlternateException e)
+                    {
+                        closeChannel(AMQConstant.NOT_ALLOWED, "Exchange in use as an alternate exchange");
+                    }
+                    catch (RequiredExchangeException e)
+                    {
+                        closeChannel(AMQConstant.NOT_ALLOWED, "Exchange '" + exchangeStr + "' cannot be deleted");
+                    }
+                    catch (AccessControlException e)
+                    {
+                        _connection.sendConnectionClose(AMQConstant.ACCESS_REFUSED, e.getMessage(), getChannelId());
+                    }
                 }
             }
         }
-        catch (ExchangeIsAlternateException e)
-        {
-            closeChannel(AMQConstant.NOT_ALLOWED, "Exchange in use as an alternate exchange");
-        }
-        catch (RequiredExchangeException e)
-        {
-            closeChannel(AMQConstant.NOT_ALLOWED,
-                         "Exchange '" + exchangeStr + "' cannot be deleted");
-        }
-        catch (AccessControlException e)
-        {
-            _connection.sendConnectionClose(AMQConstant.ACCESS_REFUSED, e.getMessage(), getChannelId());
-        }
     }
 
     @Override

Modified: qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/AMQChannelTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/AMQChannelTest.java?rev=1703250&r1=1703249&r2=1703250&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/AMQChannelTest.java (original)
+++ qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/AMQChannelTest.java Tue Sep 15 16:40:10 2015
@@ -146,7 +146,7 @@ public class AMQChannelTest extends Qpid
         AMQChannel channel = new AMQChannel(_amqConnection, 1, _messageStore);
         channel.receiveExchangeDelete(AMQShortString.valueOf(getTestName()), true, false);
 
-        verify(_virtualHost).removeExchange(exchange, false);
+        verify(exchange).delete();
     }
 
     public void testOversizedMessageClosesChannel() throws Exception

Modified: qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java?rev=1703250&r1=1703249&r2=1703250&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java (original)
+++ qpid/java/trunk/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java Tue Sep 15 16:40:10 2015
@@ -57,10 +57,6 @@ import org.apache.qpid.server.model.Cont
 import org.apache.qpid.server.model.Model;
 import org.apache.qpid.server.util.urlstreamhandler.data.Handler;
 import org.apache.qpid.server.util.ServerScopedRuntimeException;
-import org.apache.qpid.server.virtualhost.ExchangeExistsException;
-import org.apache.qpid.server.virtualhost.ExchangeIsAlternateException;
-import org.apache.qpid.server.virtualhost.RequiredExchangeException;
-import org.apache.qpid.server.virtualhost.QueueExistsException;
 import org.apache.qpid.util.DataUrlUtils;
 
 public class RestServlet extends AbstractServlet
@@ -469,8 +465,7 @@ public class RestServlet extends Abstrac
             super.service(request, response);
         }
         catch (IllegalArgumentException | IllegalConfigurationException | IllegalStateException | AccessControlException
-                | ExchangeExistsException | QueueExistsException | IntegrityViolationException
-                | IllegalStateTransitionException | NoClassDefFoundError | ExchangeIsAlternateException | RequiredExchangeException e)
+                | IntegrityViolationException | IllegalStateTransitionException | NoClassDefFoundError  e)
         {
             setResponseStatus(request, response, e);
         }
@@ -917,13 +912,10 @@ public class RestServlet extends Abstrac
         {
             int responseCode = HttpServletResponse.SC_BAD_REQUEST;
             String message = e.getMessage();
-            if (e instanceof ExchangeExistsException || e instanceof QueueExistsException
-                    || e instanceof AbstractConfiguredObject.DuplicateIdException
+            if (e instanceof AbstractConfiguredObject.DuplicateIdException
                     || e instanceof AbstractConfiguredObject.DuplicateNameException
                     || e instanceof IntegrityViolationException
-                    || e instanceof IllegalStateTransitionException
-                    || e instanceof ExchangeIsAlternateException
-                    || e instanceof RequiredExchangeException)
+                    || e instanceof IllegalStateTransitionException)
             {
                 responseCode = HttpServletResponse.SC_CONFLICT;
             }

Modified: qpid/java/trunk/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBeanTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBeanTest.java?rev=1703250&r1=1703249&r2=1703250&view=diff
==============================================================================
--- qpid/java/trunk/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBeanTest.java (original)
+++ qpid/java/trunk/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBeanTest.java Tue Sep 15 16:40:10 2015
@@ -222,7 +222,7 @@ public class VirtualHostManagerMBeanTest
             assertEquals("No such exchange \"unknownexchange\"", oe.getMessage());
         }
 
-        verify(mockExchange, never()).deleteWithChecks();
+        verify(mockExchange, never()).delete();
     }
 
     private static Map<String,Object> matchesMap(final String name,



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org