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/09/07 01:02:48 UTC

svn commit: r1622961 - in /qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server: exchange/AbstractExchange.java model/AbstractConfiguredObject.java queue/AbstractQueue.java

Author: rgodfrey
Date: Sat Sep  6 23:02:48 2014
New Revision: 1622961

URL: http://svn.apache.org/r1622961
Log:
QPID-6079 : [Java Broker] Objects created as duplicates should be automatically deleted

Modified:
    qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java
    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/queue/AbstractQueue.java

Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java?rev=1622961&r1=1622960&r2=1622961&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java Sat Sep  6 23:02:48 2014
@@ -763,12 +763,22 @@ public abstract class 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)

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=1622961&r1=1622960&r2=1622961&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 Sat Sep  6 23:02:48 2014
@@ -901,7 +901,7 @@ public abstract class AbstractConfigured
         }
     }
 
-    protected void childAdded(ConfiguredObject child)
+    protected void childAdded(ConfiguredObject<?> child)
     {
         synchronized (_changeListeners)
         {
@@ -1213,6 +1213,7 @@ public abstract class AbstractConfigured
         {
             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 AbstractConfigured
 
     public final void delete()
     {
+        if(getState() == State.UNINITIALIZED)
+        {
+            _desiredState = State.DELETED;
+        }
         setDesiredState(State.DELETED);
     }
 

Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java?rev=1622961&r1=1622960&r2=1622961&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java Sat Sep  6 23:02:48 2014
@@ -1791,6 +1791,7 @@ public abstract class AbstractQueue<X ex
             txn.commit();
 
             preSetAlternateExchange();
+            _alternateExchange = null;
 
 
             for (Action<? super AMQQueue> task : _deleteTaskList)
@@ -2818,10 +2819,18 @@ public abstract class AbstractQueue<X ex
         _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;
     }
 



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