diff options
author | Keith Wall <kwall@apache.org> | 2014-06-06 15:44:20 +0000 |
---|---|---|
committer | Keith Wall <kwall@apache.org> | 2014-06-06 15:44:20 +0000 |
commit | 8de53f5c5de353635b6bd435df993df83db7357a (patch) | |
tree | 727bd69cee53c3d698e3456911118b4c5980df1a /java/broker-core/src | |
parent | 2df814dae9f4b112a7d36ee2f94f1a73a711ac15 (diff) | |
download | qpid-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')
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); |