summaryrefslogtreecommitdiff
path: root/qpid/java
diff options
context:
space:
mode:
authorKeith Wall <kwall@apache.org>2014-03-13 10:41:24 +0000
committerKeith Wall <kwall@apache.org>2014-03-13 10:41:24 +0000
commit8fc924683158b005c70d49d4b97d16fde2914bde (patch)
tree62585229b5eb56f5f319d77778e3b27d0a173e6a /qpid/java
parentf10abece85c408a2185afe8f3075f0ed82451aeb (diff)
downloadqpid-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')
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostFactory.java12
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreFactory.java1
-rw-r--r--qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/MessageStoreCreatorTest.java35
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/PreferencesProviderRecoverer.java2
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java8
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/MessageStoreFactory.java3
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/PluggableFactoryLoader.java3
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/PreferencesProviderFactory.java2
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/VirtualHostFactory.java4
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/AbstractAuthenticationManager.java2
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStoreCreator.java79
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHost.java8
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/StandardVirtualHostFactory.java50
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/VirtualHostRecovererTest.java4
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/TestMemoryMessageStoreFactory.java1
-rw-r--r--qpid/java/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/store/derby/DerbyMessageStoreFactory.java1
-rw-r--r--qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreFactory.java1
-rw-r--r--qpid/java/broker-plugins/memory-store/src/main/java/org/apache/qpid/server/store/MemoryMessageStoreFactory.java1
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/server/store/SlowMessageStore.java55
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java4
-rwxr-xr-xqpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java12
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