You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kw...@apache.org on 2013/12/20 18:09:22 UTC

svn commit: r1552739 - in /qpid/branches/java-broker-bdb-ha/qpid/java: bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/ bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ bdbstore/src/test/java/org/apache/qpid/se...

Author: kwall
Date: Fri Dec 20 17:09:21 2013
New Revision: 1552739

URL: http://svn.apache.org/r1552739
Log:
QPID-5411: Stop evaluation of replication node attributes from virtual host attributes and
fix json configuration store to allow recovery of Map fields

Added:
    qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/ReplicationNodeRecoverer.java
Modified:
    qpid/branches/java-broker-bdb-ha/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHost.java
    qpid/branches/java-broker-bdb-ha/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostFactory.java
    qpid/branches/java-broker-bdb-ha/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/ReplicatedEnvironmentFacade.java
    qpid/branches/java-broker-bdb-ha/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/LocalReplicationNodeFactory.java
    qpid/branches/java-broker-bdb-ha/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/VirtualHostTest.java
    qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java
    qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/DefaultRecovererProvider.java
    qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/VirtualHostRecoverer.java
    qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java
    qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Model.java
    qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java
    qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/StateManager.java
    qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHost.java
    qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHostFactory.java
    qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ConfigurationEntryStoreTestCase.java
    qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/JsonConfigurationEntryStoreTest.java
    qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStoreTest.java
    qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/StateManagerTest.java

Modified: qpid/branches/java-broker-bdb-ha/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHost.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-bdb-ha/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHost.java?rev=1552739&r1=1552738&r2=1552739&view=diff
==============================================================================
--- qpid/branches/java-broker-bdb-ha/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHost.java (original)
+++ qpid/branches/java-broker-bdb-ha/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHost.java Fri Dec 20 17:09:21 2013
@@ -281,7 +281,6 @@ public class BDBHAVirtualHost extends Ab
                     catch (Exception e)
                     {
                         LOGGER.error("Failed to activate on hearing MASTER change event", e);
-                        throw e;
                     }
                     return null;
                 }
@@ -308,7 +307,6 @@ public class BDBHAVirtualHost extends Ab
                     catch (Exception e)
                     {
                         LOGGER.error("Failed to passivate on hearing REPLICA or DETACHED change event", e);
-                        throw e;
                     }
                     return null;
                 }

Modified: qpid/branches/java-broker-bdb-ha/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostFactory.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-bdb-ha/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostFactory.java?rev=1552739&r1=1552738&r2=1552739&view=diff
==============================================================================
--- qpid/branches/java-broker-bdb-ha/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostFactory.java (original)
+++ qpid/branches/java-broker-bdb-ha/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostFactory.java Fri Dec 20 17:09:21 2013
@@ -66,82 +66,27 @@ public class BDBHAVirtualHostFactory imp
     @Override
     public void validateAttributes(Map<String, Object> attributes)
     {
-        validateAttribute(org.apache.qpid.server.model.VirtualHost.STORE_PATH, String.class, attributes);
-        validateAttribute("haGroupName", String.class, attributes);
-        validateAttribute("haNodeName", String.class, attributes);
-        validateAttribute("haNodeAddress", String.class, attributes);
-        validateAttribute("haHelperAddress", String.class, attributes);
     }
 
-    private void validateAttribute(String attrName, Class<?> clazz, Map<String, Object> attributes)
-    {
-        Object attr = attributes.get(attrName);
-        if(!clazz.isInstance(attr))
-        {
-            throw new IllegalArgumentException("Attribute '"+ attrName
-                                               +"' is required and must be of type "+clazz.getSimpleName()+".");
-        }
-    }
 
     @Override
     public Map<String, Object> createVirtualHostConfiguration(VirtualHostAdapter virtualHostAdapter)
     {
+        //TODO: Dead code?
         LinkedHashMap<String,Object> convertedMap = new LinkedHashMap<String, Object>();
         convertedMap.put("store.environment-path", virtualHostAdapter.getAttribute(org.apache.qpid.server.model.VirtualHost.STORE_PATH));
-
         return convertedMap;
     }
 
+    @Override
     public Map<String, Object> convertVirtualHostConfiguration(Configuration configuration)
     {
-
         LinkedHashMap<String,Object> convertedMap = new LinkedHashMap<String, Object>();
-
         Configuration storeConfiguration = configuration.subset("store");
-
         convertedMap.put(org.apache.qpid.server.model.VirtualHost.STORE_PATH, storeConfiguration.getString(MessageStoreConstants.ENVIRONMENT_PATH_PROPERTY));
         convertedMap.put(MessageStoreConstants.OVERFULL_SIZE_ATTRIBUTE, storeConfiguration.getString(MessageStoreConstants.OVERFULL_SIZE_PROPERTY));
         convertedMap.put(MessageStoreConstants.UNDERFULL_SIZE_ATTRIBUTE, storeConfiguration.getString(MessageStoreConstants.UNDERFULL_SIZE_PROPERTY));
-        convertedMap.put("haGroupName", configuration.getString("store.highAvailability.groupName"));
-        convertedMap.put("haNodeName", configuration.getString("store.highAvailability.nodeName"));
-        convertedMap.put("haNodeAddress", configuration.getString("store.highAvailability.nodeHostPort"));
-        convertedMap.put("haHelperAddress", configuration.getString("store.highAvailability.helperHostPort"));
-
-        final Object haDurability = configuration.getString("store.highAvailability.durability");
-        if(haDurability !=null)
-        {
-            convertedMap.put("haDurability", haDurability);
-        }
-
-        final Object designatedPrimary = configuration.getString("store.highAvailability.designatedPrimary");
-        if(designatedPrimary!=null)
-        {
-            convertedMap.put("haDesignatedPrimary", designatedPrimary);
-        }
-
-        final Object coalescingSync = configuration.getString("store.highAvailability.coalescingSync");
-        if(coalescingSync!=null)
-        {
-            convertedMap.put("haCoalescingSync", coalescingSync);
-        }
-
-
-        Map<String, String> attributes = getEnvironmentMap(storeConfiguration, "envConfig");
-
-        if(!attributes.isEmpty())
-        {
-            convertedMap.put("bdbEnvironmentConfig",attributes);
-        }
-
-        attributes = getEnvironmentMap(storeConfiguration, "repConfig");
-
-        if(!attributes.isEmpty())
-        {
-            convertedMap.put("haReplicationConfig",attributes);
-        }
-
         return convertedMap;
-
     }
 
     private Map<String, String> getEnvironmentMap(Configuration storeConfiguration, String configName)

Modified: qpid/branches/java-broker-bdb-ha/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/ReplicatedEnvironmentFacade.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-bdb-ha/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/ReplicatedEnvironmentFacade.java?rev=1552739&r1=1552738&r2=1552739&view=diff
==============================================================================
--- qpid/branches/java-broker-bdb-ha/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/ReplicatedEnvironmentFacade.java (original)
+++ qpid/branches/java-broker-bdb-ha/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/ReplicatedEnvironmentFacade.java Fri Dec 20 17:09:21 2013
@@ -198,6 +198,7 @@ public class ReplicatedEnvironmentFacade
         {
             try
             {
+                LOGGER.debug("Closing replicated environment facade");
                 _executor.shutdownNow();
                 stopCommitThread();
                 closeDatabases();

Modified: qpid/branches/java-broker-bdb-ha/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/LocalReplicationNodeFactory.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-bdb-ha/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/LocalReplicationNodeFactory.java?rev=1552739&r1=1552738&r2=1552739&view=diff
==============================================================================
--- qpid/branches/java-broker-bdb-ha/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/LocalReplicationNodeFactory.java (original)
+++ qpid/branches/java-broker-bdb-ha/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/LocalReplicationNodeFactory.java Fri Dec 20 17:09:21 2013
@@ -27,7 +27,7 @@ import org.apache.qpid.server.model.Brok
 import org.apache.qpid.server.model.ReplicationNode;
 import org.apache.qpid.server.model.VirtualHost;
 import org.apache.qpid.server.plugin.ReplicationNodeFactory;
-import org.apache.qpid.server.store.berkeleydb.ReplicatedEnvironmentFacade;
+import org.apache.qpid.server.store.berkeleydb.BDBHAVirtualHostFactory;
 
 public class LocalReplicationNodeFactory implements ReplicationNodeFactory
 {
@@ -35,7 +35,7 @@ public class LocalReplicationNodeFactory
     @Override
     public String getType()
     {
-        return ReplicatedEnvironmentFacade.TYPE;
+        return BDBHAVirtualHostFactory.TYPE;
     }
 
     @Override
@@ -44,7 +44,10 @@ public class LocalReplicationNodeFactory
     {
         // TODO KW Temporary code 
         Broker broker = virtualHost.getParent(Broker.class);
-
+        if (broker == null)
+        {
+            throw new IllegalStateException("Cannot find the broker among virtual host parents");
+        }
         return new LocalReplicationNode(id, attributes, virtualHost, broker.getTaskExecutor());
     }
 

Modified: qpid/branches/java-broker-bdb-ha/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/VirtualHostTest.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-bdb-ha/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/VirtualHostTest.java?rev=1552739&r1=1552738&r2=1552739&view=diff
==============================================================================
--- qpid/branches/java-broker-bdb-ha/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/VirtualHostTest.java (original)
+++ qpid/branches/java-broker-bdb-ha/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/VirtualHostTest.java Fri Dec 20 17:09:21 2013
@@ -27,16 +27,21 @@ import java.io.File;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Set;
 import java.util.UUID;
 
 import org.apache.qpid.server.configuration.ConfigurationEntry;
+import org.apache.qpid.server.configuration.ConfigurationEntryStore;
+import org.apache.qpid.server.configuration.ConfiguredObjectRecoverer;
 import org.apache.qpid.server.configuration.RecovererProvider;
+import org.apache.qpid.server.configuration.startup.ReplicationNodeRecoverer;
 import org.apache.qpid.server.configuration.startup.VirtualHostRecoverer;
 import org.apache.qpid.server.configuration.updater.TaskExecutor;
 import org.apache.qpid.server.logging.SystemOutMessageLogger;
 import org.apache.qpid.server.logging.actors.CurrentActor;
 import org.apache.qpid.server.logging.actors.TestLogActor;
 import org.apache.qpid.server.model.Broker;
+import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.ReplicationNode;
 import org.apache.qpid.server.model.State;
 import org.apache.qpid.server.model.VirtualHost;
@@ -60,6 +65,7 @@ public class VirtualHostTest extends Qpi
     private File _configFile;
     private File _bdbStorePath;
     private VirtualHost _host;
+    private ConfigurationEntryStore _store;
 
     @Override
     protected void setUp() throws Exception
@@ -67,12 +73,26 @@ public class VirtualHostTest extends Qpi
         super.setUp();
         CurrentActor.set(new TestLogActor(new SystemOutMessageLogger()));
 
+        _store = mock(ConfigurationEntryStore.class);
         _broker = BrokerTestHelper.createBrokerMock();
         TaskExecutor taslExecutor = mock(TaskExecutor.class);
         when(taslExecutor.isTaskExecutorThread()).thenReturn(true);
         when(_broker.getTaskExecutor()).thenReturn(taslExecutor);
 
-        _recovererProvider = mock(RecovererProvider.class);
+
+        _recovererProvider = new RecovererProvider()
+        {
+            @Override
+            public ConfiguredObjectRecoverer<? extends ConfiguredObject> getRecoverer(String type)
+            {
+                if (type.equals(ReplicationNode.class.getSimpleName()))
+                {
+                    return new ReplicationNodeRecoverer();
+                }
+                throw new IllegalArgumentException("Not supported type: " + type);
+            }
+        };
+
         _statisticsGatherer = mock(StatisticsGatherer.class);
 
         _bdbStorePath = new File(TMP_FOLDER, getTestName() + "." + System.currentTimeMillis());
@@ -104,6 +124,59 @@ public class VirtualHostTest extends Qpi
         }
     }
 
+    public void testCreateBdbHaVirtualHostFromConfigurationEntry()
+    {
+        String repStreamTimeout = "2 h";
+        String nodeName = "node";
+        String groupName = "group";
+        String nodeHostPort = "localhost:" + findFreePort();
+        String helperHostPort = nodeHostPort;
+        String durability = "NO_SYNC,SYNC,NONE";
+
+        UUID nodeId = UUID.randomUUID();
+        Map<String, Object> nodeAttributes = new HashMap<String, Object>();
+        nodeAttributes.put(ReplicationNode.NAME, nodeName);
+        nodeAttributes.put(ReplicationNode.GROUP_NAME, groupName);
+        nodeAttributes.put(ReplicationNode.HOST_PORT, nodeHostPort);
+        nodeAttributes.put(ReplicationNode.HELPER_HOST_PORT, helperHostPort);
+        nodeAttributes.put(ReplicationNode.DURABILITY, durability);
+        nodeAttributes.put(ReplicationNode.STORE_PATH, _bdbStorePath.getAbsolutePath());
+        nodeAttributes.put(ReplicationNode.REPLICATION_PARAMETERS,
+                Collections.singletonMap(ReplicationConfig.REP_STREAM_TIMEOUT, repStreamTimeout));
+
+        ConfigurationEntry nodeEntry = new ConfigurationEntry(nodeId, ReplicationNode.class.getSimpleName(),
+                nodeAttributes, Collections.<UUID> emptySet(), _store);
+        when(_store.getEntry(nodeId)).thenReturn(nodeEntry);
+
+        String hostName = getName();
+
+        Map<String, Object> virtualHostAttributes = new HashMap<String, Object>();
+        virtualHostAttributes.put(VirtualHost.NAME, hostName);
+        virtualHostAttributes.put(VirtualHost.TYPE, BDBHAVirtualHostFactory.TYPE);
+
+        _host = createHost(virtualHostAttributes, Collections.singleton(nodeId));
+        _host.setDesiredState(State.INITIALISING, State.ACTIVE);
+
+        assertEquals("Unexpected host name", hostName, _host.getName());
+        assertEquals("Unexpected host type", BDBHAVirtualHostFactory.TYPE, _host.getType());
+        assertEquals("Unexpected store type", ReplicatedEnvironmentFacade.TYPE, _host.getAttribute(VirtualHost.STORE_TYPE));
+
+        ReplicationNode localNode = _host.getChildren(ReplicationNode.class).iterator().next();
+
+        assertEquals(nodeName, localNode.getName());
+        assertEquals(groupName, localNode.getAttribute(ReplicationNode.GROUP_NAME));
+        assertEquals(nodeHostPort, localNode.getAttribute(ReplicationNode.HOST_PORT));
+        assertEquals(helperHostPort, localNode.getAttribute(ReplicationNode.HELPER_HOST_PORT));
+        assertEquals(durability, localNode.getAttribute(ReplicationNode.DURABILITY));
+        assertEquals("Unexpected store path", _bdbStorePath.getAbsolutePath(), localNode.getAttribute(ReplicationNode.STORE_PATH));
+
+        BDBMessageStore messageStore = (BDBMessageStore) _host.getMessageStore();
+        ReplicatedEnvironment environment = (ReplicatedEnvironment) messageStore.getEnvironmentFacade().getEnvironment();
+        ReplicationConfig envConfig = environment.getRepConfig();
+        assertEquals("Unexpected JE replication stream timeout", repStreamTimeout, envConfig.getConfigParam(ReplicationConfig.REP_STREAM_TIMEOUT));
+
+    }
+
     public void testCreateBdbVirtualHostFromConfigurationFile()
     {
         String hostName = getName();
@@ -152,14 +225,19 @@ public class VirtualHostTest extends Qpi
         assertEquals("Unexpected JE replication stream timeout", repStreamTimeout, envConfig.getConfigParam(ReplicationConfig.REP_STREAM_TIMEOUT));
     }
 
-    private VirtualHost createHost(Map<String, Object> attributes)
+    private VirtualHost createHost(Map<String, Object> attributes, Set<UUID> children)
     {
         ConfigurationEntry entry = new ConfigurationEntry(UUID.randomUUID(), VirtualHost.class.getSimpleName(), attributes,
-                Collections.<UUID> emptySet(), null);
+                children, _store);
 
         return new VirtualHostRecoverer(_statisticsGatherer).create(_recovererProvider, entry, _broker);
     }
 
+    private VirtualHost createHost(Map<String, Object> attributes)
+    {
+        return createHost(attributes, Collections.<UUID> emptySet());
+    }
+
     private VirtualHost createHostFromConfiguration(String hostName, long logFileMax)
     {
         String content = "<virtualhosts><virtualhost><name>" + hostName + "</name><" + hostName + ">"
@@ -172,6 +250,7 @@ public class VirtualHostTest extends Qpi
         return createHost(attributes);
     }
 
+
     private VirtualHost createHaHostFromConfiguration(String hostName, String groupName, String nodeName, String nodeHostPort, String helperHostPort, String durability, String repStreamTimeout)
     {
         String content = "<virtualhosts><virtualhost><name>" + hostName + "</name><" + hostName + ">"

Modified: qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java?rev=1552739&r1=1552738&r2=1552739&view=diff
==============================================================================
--- qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java (original)
+++ qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/VirtualHostConfiguration.java Fri Dec 20 17:09:21 2013
@@ -121,11 +121,6 @@ public class VirtualHostConfiguration ex
         return getLongValue("housekeeping.checkPeriod", _defaultHouseKeepingCheckPeriod);
     }
 
-    public Configuration getStoreConfiguration()
-    {
-        return getConfig().subset("store");
-    }
-
     public String getMessageStoreClass()
     {
         return getStringValue("store.class", null);

Modified: qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/DefaultRecovererProvider.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/DefaultRecovererProvider.java?rev=1552739&r1=1552738&r2=1552739&view=diff
==============================================================================
--- qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/DefaultRecovererProvider.java (original)
+++ qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/DefaultRecovererProvider.java Fri Dec 20 17:09:21 2013
@@ -33,6 +33,7 @@ import org.apache.qpid.server.model.KeyS
 import org.apache.qpid.server.model.Plugin;
 import org.apache.qpid.server.model.Port;
 import org.apache.qpid.server.model.PreferencesProvider;
+import org.apache.qpid.server.model.ReplicationNode;
 import org.apache.qpid.server.model.TrustStore;
 import org.apache.qpid.server.model.VirtualHost;
 import org.apache.qpid.server.model.adapter.AccessControlProviderFactory;
@@ -126,7 +127,10 @@ public class DefaultRecovererProvider im
         {
             return new PluginRecoverer(_pluginFactoryServiceLoader);
         }
-
+        else if(ReplicationNode.class.getSimpleName().equals(type))
+        {
+            return new ReplicationNodeRecoverer();
+        }
         return null;
     }
 

Added: qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/ReplicationNodeRecoverer.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/ReplicationNodeRecoverer.java?rev=1552739&view=auto
==============================================================================
--- qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/ReplicationNodeRecoverer.java (added)
+++ qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/ReplicationNodeRecoverer.java Fri Dec 20 17:09:21 2013
@@ -0,0 +1,47 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.server.configuration.startup;
+
+import org.apache.qpid.server.configuration.ConfigurationEntry;
+import org.apache.qpid.server.configuration.ConfiguredObjectRecoverer;
+import org.apache.qpid.server.configuration.RecovererProvider;
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.ReplicationNode;
+import org.apache.qpid.server.model.VirtualHost;
+import org.apache.qpid.server.plugin.ReplicationNodeFactory;
+
+public class ReplicationNodeRecoverer implements ConfiguredObjectRecoverer<ReplicationNode>
+{
+
+    @Override
+    public ReplicationNode create(RecovererProvider recovererProvider, ConfigurationEntry entry, ConfiguredObject... parents)
+    {
+        VirtualHost virtualHost = RecovererHelper.verifyOnlyParentIsOfType(VirtualHost.class, parents);
+        String type = virtualHost.getType();
+        ReplicationNodeFactory replicationNodeFactory = ReplicationNodeFactory.FACTORIES.get(type);
+        if (replicationNodeFactory == null)
+        {
+            throw new IllegalStateException("Cannot find ReplicationNodeFactory for type '" + type + "'");
+        }
+        return replicationNodeFactory.createInstance(entry.getId() , entry.getAttributes(), virtualHost);
+    }
+
+}

Modified: qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/VirtualHostRecoverer.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/VirtualHostRecoverer.java?rev=1552739&r1=1552738&r2=1552739&view=diff
==============================================================================
--- qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/VirtualHostRecoverer.java (original)
+++ qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/VirtualHostRecoverer.java Fri Dec 20 17:09:21 2013
@@ -21,21 +21,17 @@
 package org.apache.qpid.server.configuration.startup;
 
 
-import java.util.HashMap;
+import java.util.Collection;
 import java.util.Map;
-import java.util.UUID;
 
 import org.apache.qpid.server.configuration.ConfigurationEntry;
 import org.apache.qpid.server.configuration.ConfiguredObjectRecoverer;
 import org.apache.qpid.server.configuration.RecovererProvider;
 import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.model.ConfiguredObject;
-import org.apache.qpid.server.model.ReplicationNode;
 import org.apache.qpid.server.model.VirtualHost;
 import org.apache.qpid.server.model.adapter.VirtualHostAdapter;
-import org.apache.qpid.server.plugin.ReplicationNodeFactory;
 import org.apache.qpid.server.stats.StatisticsGatherer;
-import org.apache.qpid.server.util.MapValueConverter;
 
 public class VirtualHostRecoverer implements ConfiguredObjectRecoverer<VirtualHost>
 {
@@ -55,48 +51,15 @@ public class VirtualHostRecoverer implem
         Map<String, Object> attributes = entry.getAttributes();
         VirtualHostAdapter virtualHostAdapter = new VirtualHostAdapter(entry.getId(), attributes, broker, _brokerStatisticsGatherer, broker.getTaskExecutor());
 
-        // TODO temporary code to bridge from VH attributes to LocalReplicationNode - will be move into a new ReplicationNodeRecoverer
-        if (attributes.containsKey(VirtualHost.TYPE))
+        Map<String, Collection<ConfigurationEntry>> childEntries = entry.getChildren();
+        for (Map.Entry<String, Collection<ConfigurationEntry>> childrenEntry : childEntries.entrySet())
         {
-            String type = MapValueConverter.getStringAttribute(VirtualHost.TYPE, attributes);
-            ReplicationNodeFactory replicationNodeFactory = ReplicationNodeFactory.FACTORIES.get(type);
-            
-            UUID uuid = null;
-            Map<String, Object> replicationNodeAttributes = new HashMap<String, Object>();
-            replicationNodeAttributes.put(ReplicationNode.NAME, attributes.get("haNodeName"));
-            replicationNodeAttributes.put(ReplicationNode.GROUP_NAME, attributes.get("haGroupName"));
-            replicationNodeAttributes.put(ReplicationNode.HOST_PORT, attributes.get("haNodeAddress"));
-            replicationNodeAttributes.put(ReplicationNode.HELPER_HOST_PORT, attributes.get("haHelperAddress"));
-
-            if (attributes.get("haDurability") != null)
-            {
-                replicationNodeAttributes.put(ReplicationNode.DURABILITY, attributes.get("haDurability"));
-            }
-
-            if (attributes.get("haDesignatedPrimary") != null)
-            {
-                replicationNodeAttributes.put(ReplicationNode.DESIGNATED_PRIMARY, attributes.get("haDesignatedPrimary"));
-            }
-
-            if (attributes.get("haCoalescingSync") != null)
-            {
-                replicationNodeAttributes.put(ReplicationNode.COALESCING_SYNC, attributes.get("haCoalescingSync"));
-            }
-
-            if (attributes.get("bdbEnvironmentConfig") != null)
-            {
-                replicationNodeAttributes.put(ReplicationNode.PARAMETERS, attributes.get("bdbEnvironmentConfig"));
-            }
-
-            if (attributes.get("haReplicationConfig") != null)
-            {
-                replicationNodeAttributes.put(ReplicationNode.REPLICATION_PARAMETERS, attributes.get("haReplicationConfig"));
-            }
-
-            if (replicationNodeFactory != null)
+            String childType = childrenEntry.getKey();
+            ConfiguredObjectRecoverer<? extends ConfiguredObject> recoverer = recovererProvider.getRecoverer(childType);
+            for (ConfigurationEntry childEntry : childrenEntry.getValue())
             {
-                ReplicationNode node = replicationNodeFactory.createInstance(uuid , attributes, virtualHostAdapter);
-                virtualHostAdapter.onReplicationNodeRecovered(node);
+                ConfiguredObject configuredObject = recoverer.create(recovererProvider, childEntry, virtualHostAdapter);
+                virtualHostAdapter.recoverChild(configuredObject);
             }
         }
         return virtualHostAdapter;

Modified: qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java?rev=1552739&r1=1552738&r2=1552739&view=diff
==============================================================================
--- qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java (original)
+++ qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java Fri Dec 20 17:09:21 2013
@@ -40,6 +40,8 @@ import java.util.TreeMap;
 import java.util.TreeSet;
 import java.util.UUID;
 
+import javax.management.ObjectName;
+
 import org.apache.qpid.server.configuration.ConfigurationEntry;
 import org.apache.qpid.server.configuration.ConfigurationEntryStore;
 import org.apache.qpid.server.configuration.IllegalConfigurationException;
@@ -57,6 +59,7 @@ import org.codehaus.jackson.map.JsonMapp
 import org.codehaus.jackson.map.ObjectMapper;
 import org.codehaus.jackson.map.SerializationConfig;
 import org.codehaus.jackson.node.ArrayNode;
+import org.codehaus.jackson.node.ObjectNode;
 
 public class MemoryConfigurationEntryStore implements ConfigurationEntryStore
 {
@@ -547,7 +550,7 @@ public class MemoryConfigurationEntrySto
             }
             else if (fieldNode.isObject())
             {
-                // ignore, in-line objects are not supported yet
+                attributes.put(fieldName, toObject(fieldNode) );
             }
             else
             {

Modified: qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Model.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Model.java?rev=1552739&r1=1552738&r2=1552739&view=diff
==============================================================================
--- qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Model.java (original)
+++ qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Model.java Fri Dec 20 17:09:21 2013
@@ -37,7 +37,7 @@ public class Model
      *
      */
     public static final int MODEL_MAJOR_VERSION = 1;
-    public static final int MODEL_MINOR_VERSION = 2;
+    public static final int MODEL_MINOR_VERSION = 3;
     public static final String MODEL_VERSION = MODEL_MAJOR_VERSION + "." + MODEL_MINOR_VERSION;
 
     private static final Model MODEL_INSTANCE = new Model();
@@ -68,6 +68,7 @@ public class Model
         addRelationship(VirtualHost.class, Queue.class);
         addRelationship(VirtualHost.class, Connection.class);
         addRelationship(VirtualHost.class, VirtualHostAlias.class);
+        addRelationship(VirtualHost.class, ReplicationNode.class);
 
         addRelationship(AuthenticationProvider.class, User.class);
         addRelationship(AuthenticationProvider.class, PreferencesProvider.class);

Modified: qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java?rev=1552739&r1=1552738&r2=1552739&view=diff
==============================================================================
--- qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java (original)
+++ qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java Fri Dec 20 17:09:21 2013
@@ -1290,7 +1290,21 @@ public final class VirtualHostAdapter ex
     @Override
     public void onReplicationNodeRecovered(ReplicationNode node)
     {
+        //TODO: should we be adding ConfigurationChangeListener to node?
         _replicationNodes.add(node);
     }
 
+    public void recoverChild(ConfiguredObject configuredObject)
+    {
+        if (configuredObject instanceof ReplicationNode)
+        {
+            ReplicationNode node = (ReplicationNode)configuredObject;
+            onReplicationNodeRecovered(node);
+        }
+        else
+        {
+            throw new IllegalArgumentException("Cannot recover child of type :" + configuredObject.getClass().getName());
+        }
+    }
+
 }

Modified: qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/StateManager.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/StateManager.java?rev=1552739&r1=1552738&r2=1552739&view=diff
==============================================================================
--- qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/StateManager.java (original)
+++ qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/StateManager.java Fri Dec 20 17:09:21 2013
@@ -79,6 +79,7 @@ public class StateManager
     public static final Transition ACTIVATE_COMPLETE = new Transition(State.ACTIVATING, State.ACTIVE, Event.AFTER_ACTIVATE);
 
     public static final Transition CLOSE_INITIALISED = new Transition(State.INITIALISED, State.CLOSING, Event.BEFORE_CLOSE);;
+    public static final Transition CLOSE_ACTIVATING = new Transition(State.ACTIVATING, State.CLOSING, Event.BEFORE_CLOSE);
     public static final Transition CLOSE_ACTIVE = new Transition(State.ACTIVE, State.CLOSING, Event.BEFORE_CLOSE);
     public static final Transition CLOSE_QUIESCED = new Transition(State.QUIESCED, State.CLOSING, Event.BEFORE_CLOSE);
     public static final Transition CLOSE_COMPLETE = new Transition(State.CLOSING, State.CLOSED, Event.AFTER_CLOSE);

Modified: qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHost.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHost.java?rev=1552739&r1=1552738&r2=1552739&view=diff
==============================================================================
--- qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHost.java (original)
+++ qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHost.java Fri Dec 20 17:09:21 2013
@@ -48,6 +48,7 @@ public class StandardVirtualHost extends
 
     private MessageStore initialiseMessageStore(VirtualHostConfiguration hostConfig, VirtualHost virtualHost) throws Exception
     {
+        //TODO: we should not be using hostConfig for store creation
         final Object storeTypeAttr = virtualHost.getAttribute(VirtualHost.STORE_TYPE);
         String storeType = storeTypeAttr == null ? null : String.valueOf(storeTypeAttr);
         MessageStore  messageStore = null;

Modified: qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHostFactory.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHostFactory.java?rev=1552739&r1=1552738&r2=1552739&view=diff
==============================================================================
--- qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHostFactory.java (original)
+++ qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHostFactory.java Fri Dec 20 17:09:21 2013
@@ -90,6 +90,7 @@ public class StandardVirtualHostFactory 
     @Override
     public Map<String,Object> createVirtualHostConfiguration(VirtualHostAdapter virtualHostAdapter)
     {
+        //TODO: DO we really need it?
         Map<String,Object> convertedMap = new LinkedHashMap<String, Object>();
         convertedMap.put("store.type", virtualHostAdapter.getAttribute(org.apache.qpid.server.model.VirtualHost.STORE_TYPE));
         convertedMap.put("store.environment-path", virtualHostAdapter.getAttribute(org.apache.qpid.server.model.VirtualHost.STORE_PATH));
@@ -102,6 +103,8 @@ public class StandardVirtualHostFactory 
     {
         Map<String,Object> convertedMap = new LinkedHashMap<String, Object>();
         Configuration storeConfiguration = configuration.subset("store");
+
+        //TODO: If store class is specified, convert class into type
         convertedMap.put(org.apache.qpid.server.model.VirtualHost.STORE_TYPE, storeConfiguration.getString("type"));
         convertedMap.put(org.apache.qpid.server.model.VirtualHost.STORE_PATH, storeConfiguration.getString(MessageStoreConstants.ENVIRONMENT_PATH_PROPERTY));
 

Modified: qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ConfigurationEntryStoreTestCase.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ConfigurationEntryStoreTestCase.java?rev=1552739&r1=1552738&r2=1552739&view=diff
==============================================================================
--- qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ConfigurationEntryStoreTestCase.java (original)
+++ qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ConfigurationEntryStoreTestCase.java Fri Dec 20 17:09:21 2013
@@ -22,6 +22,7 @@ package org.apache.qpid.server.configura
 
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
@@ -34,6 +35,7 @@ import org.apache.qpid.server.model.Grou
 import org.apache.qpid.server.model.KeyStore;
 import org.apache.qpid.server.model.Port;
 import org.apache.qpid.server.model.PreferencesProvider;
+import org.apache.qpid.server.model.ReplicationNode;
 import org.apache.qpid.server.model.Transport;
 import org.apache.qpid.server.model.TrustStore;
 import org.apache.qpid.server.model.VirtualHost;
@@ -97,6 +99,8 @@ public abstract class ConfigurationEntry
 
     protected abstract void addConfiguration(UUID id, String type, Map<String, Object> attributes, UUID parentId);
 
+    protected abstract ConfigurationEntryStore reOpenStore();
+
     protected final void addConfiguration(UUID id, String type, Map<String, Object> attributes)
     {
         addConfiguration(id, type, attributes, _brokerId);
@@ -434,4 +438,53 @@ public abstract class ConfigurationEntry
         _store.save(newAuthenticationProviderConfigEntry, preferencesProviderEntry);
     }
 
+    public void testAddHaVirtualHostWithReplicationNode()
+    {
+        String nodeName = "nodeName";
+        String groupName = "groupName";
+        String hostPort = "localhost:9999";
+        String helperHostPort = "localhost:8888";
+        Map<String, String> parameters = new HashMap<String, String>();
+        parameters.put("param1", "value1");
+        parameters.put("param2", "value2");
+        UUID nodeId = UUID.randomUUID();
+
+        Map<String, Object> nodeAttributes = new HashMap<String, Object>();
+        nodeAttributes.put(ReplicationNode.NAME, nodeName);
+        nodeAttributes.put(ReplicationNode.GROUP_NAME, groupName);
+        nodeAttributes.put(ReplicationNode.HOST_PORT, hostPort);
+        nodeAttributes.put(ReplicationNode.HELPER_HOST_PORT, helperHostPort);
+        nodeAttributes.put(ReplicationNode.PARAMETERS, parameters);
+
+        ConfigurationEntry nodeEntry  = new ConfigurationEntry(nodeId, ReplicationNode.class.getSimpleName(), nodeAttributes,
+                Collections.<UUID>emptySet(), _store);
+        Map<String, Object> virtualHostAttributes = new HashMap<String, Object>();
+        virtualHostAttributes.put(VirtualHost.NAME, "ha");
+        virtualHostAttributes.put(VirtualHost.TYPE, "DUMMY-HA");
+        UUID virtualHostId = UUID.randomUUID();
+        Set<UUID> childrenIds = Collections.singleton(nodeId);
+        ConfigurationEntry hostEntry = new ConfigurationEntry(virtualHostId, VirtualHost.class.getSimpleName(), virtualHostAttributes,
+                childrenIds, _store);
+
+        ConfigurationEntry brokerEntry = _store.getRootEntry();
+        Set<UUID> brokerChildren = new HashSet<UUID>(brokerEntry.getChildrenIds());
+        brokerChildren.add(virtualHostId);
+        ConfigurationEntry newRootEntry = new ConfigurationEntry(brokerEntry.getId(), brokerEntry.getType(), brokerEntry.getAttributes(), brokerChildren, _store);
+        _store.save(hostEntry, nodeEntry, newRootEntry);
+
+        _store = reOpenStore();
+
+        ConfigurationEntry loadedHostEntry = _store.getEntry(virtualHostId);
+
+        assertEquals("Unexpected type", VirtualHost.class.getSimpleName(), loadedHostEntry.getType());
+        assertEquals("Unexpected virtual host id",  virtualHostId, loadedHostEntry.getId());
+        assertEquals("Unexpected virtual host attributes", virtualHostAttributes, loadedHostEntry.getAttributes());
+        assertEquals("Unexpected virtual host children", childrenIds, loadedHostEntry.getChildrenIds());
+
+        ConfigurationEntry loadedNodeEntry = _store.getEntry(nodeId);
+        assertEquals("Unexpected type", ReplicationNode.class.getSimpleName(), loadedNodeEntry.getType());
+        assertEquals("Unexpected node id",  nodeId, loadedNodeEntry.getId());
+        assertEquals("Unexpected node attributes", nodeAttributes, loadedNodeEntry.getAttributes());
+        assertTrue("Unexpected node children", loadedNodeEntry.getChildrenIds().isEmpty());
+    }
 }

Modified: qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/JsonConfigurationEntryStoreTest.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/JsonConfigurationEntryStoreTest.java?rev=1552739&r1=1552738&r2=1552739&view=diff
==============================================================================
--- qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/JsonConfigurationEntryStoreTest.java (original)
+++ qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/JsonConfigurationEntryStoreTest.java Fri Dec 20 17:09:21 2013
@@ -71,6 +71,12 @@ public class JsonConfigurationEntryStore
         return store;
     }
 
+    @Override
+    protected ConfigurationEntryStore reOpenStore()
+    {
+        return new JsonConfigurationEntryStore(_storeFile.getAbsolutePath(), null, false, Collections.<String,String>emptyMap());
+    }
+
     private File createStoreFile(UUID brokerId, Map<String, Object> brokerAttributes) throws IOException,
             JsonGenerationException, JsonMappingException
     {
@@ -265,4 +271,5 @@ public class JsonConfigurationEntryStore
         assertEquals("Unexpected preferences provider type", FileSystemPreferencesProvider.PROVIDER_TYPE,
                 attributes.get(PreferencesProvider.TYPE));
     }
+
 }

Modified: qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStoreTest.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStoreTest.java?rev=1552739&r1=1552738&r2=1552739&view=diff
==============================================================================
--- qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStoreTest.java (original)
+++ qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStoreTest.java Fri Dec 20 17:09:21 2013
@@ -60,6 +60,12 @@ public class MemoryConfigurationEntrySto
         store.save(newParentEntry, new ConfigurationEntry(id, type, attributes, Collections.<UUID> emptySet(), store));
     }
 
+    @Override
+    protected ConfigurationEntryStore reOpenStore()
+    {
+        return getStore();
+    }
+
     public void testCreateWithNullLocationAndNullInitialStore()
     {
         try
@@ -130,4 +136,5 @@ public class MemoryConfigurationEntrySto
     {
         assertEquals("Unexpected type", "memory", getStore().getType());
     }
+
 }

Modified: qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/StateManagerTest.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/StateManagerTest.java?rev=1552739&r1=1552738&r2=1552739&view=diff
==============================================================================
--- qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/StateManagerTest.java (original)
+++ qpid/branches/java-broker-bdb-ha/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/StateManagerTest.java Fri Dec 20 17:09:21 2013
@@ -141,7 +141,7 @@ public class StateManagerTest extends Te
 
         performInvalidTransitions(StateManager.INITIALISE, State.INITIALISED);
         performInvalidTransitions(StateManager.INITALISE_COMPLETE, State.ACTIVATING, State.CLOSING);
-        performInvalidTransitions(StateManager.ACTIVATE, State.ACTIVE);
+        performInvalidTransitions(StateManager.ACTIVATE, State.ACTIVE, State.CLOSING);
         performInvalidTransitions(StateManager.ACTIVATE_COMPLETE, State.QUIESCING, State.CLOSING, State.INITIALISED);
         performInvalidTransitions(StateManager.QUIESCE, State.QUIESCED);
         performInvalidTransitions(StateManager.QUIESCE_COMPLETE, State.ACTIVATING, State.CLOSING);



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