diff options
author | Robert Godfrey <rgodfrey@apache.org> | 2014-04-20 17:00:46 +0000 |
---|---|---|
committer | Robert Godfrey <rgodfrey@apache.org> | 2014-04-20 17:00:46 +0000 |
commit | 130ff22d820d9c20a1bc7545031954ae59dad0ef (patch) | |
tree | bfe88e4d58c61d9f5c0a4e56dc9c5a51f39579d6 | |
parent | 3d34526bc2fe159b265d5a7c58ffd687ba00c499 (diff) | |
download | qpid-python-130ff22d820d9c20a1bc7545031954ae59dad0ef.tar.gz |
QPID-5713 : [Java Broker] Remove non-test references to model singleton, and instead treat as an instance variable
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1588794 13f79535-47bb-0310-9956-ffa450edef68
79 files changed, 759 insertions, 528 deletions
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/upgrade/UpgradeFrom7To8.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/upgrade/UpgradeFrom7To8.java index 8f3cf73275..0d4e40fdcb 100644 --- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/upgrade/UpgradeFrom7To8.java +++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/upgrade/UpgradeFrom7To8.java @@ -26,8 +26,8 @@ import java.util.HashMap; import java.util.Map; import java.util.UUID; +import org.apache.qpid.server.model.BrokerModel; import org.apache.qpid.server.model.ConfiguredObject; -import org.apache.qpid.server.model.Model; import org.apache.qpid.server.model.UUIDGenerator; import org.apache.qpid.server.store.ConfiguredObjectRecord; import org.apache.qpid.server.store.StoreException; @@ -68,7 +68,7 @@ public class UpgradeFrom7To8 extends AbstractStoreUpgrade Cursor objectsCursor = null; - String stringifiedConfigVersion = Model.MODEL_VERSION; + String stringifiedConfigVersion = BrokerModel.MODEL_VERSION; int configVersion = getConfigVersion(configVersionDb); if (configVersion > -1) { diff --git a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/VirtualHostTest.java b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/VirtualHostTest.java index 5ad113f827..abaaaa6d72 100644 --- a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/VirtualHostTest.java +++ b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/VirtualHostTest.java @@ -36,13 +36,12 @@ import org.apache.qpid.server.configuration.ConfigurationEntryStore; import org.apache.qpid.server.configuration.RecovererProvider; import org.apache.qpid.server.configuration.updater.TaskExecutor; import org.apache.qpid.server.model.Broker; +import org.apache.qpid.server.model.BrokerModel; import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.model.ConfiguredObjectFactory; import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; -import org.apache.qpid.server.model.Model; import org.apache.qpid.server.model.State; import org.apache.qpid.server.model.VirtualHost; -import org.apache.qpid.server.plugin.ConfiguredObjectTypeFactory; import org.apache.qpid.server.stats.StatisticsGatherer; import org.apache.qpid.server.store.MessageStore; import org.apache.qpid.server.store.berkeleydb.replication.ReplicatedEnvironmentFacadeFactory; @@ -149,12 +148,10 @@ public class VirtualHostTest extends QpidTestCase private VirtualHost<?,?,?> createHost(Map<String, Object> attributes) { - ConfiguredObjectFactory factory = new ConfiguredObjectFactoryImpl(Model.getInstance()); - ConfiguredObjectTypeFactory vhostFactory = - factory.getConfiguredObjectTypeFactory(VirtualHost.class, attributes); + ConfiguredObjectFactory factory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()); attributes = new HashMap<String, Object>(attributes); attributes.put(ConfiguredObject.ID, UUID.randomUUID()); - return (VirtualHost<?,?,?>) vhostFactory.create(attributes,_broker); + return (VirtualHost<?,?,?>) factory.create(VirtualHost.class, attributes,_broker); } } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/Broker.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/Broker.java index af2315f919..b2559f8668 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/Broker.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/Broker.java @@ -43,9 +43,9 @@ import org.apache.qpid.server.logging.LogRecorder; import org.apache.qpid.server.logging.SystemOutMessageLogger; import org.apache.qpid.server.logging.log4j.LoggingManagementFacade; import org.apache.qpid.server.logging.messages.BrokerMessages; +import org.apache.qpid.server.model.BrokerModel; import org.apache.qpid.server.model.ConfiguredObjectFactory; import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; -import org.apache.qpid.server.model.Model; import org.apache.qpid.server.model.SystemContext; import org.apache.qpid.server.model.SystemContextImpl; import org.apache.qpid.server.registry.ApplicationRegistry; @@ -140,7 +140,7 @@ public class Broker LogRecorder logRecorder = new LogRecorder(); _taskExecutor.start(); - ConfiguredObjectFactory configuredObjectFactory = new ConfiguredObjectFactoryImpl(Model.getInstance()); + ConfiguredObjectFactory configuredObjectFactory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()); SystemContext systemContext = new SystemContextImpl(_taskExecutor, configuredObjectFactory, _eventLogger, logRecorder, options); BrokerConfigurationStoreCreator storeCreator = new BrokerConfigurationStoreCreator(); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/BrokerStoreUpgrader.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/BrokerStoreUpgrader.java index c900ea047d..79d1595b27 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/BrokerStoreUpgrader.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/startup/BrokerStoreUpgrader.java @@ -34,8 +34,8 @@ import org.apache.log4j.Logger; import org.apache.qpid.server.configuration.IllegalConfigurationException; import org.apache.qpid.server.configuration.store.StoreConfigurationChangeListener; import org.apache.qpid.server.model.Broker; +import org.apache.qpid.server.model.BrokerModel; import org.apache.qpid.server.model.ConfiguredObject; -import org.apache.qpid.server.model.Model; import org.apache.qpid.server.model.SystemContext; import org.apache.qpid.server.store.ConfiguredObjectRecord; import org.apache.qpid.server.store.ConfiguredObjectRecordImpl; @@ -627,7 +627,7 @@ public class BrokerStoreUpgrader { String version = getCurrentVersion(); - while(!Model.MODEL_VERSION.equals(version)) + while(!BrokerModel.MODEL_VERSION.equals(version)) { LOGGER.debug("Adding broker store upgrader from model version: " + version); final UpgraderPhaseFactory upgraderPhaseFactory = _upgraders.get(version); @@ -761,7 +761,7 @@ public class BrokerStoreUpgrader { visited.add(object); action.performAction(object); - for(Class<? extends ConfiguredObject> childClass : Model.getInstance().getChildTypes(object.getCategoryClass())) + for(Class<? extends ConfiguredObject> childClass : object.getModel().getChildTypes(object.getCategoryClass())) { Collection<? extends ConfiguredObject> children = object.getChildren(childClass); if(children != null) @@ -789,7 +789,7 @@ public class BrokerStoreUpgrader return version; } } - return Model.MODEL_VERSION; + return BrokerModel.MODEL_VERSION; } public Broker getBroker() diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/JsonConfigurationEntryStore.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/JsonConfigurationEntryStore.java index d4409e666e..2ee4d3500b 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/JsonConfigurationEntryStore.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/JsonConfigurationEntryStore.java @@ -44,7 +44,7 @@ public class JsonConfigurationEntryStore extends MemoryConfigurationEntryStore public JsonConfigurationEntryStore(ConfiguredObject<?> parentObject, DurableConfigurationStore initialStore, boolean overwrite, Map<String, String> configProperties) { - super(configProperties); + super(parentObject, configProperties); _parentObject = parentObject; String storeLocation = (String) parentObject.getAttribute("storePath"); _storeFile = new File(storeLocation); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java index b21ecd3811..6d95c5d3a2 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java @@ -55,7 +55,6 @@ import org.apache.qpid.server.configuration.ConfigurationEntryStore; import org.apache.qpid.server.configuration.IllegalConfigurationException; import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.model.ConfiguredObject; -import org.apache.qpid.server.model.Model; import org.apache.qpid.server.model.SystemContext; import org.apache.qpid.server.model.UUIDGenerator; import org.apache.qpid.server.store.ConfiguredObjectRecord; @@ -85,8 +84,9 @@ public class MemoryConfigurationEntryStore implements ConfigurationEntryStore private ConfiguredObject<?> _parent; - protected MemoryConfigurationEntryStore(Map<String, String> configProperties) + protected MemoryConfigurationEntryStore(ConfiguredObject parentObject, Map<String, String> configProperties) { + _parent = parentObject; _objectMapper = new ObjectMapper(); _objectMapper.configure(SerializationConfig.Feature.INDENT_OUTPUT, true); _objectMapper.configure(JsonParser.Feature.ALLOW_COMMENTS, true); @@ -94,9 +94,9 @@ public class MemoryConfigurationEntryStore implements ConfigurationEntryStore _brokerChildrenRelationshipMap = buildRelationshipClassMap(); } - MemoryConfigurationEntryStore(String json, Map<String, String> configProperties) + MemoryConfigurationEntryStore(ConfiguredObject parentObject, String json, Map<String, String> configProperties) { - this(configProperties); + this(parentObject, configProperties); if (json == null || "".equals(json)) { createRootEntry(); @@ -109,12 +109,11 @@ public class MemoryConfigurationEntryStore implements ConfigurationEntryStore public MemoryConfigurationEntryStore(ConfiguredObject parentObject, String initialStoreLocation, ConfigurationEntryStore initialStore, Map<String, String> configProperties) { - this(configProperties); + this(parentObject, configProperties); if (initialStore == null && (initialStoreLocation == null || "".equals(initialStoreLocation) )) { throw new IllegalConfigurationException("Cannot instantiate the memory broker store as neither initial store nor initial store location is provided"); } - _parent = parentObject; if (initialStore != null) { if (initialStore instanceof MemoryConfigurationEntryStore) @@ -633,7 +632,7 @@ public class MemoryConfigurationEntryStore implements ConfigurationEntryStore { Map<String, Class<? extends ConfiguredObject>> relationships = new HashMap<String, Class<? extends ConfiguredObject>>(); - Collection<Class<? extends ConfiguredObject>> children = Model.getInstance().getChildTypes(Broker.class); + Collection<Class<? extends ConfiguredObject>> children = _parent.getModel().getChildTypes(Broker.class); for (Class<? extends ConfiguredObject> childClass : children) { String name = childClass.getSimpleName().toLowerCase(); @@ -823,7 +822,7 @@ public class MemoryConfigurationEntryStore implements ConfigurationEntryStore // for the parent configured object class if (parentConfiguredObjectClass != null) { - Collection<Class<? extends ConfiguredObject>> childTypes = Model.getInstance().getChildTypes(parentConfiguredObjectClass); + Collection<Class<? extends ConfiguredObject>> childTypes = _parent.getModel().getChildTypes(parentConfiguredObjectClass); for (Class<? extends ConfiguredObject> childType : childTypes) { String relationship = childType.getSimpleName().toLowerCase(); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java index 6a9b6df36c..3bf9c6cda1 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java @@ -115,6 +115,7 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im private final Class<? extends ConfiguredObject> _category; private final Class<? extends ConfiguredObject> _bestFitInterface; + private final ConfiguredObjectFactory _objectFactory; @ManagedAttributeField private long _createdTime; @@ -161,12 +162,33 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im return parentsMap; } + protected AbstractConfiguredObject(final Map<Class<? extends ConfiguredObject>, ConfiguredObject<?>> parents, + Map<String, Object> attributes) + { + this(parents, attributes, parents.values().iterator().next().getTaskExecutor()); + } + protected AbstractConfiguredObject(final Map<Class<? extends ConfiguredObject>, ConfiguredObject<?>> parents, Map<String, Object> attributes, TaskExecutor taskExecutor) { + this(parents, attributes, taskExecutor, parents.values().iterator().next().getObjectFactory()); + } + + protected AbstractConfiguredObject(final Map<Class<? extends ConfiguredObject>, ConfiguredObject<?>> parents, + Map<String, Object> attributes, + TaskExecutor taskExecutor, + ConfiguredObjectFactory objectFactory) + { _taskExecutor = taskExecutor; + _objectFactory = objectFactory; + + _category = Model.getCategory(getClass()); + + _attributeTypes = getAttributeTypes(getClass()); + _automatedFields = getAutomatedFields(getClass()); + Object idObj = attributes.get(ID); UUID uuid; @@ -181,17 +203,12 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im uuid = AttributeValueConverter.UUID_CONVERTER.convert(idObj, this); } _id = uuid; - _name = AttributeValueConverter.STRING_CONVERTER.convert(attributes.get(NAME),this); if(_name == null) { throw new IllegalArgumentException("The name attribute is mandatory for " + getClass().getSimpleName() + " creation."); } - _attributeTypes = getAttributeTypes(getClass()); - _automatedFields = getAutomatedFields(getClass()); - - _category = Model.getCategory(getClass()); _type = Model.getType(getClass()); _bestFitInterface = calculateBestFitInterface(); @@ -204,7 +221,7 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im } } - for (Class<? extends ConfiguredObject> childClass : Model.getInstance().getChildTypes(getCategoryClass())) + for (Class<? extends ConfiguredObject> childClass : getModel().getChildTypes(getCategoryClass())) { _children.put(childClass, new CopyOnWriteArrayList<ConfiguredObject<?>>()); _childrenById.put(childClass, new ConcurrentHashMap<UUID, ConfiguredObject<?>>()); @@ -457,7 +474,7 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im private void applyToChildren(Action<ConfiguredObject<?>> action) { - for (Class<? extends ConfiguredObject> childClass : Model.getInstance().getChildTypes(getCategoryClass())) + for (Class<? extends ConfiguredObject> childClass : getModel().getChildTypes(getCategoryClass())) { Collection<? extends ConfiguredObject> children = getChildren(childClass); if (children != null) @@ -520,6 +537,17 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im return _durable; } + @Override + public final ConfiguredObjectFactory getObjectFactory() + { + return _objectFactory; + } + + @Override + public final Model getModel() + { + return _objectFactory.getModel(); + } public Class<? extends ConfiguredObject> getCategoryClass() { @@ -840,7 +868,7 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im public Map<String, ConfiguredObjectRecord> getParents() { Map<String, ConfiguredObjectRecord> parents = new LinkedHashMap<String, ConfiguredObjectRecord>(); - for(Class<? extends ConfiguredObject> parentClass : Model.getInstance().getParentTypes(getCategoryClass())) + for(Class<? extends ConfiguredObject> parentClass : getModel().getParentTypes(getCategoryClass())) { ConfiguredObject parent = getParent(parentClass); if(parent != null) @@ -899,7 +927,7 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im if(_childrenByName.get(categoryClass).containsKey(name)) { Collection<Class<? extends ConfiguredObject>> parentTypes = - new ArrayList<Class<? extends ConfiguredObject>>(Model.getInstance().getParentTypes(categoryClass)); + new ArrayList<Class<? extends ConfiguredObject>>(child.getModel().getParentTypes(categoryClass)); parentTypes.remove(getCategoryClass()); boolean duplicate = true; @@ -967,7 +995,8 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im return Collections.unmodifiableList((List<? extends C>) _children.get(clazz)); } - public TaskExecutor getTaskExecutor() + @Override + public final TaskExecutor getTaskExecutor() { return _taskExecutor; } @@ -1192,7 +1221,7 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im final Map<String, String> inheritedContext) { Collection<Class<? extends ConfiguredObject>> parents = - Model.getInstance().getParentTypes(object.getCategoryClass()); + object.getModel().getParentTypes(object.getCategoryClass()); if(parents != null && !parents.isEmpty()) { ConfiguredObject parent = object.getParent(parents.iterator().next()); @@ -1574,7 +1603,7 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im final Class<X> clazz) { Class<? extends ConfiguredObject> category = Model.getCategory(object.getClass()); - Class<? extends ConfiguredObject> ancestorClass = getAncestorClassWithGivenDescendant(category, clazz); + Class<? extends ConfiguredObject> ancestorClass = getAncestorClassWithGivenDescendant(object.getModel(),category, clazz); if(ancestorClass != null) { ConfiguredObject ancestor = getAncestor(ancestorClass, category, object); @@ -1591,7 +1620,7 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im final Class<X> clazz) { Set<X> descendants = new HashSet<X>(); - for(Class<? extends ConfiguredObject> childClass : Model.getInstance().getChildTypes(ancestorClass)) + for(Class<? extends ConfiguredObject> childClass : ancestor.getModel().getChildTypes(ancestorClass)) { Collection<? extends ConfiguredObject> children = ancestor.getChildren(childClass); if(childClass == clazz) @@ -1626,7 +1655,7 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im } else { - for(Class<? extends ConfiguredObject> parentClass : Model.getInstance().getParentTypes(category)) + for(Class<? extends ConfiguredObject> parentClass : object.getModel().getParentTypes(category)) { ConfiguredObject parent = object.getParent(parentClass); if(parent == null) @@ -1644,17 +1673,16 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im } private static Class<? extends ConfiguredObject> getAncestorClassWithGivenDescendant( - final Class<? extends ConfiguredObject> category, + final Model model, final Class<? extends ConfiguredObject> category, final Class<? extends ConfiguredObject> descendantClass) { - Model model = Model.getInstance(); Collection<Class<? extends ConfiguredObject>> candidateClasses = Collections.<Class<? extends ConfiguredObject>>singleton(category); while(!candidateClasses.isEmpty()) { for(Class<? extends ConfiguredObject> candidate : candidateClasses) { - if(hasDescendant(candidate, descendantClass)) + if(hasDescendant(model, candidate, descendantClass)) { return candidate; } @@ -1669,11 +1697,10 @@ public abstract class AbstractConfiguredObject<X extends ConfiguredObject<X>> im return null; } - private static boolean hasDescendant(final Class<? extends ConfiguredObject> candidate, + private static boolean hasDescendant(final Model model, final Class<? extends ConfiguredObject> candidate, final Class<? extends ConfiguredObject> descendantClass) { int oldSize = 0; - Model model = Model.getInstance(); Set<Class<? extends ConfiguredObject>> allDescendants = new HashSet<Class<? extends ConfiguredObject>>(model.getChildTypes( candidate)); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObjectTypeFactory.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObjectTypeFactory.java index 38f885717f..d69d6e3076 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObjectTypeFactory.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObjectTypeFactory.java @@ -50,7 +50,9 @@ abstract public class AbstractConfiguredObjectTypeFactory<X extends AbstractConf } @Override - public X create(final Map<String, Object> attributes, final ConfiguredObject<?>... parents) + public X create(final ConfiguredObjectFactory factory, + final Map<String, Object> attributes, + final ConfiguredObject<?>... parents) { X instance = createInstance(attributes, parents); instance.create(); @@ -61,7 +63,8 @@ abstract public class AbstractConfiguredObjectTypeFactory<X extends AbstractConf public final <C extends ConfiguredObject<C>> C getParent(Class<C> parentClass, ConfiguredObject<?>... parents) { - if(!Model.getInstance().getParentTypes((Class<? extends ConfiguredObject>) getCategoryClass()).contains( + + if(!parents[0].getModel().getParentTypes((Class<? extends ConfiguredObject>) getCategoryClass()).contains( parentClass)) { throw new IllegalArgumentException(parentClass.getSimpleName() + " is not a parent of " + _clazz.getSimpleName()); @@ -78,7 +81,8 @@ abstract public class AbstractConfiguredObjectTypeFactory<X extends AbstractConf } @Override - public UnresolvedConfiguredObject<X> recover(final ConfiguredObjectRecord record, + public UnresolvedConfiguredObject<X> recover(final ConfiguredObjectFactory factory, + final ConfiguredObjectRecord record, final ConfiguredObject<?>... parents) { return new GenericUnresolvedConfiguredObject( record, parents ); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java index a634d25c14..16aa3e8916 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java @@ -189,5 +189,4 @@ public interface Broker<X extends Broker<X>> extends ConfiguredObject<X>, EventL AuthenticationProvider<?> getManagementModeAuthenticationProvider(); - ConfiguredObjectFactory getObjectFactory(); } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/BrokerModel.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/BrokerModel.java new file mode 100644 index 0000000000..7a6fd2a501 --- /dev/null +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/BrokerModel.java @@ -0,0 +1,170 @@ +/* + * + * 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.model; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +public final class BrokerModel extends Model +{ + + /* + * API version for the broker model + * + * 1.0 Initial version + * 1.1 Addition of mandatory virtual host type / different types of virtual host + * 1.3 Truststore/Keystore type => trustStoreType / type => keyStoreType + * 1.4 Separate messageStoreSettings from virtualhost + */ + public static final int MODEL_MAJOR_VERSION = 1; + public static final int MODEL_MINOR_VERSION = 4; + public static final String MODEL_VERSION = MODEL_MAJOR_VERSION + "." + MODEL_MINOR_VERSION; + private static final Model MODEL_INSTANCE = new BrokerModel(); + private final Map<Class<? extends ConfiguredObject>, Collection<Class<? extends ConfiguredObject>>> _parents = + new HashMap<Class<? extends ConfiguredObject>, Collection<Class<? extends ConfiguredObject>>>(); + + private final Map<Class<? extends ConfiguredObject>, Collection<Class<? extends ConfiguredObject>>> _children = + new HashMap<Class<? extends ConfiguredObject>, Collection<Class<? extends ConfiguredObject>>>(); + + private final Set<Class<? extends ConfiguredObject>> _supportedTypes = + new HashSet<Class<? extends ConfiguredObject>>(); + + private Class<? extends ConfiguredObject> _rootCategory; + + private BrokerModel() + { + setRootCategory(SystemContext.class); + + addRelationship(SystemContext.class, Broker.class); + + addRelationship(Broker.class, VirtualHost.class); + addRelationship(Broker.class, Port.class); + addRelationship(Broker.class, AccessControlProvider.class); + addRelationship(Broker.class, AuthenticationProvider.class); + addRelationship(Broker.class, GroupProvider.class); + addRelationship(Broker.class, TrustStore.class); + addRelationship(Broker.class, KeyStore.class); + addRelationship(Broker.class, Plugin.class); + + addRelationship(VirtualHost.class, Exchange.class); + addRelationship(VirtualHost.class, Queue.class); + addRelationship(VirtualHost.class, Connection.class); + addRelationship(VirtualHost.class, VirtualHostAlias.class); + + addRelationship(Port.class, VirtualHostAlias.class); + + + addRelationship(AuthenticationProvider.class, User.class); + addRelationship(AuthenticationProvider.class, PreferencesProvider.class); + addRelationship(User.class, GroupMember.class); + + addRelationship(GroupProvider.class, Group.class); + addRelationship(Group.class, GroupMember.class); + + addRelationship(Connection.class, Session.class); + + addRelationship(Queue.class, Binding.class); + addRelationship(Queue.class, Consumer.class); + + addRelationship(Exchange.class, Binding.class); + addRelationship(Exchange.class, Publisher.class); + + addRelationship(Session.class, Consumer.class); + addRelationship(Session.class, Publisher.class); + } + + public static Model getInstance() + { + return MODEL_INSTANCE; + } + + @Override + public Class<? extends ConfiguredObject> getRootCategory() + { + return _rootCategory; + } + + public Collection<Class<? extends ConfiguredObject>> getParentTypes(Class<? extends ConfiguredObject> child) + { + Collection<Class<? extends ConfiguredObject>> parentTypes = _parents.get(child); + return parentTypes == null ? Collections.<Class<? extends ConfiguredObject>>emptyList() + : Collections.unmodifiableCollection(parentTypes); + } + + @Override + public int getMajorVersion() + { + return MODEL_MAJOR_VERSION; + } + + @Override + public int getMinorVersion() + { + return MODEL_MINOR_VERSION; + } + + public Collection<Class<? extends ConfiguredObject>> getChildTypes(Class<? extends ConfiguredObject> parent) + { + Collection<Class<? extends ConfiguredObject>> childTypes = _children.get(parent); + return childTypes == null ? Collections.<Class<? extends ConfiguredObject>>emptyList() + : Collections.unmodifiableCollection(childTypes); + } + + @Override + public Collection<Class<? extends ConfiguredObject>> getSupportedCategories() + { + return Collections.unmodifiableSet(_supportedTypes); + } + + public void setRootCategory(final Class<? extends ConfiguredObject> rootCategory) + { + _rootCategory = rootCategory; + } + + private void addRelationship(Class<? extends ConfiguredObject> parent, Class<? extends ConfiguredObject> child) + { + Collection<Class<? extends ConfiguredObject>> parents = _parents.get(child); + if (parents == null) + { + parents = new ArrayList<Class<? extends ConfiguredObject>>(); + _parents.put(child, parents); + } + parents.add(parent); + + Collection<Class<? extends ConfiguredObject>> children = _children.get(parent); + if (children == null) + { + children = new ArrayList<Class<? extends ConfiguredObject>>(); + _children.put(parent, children); + } + children.add(child); + + _supportedTypes.add(parent); + _supportedTypes.add(child); + + } + +} diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObject.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObject.java index 1404f5e7b6..d1d5f91b06 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObject.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObject.java @@ -25,6 +25,7 @@ import java.util.Collection; import java.util.Map; import java.util.UUID; +import org.apache.qpid.server.configuration.updater.TaskExecutor; import org.apache.qpid.server.store.ConfiguredObjectRecord; @ManagedObject( creatable = false, category = false ) @@ -254,4 +255,10 @@ public interface ConfiguredObject<X extends ConfiguredObject<X>> void open(); void validate(); + + TaskExecutor getTaskExecutor(); + + ConfiguredObjectFactory getObjectFactory(); + + Model getModel(); } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactory.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactory.java index 35d7df4385..7d4023862b 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactory.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactory.java @@ -32,6 +32,10 @@ public interface ConfiguredObjectFactory <X extends ConfiguredObject<X>> UnresolvedConfiguredObject<X> recover(ConfiguredObjectRecord record, ConfiguredObject<?>... parents); + <X extends ConfiguredObject<X>> X create(Class<X> clazz, Map<String, Object> attributes, ConfiguredObject<?>... parents); + + + <X extends ConfiguredObject<X>> ConfiguredObjectTypeFactory<X> getConfiguredObjectTypeFactory(Class<X> categoryClass, Map<String, Object> attributes); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactoryImpl.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactoryImpl.java index 54a23a0389..dd5be11301 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactoryImpl.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObjectFactoryImpl.java @@ -97,7 +97,20 @@ public class ConfiguredObjectFactoryImpl implements ConfiguredObjectFactory throw new ServerScopedRuntimeException("No factory defined for ConfiguredObject of category " + category + " and type " + type); } - return factory.recover(record, parents); + return factory.recover(this, record, parents); + } + + @Override + public <X extends ConfiguredObject<X>> X create(Class<X> clazz, + final Map<String, Object> attributes, + final ConfiguredObject<?>... parents) + { + ConfiguredObjectTypeFactory<X> factory = getConfiguredObjectTypeFactory(clazz, attributes); + if(factory == null) + { + throw new ServerScopedRuntimeException("No factory defined for ConfiguredObject of category " + clazz.getSimpleName() + " and attributes " + attributes); + } + return factory.create(this, attributes, parents); } @Override diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Model.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Model.java index 39f26887a6..f1201e3cb9 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Model.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Model.java @@ -21,34 +21,10 @@ package org.apache.qpid.server.model; -import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; public abstract class Model { - /* - * API version for the broker model - * - * 1.0 Initial version - * 1.1 Addition of mandatory virtual host type / different types of virtual host - * 1.3 Truststore/Keystore type => trustStoreType / type => keyStoreType - * 1.4 Separate messageStoreSettings from virtualhost - */ - public static final int MODEL_MAJOR_VERSION = 1; - public static final int MODEL_MINOR_VERSION = 4; - public static final String MODEL_VERSION = MODEL_MAJOR_VERSION + "." + MODEL_MINOR_VERSION; - - private static final Model MODEL_INSTANCE = new ModelImpl(); - - public static Model getInstance() - { - return MODEL_INSTANCE; - } public static Class<? extends ConfiguredObject> getCategory(final Class<?> clazz) { @@ -144,127 +120,4 @@ public abstract class Model public abstract int getMajorVersion(); public abstract int getMinorVersion(); - private static class ModelImpl extends Model - { - - private final Map<Class<? extends ConfiguredObject>, Collection<Class<? extends ConfiguredObject>>> _parents = - new HashMap<Class<? extends ConfiguredObject>, Collection<Class<? extends ConfiguredObject>>>(); - - private final Map<Class<? extends ConfiguredObject>, Collection<Class<? extends ConfiguredObject>>> _children = - new HashMap<Class<? extends ConfiguredObject>, Collection<Class<? extends ConfiguredObject>>>(); - - private final Set<Class<? extends ConfiguredObject>> _supportedTypes = - new HashSet<Class<? extends ConfiguredObject>>(); - - private Class<? extends ConfiguredObject> _rootCategory; - - private ModelImpl() - { - setRootCategory(SystemContext.class); - - addRelationship(SystemContext.class, Broker.class); - - addRelationship(Broker.class, VirtualHost.class); - addRelationship(Broker.class, Port.class); - addRelationship(Broker.class, AccessControlProvider.class); - addRelationship(Broker.class, AuthenticationProvider.class); - addRelationship(Broker.class, GroupProvider.class); - addRelationship(Broker.class, TrustStore.class); - addRelationship(Broker.class, KeyStore.class); - addRelationship(Broker.class, Plugin.class); - - addRelationship(VirtualHost.class, Exchange.class); - addRelationship(VirtualHost.class, Queue.class); - addRelationship(VirtualHost.class, Connection.class); - addRelationship(VirtualHost.class, VirtualHostAlias.class); - - addRelationship(Port.class, VirtualHostAlias.class); - - - addRelationship(AuthenticationProvider.class, User.class); - addRelationship(AuthenticationProvider.class, PreferencesProvider.class); - addRelationship(User.class, GroupMember.class); - - addRelationship(GroupProvider.class, Group.class); - addRelationship(Group.class, GroupMember.class); - - addRelationship(Connection.class, Session.class); - - addRelationship(Queue.class, Binding.class); - addRelationship(Queue.class, Consumer.class); - - addRelationship(Exchange.class, Binding.class); - addRelationship(Exchange.class, Publisher.class); - - addRelationship(Session.class, Consumer.class); - addRelationship(Session.class, Publisher.class); - } - - @Override - public Class<? extends ConfiguredObject> getRootCategory() - { - return _rootCategory; - } - - public Collection<Class<? extends ConfiguredObject>> getParentTypes(Class<? extends ConfiguredObject> child) - { - Collection<Class<? extends ConfiguredObject>> parentTypes = _parents.get(child); - return parentTypes == null ? Collections.<Class<? extends ConfiguredObject>>emptyList() - : Collections.unmodifiableCollection(parentTypes); - } - - @Override - public int getMajorVersion() - { - return MODEL_MAJOR_VERSION; - } - - @Override - public int getMinorVersion() - { - return MODEL_MINOR_VERSION; - } - - public Collection<Class<? extends ConfiguredObject>> getChildTypes(Class<? extends ConfiguredObject> parent) - { - Collection<Class<? extends ConfiguredObject>> childTypes = _children.get(parent); - return childTypes == null ? Collections.<Class<? extends ConfiguredObject>>emptyList() - : Collections.unmodifiableCollection(childTypes); - } - - @Override - public Collection<Class<? extends ConfiguredObject>> getSupportedCategories() - { - return Collections.unmodifiableSet(_supportedTypes); - } - - public void setRootCategory(final Class<? extends ConfiguredObject> rootCategory) - { - _rootCategory = rootCategory; - } - - private void addRelationship(Class<? extends ConfiguredObject> parent, Class<? extends ConfiguredObject> child) - { - Collection<Class<? extends ConfiguredObject>> parents = _parents.get(child); - if (parents == null) - { - parents = new ArrayList<Class<? extends ConfiguredObject>>(); - _parents.put(child, parents); - } - parents.add(parent); - - Collection<Class<? extends ConfiguredObject>> children = _children.get(parent); - if (children == null) - { - children = new ArrayList<Class<? extends ConfiguredObject>>(); - _children.put(parent, children); - } - children.add(child); - - _supportedTypes.add(parent); - _supportedTypes.add(child); - - } - - } } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/SystemContext.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/SystemContext.java index 6e0f331d5e..03032ad1ed 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/SystemContext.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/SystemContext.java @@ -21,7 +21,6 @@ package org.apache.qpid.server.model; import org.apache.qpid.server.BrokerOptions; -import org.apache.qpid.server.configuration.updater.TaskExecutor; import org.apache.qpid.server.logging.EventLogger; import org.apache.qpid.server.logging.LogRecorder; import org.apache.qpid.server.store.ConfiguredObjectRecord; @@ -31,8 +30,6 @@ public interface SystemContext<X extends SystemContext<X>> extends ConfiguredObj { void resolveObjects(ConfiguredObjectRecord... records); - ConfiguredObjectFactory getObjectFactory(); - EventLogger getEventLogger(); BrokerOptions getBrokerOptions(); @@ -47,7 +44,5 @@ public interface SystemContext<X extends SystemContext<X>> extends ConfiguredObj Broker getBroker(); - TaskExecutor getTaskExecutor(); - LogRecorder getLogRecorder(); } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/SystemContextImpl.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/SystemContextImpl.java index 3ead1699b1..f0f5e96081 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/SystemContextImpl.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/SystemContextImpl.java @@ -63,7 +63,7 @@ public class SystemContextImpl extends AbstractConfiguredObject<SystemContextImp { super(parentsMap(), createAttributes(brokerOptions), - taskExecutor); + taskExecutor, configuredObjectFactory); _eventLogger = eventLogger; getTaskExecutor().start(); _objectFactory = configuredObjectFactory; @@ -231,12 +231,6 @@ public class SystemContextImpl extends AbstractConfiguredObject<SystemContextImp } @Override - public ConfiguredObjectFactory getObjectFactory() - { - return _objectFactory; - } - - @Override public EventLogger getEventLogger() { return _eventLogger; 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 28553412f7..3dd261e9a9 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 @@ -48,7 +48,6 @@ import org.apache.qpid.server.logging.messages.VirtualHostMessages; import org.apache.qpid.server.model.*; import org.apache.qpid.server.model.port.AbstractPortWithAuthProvider; import org.apache.qpid.server.model.port.AmqpPort; -import org.apache.qpid.server.plugin.ConfiguredObjectTypeFactory; import org.apache.qpid.server.plugin.MessageStoreFactory; import org.apache.qpid.server.security.SecurityManager; import org.apache.qpid.server.security.SubjectCreator; @@ -67,7 +66,6 @@ public class BrokerAdapter extends AbstractConfiguredObject<BrokerAdapter> imple public static final String MANAGEMENT_MODE_AUTHENTICATION = "MANAGEMENT_MODE_AUTHENTICATION"; - private final ConfiguredObjectFactory _objectFactory; private String[] POSITIVE_NUMERIC_ATTRIBUTES = { CONNECTION_SESSION_COUNT_LIMIT, CONNECTION_HEART_BEAT_DELAY, STATISTICS_REPORTING_PERIOD }; @@ -110,7 +108,6 @@ public class BrokerAdapter extends AbstractConfiguredObject<BrokerAdapter> imple attributes, parent.getTaskExecutor()); - _objectFactory = parent.getObjectFactory(); //_virtualHostRegistry = new VirtualHostRegistry(parent.getEventLogger()); _logRecorder = parent.getLogRecorder(); @@ -152,11 +149,11 @@ public class BrokerAdapter extends AbstractConfiguredObject<BrokerAdapter> imple int majorModelVersion = Integer.parseInt(majorVersionPart); int minorModelVersion = Integer.parseInt(modelVersion.substring(versionSeparatorPosition + 1)); - if (majorModelVersion != Model.MODEL_MAJOR_VERSION || minorModelVersion > Model.MODEL_MINOR_VERSION) + if (majorModelVersion != BrokerModel.MODEL_MAJOR_VERSION || minorModelVersion > BrokerModel.MODEL_MINOR_VERSION) { deleted(); throw new IllegalConfigurationException("The model version '" + modelVersion - + "' in configuration is incompatible with the broker model version '" + Model.MODEL_VERSION + "'"); + + "' in configuration is incompatible with the broker model version '" + BrokerModel.MODEL_VERSION + "'"); } if(!isDurable()) @@ -175,7 +172,7 @@ public class BrokerAdapter extends AbstractConfiguredObject<BrokerAdapter> imple throw new IllegalArgumentException(getClass().getSimpleName() + " must be durable"); } Broker updated = (Broker) proxyForValidation; - if (changedAttributes.contains(MODEL_VERSION) && !Model.MODEL_VERSION.equals(updated.getModelVersion())) + if (changedAttributes.contains(MODEL_VERSION) && !BrokerModel.MODEL_VERSION.equals(updated.getModelVersion())) { throw new IllegalConfigurationException("Cannot change the model version"); } @@ -304,19 +301,19 @@ public class BrokerAdapter extends AbstractConfiguredObject<BrokerAdapter> imple @Override public Collection<String> getSupportedVirtualHostTypes() { - return _objectFactory.getSupportedTypes(VirtualHost.class); + return getObjectFactory().getSupportedTypes(VirtualHost.class); } @Override public Collection<String> getSupportedAuthenticationProviders() { - return _objectFactory.getSupportedTypes(AuthenticationProvider.class); + return getObjectFactory().getSupportedTypes(AuthenticationProvider.class); } @Override public Collection<String> getSupportedPreferencesProviderTypes() { - return _objectFactory.getSupportedTypes(PreferencesProvider.class); + return getObjectFactory().getSupportedTypes(PreferencesProvider.class); } @Override @@ -358,7 +355,7 @@ public class BrokerAdapter extends AbstractConfiguredObject<BrokerAdapter> imple @Override public String getModelVersion() { - return Model.MODEL_VERSION; + return BrokerModel.MODEL_VERSION; } public Collection<VirtualHost<?,?,?>> getVirtualHosts() @@ -408,9 +405,8 @@ public class BrokerAdapter extends AbstractConfiguredObject<BrokerAdapter> imple private VirtualHost createVirtualHost(final Map<String, Object> attributes) throws AccessControlException, IllegalArgumentException { - ConfiguredObjectTypeFactory virtualHostFactory = - _objectFactory.getConfiguredObjectTypeFactory(VirtualHost.class, attributes); - final VirtualHost virtualHost = (VirtualHost) virtualHostFactory.create(attributes,this); + + final VirtualHost virtualHost = getObjectFactory().create(VirtualHost.class,attributes,this); // permission has already been granted to create the virtual host // disable further access check on other operations, e.g. create exchange @@ -602,14 +598,12 @@ public class BrokerAdapter extends AbstractConfiguredObject<BrokerAdapter> imple private <X extends ConfiguredObject> X createChild(Class<X> clazz, Map<String, Object> attributes) { - ConfiguredObjectTypeFactory factory = - _objectFactory.getConfiguredObjectTypeFactory(clazz, attributes); if(!attributes.containsKey(ConfiguredObject.ID)) { attributes = new HashMap<String, Object>(attributes); attributes.put(ConfiguredObject.ID, UUID.randomUUID()); } - final X instance = (X) factory.create(attributes, this); + final X instance = (X) getObjectFactory().create(clazz,attributes, this); return instance; } @@ -769,7 +763,7 @@ public class BrokerAdapter extends AbstractConfiguredObject<BrokerAdapter> imple @Override public void execute() { - for (Class<? extends ConfiguredObject> clazz : Model.getInstance().getChildTypes(getCategoryClass())) + for (Class<? extends ConfiguredObject> clazz : getModel().getChildTypes(getCategoryClass())) { for (ConfiguredObject configuredObject : getChildren(clazz)) { @@ -998,12 +992,6 @@ public class BrokerAdapter extends AbstractConfiguredObject<BrokerAdapter> imple } @Override - public ConfiguredObjectFactory getObjectFactory() - { - return _objectFactory; - } - - @Override public void setEventLogger(final EventLogger eventLogger) { _eventLogger = eventLogger; diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/PortFactory.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/PortFactory.java index c8a9270f1e..122421347e 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/PortFactory.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/port/PortFactory.java @@ -20,17 +20,12 @@ */ package org.apache.qpid.server.model.port; -import java.util.HashMap; import java.util.Map; import java.util.Set; -import java.util.UUID; import org.apache.qpid.server.configuration.IllegalConfigurationException; -import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.model.ConfiguredObjectFactory; -import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; -import org.apache.qpid.server.model.Model; import org.apache.qpid.server.model.Port; import org.apache.qpid.server.model.Protocol; import org.apache.qpid.server.model.Protocol.ProtocolType; @@ -49,20 +44,12 @@ public class PortFactory<X extends Port<X>> implements ConfiguredObjectTypeFacto public static final boolean DEFAULT_AMQP_TCP_NO_DELAY = true; public static final String DEFAULT_AMQP_BINDING = "*"; public static final Transport DEFAULT_TRANSPORT = Transport.TCP; - private ConfiguredObjectFactory _configuredObjectFactory; public PortFactory() { } - public Port createPort(UUID id, Broker broker, Map<String, Object> attributes) - { - attributes = new HashMap<String, Object>(attributes); - attributes.put(Port.ID, id); - return create(attributes,broker); - } - private ProtocolType getProtocolType(Map<String, Object> portAttributes) { @@ -105,19 +92,23 @@ public class PortFactory<X extends Port<X>> implements ConfiguredObjectTypeFacto } @Override - public X create(final Map<String, Object> attributes, final ConfiguredObject<?>... parents) + public X create(final ConfiguredObjectFactory factory, + final Map<String, Object> attributes, + final ConfiguredObject<?>... parents) { - return getPortFactory(attributes).create(attributes,parents); + return getPortFactory(factory, attributes).create(factory, attributes,parents); } @Override - public UnresolvedConfiguredObject<X> recover(final ConfiguredObjectRecord record, + public UnresolvedConfiguredObject<X> recover(final ConfiguredObjectFactory factory, + final ConfiguredObjectRecord record, final ConfiguredObject<?>... parents) { - return getPortFactory(record.getAttributes()).recover(record, parents); + return getPortFactory(factory, record.getAttributes()).recover(factory, record, parents); } - public ConfiguredObjectTypeFactory<X> getPortFactory(Map<String,Object> attributes) + public ConfiguredObjectTypeFactory<X> getPortFactory(final ConfiguredObjectFactory factory, + Map<String, Object> attributes) { String type; @@ -130,14 +121,7 @@ public class PortFactory<X extends Port<X>> implements ConfiguredObjectTypeFacto type = getProtocolType(attributes).name(); } - synchronized (this) - { - if(_configuredObjectFactory == null) - { - _configuredObjectFactory = new ConfiguredObjectFactoryImpl(Model.getInstance()); - } - } - return _configuredObjectFactory.getConfiguredObjectTypeFactory(Port.class.getSimpleName(), type); + return factory.getConfiguredObjectTypeFactory(Port.class.getSimpleName(), type); } @Override diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/ConfiguredObjectTypeFactory.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/ConfiguredObjectTypeFactory.java index 9e4c760acf..0d16b4ffc7 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/ConfiguredObjectTypeFactory.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/ConfiguredObjectTypeFactory.java @@ -21,6 +21,7 @@ package org.apache.qpid.server.plugin; import org.apache.qpid.server.model.ConfiguredObject; +import org.apache.qpid.server.model.ConfiguredObjectFactory; import org.apache.qpid.server.store.ConfiguredObjectRecord; import org.apache.qpid.server.store.UnresolvedConfiguredObject; @@ -30,7 +31,9 @@ public interface ConfiguredObjectTypeFactory<X extends ConfiguredObject<X>> exte { Class<? super X> getCategoryClass(); - X create(Map<String, Object> attributes, ConfiguredObject<?>... parents); + X create(final ConfiguredObjectFactory factory, Map<String, Object> attributes, ConfiguredObject<?>... parents); - UnresolvedConfiguredObject<X> recover(ConfiguredObjectRecord record, ConfiguredObject<?>... parents); + UnresolvedConfiguredObject<X> recover(final ConfiguredObjectFactory factory, + ConfiguredObjectRecord record, + ConfiguredObject<?>... parents); } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueFactory.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueFactory.java index e56ff20c67..d8575b17c0 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueFactory.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueFactory.java @@ -24,8 +24,6 @@ import java.util.Map; import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.model.ConfiguredObjectFactory; -import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; -import org.apache.qpid.server.model.Model; import org.apache.qpid.server.model.Port; import org.apache.qpid.server.model.Queue; import org.apache.qpid.server.plugin.ConfiguredObjectTypeFactory; @@ -34,8 +32,6 @@ import org.apache.qpid.server.store.UnresolvedConfiguredObject; public class QueueFactory<X extends Queue<X>> implements ConfiguredObjectTypeFactory<X> { - private ConfiguredObjectFactory _configuredObjectFactory; - @Override public Class<? super X> getCategoryClass() { @@ -43,19 +39,23 @@ public class QueueFactory<X extends Queue<X>> implements ConfiguredObjectTypeFa } @Override - public X create(final Map<String, Object> attributes, final ConfiguredObject<?>... parents) + public X create(final ConfiguredObjectFactory factory, + final Map<String, Object> attributes, + final ConfiguredObject<?>... parents) { - return getQueueFactory(attributes).create(attributes, parents); + return getQueueFactory(factory, attributes).create(factory, attributes, parents); } @Override - public UnresolvedConfiguredObject<X> recover(final ConfiguredObjectRecord record, + public UnresolvedConfiguredObject<X> recover(final ConfiguredObjectFactory factory, + final ConfiguredObjectRecord record, final ConfiguredObject<?>... parents) { - return getQueueFactory(record.getAttributes()).recover(record, parents); + return getQueueFactory(factory, record.getAttributes()).recover(factory, record, parents); } - private ConfiguredObjectTypeFactory<X> getQueueFactory(Map<String, Object> attributes) + private ConfiguredObjectTypeFactory<X> getQueueFactory(final ConfiguredObjectFactory factory, + Map<String, Object> attributes) { String type; @@ -84,14 +84,7 @@ public class QueueFactory<X extends Queue<X>> implements ConfiguredObjectTypeFa } } - synchronized (this) - { - if(_configuredObjectFactory == null) - { - _configuredObjectFactory = new ConfiguredObjectFactoryImpl(Model.getInstance()); - } - } - return _configuredObjectFactory.getConfiguredObjectTypeFactory(Queue.class.getSimpleName(), type); + return factory.getConfiguredObjectTypeFactory(Queue.class.getSimpleName(), type); } @Override 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 25bf172614..6312415c77 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 @@ -36,18 +36,14 @@ import org.apache.qpid.server.model.AbstractConfiguredObject; import org.apache.qpid.server.model.AuthenticationProvider; import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.model.ConfiguredObject; -import org.apache.qpid.server.model.ConfiguredObjectFactory; -import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; import org.apache.qpid.server.model.IllegalStateTransitionException; import org.apache.qpid.server.model.IntegrityViolationException; -import org.apache.qpid.server.model.Model; import org.apache.qpid.server.model.Port; import org.apache.qpid.server.model.PreferencesProvider; import org.apache.qpid.server.model.State; import org.apache.qpid.server.model.User; import org.apache.qpid.server.model.VirtualHostAlias; import org.apache.qpid.server.model.port.AbstractPortWithAuthProvider; -import org.apache.qpid.server.plugin.ConfiguredObjectTypeFactory; import org.apache.qpid.server.security.SubjectCreator; import org.apache.qpid.server.security.access.Operation; @@ -157,13 +153,10 @@ public abstract class AbstractAuthenticationManager<T extends AbstractAuthentica { if(childClass == PreferencesProvider.class) { - // TODO RG - get the configured object factory from parents - ConfiguredObjectFactory factory = new ConfiguredObjectFactoryImpl(Model.getInstance()); attributes = new HashMap<String, Object>(attributes); attributes.put(ConfiguredObject.ID, UUID.randomUUID()); - final ConfiguredObjectTypeFactory preferencesFactory = - factory.getConfiguredObjectTypeFactory(PreferencesProvider.class, attributes); - PreferencesProvider pp = (PreferencesProvider) preferencesFactory.create(attributes, this); + + PreferencesProvider pp = getObjectFactory().create(PreferencesProvider.class, attributes, this); pp.setDesiredState(State.INITIALISING, State.ACTIVE); _preferencesProvider = pp; return (C)pp; diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/Base64MD5PasswordFileAuthenticationManagerFactory.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/Base64MD5PasswordFileAuthenticationManagerFactory.java index 10ecc68500..a8063a5bed 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/Base64MD5PasswordFileAuthenticationManagerFactory.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/Base64MD5PasswordFileAuthenticationManagerFactory.java @@ -23,6 +23,7 @@ package org.apache.qpid.server.security.auth.manager; import org.apache.qpid.server.model.AuthenticationProvider; import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.model.ConfiguredObject; +import org.apache.qpid.server.model.ConfiguredObjectFactory; import org.apache.qpid.server.store.ConfiguredObjectRecord; import org.apache.qpid.server.store.ResolvedObject; import org.apache.qpid.server.store.UnresolvedConfiguredObject; @@ -70,7 +71,8 @@ public class Base64MD5PasswordFileAuthenticationManagerFactory extends AbstractA } @Override - public UnresolvedConfiguredObject<Base64MD5PasswordDatabaseAuthenticationManager> recover(final ConfiguredObjectRecord record, + public UnresolvedConfiguredObject<Base64MD5PasswordDatabaseAuthenticationManager> recover(final ConfiguredObjectFactory factory, + final ConfiguredObjectRecord record, final ConfiguredObject<?>... parents) { diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PlainPasswordFileAuthenticationManagerFactory.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PlainPasswordFileAuthenticationManagerFactory.java index 9667c1e124..81dde6db81 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PlainPasswordFileAuthenticationManagerFactory.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PlainPasswordFileAuthenticationManagerFactory.java @@ -23,6 +23,7 @@ package org.apache.qpid.server.security.auth.manager; import org.apache.qpid.server.model.AuthenticationProvider; import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.model.ConfiguredObject; +import org.apache.qpid.server.model.ConfiguredObjectFactory; import org.apache.qpid.server.store.ConfiguredObjectRecord; import org.apache.qpid.server.store.ResolvedObject; import org.apache.qpid.server.store.UnresolvedConfiguredObject; @@ -72,7 +73,8 @@ public class PlainPasswordFileAuthenticationManagerFactory extends AbstractAuthe } @Override - public UnresolvedConfiguredObject<PlainPasswordDatabaseAuthenticationManager> recover(final ConfiguredObjectRecord record, + public UnresolvedConfiguredObject<PlainPasswordDatabaseAuthenticationManager> recover(final ConfiguredObjectFactory factory, + final ConfiguredObjectRecord record, final ConfiguredObject<?>... parents) { diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java index 6ff959fad8..0e61ec9b47 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java @@ -47,8 +47,8 @@ import java.util.concurrent.atomic.AtomicLong; import org.apache.log4j.Logger; import org.apache.qpid.server.message.EnqueueableMessage; +import org.apache.qpid.server.model.BrokerModel; import org.apache.qpid.server.model.ConfiguredObject; -import org.apache.qpid.server.model.Model; import org.apache.qpid.server.model.UUIDGenerator; import org.apache.qpid.server.plugin.MessageMetaDataType; import org.apache.qpid.server.store.handler.ConfiguredObjectRecordHandler; @@ -465,7 +465,7 @@ abstract public class AbstractJDBCMessageStore implements MessageStore, DurableC { UUID virtualHostId = UUIDGenerator.generateVhostUUID(parent.getName()); - String stringifiedConfigVersion = Model.MODEL_VERSION; + String stringifiedConfigVersion = BrokerModel.MODEL_VERSION; boolean tableExists = tableExists(CONFIGURATION_VERSION_TABLE_NAME, connection); if(tableExists) { diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationRecoverer.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationRecoverer.java index 507e14f021..52d690df53 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationRecoverer.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationRecoverer.java @@ -34,8 +34,8 @@ import org.apache.qpid.server.configuration.IllegalConfigurationException; import org.apache.qpid.server.logging.EventLogger; import org.apache.qpid.server.logging.messages.ConfigStoreMessages; import org.apache.qpid.server.logging.subjects.MessageStoreLogSubject; +import org.apache.qpid.server.model.BrokerModel; import org.apache.qpid.server.model.ConfiguredObject; -import org.apache.qpid.server.model.Model; public class DurableConfigurationRecoverer implements ConfigurationRecoveryHandler { @@ -108,12 +108,12 @@ public class DurableConfigurationRecoverer implements ConfigurationRecoveryHandl applyUpgrade(); _eventLogger.message(_logSubject, ConfigStoreMessages.RECOVERY_COMPLETE()); - return Model.MODEL_VERSION; + return BrokerModel.MODEL_VERSION; } private String getConfigVersionFromRecords() { - String configVersion = Model.MODEL_VERSION; + String configVersion = BrokerModel.MODEL_VERSION; for (ConfiguredObjectRecord record : _records) { if ("VirtualHost".equals(record.getType())) diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java index 1cf1d1a36d..23ecc6f243 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java @@ -26,12 +26,16 @@ import java.io.IOException; import java.nio.channels.FileChannel; import java.nio.channels.FileLock; import java.nio.channels.OverlappingFileLockException; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; -import org.apache.qpid.server.model.ConfiguredObject; -import org.apache.qpid.server.model.Model; -import org.apache.qpid.server.model.VirtualHost; -import org.apache.qpid.server.store.handler.ConfiguredObjectRecordHandler; import org.codehaus.jackson.JsonGenerator; import org.codehaus.jackson.JsonParseException; import org.codehaus.jackson.JsonProcessingException; @@ -44,11 +48,16 @@ import org.codehaus.jackson.map.SerializationConfig; import org.codehaus.jackson.map.SerializerProvider; import org.codehaus.jackson.map.module.SimpleModule; +import org.apache.qpid.server.model.BrokerModel; +import org.apache.qpid.server.model.ConfiguredObject; +import org.apache.qpid.server.model.Model; +import org.apache.qpid.server.model.VirtualHost; +import org.apache.qpid.server.store.handler.ConfiguredObjectRecordHandler; + public class JsonFileConfigStore implements DurableConfigurationStore { - private static final Model MODEL = Model.getInstance(); - private static final Map<String,Class<? extends ConfiguredObject>> CLASS_NAME_MAPPING = generateClassNameMap(VirtualHost.class); + private Map<String,Class<? extends ConfiguredObject>> _classNameMapping; public static final String TYPE = "JSON"; private final Map<UUID, ConfiguredObjectRecord> _objectsById = new HashMap<UUID, ConfiguredObjectRecord>(); @@ -83,6 +92,8 @@ public class JsonFileConfigStore implements DurableConfigurationStore _module = module; } + private ConfiguredObject<?> _parent; + public JsonFileConfigStore() { _objectMapper.registerModule(_module); @@ -92,7 +103,9 @@ public class JsonFileConfigStore implements DurableConfigurationStore @Override public void openConfigurationStore(ConfiguredObject<?> parent, Map<String, Object> storeSettings) { + _parent = parent; _name = parent.getName(); + _classNameMapping = generateClassNameMap(_parent.getModel(), VirtualHost.class); setup(storeSettings); load(); } @@ -250,7 +263,7 @@ public class JsonFileConfigStore implements DurableConfigurationStore protected void loadFromMap(final Map data) { Collection<Class<? extends ConfiguredObject>> childClasses = - MODEL.getChildTypes(VirtualHost.class); + _parent.getModel().getChildTypes(VirtualHost.class); data.remove("modelVersion"); Object configVersion; if((configVersion = data.remove("configVersion")) instanceof Integer) @@ -284,7 +297,7 @@ public class JsonFileConfigStore implements DurableConfigurationStore final UUID parentId) { Collection<Class<? extends ConfiguredObject>> childClasses = - MODEL.getChildTypes(clazz); + _parent.getModel().getChildTypes(clazz); String idStr = (String) data.remove("id"); final UUID id = UUID.fromString(idStr); final String type = clazz.getSimpleName(); @@ -313,7 +326,7 @@ public class JsonFileConfigStore implements DurableConfigurationStore if(parentId != null) { parentMap.put(parentClass.getSimpleName(),parentId); - for(Class<? extends ConfiguredObject> otherParent : MODEL.getParentTypes(clazz)) + for(Class<? extends ConfiguredObject> otherParent : _parent.getModel().getParentTypes(clazz)) { if(otherParent != parentClass) { @@ -353,7 +366,7 @@ public class JsonFileConfigStore implements DurableConfigurationStore { throw new StoreException("Object with id " + record.getId() + " already exists"); } - else if(!CLASS_NAME_MAPPING.containsKey(record.getType())) + else if(!_classNameMapping.containsKey(record.getType())) { throw new StoreException("Cannot create object of unknown type " + record.getType()); } @@ -375,10 +388,10 @@ public class JsonFileConfigStore implements DurableConfigurationStore private void save() { Collection<Class<? extends ConfiguredObject>> childClasses = - MODEL.getChildTypes(VirtualHost.class); + _parent.getModel().getChildTypes(VirtualHost.class); Map<String, Object> virtualHostMap = new LinkedHashMap<String, Object>(); - virtualHostMap.put("modelVersion", Model.MODEL_VERSION); + virtualHostMap.put("modelVersion", BrokerModel.MODEL_VERSION); virtualHostMap.put("configVersion", _configVersion); for(Class<? extends ConfiguredObject> childClass : childClasses) @@ -423,7 +436,7 @@ public class JsonFileConfigStore implements DurableConfigurationStore map.put("id", id); map.putAll(record.getAttributes()); - Collection<Class<? extends ConfiguredObject>> parentTypes = MODEL.getParentTypes(type); + Collection<Class<? extends ConfiguredObject>> parentTypes = _parent.getModel().getParentTypes(type); if(parentTypes.size() > 1) { Iterator<Class<? extends ConfiguredObject>> iter = parentTypes.iterator(); @@ -439,12 +452,12 @@ public class JsonFileConfigStore implements DurableConfigurationStore } Collection<Class<? extends ConfiguredObject>> childClasses = - new ArrayList<Class<? extends ConfiguredObject>>(MODEL.getChildTypes(type)); + new ArrayList<Class<? extends ConfiguredObject>>(_parent.getModel().getChildTypes(type)); for(Class<? extends ConfiguredObject> childClass : childClasses) { // only add if this is the "first" parent - if(MODEL.getParentTypes(childClass).iterator().next() == type) + if(_parent.getModel().getParentTypes(childClass).iterator().next() == type) { String attrName = childClass.getSimpleName().toLowerCase() + "s"; List<UUID> childIds = _idsByType.get(childClass.getSimpleName()); @@ -514,7 +527,7 @@ public class JsonFileConfigStore implements DurableConfigurationStore throw new StoreException("Cannot update record with id " + id + " of type " + type + " as it does not exist"); } - else if(!CLASS_NAME_MAPPING.containsKey(type)) + else if(!_classNameMapping.containsKey(type)) { throw new StoreException("Cannot update record of unknown type " + type); } @@ -565,16 +578,17 @@ public class JsonFileConfigStore implements DurableConfigurationStore } - private static Map<String,Class<? extends ConfiguredObject>> generateClassNameMap(final Class<? extends ConfiguredObject> clazz) + private static Map<String,Class<? extends ConfiguredObject>> generateClassNameMap(final Model model, + final Class<? extends ConfiguredObject> clazz) { Map<String,Class<? extends ConfiguredObject>>map = new HashMap<String, Class<? extends ConfiguredObject>>(); map.put(clazz.getSimpleName().toString(), clazz); - Collection<Class<? extends ConfiguredObject>> childClasses = MODEL.getChildTypes(clazz); + Collection<Class<? extends ConfiguredObject>> childClasses = model.getChildTypes(clazz); if(childClasses != null) { for(Class<? extends ConfiguredObject> childClass : childClasses) { - map.putAll(generateClassNameMap(childClass)); + map.putAll(generateClassNameMap(model, childClass)); } } return map; diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/ResolvedObject.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/ResolvedObject.java index ee36663a7f..bbb8a08243 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/ResolvedObject.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/ResolvedObject.java @@ -20,12 +20,11 @@ */ package org.apache.qpid.server.store; -import org.apache.qpid.server.model.ConfiguredObject; -import org.apache.qpid.server.model.Model; - import java.util.Collection; import java.util.Collections; +import org.apache.qpid.server.model.ConfiguredObject; + public class ResolvedObject<C extends ConfiguredObject<C>> implements UnresolvedConfiguredObject<C> { @@ -41,7 +40,7 @@ public class ResolvedObject<C extends ConfiguredObject<C>> implements Unresolved public ConfiguredObject<?>[] getParents() { final Collection<Class<? extends ConfiguredObject>> parentTypes = - Model.getInstance().getParentTypes(_resolved.getCategoryClass()); + _resolved.getModel().getParentTypes(_resolved.getCategoryClass()); ConfiguredObject<?>[] parents = new ConfiguredObject[parentTypes.size()]; int i = 0; for(Class<? extends ConfiguredObject> parentType : parentTypes) diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java index 510c071dd3..645c6061bd 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java @@ -63,7 +63,6 @@ import org.apache.qpid.server.message.ServerMessage; import org.apache.qpid.server.model.*; import org.apache.qpid.server.model.adapter.ConnectionAdapter; import org.apache.qpid.server.model.adapter.VirtualHostAliasAdapter; -import org.apache.qpid.server.plugin.ConfiguredObjectTypeFactory; import org.apache.qpid.server.plugin.QpidServiceLoader; import org.apache.qpid.server.plugin.SystemNodeCreator; import org.apache.qpid.server.protocol.AMQConnectionModel; @@ -621,14 +620,11 @@ public abstract class AbstractVirtualHost<X extends AbstractVirtualHost<X>> exte private AMQQueue<?> addQueueWithoutDLQ(Map<String, Object> attributes) throws QueueExistsException { - Broker<?> broker = getParent(Broker.class); - ConfiguredObjectTypeFactory<? extends Queue> factory = - broker.getObjectFactory().getConfiguredObjectTypeFactory(Queue.class, attributes); try { - return (AMQQueue) factory.create(attributes, this); + return (AMQQueue) getObjectFactory().create(Queue.class, attributes, this); } catch (DuplicateNameException e) { @@ -783,14 +779,11 @@ public abstract class AbstractVirtualHost<X extends AbstractVirtualHost<X>> exte throws ExchangeExistsException, ReservedExchangeNameException, UnknownExchangeException, AMQUnknownExchangeType { - Broker<?> broker = getParent(Broker.class); - ConfiguredObjectTypeFactory<? extends Exchange> factory = - broker.getObjectFactory().getConfiguredObjectTypeFactory(Exchange.class, attributes); try { - return (ExchangeImpl) factory.create(attributes, this); + return (ExchangeImpl) getObjectFactory().create(Exchange.class, attributes, this); } catch (DuplicateNameException e) { @@ -811,12 +804,6 @@ public abstract class AbstractVirtualHost<X extends AbstractVirtualHost<X>> exte return _broker.getSecurityManager(); } - @Override - public ConfiguredObjectFactory getObjectFactory() - { - return _broker.getObjectFactory(); - } - public void close() { //Stop Connections diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/BindingRecoverer.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/BindingRecoverer.java index a75696e9b8..8aeff7f847 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/BindingRecoverer.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/BindingRecoverer.java @@ -35,7 +35,6 @@ import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.model.ConfiguredObjectFactory; import org.apache.qpid.server.model.Exchange; import org.apache.qpid.server.model.Queue; -import org.apache.qpid.server.plugin.ConfiguredObjectTypeFactory; import org.apache.qpid.server.queue.AMQQueue; import org.apache.qpid.server.store.AbstractDurableConfiguredObjectRecoverer; import org.apache.qpid.server.store.ConfiguredObjectRecord; @@ -125,10 +124,8 @@ public class BindingRecoverer extends AbstractDurableConfiguredObjectRecoverer<B attributesWithId.put(org.apache.qpid.server.model.Exchange.ID,_record.getId()); attributesWithId.put(org.apache.qpid.server.model.Exchange.DURABLE,true); - ConfiguredObjectTypeFactory<? extends Binding> configuredObjectTypeFactory = - _objectFactory.getConfiguredObjectTypeFactory(Binding.class, attributesWithId); UnresolvedConfiguredObject<? extends Binding> unresolvedConfiguredObject = - configuredObjectTypeFactory.recover(_record, _exchange, _queue); + _objectFactory.recover(_record, _exchange, _queue); Binding binding = (Binding<?>) unresolvedConfiguredObject.resolve(); binding.open(); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/DefaultUpgraderProvider.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/DefaultUpgraderProvider.java index fe2f867e41..956d44a27e 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/DefaultUpgraderProvider.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/DefaultUpgraderProvider.java @@ -31,8 +31,8 @@ import org.apache.log4j.Logger; import org.apache.qpid.server.exchange.TopicExchange; import org.apache.qpid.server.filter.FilterSupport; import org.apache.qpid.server.model.Binding; +import org.apache.qpid.server.model.BrokerModel; import org.apache.qpid.server.model.Exchange; -import org.apache.qpid.server.model.Model; import org.apache.qpid.server.model.Queue; import org.apache.qpid.server.model.UUIDGenerator; import org.apache.qpid.server.queue.QueueArgumentsConverter; @@ -96,7 +96,7 @@ public class DefaultUpgraderProvider implements UpgraderProvider currentUpgrader = addUpgrader(currentUpgrader, new Version3Upgrader()); case 4: currentUpgrader = addUpgrader(currentUpgrader, new Version4Upgrader()); - case (Model.MODEL_MAJOR_VERSION * 10) + Model.MODEL_MINOR_VERSION: + case (BrokerModel.MODEL_MAJOR_VERSION * 10) + BrokerModel.MODEL_MINOR_VERSION: currentUpgrader = addUpgrader(currentUpgrader, new NullUpgrader(recoverer)); break; diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ExchangeRecoverer.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ExchangeRecoverer.java index 9347b97606..920f9f0675 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ExchangeRecoverer.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ExchangeRecoverer.java @@ -28,7 +28,6 @@ import org.apache.qpid.server.exchange.ExchangeImpl; import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.model.ConfiguredObjectFactory; import org.apache.qpid.server.model.Exchange; -import org.apache.qpid.server.plugin.ConfiguredObjectTypeFactory; import org.apache.qpid.server.store.AbstractDurableConfiguredObjectRecoverer; import org.apache.qpid.server.store.ConfiguredObjectRecord; import org.apache.qpid.server.store.UnresolvedConfiguredObject; @@ -81,10 +80,8 @@ public class ExchangeRecoverer extends AbstractDurableConfiguredObjectRecoverer< attributesWithId.put(org.apache.qpid.server.model.Exchange.ID,record.getId()); attributesWithId.put(org.apache.qpid.server.model.Exchange.DURABLE,true); - ConfiguredObjectTypeFactory<? extends Exchange> configuredObjectTypeFactory = - _objectFactory.getConfiguredObjectTypeFactory(Exchange.class, attributesWithId); UnresolvedConfiguredObject<? extends Exchange> unresolvedConfiguredObject = - configuredObjectTypeFactory.recover(record, _vhost); + _objectFactory.recover(record, _vhost); _exchange = (ExchangeImpl<?>) unresolvedConfiguredObject.resolve(); } diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/QueueRecoverer.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/QueueRecoverer.java index 9606a44acb..221727ab6b 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/QueueRecoverer.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/QueueRecoverer.java @@ -32,7 +32,6 @@ import org.apache.qpid.server.exchange.ExchangeImpl; import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.model.ConfiguredObjectFactory; import org.apache.qpid.server.model.Queue; -import org.apache.qpid.server.plugin.ConfiguredObjectTypeFactory; import org.apache.qpid.server.queue.AMQQueue; import org.apache.qpid.server.store.AbstractDurableConfiguredObjectRecoverer; import org.apache.qpid.server.store.ConfiguredObjectRecord; @@ -123,10 +122,8 @@ public class QueueRecoverer extends AbstractDurableConfiguredObjectRecoverer<AMQ attributesWithId.put(Queue.ID,_record.getId()); attributesWithId.put(Queue.DURABLE,true); - ConfiguredObjectTypeFactory<? extends Queue> configuredObjectTypeFactory = - _objectFactory.getConfiguredObjectTypeFactory(Queue.class, attributesWithId); UnresolvedConfiguredObject<? extends Queue> unresolvedConfiguredObject = - configuredObjectTypeFactory.recover(_record, _virtualHost); + _objectFactory.recover(_record, _virtualHost); _queue = (AMQQueue<?>) unresolvedConfiguredObject.resolve(); } _queue.open(); diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java index 68469118f6..1408034e97 100755 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java @@ -26,7 +26,6 @@ import java.util.UUID; import java.util.concurrent.ScheduledFuture; import org.apache.qpid.common.Closeable; -import org.apache.qpid.server.configuration.updater.TaskExecutor; import org.apache.qpid.server.connection.IConnectionRegistry; import org.apache.qpid.server.exchange.AMQUnknownExchangeType; import org.apache.qpid.server.exchange.ExchangeImpl; @@ -34,7 +33,6 @@ import org.apache.qpid.server.logging.EventLogger; import org.apache.qpid.server.logging.EventLoggerProvider; import org.apache.qpid.server.message.MessageDestination; import org.apache.qpid.server.message.MessageSource; -import org.apache.qpid.server.model.ConfiguredObjectFactory; import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.protocol.LinkRegistry; import org.apache.qpid.server.queue.AMQQueue; @@ -90,8 +88,6 @@ public interface VirtualHostImpl< X extends VirtualHostImpl<X,Q,E>, Q extends AM SecurityManager getSecurityManager(); - ConfiguredObjectFactory getObjectFactory(); - void close(); UUID getId(); @@ -122,8 +118,6 @@ public interface VirtualHostImpl< X extends VirtualHostImpl<X,Q,E>, Q extends AM boolean getDefaultDeadLetterQueueEnabled(); - TaskExecutor getTaskExecutor(); - EventLogger getEventLogger(); } diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/BrokerConfigurationStoreCreatorTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/BrokerConfigurationStoreCreatorTest.java index 43b1ed508a..0068cab824 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/BrokerConfigurationStoreCreatorTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/BrokerConfigurationStoreCreatorTest.java @@ -40,8 +40,8 @@ import org.apache.qpid.server.configuration.updater.TaskExecutor; import org.apache.qpid.server.logging.EventLogger; import org.apache.qpid.server.logging.LogRecorder; import org.apache.qpid.server.model.Broker; +import org.apache.qpid.server.model.BrokerModel; import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; -import org.apache.qpid.server.model.Model; import org.apache.qpid.server.model.SystemContext; import org.apache.qpid.server.model.SystemContextImpl; import org.apache.qpid.test.utils.QpidTestCase; @@ -73,7 +73,7 @@ public class BrokerConfigurationStoreCreatorTest extends QpidTestCase _taskExecutor = new TaskExecutor(); _taskExecutor.start(); _systemContext = new SystemContextImpl(_taskExecutor, - new ConfiguredObjectFactoryImpl(Model.getInstance()), + new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()), mock(EventLogger.class), mock(LogRecorder.class), brokerOptions); @@ -130,7 +130,7 @@ public class BrokerConfigurationStoreCreatorTest extends QpidTestCase UUID testBrokerId = UUID.randomUUID(); brokerObjectMap.put(Broker.ID, testBrokerId); brokerObjectMap.put(Broker.NAME, testBrokerName); - brokerObjectMap.put(Broker.MODEL_VERSION, Model.MODEL_VERSION); + brokerObjectMap.put(Broker.MODEL_VERSION, BrokerModel.MODEL_VERSION); brokerObjectMap.put(Broker.STORE_VERSION, 1); StringWriter sw = new StringWriter(); diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/BrokerRecovererTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/BrokerRecovererTest.java index 2a718b5c15..9eca7458f2 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/BrokerRecovererTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/BrokerRecovererTest.java @@ -41,11 +41,11 @@ import org.apache.qpid.server.logging.EventLogger; import org.apache.qpid.server.logging.LogRecorder; import org.apache.qpid.server.model.AuthenticationProvider; import org.apache.qpid.server.model.Broker; +import org.apache.qpid.server.model.BrokerModel; import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.model.ConfiguredObjectFactory; import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; import org.apache.qpid.server.model.GroupProvider; -import org.apache.qpid.server.model.Model; import org.apache.qpid.server.model.Port; import org.apache.qpid.server.model.SystemContext; import org.apache.qpid.server.model.SystemContextImpl; @@ -74,7 +74,7 @@ public class BrokerRecovererTest extends TestCase { super.setUp(); - _configuredObjectFactory = new ConfiguredObjectFactoryImpl(Model.getInstance()); + _configuredObjectFactory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()); _taskExecutor = new TaskExecutor(); _taskExecutor.start(); _systemContext = new SystemContextImpl(_taskExecutor, @@ -83,7 +83,7 @@ public class BrokerRecovererTest extends TestCase when(_brokerEntry.getId()).thenReturn(_brokerId); when(_brokerEntry.getType()).thenReturn(Broker.class.getSimpleName()); Map<String, Object> attributesMap = new HashMap<String, Object>(); - attributesMap.put(Broker.MODEL_VERSION, Model.MODEL_VERSION); + attributesMap.put(Broker.MODEL_VERSION, BrokerModel.MODEL_VERSION); attributesMap.put(Broker.NAME, getName()); when(_brokerEntry.getAttributes()).thenReturn(attributesMap); @@ -113,7 +113,7 @@ public class BrokerRecovererTest extends TestCase attributes.put(Broker.CONNECTION_HEART_BEAT_DELAY, 2000); attributes.put(Broker.STATISTICS_REPORTING_PERIOD, 4000); attributes.put(Broker.STATISTICS_REPORTING_RESET_ENABLED, true); - attributes.put(Broker.MODEL_VERSION, Model.MODEL_VERSION); + attributes.put(Broker.MODEL_VERSION, BrokerModel.MODEL_VERSION); Map<String, Object> entryAttributes = new HashMap<String, Object>(); for (Map.Entry<String, Object> attribute : attributes.entrySet()) @@ -301,7 +301,7 @@ public class BrokerRecovererTest extends TestCase catch (IllegalConfigurationException e) { assertEquals("The model version '" + incompatibleVersion - + "' in configuration is incompatible with the broker model version '" + Model.MODEL_VERSION + "'", e.getMessage()); + + "' in configuration is incompatible with the broker model version '" + BrokerModel.MODEL_VERSION + "'", e.getMessage()); } } } @@ -310,7 +310,7 @@ public class BrokerRecovererTest extends TestCase public void testModelVersionValidationForIncompatibleMinorVersion() throws Exception { Map<String, Object> brokerAttributes = new HashMap<String, Object>(); - String incompatibleVersion = Model.MODEL_MAJOR_VERSION + "." + Integer.MAX_VALUE; + String incompatibleVersion = BrokerModel.MODEL_MAJOR_VERSION + "." + Integer.MAX_VALUE; brokerAttributes.put(Broker.MODEL_VERSION, incompatibleVersion); brokerAttributes.put(Broker.NAME, getName()); @@ -328,7 +328,7 @@ public class BrokerRecovererTest extends TestCase catch (IllegalConfigurationException e) { assertEquals("The model version '" + incompatibleVersion - + "' in configuration is incompatible with the broker model version '" + Model.MODEL_VERSION + "'", e.getMessage()); + + "' in configuration is incompatible with the broker model version '" + BrokerModel.MODEL_VERSION + "'", e.getMessage()); } } diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/FileKeyStoreCreationTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/FileKeyStoreCreationTest.java index 07e9cecb8b..f84ee8914a 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/FileKeyStoreCreationTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/FileKeyStoreCreationTest.java @@ -21,6 +21,7 @@ package org.apache.qpid.server.configuration.startup; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; import java.security.PrivilegedAction; import java.util.HashMap; @@ -34,12 +35,11 @@ import junit.framework.TestCase; import org.apache.qpid.server.model.AbstractConfiguredObject; import org.apache.qpid.server.model.Broker; +import org.apache.qpid.server.model.BrokerModel; import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.model.ConfiguredObjectFactory; import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; import org.apache.qpid.server.model.KeyStore; -import org.apache.qpid.server.model.Model; -import org.apache.qpid.server.plugin.ConfiguredObjectTypeFactory; import org.apache.qpid.server.security.FileKeyStore; import org.apache.qpid.server.security.SecurityManager; import org.apache.qpid.test.utils.TestSSLConstants; @@ -52,7 +52,7 @@ public class FileKeyStoreCreationTest extends TestCase public void setUp() throws Exception { super.setUp(); - _factory = new ConfiguredObjectFactoryImpl(Model.getInstance()); + _factory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()); } public void testCreateWithAllAttributesProvided() @@ -61,6 +61,8 @@ public class FileKeyStoreCreationTest extends TestCase Map<String, Object> attributesCopy = new HashMap<String, Object>(attributes); Broker broker = mock(Broker.class); + when(broker.getObjectFactory()).thenReturn(_factory); + when(broker.getModel()).thenReturn(_factory.getModel()); final FileKeyStore keyStore = createKeyStore(attributes, broker); @@ -96,17 +98,16 @@ public class FileKeyStoreCreationTest extends TestCase protected FileKeyStore createKeyStore(final Map<String, Object> attributes, final Broker broker) { - ConfiguredObjectTypeFactory configuredObjectTypeFactory = - _factory.getConfiguredObjectTypeFactory(KeyStore.class, attributes); - return (FileKeyStore) configuredObjectTypeFactory.create(attributes, broker); + return (FileKeyStore) _factory.create(KeyStore.class,attributes, broker); } public void testCreateWithMissedRequiredAttributes() { Map<String, Object> attributes = getKeyStoreAttributes(); - UUID id = UUID.randomUUID(); Broker broker = mock(Broker.class); + when(broker.getObjectFactory()).thenReturn(_factory); + when(broker.getModel()).thenReturn(_factory.getModel()); String[] mandatoryProperties = {KeyStore.NAME, FileKeyStore.PATH, FileKeyStore.PASSWORD}; for (int i = 0; i < mandatoryProperties.length; i++) diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/FileTrustStoreCreationTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/FileTrustStoreCreationTest.java index c6d3430a44..82eb924721 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/FileTrustStoreCreationTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/FileTrustStoreCreationTest.java @@ -21,6 +21,7 @@ package org.apache.qpid.server.configuration.startup; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; import java.security.PrivilegedAction; import java.util.HashMap; @@ -32,6 +33,8 @@ import javax.security.auth.Subject; import org.apache.qpid.server.model.AbstractConfiguredObject; import org.apache.qpid.server.model.Broker; +import org.apache.qpid.server.model.BrokerModel; +import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; import org.apache.qpid.server.model.TrustStore; import org.apache.qpid.server.security.FileTrustStore; import org.apache.qpid.server.security.FileTrustStoreImpl; @@ -47,7 +50,11 @@ public class FileTrustStoreCreationTest extends QpidTestCase Map<String, Object> attributes = getTrustStoreAttributes(id); Map<String, Object> attributesCopy = new HashMap<String, Object>(attributes); + ConfiguredObjectFactoryImpl factory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()); + Broker broker = mock(Broker.class); + when(broker.getObjectFactory()).thenReturn(factory); + when(broker.getModel()).thenReturn(factory.getModel()); final FileTrustStore trustStore = new FileTrustStoreImpl(attributes, broker); trustStore.open(); @@ -84,7 +91,10 @@ public class FileTrustStoreCreationTest extends QpidTestCase UUID id = UUID.randomUUID(); Map<String, Object> attributes = getTrustStoreAttributes(id); + ConfiguredObjectFactoryImpl factory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()); Broker broker = mock(Broker.class); + when(broker.getObjectFactory()).thenReturn(factory); + when(broker.getModel()).thenReturn(factory.getModel()); String[] mandatoryProperties = {TrustStore.NAME, FileTrustStore.PATH, FileTrustStore.PASSWORD}; for (int i = 0; i < mandatoryProperties.length; i++) diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/PreferencesProviderCreationTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/PreferencesProviderCreationTest.java index af56cf049f..69c4ab37cd 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/PreferencesProviderCreationTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/PreferencesProviderCreationTest.java @@ -31,6 +31,7 @@ import java.util.UUID; import org.apache.qpid.server.model.AuthenticationProvider; import org.apache.qpid.server.model.Broker; +import org.apache.qpid.server.model.ConfiguredObjectFactory; import org.apache.qpid.server.model.PreferencesProvider; import org.apache.qpid.server.model.adapter.FileSystemPreferencesProvider; import org.apache.qpid.server.model.adapter.FileSystemPreferencesProviderImpl; @@ -69,7 +70,10 @@ public class PreferencesProviderCreationTest extends QpidTestCase BrokerTestHelper.setUp(); _authenticationProvider = mock(AuthenticationProvider.class); _broker = BrokerTestHelper.createBrokerMock(); + ConfiguredObjectFactory factory = _broker.getObjectFactory(); when(_authenticationProvider.getParent(Broker.class)).thenReturn(_broker); + when(_authenticationProvider.getObjectFactory()).thenReturn(factory); + when(_authenticationProvider.getModel()).thenReturn(factory.getModel()); } public void tearDown() throws Exception diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/VirtualHostCreationTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/VirtualHostCreationTest.java index 5831fe3caa..9a56d30ac6 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/VirtualHostCreationTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/startup/VirtualHostCreationTest.java @@ -35,10 +35,10 @@ import org.apache.qpid.server.configuration.ConfigurationEntry; import org.apache.qpid.server.configuration.IllegalConfigurationException; import org.apache.qpid.server.logging.EventLogger; import org.apache.qpid.server.model.Broker; +import org.apache.qpid.server.model.BrokerModel; import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.model.ConfiguredObjectFactory; import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; -import org.apache.qpid.server.model.Model; import org.apache.qpid.server.model.SystemContext; import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.security.SecurityManager; @@ -53,11 +53,14 @@ public class VirtualHostCreationTest extends TestCase { SecurityManager securityManager = mock(SecurityManager.class); ConfigurationEntry entry = mock(ConfigurationEntry.class); - ConfiguredObjectFactory objectFactory = new ConfiguredObjectFactoryImpl(Model.getInstance()); SystemContext systemContext = mock(SystemContext.class); + ConfiguredObjectFactory objectFactory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()); + when(systemContext.getObjectFactory()).thenReturn(objectFactory); + when(systemContext.getModel()).thenReturn(objectFactory.getModel()); Broker parent = mock(Broker.class); when(parent.getObjectFactory()).thenReturn(objectFactory); + when(parent.getModel()).thenReturn(objectFactory.getModel()); when(parent.getSecurityManager()).thenReturn(securityManager); when(parent.getCategoryClass()).thenReturn(Broker.class); when(systemContext.getEventLogger()).thenReturn(mock(EventLogger.class)); @@ -93,10 +96,16 @@ public class VirtualHostCreationTest extends TestCase { SecurityManager securityManager = mock(SecurityManager.class); SystemContext systemContext = mock(SystemContext.class); + ConfiguredObjectFactory objectFactory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()); + when(systemContext.getObjectFactory()).thenReturn(objectFactory); + when(systemContext.getModel()).thenReturn(objectFactory.getModel()); + Broker parent = mock(Broker.class); when(parent.getSecurityManager()).thenReturn(securityManager); when(parent.getParent(eq(SystemContext.class))).thenReturn(systemContext); when(systemContext.getEventLogger()).thenReturn(mock(EventLogger.class)); + when(parent.getObjectFactory()).thenReturn(objectFactory); + when(parent.getModel()).thenReturn(objectFactory.getModel()); for (String name : mandatoryAttributes) { @@ -117,11 +126,7 @@ public class VirtualHostCreationTest extends TestCase { // pass } - catch(NullPointerException e) - { - System.err.println(name); - e.printStackTrace(); - } + } } } diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ConfigurationEntryStoreTestCase.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ConfigurationEntryStoreTestCase.java index 82ced3c274..bc44d00879 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ConfigurationEntryStoreTestCase.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ConfigurationEntryStoreTestCase.java @@ -20,22 +20,30 @@ */ package org.apache.qpid.server.configuration.store; +import static org.mockito.Mockito.mock; + import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Set; import java.util.UUID; +import org.apache.qpid.server.BrokerOptions; import org.apache.qpid.server.configuration.ConfigurationEntry; import org.apache.qpid.server.configuration.ConfigurationEntryImpl; import org.apache.qpid.server.configuration.updater.TaskExecutor; +import org.apache.qpid.server.logging.EventLogger; +import org.apache.qpid.server.logging.LogRecorder; import org.apache.qpid.server.model.AuthenticationProvider; import org.apache.qpid.server.model.Broker; +import org.apache.qpid.server.model.BrokerModel; import org.apache.qpid.server.model.ConfiguredObject; +import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; import org.apache.qpid.server.model.GroupProvider; import org.apache.qpid.server.model.KeyStore; import org.apache.qpid.server.model.Port; import org.apache.qpid.server.model.PreferencesProvider; +import org.apache.qpid.server.model.SystemContextImpl; import org.apache.qpid.server.model.Transport; import org.apache.qpid.server.model.TrustStore; import org.apache.qpid.server.model.VirtualHost; @@ -60,14 +68,20 @@ public abstract class ConfigurationEntryStoreTestCase extends QpidTestCase private Map<String, Object> _authenticationProviderAttributes; private TaskExecutor _taskExecutor; + private SystemContextImpl _systemContext; public void setUp() throws Exception { super.setUp(); + _taskExecutor = new TaskExecutor(); _taskExecutor.start(); + _systemContext = new SystemContextImpl(_taskExecutor, new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()), + mock(EventLogger.class), mock(LogRecorder.class), + new BrokerOptions()); + _brokerId = UUID.randomUUID(); _brokerAttributes = new HashMap<String, Object>(); _brokerAttributes.put(Broker.DEFAULT_VIRTUAL_HOST, "test"); @@ -91,6 +105,11 @@ public abstract class ConfigurationEntryStoreTestCase extends QpidTestCase addConfiguration(_authenticationProviderId, AuthenticationProvider.class.getSimpleName(), _authenticationProviderAttributes); } + SystemContextImpl getSystemContext() + { + return _systemContext; + } + @Override public void tearDown() throws Exception { diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/JsonConfigurationEntryStoreTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/JsonConfigurationEntryStoreTest.java index d3dc996d3e..62697548d5 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/JsonConfigurationEntryStoreTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/JsonConfigurationEntryStoreTest.java @@ -45,8 +45,8 @@ import org.apache.qpid.server.configuration.IllegalConfigurationException; import org.apache.qpid.server.logging.EventLogger; import org.apache.qpid.server.logging.LogRecorder; import org.apache.qpid.server.model.Broker; +import org.apache.qpid.server.model.BrokerModel; import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; -import org.apache.qpid.server.model.Model; import org.apache.qpid.server.model.PreferencesProvider; import org.apache.qpid.server.model.SystemContext; import org.apache.qpid.server.model.SystemContextImpl; @@ -100,7 +100,7 @@ public class JsonConfigurationEntryStoreTest extends ConfigurationEntryStoreTest final BrokerOptions brokerOptions = mock(BrokerOptions.class); when(brokerOptions.getConfigurationStoreLocation()).thenReturn(absolutePath); SystemContext context = new SystemContextImpl(getTaskExecutor(), - new ConfiguredObjectFactoryImpl(Model.getInstance()), + new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()), mock(EventLogger.class), mock(LogRecorder.class), brokerOptions); diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandlerTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandlerTest.java index 50169d9f4f..b569825b46 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandlerTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandlerTest.java @@ -44,8 +44,8 @@ import org.apache.qpid.server.configuration.updater.TaskExecutor; import org.apache.qpid.server.logging.EventLogger; import org.apache.qpid.server.logging.LogRecorder; import org.apache.qpid.server.model.Broker; +import org.apache.qpid.server.model.BrokerModel; import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; -import org.apache.qpid.server.model.Model; import org.apache.qpid.server.model.Port; import org.apache.qpid.server.model.Protocol; import org.apache.qpid.server.model.State; @@ -78,7 +78,7 @@ public class ManagementModeStoreHandlerTest extends QpidTestCase _taskExecutor = new TaskExecutor(); _taskExecutor.start(); - _systemContext = new SystemContextImpl(_taskExecutor, new ConfiguredObjectFactoryImpl(Model.getInstance()), mock( + _systemContext = new SystemContextImpl(_taskExecutor, new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()), mock( EventLogger.class), mock(LogRecorder.class), new BrokerOptions()); diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStoreTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStoreTest.java index 92d42d779f..40090efb17 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStoreTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStoreTest.java @@ -20,8 +20,6 @@ */ package org.apache.qpid.server.configuration.store; -import static org.mockito.Mockito.mock; - import java.io.File; import java.util.Collections; import java.util.HashMap; @@ -36,25 +34,15 @@ import org.apache.qpid.server.BrokerOptions; import org.apache.qpid.server.configuration.ConfigurationEntry; import org.apache.qpid.server.configuration.ConfigurationEntryImpl; import org.apache.qpid.server.configuration.IllegalConfigurationException; -import org.apache.qpid.server.logging.EventLogger; -import org.apache.qpid.server.logging.LogRecorder; import org.apache.qpid.server.model.Broker; -import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; -import org.apache.qpid.server.model.Model; -import org.apache.qpid.server.model.SystemContext; -import org.apache.qpid.server.model.SystemContextImpl; public class MemoryConfigurationEntryStoreTest extends ConfigurationEntryStoreTestCase { - private SystemContext _systemContext; @Override public void setUp() throws Exception { super.setUp(); - _systemContext = new SystemContextImpl(getTaskExecutor(), new ConfiguredObjectFactoryImpl(Model.getInstance()), - mock(EventLogger.class), mock(LogRecorder.class), - new BrokerOptions()); } @@ -66,7 +54,7 @@ public class MemoryConfigurationEntryStoreTest extends ConfigurationEntryStoreTe broker.putAll(brokerAttributes); ObjectMapper mapper = new ObjectMapper(); - return new MemoryConfigurationEntryStore(mapper.writeValueAsString(broker), Collections.<String,String>emptyMap()); + return new MemoryConfigurationEntryStore(getSystemContext(),mapper.writeValueAsString(broker), Collections.<String,String>emptyMap()); } @Override @@ -84,7 +72,7 @@ public class MemoryConfigurationEntryStoreTest extends ConfigurationEntryStoreTe { try { - new MemoryConfigurationEntryStore(null, null, null, Collections.<String,String>emptyMap()); + new MemoryConfigurationEntryStore(getSystemContext(), null, null, Collections.<String,String>emptyMap()); fail("Cannot create a memory store without either initial store or path to an initial store file"); } catch(IllegalConfigurationException e) @@ -95,7 +83,7 @@ public class MemoryConfigurationEntryStoreTest extends ConfigurationEntryStoreTe public void testCreateWithNullJson() { - MemoryConfigurationEntryStore store = new MemoryConfigurationEntryStore(null, Collections.<String,String>emptyMap()); + MemoryConfigurationEntryStore store = new MemoryConfigurationEntryStore(getSystemContext(),null, Collections.<String,String>emptyMap()); ConfigurationEntry root = store.getRootEntry(); assertNotNull("Root entry is not found", root); @@ -107,7 +95,7 @@ public class MemoryConfigurationEntryStoreTest extends ConfigurationEntryStoreTe Map<String, Object> brokerAttributes = new HashMap<String, Object>(); brokerAttributes.put(Broker.NAME, getTestName()); MemoryConfigurationEntryStore initialStoreFile = createStore(brokerId, brokerAttributes); - MemoryConfigurationEntryStore store = new MemoryConfigurationEntryStore(_systemContext, null, initialStoreFile, Collections.<String,String>emptyMap()); + MemoryConfigurationEntryStore store = new MemoryConfigurationEntryStore(getSystemContext(), null, initialStoreFile, Collections.<String,String>emptyMap()); ConfigurationEntry root = store.getRootEntry(); assertNotNull("Root entry is not found", root); @@ -128,11 +116,11 @@ public class MemoryConfigurationEntryStoreTest extends ConfigurationEntryStoreTe setTestSystemProperty("QPID_HOME", TMP_FOLDER); setTestSystemProperty("QPID_WORK", TMP_FOLDER + File.separator + "work"); } - MemoryConfigurationEntryStore initialStore = new MemoryConfigurationEntryStore(_systemContext,BrokerOptions.DEFAULT_INITIAL_CONFIG_LOCATION, null, new BrokerOptions().getConfigProperties()); + MemoryConfigurationEntryStore initialStore = new MemoryConfigurationEntryStore(getSystemContext(),BrokerOptions.DEFAULT_INITIAL_CONFIG_LOCATION, null, new BrokerOptions().getConfigProperties()); ConfigurationEntry initialStoreRoot = initialStore.getRootEntry(); assertNotNull("Initial store root entry is not found", initialStoreRoot); - MemoryConfigurationEntryStore store = new MemoryConfigurationEntryStore(_systemContext, null, initialStore, Collections.<String,String>emptyMap()); + MemoryConfigurationEntryStore store = new MemoryConfigurationEntryStore(getSystemContext(), null, initialStore, Collections.<String,String>emptyMap()); ConfigurationEntry root = store.getRootEntry(); assertNotNull("Root entry is not found", root); diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/consumer/MockConsumer.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/consumer/MockConsumer.java index 269d36e5c1..7fd6dcead2 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/consumer/MockConsumer.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/consumer/MockConsumer.java @@ -41,6 +41,9 @@ import org.apache.qpid.server.filter.SimpleFilterManager; import org.apache.qpid.server.logging.LogSubject; import org.apache.qpid.server.message.MessageInstance; import org.apache.qpid.server.message.ServerMessage; +import org.apache.qpid.server.model.BrokerModel; +import org.apache.qpid.server.model.ConfiguredObjectFactory; +import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; import org.apache.qpid.server.model.Consumer; import org.apache.qpid.server.model.Port; import org.apache.qpid.server.model.Session; @@ -239,6 +242,9 @@ public class MockConsumer implements ConsumerTarget { _modelObject = mock(Session.class); when(_modelObject.getCategoryClass()).thenReturn(Session.class); + ConfiguredObjectFactory factory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()); + when(_modelObject.getObjectFactory()).thenReturn(factory); + when(_modelObject.getModel()).thenReturn(factory.getModel()); } @Override diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/exchange/FanoutExchangeTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/exchange/FanoutExchangeTest.java index 6217f3ecfa..77f594f7a1 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/exchange/FanoutExchangeTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/exchange/FanoutExchangeTest.java @@ -41,6 +41,8 @@ import org.apache.qpid.server.logging.EventLogger; import org.apache.qpid.server.message.AMQMessageHeader; import org.apache.qpid.server.message.InstanceProperties; import org.apache.qpid.server.message.ServerMessage; +import org.apache.qpid.server.model.BrokerModel; +import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; import org.apache.qpid.server.model.Exchange; import org.apache.qpid.server.model.Queue; import org.apache.qpid.server.queue.AMQQueue; @@ -54,6 +56,7 @@ public class FanoutExchangeTest extends TestCase private FanoutExchange _exchange; private VirtualHostImpl _virtualHost; private TaskExecutor _taskExecutor; + private ConfiguredObjectFactoryImpl _objectFactory; public void setUp() throws UnknownExchangeException { @@ -69,6 +72,8 @@ public class FanoutExchangeTest extends TestCase when(_virtualHost.getSecurityManager()).thenReturn(securityManager); when(_virtualHost.getEventLogger()).thenReturn(new EventLogger()); when(_virtualHost.getTaskExecutor()).thenReturn(_taskExecutor); + _objectFactory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()); + when(_virtualHost.getObjectFactory()).thenReturn(_objectFactory); _exchange = new FanoutExchange(attributes, _virtualHost); _exchange.open(); } @@ -120,6 +125,7 @@ public class FanoutExchangeTest extends TestCase private AMQQueue bindQueue() { AMQQueue queue = mockQueue(); + _exchange.addBinding("matters", queue, null); return queue; } @@ -129,6 +135,8 @@ public class FanoutExchangeTest extends TestCase AMQQueue queue = mock(AMQQueue.class); when(queue.getVirtualHost()).thenReturn(_virtualHost); when(queue.getCategoryClass()).thenReturn(Queue.class); + when(queue.getObjectFactory()).thenReturn(_objectFactory); + when(queue.getModel()).thenReturn(_objectFactory.getModel()); return queue; } diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/exchange/HeadersBindingTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/exchange/HeadersBindingTest.java index 9b1da6225b..ec901e5067 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/exchange/HeadersBindingTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/exchange/HeadersBindingTest.java @@ -35,6 +35,8 @@ import org.apache.qpid.server.binding.BindingImpl; import org.apache.qpid.server.logging.EventLogger; import org.apache.qpid.server.message.AMQMessageHeader; import org.apache.qpid.server.model.Binding; +import org.apache.qpid.server.model.BrokerModel; +import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; import org.apache.qpid.server.plugin.ExchangeType; import org.apache.qpid.server.queue.AMQQueue; import org.apache.qpid.server.virtualhost.VirtualHostImpl; @@ -44,6 +46,8 @@ import org.apache.qpid.server.virtualhost.VirtualHostImpl; public class HeadersBindingTest extends TestCase { + private ConfiguredObjectFactoryImpl _objectFactory; + private class MockHeader implements AMQMessageHeader { @@ -146,14 +150,17 @@ public class HeadersBindingTest extends TestCase { _count++; _queue = mock(AMQQueue.class); + _objectFactory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()); VirtualHostImpl vhost = mock(VirtualHostImpl.class); when(_queue.getVirtualHost()).thenReturn(vhost); + when(_queue.getObjectFactory()).thenReturn(_objectFactory); when(vhost.getSecurityManager()).thenReturn(mock(org.apache.qpid.server.security.SecurityManager.class)); final EventLogger eventLogger = new EventLogger(); when(vhost.getEventLogger()).thenReturn(eventLogger); _exchange = mock(ExchangeImpl.class); when(_exchange.getExchangeType()).thenReturn(mock(ExchangeType.class)); when(_exchange.getEventLogger()).thenReturn(eventLogger); + when(_exchange.getObjectFactory()).thenReturn(_objectFactory); } protected String getQueueName() diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/exchange/HeadersExchangeTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/exchange/HeadersExchangeTest.java index 28cb59256d..86c5e23a0f 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/exchange/HeadersExchangeTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/exchange/HeadersExchangeTest.java @@ -44,6 +44,8 @@ import org.apache.qpid.server.logging.EventLogger; import org.apache.qpid.server.message.AMQMessageHeader; import org.apache.qpid.server.message.InstanceProperties; import org.apache.qpid.server.message.ServerMessage; +import org.apache.qpid.server.model.BrokerModel; +import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; import org.apache.qpid.server.model.Exchange; import org.apache.qpid.server.model.Queue; import org.apache.qpid.server.model.VirtualHost; @@ -57,6 +59,7 @@ public class HeadersExchangeTest extends TestCase private HeadersExchange _exchange; private VirtualHostImpl _virtualHost; private TaskExecutor _taskExecutor; + private ConfiguredObjectFactoryImpl _factory; @Override public void setUp() throws Exception @@ -71,6 +74,9 @@ public class HeadersExchangeTest extends TestCase when(_virtualHost.getEventLogger()).thenReturn(new EventLogger()); when(_virtualHost.getCategoryClass()).thenReturn(VirtualHost.class); when(_virtualHost.getTaskExecutor()).thenReturn(_taskExecutor); + _factory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()); + when(_virtualHost.getObjectFactory()).thenReturn(_factory); + when(_virtualHost.getModel()).thenReturn(_factory.getModel()); Map<String,Object> attributes = new HashMap<String, Object>(); attributes.put(Exchange.ID, UUID.randomUUID()); attributes.put(Exchange.NAME, "test"); @@ -143,6 +149,8 @@ public class HeadersExchangeTest extends TestCase when(q.toString()).thenReturn(name); when(q.getVirtualHost()).thenReturn(_virtualHost); when(q.getCategoryClass()).thenReturn(Queue.class); + when(q.getObjectFactory()).thenReturn(_factory); + when(q.getModel()).thenReturn(_factory.getModel()); return q; } diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderFactoryTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderFactoryTest.java index 9479447fe6..0e792a4929 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderFactoryTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderFactoryTest.java @@ -33,6 +33,7 @@ import org.apache.qpid.server.configuration.IllegalConfigurationException; import org.apache.qpid.server.model.AuthenticationProvider; import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.model.ConfiguredObject; +import org.apache.qpid.server.model.ConfiguredObjectFactory; import org.apache.qpid.server.model.PreferencesProvider; import org.apache.qpid.server.util.BrokerTestHelper; import org.apache.qpid.test.utils.QpidTestCase; @@ -51,6 +52,11 @@ public class FileSystemPreferencesProviderFactoryTest extends QpidTestCase _authenticationProvider = mock(AuthenticationProvider.class); _broker = BrokerTestHelper.createBrokerMock(); when(_authenticationProvider.getParent(Broker.class)).thenReturn(_broker); + ConfiguredObjectFactory objectFactory = _broker.getObjectFactory(); + when(_authenticationProvider.getModel()).thenReturn(objectFactory.getModel()); + when(_authenticationProvider.getObjectFactory()).thenReturn(objectFactory); + when(_authenticationProvider.getCategoryClass()).thenReturn(AuthenticationProvider.class); + _factory = new FileSystemPreferencesProviderFactory(); } @@ -82,7 +88,7 @@ public class FileSystemPreferencesProviderFactoryTest extends QpidTestCase { attributes.put(FileSystemPreferencesProvider.PATH, file.getAbsolutePath()); attributes.put(ConfiguredObject.ID, id); - PreferencesProvider provider = _factory.create(attributes, _authenticationProvider); + PreferencesProvider provider = _factory.create(null, attributes, _authenticationProvider); assertNotNull("Preferences provider was not instantiated", provider); assertEquals("Unexpected name", "test-provider", provider.getName()); assertEquals("Unexpected id", id, provider.getId()); @@ -107,7 +113,7 @@ public class FileSystemPreferencesProviderFactoryTest extends QpidTestCase { attributes.put(FileSystemPreferencesProvider.PATH, file.getAbsolutePath()); attributes.put(ConfiguredObject.ID, id); - _factory.create(attributes, _authenticationProvider); + _factory.create(null, attributes, _authenticationProvider); } catch (IllegalConfigurationException e) { @@ -127,7 +133,7 @@ public class FileSystemPreferencesProviderFactoryTest extends QpidTestCase { attributes.put(FileSystemPreferencesProvider.PATH, file.getAbsolutePath()); attributes.put(ConfiguredObject.ID, id); - PreferencesProvider provider = _factory.create(attributes, _authenticationProvider); + PreferencesProvider provider = _factory.create(null, attributes, _authenticationProvider); assertNotNull("Preferences provider was not recovered", provider); assertEquals("Unexpected name", "test-provider", provider.getName()); assertEquals("Unexpected id", id, provider.getId()); diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderTest.java index d8ee851813..fee31b3369 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProviderTest.java @@ -35,6 +35,7 @@ import org.apache.qpid.server.configuration.updater.TaskExecutor; import org.apache.qpid.server.model.AuthenticationProvider; import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.model.ConfiguredObject; +import org.apache.qpid.server.model.ConfiguredObjectFactory; import org.apache.qpid.server.model.State; import org.apache.qpid.server.util.BrokerTestHelper; import org.apache.qpid.test.utils.QpidTestCase; @@ -66,6 +67,10 @@ public class FileSystemPreferencesProviderTest extends QpidTestCase when(_broker.getTaskExecutor()).thenReturn(_taskExecutor); when(_authenticationProvider.getParent(Broker.class)).thenReturn(_broker); + ConfiguredObjectFactory objectFactory = _broker.getObjectFactory(); + when(_authenticationProvider.getModel()).thenReturn(objectFactory.getModel()); + when(_authenticationProvider.getObjectFactory()).thenReturn(objectFactory); + when(_authenticationProvider.getCategoryClass()).thenReturn(AuthenticationProvider.class); } protected void tearDown() throws Exception diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/PortFactoryTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/PortFactoryTest.java index 80b29ac6b2..73a655bfea 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/PortFactoryTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/PortFactoryTest.java @@ -38,6 +38,9 @@ import org.apache.qpid.server.configuration.BrokerProperties; import org.apache.qpid.server.configuration.IllegalConfigurationException; import org.apache.qpid.server.model.AuthenticationProvider; import org.apache.qpid.server.model.Broker; +import org.apache.qpid.server.model.BrokerModel; +import org.apache.qpid.server.model.ConfiguredObjectFactory; +import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; import org.apache.qpid.server.model.KeyStore; import org.apache.qpid.server.model.Port; import org.apache.qpid.server.model.Protocol; @@ -63,7 +66,7 @@ public class PortFactoryTest extends QpidTestCase private TrustStore _trustStore = mock(TrustStore.class); private String _authProviderName = "authProvider"; private AuthenticationProvider _authProvider = mock(AuthenticationProvider.class); - private PortFactory _portFactory; + private ConfiguredObjectFactoryImpl _factory; @Override @@ -73,9 +76,24 @@ public class PortFactoryTest extends QpidTestCase when(_broker.getChildren(eq(AuthenticationProvider.class))).thenReturn(Collections.singleton(_authProvider)); when(_broker.getCategoryClass()).thenReturn(Broker.class); + ConfiguredObjectFactory objectFactory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()); + when(_broker.getObjectFactory()).thenReturn(objectFactory); + when(_broker.getModel()).thenReturn(objectFactory.getModel()); + when(_authProvider.getModel()).thenReturn(objectFactory.getModel()); + when(_authProvider.getObjectFactory()).thenReturn(objectFactory); + when(_authProvider.getCategoryClass()).thenReturn(AuthenticationProvider.class); + + + when(_keyStore.getModel()).thenReturn(objectFactory.getModel()); + when(_keyStore.getObjectFactory()).thenReturn(objectFactory); + when(_trustStore.getModel()).thenReturn(objectFactory.getModel()); + when(_trustStore.getObjectFactory()).thenReturn(objectFactory); + + setTestSystemProperty(BrokerProperties.PROPERTY_BROKER_DEFAULT_AMQP_PROTOCOL_EXCLUDES, null); setTestSystemProperty(BrokerProperties.PROPERTY_BROKER_DEFAULT_AMQP_PROTOCOL_INCLUDES, null); - _portFactory = new PortFactory(); + _factory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()); + _attributes.put(Port.ID, _portId); _attributes.put(Port.NAME, getName()); _attributes.put(Port.PORT, _portNumber); _attributes.put(Port.TRANSPORTS, _tcpStringSet); @@ -93,7 +111,7 @@ public class PortFactoryTest extends QpidTestCase attributes.put(Port.NAME, getName()); attributes.put(Port.AUTHENTICATION_PROVIDER, _authProviderName); - Port<?> port = _portFactory.createPort(_portId, _broker, attributes); + Port<?> port = _factory.create(Port.class, attributes, _broker); Collection<Protocol> protocols = port.getAvailableProtocols(); @@ -111,7 +129,8 @@ public class PortFactoryTest extends QpidTestCase attributes.put(Port.PORT, 1); attributes.put(Port.NAME, getName()); attributes.put(Port.AUTHENTICATION_PROVIDER, _authProviderName); - Port<?> port = _portFactory.createPort(_portId, _broker, attributes); + Port<?> port = _factory.create(Port.class, attributes, _broker); + Collection<Protocol> protocols = port.getAvailableProtocols(); @@ -130,7 +149,7 @@ public class PortFactoryTest extends QpidTestCase attributes.put(Port.PORT, 1); attributes.put(Port.NAME, getName()); attributes.put(Port.AUTHENTICATION_PROVIDER, _authProviderName); - Port<?> port = _portFactory.createPort(_portId, _broker, attributes); + Port<?> port = _factory.create(Port.class, attributes, _broker); Collection<Protocol> protocols = port.getAvailableProtocols(); @@ -144,7 +163,7 @@ public class PortFactoryTest extends QpidTestCase attributes.put(Port.PORT, 1); attributes.put(Port.NAME, getName()); attributes.put(Port.AUTHENTICATION_PROVIDER, _authProviderName); - Port port = _portFactory.createPort(_portId, _broker, attributes); + Port<?> port = _factory.create(Port.class, attributes, _broker); assertNotNull(port); assertTrue(port instanceof AmqpPort); @@ -283,7 +302,7 @@ public class PortFactoryTest extends QpidTestCase _attributes.put(Port.TRUST_STORES, Arrays.asList(trustStoreNames)); } - Port port = _portFactory.createPort(_portId, _broker, _attributes); + Port<?> port = _factory.create(Port.class, _attributes, _broker); assertNotNull(port); assertTrue(port instanceof AmqpPort); @@ -316,8 +335,9 @@ public class PortFactoryTest extends QpidTestCase _attributes.put(Port.PORT, _portNumber); _attributes.put(Port.TRANSPORTS, _tcpStringSet); _attributes.put(Port.NAME, getName()); + _attributes.put(Port.ID, _portId); - Port port = _portFactory.createPort(_portId, _broker, _attributes); + Port<?> port = _factory.create(Port.class, _attributes, _broker); assertNotNull(port); assertFalse("Port should not be an AMQP-specific subclass", port instanceof AmqpPort); @@ -341,8 +361,9 @@ public class PortFactoryTest extends QpidTestCase _attributes.put(Port.AUTHENTICATION_PROVIDER, _authProviderName); _attributes.put(Port.PORT, _portNumber); _attributes.put(Port.NAME, getName()); + _attributes.put(Port.ID, _portId); - Port port = _portFactory.createPort(_portId, _broker, _attributes); + Port<?> port = _factory.create(Port.class, _attributes, _broker); assertNotNull(port); assertFalse("Port not be an AMQP-specific port subclass", port instanceof AmqpPort); @@ -364,7 +385,7 @@ public class PortFactoryTest extends QpidTestCase try { - _portFactory.createPort(_portId, _broker, _attributes); + Port<?> port = _factory.create(Port.class, _attributes, _broker); fail("Exception not thrown"); } catch (IllegalConfigurationException e) @@ -387,7 +408,7 @@ public class PortFactoryTest extends QpidTestCase try { - _portFactory.createPort(_portId, _broker, attributes); + Port<?> port = _factory.create(Port.class, attributes, _broker); fail("RMI port creation should fail as another one already exist"); } catch(IllegalConfigurationException e) @@ -411,7 +432,7 @@ public class PortFactoryTest extends QpidTestCase try { - _portFactory.createPort(_portId, _broker, attributes); + Port<?> port = _factory.create(Port.class, attributes, _broker); fail("RMI port creation should fail due to requesting SSL"); } catch(IllegalConfigurationException e) diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/LastValueQueueListTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/LastValueQueueListTest.java index d4914e7ecf..bd65566215 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/LastValueQueueListTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/LastValueQueueListTest.java @@ -32,6 +32,9 @@ import org.apache.qpid.server.logging.EventLogger; import org.apache.qpid.server.message.AMQMessageHeader; import org.apache.qpid.server.message.MessageReference; import org.apache.qpid.server.message.ServerMessage; +import org.apache.qpid.server.model.BrokerModel; +import org.apache.qpid.server.model.ConfiguredObjectFactory; +import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; import org.apache.qpid.server.model.Queue; import org.apache.qpid.server.security.SecurityManager; import org.apache.qpid.server.virtualhost.VirtualHostImpl; @@ -58,6 +61,9 @@ public class LastValueQueueListTest extends TestCase final VirtualHostImpl virtualHost = mock(VirtualHostImpl.class); when(virtualHost.getSecurityManager()).thenReturn(mock(SecurityManager.class)); when(virtualHost.getEventLogger()).thenReturn(new EventLogger()); + ConfiguredObjectFactory factory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()); + when(virtualHost.getObjectFactory()).thenReturn(factory); + when(virtualHost.getModel()).thenReturn(factory.getModel()); _queue = new LastValueQueueImpl(queueAttributes, virtualHost); _queue.open(); _list = _queue.getEntries(); diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/PriorityQueueListTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/PriorityQueueListTest.java index d619d62b10..0104597fa3 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/PriorityQueueListTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/PriorityQueueListTest.java @@ -31,6 +31,9 @@ import org.apache.qpid.server.logging.EventLogger; import org.apache.qpid.server.message.AMQMessageHeader; import org.apache.qpid.server.message.MessageReference; import org.apache.qpid.server.message.ServerMessage; +import org.apache.qpid.server.model.BrokerModel; +import org.apache.qpid.server.model.ConfiguredObjectFactory; +import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; import org.apache.qpid.server.model.Queue; import org.apache.qpid.server.security.SecurityManager; import org.apache.qpid.server.util.BrokerTestHelper; @@ -58,6 +61,9 @@ public class PriorityQueueListTest extends QpidTestCase final VirtualHostImpl virtualHost = mock(VirtualHostImpl.class); when(virtualHost.getSecurityManager()).thenReturn(mock(SecurityManager.class)); when(virtualHost.getEventLogger()).thenReturn(new EventLogger()); + ConfiguredObjectFactory factory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()); + when(virtualHost.getObjectFactory()).thenReturn(factory); + when(virtualHost.getModel()).thenReturn(factory.getModel()); PriorityQueueImpl queue = new PriorityQueueImpl(queueAttributes, virtualHost); queue.open(); _list = queue.getEntries(); diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/QueueEntryImplTestBase.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/QueueEntryImplTestBase.java index b6f8f69843..3eb002d66f 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/QueueEntryImplTestBase.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/QueueEntryImplTestBase.java @@ -33,6 +33,9 @@ import org.apache.qpid.server.message.MessageInstance; import org.apache.qpid.server.message.MessageInstance.EntryState; import org.apache.qpid.server.message.MessageReference; import org.apache.qpid.server.message.ServerMessage; +import org.apache.qpid.server.model.BrokerModel; +import org.apache.qpid.server.model.ConfiguredObjectFactory; +import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; import org.apache.qpid.server.model.Queue; import org.apache.qpid.server.virtualhost.VirtualHostImpl; @@ -199,6 +202,10 @@ public abstract class QueueEntryImplTestBase extends TestCase when(virtualHost.getSecurityManager()).thenReturn(mock(org.apache.qpid.server.security.SecurityManager.class)); when(virtualHost.getEventLogger()).thenReturn(new EventLogger()); + ConfiguredObjectFactory factory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()); + when(virtualHost.getObjectFactory()).thenReturn(factory); + when(virtualHost.getModel()).thenReturn(factory.getModel()); + StandardQueueImpl queue = new StandardQueueImpl(queueAttributes, virtualHost); queue.open(); OrderedQueueEntryList queueEntryList = queue.getEntries(); diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SimpleQueueEntryImplTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SimpleQueueEntryImplTest.java index b71d752fe7..870dcde1b8 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SimpleQueueEntryImplTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SimpleQueueEntryImplTest.java @@ -30,6 +30,9 @@ import java.util.UUID; import org.apache.qpid.server.logging.EventLogger; import org.apache.qpid.server.message.MessageReference; import org.apache.qpid.server.message.ServerMessage; +import org.apache.qpid.server.model.BrokerModel; +import org.apache.qpid.server.model.ConfiguredObjectFactory; +import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; import org.apache.qpid.server.model.Queue; import org.apache.qpid.server.virtualhost.VirtualHostImpl; @@ -47,6 +50,9 @@ public class SimpleQueueEntryImplTest extends QueueEntryImplTestBase final VirtualHostImpl virtualHost = mock(VirtualHostImpl.class); when(virtualHost.getSecurityManager()).thenReturn(mock(org.apache.qpid.server.security.SecurityManager.class)); when(virtualHost.getEventLogger()).thenReturn(new EventLogger()); + ConfiguredObjectFactory factory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()); + when(virtualHost.getObjectFactory()).thenReturn(factory); + when(virtualHost.getModel()).thenReturn(factory.getModel()); StandardQueueImpl queue = new StandardQueueImpl(queueAttributes, virtualHost); queue.open(); queueEntryList = queue.getEntries(); diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SortedQueueEntryListTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SortedQueueEntryListTest.java index 0f41b32696..c8943ad597 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SortedQueueEntryListTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SortedQueueEntryListTest.java @@ -33,6 +33,9 @@ import org.apache.qpid.server.logging.EventLogger; import org.apache.qpid.server.message.AMQMessageHeader; import org.apache.qpid.server.message.MessageReference; import org.apache.qpid.server.message.ServerMessage; +import org.apache.qpid.server.model.BrokerModel; +import org.apache.qpid.server.model.ConfiguredObjectFactory; +import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; import org.apache.qpid.server.model.LifetimePolicy; import org.apache.qpid.server.model.Queue; import org.apache.qpid.server.security.SecurityManager; @@ -86,6 +89,9 @@ public class SortedQueueEntryListTest extends QueueEntryListTestBase final VirtualHostImpl virtualHost = mock(VirtualHostImpl.class); when(virtualHost.getSecurityManager()).thenReturn(mock(SecurityManager.class)); when(virtualHost.getEventLogger()).thenReturn(new EventLogger()); + ConfiguredObjectFactory factory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()); + when(virtualHost.getObjectFactory()).thenReturn(factory); + when(virtualHost.getModel()).thenReturn(factory.getModel()); _testQueue = new SortedQueueImpl(attributes, virtualHost) { SelfValidatingSortedQueueEntryList _entries; diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SortedQueueEntryTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SortedQueueEntryTest.java index a116af2733..64c0b10df7 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SortedQueueEntryTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SortedQueueEntryTest.java @@ -32,6 +32,9 @@ import org.apache.qpid.server.logging.EventLogger; import org.apache.qpid.server.message.AMQMessageHeader; import org.apache.qpid.server.message.MessageReference; import org.apache.qpid.server.message.ServerMessage; +import org.apache.qpid.server.model.BrokerModel; +import org.apache.qpid.server.model.ConfiguredObjectFactory; +import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; import org.apache.qpid.server.model.LifetimePolicy; import org.apache.qpid.server.model.Queue; import org.apache.qpid.server.virtualhost.VirtualHostImpl; @@ -56,6 +59,9 @@ public class SortedQueueEntryTest extends QueueEntryImplTestBase final VirtualHostImpl virtualHost = mock(VirtualHostImpl.class); when(virtualHost.getSecurityManager()).thenReturn(mock(org.apache.qpid.server.security.SecurityManager.class)); when(virtualHost.getEventLogger()).thenReturn(new EventLogger()); + ConfiguredObjectFactory factory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()); + when(virtualHost.getObjectFactory()).thenReturn(factory); + when(virtualHost.getModel()).thenReturn(factory.getModel()); SortedQueueImpl queue = new SortedQueueImpl(attributes, virtualHost) { SelfValidatingSortedQueueEntryList _entries; diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/StandardQueueEntryListTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/StandardQueueEntryListTest.java index ef3bc0b824..5f05ddff1e 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/StandardQueueEntryListTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/StandardQueueEntryListTest.java @@ -31,6 +31,8 @@ import java.util.concurrent.ConcurrentHashMap; import org.apache.qpid.server.logging.EventLogger; import org.apache.qpid.server.message.MessageReference; import org.apache.qpid.server.message.ServerMessage; +import org.apache.qpid.server.model.BrokerModel; +import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; import org.apache.qpid.server.model.Queue; import org.apache.qpid.server.security.SecurityManager; import org.apache.qpid.server.virtualhost.VirtualHostImpl; @@ -43,6 +45,7 @@ public class StandardQueueEntryListTest extends QueueEntryListTestBase private static final String SCAVENGE_PROP = "qpid.queue.scavenge_count"; private String oldScavengeValue = null; + private ConfiguredObjectFactoryImpl _factory; @Override protected void setUp() @@ -55,6 +58,9 @@ public class StandardQueueEntryListTest extends QueueEntryListTestBase final VirtualHostImpl virtualHost = mock(VirtualHostImpl.class); when(virtualHost.getSecurityManager()).thenReturn(mock(SecurityManager.class)); when(virtualHost.getEventLogger()).thenReturn(new EventLogger()); + _factory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()); + when(virtualHost.getObjectFactory()).thenReturn(_factory); + when(virtualHost.getModel()).thenReturn(_factory.getModel()); _testQueue = new StandardQueueImpl(queueAttributes, virtualHost); _testQueue.open(); _sqel = _testQueue.getEntries(); @@ -101,6 +107,9 @@ public class StandardQueueEntryListTest extends QueueEntryListTestBase final VirtualHostImpl virtualHost = mock(VirtualHostImpl.class); when(virtualHost.getSecurityManager()).thenReturn(mock(SecurityManager.class)); when(virtualHost.getEventLogger()).thenReturn(new EventLogger()); + when(virtualHost.getObjectFactory()).thenReturn(_factory); + when(virtualHost.getModel()).thenReturn(_factory.getModel()); + StandardQueueImpl queue = new StandardQueueImpl(queueAttributes, virtualHost); queue.open(); return queue.getEntries(); diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManagerTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManagerTest.java index d57c79fc93..9a6c641314 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManagerTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/AnonymousAuthenticationManagerTest.java @@ -21,20 +21,19 @@ package org.apache.qpid.server.security.auth.manager; import static org.apache.qpid.server.security.auth.AuthenticatedPrincipalTestHelper.assertOnlyContainsWrapped; -import static org.mockito.Mockito.mock; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; import javax.security.sasl.SaslException; import javax.security.sasl.SaslServer; import org.apache.qpid.server.model.AuthenticationProvider; -import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.security.auth.AuthenticationResult; +import org.apache.qpid.server.util.BrokerTestHelper; import org.apache.qpid.test.utils.QpidTestCase; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; - public class AnonymousAuthenticationManagerTest extends QpidTestCase { private AuthenticationManager _manager; @@ -46,7 +45,7 @@ public class AnonymousAuthenticationManagerTest extends QpidTestCase Map<String,Object> attrs = new HashMap<String, Object>(); attrs.put(AuthenticationProvider.ID, UUID.randomUUID()); attrs.put(AuthenticationProvider.NAME, getTestName()); - _manager = new AnonymousAuthenticationManager(attrs, mock(Broker.class)); + _manager = new AnonymousAuthenticationManager(attrs, BrokerTestHelper.createBrokerMock()); } diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerTest.java index 3a8a3cc190..7f212680ef 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationManagerTest.java @@ -19,7 +19,6 @@ package org.apache.qpid.server.security.auth.manager; import static org.apache.qpid.server.security.auth.AuthenticatedPrincipalTestHelper.assertOnlyContainsWrapped; -import static org.mockito.Mockito.mock; import java.util.HashMap; import java.util.Map; @@ -30,9 +29,9 @@ import javax.security.sasl.SaslException; import javax.security.sasl.SaslServer; import org.apache.qpid.server.model.AuthenticationProvider; -import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.security.auth.AuthenticationResult; import org.apache.qpid.server.security.auth.UsernamePrincipal; +import org.apache.qpid.server.util.BrokerTestHelper; import org.apache.qpid.test.utils.QpidTestCase; public class ExternalAuthenticationManagerTest extends QpidTestCase @@ -48,13 +47,13 @@ public class ExternalAuthenticationManagerTest extends QpidTestCase attrs.put(AuthenticationProvider.ID, UUID.randomUUID()); attrs.put(AuthenticationProvider.NAME, getTestName()); attrs.put("useFullDN",false); - _manager = new ExternalAuthenticationManagerImpl(attrs, mock(Broker.class)); + _manager = new ExternalAuthenticationManagerImpl(attrs, BrokerTestHelper.createBrokerMock()); _manager.open(); HashMap<String, Object> attrsFullDN = new HashMap<String, Object>(); attrsFullDN.put(AuthenticationProvider.ID, UUID.randomUUID()); attrsFullDN.put(AuthenticationProvider.NAME, getTestName()+"FullDN"); attrsFullDN.put("useFullDN",true); - _managerUsingFullDN = new ExternalAuthenticationManagerImpl(attrsFullDN, mock(Broker.class)); + _managerUsingFullDN = new ExternalAuthenticationManagerImpl(attrsFullDN, BrokerTestHelper.createBrokerMock()); _managerUsingFullDN.open(); } diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/PlainPasswordFileAuthenticationManagerFactoryTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/PlainPasswordFileAuthenticationManagerFactoryTest.java index 21d35815f9..7be60d1049 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/PlainPasswordFileAuthenticationManagerFactoryTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/PlainPasswordFileAuthenticationManagerFactoryTest.java @@ -19,8 +19,6 @@ */ package org.apache.qpid.server.security.auth.manager; -import static org.mockito.Mockito.mock; - import java.io.File; import java.util.HashMap; import java.util.Map; @@ -30,8 +28,8 @@ import junit.framework.TestCase; import org.apache.qpid.server.model.AuthenticationProvider; import org.apache.qpid.server.model.Broker; -import org.apache.qpid.server.plugin.AuthenticationManagerFactory; import org.apache.qpid.server.security.auth.database.PlainPasswordFilePrincipalDatabase; +import org.apache.qpid.server.util.BrokerTestHelper; public class PlainPasswordFileAuthenticationManagerFactoryTest extends TestCase { @@ -39,7 +37,7 @@ public class PlainPasswordFileAuthenticationManagerFactoryTest extends TestCase PlainPasswordFileAuthenticationManagerFactory _factory = new PlainPasswordFileAuthenticationManagerFactory(); private Map<String, Object> _configuration = new HashMap<String, Object>(); private File _emptyPasswordFile; - private Broker _broker = mock(Broker.class); + private Broker _broker = BrokerTestHelper.createBrokerMock(); @Override protected void setUp() throws Exception @@ -56,7 +54,7 @@ public class PlainPasswordFileAuthenticationManagerFactoryTest extends TestCase _configuration.put(AuthenticationProvider.TYPE, PlainPasswordFileAuthenticationManagerFactory.PROVIDER_TYPE); _configuration.put("path", _emptyPasswordFile.getAbsolutePath()); - AuthenticationManager manager = _factory.create(_configuration, _broker); + AuthenticationManager manager = _factory.create(null, _configuration, _broker); assertNotNull(manager); assertTrue(manager instanceof PrincipalDatabaseAuthenticationManager); assertTrue(((PrincipalDatabaseAuthenticationManager)manager).getPrincipalDatabase() instanceof PlainPasswordFilePrincipalDatabase); @@ -71,7 +69,7 @@ public class PlainPasswordFileAuthenticationManagerFactoryTest extends TestCase _configuration.put("path", _emptyPasswordFile.getAbsolutePath()); - AuthenticationManager manager = _factory.create(_configuration, _broker); + AuthenticationManager manager = _factory.create(null, _configuration, _broker); assertNotNull(manager); assertTrue(manager instanceof PrincipalDatabaseAuthenticationManager); @@ -84,7 +82,7 @@ public class PlainPasswordFileAuthenticationManagerFactoryTest extends TestCase try { - AuthenticationManager manager = _factory.create(_configuration, _broker); + AuthenticationManager manager = _factory.create(null, _configuration, _broker); fail("No authentication manager should be created"); } catch (IllegalArgumentException e) diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManagerTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManagerTest.java index c2cbe8c780..90a3785a3b 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManagerTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManagerTest.java @@ -39,13 +39,13 @@ import javax.security.sasl.SaslServer; import javax.security.sasl.SaslServerFactory; import org.apache.qpid.server.configuration.IllegalConfigurationException; -import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.security.auth.AuthenticationResult; import org.apache.qpid.server.security.auth.AuthenticationResult.AuthenticationStatus; import org.apache.qpid.server.security.auth.UsernamePrincipal; import org.apache.qpid.server.security.auth.database.PlainPasswordFilePrincipalDatabase; import org.apache.qpid.server.security.auth.database.PrincipalDatabase; +import org.apache.qpid.server.util.BrokerTestHelper; import org.apache.qpid.test.utils.QpidTestCase; /** @@ -105,7 +105,7 @@ public class PrincipalDatabaseAuthenticationManagerTest extends QpidTestCase attrs.put(ConfiguredObject.ID, UUID.randomUUID()); attrs.put(ConfiguredObject.NAME, getTestName()); attrs.put("path", _passwordFileLocation); - _manager = new PrincipalDatabaseAuthenticationManager(attrs, mock(Broker.class)) + _manager = new PrincipalDatabaseAuthenticationManager(attrs, BrokerTestHelper.createBrokerMock()) { @Override protected PrincipalDatabase createDatabase() diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/ScramSHA1AuthenticationManagerTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/ScramSHA1AuthenticationManagerTest.java index 2a42cbf02f..743e310414 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/ScramSHA1AuthenticationManagerTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/ScramSHA1AuthenticationManagerTest.java @@ -20,23 +20,25 @@ */ package org.apache.qpid.server.security.auth.manager; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +import javax.security.auth.login.AccountNotFoundException; + import org.apache.qpid.server.configuration.updater.TaskExecutor; import org.apache.qpid.server.model.AuthenticationProvider; import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.model.State; import org.apache.qpid.server.model.User; +import org.apache.qpid.server.security.SecurityManager; import org.apache.qpid.server.security.auth.AuthenticationResult; +import org.apache.qpid.server.util.BrokerTestHelper; import org.apache.qpid.test.utils.QpidTestCase; - import org.apache.qpid.server.security.SecurityManager; - -import javax.security.auth.login.AccountNotFoundException; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; public class ScramSHA1AuthenticationManagerTest extends QpidTestCase { @@ -51,7 +53,7 @@ public class ScramSHA1AuthenticationManagerTest extends QpidTestCase super.setUp(); _executor = new TaskExecutor(); _executor.start(); - _broker = mock(Broker.class); + _broker = BrokerTestHelper.createBrokerMock(); _securityManager = mock(SecurityManager.class); when(_broker.getTaskExecutor()).thenReturn(_executor); when(_broker.getSecurityManager()).thenReturn(_securityManager); diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/SimpleAuthenticationManagerTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/SimpleAuthenticationManagerTest.java index 27293b6651..85247af755 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/SimpleAuthenticationManagerTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/SimpleAuthenticationManagerTest.java @@ -30,15 +30,13 @@ import javax.security.sasl.SaslException; import javax.security.sasl.SaslServer; import org.apache.qpid.server.model.AuthenticationProvider; -import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.security.auth.AuthenticationResult; import org.apache.qpid.server.security.auth.AuthenticationResult.AuthenticationStatus; import org.apache.qpid.server.security.auth.sasl.SaslUtil; import org.apache.qpid.server.security.auth.sasl.plain.PlainSaslServer; +import org.apache.qpid.server.util.BrokerTestHelper; import org.apache.qpid.test.utils.QpidTestCase; -import static org.mockito.Mockito.mock; - public class SimpleAuthenticationManagerTest extends QpidTestCase { private static final String TEST_USER = "testUser"; @@ -51,8 +49,8 @@ public class SimpleAuthenticationManagerTest extends QpidTestCase Map<String,Object> authManagerAttrs = new HashMap<String, Object>(); authManagerAttrs.put(AuthenticationProvider.NAME,"MANAGEMENT_MODE_AUTHENTICATION"); authManagerAttrs.put(AuthenticationProvider.ID, UUID.randomUUID()); - final SimpleAuthenticationManager authManager = new SimpleAuthenticationManager(authManagerAttrs, mock(Broker.class) - ); + final SimpleAuthenticationManager authManager = new SimpleAuthenticationManager(authManagerAttrs, + BrokerTestHelper.createBrokerMock()); authManager.addUser(TEST_USER, TEST_PASSWORD); _authenticationManager = authManager; diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerFactoryTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerFactoryTest.java index 43a9307654..9aed584c41 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerFactoryTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/security/auth/manager/SimpleLDAPAuthenticationManagerFactoryTest.java @@ -35,12 +35,13 @@ import org.apache.qpid.server.model.AuthenticationProvider; import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.model.SystemContext; import org.apache.qpid.server.model.TrustStore; +import org.apache.qpid.server.util.BrokerTestHelper; public class SimpleLDAPAuthenticationManagerFactoryTest extends TestCase { private SimpleLDAPAuthenticationManagerFactory _factory = new SimpleLDAPAuthenticationManagerFactory(); private Map<String, Object> _configuration = new HashMap<String, Object>(); - private Broker _broker = mock(Broker.class); + private Broker _broker = BrokerTestHelper.createBrokerMock(); private SystemContext _systemContext = mock(SystemContext.class); private TrustStore _trustStore = mock(TrustStore.class); @@ -51,9 +52,6 @@ public class SimpleLDAPAuthenticationManagerFactoryTest extends TestCase when(_trustStore.getName()).thenReturn("mytruststore"); when(_trustStore.getId()).thenReturn(UUID.randomUUID()); - when(_broker.getCategoryClass()).thenReturn(Broker.class); - when(_broker.getParent(eq(SystemContext.class))).thenReturn(_systemContext); - when(_systemContext.getChildren(eq(Broker.class))).thenReturn(Collections.singleton(_broker)); _configuration.put(AuthenticationProvider.ID, UUID.randomUUID()); _configuration.put(AuthenticationProvider.NAME, getName()); @@ -65,7 +63,7 @@ public class SimpleLDAPAuthenticationManagerFactoryTest extends TestCase _configuration.put("providerUrl", "ldap://example.com:389/"); _configuration.put("searchContext", "dc=example"); - AuthenticationManager manager = _factory.create(_configuration, _broker); + AuthenticationManager manager = _factory.create(null, _configuration, _broker); assertNotNull(manager); } @@ -76,7 +74,7 @@ public class SimpleLDAPAuthenticationManagerFactoryTest extends TestCase _configuration.put("providerUrl", "ldaps://example.com:636/"); _configuration.put("searchContext", "dc=example"); - AuthenticationManager manager = _factory.create(_configuration, _broker); + AuthenticationManager manager = _factory.create(null, _configuration, _broker); assertNotNull(manager); } @@ -91,7 +89,7 @@ public class SimpleLDAPAuthenticationManagerFactoryTest extends TestCase _configuration.put("searchContext", "dc=example"); _configuration.put("trustStore", "mytruststore"); - AuthenticationManager manager = _factory.create(_configuration, _broker); + AuthenticationManager manager = _factory.create(null, _configuration, _broker); assertNotNull(manager); } @@ -106,7 +104,7 @@ public class SimpleLDAPAuthenticationManagerFactoryTest extends TestCase try { - _factory.create(_configuration, _broker); + _factory.create(null, _configuration, _broker); fail("Exception not thrown"); } catch(IllegalArgumentException e) diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/AbstractDurableConfigurationStoreTestCase.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/AbstractDurableConfigurationStoreTestCase.java index 8be1f10445..4e3e6d3e8a 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/AbstractDurableConfigurationStoreTestCase.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/AbstractDurableConfigurationStoreTestCase.java @@ -43,7 +43,9 @@ import org.apache.qpid.server.binding.BindingImpl; import org.apache.qpid.server.exchange.ExchangeImpl; import org.apache.qpid.server.logging.EventLogger; import org.apache.qpid.server.model.Binding; +import org.apache.qpid.server.model.BrokerModel; import org.apache.qpid.server.model.ConfiguredObject; +import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; import org.apache.qpid.server.model.Exchange; import org.apache.qpid.server.model.ExclusivityPolicy; import org.apache.qpid.server.model.LifetimePolicy; @@ -82,6 +84,7 @@ public abstract class AbstractDurableConfigurationStoreTestCase extends QpidTest private UUID _exchangeId; private DurableConfigurationStore _configStore; protected Map<String, Object> _configurationStoreSettings; + private ConfiguredObjectFactoryImpl _factory; public void setUp() throws Exception { @@ -90,7 +93,7 @@ public abstract class AbstractDurableConfigurationStoreTestCase extends QpidTest _configurationStoreSettings = new HashMap<String, Object>(); _queueId = UUIDGenerator.generateRandomUUID(); _exchangeId = UUIDGenerator.generateRandomUUID(); - + _factory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()); _storeName = getName(); _storePath = TMP_FOLDER + File.separator + _storeName; _configurationStoreSettings.put(MessageStore.STORE_PATH, _storePath); @@ -452,6 +455,8 @@ public abstract class AbstractDurableConfigurationStoreTestCase extends QpidTest when(queue.getActualAttributes()).thenReturn(attributes); + when(queue.getObjectFactory()).thenReturn(_factory); + when(queue.getModel()).thenReturn(_factory.getModel()); ConfiguredObjectRecord objectRecord = mock(ConfiguredObjectRecord.class); when(objectRecord.getId()).thenReturn(_queueId); when(objectRecord.getType()).thenReturn(Queue.class.getSimpleName()); @@ -473,6 +478,8 @@ public abstract class AbstractDurableConfigurationStoreTestCase extends QpidTest when(exchange.getId()).thenReturn(_exchangeId); when(exchange.getCategoryClass()).thenReturn(Exchange.class); when(exchange.isDurable()).thenReturn(true); + when(exchange.getObjectFactory()).thenReturn(_factory); + when(exchange.getModel()).thenReturn(_factory.getModel()); ConfiguredObjectRecord exchangeRecord = mock(ConfiguredObjectRecord.class); when(exchangeRecord.getId()).thenReturn(_exchangeId); @@ -491,6 +498,9 @@ public abstract class AbstractDurableConfigurationStoreTestCase extends QpidTest ConfiguredObject<?> parent = mock(ConfiguredObject.class); when(parent.getName()).thenReturn("testName"); + + when(parent.getObjectFactory()).thenReturn(_factory); + when(parent.getModel()).thenReturn(_factory.getModel()); _configStore.openConfigurationStore(parent, _configurationStoreSettings); _configStore.visitConfiguredObjectRecords(_handler); } diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java index cdaab22fed..27c1b7db13 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java @@ -20,31 +20,34 @@ */ package org.apache.qpid.server.store; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.argThat; +import static org.mockito.Mockito.inOrder; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + import java.io.File; import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.UUID; +import org.mockito.ArgumentMatcher; +import org.mockito.InOrder; + +import org.apache.qpid.server.model.BrokerModel; import org.apache.qpid.server.model.ConfiguredObject; +import org.apache.qpid.server.model.ConfiguredObjectFactory; +import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; import org.apache.qpid.server.model.Queue; import org.apache.qpid.server.store.handler.ConfiguredObjectRecordHandler; import org.apache.qpid.server.util.ServerScopedRuntimeException; import org.apache.qpid.test.utils.QpidTestCase; import org.apache.qpid.test.utils.TestFileUtils; import org.apache.qpid.util.FileUtils; -import org.mockito.ArgumentMatcher; -import org.mockito.InOrder; - -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.argThat; -import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.inOrder; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; -import static org.mockito.Mockito.times; public class JsonFileConfigStoreTest extends QpidTestCase { @@ -65,6 +68,9 @@ public class JsonFileConfigStoreTest extends QpidTestCase _virtualHost = mock(ConfiguredObject.class); when(_virtualHost.getName()).thenReturn(getName()); + ConfiguredObjectFactory factory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()); + when(_virtualHost.getObjectFactory()).thenReturn(factory); + when(_virtualHost.getModel()).thenReturn(factory.getModel()); _storeLocation = TestFileUtils.createTestDirectory("json", true); _configurationStoreSettings = new HashMap<String, Object>(); _configurationStoreSettings.put(JsonFileConfigStore.STORE_TYPE, JsonFileConfigStore.TYPE); diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java index e350774772..0f2813f1d1 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java @@ -40,16 +40,16 @@ import org.apache.qpid.server.exchange.ExchangeImpl; import org.apache.qpid.server.logging.EventLogger; import org.apache.qpid.server.logging.LogRecorder; import org.apache.qpid.server.model.Broker; +import org.apache.qpid.server.model.BrokerModel; import org.apache.qpid.server.model.ConfiguredObjectFactory; import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; import org.apache.qpid.server.model.Exchange; -import org.apache.qpid.server.model.Model; import org.apache.qpid.server.model.Queue; import org.apache.qpid.server.model.State; import org.apache.qpid.server.model.SystemContext; import org.apache.qpid.server.model.SystemContextImpl; import org.apache.qpid.server.model.UUIDGenerator; -import org.apache.qpid.server.plugin.ConfiguredObjectTypeFactory; +import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.protocol.AMQConnectionModel; import org.apache.qpid.server.protocol.AMQSessionModel; import org.apache.qpid.server.queue.AMQQueue; @@ -77,7 +77,7 @@ public class BrokerTestHelper public static Broker createBrokerMock() { - ConfiguredObjectFactory objectFactory = new ConfiguredObjectFactoryImpl(Model.getInstance()); + ConfiguredObjectFactory objectFactory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()); SubjectCreator subjectCreator = mock(SubjectCreator.class); when(subjectCreator.getMechanisms()).thenReturn(""); @@ -88,10 +88,14 @@ public class BrokerTestHelper when(broker.getSubjectCreator(any(SocketAddress.class))).thenReturn(subjectCreator); when(broker.getSecurityManager()).thenReturn(new SecurityManager(mock(Broker.class), false)); when(broker.getObjectFactory()).thenReturn(objectFactory); + when(broker.getModel()).thenReturn(objectFactory.getModel()); when(broker.getEventLogger()).thenReturn(new EventLogger()); when(broker.getCategoryClass()).thenReturn(Broker.class); SystemContext systemContext = mock(SystemContext.class); + when(systemContext.getObjectFactory()).thenReturn(objectFactory); + when(systemContext.getModel()).thenReturn(objectFactory.getModel()); + when(systemContext.getCategoryClass()).thenReturn(SystemContext.class); when(systemContext.getEventLogger()).thenReturn(new EventLogger()); when(broker.getParent(eq(SystemContext.class))).thenReturn(systemContext); @@ -112,11 +116,11 @@ public class BrokerTestHelper //VirtualHostFactory factory = new PluggableFactoryLoader<VirtualHostFactory>(VirtualHostFactory.class).get(hostType); SystemContext systemContext = new SystemContextImpl(TASK_EXECUTOR, - new ConfiguredObjectFactoryImpl(Model.getInstance()), + new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()), mock(EventLogger.class), mock(LogRecorder.class), new BrokerOptions()); - ConfiguredObjectFactory objectFactory = new ConfiguredObjectFactoryImpl(Model.getInstance()); + ConfiguredObjectFactory objectFactory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()); Broker broker = mock(Broker.class); when(broker.getParent(eq(SystemContext.class))).thenReturn(systemContext); when(broker.getTaskExecutor()).thenReturn(TASK_EXECUTOR); @@ -124,10 +128,9 @@ public class BrokerTestHelper when(broker.getSecurityManager()).thenReturn(securityManager); when(broker.getCategoryClass()).thenReturn(Broker.class); when(broker.getObjectFactory()).thenReturn(objectFactory); - ConfiguredObjectTypeFactory factory = objectFactory.getConfiguredObjectTypeFactory(org.apache.qpid.server.model.VirtualHost.class, - attributes); + when(broker.getModel()).thenReturn(objectFactory.getModel()); - AbstractVirtualHost host = (AbstractVirtualHost) factory.create(attributes, broker); + AbstractVirtualHost host = (AbstractVirtualHost) objectFactory.create(VirtualHost.class,attributes, broker); host.setDesiredState(host.getState(), State.ACTIVE); @@ -187,21 +190,21 @@ public class BrokerTestHelper when(virtualHost.getSecurityManager()).thenReturn(securityManager); when(virtualHost.getEventLogger()).thenReturn(eventLogger); when(virtualHost.getDurableConfigurationStore()).thenReturn(mock(DurableConfigurationStore.class)); - ConfiguredObjectFactory objectFactory = new ConfiguredObjectFactoryImpl(Model.getInstance()); + final ConfiguredObjectFactory objectFactory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()); + when(virtualHost.getObjectFactory()).thenReturn(objectFactory); + when(virtualHost.getModel()).thenReturn(objectFactory.getModel()); final Map<String,Object> attributes = new HashMap<String, Object>(); attributes.put(org.apache.qpid.server.model.Exchange.ID, UUIDGenerator.generateExchangeUUID("amp.direct", virtualHost.getName())); attributes.put(org.apache.qpid.server.model.Exchange.NAME, "amq.direct"); attributes.put(org.apache.qpid.server.model.Exchange.TYPE, "direct"); attributes.put(org.apache.qpid.server.model.Exchange.DURABLE, durable); - final ConfiguredObjectTypeFactory<? extends Exchange> exchangeFactory = - objectFactory.getConfiguredObjectTypeFactory(Exchange.class, attributes); return Subject.doAs(SecurityManager.getSubjectWithAddedSystemRights(), new PrivilegedAction<ExchangeImpl>() { @Override public ExchangeImpl run() { - return (ExchangeImpl) exchangeFactory.create(attributes, virtualHost); + return (ExchangeImpl) objectFactory.create(Exchange.class, attributes, virtualHost); } }); diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/DurableConfigurationRecovererTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/DurableConfigurationRecovererTest.java index 49b2a61965..17c1958cec 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/DurableConfigurationRecovererTest.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/DurableConfigurationRecovererTest.java @@ -49,10 +49,10 @@ import org.apache.qpid.server.exchange.TopicExchange; import org.apache.qpid.server.logging.EventLogger; import org.apache.qpid.server.model.Binding; import org.apache.qpid.server.model.Broker; +import org.apache.qpid.server.model.BrokerModel; import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.model.ConfiguredObjectFactory; import org.apache.qpid.server.model.Exchange; -import org.apache.qpid.server.model.Model; import org.apache.qpid.server.model.Queue; import org.apache.qpid.server.model.SystemContext; import org.apache.qpid.server.model.UUIDGenerator; @@ -113,7 +113,39 @@ public class DurableConfigurationRecovererTest extends QpidTestCase when(_configuredObjectFactory.getConfiguredObjectTypeFactory(eq(Exchange.class), anyMap())).thenReturn(_exchangeFactory); when(_configuredObjectFactory.getConfiguredObjectTypeFactory(eq(Queue.class), anyMap())).thenReturn(_queueFactory); when(_configuredObjectFactory.getConfiguredObjectTypeFactory(eq(Binding.class), anyMap())).thenReturn(_bindingFactory); + final ArgumentCaptor<ConfiguredObjectRecord> recordArgumentCaptor = ArgumentCaptor.forClass(ConfiguredObjectRecord.class); + when(_configuredObjectFactory.recover(recordArgumentCaptor.capture(), any(ConfiguredObject.class))).thenAnswer(new Answer<Object>() + { + @Override + public Object answer(final InvocationOnMock invocation) throws Throwable + { + ConfiguredObjectRecord record = recordArgumentCaptor.getValue(); + if(record.getType().equals("Queue")) + { + return _queueFactory.recover(mock(ConfiguredObjectFactory.class), record, _vhost); + } + else if(record.getType().equals("Exchange")) + { + return _exchangeFactory.recover(mock(ConfiguredObjectFactory.class), record, _vhost); + } + return null; + } + }); + final ArgumentCaptor<ConfiguredObjectRecord> bindingRecordArgumentCaptor = ArgumentCaptor.forClass(ConfiguredObjectRecord.class); + when(_configuredObjectFactory.recover(bindingRecordArgumentCaptor.capture(), any(ConfiguredObject.class), any(ConfiguredObject.class))).thenAnswer(new Answer<Object>() + { + @Override + public Object answer(final InvocationOnMock invocation) throws Throwable + { + ConfiguredObjectRecord record = bindingRecordArgumentCaptor.getValue(); + if(record.getType().equals("Binding")) + { + return _bindingFactory.recover(mock(ConfiguredObjectFactory.class), record, mock(ConfiguredObject.class),mock(ConfiguredObject.class)); + } + return null; + } + }); final ArgumentCaptor<ConfiguredObjectRecord> recoveredExchange = ArgumentCaptor.forClass(ConfiguredObjectRecord.class); @@ -136,7 +168,7 @@ public class DurableConfigurationRecovererTest extends QpidTestCase when(unresolved.resolve()).thenReturn(exchange); return unresolved; } - }).when(_exchangeFactory).recover(recoveredExchange.capture(), any(ConfiguredObject.class)); + }).when(_exchangeFactory).recover(any(ConfiguredObjectFactory.class), recoveredExchange.capture(), any(ConfiguredObject.class)); @@ -171,7 +203,7 @@ public class DurableConfigurationRecovererTest extends QpidTestCase return unresolved; } - }).when(_queueFactory).recover(recoveredQueue.capture(), any(ConfiguredObject.class)); + }).when(_queueFactory).recover(any(ConfiguredObjectFactory.class), recoveredQueue.capture(), any(ConfiguredObject.class)); final ArgumentCaptor<ConfiguredObjectRecord> recoveredBinding = ArgumentCaptor.forClass(ConfiguredObjectRecord.class); @@ -184,10 +216,10 @@ public class DurableConfigurationRecovererTest extends QpidTestCase @Override public Object answer(final InvocationOnMock invocation) throws Throwable { - ConfiguredObjectRecord queueRecord = recoveredBinding.getValue(); + ConfiguredObjectRecord bindingRecord = recoveredBinding.getValue(); Binding binding = mock(Binding.class); - UUID id = queueRecord.getId(); - String name = (String) queueRecord.getAttributes().get("name"); + UUID id = bindingRecord.getId(); + String name = (String) bindingRecord.getAttributes().get("name"); when(binding.getId()).thenReturn(id); when(binding.getName()).thenReturn(name); @@ -197,7 +229,7 @@ public class DurableConfigurationRecovererTest extends QpidTestCase return unresolved; } - }).when(_bindingFactory).recover(recoveredBinding.capture(), parent1.capture(), parent2.capture()); + }).when(_bindingFactory).recover(any(ConfiguredObjectFactory.class), recoveredBinding.capture(), parent1.capture(), parent2.capture()); @@ -224,13 +256,13 @@ public class DurableConfigurationRecovererTest extends QpidTestCase { _durableConfigurationRecoverer.beginConfigurationRecovery(_store); assertEquals("Did not upgrade to the expected version", - Model.MODEL_VERSION, + BrokerModel.MODEL_VERSION, _durableConfigurationRecoverer.completeConfigurationRecovery()); } public void testUpgradeNewerStoreFails() throws Exception { - String bumpedModelVersion = Model.MODEL_MAJOR_VERSION + "." + (Model.MODEL_MINOR_VERSION + 1); + String bumpedModelVersion = BrokerModel.MODEL_MAJOR_VERSION + "." + (BrokerModel.MODEL_MINOR_VERSION + 1); try { diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/MockVirtualHost.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/MockVirtualHost.java index 942781e7ba..e92d63a6fc 100644 --- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/MockVirtualHost.java +++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/MockVirtualHost.java @@ -32,6 +32,7 @@ import org.apache.qpid.server.exchange.ExchangeImpl; import org.apache.qpid.server.logging.EventLogger; import org.apache.qpid.server.message.MessageDestination; import org.apache.qpid.server.message.MessageSource; +import org.apache.qpid.server.model.BrokerModel; import org.apache.qpid.server.model.ConfigurationChangeListener; import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.model.ConfiguredObjectAttribute; @@ -39,6 +40,7 @@ import org.apache.qpid.server.model.ConfiguredObjectFactory; import org.apache.qpid.server.model.Connection; import org.apache.qpid.server.model.IllegalStateTransitionException; import org.apache.qpid.server.model.LifetimePolicy; +import org.apache.qpid.server.model.Model; import org.apache.qpid.server.model.State; import org.apache.qpid.server.model.VirtualHostAlias; import org.apache.qpid.server.protocol.LinkRegistry; @@ -438,6 +440,12 @@ public class MockVirtualHost implements VirtualHostImpl<MockVirtualHost, AMQQueu return null; } + @Override + public Model getModel() + { + return BrokerModel.getInstance(); + } + public LinkRegistry getLinkRegistry(String remoteContainerId) { return null; diff --git a/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderFactoryTest.java b/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderFactoryTest.java index 102cfb4be1..fab6ad1750 100644 --- a/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderFactoryTest.java +++ b/qpid/java/broker-plugins/access-control/src/test/java/org/apache/qpid/server/security/access/plugins/ACLFileAccessControlProviderFactoryTest.java @@ -20,6 +20,9 @@ */ package org.apache.qpid.server.security.access.plugins; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + import java.io.File; import java.util.HashMap; import java.util.Map; @@ -27,19 +30,32 @@ import java.util.UUID; import java.util.regex.Pattern; import org.apache.qpid.server.configuration.IllegalConfigurationException; -import org.apache.qpid.server.logging.EventLoggerProvider; import org.apache.qpid.server.model.AccessControlProvider; import org.apache.qpid.server.model.Broker; +import org.apache.qpid.server.model.BrokerModel; +import org.apache.qpid.server.model.ConfiguredObjectFactory; +import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; import org.apache.qpid.server.model.GroupProvider; -import org.apache.qpid.server.security.AccessControl; import org.apache.qpid.server.security.access.FileAccessControlProviderConstants; import org.apache.qpid.test.utils.QpidTestCase; import org.apache.qpid.test.utils.TestFileUtils; -import static org.mockito.Mockito.mock; - public class ACLFileAccessControlProviderFactoryTest extends QpidTestCase { + private Broker _broker; + + @Override + public void setUp() throws Exception + { + super.setUp(); + _broker = mock(Broker.class); + ConfiguredObjectFactory objectFactory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()); + + when(_broker.getObjectFactory()).thenReturn(objectFactory); + when(_broker.getModel()).thenReturn(objectFactory.getModel()); + when(_broker.getCategoryClass()).thenReturn(Broker.class); + } + public void testCreateInstanceWhenAclFileIsNotPresent() { ACLFileAccessControlProviderFactory factory = new ACLFileAccessControlProviderFactory(); @@ -48,7 +64,7 @@ public class ACLFileAccessControlProviderFactoryTest extends QpidTestCase attributes.put(AccessControlProvider.NAME, "acl"); try { - AccessControlProvider acl = factory.create(attributes, mock(Broker.class)); + AccessControlProvider acl = factory.create(null, attributes, _broker); fail("ACL was created without a configuration file path specified"); } catch(IllegalArgumentException e) @@ -66,7 +82,7 @@ public class ACLFileAccessControlProviderFactoryTest extends QpidTestCase attributes.put(AccessControlProvider.NAME, "acl"); attributes.put(GroupProvider.TYPE, FileAccessControlProviderConstants.ACL_FILE_PROVIDER_TYPE); attributes.put(FileAccessControlProviderConstants.PATH, aclFile.getAbsolutePath()); - AccessControlProvider acl = factory.create(attributes, mock(Broker.class)); + AccessControlProvider acl = factory.create(null, attributes, _broker); acl.getAccessControl().open(); assertNotNull("ACL was not created from acl file: " + aclFile.getAbsolutePath(), acl); @@ -84,7 +100,7 @@ public class ACLFileAccessControlProviderFactoryTest extends QpidTestCase attributes.put(FileAccessControlProviderConstants.PATH, aclFile.getAbsolutePath()); try { - AccessControlProvider control = factory.create(attributes, mock(Broker.class)); + AccessControlProvider control = factory.create(null, attributes, _broker); control.getAccessControl().open(); fail("It should not be possible to create and initialise ACL with non existing file"); } diff --git a/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java b/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java index 2c6bc1b44e..2cf628e7c5 100644 --- a/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java +++ b/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java @@ -54,7 +54,6 @@ import org.apache.qpid.server.model.AbstractConfiguredObject; import org.apache.qpid.server.model.ConfigurationChangeListener; import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.model.ManagedObject; -import org.apache.qpid.server.model.Model; import org.apache.qpid.server.model.State; import org.apache.qpid.server.plugin.MessageConverter; import org.apache.qpid.server.plugin.SystemNodeCreator; @@ -201,7 +200,7 @@ class ManagementNode implements MessageSource, MessageDestination if(entityType.creatable()) { boolean isCreatableChild = false; - for(Class<? extends ConfiguredObject> parentConfig : Model.getInstance().getParentTypes(clazz)) + for(Class<? extends ConfiguredObject> parentConfig : _managedObject.getModel().getParentTypes(clazz)) { isCreatableChild = parentConfig.isAssignableFrom(_managedObject.getClass()); if(isCreatableChild) @@ -243,7 +242,7 @@ class ManagementNode implements MessageSource, MessageDestination if(ConfiguredObject.class.isAssignableFrom(clazz)) { - Collection<Class<? extends ConfiguredObject>> childTypes = Model.getInstance().getChildTypes(clazz); + Collection<Class<? extends ConfiguredObject>> childTypes = _managedObject.getModel().getChildTypes(clazz); for(Class<? extends ConfiguredObject> childClass : childTypes) { populateTypeMetaData(childClass, true); @@ -1214,7 +1213,7 @@ class ManagementNode implements MessageSource, MessageDestination final Class managementClass = getManagementClass(_managedObject.getClass()); _entities.get(_entityTypes.get(managementClass.getName())).put(_managedObject.getName(), _managedObject); - Collection<Class<? extends ConfiguredObject>> childClasses = Model.getInstance().getChildTypes(managementClass); + Collection<Class<? extends ConfiguredObject>> childClasses = object.getModel().getChildTypes(managementClass); for(Class<? extends ConfiguredObject> childClass : childClasses) { if(getManagementClass(childClass) != null) diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverter.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverter.java index b4e386a685..7c5ba5a6be 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverter.java +++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverter.java @@ -26,15 +26,12 @@ import java.util.List; import java.util.Map; import org.apache.qpid.server.model.ConfiguredObject; -import org.apache.qpid.server.model.Model; public class ConfiguredObjectToMapConverter { /** Name of the key used for the statistics map */ public static final String STATISTICS_MAP_KEY = "statistics"; - private Model _model = Model.getInstance(); - public Map<String, Object> convertObjectToMap(final ConfiguredObject<?> confObject, Class<? extends ConfiguredObject> clazz, int depth) @@ -51,13 +48,6 @@ public class ConfiguredObjectToMapConverter return object; } - /** - * Used for unit test only. - */ - void setModel(Model model) - { - _model = model; - } private void incorporateAttributesIntoMap( final ConfiguredObject<?> confObject, Map<String, Object> object) @@ -110,7 +100,7 @@ public class ConfiguredObjectToMapConverter Class<? extends ConfiguredObject> clazz, int depth, Map<String, Object> object) { - for(Class<? extends ConfiguredObject> childClass : _model.getChildTypes(clazz)) + for(Class<? extends ConfiguredObject> childClass : confObject.getModel().getChildTypes(clazz)) { Collection<? extends ConfiguredObject> children = confObject.getChildren(childClass); if(children != null) diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java index 22316fcf54..0309ecc838 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java +++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java @@ -43,7 +43,6 @@ import org.codehaus.jackson.map.SerializationConfig; import org.apache.qpid.server.model.Broker; import org.apache.qpid.server.model.ConfiguredObject; -import org.apache.qpid.server.model.Model; import org.apache.qpid.server.model.State; public class RestServlet extends AbstractServlet @@ -152,7 +151,7 @@ public class RestServlet extends AbstractServlet for(int i = 0; i < _hierarchy.length; i++) { - if(i == 0 || Model.getInstance().getChildTypes(_hierarchy[i - 1]).contains(_hierarchy[i])) + if(i == 0 || getBroker().getModel().getChildTypes(_hierarchy[i - 1]).contains(_hierarchy[i])) { for(ConfiguredObject<?> parent : parents) @@ -276,7 +275,7 @@ public class RestServlet extends AbstractServlet ConfiguredObject child) { Collection<ConfiguredObject> ancestors = new HashSet<ConfiguredObject>(); - Collection<Class<? extends ConfiguredObject>> parentTypes = Model.getInstance().getParentTypes(childType); + Collection<Class<? extends ConfiguredObject>> parentTypes = child.getModel().getParentTypes(childType); for(Class<? extends ConfiguredObject> parentClazz : parentTypes) { @@ -406,7 +405,7 @@ public class RestServlet extends AbstractServlet { for(int j = i-1; j >=0; j--) { - if(Model.getInstance().getChildTypes(_hierarchy[j]).contains(_hierarchy[i])) + if(getBroker().getModel().getChildTypes(_hierarchy[j]).contains(_hierarchy[i])) { for(ConfiguredObject<?> parent : objects[j]) { @@ -426,7 +425,7 @@ public class RestServlet extends AbstractServlet } List<ConfiguredObject> parents = new ArrayList<ConfiguredObject>(); Class<? extends ConfiguredObject> objClass = getConfiguredClass(); - Collection<Class<? extends ConfiguredObject>> parentClasses = Model.getInstance().getParentTypes(objClass); + Collection<Class<? extends ConfiguredObject>> parentClasses = getBroker().getModel().getParentTypes(objClass); for(int i = _hierarchy.length-2; i >=0 ; i--) { if(parentClasses.contains(_hierarchy[i])) @@ -488,7 +487,7 @@ public class RestServlet extends AbstractServlet return true; } - Collection<Class<? extends ConfiguredObject>> parentClasses = Model.getInstance().getParentTypes(objClass); + Collection<Class<? extends ConfiguredObject>> parentClasses = obj.getModel().getParentTypes(objClass); for (ConfiguredObject parent : otherParents) { diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/StructureServlet.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/StructureServlet.java index 40d3c02768..907610c8d2 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/StructureServlet.java +++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/StructureServlet.java @@ -28,12 +28,12 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.apache.qpid.server.model.Broker; -import org.apache.qpid.server.model.ConfiguredObject; -import org.apache.qpid.server.model.Model; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.map.SerializationConfig; +import org.apache.qpid.server.model.Broker; +import org.apache.qpid.server.model.ConfiguredObject; + public class StructureServlet extends AbstractServlet { public StructureServlet() @@ -70,7 +70,7 @@ public class StructureServlet extends AbstractServlet structure.put("id", object.getId()); structure.put("name", object.getName()); - for(Class<? extends ConfiguredObject> childClass : Model.getInstance().getChildTypes(clazz)) + for(Class<? extends ConfiguredObject> childClass : object.getModel().getChildTypes(clazz)) { Collection<? extends ConfiguredObject> children = object.getChildren(childClass); if(children != null) diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementFactoryTest.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementFactoryTest.java index fbdb34fb96..809b2405b1 100644 --- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementFactoryTest.java +++ b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementFactoryTest.java @@ -26,7 +26,10 @@ import java.util.Map; import java.util.UUID; import org.apache.qpid.server.model.Broker; +import org.apache.qpid.server.model.BrokerModel; import org.apache.qpid.server.model.ConfiguredObject; +import org.apache.qpid.server.model.ConfiguredObjectFactory; +import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; import org.apache.qpid.test.utils.QpidTestCase; public class HttpManagementFactoryTest extends QpidTestCase @@ -46,6 +49,9 @@ public class HttpManagementFactoryTest extends QpidTestCase _attributes.put(HttpManagement.TIME_OUT, SESSION_TIMEOUT); _attributes.put(ConfiguredObject.ID, _id); when(_broker.getCategoryClass()).thenReturn(Broker.class); + ConfiguredObjectFactory objectFactory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()); + when(_broker.getObjectFactory()).thenReturn(objectFactory); + when(_broker.getModel()).thenReturn(objectFactory.getModel()); HttpManagement management = _pluginFactory.createInstance(_attributes, _broker); management.open(); diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java index 56dc947482..b747ee5435 100644 --- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java +++ b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/HttpManagementTest.java @@ -31,7 +31,10 @@ import java.util.UUID; import org.apache.qpid.server.model.AuthenticationProvider; import org.apache.qpid.server.model.Broker; +import org.apache.qpid.server.model.BrokerModel; import org.apache.qpid.server.model.ConfiguredObject; +import org.apache.qpid.server.model.ConfiguredObjectFactory; +import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; import org.apache.qpid.test.utils.QpidTestCase; public class HttpManagementTest extends QpidTestCase @@ -46,6 +49,12 @@ public class HttpManagementTest extends QpidTestCase super.setUp(); _id = UUID.randomUUID(); _broker = mock(Broker.class); + ConfiguredObjectFactory objectFactory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()); + + when(_broker.getObjectFactory()).thenReturn(objectFactory); + when(_broker.getModel()).thenReturn(objectFactory.getModel()); + when(_broker.getCategoryClass()).thenReturn(Broker.class); + Map<String, Object> attributes = new HashMap<String, Object>(); attributes.put(HttpManagement.HTTP_BASIC_AUTHENTICATION_ENABLED, false); attributes.put(HttpManagement.HTTPS_BASIC_AUTHENTICATION_ENABLED, true); diff --git a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverterTest.java b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverterTest.java index 0c2b6a5385..82c8d01379 100644 --- a/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverterTest.java +++ b/qpid/java/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/servlet/rest/ConfiguredObjectToMapConverterTest.java @@ -93,9 +93,10 @@ public class ConfiguredObjectToMapConverterTest extends TestCase final String childAttributeValue = "childvalue"; Model model = createTestModel(); - _converter.setModel(model); TestChild mockChild = mock(TestChild.class); + when(mockChild.getModel()).thenReturn(model); + when(_configuredObject.getModel()).thenReturn(model); configureMockToReturnOneAttribute(mockChild, childAttributeName, childAttributeValue); when(_configuredObject.getChildren(TestChild.class)).thenReturn(Arrays.asList(mockChild)); diff --git a/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/JMXManagementFactoryTest.java b/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/JMXManagementFactoryTest.java index de5b056d9d..3014621913 100644 --- a/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/JMXManagementFactoryTest.java +++ b/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/JMXManagementFactoryTest.java @@ -19,13 +19,17 @@ package org.apache.qpid.server.jmx; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; import java.util.HashMap; import java.util.Map; import java.util.UUID; import org.apache.qpid.server.model.Broker; +import org.apache.qpid.server.model.BrokerModel; import org.apache.qpid.server.model.ConfiguredObject; +import org.apache.qpid.server.model.ConfiguredObjectFactory; +import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; import org.apache.qpid.test.utils.QpidTestCase; public class JMXManagementFactoryTest extends QpidTestCase @@ -40,6 +44,11 @@ public class JMXManagementFactoryTest extends QpidTestCase _attributes.put(ConfiguredObject.ID,UUID.randomUUID()); _attributes.put(ConfiguredObject.TYPE, JMXManagementPlugin.PLUGIN_TYPE); _attributes.put(ConfiguredObject.NAME, getName()); + ConfiguredObjectFactory objectFactory = new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()); + + when(_broker.getObjectFactory()).thenReturn(objectFactory); + when(_broker.getModel()).thenReturn(objectFactory.getModel()); + when(_broker.getCategoryClass()).thenReturn(Broker.class); JMXManagementPlugin jmxManagement = _jmxManagementFactory.createInstance( _attributes, _broker); jmxManagement.open(); diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/TestBrokerConfiguration.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/TestBrokerConfiguration.java index 3feb2eaab9..c93a4c6556 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/TestBrokerConfiguration.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/TestBrokerConfiguration.java @@ -36,10 +36,10 @@ import org.apache.qpid.server.logging.LogRecorder; import org.apache.qpid.server.model.AccessControlProvider; import org.apache.qpid.server.model.AuthenticationProvider; import org.apache.qpid.server.model.Broker; +import org.apache.qpid.server.model.BrokerModel; import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl; import org.apache.qpid.server.model.GroupProvider; -import org.apache.qpid.server.model.Model; import org.apache.qpid.server.model.Plugin; import org.apache.qpid.server.model.PreferencesProvider; import org.apache.qpid.server.model.SystemContextImpl; @@ -76,12 +76,15 @@ public class TestBrokerConfiguration public TestBrokerConfiguration(String storeType, String intialStoreLocation, final TaskExecutor taskExecutor) { - _store = new MemoryConfigurationEntryStore(new SystemContextImpl(taskExecutor, new ConfiguredObjectFactoryImpl( - Model.getInstance()), - mock(EventLogger.class), mock(LogRecorder.class), - mock(BrokerOptions.class)), - intialStoreLocation, - null, Collections.<String,String>emptyMap()); + _store = new MemoryConfigurationEntryStore( + new SystemContextImpl(taskExecutor, + new ConfiguredObjectFactoryImpl(BrokerModel.getInstance()), + mock(EventLogger.class), + mock(LogRecorder.class), + mock(BrokerOptions.class)), + intialStoreLocation, + null, + Collections.<String,String>emptyMap()); } public boolean setBrokerAttribute(String name, Object value) |