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 2014/04/21 16:28:32 UTC
svn commit: r1588886 [2/6] - in /qpid/trunk/qpid/java:
bdbstore/jmx/src/main/java/org/apache/qpid/server/store/berkeleydb/jmx/
bdbstore/jmx/src/test/java/org/apache/qpid/server/store/berkeleydb/jmx/
bdbstore/src/main/java/org/apache/qpid/server/store/b...
Added: qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java?rev=1588886&view=auto
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java (added)
+++ qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java Mon Apr 21 14:28:29 2014
@@ -0,0 +1,193 @@
+/*
+ *
+ * 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.store.berkeleydb;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.io.File;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.qpid.server.configuration.updater.TaskExecutor;
+import org.apache.qpid.server.model.Broker;
+import org.apache.qpid.server.model.ConfigurationChangeListener;
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.State;
+import org.apache.qpid.server.model.VirtualHost;
+import org.apache.qpid.server.model.VirtualHostNode;
+import org.apache.qpid.server.plugin.ConfiguredObjectTypeFactory;
+import org.apache.qpid.server.store.DurableConfigurationStore;
+import org.apache.qpid.server.util.BrokerTestHelper;
+import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHAVirtualHostNode;
+import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHAVirtualHostNodeFactory;
+import org.apache.qpid.test.utils.QpidTestCase;
+import org.apache.qpid.util.FileUtils;
+
+import com.sleepycat.je.rep.ReplicatedEnvironment;
+import com.sleepycat.je.rep.ReplicationConfig;
+
+public class BDBHAVirtualHostNodeTest extends QpidTestCase
+{
+
+ private Broker<?> _broker;
+ private File _bdbStorePath;
+ private VirtualHostNode<?> _virtualHostNode;
+ private TaskExecutor _taskExecutor;
+
+ @Override
+ protected void setUp() throws Exception
+ {
+ super.setUp();
+
+ _broker = BrokerTestHelper.createBrokerMock();
+
+ _taskExecutor = new TaskExecutor();
+ _taskExecutor.start();
+ when(_broker.getTaskExecutor()).thenReturn(_taskExecutor);
+
+ _bdbStorePath = new File(TMP_FOLDER, getTestName() + "." + System.currentTimeMillis());
+ _bdbStorePath.deleteOnExit();
+ }
+
+ @Override
+ protected void tearDown() throws Exception
+ {
+ try
+ {
+ if (_virtualHostNode != null)
+ {
+ _virtualHostNode.setDesiredState(_virtualHostNode.getState(), State.STOPPED);
+ }
+ }
+ finally
+ {
+ if (_taskExecutor != null)
+ {
+ _taskExecutor.stopImmediately();
+ }
+ if (_bdbStorePath != null)
+ {
+ FileUtils.delete(_bdbStorePath, true);
+ }
+ super.tearDown();
+ }
+ }
+
+ public void testCreateAndActivateVirtualHostNode() throws Exception
+ {
+ String repStreamTimeout = "2 h";
+ String nodeName = "node";
+ String groupName = "group";
+ String nodeHostPort = "localhost:" + findFreePort();
+ String helperHostPort = nodeHostPort;
+ String durability = "NO_SYNC,SYNC,NONE";
+ UUID id = UUID.randomUUID();
+
+ Map<String, Object> attributes = new HashMap<String, Object>();
+ attributes.put(BDBHAVirtualHostNode.TYPE, "BDB_HA");
+ attributes.put(BDBHAVirtualHostNode.ID, id);
+ attributes.put(BDBHAVirtualHostNode.NAME, nodeName);
+ attributes.put(BDBHAVirtualHostNode.GROUP_NAME, groupName);
+ attributes.put(BDBHAVirtualHostNode.ADDRESS, nodeHostPort);
+ attributes.put(BDBHAVirtualHostNode.HELPER_ADDRESS, helperHostPort);
+ attributes.put(BDBHAVirtualHostNode.DURABILITY, durability);
+ attributes.put(BDBHAVirtualHostNode.STORE_PATH, _bdbStorePath);
+ attributes.put(BDBHAVirtualHostNode.REPLICATED_ENVIRONMENT_CONFIGURATION,
+ Collections.singletonMap(ReplicationConfig.REP_STREAM_TIMEOUT, repStreamTimeout));
+
+ ConfiguredObjectTypeFactory<?> factory = new BDBHAVirtualHostNodeFactory();
+
+ BDBHAVirtualHostNode<?> node = (BDBHAVirtualHostNode<?>) factory.create(null, attributes, _broker);
+
+ final CountDownLatch virtualHostAddedLatch = new CountDownLatch(1);
+ final CountDownLatch virtualHostStateChangeLatch = new CountDownLatch(1);
+ node.addChangeListener(new ConfigurationChangeListener()
+ {
+ @Override
+ public void stateChanged(ConfiguredObject object, State oldState, State newState)
+ {
+ if (object instanceof VirtualHost)
+ {
+ virtualHostStateChangeLatch.countDown();
+ }
+ }
+
+ @Override
+ public void childRemoved(ConfiguredObject object, ConfiguredObject child)
+ {
+ }
+
+ @Override
+ public void childAdded(ConfiguredObject object, ConfiguredObject child)
+ {
+ child.addChangeListener(this);
+ virtualHostAddedLatch.countDown();
+ }
+
+ @Override
+ public void attributeSet(ConfiguredObject object, String attributeName, Object oldAttributeValue, Object newAttributeValue)
+ {
+ }
+ });
+ assertEquals(State.ACTIVE, node.setDesiredState(node.getState(), State.ACTIVE));
+
+ DurableConfigurationStore store = node.getConfigurationStore();
+ assertNotNull(store);
+
+ BDBMessageStore bdbMessageStore = (BDBMessageStore) store;
+ ReplicatedEnvironment environment = (ReplicatedEnvironment) bdbMessageStore.getEnvironmentFacade().getEnvironment();
+ ReplicationConfig replicationConfig = environment.getRepConfig();
+
+ assertEquals(nodeName, environment.getNodeName());
+ assertEquals(groupName, environment.getGroup().getName());
+ assertEquals(nodeHostPort, replicationConfig.getNodeHostPort());
+ assertEquals(helperHostPort, replicationConfig.getHelperHosts());
+ assertEquals(durability, environment.getConfig().getDurability().toString());
+ assertEquals("Unexpected JE replication stream timeout", repStreamTimeout, replicationConfig.getConfigParam(ReplicationConfig.REP_STREAM_TIMEOUT));
+
+ assertTrue("Virtual host child has not been added", virtualHostAddedLatch.await(30, TimeUnit.SECONDS));
+ assertTrue("Virtual host child has not had a state change", virtualHostStateChangeLatch.await(30, TimeUnit.SECONDS));
+ VirtualHost<?, ?, ?> virtualHost = node.getVirtualHost();
+ assertNotNull("Virtual host child was not added", virtualHost);
+ assertEquals("Unexpected virtual host name", groupName, virtualHost.getName());
+ assertEquals("Unexpected virtual host store", store, virtualHost.getMessageStore());
+ assertEquals("Unexpected virtual host state", State.ACTIVE, virtualHost.getState());
+
+ State currentState = node.setDesiredState(State.ACTIVE, State.STOPPED);
+ assertEquals("Unexpected state returned after stop", State.STOPPED, currentState);
+ assertEquals("Unexpected state", State.STOPPED, node.getState());
+
+ assertNull("Virtual host is not destroyed", node.getVirtualHost());
+
+ currentState = node.setDesiredState(State.STOPPED, State.DELETED);
+ assertEquals("Unexpected state returned after delete", State.DELETED, currentState);
+ assertEquals("Unexpected state", State.DELETED, node.getState());
+ assertFalse("Store still exists", _bdbStorePath.exists());
+ }
+
+}
+
+
Modified: qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/upgrade/UpgradeFrom7To8Test.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/upgrade/UpgradeFrom7To8Test.java?rev=1588886&r1=1588885&r2=1588886&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/upgrade/UpgradeFrom7To8Test.java (original)
+++ qpid/trunk/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/upgrade/UpgradeFrom7To8Test.java Mon Apr 21 14:28:29 2014
@@ -160,6 +160,7 @@ public class UpgradeFrom7To8Test extends
{
Map<String, Object> expectedVirtualHostEntry = new HashMap<String, Object>();
expectedVirtualHostEntry.put("modelVersion", modelVersion);
+ expectedVirtualHostEntry.put(VirtualHost.NAME, getVirtualHost().getName());
UUID expectedUUID = UUIDGenerator.generateVhostUUID(getVirtualHost().getName());
return Collections.singletonMap(expectedUUID, expectedVirtualHostEntry);
Modified: qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBBackupTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBBackupTest.java?rev=1588886&r1=1588885&r2=1588886&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBBackupTest.java (original)
+++ qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBBackupTest.java Mon Apr 21 14:28:29 2014
@@ -31,9 +31,8 @@ import javax.jms.MessageConsumer;
import javax.jms.Session;
import org.apache.log4j.Logger;
-
-import org.apache.qpid.server.model.VirtualHost;
-import org.apache.qpid.server.store.MessageStore;
+import org.apache.qpid.server.model.VirtualHostNode;
+import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBVirtualHostNode;
import org.apache.qpid.test.utils.Piper;
import org.apache.qpid.test.utils.QpidBrokerTestCase;
import org.apache.qpid.util.FileUtils;
@@ -63,9 +62,9 @@ public class BDBBackupTest extends QpidB
super.setUp();
_backupToDir = new File(SYSTEM_TMP_DIR + File.separator + getTestName());
_backupToDir.mkdirs();
- Map<String, Object> virtualHostAttributes = getBrokerConfiguration().getObjectAttributes(VirtualHost.class,TEST_VHOST);
- Map<String, Object> messageStoreSettings = (Map<String, Object>) virtualHostAttributes.get(VirtualHost.MESSAGE_STORE_SETTINGS);
- _backupFromDir = new File(Strings.expand((String) messageStoreSettings.get(MessageStore.STORE_PATH)));
+
+ Map<String, Object> virtualHostNodeAttributes = getBrokerConfiguration().getObjectAttributes(VirtualHostNode.class, TEST_VHOST);
+ _backupFromDir = new File(Strings.expand((String) virtualHostNodeAttributes.get(BDBVirtualHostNode.STORE_PATH)));
boolean fromDirExistsAndIsDir = _backupFromDir.isDirectory();
assertTrue("backupFromDir " + _backupFromDir + " should already exist", fromDirExistsAndIsDir);
}
Modified: qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBUpgradeTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBUpgradeTest.java?rev=1588886&r1=1588885&r2=1588886&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBUpgradeTest.java (original)
+++ qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBUpgradeTest.java Mon Apr 21 14:28:29 2014
@@ -42,18 +42,17 @@ import javax.jms.TopicSubscriber;
import javax.management.openmbean.CompositeData;
import javax.management.openmbean.TabularDataSupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import org.apache.qpid.management.common.mbeans.ManagedExchange;
import org.apache.qpid.management.common.mbeans.ManagedQueue;
-import org.apache.qpid.server.model.VirtualHost;
-import org.apache.qpid.server.store.MessageStore;
+import org.apache.qpid.server.model.VirtualHostNode;
+import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBVirtualHostNode;
import org.apache.qpid.test.utils.JMXTestUtils;
import org.apache.qpid.test.utils.QpidBrokerTestCase;
import org.apache.qpid.test.utils.TestBrokerConfiguration;
import org.apache.qpid.util.FileUtils;
import org.apache.qpid.util.Strings;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Tests upgrading a BDB store on broker startup.
@@ -86,10 +85,8 @@ public class BDBUpgradeTest extends Qpid
public void setUp() throws Exception
{
assertNotNull("QPID_WORK must be set", QPID_WORK_ORIG);
- Map<String, Object> virtualHostAttributes = getBrokerConfiguration().getObjectAttributes(VirtualHost.class,TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST);
- @SuppressWarnings("unchecked")
- Map<String, Object> messageStoreSettings = (Map<String, Object>) virtualHostAttributes.get(VirtualHost.MESSAGE_STORE_SETTINGS);
- _storeLocation = Strings.expand((String)messageStoreSettings.get(MessageStore.STORE_PATH));
+ Map<String, Object> virtualHostNodeAttributes = getBrokerConfiguration().getObjectAttributes(VirtualHostNode.class, TestBrokerConfiguration.ENTRY_NAME_VIRTUAL_HOST);
+ _storeLocation = Strings.expand((String)virtualHostNodeAttributes.get(BDBVirtualHostNode.STORE_PATH));
//Clear the two target directories if they exist.
File directory = new File(_storeLocation);
Modified: qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterBlackboxTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterBlackboxTest.java?rev=1588886&r1=1588885&r2=1588886&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterBlackboxTest.java (original)
+++ qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterBlackboxTest.java Mon Apr 21 14:28:29 2014
@@ -146,7 +146,6 @@ public class HAClusterBlackboxTest exten
assertEquals("Failover occurred unexpectedly", 1L, _failoverLatch.getCount());
}
-
@Override
public void failoverComplete()
{
Modified: qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterTwoNodeTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterTwoNodeTest.java?rev=1588886&r1=1588885&r2=1588886&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterTwoNodeTest.java (original)
+++ qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HAClusterTwoNodeTest.java Mon Apr 21 14:28:29 2014
@@ -169,8 +169,8 @@ public class HAClusterTwoNodeTest extend
public void testSecondaryDesignatedAsPrimaryAfterOrginalPrimaryStopped() throws Exception
{
startCluster(true);
- _clusterCreator.stopNode(_clusterCreator.getBrokerPortNumberOfPrimary());
final ManagedBDBHAMessageStore storeBean = getStoreBeanForNodeAtBrokerPort(_clusterCreator.getBrokerPortNumberOfSecondaryNode());
+ _clusterCreator.stopNode(_clusterCreator.getBrokerPortNumberOfPrimary());
assertFalse("Expected node to NOT be set as designated primary", storeBean.getDesignatedPrimary());
storeBean.setDesignatedPrimary(true);
Modified: qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HATestClusterCreator.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HATestClusterCreator.java?rev=1588886&r1=1588885&r2=1588886&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HATestClusterCreator.java (original)
+++ qpid/trunk/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HATestClusterCreator.java Mon Apr 21 14:28:29 2014
@@ -38,19 +38,18 @@ import java.util.concurrent.TimeUnit;
import javax.jms.Connection;
-import com.sleepycat.je.rep.ReplicationConfig;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
-
import org.apache.qpid.client.AMQConnection;
import org.apache.qpid.client.AMQConnectionURL;
-import org.apache.qpid.server.model.VirtualHost;
-import org.apache.qpid.server.store.MessageStore;
-import org.apache.qpid.server.store.berkeleydb.replication.ReplicatedEnvironmentFacadeFactory;
+import org.apache.qpid.server.model.VirtualHostNode;
+import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHAVirtualHostNode;
import org.apache.qpid.test.utils.QpidBrokerTestCase;
import org.apache.qpid.test.utils.TestBrokerConfiguration;
import org.apache.qpid.url.URLSyntaxException;
+import com.sleepycat.je.rep.ReplicationConfig;
+
public class HATestClusterCreator
{
protected static final Logger LOGGER = Logger.getLogger(HATestClusterCreator.class);
@@ -82,7 +81,7 @@ public class HATestClusterCreator
{
_testcase = testcase;
_virtualHostName = virtualHostName;
- _groupName = "group" + _testcase.getName();
+ _groupName = virtualHostName;
_ipAddressOfBroker = getIpAddressOfBrokerHost();
_numberOfNodes = numberOfNodes;
_bdbHelperPort = 0;
@@ -104,21 +103,23 @@ public class HATestClusterCreator
}
String nodeName = getNodeNameForNodeAt(bdbPort);
- Map<String, Object> messageStoreSettings = new HashMap<String, Object>();
- messageStoreSettings.put(MessageStore.STORE_PATH, System.getProperty("QPID_WORK") + File.separator + brokerPort);
- messageStoreSettings.put(ReplicatedEnvironmentFacadeFactory.GROUP_NAME, _groupName);
- messageStoreSettings.put(ReplicatedEnvironmentFacadeFactory.NODE_NAME, nodeName);
- messageStoreSettings.put(ReplicatedEnvironmentFacadeFactory.NODE_ADDRESS, getNodeHostPortForNodeAt(bdbPort));
- messageStoreSettings.put(ReplicatedEnvironmentFacadeFactory.HELPER_ADDRESS, getHelperHostPort());
+
+ Map<String, Object> virtualHostNodeAttributes = new HashMap<String, Object>();
+ virtualHostNodeAttributes.put(BDBHAVirtualHostNode.STORE_PATH, System.getProperty("QPID_WORK") + File.separator + brokerPort);
+ virtualHostNodeAttributes.put(BDBHAVirtualHostNode.GROUP_NAME, _groupName);
+ virtualHostNodeAttributes.put(BDBHAVirtualHostNode.NAME, nodeName);
+ virtualHostNodeAttributes.put(BDBHAVirtualHostNode.ADDRESS, getNodeHostPortForNodeAt(bdbPort));
+ virtualHostNodeAttributes.put(BDBHAVirtualHostNode.HELPER_ADDRESS, getHelperHostPort());
+ virtualHostNodeAttributes.put(BDBHAVirtualHostNode.TYPE, "BDB_HA");
+
Map<String, String> repSettings = new HashMap<String, String>();
repSettings.put(ReplicationConfig.INSUFFICIENT_REPLICAS_TIMEOUT, "2 s");
repSettings.put(ReplicationConfig.ELECTIONS_PRIMARY_RETRIES, "0");
- messageStoreSettings.put(ReplicatedEnvironmentFacadeFactory.REPLICATION_CONFIG, repSettings );
+ virtualHostNodeAttributes.put(BDBHAVirtualHostNode.REPLICATED_ENVIRONMENT_CONFIGURATION, repSettings);
TestBrokerConfiguration brokerConfiguration = _testcase.getBrokerConfiguration(brokerPort);
brokerConfiguration.addJmxManagementConfiguration();
- brokerConfiguration.setObjectAttribute(VirtualHost.class, _virtualHostName, VirtualHost.TYPE, BDBHAVirtualHost.TYPE);
- brokerConfiguration.setObjectAttribute(VirtualHost.class, _virtualHostName, VirtualHost.MESSAGE_STORE_SETTINGS, messageStoreSettings);
+ brokerConfiguration.setObjectAttributes(VirtualHostNode.class, _virtualHostName, virtualHostNodeAttributes);
brokerPort = _testcase.getNextAvailable(bdbPort + 1);
}
@@ -132,10 +133,8 @@ public class HATestClusterCreator
throw new IllegalArgumentException("Only two nodes groups have the concept of primary");
}
TestBrokerConfiguration config = _testcase.getBrokerConfiguration(_primaryBrokerPort);
- @SuppressWarnings("unchecked")
- Map<String, Object> storeSetting = (Map<String, Object>) config.getObjectAttributes(VirtualHost.class, _virtualHostName).get(VirtualHost.MESSAGE_STORE_SETTINGS);
- storeSetting.put(ReplicatedEnvironmentFacadeFactory.DESIGNATED_PRIMARY, designatedPrimary);
- config.setObjectAttribute(VirtualHost.class, _virtualHostName, VirtualHost.MESSAGE_STORE_SETTINGS, storeSetting);
+ String nodeName = getNodeNameForNodeAt(_brokerPortToBdbPortMap.get(_primaryBrokerPort));
+ config.setObjectAttribute(VirtualHostNode.class, nodeName, BDBHAVirtualHostNode.DESIGNATED_PRIMARY, designatedPrimary);
config.setSaved(false);
}
@@ -369,15 +368,15 @@ public class HATestClusterCreator
public void modifyClusterNodeBdbAddress(int brokerPortNumberToBeMoved, int newBdbPort)
{
TestBrokerConfiguration config = _testcase.getBrokerConfiguration(brokerPortNumberToBeMoved);
+ String nodeName = getNodeNameForNodeAt(_brokerPortToBdbPortMap.get(brokerPortNumberToBeMoved));
+
+ Map<String, Object> objectAttributes = config.getObjectAttributes(VirtualHostNode.class, nodeName);
- @SuppressWarnings("unchecked")
- Map<String, Object> storeSetting = (Map<String, Object>) config.getObjectAttributes(VirtualHost.class, _virtualHostName).get(VirtualHost.MESSAGE_STORE_SETTINGS);
- String oldBdbHostPort = (String) storeSetting.get(ReplicatedEnvironmentFacadeFactory.NODE_ADDRESS);
+ String oldBdbHostPort = (String)objectAttributes.get(BDBHAVirtualHostNode.ADDRESS);
String[] oldHostAndPort = StringUtils.split(oldBdbHostPort, ":");
String oldHost = oldHostAndPort[0];
String newBdbHostPort = oldHost + ":" + newBdbPort;
- storeSetting.put(ReplicatedEnvironmentFacadeFactory.NODE_ADDRESS, newBdbHostPort);
- config.setObjectAttribute(VirtualHost.class, _virtualHostName, VirtualHost.MESSAGE_STORE_SETTINGS, storeSetting);
+ config.setObjectAttribute(VirtualHostNode.class, nodeName, BDBHAVirtualHostNode.ADDRESS, newBdbHostPort);
config.setSaved(false);
}
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/BrokerStoreUpgrader.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/BrokerStoreUpgrader.java?rev=1588886&r1=1588885&r2=1588886&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/BrokerStoreUpgrader.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/BrokerStoreUpgrader.java Mon Apr 21 14:28:29 2014
@@ -1,4 +1,4 @@
-package org.apache.qpid.server.configuration.startup;/*
+/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -18,7 +18,7 @@ package org.apache.qpid.server.configura
* under the License.
*
*/
-
+package org.apache.qpid.server.configuration.startup;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
@@ -30,7 +30,6 @@ import java.util.Set;
import java.util.UUID;
import org.apache.log4j.Logger;
-
import org.apache.qpid.server.configuration.IllegalConfigurationException;
import org.apache.qpid.server.configuration.store.StoreConfigurationChangeListener;
import org.apache.qpid.server.model.Broker;
@@ -41,82 +40,58 @@ import org.apache.qpid.server.store.Conf
import org.apache.qpid.server.store.ConfiguredObjectRecordImpl;
import org.apache.qpid.server.store.DurableConfigurationStore;
import org.apache.qpid.server.store.DurableConfigurationStoreUpgrader;
-import org.apache.qpid.server.store.NonNullUpgrader;
+import org.apache.qpid.server.store.NullUpgrader;
import org.apache.qpid.server.store.handler.ConfiguredObjectRecordHandler;
import org.apache.qpid.server.util.Action;
public class BrokerStoreUpgrader
{
- private static Logger LOGGER = Logger.getLogger(BrokerStoreUpgrader.class);
-
- private static Map<String, UpgraderPhaseFactory> _upgraders = new HashMap<String, UpgraderPhaseFactory>();
private final SystemContext _systemContext;
+ private Map<String, UpgraderPhaseFactory> _upgraders = new HashMap<String, UpgraderPhaseFactory>();
+
+
+ // Note: don't use externally defined constants in upgraders in case they change, the values here MUST stay the same
+ // no matter what changes are made to the code in the future
public BrokerStoreUpgrader(SystemContext systemContext)
{
_systemContext = systemContext;
+
+ register(new Upgrader_1_0_to_1_1());
+ register(new Upgrader_1_1_to_1_2());
+ register(new Upgrader_1_2_to_1_3());
+ register(new Upgrader_1_3_to_1_4());
}
- private static abstract class UpgraderPhaseFactory
+ private void register(UpgraderPhaseFactory factory)
{
- private final String _toVersion;
-
- protected UpgraderPhaseFactory(String fromVersion, String toVersion)
- {
- _upgraders.put(fromVersion, this);
- _toVersion = toVersion;
- }
-
- public String getToVersion()
- {
- return _toVersion;
- }
-
- public abstract BrokerStoreUpgraderPhase newInstance();
+ _upgraders.put(factory.getFromVersion(), factory);
}
- private static abstract class BrokerStoreUpgraderPhase extends NonNullUpgrader
+ private final class Upgrader_1_0_to_1_1 extends UpgraderPhaseFactory
{
- private final String _toVersion;
-
- protected BrokerStoreUpgraderPhase(String toVersion)
+ private Upgrader_1_0_to_1_1()
{
- _toVersion = toVersion;
+ super("1.0", "1.1");
}
-
- protected ConfiguredObjectRecord upgradeBrokerRecord(ConfiguredObjectRecord record)
- {
- Map<String, Object> updatedAttributes = new HashMap<String, Object>(record.getAttributes());
- updatedAttributes.put(Broker.MODEL_VERSION, _toVersion);
- record = createModifiedRecord(record, updatedAttributes);
- getUpdateMap().put(record.getId(), record);
- return record;
- }
- }
-
- // Note: don't use externally defined constants in upgraders in case they change, the values here MUST stay the same
- // no matter what changes are made to the code in the future
-
- private final static UpgraderPhaseFactory UPGRADE_1_0 = new UpgraderPhaseFactory("1.0", "1.1")
- {
@Override
- public BrokerStoreUpgraderPhase newInstance()
+ public StoreUpgraderPhase newInstance()
{
- return new BrokerStoreUpgraderPhase(getToVersion())
+ return new StoreUpgraderPhase(Broker.MODEL_VERSION, getToVersion())
{
@Override
public void configuredObject(ConfiguredObjectRecord record)
{
if (record.getType().equals("Broker"))
{
- record = upgradeBrokerRecord(record);
+ record = upgradeRootRecord(record);
}
else if (record.getType().equals("VirtualHost") && record.getAttributes().containsKey("storeType"))
{
Map<String, Object> updatedAttributes = new HashMap<String, Object>(record.getAttributes());
updatedAttributes.put("type", "STANDARD");
- record = createModifiedRecord(record, updatedAttributes);
+ record = new ConfiguredObjectRecordImpl(record.getId(), record.getType(), updatedAttributes, record.getParents());
getUpdateMap().put(record.getId(), record);
}
@@ -131,24 +106,19 @@ public class BrokerStoreUpgrader
}
};
}
-
-
- };
-
-
- protected static ConfiguredObjectRecordImpl createModifiedRecord(final ConfiguredObjectRecord record,
- final Map<String, Object> updatedAttributes)
- {
-
- return new ConfiguredObjectRecordImpl(record.getId(), record.getType(), updatedAttributes, record.getParents());
}
- private final static UpgraderPhaseFactory UPGRADE_1_1 = new UpgraderPhaseFactory("1.1", "1.2")
+ private static final class Upgrader_1_1_to_1_2 extends UpgraderPhaseFactory
{
+ private Upgrader_1_1_to_1_2()
+ {
+ super("1.1", "1.2");
+ }
+
@Override
- public BrokerStoreUpgraderPhase newInstance()
+ public StoreUpgraderPhase newInstance()
{
- return new BrokerStoreUpgraderPhase(getToVersion())
+ return new StoreUpgraderPhase(Broker.MODEL_VERSION, getToVersion())
{
@Override
@@ -156,7 +126,7 @@ public class BrokerStoreUpgrader
{
if (record.getType().equals("Broker"))
{
- record = upgradeBrokerRecord(record);
+ record = upgradeRootRecord(record);
}
getNextUpgrader().configuredObject(record);
@@ -170,15 +140,19 @@ public class BrokerStoreUpgrader
}
};
}
- };
-
+ }
- private final static UpgraderPhaseFactory UPGRADE_1_2 = new UpgraderPhaseFactory("1.2", "1.3")
+ private static final class Upgrader_1_2_to_1_3 extends UpgraderPhaseFactory
{
+ private Upgrader_1_2_to_1_3()
+ {
+ super("1.2", "1.3");
+ }
+
@Override
- public BrokerStoreUpgraderPhase newInstance()
+ public StoreUpgraderPhase newInstance()
{
- return new BrokerStoreUpgraderPhase(getToVersion())
+ return new StoreUpgraderPhase(Broker.MODEL_VERSION, getToVersion())
{
@Override
@@ -188,7 +162,7 @@ public class BrokerStoreUpgrader
{
Map<String, Object> updatedAttributes = new HashMap<String, Object>(record.getAttributes());
updatedAttributes.put("trustStoreType", updatedAttributes.remove("type"));
- record = createModifiedRecord(record, updatedAttributes);
+ record = new ConfiguredObjectRecordImpl(record.getId(), record.getType(), updatedAttributes, record.getParents());
getUpdateMap().put(record.getId(), record);
}
@@ -196,13 +170,13 @@ public class BrokerStoreUpgrader
{
Map<String, Object> updatedAttributes = new HashMap<String, Object>(record.getAttributes());
updatedAttributes.put("keyStoreType", updatedAttributes.remove("type"));
- record = createModifiedRecord(record, updatedAttributes);
+ record = new ConfiguredObjectRecordImpl(record.getId(), record.getType(), updatedAttributes, record.getParents());
getUpdateMap().put(record.getId(), record);
}
else if (record.getType().equals("Broker"))
{
- record = upgradeBrokerRecord(record);
+ record = upgradeRootRecord(record);
}
getNextUpgrader().configuredObject(record);
@@ -216,17 +190,22 @@ public class BrokerStoreUpgrader
}
};
}
- };
-
+ }
- private final static UpgraderPhaseFactory UPGRADE_1_3 = new UpgraderPhaseFactory("1.3", "1.4")
+ private static final class Upgrader_1_3_to_1_4 extends UpgraderPhaseFactory
{
+ private Upgrader_1_3_to_1_4()
+ {
+ super("1.3", "1.4");
+ }
+
@Override
- public BrokerStoreUpgraderPhase newInstance()
+ public StoreUpgraderPhase newInstance()
{
- return new BrokerStoreUpgraderPhase(getToVersion())
+ return new StoreUpgraderPhase(Broker.MODEL_VERSION, getToVersion())
{
+ @SuppressWarnings("serial")
private Map<String, VirtualHostEntryUpgrader> _vhostUpgraderMap = new HashMap<String, VirtualHostEntryUpgrader>()
{{
put("BDB_HA", new BdbHaVirtualHostUpgrader());
@@ -257,13 +236,13 @@ public class BrokerStoreUpgrader
{
Map<String, Object> updatedAttributes = new HashMap<String, Object>(record.getAttributes());
updatedAttributes.put("type", updatedAttributes.remove("pluginType"));
- record = createModifiedRecord(record, updatedAttributes);
+ record = new ConfiguredObjectRecordImpl(record.getId(), record.getType(), updatedAttributes, record.getParents());
getUpdateMap().put(record.getId(), record);
}
else if (record.getType().equals("Broker"))
{
- record = upgradeBrokerRecord(record);
+ record = upgradeRootRecord(record);
}
getNextUpgrader().configuredObject(record);
@@ -277,9 +256,7 @@ public class BrokerStoreUpgrader
}
};
}
-
-
- };
+ }
private static interface VirtualHostEntryUpgrader
{
@@ -288,6 +265,7 @@ public class BrokerStoreUpgrader
private static class StandardVirtualHostUpgrader implements VirtualHostEntryUpgrader
{
+ @SuppressWarnings("serial")
Map<String, AttributesTransformer> _messageStoreAttributeTransformers = new HashMap<String, AttributesTransformer>()
{{
put("DERBY", new AttributesTransformer().
@@ -317,6 +295,7 @@ public class BrokerStoreUpgrader
addAttributeTransformer("storeType", mutateAttributeValue("JDBC")));
}};
+ @SuppressWarnings("serial")
Map<String, AttributesTransformer> _configurationStoreAttributeTransformers = new HashMap<String, AttributesTransformer>()
{{
put("DERBY", new AttributesTransformer().
@@ -581,12 +560,9 @@ public class BrokerStoreUpgrader
}
}
-
-
-
- public Broker upgrade(DurableConfigurationStore store)
+ public Broker<?> upgrade(DurableConfigurationStore store)
{
- final BrokerStoreRecoveryHandler recoveryHandler = new BrokerStoreRecoveryHandler(_systemContext, store);
+ final BrokerStoreRecoveryHandler recoveryHandler = new BrokerStoreRecoveryHandler(_systemContext, store, _upgraders);
store.openConfigurationStore(_systemContext, Collections.<String,Object>emptyMap());
store.visitConfiguredObjectRecords(recoveryHandler);
@@ -602,11 +578,13 @@ public class BrokerStoreUpgrader
private DurableConfigurationStore _store;
private final Map<UUID, ConfiguredObjectRecord> _records = new HashMap<UUID, ConfiguredObjectRecord>();
private final SystemContext _systemContext;
+ private Map<String, UpgraderPhaseFactory> _upgraders;
- private BrokerStoreRecoveryHandler(final SystemContext systemContext, DurableConfigurationStore store)
+ private BrokerStoreRecoveryHandler(final SystemContext systemContext, DurableConfigurationStore store, Map<String, UpgraderPhaseFactory> upgraders)
{
_systemContext = systemContext;
_store = store;
+ _upgraders = upgraders;
}
@@ -631,7 +609,7 @@ public class BrokerStoreUpgrader
{
LOGGER.debug("Adding broker store upgrader from model version: " + version);
final UpgraderPhaseFactory upgraderPhaseFactory = _upgraders.get(version);
- BrokerStoreUpgraderPhase upgrader = upgraderPhaseFactory.newInstance();
+ StoreUpgraderPhase upgrader = upgraderPhaseFactory.newInstance();
if(_upgrader == null)
{
_upgrader = upgrader;
@@ -645,69 +623,11 @@ public class BrokerStoreUpgrader
if(_upgrader == null)
{
- _upgrader = new DurableConfigurationStoreUpgrader()
- {
-
- @Override
- public void configuredObject(final ConfiguredObjectRecord record)
- {
- }
-
- @Override
- public void complete()
- {
- }
-
- @Override
- public void setNextUpgrader(final DurableConfigurationStoreUpgrader upgrader)
- {
- }
-
- @Override
- public Map<UUID, ConfiguredObjectRecord> getUpdatedRecords()
- {
- return Collections.emptyMap();
- }
-
- @Override
- public Map<UUID, ConfiguredObjectRecord> getDeletedRecords()
- {
- return Collections.emptyMap();
- }
- };
+ _upgrader = new NullUpgrader();
}
else
{
- _upgrader.setNextUpgrader(new DurableConfigurationStoreUpgrader()
- {
- @Override
- public void configuredObject(final ConfiguredObjectRecord record)
- {
- }
-
- @Override
- public void complete()
- {
-
- }
-
- @Override
- public void setNextUpgrader(final DurableConfigurationStoreUpgrader upgrader)
- {
- }
-
- @Override
- public Map<UUID, ConfiguredObjectRecord> getUpdatedRecords()
- {
- return Collections.emptyMap();
- }
-
- @Override
- public Map<UUID, ConfiguredObjectRecord> getDeletedRecords()
- {
- return Collections.emptyMap();
- }
- });
+ _upgrader.setNextUpgrader(new NullUpgrader());
}
for(ConfiguredObjectRecord record : _records.values())
Added: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/StoreUpgraderPhase.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/StoreUpgraderPhase.java?rev=1588886&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/StoreUpgraderPhase.java (added)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/StoreUpgraderPhase.java Mon Apr 21 14:28:29 2014
@@ -0,0 +1,49 @@
+/*
+ *
+ * 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 java.util.HashMap;
+import java.util.Map;
+
+import org.apache.qpid.server.store.ConfiguredObjectRecord;
+import org.apache.qpid.server.store.ConfiguredObjectRecordImpl;
+import org.apache.qpid.server.store.NonNullUpgrader;
+
+public abstract class StoreUpgraderPhase extends NonNullUpgrader
+{
+ private final String _toVersion;
+ private final String _versionAttributeName;
+
+ protected StoreUpgraderPhase(String versionAttributeName, String toVersion)
+ {
+ _toVersion = toVersion;
+ _versionAttributeName = versionAttributeName;
+ }
+
+ protected ConfiguredObjectRecord upgradeRootRecord(ConfiguredObjectRecord record)
+ {
+ Map<String, Object> updatedAttributes = new HashMap<String, Object>(record.getAttributes());
+ updatedAttributes.put(_versionAttributeName, _toVersion);
+ record = new ConfiguredObjectRecordImpl(record.getId(), record.getType(), updatedAttributes, record.getParents());
+ getUpdateMap().put(record.getId(), record);
+ return record;
+ }
+}
\ No newline at end of file
Copied: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/UpgraderPhaseFactory.java (from r1588885, qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/TestMemoryMessageStoreFactory.java)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/UpgraderPhaseFactory.java?p2=qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/UpgraderPhaseFactory.java&p1=qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/TestMemoryMessageStoreFactory.java&r1=1588885&r2=1588886&rev=1588886&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/TestMemoryMessageStoreFactory.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/UpgraderPhaseFactory.java Mon Apr 21 14:28:29 2014
@@ -18,30 +18,28 @@
* under the License.
*
*/
+package org.apache.qpid.server.configuration.startup;
-package org.apache.qpid.server.store;
-
-import java.util.Map;
-
-import org.apache.qpid.server.plugin.MessageStoreFactory;
-
-public class TestMemoryMessageStoreFactory implements MessageStoreFactory
+public abstract class UpgraderPhaseFactory
{
+ private final String _toVersion;
+ private final String _fromVersion;
- @Override
- public String getType()
+ protected UpgraderPhaseFactory(String fromVersion, String toVersion)
{
- return TestMemoryMessageStore.TYPE;
+ _toVersion = toVersion;
+ _fromVersion = fromVersion;
}
- @Override
- public MessageStore createMessageStore()
+ public String getToVersion()
{
- return new TestMemoryMessageStore();
+ return _toVersion;
}
- @Override
- public void validateAttributes(Map<String, Object> attributes)
+ public String getFromVersion()
{
+ return _fromVersion;
}
-}
+
+ public abstract StoreUpgraderPhase newInstance();
+}
\ No newline at end of file
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=1588886&r1=1588885&r2=1588886&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 Mon Apr 21 14:28:29 2014
@@ -34,6 +34,7 @@ import org.apache.qpid.server.model.Conf
import org.apache.qpid.server.model.Model;
import org.apache.qpid.server.model.State;
import org.apache.qpid.server.model.VirtualHost;
+import org.apache.qpid.server.model.VirtualHostNode;
import org.apache.qpid.server.store.DurableConfigurationStore;
public class StoreConfigurationChangeListener implements ConfigurationChangeListener
@@ -59,8 +60,8 @@ public class StoreConfigurationChangeLis
@Override
public void childAdded(ConfiguredObject object, ConfiguredObject child)
{
- // exclude VirtualHost children from storing in broker store
- if (!(object instanceof VirtualHost))
+ // exclude VirtualHostNode children from storing in broker store
+ if (!(object instanceof VirtualHostNode))
{
child.addChangeListener(this);
_store.update(true,child.asObjectRecord());
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObjectTypeFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObjectTypeFactory.java?rev=1588886&r1=1588885&r2=1588886&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObjectTypeFactory.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObjectTypeFactory.java Mon Apr 21 14:28:29 2014
@@ -61,7 +61,7 @@ abstract public class AbstractConfigured
protected abstract X createInstance(Map<String, Object> attributes, ConfiguredObject<?>... parents);
- public final <C extends ConfiguredObject<C>> C getParent(Class<C> parentClass, ConfiguredObject<?>... parents)
+ public final <C extends ConfiguredObject<?>> C getParent(Class<C> parentClass, ConfiguredObject<?>... parents)
{
if(!parents[0].getModel().getParentTypes((Class<? extends ConfiguredObject>) getCategoryClass()).contains(
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java?rev=1588886&r1=1588885&r2=1588886&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java Mon Apr 21 14:28:29 2014
@@ -136,7 +136,7 @@ public interface Broker<X extends Broker
//children
- Collection < VirtualHost<?,?,?> > getVirtualHosts();
+ Collection<VirtualHostNode<?>> getVirtualHostNodes();
Collection<Port<?>> getPorts();
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/BrokerModel.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/BrokerModel.java?rev=1588886&r1=1588885&r2=1588886&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/BrokerModel.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/BrokerModel.java Mon Apr 21 14:28:29 2014
@@ -38,9 +38,10 @@ public final class BrokerModel extends M
* 1.1 Addition of mandatory virtual host type / different types of virtual host
* 1.3 Truststore/Keystore type => trustStoreType / type => keyStoreType
* 1.4 Separate messageStoreSettings from virtualhost
+ * 2.0 Introduce VirtualHostNode as a child of a Broker instead of VirtualHost
*/
- public static final int MODEL_MAJOR_VERSION = 1;
- public static final int MODEL_MINOR_VERSION = 4;
+ public static final int MODEL_MAJOR_VERSION = 2;
+ public static final int MODEL_MINOR_VERSION = 0;
public static final String MODEL_VERSION = MODEL_MAJOR_VERSION + "." + MODEL_MINOR_VERSION;
private static final Model MODEL_INSTANCE = new BrokerModel();
private final Map<Class<? extends ConfiguredObject>, Collection<Class<? extends ConfiguredObject>>> _parents =
@@ -60,7 +61,7 @@ public final class BrokerModel extends M
addRelationship(SystemContext.class, Broker.class);
- addRelationship(Broker.class, VirtualHost.class);
+ addRelationship(Broker.class, VirtualHostNode.class);
addRelationship(Broker.class, Port.class);
addRelationship(Broker.class, AccessControlProvider.class);
addRelationship(Broker.class, AuthenticationProvider.class);
@@ -69,6 +70,8 @@ public final class BrokerModel extends M
addRelationship(Broker.class, KeyStore.class);
addRelationship(Broker.class, Plugin.class);
+ addRelationship(VirtualHostNode.class, VirtualHost.class);
+
addRelationship(VirtualHost.class, Exchange.class);
addRelationship(VirtualHost.class, Queue.class);
addRelationship(VirtualHost.class, Connection.class);
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java?rev=1588886&r1=1588885&r2=1588886&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java Mon Apr 21 14:28:29 2014
@@ -44,8 +44,8 @@ public interface VirtualHost<X extends V
String SUPPORTED_QUEUE_TYPES = "supportedQueueTypes";
String SECURITY_ACL = "securityAcl";
String HOUSE_KEEPING_THREAD_COUNT = "houseKeepingThreadCount";
- String CONFIGURATION_STORE_SETTINGS = "configurationStoreSettings";
String MESSAGE_STORE_SETTINGS = "messageStoreSettings";
+ String MODEL_VERSION = "modelVersion";
// TODO - this isn't really an attribute
@ManagedAttribute( derived = true )
@@ -111,8 +111,8 @@ public interface VirtualHost<X extends V
@ManagedAttribute( automate = true )
Map<String, Object> getMessageStoreSettings();
- @ManagedAttribute( automate = true )
- Map<String, Object> getConfigurationStoreSettings();
+ @ManagedAttribute( derived = true )
+ String getModelVersion();
@ManagedStatistic
long getQueueCount();
@@ -135,7 +135,6 @@ public interface VirtualHost<X extends V
@ManagedStatistic
long getMessagesOut();
-
//children
Collection<VirtualHostAlias> getAliases();
Collection<Connection> getConnections();
Copied: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostNode.java (from r1588885, qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/DurableConfigurationStoreFactory.java)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostNode.java?p2=qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostNode.java&p1=qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/DurableConfigurationStoreFactory.java&r1=1588885&r2=1588886&rev=1588886&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/DurableConfigurationStoreFactory.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostNode.java Mon Apr 21 14:28:29 2014
@@ -18,16 +18,19 @@
* under the License.
*
*/
-package org.apache.qpid.server.plugin;
+package org.apache.qpid.server.model;
-import java.util.Map;
import org.apache.qpid.server.store.DurableConfigurationStore;
-public interface DurableConfigurationStoreFactory extends Pluggable
+@ManagedObject(category=true, managesChildren=false)
+public interface VirtualHostNode<X extends VirtualHostNode<X>> extends ConfiguredObject<X>
{
- String getType();
+ public static final String IS_MESSAGE_STORE_PROVIDER = "messageStoreProvider";
- DurableConfigurationStore createDurableConfigurationStore();
+ @ManagedAttribute (automate = true, defaultValue = "false")
+ boolean isMessageStoreProvider();
- void validateAttributes(Map<String, Object> attributes);
+ VirtualHost<?,?,?> getVirtualHost();
+
+ DurableConfigurationStore getConfigurationStore();
}
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java?rev=1588886&r1=1588885&r2=1588886&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java Mon Apr 21 14:28:29 2014
@@ -36,7 +36,6 @@ import java.util.regex.Pattern;
import javax.security.auth.Subject;
import org.apache.log4j.Logger;
-
import org.apache.qpid.common.QpidProperties;
import org.apache.qpid.server.BrokerOptions;
import org.apache.qpid.server.configuration.IllegalConfigurationException;
@@ -108,8 +107,6 @@ public class BrokerAdapter extends Abstr
attributes,
parent.getTaskExecutor());
- //_virtualHostRegistry = new VirtualHostRegistry(parent.getEventLogger());
-
_logRecorder = parent.getLogRecorder();
_eventLogger = parent.getEventLogger();
_brokerOptions = parent.getBrokerOptions();
@@ -235,9 +232,9 @@ public class BrokerAdapter extends Abstr
{
addAccessControlProvider(accessControlProvider);
}
- for(VirtualHost<?,?,?> virtualHost : getChildren(VirtualHost.class))
+ for(VirtualHostNode<?> virtualHostNode : getChildren(VirtualHostNode.class))
{
- addVirtualHost(virtualHost);
+ addVirtualHostNode(virtualHostNode);
}
@@ -358,9 +355,10 @@ public class BrokerAdapter extends Abstr
return BrokerModel.MODEL_VERSION;
}
- public Collection<VirtualHost<?,?,?>> getVirtualHosts()
+ @Override
+ public Collection<VirtualHostNode<?>> getVirtualHostNodes()
{
- Collection children = getChildren(VirtualHost.class);
+ Collection children = getChildren(VirtualHostNode.class);
return children;
}
@@ -402,11 +400,11 @@ public class BrokerAdapter extends Abstr
return children;
}
- private VirtualHost createVirtualHost(final Map<String, Object> attributes)
+ private VirtualHostNode<?> createVirtualHostNode(Map<String, Object> attributes)
throws AccessControlException, IllegalArgumentException
{
- final VirtualHost virtualHost = getObjectFactory().create(VirtualHost.class,attributes,this);
+ final VirtualHostNode virtualHostNode = getObjectFactory().create(VirtualHostNode.class,attributes, this);
// permission has already been granted to create the virtual host
// disable further access check on other operations, e.g. create exchange
@@ -415,20 +413,13 @@ public class BrokerAdapter extends Abstr
@Override
public Object run()
{
- virtualHost.setDesiredState(State.INITIALISING, State.ACTIVE);
+ virtualHostNode.setDesiredState(State.INITIALISING, State.ACTIVE);
return null;
}
});
- return virtualHost;
+ return virtualHostNode;
}
- private boolean deleteVirtualHost(final VirtualHost vhost) throws AccessControlException, IllegalStateException
- {
- vhost.removeChangeListener(this);
- return true;
- }
-
-
public State getState()
{
return null; //TODO
@@ -467,9 +458,9 @@ public class BrokerAdapter extends Abstr
@Override
public C execute()
{
- if (childClass == VirtualHost.class)
+ if (childClass == VirtualHostNode.class)
{
- return (C) createVirtualHost(attributes);
+ return (C) createVirtualHostNode(attributes);
}
else if (childClass == Port.class)
{
@@ -720,10 +711,16 @@ public class BrokerAdapter extends Abstr
return true;
}
- private void addVirtualHost(VirtualHost<?,?,?> virtualHost)
+ private void addVirtualHostNode(VirtualHostNode<?> virtualHostNode)
{
+ virtualHostNode.addChangeListener(this);
+ }
- virtualHost.addChangeListener(this);
+
+ private boolean deleteVirtualHostNode(final VirtualHostNode virtualHostNode) throws AccessControlException, IllegalStateException
+ {
+ virtualHostNode.removeChangeListener(this);
+ return true;
}
@Override
@@ -815,9 +812,9 @@ public class BrokerAdapter extends Abstr
{
childDeleted = deletePort(oldState, (Port)object);
}
- else if(object instanceof VirtualHost)
+ else if(object instanceof VirtualHostNode)
{
- childDeleted = deleteVirtualHost((VirtualHost)object);
+ childDeleted = deleteVirtualHostNode((VirtualHostNode)object);
}
else if(object instanceof GroupProvider)
{
@@ -890,9 +887,17 @@ public class BrokerAdapter extends Abstr
}
@Override
- public VirtualHost findVirtualHostByName(String name)
+ public VirtualHost<?,?,?> findVirtualHostByName(String name)
{
- return getChildByName(VirtualHost.class, name);
+ for (VirtualHostNode<?> virtualHostNode : getChildren(VirtualHostNode.class))
+ {
+ VirtualHost<?, ?, ?> virtualHost = virtualHostNode.getVirtualHost();
+ if (virtualHost != null && virtualHost.getName().equals(name))
+ {
+ return virtualHost;
+ }
+ }
+ return null;
}
@Override
@@ -1042,11 +1047,12 @@ public class BrokerAdapter extends Abstr
_messagesReceived.reset();
_dataReceived.reset();
- for (VirtualHost vhost : getVirtualHosts())
+ for (VirtualHostNode<?> virtualHostNode : getChildren(VirtualHostNode.class))
{
- if(vhost instanceof VirtualHostImpl)
+ VirtualHost<?, ?, ?> virtualHost = virtualHostNode.getVirtualHost();
+ if (virtualHost instanceof VirtualHostImpl)
{
- ((VirtualHostImpl) vhost).resetStatistics();
+ ((VirtualHostImpl) virtualHost).resetStatistics();
}
}
}
@@ -1098,37 +1104,38 @@ public class BrokerAdapter extends Abstr
_eventLogger.message(BrokerMessages.STATS_MSGS(RECEIVED,
_messagesReceived.getPeak(),
_messagesReceived.getTotal()));
- Collection<VirtualHost<?,?,?>> hosts = getVirtualHosts();
- for (VirtualHost vhost : hosts)
+ for (VirtualHostNode<?> virtualHostNode : getChildren(VirtualHostNode.class))
+ {
+ VirtualHost<?, ?, ?> virtualHost = virtualHostNode.getVirtualHost();
+ if (virtualHost instanceof VirtualHostImpl)
{
- if(vhost instanceof VirtualHostImpl)
- {
- VirtualHostImpl vhostImpl = (VirtualHostImpl) vhost;
- String name = vhost.getName();
- StatisticsCounter dataDelivered = vhostImpl.getDataDeliveryStatistics();
- StatisticsCounter messagesDelivered = vhostImpl.getMessageDeliveryStatistics();
- StatisticsCounter dataReceived = vhostImpl.getDataReceiptStatistics();
- StatisticsCounter messagesReceived = vhostImpl.getMessageReceiptStatistics();
- EventLogger logger = vhostImpl.getEventLogger();
- logger.message(VirtualHostMessages.STATS_DATA(name,
- DELIVERED,
- dataDelivered.getPeak() / 1024.0,
- dataDelivered.getTotal()));
- logger.message(VirtualHostMessages.STATS_MSGS(name,
- DELIVERED,
- messagesDelivered.getPeak(),
- messagesDelivered.getTotal()));
- logger.message(VirtualHostMessages.STATS_DATA(name,
- RECEIVED,
- dataReceived.getPeak() / 1024.0,
- dataReceived.getTotal()));
- logger.message(VirtualHostMessages.STATS_MSGS(name,
- RECEIVED,
- messagesReceived.getPeak(),
- messagesReceived.getTotal()));
- }
+ VirtualHostImpl vhostImpl = (VirtualHostImpl) virtualHost;
+ String name = virtualHost.getName();
+ StatisticsCounter dataDelivered = vhostImpl.getDataDeliveryStatistics();
+ StatisticsCounter messagesDelivered = vhostImpl.getMessageDeliveryStatistics();
+ StatisticsCounter dataReceived = vhostImpl.getDataReceiptStatistics();
+ StatisticsCounter messagesReceived = vhostImpl.getMessageReceiptStatistics();
+ EventLogger logger = vhostImpl.getEventLogger();
+ logger.message(VirtualHostMessages.STATS_DATA(name,
+ DELIVERED,
+ dataDelivered.getPeak() / 1024.0,
+ dataDelivered.getTotal()));
+ logger.message(VirtualHostMessages.STATS_MSGS(name,
+ DELIVERED,
+ messagesDelivered.getPeak(),
+ messagesDelivered.getTotal()));
+ logger.message(VirtualHostMessages.STATS_DATA(name,
+ RECEIVED,
+ dataReceived.getPeak() / 1024.0,
+ dataReceived.getTotal()));
+ logger.message(VirtualHostMessages.STATS_MSGS(name,
+ RECEIVED,
+ messagesReceived.getPeak(),
+ messagesReceived.getTotal()));
+
}
+ }
if (_reset)
{
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/StandardVirtualHostFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/StandardVirtualHostFactory.java?rev=1588886&r1=1588885&r2=1588886&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/StandardVirtualHostFactory.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/StandardVirtualHostFactory.java Mon Apr 21 14:28:29 2014
@@ -23,8 +23,8 @@ package org.apache.qpid.server.model.ada
import java.util.Map;
import org.apache.qpid.server.model.AbstractConfiguredObjectTypeFactory;
-import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.VirtualHostNode;
import org.apache.qpid.server.virtualhost.StandardVirtualHost;
public class StandardVirtualHostFactory extends AbstractConfiguredObjectTypeFactory<StandardVirtualHost>
@@ -39,8 +39,8 @@ public class StandardVirtualHostFactory
public StandardVirtualHost createInstance(final Map<String, Object> attributes,
final ConfiguredObject<?>... parents)
{
- final Broker broker = getParent(Broker.class, parents);
- return new StandardVirtualHost(attributes, broker);
+ final VirtualHostNode<?> virtualHostNode = getParent(VirtualHostNode.class, parents);
+ return new StandardVirtualHost(attributes, virtualHostNode);
}
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AbstractPort.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AbstractPort.java?rev=1588886&r1=1588885&r2=1588886&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AbstractPort.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AbstractPort.java Mon Apr 21 14:28:29 2014
@@ -47,6 +47,7 @@ import org.apache.qpid.server.model.Tran
import org.apache.qpid.server.model.TrustStore;
import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.model.VirtualHostAlias;
+import org.apache.qpid.server.model.VirtualHostNode;
import org.apache.qpid.server.security.access.Operation;
import org.apache.qpid.server.util.MapValueConverter;
import org.apache.qpid.server.util.ParameterizedTypeImpl;
@@ -238,13 +239,17 @@ abstract public class AbstractPort<X ext
public Collection<VirtualHostAlias> getVirtualHostBindings()
{
List<VirtualHostAlias> aliases = new ArrayList<VirtualHostAlias>();
- for(VirtualHost<?,?,?> vh : _broker.getVirtualHosts())
+ for(VirtualHostNode<?> vhn : _broker.getVirtualHostNodes())
{
- for(VirtualHostAlias<?> alias : vh.getAliases())
+ VirtualHost<?, ?, ?> vh = vhn.getVirtualHost();
+ if (vh != null)
{
- if(alias.getPort().equals(this))
+ for(VirtualHostAlias<?> alias : vh.getAliases())
{
- aliases.add(alias);
+ if(alias.getPort().equals(this))
+ {
+ aliases.add(alias);
+ }
}
}
}
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java?rev=1588886&r1=1588885&r2=1588886&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/AmqpPortImpl.java Mon Apr 21 14:28:29 2014
@@ -99,7 +99,8 @@ public class AmqpPortImpl extends Abstra
{
name = _broker.getDefaultVirtualHost();
}
- return (VirtualHostImpl) _broker.getChildByName(VirtualHost.class, name);
+
+ return (VirtualHostImpl) _broker.findVirtualHostByName(name);
}
protected Set<Protocol> getDefaultProtocols()
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/DurableConfigurationStoreFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/DurableConfigurationStoreFactory.java?rev=1588886&r1=1588885&r2=1588886&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/DurableConfigurationStoreFactory.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/DurableConfigurationStoreFactory.java Mon Apr 21 14:28:29 2014
@@ -21,13 +21,16 @@
package org.apache.qpid.server.plugin;
import java.util.Map;
+
import org.apache.qpid.server.store.DurableConfigurationStore;
public interface DurableConfigurationStoreFactory extends Pluggable
{
+ PluggableFactoryLoader<DurableConfigurationStoreFactory> FACTORY_LOADER = new PluggableFactoryLoader<DurableConfigurationStoreFactory>(DurableConfigurationStoreFactory.class);
+
String getType();
DurableConfigurationStore createDurableConfigurationStore();
- void validateAttributes(Map<String, Object> attributes);
+ void validateConfigurationStoreSettings(Map<String, Object> attributes);
}
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java?rev=1588886&r1=1588885&r2=1588886&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java Mon Apr 21 14:28:29 2014
@@ -2495,5 +2495,12 @@ abstract public class AbstractJDBCMessag
{
return Collections.unmodifiableMap(_parents);
}
+
+ @Override
+ public String toString()
+ {
+ return "ConfiguredObjectRecordImpl [_id=" + _id + ", _type=" + _type + ", _attributes=" + _attributes + ", _parents="
+ + _parents + "]";
+ }
}
}
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractMemoryMessageStore.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractMemoryMessageStore.java?rev=1588886&r1=1588885&r2=1588886&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractMemoryMessageStore.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractMemoryMessageStore.java Mon Apr 21 14:28:29 2014
@@ -32,7 +32,6 @@ import java.util.concurrent.atomic.Atomi
import org.apache.qpid.server.message.EnqueueableMessage;
import org.apache.qpid.server.model.ConfiguredObject;
-import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.store.Transaction.Record;
import org.apache.qpid.server.store.handler.ConfiguredObjectRecordHandler;
import org.apache.qpid.server.store.handler.DistributedTransactionHandler;
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStore.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStore.java?rev=1588886&r1=1588885&r2=1588886&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStore.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStore.java Mon Apr 21 14:28:29 2014
@@ -30,8 +30,6 @@ public interface DurableConfigurationSto
{
String STORE_TYPE = "storeType";
String STORE_PATH = "storePath";
- String IS_MESSAGE_STORE_TOO = "isMessageStoreToo";
-
public static interface Source
{
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java?rev=1588886&r1=1588885&r2=1588886&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java Mon Apr 21 14:28:29 2014
@@ -48,7 +48,6 @@ import org.codehaus.jackson.map.Serializ
import org.codehaus.jackson.map.SerializerProvider;
import org.codehaus.jackson.map.module.SimpleModule;
-import org.apache.qpid.server.model.BrokerModel;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.Model;
import org.apache.qpid.server.model.VirtualHost;
@@ -57,19 +56,19 @@ import org.apache.qpid.server.store.hand
public class JsonFileConfigStore implements DurableConfigurationStore
{
- private Map<String,Class<? extends ConfiguredObject>> _classNameMapping;
public static final String TYPE = "JSON";
private final Map<UUID, ConfiguredObjectRecord> _objectsById = new HashMap<UUID, ConfiguredObjectRecord>();
private final Map<String, List<UUID>> _idsByType = new HashMap<String, List<UUID>>();
private final ObjectMapper _objectMapper = new ObjectMapper();
+ private final Class<? extends ConfiguredObject> _rootClass;
+ private Map<String,Class<? extends ConfiguredObject>> _classNameMapping;
private String _directoryName;
private String _name;
private FileLock _fileLock;
private String _configFileName;
private String _backupFileName;
- private int _configVersion;
private static final Module _module;
static
@@ -96,8 +95,14 @@ public class JsonFileConfigStore impleme
public JsonFileConfigStore()
{
+ this(VirtualHost.class);
+ }
+
+ public JsonFileConfigStore(Class<? extends ConfiguredObject> rootClass)
+ {
_objectMapper.registerModule(_module);
_objectMapper.enable(SerializationConfig.Feature.INDENT_OUTPUT);
+ _rootClass = rootClass;
}
@Override
@@ -105,7 +110,7 @@ public class JsonFileConfigStore impleme
{
_parent = parent;
_name = parent.getName();
- _classNameMapping = generateClassNameMap(_parent.getModel(), VirtualHost.class);
+ _classNameMapping = generateClassNameMap(_parent.getModel(), _rootClass);
setup(storeSettings);
load();
}
@@ -260,48 +265,26 @@ public class JsonFileConfigStore impleme
}
- protected void loadFromMap(final Map data)
+ protected void loadFromMap(final Map<String,Object> data)
{
- Collection<Class<? extends ConfiguredObject>> childClasses =
- _parent.getModel().getChildTypes(VirtualHost.class);
- data.remove("modelVersion");
- Object configVersion;
- if((configVersion = data.remove("configVersion")) instanceof Integer)
+ if (!data.isEmpty())
{
- _configVersion = (Integer) configVersion;
- }
- for(Class<? extends ConfiguredObject> childClass : childClasses)
- {
- final String type = childClass.getSimpleName();
- String attrName = type.toLowerCase() + "s";
- Object children = data.remove(attrName);
- if(children != null)
- {
- if(children instanceof Collection)
- {
- for(Object child : (Collection)children)
- {
- if(child instanceof Map)
- {
- loadChild(childClass, (Map)child, VirtualHost.class, null);
- }
- }
- }
- }
+ loadChild(_rootClass, data, null, null);
}
}
+
private void loadChild(final Class<? extends ConfiguredObject> clazz,
final Map<String,Object> data,
final Class<? extends ConfiguredObject> parentClass,
final UUID parentId)
{
- Collection<Class<? extends ConfiguredObject>> childClasses =
- _parent.getModel().getChildTypes(clazz);
String idStr = (String) data.remove("id");
final UUID id = UUID.fromString(idStr);
final String type = clazz.getSimpleName();
+ Map<String,UUID> parentMap = new HashMap<String, UUID>();
+ Collection<Class<? extends ConfiguredObject>> childClasses = _parent.getModel().getChildTypes(clazz);
for(Class<? extends ConfiguredObject> childClass : childClasses)
{
final String childType = childClass.getSimpleName();
@@ -322,7 +305,6 @@ public class JsonFileConfigStore impleme
}
}
- Map<String,UUID> parentMap = new HashMap<String, UUID>();
if(parentId != null)
{
parentMap.put(parentClass.getSimpleName(),parentId);
@@ -356,7 +338,6 @@ public class JsonFileConfigStore impleme
_idsByType.put(type, idsForType);
}
idsForType.add(id);
-
}
@Override
@@ -380,42 +361,38 @@ public class JsonFileConfigStore impleme
idsForType = new ArrayList<UUID>();
_idsByType.put(record.getType(), idsForType);
}
+
+ if (_rootClass.getSimpleName().equals(record.getType()) && idsForType.size() > 0)
+ {
+ throw new IllegalStateException("Only a single root entry of type " + _rootClass.getSimpleName() + " can exist in the store.");
+ }
+
idsForType.add(record.getId());
+
save();
}
}
- private void save()
+ private UUID getRootId()
{
- Collection<Class<? extends ConfiguredObject>> childClasses =
- _parent.getModel().getChildTypes(VirtualHost.class);
-
- Map<String, Object> virtualHostMap = new LinkedHashMap<String, Object>();
- virtualHostMap.put("modelVersion", BrokerModel.MODEL_VERSION);
- virtualHostMap.put("configVersion", _configVersion);
-
- for(Class<? extends ConfiguredObject> childClass : childClasses)
+ List<UUID> ids = _idsByType.get(_rootClass.getSimpleName());
+ if (ids == null)
{
- final String type = childClass.getSimpleName();
- String attrName = type.toLowerCase() + "s";
- List<UUID> childIds = _idsByType.get(type);
- if(childIds != null && !childIds.isEmpty())
- {
- List<Map<String,Object>> entities = new ArrayList<Map<String, Object>>();
- for(UUID id : childIds)
- {
- entities.add(build(childClass,id));
- }
- virtualHostMap.put(attrName, entities);
- }
+ throw new IllegalStateException("Root entry of type " + _rootClass.getSimpleName() + " does not exist in the store.");
}
+ return ids.get(0);
+ }
+
+ private void save()
+ {
+ UUID rootId = getRootId();
+ Map<String, Object> data = build(_rootClass, rootId);
try
{
-
File tmpFile = File.createTempFile("cfg","tmp", new File(_directoryName));
tmpFile.deleteOnExit();
- _objectMapper.writeValue(tmpFile,virtualHostMap);
+ _objectMapper.writeValue(tmpFile,data);
renameFile(_configFileName,_backupFileName);
renameFile(tmpFile.getName(),_configFileName);
tmpFile.delete();
@@ -489,6 +466,11 @@ public class JsonFileConfigStore impleme
@Override
public synchronized UUID[] remove(final ConfiguredObjectRecord... objects) throws StoreException
{
+ if (objects.length == 0)
+ {
+ return new UUID[0];
+ }
+
List<UUID> removedIds = new ArrayList<UUID>();
for(ConfiguredObjectRecord requestedRecord : objects)
{
@@ -508,6 +490,11 @@ public class JsonFileConfigStore impleme
public void update(final boolean createIfNecessary, final ConfiguredObjectRecord... records)
throws StoreException
{
+ if (records.length == 0)
+ {
+ return;
+ }
+
for(ConfiguredObjectRecord record : records)
{
final UUID id = record.getId();
@@ -647,6 +634,15 @@ public class JsonFileConfigStore impleme
}
return parents;
}
+
+ @Override
+ public String toString()
+ {
+ return "ConfiguredObjectRecordImpl [_id=" + _id + ", _type=" + _type + ", _attributes=" + _attributes + ", _parents="
+ + _parents + "]";
+ }
+
}
+
}
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStoreFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStoreFactory.java?rev=1588886&r1=1588885&r2=1588886&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStoreFactory.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStoreFactory.java Mon Apr 21 14:28:29 2014
@@ -40,12 +40,9 @@ public class JsonFileConfigStoreFactory
}
@Override
- public void validateAttributes(Map<String, Object> attributes)
+ public void validateConfigurationStoreSettings(Map<String, Object> attributes)
{
- @SuppressWarnings("unchecked")
- Map<String, Object> configurationStoreSettings = (Map<String, Object>) attributes.get(VirtualHost.CONFIGURATION_STORE_SETTINGS);
-
- Object storePath = configurationStoreSettings.get(DurableConfigurationStore.STORE_PATH);
+ Object storePath = attributes.get(DurableConfigurationStore.STORE_PATH);
if(!(storePath instanceof String))
{
throw new IllegalArgumentException("Setting '"+ DurableConfigurationStore.STORE_PATH
@@ -53,4 +50,5 @@ public class JsonFileConfigStoreFactory
}
}
+
}
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStore.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStore.java?rev=1588886&r1=1588885&r2=1588886&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStore.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStore.java Mon Apr 21 14:28:29 2014
@@ -67,6 +67,7 @@ public interface MessageStore
String getStoreLocation();
+ // TODO change to have separate delete methods for configuration and message store.
void onDelete();
void visitMessages(MessageHandler handler) throws StoreException;
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/NullUpgrader.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/NullUpgrader.java?rev=1588886&r1=1588885&r2=1588886&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/NullUpgrader.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/NullUpgrader.java Mon Apr 21 14:28:29 2014
@@ -26,17 +26,10 @@ import java.util.UUID;
public final class NullUpgrader implements DurableConfigurationStoreUpgrader
{
- private DurableConfigurationRecoverer _durableConfigurationRecoverer;
-
- public NullUpgrader(final DurableConfigurationRecoverer durableConfigurationRecoverer)
- {
- _durableConfigurationRecoverer = durableConfigurationRecoverer;
- }
@Override
public void configuredObject(final ConfiguredObjectRecord record)
{
- _durableConfigurationRecoverer.onConfiguredObject(record);
}
@Override
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org