summaryrefslogtreecommitdiff
path: root/java/broker-core/src
diff options
context:
space:
mode:
authorKeith Wall <kwall@apache.org>2014-06-06 15:44:20 +0000
committerKeith Wall <kwall@apache.org>2014-06-06 15:44:20 +0000
commit8de53f5c5de353635b6bd435df993df83db7357a (patch)
tree727bd69cee53c3d698e3456911118b4c5980df1a /java/broker-core/src
parent2df814dae9f4b112a7d36ee2f94f1a73a711ac15 (diff)
downloadqpid-python-8de53f5c5de353635b6bd435df993df83db7357a.tar.gz
QPID-5802: [Java Broker] Introduce separate VirtualHost types
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1600936 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/broker-core/src')
-rw-r--r--java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java2
-rw-r--r--java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostNode.java5
-rw-r--r--java/broker-core/src/main/java/org/apache/qpid/server/store/MemoryMessageStore.java2
-rw-r--r--java/broker-core/src/main/java/org/apache/qpid/server/store/NullMessageStore.java7
-rw-r--r--java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java44
-rw-r--r--java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ProvidedStoreVirtualHost.java87
-rw-r--r--java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHost.java124
-rw-r--r--java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNode.java13
-rw-r--r--java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java9
-rw-r--r--java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/VirtualHostCreationTest.java20
-rw-r--r--java/broker-core/src/test/java/org/apache/qpid/server/model/VirtualHostTest.java10
-rw-r--r--java/broker-core/src/test/java/org/apache/qpid/server/store/MessageCounter.java47
-rw-r--r--java/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java4
-rw-r--r--java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/TestMemoryVirtualHost.java67
-rw-r--r--java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/VirtualHostQueueCreationTest.java9
-rw-r--r--java/broker-core/src/test/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNodeTest.java8
16 files changed, 239 insertions, 219 deletions
diff --git a/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java b/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
index a32ad25af5..5e7c87e998 100644
--- a/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
+++ b/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
@@ -29,7 +29,7 @@ import org.apache.qpid.server.configuration.updater.TaskExecutor;
import org.apache.qpid.server.message.MessageInstance;
import org.apache.qpid.server.store.MessageStore;
-@ManagedObject( managesChildren = true, defaultType = "STANDARD")
+@ManagedObject( managesChildren = true, defaultType = "ProvidedStore")
public interface VirtualHost<X extends VirtualHost<X, Q, E>, Q extends Queue<?>, E extends Exchange<?> > extends ConfiguredObject<X>
{
diff --git a/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostNode.java b/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostNode.java
index cf65e984e1..f4d9df6eff 100644
--- a/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostNode.java
+++ b/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostNode.java
@@ -27,11 +27,6 @@ import org.apache.qpid.server.store.DurableConfigurationStore;
@ManagedObject(category=true, managesChildren=false)
public interface VirtualHostNode<X extends VirtualHostNode<X>> extends ConfiguredObject<X>
{
- public static final String IS_MESSAGE_STORE_PROVIDER = "messageStoreProvider";
-
- @ManagedAttribute (defaultValue = "false")
- boolean isMessageStoreProvider();
-
VirtualHost<?,?,?> getVirtualHost();
DurableConfigurationStore getConfigurationStore();
diff --git a/java/broker-core/src/main/java/org/apache/qpid/server/store/MemoryMessageStore.java b/java/broker-core/src/main/java/org/apache/qpid/server/store/MemoryMessageStore.java
index f4ad308a2e..21a94113cf 100644
--- a/java/broker-core/src/main/java/org/apache/qpid/server/store/MemoryMessageStore.java
+++ b/java/broker-core/src/main/java/org/apache/qpid/server/store/MemoryMessageStore.java
@@ -37,6 +37,8 @@ import org.apache.qpid.server.store.handler.MessageInstanceHandler;
/** A simple message store that stores the messages in a thread-safe structure in memory. */
public class MemoryMessageStore implements MessageStore
{
+ public static final String TYPE = "Memory";
+
private final AtomicLong _messageId = new AtomicLong(1);
private final ConcurrentHashMap<Long, StoredMemoryMessage> _messages = new ConcurrentHashMap<Long, StoredMemoryMessage>();
diff --git a/java/broker-core/src/main/java/org/apache/qpid/server/store/NullMessageStore.java b/java/broker-core/src/main/java/org/apache/qpid/server/store/NullMessageStore.java
index a929198af6..a6657f48a8 100644
--- a/java/broker-core/src/main/java/org/apache/qpid/server/store/NullMessageStore.java
+++ b/java/broker-core/src/main/java/org/apache/qpid/server/store/NullMessageStore.java
@@ -28,8 +28,13 @@ import org.apache.qpid.server.store.handler.DistributedTransactionHandler;
import org.apache.qpid.server.store.handler.MessageHandler;
import org.apache.qpid.server.store.handler.MessageInstanceHandler;
-public abstract class NullMessageStore implements MessageStore, DurableConfigurationStore
+public abstract class NullMessageStore implements MessageStore, DurableConfigurationStore, MessageStoreProvider
{
+ @Override
+ public MessageStore getMessageStore()
+ {
+ return this;
+ }
@Override
public void openConfigurationStore(ConfiguredObject<?> parent, Map<String, Object> storeSettings)
diff --git a/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java b/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
index 5af88f9b94..db749caf88 100644
--- a/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
+++ b/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
@@ -61,7 +61,6 @@ import org.apache.qpid.server.message.ServerMessage;
import org.apache.qpid.server.model.*;
import org.apache.qpid.server.model.adapter.ConnectionAdapter;
import org.apache.qpid.server.model.adapter.VirtualHostAliasAdapter;
-import org.apache.qpid.server.plugin.MessageStoreFactory;
import org.apache.qpid.server.plugin.QpidServiceLoader;
import org.apache.qpid.server.plugin.SystemNodeCreator;
import org.apache.qpid.server.protocol.AMQConnectionModel;
@@ -194,42 +193,6 @@ public abstract class AbstractVirtualHost<X extends AbstractVirtualHost<X>> exte
{
throw new IllegalArgumentException(getClass().getSimpleName() + " must be durable");
}
-
- DurableConfigurationStore durableConfigurationStore = _virtualHostNode.getConfigurationStore();
-
- // TODO attribute messageStoreProvider is to be removed
- boolean nodeIsMessageStoreProvider = _virtualHostNode.isMessageStoreProvider();
- if (nodeIsMessageStoreProvider)
- {
- if (!(durableConfigurationStore instanceof MessageStoreProvider))
- {
- throw new IllegalConfigurationException("Virtual host node " + _virtualHostNode.getName()
- + " is configured as a provider of message store but the MessageStoreProvider interface is not implemented on a configuration store of type "
- + durableConfigurationStore.getClass().getName());
- }
- }
- else
- {
- Map<String, Object> messageStoreSettings = getMessageStoreSettings();
- if (messageStoreSettings == null)
- {
- throw new IllegalConfigurationException("Message store settings are missed for VirtualHost " + getName()
- + ". You can either configure the message store setting on the host or "
- + (durableConfigurationStore instanceof MessageStore ?
- " configure VirtualHostNode " + _virtualHostNode.getName() + " as a provider of message store" :
- " change the node type to one having configuration store implementing the MessageStore interface") );
- }
- String storeType = (String) messageStoreSettings.get(MessageStore.STORE_TYPE);
- if (storeType == null)
- {
- throw new IllegalConfigurationException("Message store type setting is not set");
- }
- MessageStoreFactory factory = MessageStoreFactory.FACTORY_LOADER.get(storeType);
- if (factory == null)
- {
- throw new IllegalConfigurationException("Message store factory is not found for type " + storeType + " for VirtualHost " + getName());
- }
- }
}
@Override
@@ -242,6 +205,7 @@ public abstract class AbstractVirtualHost<X extends AbstractVirtualHost<X>> exte
}
}
+ @Override
protected void onOpen()
{
super.onOpen();
@@ -688,7 +652,7 @@ public abstract class AbstractVirtualHost<X extends AbstractVirtualHost<X>> exte
}
}
- if (!_virtualHostNode.isMessageStoreProvider())
+ if (!(_virtualHostNode.getConfigurationStore() instanceof MessageStoreProvider))
{
getEventLogger().message(getMessageStoreLogSubject(), MessageStoreMessages.CLOSED());
}
@@ -1352,8 +1316,6 @@ public abstract class AbstractVirtualHost<X extends AbstractVirtualHost<X>> exte
{
_houseKeepingTasks = new ScheduledThreadPoolExecutor(getHousekeepingThreadCount());
- boolean nodeIsMessageStoreProvider = _virtualHostNode.isMessageStoreProvider();
-
MessageStore messageStore = getMessageStore();
Map<String, Object> messageStoreSettings = getMessageStoreSettings();
if (messageStoreSettings == null)
@@ -1362,7 +1324,7 @@ public abstract class AbstractVirtualHost<X extends AbstractVirtualHost<X>> exte
}
messageStore.openMessageStore(this, messageStoreSettings);
- if (!nodeIsMessageStoreProvider)
+ if (!(_virtualHostNode.getConfigurationStore() instanceof MessageStoreProvider))
{
getEventLogger().message(getMessageStoreLogSubject(), MessageStoreMessages.CREATED());
getEventLogger().message(getMessageStoreLogSubject(), MessageStoreMessages.STORE_LOCATION(messageStore.getStoreLocation()));
diff --git a/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ProvidedStoreVirtualHost.java b/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ProvidedStoreVirtualHost.java
new file mode 100644
index 0000000000..ac8d6c34fd
--- /dev/null
+++ b/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ProvidedStoreVirtualHost.java
@@ -0,0 +1,87 @@
+/*
+ *
+ * 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.virtualhost;
+
+import java.util.Map;
+
+import org.apache.qpid.server.configuration.IllegalConfigurationException;
+import org.apache.qpid.server.logging.subjects.MessageStoreLogSubject;
+import org.apache.qpid.server.model.ManagedObject;
+import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
+import org.apache.qpid.server.model.VirtualHostNode;
+import org.apache.qpid.server.store.DurableConfigurationStore;
+import org.apache.qpid.server.store.MessageStore;
+import org.apache.qpid.server.store.MessageStoreProvider;
+
+@ManagedObject(category = false, type = ProvidedStoreVirtualHost.VIRTUAL_HOST_TYPE)
+public class ProvidedStoreVirtualHost extends AbstractVirtualHost<ProvidedStoreVirtualHost>
+{
+ public static final String VIRTUAL_HOST_TYPE = "ProvidedStore";
+ private MessageStore _messageStore;
+ private MessageStoreLogSubject _messageStoreLogSubject;
+
+ @ManagedObjectFactoryConstructor
+ public ProvidedStoreVirtualHost(final Map<String, Object> attributes,
+ final VirtualHostNode<?> virtualHostNode)
+ {
+ super(attributes, virtualHostNode);
+ }
+
+ @Override
+ public void onValidate()
+ {
+ super.onValidate();
+
+ VirtualHostNode<?> virtualHostNode = getParent(VirtualHostNode.class);
+ DurableConfigurationStore configurationStore = virtualHostNode.getConfigurationStore();
+ if (!(configurationStore instanceof MessageStoreProvider))
+ {
+ throw new IllegalConfigurationException(VIRTUAL_HOST_TYPE +
+ " virtual host can only be used where the node's store ("
+ + configurationStore.getClass().getName()
+ + ") is a message store provider. ");
+ }
+ }
+
+ @Override
+ protected void initialiseStorage()
+ {
+ VirtualHostNode<?> virtualHostNode = getParent(VirtualHostNode.class);
+
+ MessageStoreProvider messageStoreProvider = (MessageStoreProvider) virtualHostNode.getConfigurationStore();
+ _messageStore = messageStoreProvider.getMessageStore();
+
+ _messageStoreLogSubject = new MessageStoreLogSubject(getName(), _messageStore.getClass().getSimpleName());
+
+ }
+
+ @Override
+ protected MessageStoreLogSubject getMessageStoreLogSubject()
+ {
+ return _messageStoreLogSubject;
+ }
+
+ @Override
+ public MessageStore getMessageStore()
+ {
+ return _messageStore;
+ }
+}
diff --git a/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHost.java b/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHost.java
deleted file mode 100644
index b9356b368b..0000000000
--- a/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHost.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- *
- * 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.virtualhost;
-
-import java.util.Collection;
-import java.util.Map;
-
-import org.apache.qpid.server.logging.subjects.MessageStoreLogSubject;
-import org.apache.qpid.server.model.ManagedObject;
-import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
-import org.apache.qpid.server.model.VirtualHostNode;
-import org.apache.qpid.server.plugin.MessageStoreFactory;
-import org.apache.qpid.server.store.MessageStore;
-import org.apache.qpid.server.store.MessageStoreProvider;
-
-@ManagedObject( category = false, type = "STANDARD")
-public class StandardVirtualHost extends AbstractVirtualHost<StandardVirtualHost>
-{
-
- public static final String TYPE = "STANDARD";
- MessageStore _messageStore;
-
- private MessageStoreLogSubject _messageStoreLogSubject;
-
- @ManagedObjectFactoryConstructor
- public StandardVirtualHost(final Map<String, Object> attributes, VirtualHostNode<?> virtualHostNode)
- {
- super(attributes, virtualHostNode);
- }
-
- @Override
- public void onValidate()
- {
- super.onValidate();
-
-
- VirtualHostNode<?> virtualHostNode = getParent(VirtualHostNode.class);
- if (!virtualHostNode.isMessageStoreProvider())
- {
- Map<String,Object> attributes = getActualAttributes();
- Map<String, Object> messageStoreSettings = getMessageStoreSettings();
- if (messageStoreSettings == null)
- {
- throw new IllegalArgumentException("Attribute '"+ org.apache.qpid.server.model.VirtualHost.MESSAGE_STORE_SETTINGS + "' is required.");
- }
-
- Object storeType = messageStoreSettings.get(MessageStore.STORE_TYPE);
-
- // need store type and path
- Collection<String> knownTypes = MessageStoreFactory.FACTORY_LOADER.getSupportedTypes();
-
- if (storeType == null)
- {
- throw new IllegalArgumentException("Setting '"+ MessageStore.STORE_TYPE
- +"' is required in attribute " + org.apache.qpid.server.model.VirtualHost.MESSAGE_STORE_SETTINGS + ". Known types are : " + knownTypes);
- }
- else if (!(storeType instanceof String))
- {
- throw new IllegalArgumentException("Setting '"+ MessageStore.STORE_TYPE
- +"' is required and must be of type String. "
- +"Known types are : " + knownTypes);
- }
-
- MessageStoreFactory factory = MessageStoreFactory.FACTORY_LOADER.get((String)storeType);
- if(factory == null)
- {
- throw new IllegalArgumentException("Setting '"+ MessageStore.STORE_TYPE
- +"' has value '" + storeType + "' which is not one of the valid values: "
- + "Known types are : " + knownTypes);
- }
-
- factory.validateAttributes(attributes);
- }
- }
-
- @Override
- protected void initialiseStorage()
- {
- VirtualHostNode<?> virtualHostNode = getParent(VirtualHostNode.class);
- if (virtualHostNode.isMessageStoreProvider())
- {
- _messageStore = ((MessageStoreProvider)virtualHostNode.getConfigurationStore()).getMessageStore();
- }
- else
- {
- Map<String, Object> messageStoreSettings = getMessageStoreSettings();
- String storeType = (String) messageStoreSettings.get(MessageStore.STORE_TYPE);
- _messageStore = MessageStoreFactory.FACTORY_LOADER.get(storeType).createMessageStore();
- }
-
- _messageStoreLogSubject = new MessageStoreLogSubject(getName(), _messageStore.getClass().getSimpleName());
- }
-
- @Override
- public MessageStore getMessageStore()
- {
- return _messageStore;
- }
-
- @Override
- protected MessageStoreLogSubject getMessageStoreLogSubject()
- {
- return _messageStoreLogSubject;
- }
-
-}
diff --git a/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNode.java b/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNode.java
index f91ab44792..7f460aae4f 100644
--- a/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNode.java
+++ b/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNode.java
@@ -42,8 +42,9 @@ import org.apache.qpid.server.plugin.DurableConfigurationStoreFactory;
import org.apache.qpid.server.security.SecurityManager;
import org.apache.qpid.server.store.DurableConfigurationStore;
import org.apache.qpid.server.store.MessageStore;
+import org.apache.qpid.server.store.MessageStoreProvider;
import org.apache.qpid.server.store.VirtualHostStoreUpgraderAndRecoverer;
-import org.apache.qpid.server.virtualhost.StandardVirtualHost;
+import org.apache.qpid.server.virtualhost.ProvidedStoreVirtualHost;
public abstract class AbstractStandardVirtualHostNode<X extends AbstractStandardVirtualHostNode<X>> extends AbstractVirtualHostNode<X>
implements VirtualHostNode<X>
@@ -121,6 +122,8 @@ public abstract class AbstractStandardVirtualHostNode<X extends AbstractStandard
if (host == null)
{
+ // TODO normal case - we should not create VH,
+ // TODO out if box case - if blueprint vh context variable is set, use it to create a VH
if (LOGGER.isDebugEnabled())
{
LOGGER.debug("Creating new virtualhost with name : " + getName());
@@ -128,9 +131,13 @@ public abstract class AbstractStandardVirtualHostNode<X extends AbstractStandard
Map<String, Object> hostAttributes = new HashMap<String, Object>();
hostAttributes.put(VirtualHost.MODEL_VERSION, BrokerModel.MODEL_VERSION);
hostAttributes.put(VirtualHost.NAME, getName());
- hostAttributes.put(VirtualHost.TYPE, StandardVirtualHost.TYPE);
- if (!isMessageStoreProvider())
+ if (getConfigurationStore() instanceof MessageStoreProvider)
{
+ hostAttributes.put(VirtualHost.TYPE, ProvidedStoreVirtualHost.VIRTUAL_HOST_TYPE);
+ }
+ else
+ {
+ hostAttributes.put(VirtualHost.TYPE, "DERBY");
hostAttributes.put(VirtualHost.MESSAGE_STORE_SETTINGS, getDefaultMessageStoreSettings());
}
host = createChild(VirtualHost.class, hostAttributes);
diff --git a/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java b/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java
index d73e4ae87b..49400825c9 100644
--- a/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java
+++ b/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java
@@ -65,9 +65,6 @@ public abstract class AbstractVirtualHostNode<X extends AbstractVirtualHostNode<
private MessageStoreLogSubject _configurationStoreLogSubject;
- @ManagedAttributeField
- private boolean _messageStoreProvider;
-
public AbstractVirtualHostNode(Broker<?> parent, Map<String, Object> attributes)
{
super(Collections.<Class<? extends ConfiguredObject>,ConfiguredObject<?>>singletonMap(Broker.class, parent),
@@ -123,12 +120,6 @@ public abstract class AbstractVirtualHostNode<X extends AbstractVirtualHostNode<
}
@Override
- public boolean isMessageStoreProvider()
- {
- return _messageStoreProvider;
- }
-
- @Override
public VirtualHost<?,?,?> getVirtualHost()
{
Collection<VirtualHost> children = getChildren(VirtualHost.class);
diff --git a/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/VirtualHostCreationTest.java b/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/VirtualHostCreationTest.java
index a38c80cb6b..a8f1e5942b 100644
--- a/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/VirtualHostCreationTest.java
+++ b/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/VirtualHostCreationTest.java
@@ -24,7 +24,6 @@ import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
@@ -45,10 +44,7 @@ import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.model.VirtualHostNode;
import org.apache.qpid.server.security.SecurityManager;
import org.apache.qpid.server.store.DurableConfigurationStore;
-import org.apache.qpid.server.store.MessageStore;
-import org.apache.qpid.server.store.TestMemoryMessageStore;
-import org.apache.qpid.server.virtualhost.AbstractVirtualHost;
-import org.apache.qpid.server.virtualhost.StandardVirtualHost;
+import org.apache.qpid.server.virtualhost.TestMemoryVirtualHost;
public class VirtualHostCreationTest extends TestCase
{
@@ -90,12 +86,10 @@ public class VirtualHostCreationTest extends TestCase
{
Map<String, Object> attributes = new HashMap<String, Object>();
attributes.put(VirtualHost.NAME, getName());
- attributes.put(VirtualHost.TYPE, StandardVirtualHost.TYPE);
+ attributes.put(VirtualHost.TYPE, TestMemoryVirtualHost.VIRTUAL_HOST_TYPE);
attributes.put(VirtualHost.ID, UUID.randomUUID());
- attributes.put(VirtualHost.MESSAGE_STORE_SETTINGS, Collections.singletonMap(MessageStore.STORE_TYPE, TestMemoryMessageStore.TYPE));
-
- VirtualHost<?,?,?> host = new StandardVirtualHost(attributes, _virtualHostNode);
+ VirtualHost<?,?,?> host = new TestMemoryVirtualHost(attributes, _virtualHostNode);
host.open();
assertNotNull("Null is returned", host);
@@ -106,10 +100,8 @@ public class VirtualHostCreationTest extends TestCase
{
Map<String, Object> attributes = new HashMap<String, Object>();
attributes.put(VirtualHost.NAME, getName());
- attributes.put(VirtualHost.TYPE, StandardVirtualHost.TYPE);
- attributes.put(VirtualHost.MESSAGE_STORE_SETTINGS, Collections.singletonMap(MessageStore.STORE_TYPE,
- TestMemoryMessageStore.TYPE));
- String[] mandatoryAttributes = {VirtualHost.NAME, VirtualHost.MESSAGE_STORE_SETTINGS};
+ attributes.put(VirtualHost.TYPE, TestMemoryVirtualHost.VIRTUAL_HOST_TYPE);
+ String[] mandatoryAttributes = {VirtualHost.NAME};
checkMandatoryAttributesAreValidated(mandatoryAttributes, attributes);
}
@@ -123,7 +115,7 @@ public class VirtualHostCreationTest extends TestCase
copy.put(ConfiguredObject.ID, UUID.randomUUID());
try
{
- AbstractVirtualHost<StandardVirtualHost> host = new StandardVirtualHost(copy,_virtualHostNode);
+ VirtualHost<?,?,?> host = new TestMemoryVirtualHost(copy,_virtualHostNode);
host.open();
fail("Cannot create a virtual host without a mandatory attribute " + name);
}
diff --git a/java/broker-core/src/test/java/org/apache/qpid/server/model/VirtualHostTest.java b/java/broker-core/src/test/java/org/apache/qpid/server/model/VirtualHostTest.java
index bddd80c75d..2f3e25dbe9 100644
--- a/java/broker-core/src/test/java/org/apache/qpid/server/model/VirtualHostTest.java
+++ b/java/broker-core/src/test/java/org/apache/qpid/server/model/VirtualHostTest.java
@@ -23,7 +23,6 @@ package org.apache.qpid.server.model;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
@@ -31,10 +30,8 @@ import java.util.UUID;
import org.apache.qpid.server.configuration.updater.CurrentThreadTaskExecutor;
import org.apache.qpid.server.configuration.updater.TaskExecutor;
import org.apache.qpid.server.store.DurableConfigurationStore;
-import org.apache.qpid.server.store.MessageStore;
-import org.apache.qpid.server.store.TestMemoryMessageStore;
import org.apache.qpid.server.util.BrokerTestHelper;
-import org.apache.qpid.server.virtualhost.StandardVirtualHost;
+import org.apache.qpid.server.virtualhost.TestMemoryVirtualHost;
import org.apache.qpid.test.utils.QpidTestCase;
public class VirtualHostTest extends QpidTestCase
@@ -116,8 +113,7 @@ public class VirtualHostTest extends QpidTestCase
{
Map<String, Object> attributes = new HashMap<String, Object>();
attributes.put(VirtualHost.NAME, getName());
- attributes.put(VirtualHost.TYPE, StandardVirtualHost.TYPE);
- attributes.put(VirtualHost.MESSAGE_STORE_SETTINGS, Collections.singletonMap(MessageStore.STORE_TYPE, TestMemoryMessageStore.TYPE));
+ attributes.put(VirtualHost.TYPE, TestMemoryVirtualHost.VIRTUAL_HOST_TYPE);
VirtualHost<?,?,?> host = createHost(attributes);
return host;
@@ -127,7 +123,7 @@ public class VirtualHostTest extends QpidTestCase
{
attributes = new HashMap<String, Object>(attributes);
attributes.put(VirtualHost.ID, UUID.randomUUID());
- StandardVirtualHost host= new StandardVirtualHost(attributes, _virtualHostNode);
+ TestMemoryVirtualHost host= new TestMemoryVirtualHost(attributes, _virtualHostNode);
host.create();
return host;
}
diff --git a/java/broker-core/src/test/java/org/apache/qpid/server/store/MessageCounter.java b/java/broker-core/src/test/java/org/apache/qpid/server/store/MessageCounter.java
new file mode 100644
index 0000000000..87431c7eae
--- /dev/null
+++ b/java/broker-core/src/test/java/org/apache/qpid/server/store/MessageCounter.java
@@ -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.store;
+
+import org.apache.qpid.server.store.handler.MessageHandler;
+
+public class MessageCounter implements MessageHandler
+{
+
+ private int _count;
+
+
+ @Override
+ public boolean handle(StoredMessage<?> storedMessage)
+ {
+ _count++;
+ return true;
+ }
+
+ public int getCount()
+ {
+ return _count;
+ }
+
+ public void reset()
+ {
+ _count = 0;
+ }
+}
diff --git a/java/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java b/java/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java
index ab6a7d5e71..317d51e70a 100644
--- a/java/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java
+++ b/java/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java
@@ -57,7 +57,7 @@ import org.apache.qpid.server.store.MessageStore;
import org.apache.qpid.server.store.TestMemoryMessageStore;
import org.apache.qpid.server.virtualhost.AbstractVirtualHost;
import org.apache.qpid.server.virtualhost.QueueExistsException;
-import org.apache.qpid.server.virtualhost.StandardVirtualHost;
+import org.apache.qpid.server.virtualhost.TestMemoryVirtualHost;
import org.apache.qpid.server.virtualhost.VirtualHostImpl;
public class BrokerTestHelper
@@ -137,7 +137,7 @@ public class BrokerTestHelper
public static VirtualHostImpl<?,?,?> createVirtualHost(String name) throws Exception
{
Map<String,Object> attributes = new HashMap<String, Object>();
- attributes.put(org.apache.qpid.server.model.VirtualHost.TYPE, StandardVirtualHost.TYPE);
+ attributes.put(org.apache.qpid.server.model.VirtualHost.TYPE, TestMemoryVirtualHost.VIRTUAL_HOST_TYPE);
Map<String, Object> messageStoreSettings = new HashMap<String, Object>();
messageStoreSettings.put(MessageStore.STORE_TYPE, TestMemoryMessageStore.TYPE);
diff --git a/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/TestMemoryVirtualHost.java b/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/TestMemoryVirtualHost.java
new file mode 100644
index 0000000000..472e7a0820
--- /dev/null
+++ b/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/TestMemoryVirtualHost.java
@@ -0,0 +1,67 @@
+/*
+ *
+ * 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.virtualhost;
+
+import java.util.Map;
+
+import org.apache.qpid.server.logging.subjects.MessageStoreLogSubject;
+import org.apache.qpid.server.model.ManagedObject;
+import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
+import org.apache.qpid.server.model.VirtualHostNode;
+import org.apache.qpid.server.store.MessageStore;
+import org.apache.qpid.server.store.TestMemoryMessageStore;
+
+@ManagedObject(category = false, type = TestMemoryVirtualHost.VIRTUAL_HOST_TYPE)
+public class TestMemoryVirtualHost extends AbstractVirtualHost<TestMemoryVirtualHost>
+{
+ public static final String VIRTUAL_HOST_TYPE = "TestMemory";
+ private MessageStore _messageStore;
+ private MessageStoreLogSubject _messageStoreLogSubject;
+
+ @ManagedObjectFactoryConstructor
+ public TestMemoryVirtualHost(final Map<String, Object> attributes,
+ final VirtualHostNode<?> virtualHostNode)
+ {
+ super(attributes, virtualHostNode);
+ }
+
+
+ @Override
+ protected void initialiseStorage()
+ {
+ _messageStore = new TestMemoryMessageStore();
+
+ _messageStoreLogSubject = new MessageStoreLogSubject(getName(), _messageStore.getClass().getSimpleName());
+
+ }
+
+ @Override
+ protected MessageStoreLogSubject getMessageStoreLogSubject()
+ {
+ return _messageStoreLogSubject;
+ }
+
+ @Override
+ public MessageStore getMessageStore()
+ {
+ return _messageStore;
+ }
+}
diff --git a/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/VirtualHostQueueCreationTest.java b/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/VirtualHostQueueCreationTest.java
index 4b088d6736..a360ba3571 100644
--- a/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/VirtualHostQueueCreationTest.java
+++ b/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/VirtualHostQueueCreationTest.java
@@ -25,7 +25,6 @@ import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
@@ -53,8 +52,6 @@ import org.apache.qpid.server.queue.StandardQueueImpl;
import org.apache.qpid.server.security.SecurityManager;
import org.apache.qpid.server.security.access.Operation;
import org.apache.qpid.server.store.DurableConfigurationStore;
-import org.apache.qpid.server.store.MessageStore;
-import org.apache.qpid.server.store.TestMemoryMessageStore;
import org.apache.qpid.test.utils.QpidTestCase;
public class VirtualHostQueueCreationTest extends QpidTestCase
@@ -114,13 +111,11 @@ public class VirtualHostQueueCreationTest extends QpidTestCase
{
Map<String, Object> attributes = new HashMap<String, Object>();
attributes.put(VirtualHost.NAME, getName());
- attributes.put(VirtualHost.TYPE, StandardVirtualHost.TYPE);
- attributes.put(VirtualHost.MESSAGE_STORE_SETTINGS, Collections.singletonMap(MessageStore.STORE_TYPE,
- TestMemoryMessageStore.TYPE));
+ attributes.put(VirtualHost.TYPE, TestMemoryVirtualHost.VIRTUAL_HOST_TYPE);
attributes = new HashMap<String, Object>(attributes);
attributes.put(VirtualHost.ID, UUID.randomUUID());
- StandardVirtualHost host = new StandardVirtualHost(attributes, _virtualHostNode);
+ TestMemoryVirtualHost host = new TestMemoryVirtualHost(attributes, _virtualHostNode);
host.create();
host.start();
return host;
diff --git a/java/broker-core/src/test/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNodeTest.java b/java/broker-core/src/test/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNodeTest.java
index c4c9fefef9..220e9e94de 100644
--- a/java/broker-core/src/test/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNodeTest.java
+++ b/java/broker-core/src/test/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNodeTest.java
@@ -46,7 +46,7 @@ import org.apache.qpid.server.store.StoreException;
import org.apache.qpid.server.store.TestMemoryMessageStore;
import org.apache.qpid.server.store.handler.ConfiguredObjectRecordHandler;
import org.apache.qpid.server.util.BrokerTestHelper;
-import org.apache.qpid.server.virtualhost.StandardVirtualHost;
+import org.apache.qpid.server.virtualhost.TestMemoryVirtualHost;
import org.apache.qpid.test.utils.QpidTestCase;
public class AbstractStandardVirtualHostNodeTest extends QpidTestCase
@@ -114,7 +114,6 @@ public class AbstractStandardVirtualHostNodeTest extends QpidTestCase
VirtualHost<?, ?, ?> virtualHost = node.getVirtualHost();
assertNotNull("Virtual host was not recovered", virtualHost);
- assertTrue("Unexpected virtual host type", virtualHost instanceof StandardVirtualHost);
assertEquals("Unexpected virtual host name", TEST_VIRTUAL_HOST_NAME, virtualHost.getName());
assertEquals("Unexpected virtual host state", State.ACTIVE, virtualHost.getState());
assertEquals("Unexpected virtual host id", virtualHostId, virtualHost.getId());
@@ -143,8 +142,7 @@ public class AbstractStandardVirtualHostNodeTest extends QpidTestCase
node.start();
VirtualHost<?, ?, ?> virtualHost = node.getVirtualHost();
- assertNotNull("Virtual host was not recovered", virtualHost);
- assertTrue("Unexpected virtual host type", virtualHost instanceof StandardVirtualHost);
+ assertNotNull("Virtual host was not created", virtualHost);
// Virtualhost name taken from VHN and ID is random.
assertEquals("Unexpected virtual host name", TEST_VIRTUAL_HOST_NODE_NAME, virtualHost.getName());
@@ -156,7 +154,7 @@ public class AbstractStandardVirtualHostNodeTest extends QpidTestCase
{
Map<String, Object> virtualHostAttributes = new HashMap<String, Object>();
virtualHostAttributes.put(VirtualHost.NAME, TEST_VIRTUAL_HOST_NAME);
- virtualHostAttributes.put(VirtualHost.TYPE, StandardVirtualHost.TYPE);
+ virtualHostAttributes.put(VirtualHost.TYPE, TestMemoryVirtualHost.VIRTUAL_HOST_TYPE);
virtualHostAttributes.put(VirtualHost.MODEL_VERSION, BrokerModel.MODEL_VERSION);
Map<String,Object> messageStoreSettings = new HashMap<String, Object>();
virtualHostAttributes.put(VirtualHost.MESSAGE_STORE_SETTINGS, messageStoreSettings);