From 8fc924683158b005c70d49d4b97d16fde2914bde Mon Sep 17 00:00:00 2001 From: Keith Wall Date: Thu, 13 Mar 2014 10:41:24 +0000 Subject: QPID-5624: Remove MessageStoreCreator and finish some virtual host refactoring git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/java-broker-bdb-ha2@1577097 13f79535-47bb-0310-9956-ffa450edef68 --- .../store/berkeleydb/BDBHAVirtualHostFactory.java | 12 +--- .../store/berkeleydb/BDBMessageStoreFactory.java | 1 + .../store/berkeleydb/MessageStoreCreatorTest.java | 35 ---------- .../startup/PreferencesProviderRecoverer.java | 2 +- .../qpid/server/model/adapter/BrokerAdapter.java | 8 +-- .../qpid/server/plugin/MessageStoreFactory.java | 3 + .../qpid/server/plugin/PluggableFactoryLoader.java | 3 +- .../server/plugin/PreferencesProviderFactory.java | 2 +- .../qpid/server/plugin/VirtualHostFactory.java | 4 +- .../manager/AbstractAuthenticationManager.java | 2 +- .../qpid/server/store/MessageStoreCreator.java | 79 ---------------------- .../server/virtualhost/StandardVirtualHost.java | 8 +-- .../virtualhost/StandardVirtualHostFactory.java | 50 +++++--------- .../startup/VirtualHostRecovererTest.java | 4 +- .../store/TestMemoryMessageStoreFactory.java | 1 + .../store/derby/DerbyMessageStoreFactory.java | 1 + .../server/store/jdbc/JDBCMessageStoreFactory.java | 1 + .../server/store/MemoryMessageStoreFactory.java | 1 + .../apache/qpid/server/store/SlowMessageStore.java | 55 ++++----------- .../apache/qpid/systest/rest/BrokerRestTest.java | 4 +- .../apache/qpid/test/utils/QpidBrokerTestCase.java | 12 ---- 21 files changed, 60 insertions(+), 228 deletions(-) delete mode 100644 qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/MessageStoreCreatorTest.java delete mode 100644 qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStoreCreator.java (limited to 'qpid/java') diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostFactory.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostFactory.java index f5d930dc5a..b2ec96f9f8 100644 --- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostFactory.java +++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostFactory.java @@ -19,9 +19,8 @@ package org.apache.qpid.server.store.berkeleydb;/* * */ -import java.util.LinkedHashMap; import java.util.Map; -import org.apache.qpid.server.model.adapter.VirtualHostAdapter; + import org.apache.qpid.server.plugin.VirtualHostFactory; import org.apache.qpid.server.stats.StatisticsGatherer; import org.apache.qpid.server.virtualhost.VirtualHost; @@ -70,13 +69,4 @@ public class BDBHAVirtualHostFactory implements VirtualHostFactory } } - @Override - public Map createVirtualHostConfiguration(VirtualHostAdapter virtualHostAdapter) - { - LinkedHashMap convertedMap = new LinkedHashMap(); - convertedMap.put("store.environment-path", virtualHostAdapter.getAttribute(org.apache.qpid.server.model.VirtualHost.STORE_PATH)); - - return convertedMap; - } - } diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreFactory.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreFactory.java index 04efc77b8b..8f2086a25c 100644 --- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreFactory.java +++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreFactory.java @@ -21,6 +21,7 @@ package org.apache.qpid.server.store.berkeleydb; import java.util.Map; + import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.plugin.DurableConfigurationStoreFactory; import org.apache.qpid.server.plugin.MessageStoreFactory; diff --git a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/MessageStoreCreatorTest.java b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/MessageStoreCreatorTest.java deleted file mode 100644 index 385681446a..0000000000 --- a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/MessageStoreCreatorTest.java +++ /dev/null @@ -1,35 +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.store.berkeleydb; - -import org.apache.qpid.server.store.MessageStore; -import org.apache.qpid.server.store.MessageStoreCreator; -import org.apache.qpid.test.utils.QpidTestCase; - -public class MessageStoreCreatorTest extends QpidTestCase -{ - public void testMessageStoreCreator() - { - MessageStoreCreator messageStoreCreator = new MessageStoreCreator(); - String type = new BDBMessageStoreFactory().getType(); - MessageStore store = messageStoreCreator.createMessageStore(type); - assertNotNull("Store of type " + type + " is not created", store); - }} diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/PreferencesProviderRecoverer.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/PreferencesProviderRecoverer.java index db3f968435..3953f6c91d 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/PreferencesProviderRecoverer.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/PreferencesProviderRecoverer.java @@ -41,7 +41,7 @@ public class PreferencesProviderRecoverer implements ConfiguredObjectRecoverer

attributes = entry.getAttributes(); String type = MapValueConverter.getStringAttribute(PreferencesProvider.TYPE, attributes); - PreferencesProviderFactory factory = PreferencesProviderFactory.FACTORIES.get(type); + PreferencesProviderFactory factory = PreferencesProviderFactory.FACTORY_LOADER.get(type); return factory.createInstance(entry.getId(), attributes, authenticationProvider); } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java index 02e37d6733..7fcdcfe61c 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java @@ -43,6 +43,7 @@ import org.apache.qpid.server.logging.EventLogger; import org.apache.qpid.server.logging.LogRecorder; import org.apache.qpid.server.logging.messages.BrokerMessages; import org.apache.qpid.server.model.*; +import org.apache.qpid.server.plugin.MessageStoreFactory; import org.apache.qpid.server.plugin.PreferencesProviderFactory; import org.apache.qpid.server.plugin.VirtualHostFactory; import org.apache.qpid.server.security.SecurityManager; @@ -50,7 +51,6 @@ import org.apache.qpid.server.security.SubjectCreator; import org.apache.qpid.server.security.access.Operation; import org.apache.qpid.server.security.auth.manager.SimpleAuthenticationManager; import org.apache.qpid.server.stats.StatisticsGatherer; -import org.apache.qpid.server.store.MessageStoreCreator; import org.apache.qpid.server.util.MapValueConverter; import org.apache.qpid.server.virtualhost.VirtualHostRegistry; import org.apache.qpid.util.SystemUtils; @@ -197,7 +197,7 @@ public class BrokerAdapter> extends AbstractConfiguredObject _portFactory = portFactory; _brokerOptions = brokerOptions; _securityManager = new SecurityManager(this, _brokerOptions.isManagementMode()); - _supportedVirtualHostStoreTypes = new MessageStoreCreator().getStoreTypes(); + _supportedVirtualHostStoreTypes = MessageStoreFactory.FACTORY_LOADER.getSupportedTypes(); _supportedBrokerStoreTypes = new BrokerConfigurationStoreCreator().getStoreTypes(); _brokerStore = brokerStore; if (_brokerOptions.isManagementMode()) @@ -262,7 +262,7 @@ public class BrokerAdapter> extends AbstractConfiguredObject @Override public Collection getSupportedPreferencesProviderTypes() { - return PreferencesProviderFactory.FACTORIES.getDescriptiveTypes(); + return PreferencesProviderFactory.FACTORY_LOADER.getSupportedTypes(); } @Override @@ -969,7 +969,7 @@ public class BrokerAdapter> extends AbstractConfiguredObject } else if (SUPPORTED_PREFERENCES_PROVIDER_TYPES.equals(name)) { - return PreferencesProviderFactory.FACTORIES.getDescriptiveTypes(); + return PreferencesProviderFactory.FACTORY_LOADER.getSupportedTypes(); } else if (MODEL_VERSION.equals(name)) { diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/MessageStoreFactory.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/MessageStoreFactory.java index 779dd06e9e..bae6738f23 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/MessageStoreFactory.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/MessageStoreFactory.java @@ -21,10 +21,13 @@ package org.apache.qpid.server.plugin; import java.util.Map; + import org.apache.qpid.server.store.MessageStore; public interface MessageStoreFactory extends Pluggable { + PluggableFactoryLoader FACTORY_LOADER = new PluggableFactoryLoader(MessageStoreFactory.class); + String getType(); MessageStore createMessageStore(); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/PluggableFactoryLoader.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/PluggableFactoryLoader.java index 7a8b7c0c65..40db520ff1 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/PluggableFactoryLoader.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/PluggableFactoryLoader.java @@ -19,7 +19,6 @@ package org.apache.qpid.server.plugin; -import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -56,7 +55,7 @@ public class PluggableFactoryLoader return _factoriesMap.get(type); } - public Collection getDescriptiveTypes() + public Set getSupportedTypes() { return _types; } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/PreferencesProviderFactory.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/PreferencesProviderFactory.java index 05de1950f7..9665dfffbb 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/PreferencesProviderFactory.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/PreferencesProviderFactory.java @@ -26,7 +26,7 @@ import org.apache.qpid.server.model.PreferencesProvider; public interface PreferencesProviderFactory extends Pluggable { - PluggableFactoryLoader FACTORIES = new PluggableFactoryLoader(PreferencesProviderFactory.class); + PluggableFactoryLoader FACTORY_LOADER = new PluggableFactoryLoader(PreferencesProviderFactory.class); PreferencesProvider createInstance(UUID id, Map attributes, AuthenticationProvider authenticationProvider); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/VirtualHostFactory.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/VirtualHostFactory.java index 8c5a39797a..80ad347929 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/VirtualHostFactory.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/VirtualHostFactory.java @@ -25,7 +25,7 @@ import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Map; -import org.apache.qpid.server.model.adapter.VirtualHostAdapter; + import org.apache.qpid.server.security.SecurityManager; import org.apache.qpid.server.stats.StatisticsGatherer; import org.apache.qpid.server.virtualhost.VirtualHost; @@ -42,8 +42,6 @@ public interface VirtualHostFactory extends Pluggable void validateAttributes(Map attributes); - Map createVirtualHostConfiguration(VirtualHostAdapter virtualHostAdapter); - static final class TYPES { private TYPES() diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/AbstractAuthenticationManager.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/AbstractAuthenticationManager.java index 7c521c1f8a..17c9a19e50 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/AbstractAuthenticationManager.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/AbstractAuthenticationManager.java @@ -135,7 +135,7 @@ public abstract class AbstractAuthenticationManager _factories = new HashMap(); - - public MessageStoreCreator() - { - QpidServiceLoader qpidServiceLoader = new QpidServiceLoader(); - Iterable factories = qpidServiceLoader.atLeastOneInstanceOf(MessageStoreFactory.class); - for (MessageStoreFactory messageStoreFactory : factories) - { - String type = messageStoreFactory.getType(); - MessageStoreFactory factory = _factories.put(type.toLowerCase(), messageStoreFactory); - if (factory != null) - { - throw new IllegalStateException("MessageStoreFactory with type name '" + type - + "' is already registered using class '" + factory.getClass().getName() + "', can not register class '" - + messageStoreFactory.getClass().getName() + "'"); - } - } - } - - public boolean isValidType(String storeType) - { - return _factories.containsKey(storeType.toLowerCase()); - } - - - public MessageStore createMessageStore(String storeType) - { - MessageStoreFactory factory = _factories.get(storeType.toLowerCase()); - if (factory == null) - { - throw new IllegalConfigurationException("Unknown store type: " + storeType - + ". Supported types: " + _factories.keySet()); - } - return factory.createMessageStore(); - } - - public Collection getFactories() - { - return Collections.unmodifiableCollection(_factories.values()); - } - - public Collection getStoreTypes() - { - return Collections.unmodifiableCollection(_factories.keySet()); - } -} diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHost.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHost.java index f1bfb39eb8..da2ef47670 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHost.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHost.java @@ -19,14 +19,15 @@ package org.apache.qpid.server.virtualhost;/* * */ +import org.apache.qpid.server.configuration.IllegalConfigurationException; import org.apache.qpid.server.logging.subjects.MessageStoreLogSubject; import org.apache.qpid.server.model.VirtualHost; +import org.apache.qpid.server.plugin.MessageStoreFactory; import org.apache.qpid.server.stats.StatisticsGatherer; import org.apache.qpid.server.store.DurableConfigurationRecoverer; import org.apache.qpid.server.store.DurableConfigurationStore; import org.apache.qpid.server.store.DurableConfigurationStoreCreator; import org.apache.qpid.server.store.MessageStore; -import org.apache.qpid.server.store.MessageStoreCreator; import org.apache.qpid.server.store.OperationalLoggingListener; public class StandardVirtualHost extends AbstractVirtualHost @@ -47,9 +48,8 @@ public class StandardVirtualHost extends AbstractVirtualHost private MessageStore initialiseMessageStore(VirtualHost virtualHost) { - final Object storeTypeAttr = virtualHost.getAttribute(VirtualHost.STORE_TYPE); - String storeType = storeTypeAttr == null ? null : String.valueOf(storeTypeAttr); - MessageStore messageStore = new MessageStoreCreator().createMessageStore(storeType); + final String storeTypeAttr = (String) virtualHost.getAttribute(VirtualHost.STORE_TYPE); + MessageStore messageStore = MessageStoreFactory.FACTORY_LOADER.get(storeTypeAttr).createMessageStore(); MessageStoreLogSubject storeLogSubject = new MessageStoreLogSubject(getName(), messageStore.getClass().getSimpleName()); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHostFactory.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHostFactory.java index 5ae3623baa..9cab87e3b4 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHostFactory.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHostFactory.java @@ -19,13 +19,12 @@ package org.apache.qpid.server.virtualhost;/* * */ -import java.util.LinkedHashMap; +import java.util.Collection; import java.util.Map; -import org.apache.qpid.server.model.adapter.VirtualHostAdapter; + import org.apache.qpid.server.plugin.MessageStoreFactory; import org.apache.qpid.server.plugin.VirtualHostFactory; import org.apache.qpid.server.stats.StatisticsGatherer; -import org.apache.qpid.server.store.MessageStoreCreator; public class StandardVirtualHostFactory implements VirtualHostFactory { @@ -48,48 +47,35 @@ public class StandardVirtualHostFactory implements VirtualHostFactory } - public static final String STORE_TYPE_ATTRIBUTE = org.apache.qpid.server.model.VirtualHost.STORE_TYPE; - public static final String STORE_PATH_ATTRIBUTE = org.apache.qpid.server.model.VirtualHost.STORE_PATH; - @Override public void validateAttributes(Map attributes) { // need store type and path - Object storeType = attributes.get(STORE_TYPE_ATTRIBUTE); - if(!(storeType instanceof String)) - { + Collection knownTypes = MessageStoreFactory.FACTORY_LOADER.getSupportedTypes(); - throw new IllegalArgumentException("Attribute '"+ STORE_TYPE_ATTRIBUTE - +"' is required and must be of type String."); + Object storeType = attributes.get(org.apache.qpid.server.model.VirtualHost.STORE_TYPE); + if (storeType == null) + { + throw new IllegalArgumentException("Attribute '"+ org.apache.qpid.server.model.VirtualHost.STORE_TYPE + +"' is required. Known types are : " + knownTypes); } - final MessageStoreCreator storeCreator = new MessageStoreCreator(); - if(!storeCreator.isValidType((String)storeType)) + else if (!(storeType instanceof String)) { - throw new IllegalArgumentException("Attribute '"+ STORE_TYPE_ATTRIBUTE - +"' has value '"+storeType+"' which is not one of the valid values: " - + storeCreator.getStoreTypes() + "."); - + throw new IllegalArgumentException("Attribute '"+ org.apache.qpid.server.model.VirtualHost.STORE_TYPE + +"' is required and must be of type String. " + +"Known types are : " + knownTypes); } - for(MessageStoreFactory factory : storeCreator.getFactories()) + MessageStoreFactory factory = MessageStoreFactory.FACTORY_LOADER.get((String)storeType); + if(factory == null) { - if(factory.getType().equalsIgnoreCase((String)storeType)) - { - factory.validateAttributes(attributes); - } + throw new IllegalArgumentException("Attribute '"+ org.apache.qpid.server.model.VirtualHost.STORE_TYPE + +"' has value '" + storeType + "' which is not one of the valid values: " + + "Known types are : " + knownTypes); } - } + factory.validateAttributes(attributes); - @Override - public Map createVirtualHostConfiguration(VirtualHostAdapter virtualHostAdapter) - { - Map convertedMap = new LinkedHashMap(); - convertedMap.put("store.type", virtualHostAdapter.getAttribute(org.apache.qpid.server.model.VirtualHost.STORE_TYPE)); - convertedMap.put("store.environment-path", virtualHostAdapter.getAttribute(org.apache.qpid.server.model.VirtualHost.STORE_PATH)); - - return convertedMap; } - } diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/VirtualHostRecovererTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/VirtualHostRecovererTest.java index 0cf89842a1..80f935a55e 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/VirtualHostRecovererTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/VirtualHostRecovererTest.java @@ -34,6 +34,8 @@ import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.security.SecurityManager; import org.apache.qpid.server.stats.StatisticsGatherer; +import org.apache.qpid.server.store.TestMemoryMessageStore; +import org.apache.qpid.server.store.TestableMemoryMessageStore; import org.apache.qpid.server.virtualhost.StandardVirtualHostFactory; public class VirtualHostRecovererTest extends TestCase @@ -53,7 +55,7 @@ public class VirtualHostRecovererTest extends TestCase attributes.put(VirtualHost.NAME, getName()); attributes.put(VirtualHost.TYPE, StandardVirtualHostFactory.TYPE); - attributes.put(VirtualHost.STORE_TYPE, "TESTMEMORY"); + attributes.put(VirtualHost.STORE_TYPE, TestMemoryMessageStore.TYPE); when(entry.getAttributes()).thenReturn(attributes); VirtualHost host = recoverer.create(null, entry, parent); diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/TestMemoryMessageStoreFactory.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/TestMemoryMessageStoreFactory.java index e2fb96bfef..73e14389d5 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/TestMemoryMessageStoreFactory.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/TestMemoryMessageStoreFactory.java @@ -22,6 +22,7 @@ package org.apache.qpid.server.store; import java.util.Map; + import org.apache.qpid.server.plugin.MessageStoreFactory; public class TestMemoryMessageStoreFactory implements MessageStoreFactory diff --git a/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStoreFactory.java b/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStoreFactory.java index 8a3c5683ac..d64420a808 100644 --- a/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStoreFactory.java +++ b/qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStoreFactory.java @@ -21,6 +21,7 @@ package org.apache.qpid.server.store.derby; import java.util.Map; + import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.plugin.DurableConfigurationStoreFactory; import org.apache.qpid.server.plugin.MessageStoreFactory; diff --git a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreFactory.java b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreFactory.java index c0ece88692..d22fc21b74 100644 --- a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreFactory.java +++ b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreFactory.java @@ -21,6 +21,7 @@ package org.apache.qpid.server.store.jdbc; import java.util.Map; + import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.plugin.DurableConfigurationStoreFactory; import org.apache.qpid.server.plugin.MessageStoreFactory; diff --git a/qpid/java/broker-plugins/memory-store/src/main/java/org/apache/qpid/server/store/MemoryMessageStoreFactory.java b/qpid/java/broker-plugins/memory-store/src/main/java/org/apache/qpid/server/store/MemoryMessageStoreFactory.java index a715073b7e..db4cae1258 100644 --- a/qpid/java/broker-plugins/memory-store/src/main/java/org/apache/qpid/server/store/MemoryMessageStoreFactory.java +++ b/qpid/java/broker-plugins/memory-store/src/main/java/org/apache/qpid/server/store/MemoryMessageStoreFactory.java @@ -21,6 +21,7 @@ package org.apache.qpid.server.store; import java.util.Map; + import org.apache.qpid.server.plugin.MessageStoreFactory; public class MemoryMessageStoreFactory implements MessageStoreFactory diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/server/store/SlowMessageStore.java b/qpid/java/systests/src/main/java/org/apache/qpid/server/store/SlowMessageStore.java index 8d375508bc..6b03151f29 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/server/store/SlowMessageStore.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/server/store/SlowMessageStore.java @@ -28,7 +28,7 @@ import org.apache.log4j.Logger; import org.apache.qpid.server.message.EnqueueableMessage; import org.apache.qpid.server.message.ServerMessage; import org.apache.qpid.server.model.VirtualHost; -import org.apache.qpid.server.util.ServerScopedRuntimeException; +import org.apache.qpid.server.plugin.MessageStoreFactory; import java.nio.ByteBuffer; import java.util.HashMap; @@ -36,12 +36,11 @@ import java.util.HashMap; public class SlowMessageStore implements MessageStore, DurableConfigurationStore { private static final Logger _logger = Logger.getLogger(SlowMessageStore.class); - private static final String DELAYS = "delays"; private HashMap _preDelays = new HashMap(); private HashMap _postDelays = new HashMap(); private long _defaultDelay = 0L; - private MessageStore _realStore = new MessageStoreCreator().createMessageStore("Memory"); - private DurableConfigurationStore _durableConfigurationStore = (DurableConfigurationStore) _realStore; + private MessageStore _realStore = null; + private DurableConfigurationStore _durableConfigurationStore = null; private static final String PRE = "pre"; private static final String POST = "post"; public static final String TYPE = "SLOW"; @@ -55,59 +54,35 @@ public class SlowMessageStore implements MessageStore, DurableConfigurationStore Object delaysAttr = virtualHost.getAttribute("slowMessageStoreDelays"); - Map delays = (delaysAttr instanceof Map) ? (Map) delaysAttr : Collections.emptyMap(); + @SuppressWarnings({ "unchecked" }) + Map delays = (delaysAttr instanceof Map) ? (Map) delaysAttr : Collections.emptyMap(); configureDelays(delays); final Object realStoreAttr = virtualHost.getAttribute("realStore"); - String messageStoreClass = realStoreAttr == null ? null : realStoreAttr.toString(); + String messageStoreType = realStoreAttr == null ? MemoryMessageStore.TYPE : realStoreAttr.toString(); + if (delays.containsKey(DEFAULT_DELAY)) { _defaultDelay = Long.parseLong(String.valueOf(delays.get(DEFAULT_DELAY))); } - if (messageStoreClass != null) + _realStore = MessageStoreFactory.FACTORY_LOADER.get(messageStoreType).createMessageStore(); + + if (_realStore instanceof DurableConfigurationStore) { - try - { - Class clazz = Class.forName(messageStoreClass); - - Object o = clazz.newInstance(); - - if (!(o instanceof MessageStore)) - { - throw new ClassCastException("Message store class must implement " + MessageStore.class + ". Class " + clazz + - " does not."); - } - _realStore = (MessageStore) o; - if(o instanceof DurableConfigurationStore) - { - _durableConfigurationStore = (DurableConfigurationStore)o; - } - } - catch (ClassNotFoundException e) - { - throw new ServerScopedRuntimeException("Unable to find message store class", e); - } - catch (InstantiationException e) - { - throw new ServerScopedRuntimeException("Unable to initialise message store class", e); - } - catch (IllegalAccessException e) - { - throw new ServerScopedRuntimeException("Unable to access message store class", e); - } + _durableConfigurationStore = (DurableConfigurationStore)_realStore; + _durableConfigurationStore.configureConfigStore(virtualHost, recoveryHandler); } - _durableConfigurationStore.configureConfigStore(virtualHost, recoveryHandler); } - private void configureDelays(Map config) + private void configureDelays(Map delays) { - for(Map.Entry entry : config.entrySet()) + for(Map.Entry entry : delays.entrySet()) { - String key = String.valueOf(entry.getKey()); + String key = entry.getKey(); if (key.startsWith(PRE)) { _preDelays.put(key.substring(PRE.length()), Long.parseLong(String.valueOf(entry.getValue()))); diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java index 1ccd31a83a..473cf2beca 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java @@ -41,7 +41,7 @@ import org.apache.qpid.server.model.Port; import org.apache.qpid.server.model.State; import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.model.adapter.AbstractConfiguredObject; -import org.apache.qpid.server.store.MessageStoreCreator; +import org.apache.qpid.server.plugin.MessageStoreFactory; import org.apache.qpid.test.client.UnroutableMessageTestExceptionListener; import org.apache.qpid.test.utils.TestBrokerConfiguration; import org.apache.qpid.util.SystemUtils; @@ -271,7 +271,7 @@ public class BrokerRestTest extends QpidRestTestCase @SuppressWarnings("unchecked") Collection supportedVirtualHostStoreTypes = (Collection)brokerDetails.get(Broker.SUPPORTED_VIRTUALHOST_STORE_TYPES); - Collection expectedSupportedVirtualHostStoreTypes = new MessageStoreCreator().getStoreTypes(); + Collection expectedSupportedVirtualHostStoreTypes = MessageStoreFactory.FACTORY_LOADER.getSupportedTypes(); assertEquals("Unexpected supported virtual host store types", new HashSet(expectedSupportedVirtualHostStoreTypes), new HashSet(supportedVirtualHostStoreTypes)); } diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java index 00d34dcd7d..ace34506bd 100755 --- a/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java @@ -22,7 +22,6 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintStream; import java.util.ArrayList; -import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -64,9 +63,7 @@ import org.apache.qpid.server.BrokerOptions; import org.apache.qpid.server.configuration.BrokerProperties; import org.apache.qpid.server.model.Port; import org.apache.qpid.server.model.VirtualHost; -import org.apache.qpid.server.plugin.MessageStoreFactory; import org.apache.qpid.server.protocol.AmqpProtocolVersion; -import org.apache.qpid.server.store.MessageStoreCreator; import org.apache.qpid.server.virtualhost.StandardVirtualHostFactory; import org.apache.qpid.url.URLSyntaxException; import org.apache.qpid.util.FileUtils; @@ -105,8 +102,6 @@ public class QpidBrokerTestCase extends QpidTestCase private static final String DEFAULT_INITIAL_CONTEXT = "org.apache.qpid.jndi.PropertiesFileInitialContextFactory"; - private static Map supportedStoresClassToTypeMapping = new HashMap(); - static { String initialContext = System.getProperty(Context.INITIAL_CONTEXT_FACTORY); @@ -115,13 +110,6 @@ public class QpidBrokerTestCase extends QpidTestCase { System.setProperty(Context.INITIAL_CONTEXT_FACTORY, DEFAULT_INITIAL_CONTEXT); } - - MessageStoreCreator messageStoreCreator = new MessageStoreCreator(); - Collection factories = messageStoreCreator.getFactories(); - for (MessageStoreFactory messageStoreFactory : factories) - { - supportedStoresClassToTypeMapping.put(messageStoreFactory.createMessageStore().getClass().getName(), messageStoreFactory.getType()); - } } // system properties -- cgit v1.2.1