Author: rgodfrey
Date: Tue Mar  3 09:30:49 2015
New Revision: 1663573

URL: http://svn.apache.org/r1663573
Log:
QPID-6428 : [Java Broker] Use StoreConfigurationChangeListener to manage 
storage of all configured objects

Modified:
    
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/binding/BindingImpl.java
    
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/StoreConfigurationChangeListener.java
    
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/queue/AbstractQueue.java
    
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/VirtualHostStoreUpgraderAndRecoverer.java
    
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
    
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/binding/BindingImplTest.java
    
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/StoreConfigurationChangeListenerTest.java
    
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/VirtualHostTest.java

Modified: 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/binding/BindingImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/binding/BindingImpl.java?rev=1663573&r1=1663572&r2=1663573&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/binding/BindingImpl.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/binding/BindingImpl.java
 Tue Mar  3 09:30:49 2015
@@ -20,7 +20,6 @@
  */
 package org.apache.qpid.server.binding;
 
-import java.security.AccessControlException;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -45,10 +44,8 @@ import org.apache.qpid.server.model.Mana
 import org.apache.qpid.server.model.Queue;
 import org.apache.qpid.server.model.State;
 import org.apache.qpid.server.model.StateTransition;
-import org.apache.qpid.server.model.VirtualHost;
 import org.apache.qpid.server.queue.AMQQueue;
 import org.apache.qpid.server.util.StateChangeListener;
-import org.apache.qpid.server.virtualhost.VirtualHostImpl;
 
 public class BindingImpl
         extends AbstractConfiguredObject<BindingImpl>
@@ -108,26 +105,6 @@ public class BindingImpl
         }
     }
 
-    @Override
-    protected void onCreate()
-    {
-        super.onCreate();
-        try
-        {
-            
_queue.getVirtualHost().getSecurityManager().authoriseCreateBinding(this);
-        }
-        catch(AccessControlException e)
-        {
-            deleted();
-            throw e;
-        }
-        if (isDurable())
-        {
-            
_queue.getVirtualHost().getDurableConfigurationStore().create(asObjectRecord());
-        }
-
-    }
-
     private static Map<String, Object> enhanceWithDurable(Map<String, Object> 
attributes,
                                                           final AMQQueue queue,
                                                           final ExchangeImpl 
exchange)
@@ -263,12 +240,6 @@ public class BindingImpl
                     {
                         _arguments = arguments;
                         BindingImpl.super.setAttribute(ARGUMENTS, 
getActualAttributes().get(ARGUMENTS), arguments);
-                        if (isDurable())
-                        {
-                            VirtualHostImpl<?, ?, ?> vhost =
-                                    (VirtualHostImpl<?, ?, ?>) 
_exchange.getParent(VirtualHost.class);
-                            vhost.getDurableConfigurationStore().update(true, 
asObjectRecord());
-                        }
                     }
                 }
                );
@@ -278,6 +249,8 @@ public class BindingImpl
     @Override
     public void validateOnCreate()
     {
+        
_queue.getVirtualHost().getSecurityManager().authoriseCreateBinding(this);
+
         AMQQueue queue = getAMQQueue();
         Map<String, Object> arguments = getArguments();
         if (arguments!=null && !arguments.isEmpty() && 
FilterSupport.argumentsContainFilter(arguments))

Modified: 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/StoreConfigurationChangeListener.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/StoreConfigurationChangeListener.java?rev=1663573&r1=1663572&r2=1663573&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/StoreConfigurationChangeListener.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/StoreConfigurationChangeListener.java
 Tue Mar  3 09:30:49 2015
@@ -42,7 +42,10 @@ public class StoreConfigurationChangeLis
     {
         if (newState == State.DELETED)
         {
-            _store.remove(object.asObjectRecord());
+            if(object.isDurable())
+            {
+                _store.remove(object.asObjectRecord());
+            }
             object.removeChangeListener(this);
         }
     }
@@ -52,17 +55,21 @@ public class StoreConfigurationChangeLis
     {
         if (!object.managesChildStorage())
         {
-            child.addChangeListener(this);
-            _store.update(true,child.asObjectRecord());
+            if(object.isDurable() && child.isDurable())
+            {
+                child.addChangeListener(this);
+                _store.update(true, child.asObjectRecord());
 
-            Class<? extends ConfiguredObject> categoryClass = 
child.getCategoryClass();
-            Collection<Class<? extends ConfiguredObject>> childTypes = 
child.getModel().getChildTypes(categoryClass);
+                Class<? extends ConfiguredObject> categoryClass = 
child.getCategoryClass();
+                Collection<Class<? extends ConfiguredObject>> childTypes =
+                        child.getModel().getChildTypes(categoryClass);
 
-            for(Class<? extends ConfiguredObject> childClass : childTypes)
-            {
-                for (ConfiguredObject<?> grandchild : 
child.getChildren(childClass))
+                for (Class<? extends ConfiguredObject> childClass : childTypes)
                 {
-                    childAdded(child, grandchild);
+                    for (ConfiguredObject<?> grandchild : 
child.getChildren(childClass))
+                    {
+                        childAdded(child, grandchild);
+                    }
                 }
             }
         }
@@ -72,14 +79,20 @@ public class StoreConfigurationChangeLis
     @Override
     public void childRemoved(ConfiguredObject object, ConfiguredObject child)
     {
-        _store.remove(child.asObjectRecord());
+        if(child.isDurable())
+        {
+            _store.remove(child.asObjectRecord());
+        }
         child.removeChangeListener(this);
     }
 
     @Override
     public void attributeSet(ConfiguredObject object, String attributeName, 
Object oldAttributeValue, Object newAttributeValue)
     {
-        _store.update(false, object.asObjectRecord());
+        if(object.isDurable())
+        {
+            _store.update(false, object.asObjectRecord());
+        }
     }
 
     @Override

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=1663573&r1=1663572&r2=1663573&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
 Tue Mar  3 09:30:49 2015
@@ -177,17 +177,6 @@ public abstract class AbstractExchange<T
     }
 
     @Override
-    protected void onCreate()
-    {
-        super.onCreate();
-        if(isDurable())
-        {
-            
getVirtualHost().getDurableConfigurationStore().create(asObjectRecord());
-        }
-
-    }
-
-    @Override
     public EventLogger getEventLogger()
     {
         return _virtualHost.getEventLogger();
@@ -213,12 +202,6 @@ public abstract class AbstractExchange<T
             throw new RequiredExchangeException(getName());
         }
 
-        if (isDurable() && !isAutoDelete())
-        {
-            
getVirtualHost().getDurableConfigurationStore().remove(asObjectRecord());
-
-        }
-
         if(_closed.compareAndSet(false,true))
         {
             List<BindingImpl> bindings = new ArrayList<BindingImpl>(_bindings);
@@ -241,11 +224,6 @@ public abstract class AbstractExchange<T
             }
             _closeTaskList.clear();
 
-            if (isDurable() && !isAutoDelete())
-            {
-                
getVirtualHost().getDurableConfigurationStore().remove(asObjectRecord());
-
-            }
         }
         deleted();
     }
@@ -665,10 +643,6 @@ public abstract class AbstractExchange<T
             doRemoveBinding(b);
             queue.removeBinding(b);
 
-            if (b.isDurable())
-            {
-                
_virtualHost.getDurableConfigurationStore().remove(b.asObjectRecord());
-            }
             b.delete();
         }
 
@@ -905,9 +879,5 @@ public abstract class AbstractExchange<T
     protected void changeAttributes(final Map<String, Object> attributes)
     {
         super.changeAttributes(attributes);
-        if (isDurable() && getState() != State.DELETED)
-        {
-            this.getVirtualHost().getDurableConfigurationStore().update(false, 
asObjectRecord());
-        }
     }
 }

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=1663573&r1=1663572&r2=1663573&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
 Tue Mar  3 09:30:49 2015
@@ -293,11 +293,7 @@ public abstract class AbstractQueue<X ex
                          });
         }
 
-        if (isDurable())
-        {
-            
_virtualHost.getDurableConfigurationStore().create(asObjectRecord());
-        }
-        else if(getMessageDurability() != MessageDurability.NEVER)
+        if(!isDurable() && getMessageDurability() != MessageDurability.NEVER)
         {
             Subject.doAs(SecurityManager.getSubjectWithAddedSystemRights(),
                          new PrivilegedAction<Object>()
@@ -361,17 +357,9 @@ public abstract class AbstractQueue<X ex
 
                 case PRINCIPAL:
                     _exclusiveOwner = 
sessionModel.getConnectionModel().getAuthorizedPrincipal();
-                    if(isDurable())
-                    {
-                        
_virtualHost.getDurableConfigurationStore().update(false,asObjectRecord());
-                    }
                     break;
                 case CONTAINER:
                     _exclusiveOwner = 
sessionModel.getConnectionModel().getRemoteContainerName();
-                    if(isDurable())
-                    {
-                        
_virtualHost.getDurableConfigurationStore().update(false,asObjectRecord());
-                    }
                     break;
                 case CONNECTION:
                     _exclusiveOwner = sessionModel.getConnectionModel();

Modified: 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/VirtualHostStoreUpgraderAndRecoverer.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/VirtualHostStoreUpgraderAndRecoverer.java?rev=1663573&r1=1663572&r2=1663573&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/VirtualHostStoreUpgraderAndRecoverer.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/VirtualHostStoreUpgraderAndRecoverer.java
 Tue Mar  3 09:30:49 2015
@@ -20,8 +20,10 @@
  */
 package org.apache.qpid.server.store;
 
+import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.Map;
@@ -30,14 +32,19 @@ import java.util.UUID;
 
 import org.apache.qpid.server.configuration.BrokerProperties;
 import org.apache.qpid.server.configuration.IllegalConfigurationException;
+import 
org.apache.qpid.server.configuration.store.StoreConfigurationChangeListener;
 import org.apache.qpid.server.filter.FilterSupport;
 import org.apache.qpid.server.model.Binding;
+import org.apache.qpid.server.model.ConfigurationChangeListener;
+import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.Exchange;
 import org.apache.qpid.server.model.Queue;
+import org.apache.qpid.server.model.State;
 import org.apache.qpid.server.model.UUIDGenerator;
 import org.apache.qpid.server.model.VirtualHost;
 import org.apache.qpid.server.model.VirtualHostNode;
 import org.apache.qpid.server.queue.QueueArgumentsConverter;
+import org.apache.qpid.server.util.Action;
 
 public class VirtualHostStoreUpgraderAndRecoverer
 {
@@ -509,12 +516,100 @@ public class VirtualHostStoreUpgraderAnd
 
     }
 
-    public void perform(DurableConfigurationStore durableConfigurationStore)
+    public void perform(final DurableConfigurationStore 
durableConfigurationStore)
     {
         String virtualHostCategory = VirtualHost.class.getSimpleName();
         GenericStoreUpgrader upgraderHandler = new 
GenericStoreUpgrader(virtualHostCategory, VirtualHost.MODEL_VERSION, 
durableConfigurationStore, _upgraders);
         upgraderHandler.upgrade();
 
         new 
GenericRecoverer(_virtualHostNode).recover(upgraderHandler.getRecords());
+
+        final StoreConfigurationChangeListener configChangeListener = new 
StoreConfigurationChangeListener(durableConfigurationStore);
+        if(_virtualHostNode.getVirtualHost() != null)
+        {
+            applyRecursively(_virtualHostNode.getVirtualHost(), new 
Action<ConfiguredObject<?>>()
+            {
+                @Override
+                public void performAction(final ConfiguredObject<?> object)
+                {
+                    object.addChangeListener(configChangeListener);
+                }
+            });
+        }
+        _virtualHostNode.addChangeListener(new ConfigurationChangeListener()
+        {
+            @Override
+            public void stateChanged(final ConfiguredObject<?> object, final 
State oldState, final State newState)
+            {
+
+            }
+
+            @Override
+            public void childAdded(final ConfiguredObject<?> object, final 
ConfiguredObject<?> child)
+            {
+                if(child instanceof VirtualHost)
+                {
+                    applyRecursively(child, new Action<ConfiguredObject<?>>()
+                    {
+                        @Override
+                        public void performAction(final ConfiguredObject<?> 
object)
+                        {
+                            if(object.isDurable())
+                            {
+                                durableConfigurationStore.update(true, 
object.asObjectRecord());
+                                object.addChangeListener(configChangeListener);
+                            }
+                        }
+                    });
+
+                }
+            }
+
+            @Override
+            public void childRemoved(final ConfiguredObject<?> object, final 
ConfiguredObject<?> child)
+            {
+                if(child instanceof VirtualHost)
+                {
+                    child.removeChangeListener(configChangeListener);
+                }
+            }
+
+            @Override
+            public void attributeSet(final ConfiguredObject<?> object,
+                                     final String attributeName,
+                                     final Object oldAttributeValue,
+                                     final Object newAttributeValue)
+            {
+
+            }
+        });
+    }
+
+    private void applyRecursively(final ConfiguredObject<?> object, final 
Action<ConfiguredObject<?>> action)
+    {
+        applyRecursively(object, action, new HashSet<ConfiguredObject<?>>());
+    }
+
+    private void applyRecursively(final ConfiguredObject<?> object,
+                                  final Action<ConfiguredObject<?>> action,
+                                  final HashSet<ConfiguredObject<?>> visited)
+    {
+        if(!visited.contains(object))
+        {
+            visited.add(object);
+            action.performAction(object);
+            for(Class<? extends ConfiguredObject> childClass : 
object.getModel().getChildTypes(object.getCategoryClass()))
+            {
+                Collection<? extends ConfiguredObject> children = 
object.getChildren(childClass);
+                if(children != null)
+                {
+                    for(ConfiguredObject<?> child : children)
+                    {
+                        applyRecursively(child, action, visited);
+                    }
+                }
+            }
+        }
     }
+
 }

Modified: 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java?rev=1663573&r1=1663572&r2=1663573&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
 Tue Mar  3 09:30:49 2015
@@ -77,7 +77,6 @@ import org.apache.qpid.server.security.S
 import org.apache.qpid.server.security.access.Operation;
 import org.apache.qpid.server.stats.StatisticsCounter;
 import org.apache.qpid.server.store.ConfiguredObjectRecord;
-import org.apache.qpid.server.store.ConfiguredObjectRecordImpl;
 import org.apache.qpid.server.store.DurableConfigurationStore;
 import org.apache.qpid.server.store.Event;
 import org.apache.qpid.server.store.EventListener;
@@ -341,9 +340,6 @@ public abstract class AbstractVirtualHos
         _messageStore.addEventListener(this, 
Event.PERSISTENT_MESSAGE_SIZE_OVERFULL);
         _messageStore.addEventListener(this, 
Event.PERSISTENT_MESSAGE_SIZE_UNDERFULL);
 
-        addChangeListener(new StoreUpdatingChangeListener());
-
-
         _fileSystemMaxUsagePercent = getContextValue(Integer.class, 
Broker.STORE_FILESYSTEM_MAX_USAGE_PERCENT);
 
 
@@ -664,14 +660,6 @@ public abstract class AbstractVirtualHos
     {
         int purged = queue.deleteAndReturnCount();
 
-        if (queue.isDurable() && !(queue.getLifetimePolicy()
-                                   == LifetimePolicy.DELETE_ON_CONNECTION_CLOSE
-                                   || queue.getLifetimePolicy()
-                                      == LifetimePolicy.DELETE_ON_SESSION_END))
-        {
-            DurableConfigurationStore store = getDurableConfigurationStore();
-            store.remove(queue.asObjectRecord());
-        }
         return purged;
 }
 
@@ -1535,14 +1523,6 @@ public abstract class AbstractVirtualHos
         return total;
     }
 
-    @Override
-    protected void onCreate()
-    {
-        super.onCreate();
-        ConfiguredObjectRecord record = asObjectRecord();
-        getDurableConfigurationStore().create(new 
ConfiguredObjectRecordImpl(record.getId(), record.getType(), 
record.getAttributes()));
-    }
-
     @StateTransition( currentState = { State.UNINITIALIZED,State.ERRORED }, 
desiredState = State.ACTIVE )
     private void onActivate()
     {
@@ -1654,44 +1634,6 @@ public abstract class AbstractVirtualHos
         onActivate();
     }
 
-    private class StoreUpdatingChangeListener implements 
ConfigurationChangeListener
-    {
-        @Override
-        public void stateChanged(final ConfiguredObject<?> object, final State 
oldState, final State newState)
-        {
-            if (object == AbstractVirtualHost.this && isDurable() && newState 
== State.DELETED)
-            {
-                getDurableConfigurationStore().remove(asObjectRecord());
-                object.removeChangeListener(this);
-            }
-        }
-
-        @Override
-        public void childAdded(final ConfiguredObject<?> object, final 
ConfiguredObject<?> child)
-        {
-
-        }
-
-        @Override
-        public void childRemoved(final ConfiguredObject<?> object, final 
ConfiguredObject<?> child)
-        {
-
-        }
-
-        @Override
-        public void attributeSet(final ConfiguredObject<?> object,
-                                 final String attributeName,
-                                 final Object oldAttributeValue,
-                                 final Object newAttributeValue)
-        {
-            if (object == AbstractVirtualHost.this && isDurable() && 
getState() != State.DELETED && isAttributePersisted(attributeName)
-                    && !(attributeName.equals(VirtualHost.DESIRED_STATE) && 
newAttributeValue.equals(State.DELETED)))
-            {
-                getDurableConfigurationStore().update(false, asObjectRecord());
-            }
-        }
-    }
-
     private class FileSystemSpaceChecker extends HouseKeepingTask
     {
         private boolean _fileSystemFull;

Modified: 
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/binding/BindingImplTest.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/binding/BindingImplTest.java?rev=1663573&r1=1663572&r2=1663573&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/binding/BindingImplTest.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/binding/BindingImplTest.java
 Tue Mar  3 09:30:49 2015
@@ -35,6 +35,8 @@ import org.apache.qpid.server.model.Bind
 import org.apache.qpid.server.model.BrokerModel;
 import org.apache.qpid.server.model.Model;
 import org.apache.qpid.server.queue.AMQQueue;
+import org.apache.qpid.server.security.SecurityManager;
+import org.apache.qpid.server.virtualhost.VirtualHostImpl;
 import org.apache.qpid.test.utils.QpidTestCase;
 
 public class BindingImplTest extends QpidTestCase
@@ -57,7 +59,11 @@ public class BindingImplTest extends Qpi
         attributes.put(Binding.ARGUMENTS, arguments);
         attributes.put(Binding.NAME, getTestName());
         AMQQueue queue = mock(AMQQueue.class);
+        VirtualHostImpl vhost = mock(VirtualHostImpl.class);
+        SecurityManager securityManager = mock(SecurityManager.class);
+        when(vhost.getSecurityManager()).thenReturn(securityManager);
         when(queue.getTaskExecutor()).thenReturn(_taskExecutor);
+        when(queue.getVirtualHost()).thenReturn(vhost);
         when(queue.getModel()).thenReturn(_model);
         ExchangeImpl exchange = mock(ExchangeImpl.class);
         when(exchange.getTaskExecutor()).thenReturn(_taskExecutor);

Modified: 
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/StoreConfigurationChangeListenerTest.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/StoreConfigurationChangeListenerTest.java?rev=1663573&r1=1663572&r2=1663573&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/StoreConfigurationChangeListenerTest.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/StoreConfigurationChangeListenerTest.java
 Tue Mar  3 09:30:49 2015
@@ -57,6 +57,7 @@ public class StoreConfigurationChangeLis
         notifyBrokerStarted();
         UUID id = UUID.randomUUID();
         ConfiguredObject object = mock(VirtualHost.class);
+        when(object.isDurable()).thenReturn(true);
         when(object.getId()).thenReturn(id);
         ConfiguredObjectRecord record = mock(ConfiguredObjectRecord.class);
         when(object.asObjectRecord()).thenReturn(record);
@@ -69,11 +70,13 @@ public class StoreConfigurationChangeLis
         notifyBrokerStarted();
         Broker broker = mock(Broker.class);
         when(broker.getCategoryClass()).thenReturn(Broker.class);
+        when(broker.isDurable()).thenReturn(true);
         VirtualHost child = mock(VirtualHost.class);
         when(child.getCategoryClass()).thenReturn(VirtualHost.class);
         Model model = mock(Model.class);
         
when(model.getChildTypes(any(Class.class))).thenReturn(Collections.<Class<? 
extends ConfiguredObject>>emptyList());
         when(child.getModel()).thenReturn(model);
+        when(child.isDurable()).thenReturn(true);
         _listener.childAdded(broker, child);
         verify(_store).update(eq(true), any(ConfiguredObjectRecord.class));
     }
@@ -83,6 +86,7 @@ public class StoreConfigurationChangeLis
         notifyBrokerStarted();
         Broker broker = mock(Broker.class);
         when(broker.getCategoryClass()).thenReturn(Broker.class);
+        when(broker.isDurable()).thenReturn(true);
         _listener.attributeSet(broker, Broker.CONNECTION_SESSION_COUNT_LIMIT, 
null, 1);
         verify(_store).update(eq(false),any(ConfiguredObjectRecord.class));
     }

Modified: 
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/VirtualHostTest.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/VirtualHostTest.java?rev=1663573&r1=1663572&r2=1663573&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/VirtualHostTest.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/VirtualHostTest.java
 Tue Mar  3 09:30:49 2015
@@ -45,6 +45,7 @@ import org.mockito.stubbing.Answer;
 
 import org.apache.qpid.exchange.ExchangeDefaults;
 import org.apache.qpid.protocol.AMQConstant;
+import 
org.apache.qpid.server.configuration.store.StoreConfigurationChangeListener;
 import org.apache.qpid.server.configuration.updater.CurrentThreadTaskExecutor;
 import org.apache.qpid.server.configuration.updater.TaskExecutor;
 import 
org.apache.qpid.server.connection.IConnectionRegistry.RegistryChangeListener;
@@ -66,6 +67,7 @@ public class VirtualHostTest extends Qpi
     private VirtualHostNode<?> _virtualHostNode;
     private DurableConfigurationStore _configStore;
     private VirtualHost<?, ?, ?> _virtualHost;
+    private StoreConfigurationChangeListener _storeConfigurationChangeListener;
 
     @Override
     protected void setUp() throws Exception
@@ -79,9 +81,13 @@ public class VirtualHostTest extends Qpi
         when(_broker.getTaskExecutor()).thenReturn(_taskExecutor);
 
         _virtualHostNode = mock(VirtualHostNode.class);
+        when(_virtualHostNode.isDurable()).thenReturn(true);
         _configStore = mock(DurableConfigurationStore.class);
+        _storeConfigurationChangeListener = new 
StoreConfigurationChangeListener(_configStore);
+
         
when(_virtualHostNode.getConfigurationStore()).thenReturn(_configStore);
 
+
         // Virtualhost needs the EventLogger from the SystemContext.
         when(_virtualHostNode.getParent(Broker.class)).thenReturn(_broker);
 
@@ -122,7 +128,7 @@ public class VirtualHostTest extends Qpi
         assertEquals("Unexpected name", virtualHostName, 
virtualHost.getName());
         assertEquals("Unexpected state", State.ACTIVE, virtualHost.getState());
 
-        verify(_configStore).create(matchesRecord(virtualHost.getId(), 
virtualHost.getType()));
+        
verify(_configStore).update(eq(true),matchesRecord(virtualHost.getId(), 
virtualHost.getType()));
     }
 
     public void testDeleteVirtualHost()
@@ -170,7 +176,7 @@ public class VirtualHostTest extends Qpi
         virtualHost.start();
         assertEquals("Unexpected state", State.ACTIVE, virtualHost.getState());
 
-        verify(_configStore, 
times(1)).create(matchesRecord(virtualHost.getId(), virtualHost.getType()));
+        verify(_configStore, times(1)).update(eq(true), 
matchesRecord(virtualHost.getId(), virtualHost.getType()));
         verify(_configStore, times(2)).update(eq(false), 
matchesRecord(virtualHost.getId(), virtualHost.getType()));
     }
 
@@ -293,7 +299,7 @@ public class VirtualHostTest extends Qpi
         assertNotNull(queue.getId());
         assertEquals(queueName, queue.getName());
 
-        verify(_configStore).create(matchesRecord(queue.getId(), 
queue.getType()));
+        verify(_configStore).update(eq(true),matchesRecord(queue.getId(), 
queue.getType()));
     }
 
     public void testCreateNonDurableQueue()
@@ -396,7 +402,10 @@ public class VirtualHostTest extends Qpi
         attributes.put(VirtualHost.TYPE, 
TestMemoryVirtualHost.VIRTUAL_HOST_TYPE);
 
         TestMemoryVirtualHost host = new TestMemoryVirtualHost(attributes, 
_virtualHostNode);
+        host.addChangeListener(_storeConfigurationChangeListener);
         host.create();
+        // Fire the child added event on the node
+        _storeConfigurationChangeListener.childAdded(_virtualHostNode,host);
         _virtualHost = host;
         return host;
     }



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

Reply via email to