diff options
| author | Keith Wall <kwall@apache.org> | 2014-03-13 10:41:24 +0000 |
|---|---|---|
| committer | Keith Wall <kwall@apache.org> | 2014-03-13 10:41:24 +0000 |
| commit | 8fc924683158b005c70d49d4b97d16fde2914bde (patch) | |
| tree | 62585229b5eb56f5f319d77778e3b27d0a173e6a /qpid/java | |
| parent | f10abece85c408a2185afe8f3075f0ed82451aeb (diff) | |
| download | qpid-python-8fc924683158b005c70d49d4b97d16fde2914bde.tar.gz | |
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
Diffstat (limited to 'qpid/java')
21 files changed, 60 insertions, 228 deletions
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<String, Object> createVirtualHostConfiguration(VirtualHostAdapter virtualHostAdapter) - { - LinkedHashMap<String,Object> convertedMap = new LinkedHashMap<String, Object>(); - convertedMap.put("store.environment-path", virtualHostAdapter.getAttribute(org.apache.qpid.server.model.VirtualHost.STORE_PATH)); - - return convertedMap; - } - } 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<P AuthenticationProvider authenticationProvider = RecovererHelper.verifyOnlyParentIsOfType(AuthenticationProvider.class, parents); Map<String, Object> 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<X extends Broker<X>> 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<X extends Broker<X>> extends AbstractConfiguredObject @Override public Collection<String> getSupportedPreferencesProviderTypes() { - return PreferencesProviderFactory.FACTORIES.getDescriptiveTypes(); + return PreferencesProviderFactory.FACTORY_LOADER.getSupportedTypes(); } @Override @@ -969,7 +969,7 @@ public class BrokerAdapter<X extends Broker<X>> 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<MessageStoreFactory> FACTORY_LOADER = new PluggableFactoryLoader<MessageStoreFactory>(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<T extends Pluggable> return _factoriesMap.get(type); } - public Collection<String> getDescriptiveTypes() + public Set<String> 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<PreferencesProviderFactory> FACTORIES = new PluggableFactoryLoader<PreferencesProviderFactory>(PreferencesProviderFactory.class); + PluggableFactoryLoader<PreferencesProviderFactory> FACTORY_LOADER = new PluggableFactoryLoader<PreferencesProviderFactory>(PreferencesProviderFactory.class); PreferencesProvider createInstance(UUID id, Map<String, Object> attributes, AuthenticationProvider<? extends 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<String, Object> attributes); - Map<String, Object> 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<T extends AbstractAuthentica { String name = MapValueConverter.getStringAttribute(PreferencesProvider.NAME, attributes); String type = MapValueConverter.getStringAttribute(PreferencesProvider.TYPE, attributes); - PreferencesProviderFactory factory = PreferencesProviderFactory.FACTORIES.get(type); + PreferencesProviderFactory factory = PreferencesProviderFactory.FACTORY_LOADER.get(type); UUID id = UUIDGenerator.generatePreferencesProviderUUID(name, getName()); PreferencesProvider pp = factory.createInstance(id, attributes, this); pp.setDesiredState(State.INITIALISING, State.ACTIVE); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStoreCreator.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStoreCreator.java deleted file mode 100644 index a8013b8e9b..0000000000 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStoreCreator.java +++ /dev/null @@ -1,79 +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; - -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -import org.apache.qpid.server.configuration.IllegalConfigurationException; -import org.apache.qpid.server.plugin.MessageStoreFactory; -import org.apache.qpid.server.plugin.QpidServiceLoader; - -public class MessageStoreCreator -{ - private Map<String, MessageStoreFactory> _factories = new HashMap<String, MessageStoreFactory>(); - - public MessageStoreCreator() - { - QpidServiceLoader<MessageStoreFactory> qpidServiceLoader = new QpidServiceLoader<MessageStoreFactory>(); - Iterable<MessageStoreFactory> 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<MessageStoreFactory> getFactories() - { - return Collections.unmodifiableCollection(_factories.values()); - } - - public Collection<String> 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<String, Object> attributes) { // need store type and path - Object storeType = attributes.get(STORE_TYPE_ATTRIBUTE); - if(!(storeType instanceof String)) - { + Collection<String> 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<String,Object> createVirtualHostConfiguration(VirtualHostAdapter virtualHostAdapter) - { - Map<String,Object> convertedMap = new LinkedHashMap<String, Object>(); - convertedMap.put("store.type", virtualHostAdapter.getAttribute(org.apache.qpid.server.model.VirtualHost.STORE_TYPE)); - convertedMap.put("store.environment-path", virtualHostAdapter.getAttribute(org.apache.qpid.server.model.VirtualHost.STORE_PATH)); - - 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<String, Long> _preDelays = new HashMap<String, Long>(); private HashMap<String, Long> _postDelays = new HashMap<String, Long>(); 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<String,Object> delays = (delaysAttr instanceof Map) ? (Map<String,Object>) delaysAttr : Collections.<String,Object>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<Object, Object> config) + private void configureDelays(Map<String, Object> delays) { - for(Map.Entry<Object, Object> entry : config.entrySet()) + for(Map.Entry<String, Object> 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<String> supportedVirtualHostStoreTypes = (Collection<String>)brokerDetails.get(Broker.SUPPORTED_VIRTUALHOST_STORE_TYPES); - Collection<String> expectedSupportedVirtualHostStoreTypes = new MessageStoreCreator().getStoreTypes(); + Collection<String> expectedSupportedVirtualHostStoreTypes = MessageStoreFactory.FACTORY_LOADER.getSupportedTypes(); assertEquals("Unexpected supported virtual host store types", new HashSet<String>(expectedSupportedVirtualHostStoreTypes), new HashSet<String>(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<String, String> supportedStoresClassToTypeMapping = new HashMap<String, String>(); - 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<MessageStoreFactory> factories = messageStoreCreator.getFactories(); - for (MessageStoreFactory messageStoreFactory : factories) - { - supportedStoresClassToTypeMapping.put(messageStoreFactory.createMessageStore().getClass().getName(), messageStoreFactory.getType()); - } } // system properties |
