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