summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2014-09-08 12:31:27 +0000
committerRobert Godfrey <rgodfrey@apache.org>2014-09-08 12:31:27 +0000
commitf69a14cb6de1e43d03e7c478c4c181553ef6ecb0 (patch)
tree44af7966ccb0aa9a732b31261c70e64f2c6ab5f4
parentb2c1ccdc33af4148a39221e81d0c0e3bea60aca3 (diff)
downloadqpid-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
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java10
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java7
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java9
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;
}