diff options
author | Robert Godfrey <rgodfrey@apache.org> | 2014-09-08 12:31:27 +0000 |
---|---|---|
committer | Robert Godfrey <rgodfrey@apache.org> | 2014-09-08 12:31:27 +0000 |
commit | f69a14cb6de1e43d03e7c478c4c181553ef6ecb0 (patch) | |
tree | 44af7966ccb0aa9a732b31261c70e64f2c6ab5f4 | |
parent | b2c1ccdc33af4148a39221e81d0c0e3bea60aca3 (diff) | |
download | qpid-python-f69a14cb6de1e43d03e7c478c4c181553ef6ecb0.tar.gz |
QPID-6079 : Merged revisions 1622961 1623055 from trunk to 0.30
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/0.30@1623374 13f79535-47bb-0310-9956-ffa450edef68
3 files changed, 24 insertions, 2 deletions
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java index af1de8b099..c1c824a0c6 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java @@ -763,12 +763,22 @@ public abstract class AbstractExchange<T extends AbstractExchange<T>> _state = State.ACTIVE; } + + @StateTransition(currentState = State.UNINITIALIZED, desiredState = State.DELETED) + private void doDeleteBeforeInitialize() + { + preSetAlternateExchange(); + _state = State.DELETED; + } + + @StateTransition(currentState = State.ACTIVE, desiredState = State.DELETED) private void doDelete() { try { _virtualHost.removeExchange(this,true); + preSetAlternateExchange(); _state = State.DELETED; } catch (ExchangeIsAlternateException | RequiredExchangeException e) diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java index 31de8118dd..9395adc024 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java @@ -901,7 +901,7 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im } } - protected void childAdded(ConfiguredObject child) + protected void childAdded(ConfiguredObject<?> child) { synchronized (_changeListeners) { @@ -1213,6 +1213,7 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im { if (_childrenByName.get(categoryClass).containsKey(name)) { + child.delete(); throw new DuplicateNameException(child); } _childrenByName.get(categoryClass).put(name, child); @@ -1229,6 +1230,10 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im public final void delete() { + if(getState() == State.UNINITIALIZED) + { + _desiredState = State.DELETED; + } setDesiredState(State.DELETED); } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java index c49c2790df..ca89db3849 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java @@ -1792,7 +1792,6 @@ public abstract class AbstractQueue<X extends AbstractQueue<X>> preSetAlternateExchange(); - for (Action<? super AMQQueue> task : _deleteTaskList) { task.performAction(this); @@ -2818,10 +2817,18 @@ public abstract class AbstractQueue<X extends AbstractQueue<X>> _state = State.ACTIVE; } + @StateTransition(currentState = State.UNINITIALIZED, desiredState = State.DELETED) + private void doDeleteBeforeInitialize() + { + preSetAlternateExchange(); + _state = State.DELETED; + } + @StateTransition(currentState = State.ACTIVE, desiredState = State.DELETED) private void doDelete() { _virtualHost.removeQueue(this); + preSetAlternateExchange(); _state = State.DELETED; } |