You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2014/04/18 15:37:34 UTC
svn commit: r1588468 [2/3] - in /qpid/trunk/qpid/java:
broker-core/src/main/java/org/apache/qpid/server/configuration/startup/
broker-core/src/main/java/org/apache/qpid/server/configuration/store/
broker-core/src/main/java/org/apache/qpid/server/model/...
Added: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/StandardQueueFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/StandardQueueFactory.java?rev=1588468&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/StandardQueueFactory.java (added)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/StandardQueueFactory.java Fri Apr 18 13:37:32 2014
@@ -0,0 +1,48 @@
+/*
+ *
+ * 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.queue;
+
+import java.util.Map;
+
+import org.apache.qpid.server.model.AbstractConfiguredObjectTypeFactory;
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.VirtualHost;
+import org.apache.qpid.server.virtualhost.VirtualHostImpl;
+
+public class StandardQueueFactory extends AbstractConfiguredObjectTypeFactory<StandardQueueImpl>
+{
+ public StandardQueueFactory()
+ {
+ super(StandardQueueImpl.class);
+ }
+
+ @Override
+ protected StandardQueueImpl createInstance(final Map<String, Object> attributes, final ConfiguredObject<?>... parents)
+ {
+ VirtualHost<?,?,?> virtualHost = getParent(VirtualHost.class, parents);
+ if (!(virtualHost instanceof VirtualHostImpl))
+ {
+ throw new IllegalArgumentException("Unexpected virtual host is set as a parent. Expected instance of " + VirtualHostImpl.class.getName());
+ }
+
+ return new StandardQueueImpl((VirtualHostImpl<?,?,?>)virtualHost,attributes);
+ }
+}
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/StandardQueueImpl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/StandardQueueImpl.java?rev=1588468&r1=1588467&r2=1588468&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/StandardQueueImpl.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/StandardQueueImpl.java Fri Apr 18 13:37:32 2014
@@ -26,9 +26,24 @@ import org.apache.qpid.server.virtualhos
public class StandardQueueImpl extends AbstractQueue<StandardQueueImpl> implements StandardQueue<StandardQueueImpl>
{
+ private StandardQueueEntryList _entries;
+
public StandardQueueImpl(final VirtualHostImpl virtualHost,
final Map<String, Object> arguments)
{
- super(virtualHost, arguments, new StandardQueueEntryList.Factory());
+ super(virtualHost, arguments);
+ }
+
+ @Override
+ protected void onOpen()
+ {
+ super.onOpen();
+ _entries = new StandardQueueEntryList(this);
+ }
+
+ @Override
+ StandardQueueEntryList getEntries()
+ {
+ return _entries;
}
}
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java?rev=1588468&r1=1588467&r2=1588468&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java Fri Apr 18 13:37:32 2014
@@ -31,6 +31,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import javax.security.auth.login.AccountNotFoundException;
@@ -48,7 +49,6 @@ import org.apache.qpid.server.model.Ille
import org.apache.qpid.server.model.ManagedAttributeField;
import org.apache.qpid.server.model.PreferencesProvider;
import org.apache.qpid.server.model.State;
-import org.apache.qpid.server.model.UUIDGenerator;
import org.apache.qpid.server.model.User;
import org.apache.qpid.server.security.access.Operation;
import org.apache.qpid.server.security.auth.AuthenticationResult;
@@ -531,7 +531,7 @@ public abstract class PrincipalDatabaseA
private static Map<String, Object> createPrincipalAttributes(PrincipalDatabaseAuthenticationManager manager, final Principal user)
{
final Map<String, Object> attributes = new HashMap<String, Object>();
- attributes.put(ID, UUIDGenerator.generateUserUUID(manager.getName(), user.getName()));
+ attributes.put(ID, UUID.randomUUID());
attributes.put(NAME, user.getName());
return attributes;
}
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractDurableConfiguredObjectRecoverer.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractDurableConfiguredObjectRecoverer.java?rev=1588468&r1=1588467&r2=1588468&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractDurableConfiguredObjectRecoverer.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractDurableConfiguredObjectRecoverer.java Fri Apr 18 13:37:32 2014
@@ -22,44 +22,84 @@ package org.apache.qpid.server.store;
import java.util.UUID;
-public abstract class AbstractDurableConfiguredObjectRecoverer<T> implements DurableConfiguredObjectRecoverer
+import org.apache.qpid.server.model.ConfiguredObject;
+
+public abstract class AbstractDurableConfiguredObjectRecoverer<T extends ConfiguredObject> implements DurableConfiguredObjectRecoverer
{
@Override
public void load(final DurableConfigurationRecoverer durableConfigurationRecoverer,
final ConfiguredObjectRecord record)
{
- final UnresolvedObject obj = createUnresolvedObject(record);
+ final UnresolvedObject<T> obj = createUnresolvedObject(record);
UnresolvedDependency[] dependencies = obj.getUnresolvedDependencies();
for(final UnresolvedDependency dependency : dependencies)
{
- Object dep;
- if((dep = durableConfigurationRecoverer.getResolvedObject(dependency.getType(), dependency.getId())) != null)
+ if(dependency.getId() != null)
{
- dependency.resolve(dep);
+ Object dep;
+ if ((dep = durableConfigurationRecoverer.getResolvedObject(dependency.getType(), dependency.getId()))
+ != null)
+ {
+ dependency.resolve(dep);
+ }
+ else
+ {
+ durableConfigurationRecoverer.addResolutionListener(dependency.getType(), dependency.getId(),
+ null, new DependencyListener()
+ {
+
+ @Override
+ public void dependencyResolved(final String depType,
+ final UUID depId,
+ final ConfiguredObject o)
+ {
+ dependency.resolve(o);
+ if (obj.getUnresolvedDependencies().length
+ == 0)
+ {
+ durableConfigurationRecoverer.resolve(
+ getType(),
+ record.getId(),
+ obj.resolve());
+ }
+ }
+ }
+ );
+ }
}
else
{
- durableConfigurationRecoverer.addResolutionListener(dependency.getType(), dependency.getId(),
- new DependencyListener()
- {
-
- @Override
- public void dependencyResolved(final String depType,
- final UUID depId,
- final Object o)
- {
- dependency.resolve(o);
- if (obj.getUnresolvedDependencies().length
- == 0)
- {
- durableConfigurationRecoverer.resolve(
- getType(),
- record.getId(),
- obj.resolve());
- }
- }
- }
- );
+ Object dep;
+
+ if ((dep = durableConfigurationRecoverer.getResolvedObject(dependency.getType(), dependency.getName()))
+ != null)
+ {
+ dependency.resolve(dep);
+ }
+ else
+ {
+ durableConfigurationRecoverer.addResolutionListener(dependency.getType(), dependency.getId(),
+ dependency.getName(), new DependencyListener()
+ {
+
+ @Override
+ public void dependencyResolved(final String depType,
+ final UUID depId,
+ final ConfiguredObject o)
+ {
+ dependency.resolve(o);
+ if (obj.getUnresolvedDependencies().length
+ == 0)
+ {
+ durableConfigurationRecoverer.resolve(
+ getType(),
+ record.getId(),
+ obj.resolve());
+ }
+ }
+ }
+ );
+ }
}
}
if(obj.getUnresolvedDependencies().length == 0)
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DependencyListener.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DependencyListener.java?rev=1588468&r1=1588467&r2=1588468&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DependencyListener.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DependencyListener.java Fri Apr 18 13:37:32 2014
@@ -22,7 +22,9 @@ package org.apache.qpid.server.store;
import java.util.UUID;
+import org.apache.qpid.server.model.ConfiguredObject;
+
interface DependencyListener
{
- void dependencyResolved(String type, UUID id, Object o);
+ void dependencyResolved(String type, UUID id, ConfiguredObject o);
}
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationRecoverer.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationRecoverer.java?rev=1588468&r1=1588467&r2=1588468&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationRecoverer.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationRecoverer.java Fri Apr 18 13:37:32 2014
@@ -29,17 +29,19 @@ import java.util.Map;
import java.util.UUID;
import org.apache.log4j.Logger;
+
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.ConfiguredObject;
import org.apache.qpid.server.model.Model;
public class DurableConfigurationRecoverer implements ConfigurationRecoveryHandler
{
private static final Logger _logger = Logger.getLogger(DurableConfigurationRecoverer.class);
- private final Map<String, Map<UUID, Object>> _resolvedObjects = new HashMap<String, Map<UUID, Object>>();
+ private final Map<String, Map<UUID, ConfiguredObject>> _resolvedObjects = new HashMap<String, Map<UUID, ConfiguredObject>>();
private final Map<String, Map<UUID, UnresolvedObject>> _unresolvedObjects =
new HashMap<String, Map<UUID, UnresolvedObject>>();
@@ -47,6 +49,9 @@ public class DurableConfigurationRecover
private final Map<String, Map<UUID, List<DependencyListener>>> _dependencyListeners =
new HashMap<String, Map<UUID, List<DependencyListener>>>();
+ private final Map<String, Map<String, List<DependencyListener>>> _dependencyNameListeners =
+ new HashMap<String, Map<String, List<DependencyListener>>>();
+
private final Map<String, DurableConfiguredObjectRecoverer> _recoverers;
private final UpgraderProvider _upgraderProvider;
private final EventLogger _eventLogger;
@@ -188,36 +193,72 @@ public class DurableConfigurationRecover
void addResolutionListener(final String type,
final UUID id,
+ final String name,
final DependencyListener dependencyListener)
{
- Map<UUID, List<DependencyListener>> typeListeners = _dependencyListeners.get(type);
- if(typeListeners == null)
+ if(id != null)
{
- typeListeners = new HashMap<UUID, List<DependencyListener>>();
- _dependencyListeners.put(type, typeListeners);
+ Map<UUID, List<DependencyListener>> typeListeners = _dependencyListeners.get(type);
+ if (typeListeners == null)
+ {
+ typeListeners = new HashMap<UUID, List<DependencyListener>>();
+ _dependencyListeners.put(type, typeListeners);
+ }
+ List<DependencyListener> objectListeners = typeListeners.get(id);
+ if (objectListeners == null)
+ {
+ objectListeners = new ArrayList<DependencyListener>();
+ typeListeners.put(id, objectListeners);
+ }
+ objectListeners.add(dependencyListener);
}
- List<DependencyListener> objectListeners = typeListeners.get(id);
- if(objectListeners == null)
+ else
{
- objectListeners = new ArrayList<DependencyListener>();
- typeListeners.put(id, objectListeners);
+ Map<String, List<DependencyListener>> typeListeners = _dependencyNameListeners.get(type);
+ if (typeListeners == null)
+ {
+ typeListeners = new HashMap<String, List<DependencyListener>>();
+ _dependencyNameListeners.put(type, typeListeners);
+ }
+ List<DependencyListener> objectListeners = typeListeners.get(name);
+ if (objectListeners == null)
+ {
+ objectListeners = new ArrayList<DependencyListener>();
+ typeListeners.put(name, objectListeners);
+ }
+ objectListeners.add(dependencyListener);
}
- objectListeners.add(dependencyListener);
-
}
Object getResolvedObject(final String type, final UUID id)
{
- Map<UUID, Object> objects = _resolvedObjects.get(type);
+ Map<UUID, ConfiguredObject> objects = _resolvedObjects.get(type);
return objects == null ? null : objects.get(id);
}
- void resolve(final String type, final UUID id, final Object object)
+ Object getResolvedObject(final String type, final String name)
+ {
+ Map<UUID, ConfiguredObject> objects = _resolvedObjects.get(type);
+ if(objects != null)
+ {
+ for (ConfiguredObject object : objects.values())
+ {
+ if(object.getName().equals(name))
+ {
+ return object;
+ }
+ }
+ }
+ return null;
+
+ }
+
+ void resolve(final String type, final UUID id, final ConfiguredObject object)
{
- Map<UUID, Object> typeObjects = _resolvedObjects.get(type);
+ Map<UUID, ConfiguredObject> typeObjects = _resolvedObjects.get(type);
if(typeObjects == null)
{
- typeObjects = new HashMap<UUID, Object>();
+ typeObjects = new HashMap<UUID, ConfiguredObject>();
_resolvedObjects.put(type, typeObjects);
}
typeObjects.put(id, object);
@@ -239,6 +280,19 @@ public class DurableConfigurationRecover
}
}
}
+
+ Map<String, List<DependencyListener>> typeNameListeners = _dependencyNameListeners.get(type);
+ if(typeNameListeners != null)
+ {
+ List<DependencyListener> listeners = typeNameListeners.remove(object.getName());
+ if(listeners != null)
+ {
+ for(DependencyListener listener : listeners)
+ {
+ listener.dependencyResolved(type, id, object);
+ }
+ }
+ }
}
void addUnresolvedObject(final String type,
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStoreHelper.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStoreHelper.java?rev=1588468&r1=1588467&r2=1588468&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStoreHelper.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStoreHelper.java Fri Apr 18 13:37:32 2014
@@ -22,14 +22,11 @@ package org.apache.qpid.server.store;
import java.util.Arrays;
import java.util.HashSet;
-import java.util.Map;
-
import java.util.Set;
import org.apache.qpid.server.binding.BindingImpl;
import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.model.Binding;
-import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.Exchange;
import org.apache.qpid.server.model.Queue;
import org.apache.qpid.server.queue.AMQQueue;
@@ -44,26 +41,12 @@ public class DurableConfigurationStoreHe
public static void updateQueue(DurableConfigurationStore store, AMQQueue queue)
{
- Map<String, Object> attributesMap = queue.getActualAttributes();
- attributesMap.remove(ConfiguredObject.ID);
- if(queue.getAlternateExchange() != null)
- {
- attributesMap.put(Queue.ALTERNATE_EXCHANGE, queue.getAlternateExchange().getId());
- }
- store.update(false, new ConfiguredObjectRecordImpl(queue.getId(), QUEUE, attributesMap));
+ store.update(false, queue.asObjectRecord());
}
public static void createQueue(DurableConfigurationStore store, AMQQueue<?> queue)
{
-
- Map<String, Object> attributesMap = queue.getActualAttributes();
- attributesMap.remove(ConfiguredObject.ID);
- if(queue.getAlternateExchange() != null)
- {
- attributesMap.put(Queue.ALTERNATE_EXCHANGE, queue.getAlternateExchange().getId());
- }
-
- store.create(new ConfiguredObjectRecordImpl(queue.getId(), QUEUE, attributesMap));
+ store.create(queue.asObjectRecord());
}
public static void removeQueue(DurableConfigurationStore store, AMQQueue queue)
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/UnresolvedDependency.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/UnresolvedDependency.java?rev=1588468&r1=1588467&r2=1588468&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/UnresolvedDependency.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/UnresolvedDependency.java Fri Apr 18 13:37:32 2014
@@ -25,6 +25,7 @@ import java.util.UUID;
public interface UnresolvedDependency<T>
{
public UUID getId();
+ public String getName();
public String getType();
public void resolve(final T dependency);
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java?rev=1588468&r1=1588467&r2=1588468&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java Fri Apr 18 13:37:32 2014
@@ -70,13 +70,6 @@ import org.apache.qpid.server.protocol.A
import org.apache.qpid.server.protocol.AMQSessionModel;
import org.apache.qpid.server.protocol.LinkRegistry;
import org.apache.qpid.server.queue.AMQQueue;
-import org.apache.qpid.server.queue.LastValueQueue;
-import org.apache.qpid.server.queue.LastValueQueueImpl;
-import org.apache.qpid.server.queue.PriorityQueue;
-import org.apache.qpid.server.queue.PriorityQueueImpl;
-import org.apache.qpid.server.queue.SortedQueue;
-import org.apache.qpid.server.queue.SortedQueueImpl;
-import org.apache.qpid.server.queue.StandardQueueImpl;
import org.apache.qpid.server.security.SecurityManager;
import org.apache.qpid.server.security.access.Operation;
import org.apache.qpid.server.stats.StatisticsCounter;
@@ -101,6 +94,7 @@ public abstract class AbstractVirtualHos
{
public static final String DEFAULT_DLQ_NAME_SUFFIX = "_DLQ";
public static final String DLQ_ROUTING_KEY = "dlq";
+ public static final String CREATE_DLQ_ON_CREATION = "x-qpid-dlq-enabled"; // TODO - this value should change
private static final int MAX_LENGTH = 255;
private static final Logger _logger = Logger.getLogger(AbstractVirtualHost.class);
@@ -195,7 +189,7 @@ public abstract class AbstractVirtualHos
if(attributes.get(ID) == null)
{
attributes = new HashMap<String, Object>(attributes);
- attributes.put(ID, UUIDGenerator.generateVhostUUID((String)attributes.get(NAME)));
+ attributes.put(ID, UUID.randomUUID());
}
return attributes;
}
@@ -608,6 +602,7 @@ public abstract class AbstractVirtualHos
public AMQQueue<?> createQueue(Map<String, Object> attributes) throws QueueExistsException
{
checkVHostStateIsActive();
+
AMQQueue<?> queue = addQueue(attributes);
childAdded(queue);
return queue;
@@ -615,51 +610,34 @@ public abstract class AbstractVirtualHos
private AMQQueue<?> addQueue(Map<String, Object> attributes) throws QueueExistsException
{
-
- // make a copy as we may augment (with an ID for example)
- attributes = new LinkedHashMap<String, Object>(attributes);
- if (attributes.containsKey(Queue.TYPE))
+ if (shouldCreateDLQ(attributes))
{
- String typeAttribute = MapValueConverter.getStringAttribute(Queue.TYPE, attributes, null);
- QueueType queueType = null;
- try
- {
- queueType = QueueType.valueOf(typeAttribute.toUpperCase());
- }
- catch(Exception e)
- {
- throw new IllegalArgumentException("Unsupported queue type :" + typeAttribute);
- }
- if (queueType == QueueType.LVQ && attributes.get(LastValueQueue.LVQ_KEY) == null)
- {
- attributes.put(LastValueQueue.LVQ_KEY, LastValueQueueImpl.DEFAULT_LVQ_KEY);
- }
- else if (queueType == QueueType.PRIORITY && attributes.get(PriorityQueue.PRIORITIES) == null)
- {
- attributes.put(PriorityQueue.PRIORITIES, 10);
- }
- else if (queueType == QueueType.SORTED && attributes.get(SortedQueue.SORT_KEY) == null)
- {
- throw new IllegalArgumentException("Sort key is not specified for sorted queue");
- }
+ // TODO - this isn't really correct - what if the name has ${foo} in it?
+ String queueName = String.valueOf(attributes.get(Queue.NAME));
+ validateDLNames(queueName);
+ String altExchangeName = createDLQ(queueName);
+ attributes = new LinkedHashMap<String, Object>(attributes);
+ attributes.put(Queue.ALTERNATE_EXCHANGE, altExchangeName);
}
+ return addQueueWithoutDLQ(attributes);
+ }
+
+ private AMQQueue<?> addQueueWithoutDLQ(Map<String, Object> attributes) throws QueueExistsException
+ {
+ Broker<?> broker = getParent(Broker.class);
- if(!attributes.containsKey(Queue.ID))
+ ConfiguredObjectTypeFactory<? extends Queue> factory =
+ broker.getObjectFactory().getConfiguredObjectTypeFactory(Queue.class, attributes);
+
+ try
{
- UUID id = UUID.randomUUID();
- attributes.put(Queue.ID, id);
+ return (AMQQueue) factory.create(attributes, this);
}
-
- boolean createDLQ = shouldCreateDLQ(attributes, getDefaultDeadLetterQueueEnabled());
- if (createDLQ)
+ catch (DuplicateNameException e)
{
- // TODO - this isn't really correct - what if the name has ${foo} in it?
- validateDLNames(String.valueOf(attributes.get(Queue.NAME)));
+ throw new QueueExistsException(getQueue(e.getName()));
}
- return createOrRestoreQueue(attributes, true);
-
-
}
@@ -1525,94 +1503,13 @@ public abstract class AbstractVirtualHos
}
- // TODO - remove
- public AMQQueue restoreQueue(Map<String, Object> attributes)
- {
- return createOrRestoreQueue(attributes, false);
-
- }
-
-
- private AMQQueue createOrRestoreQueue(Map<String, Object> attributes, boolean createInStore)
- {
- String queueName = MapValueConverter.getStringAttribute(Queue.NAME,attributes);
- boolean createDLQ = createInStore && shouldCreateDLQ(attributes, getDefaultDeadLetterQueueEnabled());
- if (createDLQ)
- {
- validateDLNames(queueName);
- }
-
- AMQQueue queue;
-
- try
- {
-
-
- if (attributes.containsKey(SortedQueue.SORT_KEY))
- {
- queue = new SortedQueueImpl(this, attributes);
- }
- else if (attributes.containsKey(LastValueQueue.LVQ_KEY))
- {
- queue = new LastValueQueueImpl(this, attributes);
- }
- else if (attributes.containsKey(PriorityQueue.PRIORITIES))
- {
- queue = new PriorityQueueImpl(this, attributes);
- }
- else
- {
- queue = new StandardQueueImpl(this, attributes);
- }
- queue.open();
- }
- catch(DuplicateNameException e)
- {
-
- throw new QueueExistsException(e.getName(), getQueue(e.getName()));
- }
-
- if(createDLQ)
- {
- createDLQ(queue);
- }
- else if(attributes != null && attributes.get(Queue.ALTERNATE_EXCHANGE) instanceof String)
- {
-
- final String altExchangeAttr = (String) attributes.get(Queue.ALTERNATE_EXCHANGE);
- ExchangeImpl altExchange;
- try
- {
- altExchange = getExchange(UUID.fromString(altExchangeAttr));
- }
- catch(IllegalArgumentException e)
- {
- altExchange = getExchange(altExchangeAttr);
- }
- queue.setAlternateExchange(altExchange);
- }
-
- if (createInStore && queue.isDurable() && !(queue.getLifetimePolicy()
- == LifetimePolicy.DELETE_ON_CONNECTION_CLOSE
- || queue.getLifetimePolicy()
- == LifetimePolicy.DELETE_ON_SESSION_END))
- {
- DurableConfigurationStoreHelper.createQueue(getDurableConfigurationStore(), queue);
- }
-
- return queue;
- }
-
-
-
- private void createDLQ(final AMQQueue queue)
+ private String createDLQ(final String queueName)
{
- final String queueName = queue.getName();
final String dlExchangeName = getDeadLetterExchangeName(queueName);
final String dlQueueName = getDeadLetterQueueName(queueName);
ExchangeImpl dlExchange = null;
- final UUID dlExchangeId = UUIDGenerator.generateExchangeUUID(dlExchangeName, getName());
+ final UUID dlExchangeId = UUID.randomUUID();
try
{
@@ -1654,7 +1551,7 @@ public abstract class AbstractVirtualHos
{
//set args to disable DLQ-ing/MDC from the DLQ itself, preventing loops etc
final Map<String, Object> args = new HashMap<String, Object>();
- args.put(Queue.CREATE_DLQ_ON_CREATION, false);
+ args.put(CREATE_DLQ_ON_CREATION, false);
args.put(Queue.MAXIMUM_DELIVERY_ATTEMPTS, 0);
try
@@ -1664,7 +1561,8 @@ public abstract class AbstractVirtualHos
args.put(Queue.ID, UUID.randomUUID());
args.put(Queue.NAME, dlQueueName);
args.put(Queue.DURABLE, true);
- dlQueue = createQueue(args);
+ dlQueue = addQueueWithoutDLQ(args);
+ childAdded(dlQueue);
}
catch (QueueExistsException e)
{
@@ -1681,7 +1579,7 @@ public abstract class AbstractVirtualHos
//but we will make the key 'dlq' as it can be logged at creation.
dlExchange.addBinding(AbstractVirtualHost.DLQ_ROUTING_KEY, dlQueue, null);
}
- queue.setAlternateExchange(dlExchange);
+ return dlExchangeName;
}
private static void validateDLNames(String name)
@@ -1701,8 +1599,9 @@ public abstract class AbstractVirtualHos
}
}
- private static boolean shouldCreateDLQ(Map<String, Object> arguments, boolean virtualHostDefaultDeadLetterQueueEnabled)
+ private boolean shouldCreateDLQ(Map<String, Object> arguments)
{
+
boolean autoDelete = MapValueConverter.getEnumAttribute(LifetimePolicy.class,
Queue.LIFETIME_POLICY,
arguments,
@@ -1712,19 +1611,19 @@ public abstract class AbstractVirtualHos
if (!(autoDelete || (arguments != null && arguments.containsKey(Queue.ALTERNATE_EXCHANGE))))
{
boolean dlqArgumentPresent = arguments != null
- && arguments.containsKey(Queue.CREATE_DLQ_ON_CREATION);
+ && arguments.containsKey(CREATE_DLQ_ON_CREATION);
if (dlqArgumentPresent)
{
boolean dlqEnabled = true;
if (dlqArgumentPresent)
{
- Object argument = arguments.get(Queue.CREATE_DLQ_ON_CREATION);
+ Object argument = arguments.get(CREATE_DLQ_ON_CREATION);
dlqEnabled = (argument instanceof Boolean && ((Boolean)argument).booleanValue())
|| (argument instanceof String && Boolean.parseBoolean(argument.toString()));
}
return dlqEnabled;
}
- return virtualHostDefaultDeadLetterQueueEnabled;
+ return isQueue_deadLetterQueueEnabled();
}
return false;
}
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/BindingRecoverer.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/BindingRecoverer.java?rev=1588468&r1=1588467&r2=1588468&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/BindingRecoverer.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/BindingRecoverer.java Fri Apr 18 13:37:32 2014
@@ -123,6 +123,12 @@ public class BindingRecoverer extends Ab
}
@Override
+ public String getName()
+ {
+ return null;
+ }
+
+ @Override
public String getType()
{
return Queue.class.getSimpleName();
@@ -147,6 +153,12 @@ public class BindingRecoverer extends Ab
}
@Override
+ public String getName()
+ {
+ return null;
+ }
+
+ @Override
public String getType()
{
return org.apache.qpid.server.model.Exchange.class.getSimpleName();
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ExchangeRecoverer.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ExchangeRecoverer.java?rev=1588468&r1=1588467&r2=1588468&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ExchangeRecoverer.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ExchangeRecoverer.java Fri Apr 18 13:37:32 2014
@@ -28,7 +28,6 @@ import org.apache.qpid.server.exchange.E
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.SystemContext;
import org.apache.qpid.server.plugin.ConfiguredObjectTypeFactory;
import org.apache.qpid.server.store.AbstractDurableConfiguredObjectRecoverer;
import org.apache.qpid.server.store.ConfiguredObjectRecord;
@@ -46,8 +45,7 @@ public class ExchangeRecoverer extends A
{
_vhost = vhost;
Broker<?> broker = _vhost.getParent(Broker.class);
- SystemContext<?> systemContext = broker.getParent(SystemContext.class);
- _objectFactory = systemContext.getObjectFactory();
+ _objectFactory = broker.getObjectFactory();
}
@Override
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/QueueExistsException.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/QueueExistsException.java?rev=1588468&r1=1588467&r2=1588468&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/QueueExistsException.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/QueueExistsException.java Fri Apr 18 13:37:32 2014
@@ -26,6 +26,11 @@ public class QueueExistsException extend
{
private final AMQQueue _existing;
+ public QueueExistsException(AMQQueue existing)
+ {
+ this(existing.getName(), existing);
+ }
+
public QueueExistsException(String name, AMQQueue existing)
{
super(name);
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/QueueRecoverer.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/QueueRecoverer.java?rev=1588468&r1=1588467&r2=1588468&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/QueueRecoverer.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/QueueRecoverer.java Fri Apr 18 13:37:32 2014
@@ -21,7 +21,7 @@
package org.apache.qpid.server.virtualhost;
import java.util.ArrayList;
-import java.util.LinkedHashMap;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
@@ -29,21 +29,28 @@ import java.util.UUID;
import org.apache.log4j.Logger;
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;
+import org.apache.qpid.server.store.UnresolvedConfiguredObject;
import org.apache.qpid.server.store.UnresolvedDependency;
import org.apache.qpid.server.store.UnresolvedObject;
public class QueueRecoverer extends AbstractDurableConfiguredObjectRecoverer<AMQQueue>
{
private static final Logger _logger = Logger.getLogger(QueueRecoverer.class);
- private final VirtualHostImpl _virtualHost;
+ private final VirtualHostImpl<?,?,?> _virtualHost;
+ private final ConfiguredObjectFactory _objectFactory;
public QueueRecoverer(final VirtualHostImpl virtualHost)
{
_virtualHost = virtualHost;
+ Broker<?> broker = _virtualHost.getParent(Broker.class);
+ _objectFactory = broker.getObjectFactory();
}
@Override
@@ -55,33 +62,42 @@ public class QueueRecoverer extends Abst
@Override
public UnresolvedObject<AMQQueue> createUnresolvedObject(final ConfiguredObjectRecord record)
{
- return new UnresolvedQueue(record.getId(), record.getAttributes());
+ return new UnresolvedQueue(record);
}
private class UnresolvedQueue implements UnresolvedObject<AMQQueue>
{
- private final Map<String, Object> _attributes;
- private final UUID _alternateExchangeId;
- private final UUID _id;
+
+ // private final UUID _alternateExchangeId;
+ private final ConfiguredObjectRecord _record;
private AMQQueue _queue;
private List<UnresolvedDependency> _dependencies = new ArrayList<UnresolvedDependency>();
private ExchangeImpl _alternateExchange;
+ private UUID _alternateExchangeId;
+ private String _alternateExchangeName;
- public UnresolvedQueue(final UUID id,
- final Map<String, Object> attributes)
+ public UnresolvedQueue(ConfiguredObjectRecord record)
{
- _attributes = attributes;
- _alternateExchangeId = _attributes.get(Queue.ALTERNATE_EXCHANGE) == null ? null : UUID.fromString((String) _attributes
- .get(Queue.ALTERNATE_EXCHANGE));
- _id = id;
- if (_alternateExchangeId != null)
+ _record = record;
+ Object altExchObj = record.getAttributes().get(Queue.ALTERNATE_EXCHANGE);
+ if(altExchObj instanceof UUID)
+ {
+ _alternateExchangeId = (UUID) altExchObj;
+ _dependencies.add(new AlternateExchangeDependency());
+ }
+ else if (altExchObj instanceof String)
{
- _alternateExchange = _virtualHost.getExchange(_alternateExchangeId);
- if(_alternateExchange == null)
+ try
+ {
+ _alternateExchangeId = UUID.fromString((String)altExchObj);
+ }
+ catch (IllegalArgumentException e)
{
- _dependencies.add(new AlternateExchangeDependency());
+ _alternateExchangeName = (String) altExchObj;
}
+ _dependencies.add(new AlternateExchangeDependency());
}
+
}
@Override
@@ -93,9 +109,9 @@ public class QueueRecoverer extends Abst
@Override
public AMQQueue resolve()
{
- String queueName = (String) _attributes.get(Queue.NAME);
+ String queueName = (String) _record.getAttributes().get(Queue.NAME);
- _queue = _virtualHost.getQueue(_id);
+ _queue = _virtualHost.getQueue(_record.getId());
if(_queue == null)
{
_queue = _virtualHost.getQueue(queueName);
@@ -103,11 +119,17 @@ public class QueueRecoverer extends Abst
if (_queue == null)
{
- Map<String, Object> attributes = new LinkedHashMap<String, Object>(_attributes);
- attributes.put(Queue.ID, _id);
- attributes.put(Queue.DURABLE, true);
- _queue = _virtualHost.restoreQueue(attributes);
+ Map<String,Object> attributesWithId = new HashMap<String,Object>(_record.getAttributes());
+ 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);
+ _queue = (AMQQueue<?>) unresolvedConfiguredObject.resolve();
}
+ _queue.open();
return _queue;
}
@@ -120,6 +142,12 @@ public class QueueRecoverer extends Abst
}
@Override
+ public String getName()
+ {
+ return _alternateExchangeName;
+ }
+
+ @Override
public String getType()
{
return "Exchange";
Modified: qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java?rev=1588468&r1=1588467&r2=1588468&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java Fri Apr 18 13:37:32 2014
@@ -128,6 +128,4 @@ public interface VirtualHostImpl< X exte
EventLogger getEventLogger();
- // TODO - remove
- public AMQQueue restoreQueue(Map<String, Object> attributes);
}
Modified: qpid/trunk/qpid/java/broker-core/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.ConfiguredObjectTypeFactory
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.ConfiguredObjectTypeFactory?rev=1588468&r1=1588467&r2=1588468&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.ConfiguredObjectTypeFactory (original)
+++ qpid/trunk/qpid/java/broker-core/src/main/resources/META-INF/services/org.apache.qpid.server.plugin.ConfiguredObjectTypeFactory Fri Apr 18 13:37:32 2014
@@ -35,6 +35,11 @@ org.apache.qpid.server.model.adapter.Bro
org.apache.qpid.server.model.adapter.StandardVirtualHostFactory
org.apache.qpid.server.model.adapter.FileBasedGroupProviderFactory
org.apache.qpid.server.model.adapter.FileSystemPreferencesProviderFactory
+org.apache.qpid.server.queue.LastValueQueueFactory
+org.apache.qpid.server.queue.PriorityQueueFactory
+org.apache.qpid.server.queue.QueueFactory
+org.apache.qpid.server.queue.SortedQueueFactory
+org.apache.qpid.server.queue.StandardQueueFactory
org.apache.qpid.server.exchange.DirectExchangeFactory
org.apache.qpid.server.exchange.FanoutExchangeFactory
org.apache.qpid.server.exchange.HeadersExchangeFactory
Modified: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/AbstractQueueTestBase.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/AbstractQueueTestBase.java?rev=1588468&r1=1588467&r2=1588468&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/AbstractQueueTestBase.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/AbstractQueueTestBase.java Fri Apr 18 13:37:32 2014
@@ -709,8 +709,7 @@ abstract class AbstractQueueTestBase ext
private AbstractQueue createNonAsyncDeliverQueue()
{
- TestSimpleQueueEntryListFactory factory = new TestSimpleQueueEntryListFactory();
- return new NonAsyncDeliverQueue(factory, getVirtualHost());
+ return new NonAsyncDeliverQueue(getVirtualHost());
}
/**
@@ -830,7 +829,8 @@ abstract class AbstractQueueTestBase ext
QueueNotificationListener listener = mock(QueueNotificationListener .class);
_queue.setNotificationListener(listener);
- _queue.setAlertThresholdQueueDepthMessages(2);
+ _queue.setAttributes(Collections.<String, Object>singletonMap(Queue.ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES,
+ Integer.valueOf(2)));
_queue.enqueue(createMessage(new Long(24)), null);
verifyZeroInteractions(listener);
@@ -849,7 +849,8 @@ abstract class AbstractQueueTestBase ext
_queue.enqueue(createMessage(new Long(26)), null);
_queue.setNotificationListener(listener);
- _queue.setAlertThresholdQueueDepthMessages(2);
+ _queue.setAttributes(Collections.<String, Object>singletonMap(Queue.ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES,
+ Integer.valueOf(2)));
verifyZeroInteractions(listener);
@@ -1046,17 +1047,6 @@ abstract class AbstractQueueTestBase ext
return _consumerTarget;
}
-
- static class TestSimpleQueueEntryListFactory implements QueueEntryListFactory
- {
-
- @Override
- public NonAsyncDeliverList createQueueEntryList(final AMQQueue<?> queue)
- {
- return new NonAsyncDeliverList((NonAsyncDeliverQueue) queue);
- }
- }
-
private static class NonAsyncDeliverEntry extends OrderedQueueEntry
{
@@ -1107,9 +1097,23 @@ abstract class AbstractQueueTestBase ext
private static class NonAsyncDeliverQueue extends AbstractQueue<NonAsyncDeliverQueue>
{
- public NonAsyncDeliverQueue(final TestSimpleQueueEntryListFactory factory, VirtualHostImpl vhost)
+ private QueueEntryList _entries = new NonAsyncDeliverList(this);
+
+ public NonAsyncDeliverQueue(VirtualHostImpl vhost)
+ {
+ super(vhost, attributes());
+ }
+
+ @Override
+ protected void onOpen()
+ {
+ super.onOpen();
+ }
+
+ @Override
+ QueueEntryList getEntries()
{
- super(vhost, attributes(), factory);
+ return _entries;
}
private static Map<String,Object> attributes()
Modified: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/LastValueQueueListTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/LastValueQueueListTest.java?rev=1588468&r1=1588467&r2=1588468&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/LastValueQueueListTest.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/LastValueQueueListTest.java Fri Apr 18 13:37:32 2014
@@ -59,7 +59,8 @@ public class LastValueQueueListTest exte
when(virtualHost.getSecurityManager()).thenReturn(mock(SecurityManager.class));
when(virtualHost.getEventLogger()).thenReturn(new EventLogger());
_queue = new LastValueQueueImpl(virtualHost, queueAttributes);
- _list = (LastValueQueueList) _queue.getEntries();
+ _queue.open();
+ _list = _queue.getEntries();
}
public void testListHasNoEntries()
Modified: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/PriorityQueueListTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/PriorityQueueListTest.java?rev=1588468&r1=1588467&r2=1588468&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/PriorityQueueListTest.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/PriorityQueueListTest.java Fri Apr 18 13:37:32 2014
@@ -59,7 +59,8 @@ public class PriorityQueueListTest exten
when(virtualHost.getSecurityManager()).thenReturn(mock(SecurityManager.class));
when(virtualHost.getEventLogger()).thenReturn(new EventLogger());
PriorityQueueImpl queue = new PriorityQueueImpl(virtualHost, queueAttributes);
- _list = (PriorityQueueList) queue.getEntries();
+ queue.open();
+ _list = queue.getEntries();
for (int i = 0; i < PRIORITIES.length; i++)
{
Modified: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/QueueEntryImplTestBase.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/QueueEntryImplTestBase.java?rev=1588468&r1=1588467&r2=1588468&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/QueueEntryImplTestBase.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/QueueEntryImplTestBase.java Fri Apr 18 13:37:32 2014
@@ -18,24 +18,24 @@
*/
package org.apache.qpid.server.queue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.lang.reflect.Field;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
import junit.framework.TestCase;
import org.apache.qpid.server.logging.EventLogger;
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.message.MessageInstance.EntryState;
import org.apache.qpid.server.model.Queue;
import org.apache.qpid.server.virtualhost.VirtualHostImpl;
-import java.lang.reflect.Field;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
/**
* Tests for {@link QueueEntryImpl}
*/
@@ -200,7 +200,8 @@ public abstract class QueueEntryImplTest
when(virtualHost.getEventLogger()).thenReturn(new EventLogger());
StandardQueueImpl queue = new StandardQueueImpl(virtualHost, queueAttributes);
- OrderedQueueEntryList queueEntryList = (OrderedQueueEntryList) queue.getEntries();
+ queue.open();
+ OrderedQueueEntryList queueEntryList = queue.getEntries();
// create test entries
for(int i = 0; i < numberOfEntries ; i++)
Modified: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SelfValidatingSortedQueueEntryList.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SelfValidatingSortedQueueEntryList.java?rev=1588468&r1=1588467&r2=1588468&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SelfValidatingSortedQueueEntryList.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SelfValidatingSortedQueueEntryList.java Fri Apr 18 13:37:32 2014
@@ -30,9 +30,9 @@ import org.apache.qpid.server.queue.Sort
*/
public class SelfValidatingSortedQueueEntryList extends SortedQueueEntryList
{
- public SelfValidatingSortedQueueEntryList(SortedQueueImpl queue, String propertyName)
+ public SelfValidatingSortedQueueEntryList(SortedQueueImpl queue)
{
- super(queue, propertyName);
+ super(queue);
}
@Override
Modified: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SimpleQueueEntryImplTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SimpleQueueEntryImplTest.java?rev=1588468&r1=1588467&r2=1588468&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SimpleQueueEntryImplTest.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SimpleQueueEntryImplTest.java Fri Apr 18 13:37:32 2014
@@ -20,18 +20,18 @@
*/
package org.apache.qpid.server.queue;
-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.Queue;
-import org.apache.qpid.server.virtualhost.VirtualHostImpl;
+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 static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+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.Queue;
+import org.apache.qpid.server.virtualhost.VirtualHostImpl;
public class SimpleQueueEntryImplTest extends QueueEntryImplTestBase
{
@@ -48,8 +48,8 @@ public class SimpleQueueEntryImplTest ex
when(virtualHost.getSecurityManager()).thenReturn(mock(org.apache.qpid.server.security.SecurityManager.class));
when(virtualHost.getEventLogger()).thenReturn(new EventLogger());
StandardQueueImpl queue = new StandardQueueImpl(virtualHost, queueAttributes);
-
- queueEntryList = (OrderedQueueEntryList) queue.getEntries();
+ queue.open();
+ queueEntryList = queue.getEntries();
super.setUp();
}
Modified: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SortedQueueEntryListTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SortedQueueEntryListTest.java?rev=1588468&r1=1588467&r2=1588468&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SortedQueueEntryListTest.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SortedQueueEntryListTest.java Fri Apr 18 13:37:32 2014
@@ -86,15 +86,23 @@ public class SortedQueueEntryListTest ex
final VirtualHostImpl virtualHost = mock(VirtualHostImpl.class);
when(virtualHost.getSecurityManager()).thenReturn(mock(SecurityManager.class));
when(virtualHost.getEventLogger()).thenReturn(new EventLogger());
- _testQueue = new SortedQueueImpl(virtualHost, attributes, new QueueEntryListFactory()
+ _testQueue = new SortedQueueImpl(virtualHost, attributes)
{
+ SelfValidatingSortedQueueEntryList _entries;
+ @Override
+ protected void onOpen()
+ {
+ super.onOpen();
+ _entries = new SelfValidatingSortedQueueEntryList(this);
+ }
@Override
- public SortedQueueEntryList createQueueEntryList(final AMQQueue queue)
+ SelfValidatingSortedQueueEntryList getEntries()
{
- return new SelfValidatingSortedQueueEntryList((SortedQueueImpl) queue, "KEY");
+ return _entries;
}
- });
+ };
+ _testQueue.open();
_sqel = (SelfValidatingSortedQueueEntryList) _testQueue.getEntries();
super.setUp();
@@ -124,7 +132,7 @@ public class SortedQueueEntryListTest ex
{
if(newList)
{
- return new SelfValidatingSortedQueueEntryList(_testQueue, "KEY");
+ return new SelfValidatingSortedQueueEntryList(_testQueue);
}
else
{
@@ -195,7 +203,7 @@ public class SortedQueueEntryListTest ex
public void testNonUniqueSortKeys() throws Exception
{
- _sqel = new SelfValidatingSortedQueueEntryList(_testQueue, "KEY");
+ _sqel = new SelfValidatingSortedQueueEntryList(_testQueue);
// Build test list
long messageId = 0L;
@@ -216,7 +224,7 @@ public class SortedQueueEntryListTest ex
public void testNullSortKeys() throws Exception
{
- _sqel = new SelfValidatingSortedQueueEntryList(_testQueue, "KEY");
+ _sqel = new SelfValidatingSortedQueueEntryList(_testQueue);
// Build test list
long messageId = 0L;
@@ -237,7 +245,7 @@ public class SortedQueueEntryListTest ex
public void testAscendingSortKeys() throws Exception
{
- _sqel = new SelfValidatingSortedQueueEntryList(_testQueue, "KEY");
+ _sqel = new SelfValidatingSortedQueueEntryList(_testQueue);
// Build test list
long messageId = 0L;
@@ -260,7 +268,7 @@ public class SortedQueueEntryListTest ex
public void testDescendingSortKeys() throws Exception
{
- _sqel = new SelfValidatingSortedQueueEntryList(_testQueue, "KEY");
+ _sqel = new SelfValidatingSortedQueueEntryList(_testQueue);
// Build test list
long messageId = 0L;
@@ -283,7 +291,7 @@ public class SortedQueueEntryListTest ex
public void testInsertAfter() throws Exception
{
- _sqel = new SelfValidatingSortedQueueEntryList(_testQueue, "KEY");
+ _sqel = new SelfValidatingSortedQueueEntryList(_testQueue);
ServerMessage msg = generateTestMessage(1, "A");
_sqel.add(msg);
@@ -303,7 +311,7 @@ public class SortedQueueEntryListTest ex
public void testInsertBefore() throws Exception
{
- _sqel = new SelfValidatingSortedQueueEntryList(_testQueue, "KEY");
+ _sqel = new SelfValidatingSortedQueueEntryList(_testQueue);
ServerMessage msg = generateTestMessage(1, "B");
_sqel.add(msg);
@@ -323,7 +331,7 @@ public class SortedQueueEntryListTest ex
public void testInsertInbetween() throws Exception
{
- _sqel = new SelfValidatingSortedQueueEntryList(_testQueue, "KEY");
+ _sqel = new SelfValidatingSortedQueueEntryList(_testQueue);
ServerMessage msg = generateTestMessage(1, "A");
_sqel.add(msg);
@@ -354,7 +362,7 @@ public class SortedQueueEntryListTest ex
public void testInsertAtHead() throws Exception
{
- _sqel = new SelfValidatingSortedQueueEntryList(_testQueue, "KEY");
+ _sqel = new SelfValidatingSortedQueueEntryList(_testQueue);
ServerMessage msg = generateTestMessage(1, "B");
_sqel.add(msg);
Modified: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SortedQueueEntryTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SortedQueueEntryTest.java?rev=1588468&r1=1588467&r2=1588468&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SortedQueueEntryTest.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SortedQueueEntryTest.java Fri Apr 18 13:37:32 2014
@@ -56,15 +56,23 @@ public class SortedQueueEntryTest extend
final VirtualHostImpl virtualHost = mock(VirtualHostImpl.class);
when(virtualHost.getSecurityManager()).thenReturn(mock(org.apache.qpid.server.security.SecurityManager.class));
when(virtualHost.getEventLogger()).thenReturn(new EventLogger());
- SortedQueueImpl queue = new SortedQueueImpl(virtualHost, attributes, new QueueEntryListFactory()
+ SortedQueueImpl queue = new SortedQueueImpl(virtualHost, attributes)
{
+ SelfValidatingSortedQueueEntryList _entries;
+ @Override
+ protected void onOpen()
+ {
+ super.onOpen();
+ _entries = new SelfValidatingSortedQueueEntryList(this);
+ }
@Override
- public SortedQueueEntryList createQueueEntryList(final AMQQueue queue)
+ SelfValidatingSortedQueueEntryList getEntries()
{
- return new SelfValidatingSortedQueueEntryList((SortedQueueImpl) queue, "KEY");
+ return _entries;
}
- });
+ };
+ queue.open();
_queueEntryList = (SelfValidatingSortedQueueEntryList) queue.getEntries();
super.setUp();
}
Modified: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/StandardQueueEntryListTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/StandardQueueEntryListTest.java?rev=1588468&r1=1588467&r2=1588468&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/StandardQueueEntryListTest.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/StandardQueueEntryListTest.java Fri Apr 18 13:37:32 2014
@@ -20,20 +20,20 @@
*/
package org.apache.qpid.server.queue;
-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.Queue;
-import org.apache.qpid.server.security.SecurityManager;
-import org.apache.qpid.server.virtualhost.VirtualHostImpl;
+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 java.util.concurrent.ConcurrentHashMap;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+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.Queue;
+import org.apache.qpid.server.security.SecurityManager;
+import org.apache.qpid.server.virtualhost.VirtualHostImpl;
public class StandardQueueEntryListTest extends QueueEntryListTestBase
{
@@ -56,8 +56,8 @@ public class StandardQueueEntryListTest
when(virtualHost.getSecurityManager()).thenReturn(mock(SecurityManager.class));
when(virtualHost.getEventLogger()).thenReturn(new EventLogger());
_testQueue = new StandardQueueImpl(virtualHost, queueAttributes);
-
- _sqel = (StandardQueueEntryList) _testQueue.getEntries();
+ _testQueue.open();
+ _sqel = _testQueue.getEntries();
for(int i = 1; i <= 100; i++)
{
final ServerMessage message = mock(ServerMessage.class);
@@ -102,8 +102,8 @@ public class StandardQueueEntryListTest
when(virtualHost.getSecurityManager()).thenReturn(mock(SecurityManager.class));
when(virtualHost.getEventLogger()).thenReturn(new EventLogger());
StandardQueueImpl queue = new StandardQueueImpl(virtualHost, queueAttributes);
-
- return (StandardQueueEntryList) queue.getEntries();
+ queue.open();
+ return queue.getEntries();
}
else
{
Modified: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/StandardQueueTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/StandardQueueTest.java?rev=1588468&r1=1588467&r2=1588468&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/StandardQueueTest.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/StandardQueueTest.java Fri Apr 18 13:37:32 2014
@@ -249,9 +249,17 @@ public class StandardQueueTest extends A
private static class DequeuedQueue extends AbstractQueue
{
+ private QueueEntryList _entries = new DequeuedQueueEntryList(this);
+
public DequeuedQueue(VirtualHostImpl virtualHost)
{
- super(virtualHost, attributes(), new DequeuedQueueEntryListFactory());
+ super(virtualHost, attributes());
+ }
+
+ @Override
+ QueueEntryList getEntries()
+ {
+ return _entries;
}
private static Map<String,Object> attributes()
@@ -264,19 +272,6 @@ public class StandardQueueTest extends A
return attributes;
}
}
- private static class DequeuedQueueEntryListFactory implements QueueEntryListFactory
- {
- public DequeuedQueueEntryList createQueueEntryList(AMQQueue queue)
- {
- /**
- * Override SimpleQueueEntryList to create a dequeued
- * entries for messages with even id
- */
- return new DequeuedQueueEntryList((DequeuedQueue) queue);
- }
-
-
- }
private static class DequeuedQueueEntryList extends OrderedQueueEntryList
{
Modified: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/AbstractDurableConfigurationStoreTestCase.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/AbstractDurableConfigurationStoreTestCase.java?rev=1588468&r1=1588467&r2=1588468&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/AbstractDurableConfigurationStoreTestCase.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/AbstractDurableConfigurationStoreTestCase.java Fri Apr 18 13:37:32 2014
@@ -53,6 +53,7 @@ import org.apache.qpid.server.plugin.Exc
import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.security.SecurityManager;
import org.apache.qpid.server.store.handler.ConfiguredObjectRecordHandler;
+import org.apache.qpid.server.virtualhost.AbstractVirtualHost;
import org.apache.qpid.server.virtualhost.VirtualHostImpl;
import org.apache.qpid.test.utils.QpidTestCase;
import org.apache.qpid.util.FileUtils;
@@ -286,7 +287,7 @@ public abstract class AbstractDurableCon
public void testCreateQueueAMQQueueFieldTable() throws Exception
{
Map<String, Object> attributes = new HashMap<String, Object>();
- attributes.put(Queue.CREATE_DLQ_ON_CREATION, Boolean.TRUE);
+ attributes.put(AbstractVirtualHost.CREATE_DLQ_ON_CREATION, Boolean.TRUE);
attributes.put(Queue.MAXIMUM_DELIVERY_ATTEMPTS, 10);
AMQQueue queue = createTestQueue(getName(), getName() + "Owner", true, attributes);
@@ -335,7 +336,7 @@ public abstract class AbstractDurableCon
{
// create queue
Map<String, Object> attributes = new HashMap<String, Object>();
- attributes.put(Queue.CREATE_DLQ_ON_CREATION, Boolean.TRUE);
+ attributes.put(AbstractVirtualHost.CREATE_DLQ_ON_CREATION, Boolean.TRUE);
attributes.put(Queue.MAXIMUM_DELIVERY_ATTEMPTS, 10);
AMQQueue queue = createTestQueue(getName(), getName() + "Owner", true, attributes);
@@ -361,7 +362,7 @@ public abstract class AbstractDurableCon
{
// create queue
Map<String, Object> attributes = new HashMap<String, Object>();
- attributes.put(Queue.CREATE_DLQ_ON_CREATION, Boolean.TRUE);
+ attributes.put(AbstractVirtualHost.CREATE_DLQ_ON_CREATION, Boolean.TRUE);
attributes.put(Queue.MAXIMUM_DELIVERY_ATTEMPTS, 10);
AMQQueue queue = createTestQueue(getName(), getName() + "Owner", true, attributes);
DurableConfigurationStoreHelper.createQueue(_configStore, queue);
@@ -387,7 +388,7 @@ public abstract class AbstractDurableCon
{
// create queue
Map<String, Object> attributes = new HashMap<String, Object>();
- attributes.put(Queue.CREATE_DLQ_ON_CREATION, Boolean.TRUE);
+ attributes.put(AbstractVirtualHost.CREATE_DLQ_ON_CREATION, Boolean.TRUE);
attributes.put(Queue.MAXIMUM_DELIVERY_ATTEMPTS, 10);
AMQQueue queue = createTestQueue(getName(), getName() + "Owner", true, attributes);
DurableConfigurationStoreHelper.createQueue(_configStore, queue);
Modified: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/DurableConfigurationRecovererTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/DurableConfigurationRecovererTest.java?rev=1588468&r1=1588467&r2=1588468&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/DurableConfigurationRecovererTest.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/DurableConfigurationRecovererTest.java Fri Apr 18 13:37:32 2014
@@ -67,7 +67,6 @@ import org.apache.qpid.server.store.Dura
import org.apache.qpid.server.store.DurableConfiguredObjectRecoverer;
import org.apache.qpid.server.store.StoreException;
import org.apache.qpid.server.store.UnresolvedConfiguredObject;
-import org.apache.qpid.server.util.MapValueConverter;
import org.apache.qpid.test.utils.QpidTestCase;
public class DurableConfigurationRecovererTest extends QpidTestCase
@@ -84,6 +83,7 @@ public class DurableConfigurationRecover
private DurableConfigurationStore _store;
private ConfiguredObjectFactory _configuredObjectFactory;
private ConfiguredObjectTypeFactory _exchangeFactory;
+ private ConfiguredObjectTypeFactory _queueFactory;
@Override
public void setUp() throws Exception
@@ -91,6 +91,8 @@ public class DurableConfigurationRecover
super.setUp();
_configuredObjectFactory = mock(ConfiguredObjectFactory.class);
_exchangeFactory = mock(ConfiguredObjectTypeFactory.class);
+ _queueFactory = mock(ConfiguredObjectTypeFactory.class);
+
AMQQueue<?> queue = mock(AMQQueue.class);
@@ -106,6 +108,8 @@ public class DurableConfigurationRecover
when(_vhost.getQueue(eq(QUEUE_ID))).thenReturn(queue);
when(_configuredObjectFactory.getConfiguredObjectTypeFactory(eq(Exchange.class), anyMap())).thenReturn(_exchangeFactory);
+ when(_configuredObjectFactory.getConfiguredObjectTypeFactory(eq(Queue.class), anyMap())).thenReturn(_queueFactory);
+
final ArgumentCaptor<ConfiguredObjectRecord> recoveredExchange = ArgumentCaptor.forClass(ConfiguredObjectRecord.class);
doAnswer(new Answer()
@@ -131,52 +135,38 @@ public class DurableConfigurationRecover
- final ArgumentCaptor<Map> attributesArg = ArgumentCaptor.forClass(Map.class);
- when(_vhost.restoreQueue(attributesArg.capture())).then(
- new Answer()
- {
+ final ArgumentCaptor<ConfiguredObjectRecord> recoveredQueue = ArgumentCaptor.forClass(ConfiguredObjectRecord.class);
+ doAnswer(new Answer()
+ {
- @Override
- public Object answer(final InvocationOnMock invocation) throws Throwable
- {
- final AMQQueue queue = mock(AMQQueue.class);
-
- final Map attributes = attributesArg.getValue();
- final String queueName = (String) attributes.get(Queue.NAME);
- final UUID queueId = MapValueConverter.getUUIDAttribute(Queue.ID, attributes);
-
- when(queue.getName()).thenReturn(queueName);
- when(queue.getId()).thenReturn(queueId);
- when(_vhost.getQueue(eq(queueName))).thenReturn(queue);
- when(_vhost.getQueue(eq(queueId))).thenReturn(queue);
-
- final ArgumentCaptor<ExchangeImpl> altExchangeArg = ArgumentCaptor.forClass(ExchangeImpl.class);
- doAnswer(
- new Answer()
- {
- @Override
- public Object answer(InvocationOnMock invocation) throws Throwable
- {
- final ExchangeImpl value = altExchangeArg.getValue();
- when(queue.getAlternateExchange()).thenReturn(value);
- return null;
- }
- }
- ).when(queue).setAlternateExchange(altExchangeArg.capture());
-
- Map args = attributes;
- if (args.containsKey(Queue.ALTERNATE_EXCHANGE))
- {
- final UUID exchangeId = UUID.fromString(args.get(Queue.ALTERNATE_EXCHANGE).toString());
- final ExchangeImpl exchange =
- (ExchangeImpl) _vhost.getExchange(exchangeId);
- queue.setAlternateExchange(exchange);
- }
- return queue;
- }
- });
+ @Override
+ public Object answer(final InvocationOnMock invocation) throws Throwable
+ {
+ ConfiguredObjectRecord queueRecord = recoveredQueue.getValue();
+ AMQQueue queue = mock(AMQQueue.class);
+ UUID id = queueRecord.getId();
+ String name = (String) queueRecord.getAttributes().get("name");
+ when(queue.getId()).thenReturn(id);
+ when(queue.getName()).thenReturn(name);
+ when(_vhost.getQueue(eq(id))).thenReturn(queue);
+ when(_vhost.getQueue(eq(name))).thenReturn(queue);
+ UnresolvedConfiguredObject unresolved = mock(UnresolvedConfiguredObject.class);
+ when(unresolved.resolve()).thenReturn(queue);
+
+ Map args = queueRecord.getAttributes();
+ if (args.containsKey(Queue.ALTERNATE_EXCHANGE))
+ {
+ final UUID exchangeId = UUID.fromString(args.get(Queue.ALTERNATE_EXCHANGE).toString());
+ final ExchangeImpl exchange =
+ _vhost.getExchange(exchangeId);
+ when(queue.getAlternateExchange()).thenReturn(exchange);
+ }
+
+ return unresolved;
+ }
+ }).when(_queueFactory).recover(recoveredQueue.capture(), any(ConfiguredObject.class));
DurableConfiguredObjectRecoverer[] recoverers = {
Modified: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/MockVirtualHost.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/MockVirtualHost.java?rev=1588468&r1=1588467&r2=1588468&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/MockVirtualHost.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/MockVirtualHost.java Fri Apr 18 13:37:32 2014
@@ -652,12 +652,6 @@ public class MockVirtualHost implements
}
@Override
- public AMQQueue restoreQueue(final Map<String, Object> attributes)
- {
- return null;
- }
-
- @Override
public boolean getDefaultDeadLetterQueueEnabled()
{
return false;
Modified: qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/VirtualHostQueueCreationTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/VirtualHostQueueCreationTest.java?rev=1588468&r1=1588467&r2=1588468&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/VirtualHostQueueCreationTest.java (original)
+++ qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/VirtualHostQueueCreationTest.java Fri Apr 18 13:37:32 2014
@@ -33,6 +33,7 @@ import org.apache.qpid.server.configurat
import org.apache.qpid.server.configuration.updater.TaskExecutor;
import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.model.Broker;
+import org.apache.qpid.server.model.Exchange;
import org.apache.qpid.server.model.LifetimePolicy;
import org.apache.qpid.server.model.Queue;
import org.apache.qpid.server.model.VirtualHost;
@@ -153,21 +154,21 @@ public class VirtualHostQueueCreationTes
attributes.put(Queue.ID, UUID.randomUUID());
attributes.put(Queue.NAME, queueName);
- attributes.put(Queue.CREATE_DLQ_ON_CREATION, true);
+ attributes.put(AbstractVirtualHost.CREATE_DLQ_ON_CREATION, true);
AMQQueue queue = _virtualHost.createQueue(attributes);
- ExchangeImpl altExchange = queue.getAlternateExchange();
+ Exchange altExchange = queue.getAlternateExchange();
assertNotNull("Queue should have an alternate exchange as DLQ is enabled", altExchange);
assertEquals("Alternate exchange name was not as expected", dlExchangeName, altExchange.getName());
- assertEquals("Alternate exchange type was not as expected", ExchangeDefaults.FANOUT_EXCHANGE_CLASS, altExchange.getTypeName());
+ assertEquals("Alternate exchange type was not as expected", ExchangeDefaults.FANOUT_EXCHANGE_CLASS, altExchange.getType());
assertNotNull("The alternate exchange was not registered as expected", _virtualHost.getExchange(dlExchangeName));
assertEquals("The registered exchange was not the expected exchange instance", altExchange, _virtualHost.getExchange(dlExchangeName));
AMQQueue dlQueue = _virtualHost.getQueue(dlQueueName);
assertNotNull("The DLQ was not registered as expected", dlQueue);
- assertTrue("DLQ should have been bound to the alternate exchange", altExchange.isBound(dlQueue));
+ assertTrue("DLQ should have been bound to the alternate exchange", ((ExchangeImpl)altExchange).isBound(dlQueue));
assertNull("DLQ should have no alternate exchange", dlQueue.getAlternateExchange());
assertEquals("DLQ should have a zero maximum delivery count", 0, dlQueue.getMaximumDeliveryAttempts());
@@ -192,23 +193,23 @@ public class VirtualHostQueueCreationTes
Map<String,Object> attributes = new HashMap<String, Object>();
attributes.put(Queue.ID, UUID.randomUUID());
attributes.put(Queue.NAME, queueName);
- attributes.put(Queue.CREATE_DLQ_ON_CREATION, true);
+ attributes.put(AbstractVirtualHost.CREATE_DLQ_ON_CREATION, true);
attributes.put(Queue.MAXIMUM_DELIVERY_ATTEMPTS, 5);
AMQQueue queue = _virtualHost.createQueue(attributes);
assertEquals("Unexpected maximum delivery count", 5, queue.getMaximumDeliveryAttempts());
- ExchangeImpl altExchange = queue.getAlternateExchange();
+ Exchange altExchange = queue.getAlternateExchange();
assertNotNull("Queue should have an alternate exchange as DLQ is enabled", altExchange);
assertEquals("Alternate exchange name was not as expected", dlExchangeName, altExchange.getName());
- assertEquals("Alternate exchange type was not as expected", ExchangeDefaults.FANOUT_EXCHANGE_CLASS, altExchange.getTypeName());
+ assertEquals("Alternate exchange type was not as expected", ExchangeDefaults.FANOUT_EXCHANGE_CLASS, altExchange.getType());
assertNotNull("The alternate exchange was not registered as expected", _virtualHost.getExchange(dlExchangeName));
assertEquals("The registered exchange was not the expected exchange instance", altExchange, _virtualHost.getExchange(dlExchangeName));
AMQQueue dlQueue = _virtualHost.getQueue(dlQueueName);
assertNotNull("The DLQ was not registered as expected", dlQueue);
- assertTrue("DLQ should have been bound to the alternate exchange", altExchange.isBound(dlQueue));
+ assertTrue("DLQ should have been bound to the alternate exchange", ((ExchangeImpl)altExchange).isBound(dlQueue));
assertNull("DLQ should have no alternate exchange", dlQueue.getAlternateExchange());
assertEquals("DLQ should have a zero maximum delivery count", 0, dlQueue.getMaximumDeliveryAttempts());
@@ -234,7 +235,7 @@ public class VirtualHostQueueCreationTes
attributes.put(Queue.ID, UUID.randomUUID());
attributes.put(Queue.NAME, queueName);
- attributes.put(Queue.CREATE_DLQ_ON_CREATION, false);
+ attributes.put(AbstractVirtualHost.CREATE_DLQ_ON_CREATION, false);
AMQQueue queue = _virtualHost.createQueue(attributes);
@@ -266,7 +267,7 @@ public class VirtualHostQueueCreationTes
attributes.put(Queue.ID, UUID.randomUUID());
attributes.put(Queue.NAME, queueName);
- attributes.put(Queue.CREATE_DLQ_ON_CREATION, true);
+ attributes.put(AbstractVirtualHost.CREATE_DLQ_ON_CREATION, true);
attributes.put(Queue.LIFETIME_POLICY, LifetimePolicy.DELETE_ON_NO_OUTBOUND_LINKS);
//create an autodelete queue
@@ -338,7 +339,7 @@ public class VirtualHostQueueCreationTes
catch (Exception e)
{
assertTrue(e instanceof IllegalArgumentException);
- assertEquals("Value for attribute name is not found", e.getMessage());
+ assertTrue(e.getMessage().startsWith("The name attribute is mandatory"));
}
}
@@ -359,7 +360,7 @@ public class VirtualHostQueueCreationTes
attributes.put(Queue.ID, UUID.randomUUID());
attributes.put(Queue.NAME, queueName);
- attributes.put(Queue.CREATE_DLQ_ON_CREATION, true);
+ attributes.put(AbstractVirtualHost.CREATE_DLQ_ON_CREATION, true);
_virtualHost.createQueue(attributes);
fail("queue with DLQ name having more than 255 characters can not be created!");
@@ -389,7 +390,7 @@ public class VirtualHostQueueCreationTes
attributes.put(Queue.ID, UUID.randomUUID());
attributes.put(Queue.NAME, queueName);
- attributes.put(Queue.CREATE_DLQ_ON_CREATION, (Object) true);
+ attributes.put(AbstractVirtualHost.CREATE_DLQ_ON_CREATION, (Object) true);
_virtualHost.createQueue(attributes);
fail("queue with DLE name having more than 255 characters can not be created!");
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org