summaryrefslogtreecommitdiff
path: root/qpid/java
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2014-02-26 23:27:39 +0000
committerRobert Godfrey <rgodfrey@apache.org>2014-02-26 23:27:39 +0000
commit4ae118bb7a81155a9f3d22af3a4a3f2191799c83 (patch)
tree8bebb59700d6825f997cb501c9043513e0f785c8 /qpid/java
parent6339e3b1ad22e74508510e08384c4d484bd9666c (diff)
downloadqpid-python-4ae118bb7a81155a9f3d22af3a4a3f2191799c83.tar.gz
QPID-5577 : [Java Broker] Change Exchange,Queue,Binding,Consumer to implement ConfiguredObject and remove adapter classes
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1572343 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/binding/BindingImpl.java (renamed from qpid/java/broker-core/src/main/java/org/apache/qpid/server/binding/Binding.java)152
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/consumer/Consumer.java4
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java317
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultExchange.java112
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeFactory.java12
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java42
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DirectExchange.java18
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/ExchangeFactory.java7
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/ExchangeImpl.java (renamed from qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/Exchange.java)34
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/ExchangeRegistry.java16
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java34
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersBinding.java10
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersExchange.java20
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/NonDefaultExchange.java32
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/TopicExchange.java14
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/topic/TopicExchangeResult.java12
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/FilterSupport.java2
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/subjects/BindingLogSubject.java4
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/subjects/ExchangeLogSubject.java4
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/MessageDestination.java2
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/MessageInstance.java17
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/MessageSource.java12
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AccessControlProvider.java2
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AuthenticationProvider.java2
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Binding.java12
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Broker.java2
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObject.java23
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Connection.java1
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Consumer.java1
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Exchange.java3
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Group.java2
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/GroupMember.java1
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/GroupProvider.java2
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/KeyStore.java1
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Plugin.java2
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Port.java2
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/PreferencesProvider.java2
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java19
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Session.java1
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Statistics.java26
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/TrustStore.java1
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/User.java1
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java8
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostAlias.java1
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractKeyStoreAdapter.java16
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.java18
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AccessControlProviderAdapter.java17
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java30
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BindingAdapter.java212
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java4
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ConsumerAdapter.java246
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ExchangeAdapter.java398
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProvider.java17
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/GroupProviderAdapter.java46
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java17
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java938
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java44
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java172
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAliasAdapter.java13
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/ExchangeType.java6
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AMQQueue.java90
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AMQQueueFactory.java14
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java864
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AssignedConsumerMessageGroupManager.java30
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/BaseQueue.java4
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/ConflationQueue.java4
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/ConflationQueueList.java20
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/DefinedGroupMessageGroupManager.java38
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/MessageGroupManager.java16
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/NotificationCheck.java302
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/OrderedQueueEntry.java20
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/OrderedQueueEntryList.java60
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/OutOfOrderQueue.java14
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/PriorityQueue.java2
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/PriorityQueueList.java61
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueConsumer.java25
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueConsumerImpl.java198
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueConsumerList.java72
-rwxr-xr-xqpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueContext.java20
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntry.java8
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryImpl.java72
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryIterator.java6
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryList.java14
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryListBase.java2
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryListFactory.java4
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryVisitor.java6
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/SortedQueue.java6
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/SortedQueueEntry.java5
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/SortedQueueEntryList.java12
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/SortedQueueEntryListFactory.java6
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/StandardQueue.java2
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/StandardQueueEntry.java2
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/StandardQueueEntryList.java14
-rwxr-xr-xqpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java16
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/access/ObjectProperties.java4
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStoreHelper.java16
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java55
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/BindingRecoverer.java23
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ExchangeExistsException.java8
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ExchangeRecoverer.java13
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/QueueRecoverer.java6
-rwxr-xr-xqpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java25
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostListener.java6
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/VirtualHostConfigurationTest.java12
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/exchange/DefaultExchangeFactoryTest.java9
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/exchange/FanoutExchangeTest.java2
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/exchange/HeadersBindingTest.java35
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/exchange/HeadersExchangeTest.java2
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/exchange/TopicExchangeTest.java122
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/messages/ExchangeMessagesTest.java8
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/subjects/AbstractTestLogSubject.java4
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/subjects/BindingLogSubjectTest.java4
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/subjects/ExchangeLogSubjectTest.java4
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/AMQQueueFactoryTest.java23
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/AbstractQueueTestBase.java111
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/ConflationQueueListTest.java4
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/ConsumerListTest.java2
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/MockMessageInstance.java8
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/NotificationCheckTest.java16
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/PriorityQueueListTest.java2
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/PriorityQueueTest.java2
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/QueueEntryImplTestBase.java9
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/QueueEntryListTestBase.java46
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SelfValidatingSortedQueueEntryList.java2
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SimpleQueueEntryImplTest.java4
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SortedQueueEntryListTest.java22
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SortedQueueEntryTest.java6
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/StandardQueueEntryListTest.java10
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/StandardQueueTest.java57
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/AbstractDurableConfigurationStoreTestCase.java31
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/util/BrokerTestHelper.java5
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/DurableConfigurationRecovererTest.java34
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/MockVirtualHost.java36
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/StandardVirtualHostTest.java15
-rw-r--r--qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ConsumerTarget_0_10.java4
-rw-r--r--qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSession.java4
-rw-r--r--qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java29
-rw-r--r--qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java12
-rw-r--r--qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/BasicGetMethodHandler.java2
-rw-r--r--qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/ExchangeBoundHandler.java4
-rw-r--r--qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/ExchangeDeclareHandler.java5
-rw-r--r--qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/ExchangeDeleteHandler.java4
-rw-r--r--qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/QueueBindHandler.java13
-rw-r--r--qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/QueueDeclareHandler.java2
-rw-r--r--qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/QueueUnbindHandler.java13
-rw-r--r--qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/AMQChannelTest.java7
-rw-r--r--qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/BrokerTestHelper_0_8.java4
-rw-r--r--qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/ExtractResendAndRequeueTest.java2
-rw-r--r--qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ExchangeDestination.java8
-rw-r--r--qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/NodeReceivingDestination.java1
-rw-r--r--qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java25
-rw-r--r--qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Session_1_0.java4
-rw-r--r--qpid/java/broker-plugins/amqp-msg-conv-0-8-to-0-10/src/main/java/org/apache/qpid/server/protocol/converter/v0_8_v0_10/MessageConverter_0_10_to_0_8.java4
-rw-r--r--qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java66
-rw-r--r--qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNodeConsumer.java4
-rw-r--r--qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementResponse.java14
-rw-r--r--qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageServlet.java2
-rw-r--r--qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/ExchangeMBean.java8
-rw-r--r--qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java2
-rw-r--r--qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/QueueMBeanTest.java6
-rw-r--r--qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBeanTest.java4
-rw-r--r--qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java5
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/server/store/MessageStoreTest.java62
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java7
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java2
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestHttpsTest.java2
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java1
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/ConnectionRestTest.java2
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/GroupProviderRestTest.java1
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PreferencesProviderRestTest.java2
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/QueueRestTest.java2
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/client/destination/AddressBasedDestinationTest.java2
172 files changed, 2542 insertions, 3817 deletions
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/binding/Binding.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/binding/BindingImpl.java
index 13cbd0d544..18e78eff88 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/binding/Binding.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/binding/BindingImpl.java
@@ -20,11 +20,14 @@
*/
package org.apache.qpid.server.binding;
-import org.apache.qpid.server.exchange.Exchange;
+import org.apache.qpid.server.exchange.ExchangeImpl;
+import org.apache.qpid.server.exchange.NonDefaultExchange;
import org.apache.qpid.server.logging.actors.CurrentActor;
import org.apache.qpid.server.logging.messages.BindingMessages;
import org.apache.qpid.server.logging.subjects.BindingLogSubject;
+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.LifetimePolicy;
import org.apache.qpid.server.model.Queue;
import org.apache.qpid.server.model.State;
@@ -42,26 +45,28 @@ import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong;
-public class Binding
+public class BindingImpl
+ extends AbstractConfiguredObject<BindingImpl>
+ implements org.apache.qpid.server.model.Binding<BindingImpl>
{
private final String _bindingKey;
private final AMQQueue _queue;
- private final Exchange _exchange;
+ private final NonDefaultExchange _exchange;
private final Map<String, Object> _arguments;
private final UUID _id;
private final AtomicLong _matches = new AtomicLong();
private final BindingLogSubject _logSubject;
final AtomicBoolean _deleted = new AtomicBoolean();
- final CopyOnWriteArrayList<StateChangeListener<Binding,State>> _stateChangeListeners =
- new CopyOnWriteArrayList<StateChangeListener<Binding, State>>();
+ final CopyOnWriteArrayList<StateChangeListener<BindingImpl,State>> _stateChangeListeners =
+ new CopyOnWriteArrayList<StateChangeListener<BindingImpl, State>>();
- public Binding(UUID id,
- final String bindingKey,
- final AMQQueue queue,
- final Exchange exchange,
- final Map<String, Object> arguments)
+ public BindingImpl(UUID id,
+ final String bindingKey,
+ final AMQQueue queue,
+ final NonDefaultExchange exchange,
+ final Map<String, Object> arguments)
{
this(id, convertToAttributes(bindingKey, arguments), queue, exchange);
}
@@ -77,8 +82,9 @@ public class Binding
return attributes;
}
- public Binding(UUID id, Map<String,Object> attributes, AMQQueue queue, Exchange exchange)
+ public BindingImpl(UUID id, Map<String, Object> attributes, AMQQueue queue, NonDefaultExchange exchange)
{
+ super(id,Collections.EMPTY_MAP,attributes,queue.getVirtualHost().getTaskExecutor());
_id = id;
_bindingKey = (String)attributes.get(org.apache.qpid.server.model.Binding.NAME);
_queue = queue;
@@ -96,10 +102,6 @@ public class Binding
}
- public UUID getId()
- {
- return _id;
- }
public String getBindingKey()
{
@@ -111,11 +113,17 @@ public class Binding
return _queue;
}
- public Exchange getExchangeImpl()
+ @Override
+ public Queue getQueue()
{
- return _exchange;
+ return _queue;
}
+ @Override
+ public NonDefaultExchange getExchange()
+ {
+ return _exchange;
+ }
public Map<String, Object> getArguments()
{
@@ -137,10 +145,34 @@ public class Binding
return _queue.isDurable() && _exchange.isDurable();
}
+ @Override
+ public void setDurable(final boolean durable)
+ throws IllegalStateException, AccessControlException, IllegalArgumentException
+ {
+ if(durable != isDurable())
+ {
+ throw new IllegalArgumentException("Cannot change the durability of a binding");
+ }
+ }
+
public LifetimePolicy getLifetimePolicy()
{
- return LifetimePolicy.IN_USE;
+ return LifetimePolicy.PERMANENT;
+ }
+
+ @Override
+ public LifetimePolicy setLifetimePolicy(final LifetimePolicy expected, final LifetimePolicy desired)
+ throws IllegalStateException, AccessControlException, IllegalArgumentException
+ {
+ // TODO
+ return null;
+ }
+
+ @Override
+ public <C extends ConfiguredObject> Collection<C> getChildren(final Class<C> clazz)
+ {
+ return Collections.emptySet();
}
@Override
@@ -151,15 +183,15 @@ public class Binding
return true;
}
- if (!(o instanceof Binding))
+ if (!(o instanceof BindingImpl))
{
return false;
}
- final Binding binding = (Binding) o;
+ final BindingImpl binding = (BindingImpl) o;
return (_bindingKey == null ? binding.getBindingKey() == null : _bindingKey.equals(binding.getBindingKey()))
- && (_exchange == null ? binding.getExchangeImpl() == null : _exchange.equals(binding.getExchangeImpl()))
+ && (_exchange == null ? binding.getExchange() == null : _exchange.equals(binding.getExchange()))
&& (_queue == null ? binding.getAMQQueue() == null : _queue.equals(binding.getAMQQueue()));
}
@@ -194,7 +226,7 @@ public class Binding
{
if(_deleted.compareAndSet(false,true))
{
- for(StateChangeListener<Binding,State> listener : _stateChangeListeners)
+ for(StateChangeListener<BindingImpl,State> listener : _stateChangeListeners)
{
listener.stateChanged(this, State.ACTIVE, State.DELETED);
}
@@ -207,18 +239,90 @@ public class Binding
return _bindingKey;
}
+ @Override
+ public String setName(final String currentName, final String desiredName)
+ throws IllegalStateException, AccessControlException
+ {
+ // TODO
+ return null;
+ }
+
public State getState()
{
return _deleted.get() ? State.DELETED : State.ACTIVE;
}
- public void addStateChangeListener(StateChangeListener<Binding,State> listener)
+ public void addStateChangeListener(StateChangeListener<BindingImpl,State> listener)
{
_stateChangeListeners.add(listener);
}
- public void removeStateChangeListener(StateChangeListener<Binding,State> listener)
+ public void removeStateChangeListener(StateChangeListener<BindingImpl,State> listener)
{
_stateChangeListeners.remove(listener);
}
+
+ @Override
+ public Object getAttribute(final String name)
+ {
+ if(ID.equals(name))
+ {
+ return getId();
+ }
+ else if(NAME.equals(name))
+ {
+ return _bindingKey;
+ }
+ else if(DURABLE.equals(name))
+ {
+ return isDurable();
+ }
+ else if(LIFETIME_POLICY.equals(name))
+ {
+ return getLifetimePolicy();
+ }
+ else if(QUEUE.equals(name))
+ {
+ return _queue;
+ }
+ else if(EXCHANGE.equals(name))
+ {
+ return _exchange;
+ }
+ return super.getAttribute(name);
+ }
+
+ @Override
+ public Collection<String> getAttributeNames()
+ {
+ return getAttributeNames(Binding.class);
+ }
+
+ @Override
+ public <T extends ConfiguredObject> T getParent(final Class<T> clazz)
+ {
+ if(clazz == Exchange.class)
+ {
+ return (T) getExchange();
+ }
+ else if(clazz == Queue.class)
+ {
+ return (T) getQueue();
+ }
+ return super.getParent(clazz);
+ }
+
+ @Override
+ public Object setAttribute(final String name, final Object expected, final Object desired) throws IllegalStateException,
+ AccessControlException, IllegalArgumentException
+ {
+ throw new UnsupportedOperationException("Changing attributes on binding is not supported.");
+ }
+
+ @Override
+ public void setAttributes(final Map<String, Object> attributes) throws IllegalStateException, AccessControlException,
+ IllegalArgumentException
+ {
+ throw new UnsupportedOperationException("Changing attributes on binding is not supported.");
+ }
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/consumer/Consumer.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/consumer/Consumer.java
index 410a0ba2af..4cfcb01cf0 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/consumer/Consumer.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/consumer/Consumer.java
@@ -27,7 +27,7 @@ import org.apache.qpid.server.protocol.AMQSessionModel;
public interface Consumer
{
- AtomicLong SUB_ID_GENERATOR = new AtomicLong(0);
+ AtomicLong CONSUMER_NUMBER_GENERATOR = new AtomicLong(0);
void externalStateChange();
@@ -52,7 +52,7 @@ public interface Consumer
MessageSource getMessageSource();
- long getId();
+ long getConsumerNumber();
boolean isSuspended();
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java
index 91bbdb1649..f7f0d8d26c 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java
@@ -20,9 +20,10 @@
*/
package org.apache.qpid.server.exchange;
+import java.security.AccessControlException;
import java.util.ArrayList;
import org.apache.log4j.Logger;
-import org.apache.qpid.server.binding.Binding;
+import org.apache.qpid.server.binding.BindingImpl;
import org.apache.qpid.server.consumer.Consumer;
import org.apache.qpid.server.logging.LogSubject;
import org.apache.qpid.server.logging.actors.CurrentActor;
@@ -32,9 +33,14 @@ import org.apache.qpid.server.message.InstanceProperties;
import org.apache.qpid.server.message.MessageInstance;
import org.apache.qpid.server.message.MessageReference;
import org.apache.qpid.server.message.ServerMessage;
+import org.apache.qpid.server.model.Binding;
+import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.LifetimePolicy;
+import org.apache.qpid.server.model.Publisher;
+import org.apache.qpid.server.model.Queue;
import org.apache.qpid.server.model.State;
import org.apache.qpid.server.model.UUIDGenerator;
+import org.apache.qpid.server.model.adapter.AbstractConfiguredObject;
import org.apache.qpid.server.plugin.ExchangeType;
import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.queue.BaseQueue;
@@ -44,6 +50,8 @@ import org.apache.qpid.server.txn.ServerTransaction;
import org.apache.qpid.server.util.Action;
import org.apache.qpid.server.util.MapValueConverter;
import org.apache.qpid.server.util.StateChangeListener;
+import org.apache.qpid.server.virtualhost.ExchangeIsAlternateException;
+import org.apache.qpid.server.virtualhost.RequiredExchangeException;
import org.apache.qpid.server.virtualhost.UnknownExchangeException;
import org.apache.qpid.server.virtualhost.VirtualHost;
@@ -58,19 +66,22 @@ import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
-public abstract class AbstractExchange<T extends Exchange> implements Exchange<T>
+public abstract class AbstractExchange<T extends AbstractExchange<T>>
+ extends AbstractConfiguredObject<T>
+ implements NonDefaultExchange<T>
{
private static final Logger _logger = Logger.getLogger(AbstractExchange.class);
+ private final LifetimePolicy _lifetimePolicy;
private String _name;
private final AtomicBoolean _closed = new AtomicBoolean();
- private Exchange _alternateExchange;
+ private NonDefaultExchange _alternateExchange;
private boolean _durable;
private VirtualHost _virtualHost;
- private final List<Action<Exchange>> _closeTaskList = new CopyOnWriteArrayList<Action<Exchange>>();
+ private final List<Action<ExchangeImpl>> _closeTaskList = new CopyOnWriteArrayList<Action<ExchangeImpl>>();
/**
* Whether the exchange is automatically deleted once all queues have detached from it
@@ -81,8 +92,7 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
private LogSubject _logSubject;
private Map<ExchangeReferrer,Object> _referrers = new ConcurrentHashMap<ExchangeReferrer,Object>();
- private final CopyOnWriteArrayList<Binding> _bindings = new CopyOnWriteArrayList<Binding>();
- private final UUID _id;
+ private final CopyOnWriteArrayList<BindingImpl> _bindings = new CopyOnWriteArrayList<BindingImpl>();
private final AtomicInteger _bindingCountHigh = new AtomicInteger();
private final AtomicLong _receivedMessageCount = new AtomicLong();
private final AtomicLong _receivedMessageSize = new AtomicLong();
@@ -91,23 +101,25 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
private final AtomicLong _droppedMessageCount = new AtomicLong();
private final AtomicLong _droppedMessageSize = new AtomicLong();
- private final CopyOnWriteArrayList<Exchange.BindingListener> _listeners = new CopyOnWriteArrayList<Exchange.BindingListener>();
+ private final CopyOnWriteArrayList<ExchangeImpl.BindingListener> _listeners = new CopyOnWriteArrayList<ExchangeImpl.BindingListener>();
- private final ConcurrentHashMap<BindingIdentifier, Binding> _bindingsMap = new ConcurrentHashMap<BindingIdentifier, Binding>();
+ private final ConcurrentHashMap<BindingIdentifier, BindingImpl> _bindingsMap = new ConcurrentHashMap<BindingIdentifier, BindingImpl>();
-
- //TODO : persist creation time
- private long _createTime = System.currentTimeMillis();
- private StateChangeListener<Binding, State> _bindingListener;
+ private StateChangeListener<BindingImpl, State> _bindingListener;
public AbstractExchange(VirtualHost vhost, Map<String, Object> attributes) throws UnknownExchangeException
{
+ super(MapValueConverter.getUUIDAttribute(org.apache.qpid.server.model.Exchange.ID, attributes),
+ Collections.<String,Object>emptyMap(), attributes, vhost.getTaskExecutor());
_virtualHost = vhost;
- _id = MapValueConverter.getUUIDAttribute(org.apache.qpid.server.model.Exchange.ID, attributes);
_name = MapValueConverter.getStringAttribute(org.apache.qpid.server.model.Exchange.NAME, attributes);
_durable = MapValueConverter.getBooleanAttribute(org.apache.qpid.server.model.Exchange.DURABLE, attributes);
- _autoDelete = MapValueConverter.getEnumAttribute(LifetimePolicy.class, org.apache.qpid.server.model.Exchange.LIFETIME_POLICY, attributes, LifetimePolicy.PERMANENT) != LifetimePolicy.PERMANENT;
+ _lifetimePolicy = MapValueConverter.getEnumAttribute(LifetimePolicy.class,
+ org.apache.qpid.server.model.Exchange.LIFETIME_POLICY,
+ attributes,
+ LifetimePolicy.PERMANENT);
+ _autoDelete = _lifetimePolicy != LifetimePolicy.PERMANENT;
_logSubject = new ExchangeLogSubject(this, this.getVirtualHost());
// check ACL
@@ -116,9 +128,9 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
Object alternateExchangeAttr = attributes.get(org.apache.qpid.server.model.Exchange.ALTERNATE_EXCHANGE);
if(alternateExchangeAttr != null)
{
- if(alternateExchangeAttr instanceof Exchange)
+ if(alternateExchangeAttr instanceof ExchangeImpl)
{
- setAlternateExchange((Exchange) alternateExchangeAttr);
+ setAlternateExchange((ExchangeImpl) alternateExchangeAttr);
}
else if(alternateExchangeAttr instanceof UUID)
{
@@ -146,10 +158,10 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
}
}
- _bindingListener = new StateChangeListener<Binding, State>()
+ _bindingListener = new StateChangeListener<BindingImpl, State>()
{
@Override
- public void stateChanged(final Binding binding, final State oldState, final State newState)
+ public void stateChanged(final BindingImpl binding, final State oldState, final State newState)
{
if(newState == State.DELETED)
{
@@ -184,8 +196,8 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
if(_closed.compareAndSet(false,true))
{
- List<Binding> bindings = new ArrayList<Binding>(_bindings);
- for(Binding binding : bindings)
+ List<BindingImpl> bindings = new ArrayList<BindingImpl>(_bindings);
+ for(BindingImpl binding : bindings)
{
binding.removeStateChangeListener(_bindingListener);
binding.delete();
@@ -198,7 +210,7 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
CurrentActor.get().message(_logSubject, ExchangeMessages.DELETED());
- for(Action<Exchange> task : _closeTaskList)
+ for(Action<ExchangeImpl> task : _closeTaskList)
{
task.performAction(this);
}
@@ -218,7 +230,7 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
public final boolean isBound(String bindingKey, Map<String,Object> arguments, AMQQueue queue)
{
- for(Binding b : _bindings)
+ for(BindingImpl b : _bindings)
{
if(bindingKey.equals(b.getBindingKey()) && queue == b.getAMQQueue())
{
@@ -232,7 +244,7 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
public final boolean isBound(String bindingKey, AMQQueue queue)
{
- for(Binding b : _bindings)
+ for(BindingImpl b : _bindings)
{
if(bindingKey.equals(b.getBindingKey()) && queue == b.getAMQQueue())
{
@@ -244,7 +256,7 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
public final boolean isBound(String bindingKey)
{
- for(Binding b : _bindings)
+ for(BindingImpl b : _bindings)
{
if(bindingKey.equals(b.getBindingKey()))
{
@@ -256,7 +268,7 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
public final boolean isBound(AMQQueue queue)
{
- for(Binding b : _bindings)
+ for(BindingImpl b : _bindings)
{
if(queue == b.getAMQQueue())
{
@@ -269,7 +281,7 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
@Override
public final boolean isBound(Map<String, Object> arguments, AMQQueue queue)
{
- for(Binding b : _bindings)
+ for(BindingImpl b : _bindings)
{
if(queue == b.getAMQQueue() &&
((b.getArguments() == null || b.getArguments().isEmpty())
@@ -285,7 +297,7 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
public final boolean isBound(Map<String, Object> arguments)
{
- for(Binding b : _bindings)
+ for(BindingImpl b : _bindings)
{
if(((b.getArguments() == null || b.getArguments().isEmpty())
? (arguments == null || arguments.isEmpty())
@@ -301,7 +313,7 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
@Override
public final boolean isBound(String bindingKey, Map<String, Object> arguments)
{
- for(Binding b : _bindings)
+ for(BindingImpl b : _bindings)
{
if(b.getBindingKey().equals(bindingKey) &&
((b.getArguments() == null || b.getArguments().isEmpty())
@@ -319,12 +331,12 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
return !_bindings.isEmpty();
}
- public Exchange getAlternateExchange()
+ public NonDefaultExchange getAlternateExchange()
{
return _alternateExchange;
}
- public void setAlternateExchange(Exchange exchange)
+ public void setAlternateExchange(NonDefaultExchange exchange)
{
if(_alternateExchange != null)
{
@@ -353,17 +365,17 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
return !_referrers.isEmpty();
}
- public void addCloseTask(final Action<Exchange> task)
+ public void addCloseTask(final Action<ExchangeImpl> task)
{
_closeTaskList.add(task);
}
- public void removeCloseTask(final Action<Exchange> task)
+ public void removeCloseTask(final Action<ExchangeImpl> task)
{
_closeTaskList.remove(task);
}
- public final void doAddBinding(final Binding binding)
+ public final void doAddBinding(final BindingImpl binding)
{
_bindings.add(binding);
int bindingCountSize = _bindings.size();
@@ -384,7 +396,7 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
return _bindingCountHigh.get();
}
- public final void doRemoveBinding(final Binding binding)
+ public final void doRemoveBinding(final BindingImpl binding)
{
onUnbind(binding);
for(BindingListener listener : _listeners)
@@ -394,14 +406,14 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
_bindings.remove(binding);
}
- public final Collection<Binding> getBindings()
+ public final Collection<BindingImpl> getBindings()
{
return Collections.unmodifiableList(_bindings);
}
- protected abstract void onBind(final Binding binding);
+ protected abstract void onBind(final BindingImpl binding);
- protected abstract void onUnbind(final Binding binding);
+ protected abstract void onUnbind(final BindingImpl binding);
public String getName()
@@ -414,11 +426,6 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
return Collections.emptyMap();
}
- public UUID getId()
- {
- return _id;
- }
-
public long getBindingCount()
{
return getBindings().size();
@@ -469,13 +476,13 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
public final <M extends ServerMessage<? extends StorableMessageMetaData>> int send(final M message,
final InstanceProperties instanceProperties,
final ServerTransaction txn,
- final Action<? super MessageInstance<?, ? extends Consumer>> postEnqueueAction)
+ final Action<? super MessageInstance> postEnqueueAction)
{
List<? extends BaseQueue> queues = route(message, instanceProperties);
if(queues == null || queues.isEmpty())
{
- Exchange altExchange = getAlternateExchange();
+ ExchangeImpl altExchange = getAlternateExchange();
if(altExchange != null)
{
return altExchange.send(message, instanceProperties, txn, postEnqueueAction);
@@ -520,7 +527,8 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
protected abstract List<? extends BaseQueue> doRoute(final ServerMessage message,
final InstanceProperties instanceProperties);
- public long getMsgReceives()
+ @Override
+ public long getMessagesIn()
{
return _receivedMessageCount.get();
}
@@ -530,12 +538,14 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
return _routedMessageCount.get();
}
- public long getMsgDrops()
+ @Override
+ public long getMessagesDropped()
{
return _droppedMessageCount.get();
}
- public long getByteReceives()
+ @Override
+ public long getBytesIn()
{
return _receivedMessageSize.get();
}
@@ -545,16 +555,12 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
return _routedMessageSize.get();
}
- public long getByteDrops()
+ @Override
+ public long getBytesDropped()
{
return _droppedMessageSize.get();
}
- public long getCreateTime()
- {
- return _createTime;
- }
-
public void addBindingListener(final BindingListener listener)
{
_listeners.add(listener);
@@ -572,11 +578,11 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
}
@Override
- public boolean replaceBinding(final UUID id, final String bindingKey,
+ public boolean replaceBinding(final String bindingKey,
final AMQQueue queue,
final Map<String, Object> arguments)
{
- return makeBinding(id, bindingKey, queue, arguments, false, true);
+ return makeBinding(getBinding(bindingKey,queue).getId(), bindingKey, queue, arguments, false, true);
}
@Override
@@ -586,7 +592,7 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
makeBinding(id, bindingKey,queue, argumentMap,true, false);
}
- private void removeBinding(final Binding binding)
+ private void removeBinding(final BindingImpl binding)
{
String bindingKey = binding.getBindingKey();
AMQQueue queue = binding.getAMQQueue();
@@ -601,7 +607,7 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
// Check access
_virtualHost.getSecurityManager().authoriseUnbind(this, bindingKey, queue);
- Binding b = _bindingsMap.remove(new BindingIdentifier(bindingKey,queue));
+ BindingImpl b = _bindingsMap.remove(new BindingIdentifier(bindingKey,queue));
if (b != null)
{
@@ -617,9 +623,7 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
}
-
- @Override
- public Binding getBinding(String bindingKey, AMQQueue queue)
+ public BindingImpl getBinding(String bindingKey, AMQQueue queue)
{
assert queue != null;
@@ -656,8 +660,8 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
bindingKey,
_virtualHost.getName());
}
- Binding b = new Binding(id, bindingKey, queue, this, arguments);
- Binding existingMapping = _bindingsMap.putIfAbsent(new BindingIdentifier(bindingKey,queue), b);
+ BindingImpl b = new BindingImpl(id, bindingKey, queue, this, arguments);
+ BindingImpl existingMapping = _bindingsMap.putIfAbsent(new BindingIdentifier(bindingKey,queue), b);
if (existingMapping == null || force)
{
b.addStateChangeListener(_bindingListener);
@@ -682,6 +686,79 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
}
}
+ @Override
+ protected boolean setState(final State currentState, final State desiredState)
+ {
+ if(desiredState == State.DELETED)
+ {
+ try
+ {
+ _virtualHost.removeExchange(this,true);
+ }
+ catch (ExchangeIsAlternateException e)
+ {
+ return false;
+ }
+ catch (RequiredExchangeException e)
+ {
+ return false;
+ }
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public String setName(final String currentName, final String desiredName)
+ throws IllegalStateException, AccessControlException
+ {
+ return null;
+ }
+
+ @Override
+ public State getState()
+ {
+ return _closed.get() ? State.DELETED : State.ACTIVE;
+ }
+
+ @Override
+ public void setDurable(final boolean durable)
+ throws IllegalStateException, AccessControlException, IllegalArgumentException
+ {
+ if(durable == isDurable())
+ {
+ return;
+ }
+ throw new IllegalArgumentException();
+ }
+
+ @Override
+ public LifetimePolicy getLifetimePolicy()
+ {
+ return _lifetimePolicy;
+ }
+
+ @Override
+ public LifetimePolicy setLifetimePolicy(final LifetimePolicy expected, final LifetimePolicy desired)
+ throws IllegalStateException, AccessControlException, IllegalArgumentException
+ {
+ // TODO
+ return _lifetimePolicy;
+ }
+
+ @Override
+ public <C extends ConfiguredObject> Collection<C> getChildren(final Class<C> clazz)
+ {
+ if(org.apache.qpid.server.model.Binding.class.isAssignableFrom(clazz))
+ {
+
+ return (Collection<C>) getBindings();
+ }
+ else
+ {
+ return Collections.EMPTY_SET;
+ }
+ }
private static final class BindingIdentifier
{
@@ -739,4 +816,120 @@ public abstract class AbstractExchange<T extends Exchange> implements Exchange<T
}
}
+ @Override
+ public Collection<Publisher> getPublishers()
+ {
+ return Collections.emptySet();
+ }
+
+ @Override
+ public boolean deleteBinding(final String bindingKey, final AMQQueue queue)
+ {
+ final BindingImpl binding = getBinding(bindingKey, queue);
+ if(binding == null)
+ {
+ return false;
+ }
+ else
+ {
+ binding.delete();
+ return true;
+ }
+ }
+
+ @Override
+ public boolean hasBinding(final String bindingKey, final AMQQueue queue)
+ {
+ return getBinding(bindingKey,queue) != null;
+ }
+
+ @Override
+ public void setAlternateExchange(final ExchangeImpl exchange)
+ {
+ // todo
+ _alternateExchange = (NonDefaultExchange) exchange;
+ }
+
+ @Override
+ public org.apache.qpid.server.model.Binding createBinding(final String bindingKey,
+ final Queue queue,
+ final Map<String, Object> bindingArguments,
+ final Map<String, Object> attributes)
+ {
+ addBinding(bindingKey, (AMQQueue) queue, bindingArguments);
+ final BindingImpl binding = getBinding(bindingKey, (AMQQueue) queue);
+ childAdded(binding);
+ return binding;
+ }
+
+ @Override
+ public void delete()
+ {
+ try
+ {
+ _virtualHost.removeExchange(this,true);
+ }
+ catch (ExchangeIsAlternateException e)
+ {
+ throw new UnsupportedOperationException(e.getMessage(),e);
+ }
+ catch (RequiredExchangeException e)
+ {
+ throw new UnsupportedOperationException("'"+e.getMessage()+"' is a reserved exchange and can't be deleted",e);
+ }
+ }
+
+
+ @Override
+ public <T extends ConfiguredObject> T getParent(final Class<T> clazz)
+ {
+ if(clazz == org.apache.qpid.server.model.VirtualHost.class)
+ {
+ return (T) _virtualHost.getModel();
+ }
+ return super.getParent(clazz);
+ }
+
+ @Override
+ public Collection<String> getAttributeNames()
+ {
+ return getAttributeNames(getClass());
+ }
+
+ @Override
+ public Object getAttribute(final String name)
+ {
+ if(ConfiguredObject.STATE.equals(name))
+ {
+ return getState();
+ }
+ else if(LIFETIME_POLICY.equals(name))
+ {
+ return getLifetimePolicy();
+ }
+ else if(DURABLE.equals(name))
+ {
+ return isDurable();
+ }
+ return super.getAttribute(name);
+ }
+
+
+ @Override
+ protected void changeAttributes(Map<String, Object> attributes)
+ {
+ throw new UnsupportedOperationException("Changing attributes on exchange is not supported.");
+ }
+
+ @Override
+ protected void authoriseSetAttribute(String name, Object expected, Object desired) throws AccessControlException
+ {
+ _virtualHost.getSecurityManager().authoriseUpdate(this);
+ }
+
+ @Override
+ protected void authoriseSetAttributes(Map<String, Object> attributes) throws AccessControlException
+ {
+ _virtualHost.getSecurityManager().authoriseUpdate(this);
+ }
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultExchange.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultExchange.java
index 440f0f225f..0d435f43bd 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultExchange.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultExchange.java
@@ -19,17 +19,14 @@
package org.apache.qpid.server.exchange;
import java.security.AccessControlException;
-import java.util.ArrayList;
-import java.util.Collection;
import java.util.Collections;
-import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.atomic.AtomicBoolean;
+
import org.apache.log4j.Logger;
import org.apache.qpid.exchange.ExchangeDefaults;
-import org.apache.qpid.server.binding.Binding;
+import org.apache.qpid.server.binding.BindingImpl;
import org.apache.qpid.server.consumer.Consumer;
import org.apache.qpid.server.message.InstanceProperties;
import org.apache.qpid.server.message.MessageInstance;
@@ -46,14 +43,13 @@ import org.apache.qpid.server.util.Action;
import org.apache.qpid.server.util.StateChangeListener;
import org.apache.qpid.server.virtualhost.VirtualHost;
-public class DefaultExchange implements Exchange<DirectExchange>
+public class DefaultExchange implements ExchangeImpl<DirectExchange>
{
private final QueueRegistry _queueRegistry;
private UUID _id;
private VirtualHost _virtualHost;
private static final Logger _logger = Logger.getLogger(DefaultExchange.class);
- private final AtomicBoolean _closed = new AtomicBoolean();
private Map<ExchangeReferrer,Object> _referrers = new ConcurrentHashMap<ExchangeReferrer,Object>();
@@ -76,44 +72,27 @@ public class DefaultExchange implements Exchange<DirectExchange>
return DirectExchange.TYPE;
}
- @Override
- public long getBindingCount()
- {
- return _virtualHost.getQueues().size();
- }
-
- @Override
- public long getByteDrops()
- {
- return 0;
- }
-
- @Override
- public long getByteReceives()
- {
- return 0;
- }
@Override
- public long getMsgDrops()
+ public boolean addBinding(String bindingKey, AMQQueue queue, Map<String, Object> arguments)
{
- return 0;
+ throw new AccessControlException("Cannot add bindings to the default exchange");
}
@Override
- public long getMsgReceives()
+ public boolean deleteBinding(final String bindingKey, final AMQQueue queue)
{
- return 0;
+ throw new AccessControlException("Cannot delete bindings from the default exchange");
}
@Override
- public boolean addBinding(String bindingKey, AMQQueue queue, Map<String, Object> arguments)
+ public boolean hasBinding(final String bindingKey, final AMQQueue queue)
{
- throw new AccessControlException("Cannot add bindings to the default exchange");
+ return false;
}
@Override
- public boolean replaceBinding(UUID id, String bindingKey, AMQQueue queue, Map<String, Object> arguments)
+ public boolean replaceBinding(String bindingKey, AMQQueue queue, Map<String, Object> arguments)
{
throw new AccessControlException("Cannot replace bindings on the default exchange");
}
@@ -125,34 +104,6 @@ public class DefaultExchange implements Exchange<DirectExchange>
}
@Override
- public Binding getBinding(String bindingKey, AMQQueue queue)
- {
- if(_virtualHost.getQueue(bindingKey) == queue)
- {
- return convertToBinding(queue);
- }
- else
- {
- return null;
- }
-
- }
-
- private Binding convertToBinding(AMQQueue queue)
- {
- String queueName = queue.getName();
-
- UUID exchangeId = UUIDGenerator.generateBindingUUID(ExchangeDefaults.DEFAULT_EXCHANGE_NAME,
- queueName,
- queueName,
- _virtualHost.getName());
-
- final Binding binding = new Binding(exchangeId, queueName, queue, this, Collections.EMPTY_MAP);
- binding.addStateChangeListener(STATE_CHANGE_LISTENER);
- return binding;
- }
-
- @Override
public String getTypeName()
{
return getExchangeType().getType();
@@ -185,7 +136,7 @@ public class DefaultExchange implements Exchange<DirectExchange>
@Override
public boolean hasBindings()
{
- return getBindingCount() != 0;
+ return !_virtualHost.getQueues().isEmpty();
}
@Override
@@ -225,13 +176,13 @@ public class DefaultExchange implements Exchange<DirectExchange>
}
@Override
- public Exchange getAlternateExchange()
+ public ExchangeImpl getAlternateExchange()
{
return null;
}
@Override
- public void setAlternateExchange(Exchange exchange)
+ public void setAlternateExchange(ExchangeImpl exchange)
{
_logger.warn("Cannot set the alternate exchange for the default exchange");
}
@@ -255,38 +206,9 @@ public class DefaultExchange implements Exchange<DirectExchange>
}
@Override
- public Collection<Binding> getBindings()
- {
- List<Binding> bindings = new ArrayList<Binding>();
- for(AMQQueue q : _virtualHost.getQueues())
- {
- bindings.add(convertToBinding(q));
- }
- return bindings;
- }
-
- @Override
public void addBindingListener(BindingListener listener)
{
- _queueRegistry.addRegistryChangeListener(convertListener(listener));
- }
- private QueueRegistry.RegistryChangeListener convertListener(final BindingListener listener)
- {
- return new QueueRegistry.RegistryChangeListener()
- {
- @Override
- public void queueRegistered(AMQQueue queue)
- {
- listener.bindingAdded(DefaultExchange.this, convertToBinding(queue));
- }
-
- @Override
- public void queueUnregistered(AMQQueue queue)
- {
- listener.bindingRemoved(DefaultExchange.this, convertToBinding(queue));
- }
- };
}
@Override
@@ -304,7 +226,7 @@ public class DefaultExchange implements Exchange<DirectExchange>
public final <M extends ServerMessage<? extends StorableMessageMetaData>> int send(final M message,
final InstanceProperties instanceProperties,
final ServerTransaction txn,
- final Action<? super MessageInstance<?, ? extends Consumer>> postEnqueueAction)
+ final Action<? super MessageInstance> postEnqueueAction)
{
final AMQQueue q = _virtualHost.getQueue(message.getRoutingKey());
if(q == null)
@@ -338,11 +260,11 @@ public class DefaultExchange implements Exchange<DirectExchange>
}
}
- private static final StateChangeListener<Binding, State> STATE_CHANGE_LISTENER =
- new StateChangeListener<Binding, State>()
+ private static final StateChangeListener<BindingImpl, State> STATE_CHANGE_LISTENER =
+ new StateChangeListener<BindingImpl, State>()
{
@Override
- public void stateChanged(final Binding object, final State oldState, final State newState)
+ public void stateChanged(final BindingImpl object, final State oldState, final State newState)
{
if(newState == State.DELETED)
{
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeFactory.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeFactory.java
index daf85e6d55..e9d0740539 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeFactory.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeFactory.java
@@ -23,7 +23,6 @@ package org.apache.qpid.server.exchange;
import org.apache.log4j.Logger;
import org.apache.qpid.exchange.ExchangeDefaults;
-import org.apache.qpid.server.model.LifetimePolicy;
import org.apache.qpid.server.plugin.ExchangeType;
import org.apache.qpid.server.plugin.QpidServiceLoader;
import org.apache.qpid.server.util.MapValueConverter;
@@ -33,7 +32,6 @@ import org.apache.qpid.server.virtualhost.VirtualHost;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
-import java.util.UUID;
public class DefaultExchangeFactory implements ExchangeFactory
{
@@ -48,7 +46,7 @@ public class DefaultExchangeFactory implements ExchangeFactory
ExchangeDefaults.TOPIC_EXCHANGE_CLASS};
private final VirtualHost _host;
- private Map<String, ExchangeType<? extends Exchange>> _exchangeClassMap = new HashMap<String, ExchangeType<? extends Exchange>>();
+ private Map<String, ExchangeType<? extends ExchangeImpl>> _exchangeClassMap = new HashMap<String, ExchangeType<? extends ExchangeImpl>>();
public DefaultExchangeFactory(VirtualHost host)
{
@@ -92,17 +90,17 @@ public class DefaultExchangeFactory implements ExchangeFactory
return new QpidServiceLoader<ExchangeType>().atLeastOneInstanceOf(ExchangeType.class);
}
- public Collection<ExchangeType<? extends Exchange>> getRegisteredTypes()
+ public Collection<ExchangeType<? extends ExchangeImpl>> getRegisteredTypes()
{
return _exchangeClassMap.values();
}
@Override
- public Exchange createExchange(final Map<String, Object> attributes)
+ public NonDefaultExchange createExchange(final Map<String, Object> attributes)
throws AMQUnknownExchangeType, UnknownExchangeException
{
String type = MapValueConverter.getStringAttribute(org.apache.qpid.server.model.Exchange.TYPE, attributes);
- ExchangeType<? extends Exchange> exchType = _exchangeClassMap.get(type);
+ ExchangeType<? extends ExchangeImpl> exchType = _exchangeClassMap.get(type);
if (exchType == null)
{
throw new AMQUnknownExchangeType("Unknown exchange type: " + type,null);
@@ -111,7 +109,7 @@ public class DefaultExchangeFactory implements ExchangeFactory
}
@Override
- public Exchange restoreExchange(Map<String,Object> attributes)
+ public NonDefaultExchange restoreExchange(Map<String,Object> attributes)
throws AMQUnknownExchangeType, UnknownExchangeException
{
return createExchange(attributes);
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java
index 1dfa23f657..e48a640fcb 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java
@@ -46,9 +46,9 @@ public class DefaultExchangeRegistry implements ExchangeRegistry
/**
* Maps from exchange name to exchange instance
*/
- private ConcurrentMap<String, Exchange> _exchangeMap = new ConcurrentHashMap<String, Exchange>();
+ private ConcurrentMap<String, ExchangeImpl> _exchangeMap = new ConcurrentHashMap<String, ExchangeImpl>();
- private Exchange _defaultExchange;
+ private ExchangeImpl _defaultExchange;
private final VirtualHost _host;
private final QueueRegistry _queueRegistry;
@@ -77,7 +77,7 @@ public class DefaultExchangeRegistry implements ExchangeRegistry
private void initialiseExchanges(ExchangeFactory factory, DurableConfigurationStore store)
{
- for (ExchangeType<? extends Exchange> type : factory.getRegisteredTypes())
+ for (ExchangeType<? extends ExchangeImpl> type : factory.getRegisteredTypes())
{
defineExchange(factory, type.getDefaultExchangeName(), type.getType(), store);
}
@@ -96,7 +96,7 @@ public class DefaultExchangeRegistry implements ExchangeRegistry
attributes.put(org.apache.qpid.server.model.Exchange.NAME, name);
attributes.put(org.apache.qpid.server.model.Exchange.TYPE, type);
attributes.put(org.apache.qpid.server.model.Exchange.DURABLE, true);
- Exchange exchange = f.createExchange(attributes);
+ ExchangeImpl exchange = f.createExchange(attributes);
registerExchange(exchange);
if(exchange.isDurable())
{
@@ -122,7 +122,7 @@ public class DefaultExchangeRegistry implements ExchangeRegistry
return _host.getDurableConfigurationStore();
}
- public void registerExchange(Exchange exchange)
+ public void registerExchange(ExchangeImpl exchange)
{
_exchangeMap.put(exchange.getName(), exchange);
synchronized (_listeners)
@@ -135,14 +135,14 @@ public class DefaultExchangeRegistry implements ExchangeRegistry
}
}
- public Exchange getDefaultExchange()
+ public ExchangeImpl getDefaultExchange()
{
return _defaultExchange;
}
public boolean unregisterExchange(String name, boolean inUse)
{
- final Exchange exchange = _exchangeMap.get(name);
+ final ExchangeImpl exchange = _exchangeMap.get(name);
if (exchange != null)
{
@@ -150,7 +150,7 @@ public class DefaultExchangeRegistry implements ExchangeRegistry
// TODO: check inUse argument
- Exchange e = _exchangeMap.remove(name);
+ ExchangeImpl e = _exchangeMap.remove(name);
// if it is null then it was removed by another thread at the same time, we can ignore
if (e != null)
{
@@ -170,9 +170,17 @@ public class DefaultExchangeRegistry implements ExchangeRegistry
}
- public Collection<Exchange> getExchanges()
+ public Collection<ExchangeImpl> getExchanges()
{
- return new ArrayList<Exchange>(_exchangeMap.values());
+ return new ArrayList<ExchangeImpl>(_exchangeMap.values());
+ }
+
+ @Override
+ public Collection<NonDefaultExchange> getExchangesExceptDefault()
+ {
+ Collection allExchanges = getExchanges();
+ allExchanges.remove(_defaultExchange);
+ return allExchanges;
}
public void addRegistryChangeListener(RegistryChangeListener listener)
@@ -180,7 +188,7 @@ public class DefaultExchangeRegistry implements ExchangeRegistry
_listeners.add(listener);
}
- public Exchange getExchange(String name)
+ public ExchangeImpl getExchange(String name)
{
if ((name == null) || name.length() == 0)
{
@@ -195,7 +203,7 @@ public class DefaultExchangeRegistry implements ExchangeRegistry
@Override
public void clearAndUnregisterMbeans()
{
- for (final Exchange exchange : getExchanges())
+ for (final ExchangeImpl exchange : getExchanges())
{
//TODO: this is a bit of a hack, what if the listeners aren't aware
//that we are just unregistering the MBean because of HA, and aren't
@@ -212,7 +220,7 @@ public class DefaultExchangeRegistry implements ExchangeRegistry
}
@Override
- public synchronized Exchange getExchange(UUID exchangeId)
+ public synchronized ExchangeImpl getExchange(UUID exchangeId)
{
if (exchangeId == null)
{
@@ -220,8 +228,8 @@ public class DefaultExchangeRegistry implements ExchangeRegistry
}
else
{
- Collection<Exchange> exchanges = _exchangeMap.values();
- for (Exchange exchange : exchanges)
+ Collection<ExchangeImpl> exchanges = _exchangeMap.values();
+ for (ExchangeImpl exchange : exchanges)
{
if (exchange.getId().equals(exchangeId))
{
@@ -239,8 +247,8 @@ public class DefaultExchangeRegistry implements ExchangeRegistry
{
return true;
}
- Collection<ExchangeType<? extends Exchange>> registeredTypes = _host.getExchangeTypes();
- for (ExchangeType<? extends Exchange> type : registeredTypes)
+ Collection<ExchangeType<? extends ExchangeImpl>> registeredTypes = _host.getExchangeTypes();
+ for (ExchangeType<? extends ExchangeImpl> type : registeredTypes)
{
if (type.getDefaultExchangeName().equals(name))
{
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DirectExchange.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DirectExchange.java
index 222f838df5..0e8cfb72a1 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DirectExchange.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DirectExchange.java
@@ -25,7 +25,7 @@ import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import org.apache.log4j.Logger;
-import org.apache.qpid.server.binding.Binding;
+import org.apache.qpid.server.binding.BindingImpl;
import org.apache.qpid.server.filter.AMQInvalidArgumentException;
import org.apache.qpid.server.filter.FilterSupport;
import org.apache.qpid.server.filter.Filterable;
@@ -51,17 +51,17 @@ public class DirectExchange extends AbstractExchange<DirectExchange>
private static final class BindingSet
{
- private CopyOnWriteArraySet<Binding> _bindings = new CopyOnWriteArraySet<Binding>();
+ private CopyOnWriteArraySet<BindingImpl> _bindings = new CopyOnWriteArraySet<BindingImpl>();
private List<BaseQueue> _unfilteredQueues = new ArrayList<BaseQueue>();
private Map<BaseQueue, MessageFilter> _filteredQueues = new HashMap<BaseQueue, MessageFilter>();
- public synchronized void addBinding(Binding binding)
+ public synchronized void addBinding(BindingImpl binding)
{
_bindings.add(binding);
recalculateQueues();
}
- public synchronized void removeBinding(Binding binding)
+ public synchronized void removeBinding(BindingImpl binding)
{
_bindings.remove(binding);
recalculateQueues();
@@ -72,7 +72,7 @@ public class DirectExchange extends AbstractExchange<DirectExchange>
List<BaseQueue> queues = new ArrayList<BaseQueue>(_bindings.size());
Map<BaseQueue, MessageFilter> filteredQueues = new HashMap<BaseQueue,MessageFilter>();
- for(Binding b : _bindings)
+ for(BindingImpl b : _bindings)
{
if(FilterSupport.argumentsContainFilter(b.getArguments()))
@@ -85,7 +85,7 @@ public class DirectExchange extends AbstractExchange<DirectExchange>
catch (AMQInvalidArgumentException e)
{
_logger.warn("Binding ignored: cannot parse filter on binding of queue '"+b.getAMQQueue().getName()
- + "' to exchange '" + b.getExchangeImpl().getName()
+ + "' to exchange '" + b.getExchange().getName()
+ "' with arguments: " + b.getArguments(), e);
}
@@ -109,7 +109,7 @@ public class DirectExchange extends AbstractExchange<DirectExchange>
return _unfilteredQueues;
}
- public CopyOnWriteArraySet<Binding> getBindings()
+ public CopyOnWriteArraySet<BindingImpl> getBindings()
{
return _bindings;
}
@@ -185,7 +185,7 @@ public class DirectExchange extends AbstractExchange<DirectExchange>
}
- protected void onBind(final Binding binding)
+ protected void onBind(final BindingImpl binding)
{
String bindingKey = binding.getBindingKey();
AMQQueue queue = binding.getAMQQueue();
@@ -209,7 +209,7 @@ public class DirectExchange extends AbstractExchange<DirectExchange>
}
- protected void onUnbind(final Binding binding)
+ protected void onUnbind(final BindingImpl binding)
{
assert binding != null;
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/ExchangeFactory.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/ExchangeFactory.java
index de30b7a244..0c7cece752 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/ExchangeFactory.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/ExchangeFactory.java
@@ -25,16 +25,15 @@ import org.apache.qpid.server.virtualhost.UnknownExchangeException;
import java.util.Collection;
import java.util.Map;
-import java.util.UUID;
public interface ExchangeFactory
{
- Collection<ExchangeType<? extends Exchange>> getRegisteredTypes();
+ Collection<ExchangeType<? extends ExchangeImpl>> getRegisteredTypes();
- Exchange createExchange(Map<String,Object> attributes) throws AMQUnknownExchangeType, UnknownExchangeException;
+ NonDefaultExchange createExchange(Map<String,Object> attributes) throws AMQUnknownExchangeType, UnknownExchangeException;
- Exchange restoreExchange(Map<String,Object> attributes) throws AMQUnknownExchangeType, UnknownExchangeException;
+ NonDefaultExchange restoreExchange(Map<String,Object> attributes) throws AMQUnknownExchangeType, UnknownExchangeException;
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/Exchange.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/ExchangeImpl.java
index 613a827462..975cac5e54 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/Exchange.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/ExchangeImpl.java
@@ -20,17 +20,15 @@
*/
package org.apache.qpid.server.exchange;
-import org.apache.qpid.server.binding.Binding;
+import org.apache.qpid.server.binding.BindingImpl;
import org.apache.qpid.server.message.MessageDestination;
import org.apache.qpid.server.plugin.ExchangeType;
import org.apache.qpid.server.queue.AMQQueue;
-import org.apache.qpid.server.virtualhost.VirtualHost;
-import java.util.Collection;
import java.util.Map;
import java.util.UUID;
-public interface Exchange<T extends Exchange> extends ExchangeReferrer, MessageDestination
+public interface ExchangeImpl<T extends NonDefaultExchange> extends ExchangeReferrer, MessageDestination
{
UUID getId();
@@ -48,32 +46,22 @@ public interface Exchange<T extends Exchange> extends ExchangeReferrer, MessageD
*/
boolean isAutoDelete();
- Exchange getAlternateExchange();
-
- void setAlternateExchange(Exchange exchange);
-
- long getBindingCount();
-
- long getByteDrops();
-
- long getByteReceives();
-
- long getMsgDrops();
-
- long getMsgReceives();
+ ExchangeImpl getAlternateExchange();
+ void setAlternateExchange(ExchangeImpl exchange);
boolean addBinding(String bindingKey, AMQQueue queue, Map<String, Object> arguments);
+ boolean deleteBinding(String bindingKey, AMQQueue queue);
+ boolean hasBinding(String bindingKey, AMQQueue queue);
+
- boolean replaceBinding(UUID id, String bindingKey,
+ boolean replaceBinding(String bindingKey,
AMQQueue queue,
Map<String, Object> arguments);
void restoreBinding(UUID id, String bindingKey, AMQQueue queue,
Map<String, Object> argumentMap);
- Binding getBinding(String bindingKey, AMQQueue queue);
-
void close();
/**
@@ -108,8 +96,6 @@ public interface Exchange<T extends Exchange> extends ExchangeReferrer, MessageD
*/
boolean hasBindings();
- Collection<Binding> getBindings();
-
boolean isBound(AMQQueue queue);
boolean isBound(Map<String, Object> arguments);
@@ -128,8 +114,8 @@ public interface Exchange<T extends Exchange> extends ExchangeReferrer, MessageD
public interface BindingListener
{
- void bindingAdded(Exchange exchange, Binding binding);
- void bindingRemoved(Exchange exchange, Binding binding);
+ void bindingAdded(ExchangeImpl exchange, BindingImpl binding);
+ void bindingRemoved(ExchangeImpl exchange, BindingImpl binding);
}
public void addBindingListener(BindingListener listener);
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/ExchangeRegistry.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/ExchangeRegistry.java
index de05bfb4d9..b4f14b00c8 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/ExchangeRegistry.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/ExchangeRegistry.java
@@ -26,13 +26,13 @@ import java.util.UUID;
public interface ExchangeRegistry
{
- void registerExchange(Exchange exchange);
+ void registerExchange(ExchangeImpl exchange);
- Exchange getDefaultExchange();
+ ExchangeImpl getDefaultExchange();
void initialise(ExchangeFactory exchangeFactory);
- Exchange getExchange(String exchangeName);
+ ExchangeImpl getExchange(String exchangeName);
/**
* Unregister an exchange
@@ -43,9 +43,11 @@ public interface ExchangeRegistry
void clearAndUnregisterMbeans();
- Exchange getExchange(UUID exchangeId);
+ ExchangeImpl getExchange(UUID exchangeId);
- Collection<Exchange> getExchanges();
+ Collection<ExchangeImpl> getExchanges();
+
+ Collection<NonDefaultExchange> getExchangesExceptDefault();
void addRegistryChangeListener(RegistryChangeListener listener);
@@ -58,7 +60,7 @@ public interface ExchangeRegistry
interface RegistryChangeListener
{
- void exchangeRegistered(Exchange exchange);
- void exchangeUnregistered(Exchange exchange);
+ void exchangeRegistered(ExchangeImpl exchange);
+ void exchangeUnregistered(ExchangeImpl exchange);
}
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java
index 46f4e3256b..c7f81f1d15 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java
@@ -27,7 +27,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.atomic.AtomicReference;
import org.apache.log4j.Logger;
-import org.apache.qpid.server.binding.Binding;
+import org.apache.qpid.server.binding.BindingImpl;
import org.apache.qpid.server.filter.AMQInvalidArgumentException;
import org.apache.qpid.server.filter.FilterSupport;
import org.apache.qpid.server.filter.Filterable;
@@ -55,10 +55,10 @@ public class FanoutExchange extends AbstractExchange<FanoutExchange>
private final CopyOnWriteArrayList<AMQQueue> _unfilteredQueues = new CopyOnWriteArrayList<AMQQueue>();
private final CopyOnWriteArrayList<AMQQueue> _filteredQueues = new CopyOnWriteArrayList<AMQQueue>();
- private final AtomicReference<Map<AMQQueue,Map<Binding, MessageFilter>>> _filteredBindings =
- new AtomicReference<Map<AMQQueue,Map<Binding, MessageFilter>>>();
+ private final AtomicReference<Map<AMQQueue,Map<BindingImpl, MessageFilter>>> _filteredBindings =
+ new AtomicReference<Map<AMQQueue,Map<BindingImpl, MessageFilter>>>();
{
- Map<AMQQueue,Map<Binding, MessageFilter>> emptyMap = Collections.emptyMap();
+ Map<AMQQueue,Map<BindingImpl, MessageFilter>> emptyMap = Collections.emptyMap();
_filteredBindings.set(emptyMap);
}
@@ -82,7 +82,7 @@ public class FanoutExchange extends AbstractExchange<FanoutExchange>
public ArrayList<BaseQueue> doRoute(ServerMessage payload, final InstanceProperties instanceProperties)
{
- for(Binding b : getBindings())
+ for(BindingImpl b : getBindings())
{
b.incrementMatches();
}
@@ -90,12 +90,12 @@ public class FanoutExchange extends AbstractExchange<FanoutExchange>
final ArrayList<BaseQueue> result = new ArrayList<BaseQueue>(_unfilteredQueues);
- final Map<AMQQueue, Map<Binding, MessageFilter>> filteredBindings = _filteredBindings.get();
+ final Map<AMQQueue, Map<BindingImpl, MessageFilter>> filteredBindings = _filteredBindings.get();
if(!_filteredQueues.isEmpty())
{
for(AMQQueue q : _filteredQueues)
{
- final Map<Binding, MessageFilter> bindingMessageFilterMap = filteredBindings.get(q);
+ final Map<BindingImpl, MessageFilter> bindingMessageFilterMap = filteredBindings.get(q);
if(!(bindingMessageFilterMap == null || result.contains(q)))
{
for(MessageFilter filter : bindingMessageFilterMap.values())
@@ -122,7 +122,7 @@ public class FanoutExchange extends AbstractExchange<FanoutExchange>
}
- protected synchronized void onBind(final Binding binding)
+ protected synchronized void onBind(final BindingImpl binding)
{
AMQQueue queue = binding.getAMQQueue();
assert queue != null;
@@ -148,17 +148,17 @@ public class FanoutExchange extends AbstractExchange<FanoutExchange>
try
{
- HashMap<AMQQueue,Map<Binding, MessageFilter>> filteredBindings =
- new HashMap<AMQQueue,Map<Binding, MessageFilter>>(_filteredBindings.get());
+ HashMap<AMQQueue,Map<BindingImpl, MessageFilter>> filteredBindings =
+ new HashMap<AMQQueue,Map<BindingImpl, MessageFilter>>(_filteredBindings.get());
- Map<Binding, MessageFilter> bindingsForQueue = filteredBindings.remove(binding.getAMQQueue());
+ Map<BindingImpl, MessageFilter> bindingsForQueue = filteredBindings.remove(binding.getAMQQueue());
final
MessageFilter messageFilter =
FilterSupport.createMessageFilter(binding.getArguments(), binding.getAMQQueue());
if(bindingsForQueue != null)
{
- bindingsForQueue = new HashMap<Binding,MessageFilter>(bindingsForQueue);
+ bindingsForQueue = new HashMap<BindingImpl,MessageFilter>(bindingsForQueue);
bindingsForQueue.put(binding, messageFilter);
}
else
@@ -188,7 +188,7 @@ public class FanoutExchange extends AbstractExchange<FanoutExchange>
}
}
- protected synchronized void onUnbind(final Binding binding)
+ protected synchronized void onUnbind(final BindingImpl binding)
{
AMQQueue queue = binding.getAMQQueue();
if(binding.getArguments() == null || binding.getArguments().isEmpty() || !FilterSupport.argumentsContainFilter(binding.getArguments()))
@@ -210,13 +210,13 @@ public class FanoutExchange extends AbstractExchange<FanoutExchange>
}
else // we are removing a binding with filters
{
- HashMap<AMQQueue,Map<Binding, MessageFilter>> filteredBindings =
- new HashMap<AMQQueue,Map<Binding, MessageFilter>>(_filteredBindings.get());
+ HashMap<AMQQueue,Map<BindingImpl, MessageFilter>> filteredBindings =
+ new HashMap<AMQQueue,Map<BindingImpl, MessageFilter>>(_filteredBindings.get());
- Map<Binding,MessageFilter> bindingsForQueue = filteredBindings.remove(binding.getAMQQueue());
+ Map<BindingImpl,MessageFilter> bindingsForQueue = filteredBindings.remove(binding.getAMQQueue());
if(bindingsForQueue.size()>1)
{
- bindingsForQueue = new HashMap<Binding,MessageFilter>(bindingsForQueue);
+ bindingsForQueue = new HashMap<BindingImpl,MessageFilter>(bindingsForQueue);
bindingsForQueue.remove(binding);
filteredBindings.put(binding.getAMQQueue(),bindingsForQueue);
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersBinding.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersBinding.java
index 23bd311d04..5de3fa4d4e 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersBinding.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersBinding.java
@@ -22,7 +22,7 @@ package org.apache.qpid.server.exchange;
import org.apache.log4j.Logger;
-import org.apache.qpid.server.binding.Binding;
+import org.apache.qpid.server.binding.BindingImpl;
import org.apache.qpid.server.filter.AMQInvalidArgumentException;
import org.apache.qpid.server.filter.FilterSupport;
import org.apache.qpid.server.filter.MessageFilter;
@@ -42,7 +42,7 @@ class HeadersBinding
private static final Logger _logger = Logger.getLogger(HeadersBinding.class);
private final Map<String,Object> _mappings;
- private final Binding _binding;
+ private final BindingImpl _binding;
private final Set<String> required = new HashSet<String>();
private final Map<String,Object> matches = new HashMap<String,Object>();
private boolean matchAny;
@@ -56,7 +56,7 @@ class HeadersBinding
*
* @param binding the binding to create a header binding using
*/
- public HeadersBinding(Binding binding)
+ public HeadersBinding(BindingImpl binding)
{
_binding = binding;
if(_binding !=null)
@@ -81,7 +81,7 @@ class HeadersBinding
catch (AMQInvalidArgumentException e)
{
_logger.warn("Invalid filter in binding queue '"+_binding.getAMQQueue().getName()
- +"' to exchange '"+_binding.getExchangeImpl().getName()
+ +"' to exchange '"+_binding.getExchange().getName()
+"' with arguments: " + _binding.getArguments());
_filter = new MessageFilter()
{
@@ -112,7 +112,7 @@ class HeadersBinding
}
}
- public Binding getBinding()
+ public BindingImpl getBinding()
{
return _binding;
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersExchange.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersExchange.java
index e1a314b394..60df38af55 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersExchange.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersExchange.java
@@ -22,7 +22,7 @@ package org.apache.qpid.server.exchange;
import org.apache.log4j.Logger;
-import org.apache.qpid.server.binding.Binding;
+import org.apache.qpid.server.binding.BindingImpl;
import org.apache.qpid.server.filter.Filterable;
import org.apache.qpid.server.message.InstanceProperties;
import org.apache.qpid.server.message.ServerMessage;
@@ -71,8 +71,8 @@ public class HeadersExchange extends AbstractExchange<HeadersExchange>
private static final Logger _logger = Logger.getLogger(HeadersExchange.class);
- private final ConcurrentHashMap<String, CopyOnWriteArraySet<Binding>> _bindingsByKey =
- new ConcurrentHashMap<String, CopyOnWriteArraySet<Binding>>();
+ private final ConcurrentHashMap<String, CopyOnWriteArraySet<BindingImpl>> _bindingsByKey =
+ new ConcurrentHashMap<String, CopyOnWriteArraySet<BindingImpl>>();
private final CopyOnWriteArrayList<HeadersBinding> _bindingHeaderMatchers =
new CopyOnWriteArrayList<HeadersBinding>();
@@ -106,7 +106,7 @@ public class HeadersExchange extends AbstractExchange<HeadersExchange>
{
if (hb.matches(Filterable.Factory.newInstance(payload,instanceProperties)))
{
- Binding b = hb.getBinding();
+ BindingImpl b = hb.getBinding();
b.incrementMatches();
@@ -122,7 +122,7 @@ public class HeadersExchange extends AbstractExchange<HeadersExchange>
return new ArrayList<BaseQueue>(queues);
}
- protected void onBind(final Binding binding)
+ protected void onBind(final BindingImpl binding)
{
String bindingKey = binding.getBindingKey();
AMQQueue queue = binding.getAMQQueue();
@@ -131,12 +131,12 @@ public class HeadersExchange extends AbstractExchange<HeadersExchange>
assert queue != null;
assert bindingKey != null;
- CopyOnWriteArraySet<Binding> bindings = _bindingsByKey.get(bindingKey);
+ CopyOnWriteArraySet<BindingImpl> bindings = _bindingsByKey.get(bindingKey);
if(bindings == null)
{
- bindings = new CopyOnWriteArraySet<Binding>();
- CopyOnWriteArraySet<Binding> newBindings;
+ bindings = new CopyOnWriteArraySet<BindingImpl>();
+ CopyOnWriteArraySet<BindingImpl> newBindings;
if((newBindings = _bindingsByKey.putIfAbsent(bindingKey, bindings)) != null)
{
bindings = newBindings;
@@ -154,11 +154,11 @@ public class HeadersExchange extends AbstractExchange<HeadersExchange>
}
- protected void onUnbind(final Binding binding)
+ protected void onUnbind(final BindingImpl binding)
{
assert binding != null;
- CopyOnWriteArraySet<Binding> bindings = _bindingsByKey.get(binding.getBindingKey());
+ CopyOnWriteArraySet<BindingImpl> bindings = _bindingsByKey.get(binding.getBindingKey());
if(bindings != null)
{
bindings.remove(binding);
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/NonDefaultExchange.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/NonDefaultExchange.java
new file mode 100644
index 0000000000..6e5eb98078
--- /dev/null
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/NonDefaultExchange.java
@@ -0,0 +1,32 @@
+/*
+ *
+ * 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.exchange;
+
+import org.apache.qpid.server.binding.BindingImpl;
+import org.apache.qpid.server.model.Exchange;
+import org.apache.qpid.server.queue.AMQQueue;
+
+public interface NonDefaultExchange<T extends NonDefaultExchange<T>> extends Exchange<T>, ExchangeImpl<T>
+{
+ NonDefaultExchange getAlternateExchange();
+
+ BindingImpl getBinding(String bindingName, AMQQueue queue);
+}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/TopicExchange.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/TopicExchange.java
index e9bcfe91cc..e7236bdf3e 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/TopicExchange.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/TopicExchange.java
@@ -28,7 +28,7 @@ import java.util.HashSet;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.log4j.Logger;
-import org.apache.qpid.server.binding.Binding;
+import org.apache.qpid.server.binding.BindingImpl;
import org.apache.qpid.server.exchange.topic.TopicExchangeResult;
import org.apache.qpid.server.exchange.topic.TopicMatcherResult;
import org.apache.qpid.server.exchange.topic.TopicNormalizer;
@@ -57,7 +57,7 @@ public class TopicExchange extends AbstractExchange<TopicExchange>
private final Map<String, TopicExchangeResult> _topicExchangeResults =
new ConcurrentHashMap<String, TopicExchangeResult>();
- private final Map<Binding, Map<String,Object>> _bindings = new HashMap<Binding, Map<String,Object>>();
+ private final Map<BindingImpl, Map<String,Object>> _bindings = new HashMap<BindingImpl, Map<String,Object>>();
public TopicExchange(final VirtualHost vhost, final Map attributes) throws UnknownExchangeException
{
@@ -70,7 +70,7 @@ public class TopicExchange extends AbstractExchange<TopicExchange>
return TYPE;
}
- protected synchronized void registerQueue(final Binding binding) throws AMQInvalidArgumentException
+ protected synchronized void registerQueue(final BindingImpl binding) throws AMQInvalidArgumentException
{
final String bindingKey = binding.getBindingKey();
AMQQueue queue = binding.getAMQQueue();
@@ -188,7 +188,7 @@ public class TopicExchange extends AbstractExchange<TopicExchange>
}
- private boolean deregisterQueue(final Binding binding)
+ private boolean deregisterQueue(final BindingImpl binding)
{
if(_bindings.containsKey(binding))
{
@@ -240,7 +240,7 @@ public class TopicExchange extends AbstractExchange<TopicExchange>
{
TopicExchangeResult res = (TopicExchangeResult)result;
- for(Binding b : res.getBindings())
+ for(BindingImpl b : res.getBindings())
{
b.incrementMatches();
}
@@ -253,7 +253,7 @@ public class TopicExchange extends AbstractExchange<TopicExchange>
}
- protected void onBind(final Binding binding)
+ protected void onBind(final BindingImpl binding)
{
try
{
@@ -266,7 +266,7 @@ public class TopicExchange extends AbstractExchange<TopicExchange>
}
}
- protected void onUnbind(final Binding binding)
+ protected void onUnbind(final BindingImpl binding)
{
deregisterQueue(binding);
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/topic/TopicExchangeResult.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/topic/TopicExchangeResult.java
index 77060cb146..d3a6bd9260 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/topic/TopicExchangeResult.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/topic/TopicExchangeResult.java
@@ -20,7 +20,7 @@
*/
package org.apache.qpid.server.exchange.topic;
-import org.apache.qpid.server.binding.Binding;
+import org.apache.qpid.server.binding.BindingImpl;
import org.apache.qpid.server.filter.Filterable;
import org.apache.qpid.server.filter.MessageFilter;
import org.apache.qpid.server.queue.AMQQueue;
@@ -36,7 +36,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
public final class TopicExchangeResult implements TopicMatcherResult
{
- private final List<Binding> _bindings = new CopyOnWriteArrayList<Binding>();
+ private final List<BindingImpl> _bindings = new CopyOnWriteArrayList<BindingImpl>();
private final Map<AMQQueue, Integer> _unfilteredQueues = new ConcurrentHashMap<AMQQueue, Integer>();
private final ConcurrentHashMap<AMQQueue, Map<MessageFilter,Integer>> _filteredQueues = new ConcurrentHashMap<AMQQueue, Map<MessageFilter, Integer>>();
private volatile ArrayList<AMQQueue> _unfilteredQueueList = new ArrayList<AMQQueue>(0);
@@ -80,19 +80,19 @@ public final class TopicExchangeResult implements TopicMatcherResult
return _unfilteredQueues.keySet();
}
- public void addBinding(Binding binding)
+ public void addBinding(BindingImpl binding)
{
_bindings.add(binding);
}
- public void removeBinding(Binding binding)
+ public void removeBinding(BindingImpl binding)
{
_bindings.remove(binding);
}
- public List<Binding> getBindings()
+ public List<BindingImpl> getBindings()
{
- return new ArrayList<Binding>(_bindings);
+ return new ArrayList<BindingImpl>(_bindings);
}
public void addFilteredQueue(AMQQueue queue, MessageFilter filter)
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/FilterSupport.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/FilterSupport.java
index ea0faf132e..043fa4a664 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/FilterSupport.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/FilterSupport.java
@@ -122,7 +122,7 @@ public class FilterSupport
public static final class NoLocalFilter implements MessageFilter
{
- private final MessageSource<?,?> _queue;
+ private final MessageSource _queue;
private NoLocalFilter(MessageSource queue)
{
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/subjects/BindingLogSubject.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/subjects/BindingLogSubject.java
index 476dff249a..2a014887d7 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/subjects/BindingLogSubject.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/subjects/BindingLogSubject.java
@@ -20,7 +20,7 @@
*/
package org.apache.qpid.server.logging.subjects;
-import org.apache.qpid.server.exchange.Exchange;
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.queue.AMQQueue;
import static org.apache.qpid.server.logging.subjects.LogSubjectFormat.BINDING_FORMAT;
@@ -37,7 +37,7 @@ public class BindingLogSubject extends AbstractLogSubject
* @param exchange
* @param queue
*/
- public BindingLogSubject(String routingKey, Exchange exchange,
+ public BindingLogSubject(String routingKey, ExchangeImpl exchange,
AMQQueue queue)
{
setLogStringWithFormat(BINDING_FORMAT,
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/subjects/ExchangeLogSubject.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/subjects/ExchangeLogSubject.java
index 6a03ce3693..2ad1b63dea 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/subjects/ExchangeLogSubject.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/subjects/ExchangeLogSubject.java
@@ -20,7 +20,7 @@
*/
package org.apache.qpid.server.logging.subjects;
-import org.apache.qpid.server.exchange.Exchange;
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.virtualhost.VirtualHost;
import static org.apache.qpid.server.logging.subjects.LogSubjectFormat.EXCHANGE_FORMAT;
@@ -29,7 +29,7 @@ public class ExchangeLogSubject extends AbstractLogSubject
{
/** Create an ExchangeLogSubject that Logs in the following format. */
- public ExchangeLogSubject(Exchange exchange, VirtualHost vhost)
+ public ExchangeLogSubject(ExchangeImpl exchange, VirtualHost vhost)
{
setLogStringWithFormat(EXCHANGE_FORMAT, vhost.getName(),
exchange.getExchangeType().getType(), exchange.getName());
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/MessageDestination.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/MessageDestination.java
index 62f5b3634b..155f209ffb 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/MessageDestination.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/MessageDestination.java
@@ -41,5 +41,5 @@ public interface MessageDestination extends MessageNode
<M extends ServerMessage<? extends StorableMessageMetaData>> int send(M message,
InstanceProperties instanceProperties,
ServerTransaction txn,
- Action<? super MessageInstance<?,? extends Consumer>> postEnqueueAction);
+ Action<? super MessageInstance> postEnqueueAction);
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/MessageInstance.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/MessageInstance.java
index 0bdf83d981..8c69f47367 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/MessageInstance.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/MessageInstance.java
@@ -22,13 +22,14 @@ package org.apache.qpid.server.message;
import org.apache.qpid.server.filter.Filterable;
+import org.apache.qpid.server.queue.QueueEntry;
import org.apache.qpid.server.store.TransactionLogResource;
import org.apache.qpid.server.consumer.Consumer;
import org.apache.qpid.server.txn.ServerTransaction;
import org.apache.qpid.server.util.Action;
import org.apache.qpid.server.util.StateChangeListener;
-public interface MessageInstance<M extends MessageInstance<M,C>, C extends Consumer>
+public interface MessageInstance
{
@@ -43,33 +44,33 @@ public interface MessageInstance<M extends MessageInstance<M,C>, C extends Consu
void decrementDeliveryCount();
- void addStateChangeListener(StateChangeListener<? super M,State> listener);
+ void addStateChangeListener(StateChangeListener<? super MessageInstance,State> listener);
- boolean removeStateChangeListener(StateChangeListener<? super M, State> listener);
+ boolean removeStateChangeListener(StateChangeListener<? super MessageInstance, State> listener);
boolean acquiredByConsumer();
- boolean isAcquiredBy(C consumer);
+ boolean isAcquiredBy(Consumer consumer);
void setRedelivered();
boolean isRedelivered();
- C getDeliveredConsumer();
+ Consumer getDeliveredConsumer();
void reject();
- boolean isRejectedBy(C consumer);
+ boolean isRejectedBy(Consumer consumer);
boolean getDeliveredToConsumer();
boolean expired();
- boolean acquire(C sub);
+ boolean acquire(Consumer sub);
int getMaximumDeliveryCount();
- int routeToAlternate(Action<? super MessageInstance<?, ? extends Consumer>> action, ServerTransaction txn);
+ int routeToAlternate(Action<? super MessageInstance> action, ServerTransaction txn);
Filterable asFilterable();
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/MessageSource.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/MessageSource.java
index cb1c8a5384..382a9df7e9 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/MessageSource.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/MessageSource.java
@@ -29,23 +29,23 @@ import org.apache.qpid.server.store.TransactionLogResource;
import java.util.Collection;
import java.util.EnumSet;
-public interface MessageSource<C extends Consumer, S extends MessageSource<C,S>> extends TransactionLogResource, MessageNode
+public interface MessageSource extends TransactionLogResource, MessageNode
{
- <T extends ConsumerTarget> C addConsumer(T target, FilterManager filters,
+ Consumer addConsumer(ConsumerTarget target, FilterManager filters,
Class<? extends ServerMessage> messageClass,
String consumerName, EnumSet<Consumer.Option> options)
throws ExistingExclusiveConsumer, ExistingConsumerPreventsExclusive,
ConsumerAccessRefused;
- Collection<C> getConsumers();
+ Collection<? extends Consumer> getConsumers();
- void addConsumerRegistrationListener(ConsumerRegistrationListener<S> listener);
+ void addConsumerRegistrationListener(ConsumerRegistrationListener<? super MessageSource> listener);
- void removeConsumerRegistrationListener(ConsumerRegistrationListener<S> listener);
+ void removeConsumerRegistrationListener(ConsumerRegistrationListener<? super MessageSource> listener);
boolean verifySessionAccess(AMQSessionModel<?,?> session);
- interface ConsumerRegistrationListener<Q extends MessageSource<? extends Consumer,?>>
+ interface ConsumerRegistrationListener<Q extends MessageSource>
{
void consumerAdded(Q source, Consumer consumer);
void consumerRemoved(Q queue, Consumer consumer);
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AccessControlProvider.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AccessControlProvider.java
index 8d225ad64c..aa797154e4 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AccessControlProvider.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AccessControlProvider.java
@@ -28,10 +28,8 @@ import org.apache.qpid.server.security.AccessControl;
public interface AccessControlProvider<X extends AccessControlProvider<X>> extends ConfiguredObject<X>
{
- public static final String STATE = "state";
public static final String DURABLE = "durable";
public static final String LIFETIME_POLICY = "lifetimePolicy";
- public static final String TIME_TO_LIVE = "timeToLive";
public static final String TYPE = "type";
//retrieve the underlying AccessControl object
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AuthenticationProvider.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AuthenticationProvider.java
index d75ad83025..b806ce4328 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AuthenticationProvider.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/AuthenticationProvider.java
@@ -30,10 +30,8 @@ public interface AuthenticationProvider<X extends AuthenticationProvider<X>> ext
{
public static final String DESCRIPTION = "description";
- public static final String STATE = "state";
public static final String DURABLE = "durable";
public static final String LIFETIME_POLICY = "lifetimePolicy";
- public static final String TIME_TO_LIVE = "timeToLive";
//children
Collection<VirtualHostAlias> getVirtualHostPortBindings();
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Binding.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Binding.java
index e9244cc0b7..5bc7ea2871 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Binding.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Binding.java
@@ -28,18 +28,6 @@ import java.util.Map;
public interface Binding<X extends Binding<X>> extends ConfiguredObject<X>
{
- public String MATCHED_BYTES = "matchedBytes";
- public String MATCHED_MESSAGES = "matchedMessages";
- public String STATE_CHANGED = "stateChanged";
-
- public static final Collection<String> AVAILABLE_STATISTICS =
- Collections.unmodifiableCollection(
- Arrays.asList(
- MATCHED_BYTES,
- MATCHED_MESSAGES,
- STATE_CHANGED));
-
-
public String ARGUMENTS = "arguments";
public String DURABLE = "durable";
public String LIFETIME_POLICY = "lifetimePolicy";
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 78b1204fe6..e7f7814c56 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
@@ -47,8 +47,6 @@ public interface Broker<X extends Broker<X>> extends ConfiguredObject<X>
String SUPPORTED_PREFERENCES_PROVIDER_TYPES = "supportedPreferencesProviderTypes";
String DURABLE = "durable";
String LIFETIME_POLICY = "lifetimePolicy";
- String STATE = "state";
- String TIME_TO_LIVE = "timeToLive";
String DEFAULT_VIRTUAL_HOST = "defaultVirtualHost";
String STATISTICS_REPORTING_PERIOD = "statisticsReportingPeriod";
String STATISTICS_REPORTING_RESET_ENABLED = "statisticsReportingResetEnabled";
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 5535e22e83..44df5f70ee 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
@@ -39,6 +39,7 @@ public interface ConfiguredObject<X extends ConfiguredObject<X>>
public static final String DESCRIPTION = "description";
public static final String LAST_UPDATED_BY = "lastUpdatedBy";
public static final String LAST_UPDATED_TIME = "lastUpdatedTime";
+ public static final String STATE = "state";
public static final String CREATED_BY = "createdBy";
public static final String CREATED_TIME = "createdTime";
@@ -204,28 +205,6 @@ public interface ConfiguredObject<X extends ConfiguredObject<X>>
IllegalArgumentException;
/**
- * Get the time the object will live once the lifetime policy conditions are no longer fulfilled
- *
- * @return the time to live
- */
- @ManagedAttribute
- long getTimeToLive();
-
- /**
- * Set the ttl value
- *
- * @param expected the ttl the caller believes the object currently has
- * @param desired the ttl value the caller
- * @return the new ttl value
- * @throws IllegalStateException if the ttl cannot be set in the current state
- * @throws AccessControlException if the caller does not have permission to change the ttl
- * @throws IllegalArgumentException if the object does not support the requested ttl value
- */
- long setTimeToLive(long expected, long desired) throws IllegalStateException,
- AccessControlException,
- IllegalArgumentException;
-
- /**
* Get the names of attributes that are set on this object
*
* Note that the returned collection is correct at the time the method is called, but will not reflect future
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Connection.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Connection.java
index 335f4cf600..f2c0fdb5c0 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Connection.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Connection.java
@@ -31,7 +31,6 @@ public interface Connection<X extends Connection<X>> extends ConfiguredObject<X>
public static final String STATE = "state";
public static final String DURABLE = "durable";
public static final String LIFETIME_POLICY = "lifetimePolicy";
- public static final String TIME_TO_LIVE = "timeToLive";
public static final String CLIENT_ID = "clientId";
public static final String CLIENT_VERSION = "clientVersion";
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Consumer.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Consumer.java
index 24711e6030..1911eff78b 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Consumer.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Consumer.java
@@ -34,7 +34,6 @@ public interface Consumer<X extends Consumer<X>> extends ConfiguredObject<X>
public String DURABLE = "durable";
public String LIFETIME_POLICY = "lifetimePolicy";
public String STATE = "state";
- public String TIME_TO_LIVE = "timeToLive";
@ManagedAttribute
String getDistributionMode();
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Exchange.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Exchange.java
index 61519ca3f9..cd2f281bef 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Exchange.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Exchange.java
@@ -32,7 +32,6 @@ public interface Exchange<X extends Exchange<X>> extends ConfiguredObject<X>
String DURABLE = "durable";
String LIFETIME_POLICY = "lifetimePolicy";
String STATE = "state";
- String TIME_TO_LIVE = "timeToLive";
String ALTERNATE_EXCHANGE = "alternateExchange";
// Attributes
@@ -41,7 +40,7 @@ public interface Exchange<X extends Exchange<X>> extends ConfiguredObject<X>
Exchange<?> getAlternateExchange();
//children
- Collection<Binding> getBindings();
+ Collection<? extends Binding> getBindings();
Collection<Publisher> getPublishers();
@ManagedStatistic
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Group.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Group.java
index df5d108914..d4a6b3f2d6 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Group.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Group.java
@@ -24,6 +24,4 @@ public interface Group<X extends Group<X>> extends ConfiguredObject<X>
String DURABLE = "durable";
String LIFETIME_POLICY = "lifetimePolicy";
String STATE = "state";
- String TIME_TO_LIVE = "timeToLive";
-
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/GroupMember.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/GroupMember.java
index 154be964b9..f7ab5ff223 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/GroupMember.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/GroupMember.java
@@ -28,6 +28,5 @@ public interface GroupMember<X extends GroupMember<X>> extends ConfiguredObject<
String DURABLE = "durable";
String LIFETIME_POLICY = "lifetimePolicy";
String STATE = "state";
- String TIME_TO_LIVE = "timeToLive";
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/GroupProvider.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/GroupProvider.java
index e47d6828d9..c182834788 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/GroupProvider.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/GroupProvider.java
@@ -28,10 +28,8 @@ import java.util.Set;
public interface GroupProvider<X extends GroupProvider<X>> extends ConfiguredObject<X>
{
public static final String DESCRIPTION = "description";
- public static final String STATE = "state";
public static final String DURABLE = "durable";
public static final String LIFETIME_POLICY = "lifetimePolicy";
- public static final String TIME_TO_LIVE = "timeToLive";
Set<Principal> getGroupPrincipalsForUser(String username);
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/KeyStore.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/KeyStore.java
index cb985f113f..9fee4f4df7 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/KeyStore.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/KeyStore.java
@@ -31,7 +31,6 @@ public interface KeyStore<X extends KeyStore<X>> extends ConfiguredObject<X>
String DURABLE = "durable";
String LIFETIME_POLICY = "lifetimePolicy";
String STATE = "state";
- String TIME_TO_LIVE = "timeToLive";
String DESCRIPTION = "description";
String PATH = "path";
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Plugin.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Plugin.java
index ae68aeb670..792601d946 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Plugin.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Plugin.java
@@ -29,8 +29,6 @@ public interface Plugin<X extends Plugin<X>> extends ConfiguredObject<X>
//Hack, using it for the class name only for consistency with the other things.
String DURABLE = "durable";
String LIFETIME_POLICY = "lifetimePolicy";
- String STATE = "state";
- String TIME_TO_LIVE = "timeToLive";
// Attributes
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Port.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Port.java
index 2b4bea82ad..72bf6bc523 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Port.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Port.java
@@ -27,8 +27,6 @@ public interface Port<X extends Port<X>> extends ConfiguredObject<X>
{
String DURABLE = "durable";
String LIFETIME_POLICY = "lifetimePolicy";
- String STATE = "state";
- String TIME_TO_LIVE = "timeToLive";
String BINDING_ADDRESS = "bindingAddress";
String PORT = "port";
String PROTOCOLS = "protocols";
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/PreferencesProvider.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/PreferencesProvider.java
index 5855408ffb..9310491076 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/PreferencesProvider.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/PreferencesProvider.java
@@ -28,8 +28,6 @@ public interface PreferencesProvider<X extends PreferencesProvider<X>> extends C
{
String DURABLE = "durable";
String LIFETIME_POLICY = "lifetimePolicy";
- String STATE = "state";
- String TIME_TO_LIVE = "timeToLive";
/**
* Returns preferences {@link Map} for a given user ID
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java
index dc7f48aa9d..f6625ed2b9 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java
@@ -21,6 +21,9 @@
package org.apache.qpid.server.model;
import java.util.Collection;
+
+import org.apache.qpid.server.message.MessageInstance;
+import org.apache.qpid.server.queue.QueueEntry;
import org.apache.qpid.server.queue.QueueEntryVisitor;
@ManagedObject
@@ -28,10 +31,8 @@ import org.apache.qpid.server.queue.QueueEntryVisitor;
public interface Queue<X extends Queue<X>> extends ConfiguredObject<X>
{
- public static final String STATE = "state";
public static final String DURABLE = "durable";
public static final String LIFETIME_POLICY = "lifetimePolicy";
- public static final String TIME_TO_LIVE = "timeToLive";
public static final String ALERT_REPEAT_GAP = "alertRepeatGap";
public static final String ALERT_THRESHOLD_MESSAGE_AGE = "alertThresholdMessageAge";
@@ -122,15 +123,15 @@ public interface Queue<X extends Queue<X>> extends ConfiguredObject<X>
//children
- Collection<Binding> getBindings();
- Collection<Consumer> getConsumers();
+ Collection<? extends Binding> getBindings();
+ Collection<? extends Consumer> getConsumers();
//operations
void visit(QueueEntryVisitor visitor);
- void delete();
+ int delete();
void setNotificationListener(QueueNotificationListener listener);
@@ -147,13 +148,13 @@ public interface Queue<X extends Queue<X>> extends ConfiguredObject<X>
long getMessagesOut();
@ManagedStatistic
- long getBindingCount();
+ int getBindingCount();
@ManagedStatistic
- long getConsumerCount();
+ int getConsumerCount();
@ManagedStatistic
- long getConsumerCountWithCredit();
+ int getConsumerCountWithCredit();
@ManagedStatistic
long getPersistentDequeuedBytes();
@@ -171,7 +172,7 @@ public interface Queue<X extends Queue<X>> extends ConfiguredObject<X>
long getQueueDepthBytes();
@ManagedStatistic
- long getQueueDepthMessages();
+ int getQueueDepthMessages();
@ManagedStatistic
long getTotalDequeuedBytes();
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Session.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Session.java
index 5dbec8cdd9..8e462883eb 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Session.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Session.java
@@ -29,7 +29,6 @@ public interface Session<X extends Session<X>> extends ConfiguredObject<X>
public static final String STATE = "state";
public static final String DURABLE = "durable";
public static final String LIFETIME_POLICY = "lifetimePolicy";
- public static final String TIME_TO_LIVE = "timeToLive";
public static final String CHANNEL_ID = "channelId";
// PRODUCER_FLOW_BLOCKED is exposed as an interim step. We will expose attribute(s) that exposing
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Statistics.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Statistics.java
deleted file mode 100644
index 92d6f47741..0000000000
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/Statistics.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * <p/>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p/>
- * 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.Collection;
-
-public interface Statistics
-{
- Collection<String> getStatisticNames();
- public Object getStatistic(String name);
-}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/TrustStore.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/TrustStore.java
index bba7b8c11e..a5abd7b34e 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/TrustStore.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/TrustStore.java
@@ -31,7 +31,6 @@ public interface TrustStore<X extends TrustStore<X>> extends ConfiguredObject<X>
String DURABLE = "durable";
String LIFETIME_POLICY = "lifetimePolicy";
String STATE = "state";
- String TIME_TO_LIVE = "timeToLive";
String DESCRIPTION = "description";
String PATH = "path";
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/User.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/User.java
index cef011a6f7..1c9c5d844b 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/User.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/User.java
@@ -31,7 +31,6 @@ public interface User<X extends User<X>> extends ConfiguredObject<X>
String DURABLE = "durable";
String LIFETIME_POLICY = "lifetimePolicy";
String STATE = "state";
- String TIME_TO_LIVE = "timeToLive";
String PASSWORD = "password";
// Attributes
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
index bd3183a77a..20e3a7f932 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
@@ -20,6 +20,7 @@
*/
package org.apache.qpid.server.model;
+import org.apache.qpid.server.configuration.updater.TaskExecutor;
import org.apache.qpid.server.message.MessageInstance;
import org.apache.qpid.server.security.SecurityManager;
import org.apache.qpid.server.store.MessageStore;
@@ -56,8 +57,6 @@ public interface VirtualHost<X extends VirtualHost<X>> extends ConfiguredObject<
String SUPPORTED_QUEUE_TYPES = "supportedQueueTypes";
String DURABLE = "durable";
String LIFETIME_POLICY = "lifetimePolicy";
- String STATE = "state";
- String TIME_TO_LIVE = "timeToLive";
String CONFIG_PATH = "configPath";
// Attributes
@@ -156,7 +155,7 @@ public interface VirtualHost<X extends VirtualHost<X>> extends ConfiguredObject<
Collection<Exchange> getExchanges();
Exchange createExchange(String name, State initialState, boolean durable,
- LifetimePolicy lifetime, long ttl, String type, Map<String, Object> attributes)
+ LifetimePolicy lifetime, String type, Map<String, Object> attributes)
throws AccessControlException, IllegalArgumentException;
Queue createQueue(Map<String, Object> attributes)
@@ -187,6 +186,9 @@ public interface VirtualHost<X extends VirtualHost<X>> extends ConfiguredObject<
*/
SecurityManager getSecurityManager();
+ // TODO - remove this
+ TaskExecutor getTaskExecutor();
+
MessageStore getMessageStore();
String getType();
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostAlias.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostAlias.java
index 92e0d7fff9..51ca7d8418 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostAlias.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHostAlias.java
@@ -20,7 +20,6 @@
*/
package org.apache.qpid.server.model;
-import java.security.AccessControlException;
import java.util.Collection;
public interface VirtualHostAlias<X extends VirtualHostAlias<X>> extends ConfiguredObject<X>
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractKeyStoreAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractKeyStoreAdapter.java
index 0b8d3e8e1d..1cf5ddf02a 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractKeyStoreAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractKeyStoreAdapter.java
@@ -101,18 +101,6 @@ public abstract class AbstractKeyStoreAdapter<X extends ConfiguredObject<X>> ext
}
@Override
- public long getTimeToLive()
- {
- return 0;
- }
-
- @Override
- public long setTimeToLive(long expected, long desired) throws IllegalStateException, AccessControlException, IllegalArgumentException
- {
- throw new IllegalStateException();
- }
-
- @Override
public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> clazz)
{
return Collections.emptySet();
@@ -147,10 +135,6 @@ public abstract class AbstractKeyStoreAdapter<X extends ConfiguredObject<X>> ext
{
return getLifetimePolicy();
}
- else if(KeyStore.TIME_TO_LIVE.equals(name))
- {
- return getTimeToLive();
- }
else if(KeyStore.PASSWORD.equals(name))
{
return getPassword();
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.java
index b70f93c1e3..f42e5e2078 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AbstractPluginAdapter.java
@@ -82,20 +82,6 @@ public abstract class AbstractPluginAdapter<X extends Plugin<X>> extends Abstrac
}
@Override
- public long getTimeToLive()
- {
- return 0;
- }
-
- @Override
- public long setTimeToLive(long expected, long desired) throws IllegalStateException, AccessControlException,
- IllegalArgumentException
- {
- throw new UnsupportedOperationException();
- }
-
-
- @Override
public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> clazz)
{
return Collections.emptyList();
@@ -126,10 +112,6 @@ public abstract class AbstractPluginAdapter<X extends Plugin<X>> extends Abstrac
{
return getLifetimePolicy();
}
- else if (TIME_TO_LIVE.equals(name))
- {
- return getTimeToLive();
- }
return super.getAttribute(name);
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AccessControlProviderAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AccessControlProviderAdapter.java
index 11128b45d3..f3c8d52286 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AccessControlProviderAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AccessControlProviderAdapter.java
@@ -132,19 +132,6 @@ public class AccessControlProviderAdapter extends AbstractConfiguredObject<Acces
}
@Override
- public long getTimeToLive()
- {
- return 0;
- }
-
- @Override
- public long setTimeToLive(long expected, long desired)
- throws IllegalStateException, AccessControlException, IllegalArgumentException
- {
- return 0;
- }
-
- @Override
public Collection<String> getAttributeNames()
{
return _supportedAttributes;
@@ -169,10 +156,6 @@ public class AccessControlProviderAdapter extends AbstractConfiguredObject<Acces
{
return getState();
}
- else if(TIME_TO_LIVE.equals(name))
- {
- // TODO
- }
return super.getAttribute(name);
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java
index fe11b88ef5..c8e056855b 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/AuthenticationProviderAdapter.java
@@ -144,19 +144,6 @@ public abstract class AuthenticationProviderAdapter<X extends AuthenticationProv
}
@Override
- public long getTimeToLive()
- {
- return 0;
- }
-
- @Override
- public long setTimeToLive(long expected, long desired)
- throws IllegalStateException, AccessControlException, IllegalArgumentException
- {
- return 0;
- }
-
- @Override
public Collection<String> getAttributeNames()
{
return _supportedAttributes;
@@ -181,10 +168,6 @@ public abstract class AuthenticationProviderAdapter<X extends AuthenticationProv
{
return getState();
}
- else if(TIME_TO_LIVE.equals(name))
- {
- // TODO
- }
return super.getAttribute(name);
}
@@ -644,19 +627,6 @@ public abstract class AuthenticationProviderAdapter<X extends AuthenticationProv
}
@Override
- public long getTimeToLive()
- {
- return 0;
- }
-
- @Override
- public long setTimeToLive(long expected, long desired)
- throws IllegalStateException, AccessControlException, IllegalArgumentException
- {
- throw new IllegalStateException("ttl cannot be updated");
- }
-
- @Override
public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> clazz)
{
return null;
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BindingAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BindingAdapter.java
deleted file mode 100644
index df9f4330cd..0000000000
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BindingAdapter.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-package org.apache.qpid.server.model.adapter;
-
-import java.security.AccessControlException;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.qpid.server.model.*;
-
-final class BindingAdapter extends AbstractConfiguredObject<BindingAdapter> implements Binding<BindingAdapter>
-{
- private final org.apache.qpid.server.binding.Binding _binding;
- private final ExchangeAdapter _exchange;
- private QueueAdapter _queue;
-
- public BindingAdapter(final org.apache.qpid.server.binding.Binding binding,
- ExchangeAdapter exchangeAdapter,
- QueueAdapter queueAdapter)
- {
- super(binding.getId(), queueAdapter.getTaskExecutor());
- _binding = binding;
- _exchange = exchangeAdapter;
- _queue = queueAdapter;
- addParent(Queue.class, queueAdapter);
- addParent(Exchange.class, exchangeAdapter);
- }
-
-
- public ExchangeAdapter getExchange()
- {
- return _exchange;
- }
-
- public QueueAdapter getQueue()
- {
- return _queue;
- }
-
- public String getName()
- {
- return _binding.getBindingKey();
- }
-
- public String setName(final String currentName, final String desiredName)
- throws IllegalStateException, AccessControlException
- {
- return null; //TODO
- }
-
- public State getState()
- {
- return _binding.getState();
- }
-
- public boolean isDurable()
- {
- return _binding.isDurable();
- }
-
- public void setDurable(final boolean durable)
- throws IllegalStateException, AccessControlException, IllegalArgumentException
- {
- //TODO
- }
-
- public LifetimePolicy getLifetimePolicy()
- {
- return LifetimePolicy.PERMANENT;
- }
-
- public LifetimePolicy setLifetimePolicy(final LifetimePolicy expected, final LifetimePolicy desired)
- throws IllegalStateException, AccessControlException, IllegalArgumentException
- {
- return null; //TODO
- }
-
- public long getTimeToLive()
- {
- return 0; //TODO
- }
-
- public long setTimeToLive(final long expected, final long desired)
- throws IllegalStateException, AccessControlException, IllegalArgumentException
- {
- return 0; //TODO
- }
-
- @Override
- public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> clazz)
- {
- return Collections.emptySet();
- }
-
- @Override
- public <C extends ConfiguredObject> C createChild(Class<C> childClass, Map<String, Object> attributes, ConfiguredObject... otherParents)
- {
- throw new IllegalArgumentException("Cannot add children to a binding");
- }
-
- public Map<String, Object> getArguments()
- {
- return new HashMap<String, Object> (_binding.getArguments());
- }
-
- @Override
- public long getMatches()
- {
- return _binding.getMatches();
- }
-
- public void delete()
- {
- _binding.delete();
- }
-
- @Override
- public Object getAttribute(final String name)
- {
- if(ID.equals(name))
- {
- return getId();
- }
- else if(NAME.equals(name))
- {
- return getName();
- }
- else if(STATE.equals(name))
- {
- return getState();
- }
- else if(DURABLE.equals(name))
- {
- return isDurable();
- }
- else if(LIFETIME_POLICY.equals(name))
- {
- return _queue.getLifetimePolicy() != LifetimePolicy.PERMANENT || _exchange.getLifetimePolicy() != LifetimePolicy.PERMANENT ? LifetimePolicy.IN_USE : LifetimePolicy.PERMANENT;
- }
- else if(TIME_TO_LIVE.equals(name))
- {
-
- }
- else if(EXCHANGE.equals(name))
- {
- return _exchange.getName();
- }
- else if(QUEUE.equals(name))
- {
- return _queue.getName();
- }
- else if(ARGUMENTS.equals(name))
- {
- return getArguments();
- }
-
- return super.getAttribute(name); //TODO
- }
-
- @Override
- public Collection<String> getAttributeNames()
- {
- return getAttributeNames(Binding.class);
- }
-
- @Override
- protected boolean setState(State currentState, State desiredState) throws IllegalStateTransitionException,
- AccessControlException
- {
- if (desiredState == State.DELETED)
- {
- delete();
- return true;
- }
- return false;
- }
-
- @Override
- public Object setAttribute(final String name, final Object expected, final Object desired) throws IllegalStateException,
- AccessControlException, IllegalArgumentException
- {
- throw new UnsupportedOperationException("Changing attributes on binding is not supported.");
- }
-
- @Override
- public void setAttributes(final Map<String, Object> attributes) throws IllegalStateException, AccessControlException,
- IllegalArgumentException
- {
- throw new UnsupportedOperationException("Changing attributes on binding is not supported.");
- }
-
-}
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 74a7230d03..e12191e9ba 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
@@ -928,10 +928,6 @@ public class BrokerAdapter<X extends Broker<X>> extends AbstractConfiguredObject
{
return LifetimePolicy.PERMANENT;
}
- else if(TIME_TO_LIVE.equals(name))
- {
- // TODO
- }
else if(BUILD_VERSION.equals(name))
{
return QpidProperties.getBuildVersion();
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ConsumerAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ConsumerAdapter.java
deleted file mode 100644
index a931624f30..0000000000
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ConsumerAdapter.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-package org.apache.qpid.server.model.adapter;
-
-import java.util.Map;
-
-import org.apache.qpid.server.model.ConfiguredObject;
-import org.apache.qpid.server.model.LifetimePolicy;
-import org.apache.qpid.server.model.State;
-import org.apache.qpid.server.model.UUIDGenerator;
-import org.apache.qpid.server.consumer.Consumer;
-
-import java.security.AccessControlException;
-import java.util.Collection;
-import java.util.Collections;
-
-public class ConsumerAdapter extends AbstractConfiguredObject<ConsumerAdapter> implements org.apache.qpid.server.model.Consumer<ConsumerAdapter>
-{
- private final Consumer _consumer;
- private final QueueAdapter _queue;
- private final SessionAdapter _session;
-
- public ConsumerAdapter(final QueueAdapter queueAdapter, final SessionAdapter sessionAdapter,
- final Consumer consumer)
- {
- super(UUIDGenerator.generateConsumerUUID(queueAdapter.getVirtualHost().getName(),
- queueAdapter.getName(),
- consumer.getSessionModel().getConnectionModel().getRemoteAddressString(),
- String.valueOf(consumer.getSessionModel().getChannelId()),
- consumer.getName()), queueAdapter.getTaskExecutor());
- _consumer = consumer;
- _queue = queueAdapter;
- _session = sessionAdapter;
- //TODO
- }
-
- public String getName()
- {
- return _consumer.getName();
- }
-
- public String setName(final String currentName, final String desiredName)
- throws IllegalStateException, AccessControlException
- {
- return null; //TODO
- }
-
- public State getState()
- {
- return null; //TODO
- }
-
- public boolean isDurable()
- {
- return false; //TODO
- }
-
- public void setDurable(final boolean durable)
- throws IllegalStateException, AccessControlException, IllegalArgumentException
- {
- //TODO
- }
-
- public LifetimePolicy getLifetimePolicy()
- {
- return null; //TODO
- }
-
- public LifetimePolicy setLifetimePolicy(final LifetimePolicy expected, final LifetimePolicy desired)
- throws IllegalStateException, AccessControlException, IllegalArgumentException
- {
- return null; //TODO
- }
-
- public long getTimeToLive()
- {
- return 0; //TODO
- }
-
- public long setTimeToLive(final long expected, final long desired)
- throws IllegalStateException, AccessControlException, IllegalArgumentException
- {
- return 0; //TODO
- }
-
- @Override
- public Collection<String> getAttributeNames()
- {
- return getAttributeNames(org.apache.qpid.server.model.Consumer.class);
- }
-
- @Override
- public Object getAttribute(final String name)
- {
- if(ID.equals(name))
- {
- return getId();
- }
- else if(NAME.equals(name))
- {
- return getName();
- }
- else if(STATE.equals(name))
- {
-
- }
- else if(DURABLE.equals(name))
- {
- return false;
- }
- else if(LIFETIME_POLICY.equals(name))
- {
- return LifetimePolicy.DELETE_ON_SESSION_END;
- }
- else if(TIME_TO_LIVE.equals(name))
- {
-
- }
- else if(DISTRIBUTION_MODE.equals(name))
- {
- return _consumer.acquires() ? "MOVE" : "COPY";
- }
- else if(SETTLEMENT_MODE.equals(name))
- {
-
- }
- else if(EXCLUSIVE.equals(name))
- {
-
- }
- else if(NO_LOCAL.equals(name))
- {
-
- }
- else if(SELECTOR.equals(name))
- {
-
- }
- return super.getAttribute(name); //TODO
- }
-
- @Override
- public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> clazz)
- {
- return Collections.emptySet();
- }
-
- @Override
- public <C extends ConfiguredObject> C createChild(Class<C> childClass, Map<String, Object> attributes, ConfiguredObject... otherParents)
- {
- throw new IllegalArgumentException();
- }
-
- @Override
- public String getDistributionMode()
- {
- return _consumer.acquires() ? "MOVE" : "COPY";
- }
-
- @Override
- public String getSettlementMode()
- {
- return null;
- }
-
- @Override
- public boolean isExclusive()
- {
- return false;
- }
-
- @Override
- public boolean isNoLocal()
- {
- return false;
- }
-
- @Override
- public String getSelector()
- {
- return null;
- }
-
- @Override
- public long getBytesOut()
- {
- return _consumer.getBytesOut();
- }
-
- @Override
- public long getMessagesOut()
- {
- return _consumer.getMessagesOut();
- }
-
- @Override
- public long getUnacknowledgedBytes()
- {
- return _consumer.getUnacknowledgedBytes();
- }
-
- @Override
- public long getUnacknowledgedMessages()
- {
- return _consumer.getUnacknowledgedMessages();
- }
-
- @Override
- protected boolean setState(State currentState, State desiredState)
- {
- // TODO : Add state management
- return false;
- }
-
- @Override
- public Object setAttribute(final String name, final Object expected, final Object desired) throws IllegalStateException,
- AccessControlException, IllegalArgumentException
- {
- throw new UnsupportedOperationException("Changing attributes on consumer is not supported.");
- }
-
- @Override
- public void setAttributes(final Map<String, Object> attributes) throws IllegalStateException, AccessControlException,
- IllegalArgumentException
- {
- throw new UnsupportedOperationException("Changing attributes on consumer is not supported.");
- }
-}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ExchangeAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ExchangeAdapter.java
deleted file mode 100644
index b1f97a213b..0000000000
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/ExchangeAdapter.java
+++ /dev/null
@@ -1,398 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-package org.apache.qpid.server.model.adapter;
-
-import java.security.AccessControlException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.qpid.server.binding.Binding;
-import org.apache.qpid.server.model.*;
-import org.apache.qpid.server.queue.AMQQueue;
-import org.apache.qpid.server.util.MapValueConverter;
-import org.apache.qpid.server.virtualhost.ExchangeIsAlternateException;
-import org.apache.qpid.server.virtualhost.RequiredExchangeException;
-
-final class ExchangeAdapter extends AbstractConfiguredObject<ExchangeAdapter> implements Exchange<ExchangeAdapter>, org.apache.qpid.server.exchange.Exchange.BindingListener
-{
-
- private final org.apache.qpid.server.exchange.Exchange _exchange;
- private final Map<Binding, BindingAdapter> _bindingAdapters =
- new HashMap<Binding, BindingAdapter>();
- private VirtualHostAdapter _vhost;
-
- public ExchangeAdapter(final VirtualHostAdapter virtualHostAdapter,
- final org.apache.qpid.server.exchange.Exchange exchange)
- {
- super(exchange.getId(), virtualHostAdapter.getTaskExecutor());
- _vhost = virtualHostAdapter;
- _exchange = exchange;
- addParent(org.apache.qpid.server.model.VirtualHost.class, virtualHostAdapter);
-
- exchange.addBindingListener(this);
- populateBindings();
- }
-
- private void populateBindings()
- {
- Collection<Binding> actualBindings = _exchange.getBindings();
- synchronized (_bindingAdapters)
- {
- for(Binding binding : actualBindings)
- {
- if(!_bindingAdapters.containsKey(binding))
- {
- QueueAdapter queueAdapter = _vhost.getQueueAdapter(binding.getAMQQueue());
- BindingAdapter adapter = new BindingAdapter(binding, this, queueAdapter);
- _bindingAdapters.put(binding, adapter);
-
- queueAdapter.bindingRegistered(binding, adapter);
- }
- }
- }
-
- }
-
- @Override
- public String getType()
- {
- return _exchange.getExchangeType().getType();
- }
-
- public Collection<org.apache.qpid.server.model.Binding> getBindings()
- {
- synchronized (_bindingAdapters)
- {
- return new ArrayList<org.apache.qpid.server.model.Binding>(_bindingAdapters.values());
- }
-
- }
-
- public Collection<Publisher> getPublishers()
- {
- // TODO
- return Collections.emptyList();
- }
-
-
- public org.apache.qpid.server.model.Binding createBinding(Queue queue,
- Map<String, Object> attributes)
- throws AccessControlException, IllegalStateException
- {
- attributes = new HashMap<String, Object>(attributes);
- String bindingKey = MapValueConverter.getStringAttribute(org.apache.qpid.server.model.Binding.NAME, attributes, "");
- Map<String, Object> bindingArgs = MapValueConverter.getMapAttribute(org.apache.qpid.server.model.Binding.ARGUMENTS, attributes, Collections.<String,Object>emptyMap());
-
- attributes.remove(org.apache.qpid.server.model.Binding.NAME);
- attributes.remove(org.apache.qpid.server.model.Binding.ARGUMENTS);
-
- return createBinding(bindingKey, queue, bindingArgs, attributes);
-
- }
-
- public org.apache.qpid.server.model.Binding createBinding(String bindingKey, Queue queue,
- Map<String, Object> bindingArguments,
- Map<String, Object> attributes)
- throws AccessControlException, IllegalStateException
- {
- AMQQueue amqQueue = ((QueueAdapter)queue).getAMQQueue();
-
- if(!_exchange.addBinding(bindingKey, amqQueue, bindingArguments))
- {
- Binding oldBinding = _exchange.getBinding(bindingKey, amqQueue);
-
- Map<String, Object> oldArgs = oldBinding.getArguments();
- if((oldArgs == null && !bindingArguments.isEmpty()) || (oldArgs != null && !oldArgs.equals(bindingArguments)))
- {
- _exchange.replaceBinding(oldBinding.getId(), bindingKey, amqQueue, bindingArguments);
- }
- }
- Binding binding = _exchange.getBinding(bindingKey, amqQueue);
-
- synchronized (_bindingAdapters)
- {
- return binding == null ? null : _bindingAdapters.get(binding);
- }
- }
-
- public void delete()
- {
- try
- {
- _vhost.getVirtualHost().removeExchange(_exchange, true);
- }
- catch(RequiredExchangeException e)
- {
- throw new UnsupportedOperationException("'" + getName() + "' is a reserved exchange and can't be deleted");
- }
- catch(ExchangeIsAlternateException e)
- {
- throw new IllegalStateException(e);
- }
- }
-
- public String getName()
- {
- return _exchange.getName();
- }
-
- public String setName(final String currentName, final String desiredName)
- throws IllegalStateException, AccessControlException
- {
- return null; //TODO
- }
-
- public State getState()
- {
- return null; //TODO
- }
-
- public boolean isDurable()
- {
- return _exchange.isDurable();
- }
-
- public void setDurable(final boolean durable)
- throws IllegalStateException, AccessControlException, IllegalArgumentException
- {
- //TODO
- }
-
- public LifetimePolicy getLifetimePolicy()
- {
- return _exchange.isAutoDelete() ? LifetimePolicy.DELETE_ON_NO_OUTBOUND_LINKS : LifetimePolicy.PERMANENT;
- }
-
- public LifetimePolicy setLifetimePolicy(final LifetimePolicy expected, final LifetimePolicy desired)
- throws IllegalStateException, AccessControlException, IllegalArgumentException
- {
- return null; //TODO
- }
-
- public long getTimeToLive()
- {
- return 0; //TODO
- }
-
- public long setTimeToLive(final long expected, final long desired)
- throws IllegalStateException, AccessControlException, IllegalArgumentException
- {
- return 0; //TODO
- }
-
- @Override
- public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> clazz)
- {
- if(clazz == org.apache.qpid.server.model.Binding.class)
- {
- return (Collection<C>) getBindings();
- }
- else
- {
- return Collections.emptySet();
- }
- }
-
- @Override
- public <C extends ConfiguredObject> C addChild(Class<C> childClass, Map<String, Object> attributes, ConfiguredObject... otherParents)
- {
- if(childClass == org.apache.qpid.server.model.Binding.class)
- {
- if(otherParents != null && otherParents.length == 1 && otherParents[0] instanceof Queue)
- {
- Queue queue = (Queue) otherParents[0];
- if(queue.getParent(org.apache.qpid.server.model.VirtualHost.class) == getParent(org.apache.qpid.server.model.VirtualHost.class))
- {
- return (C) createBinding(queue, attributes);
- }
- else
- {
- throw new IllegalArgumentException("Queue and Exchange parents of a binding must be on same virtual host");
- }
- }
- else
- {
- throw new IllegalArgumentException("Other parent must be a queue");
- }
- }
- else
- {
- throw new IllegalArgumentException();
- }
- }
-
- public void bindingAdded(org.apache.qpid.server.exchange.Exchange exchange, Binding binding)
- {
- BindingAdapter adapter = null;
- synchronized (_bindingAdapters)
- {
- if(!_bindingAdapters.containsKey(binding))
- {
- QueueAdapter queueAdapter = _vhost.getQueueAdapter(binding.getAMQQueue());
- adapter = new BindingAdapter(binding, this, queueAdapter);
- _bindingAdapters.put(binding,adapter);
- queueAdapter.bindingRegistered(binding,adapter);
- }
- }
- if(adapter != null)
- {
- childAdded(adapter);
- }
- }
-
- public void bindingRemoved(org.apache.qpid.server.exchange.Exchange exchange, Binding binding)
- {
- BindingAdapter adapter = null;
- synchronized (_bindingAdapters)
- {
- adapter = _bindingAdapters.remove(binding);
- }
- if(adapter != null)
- {
- QueueAdapter queueAdapter = _vhost.getQueueAdapter(binding.getAMQQueue());
- if(queueAdapter != null)
- {
- queueAdapter.bindingUnregistered(binding);
- childRemoved(adapter);
- }
- }
- }
-
- org.apache.qpid.server.exchange.Exchange getExchange()
- {
- return _exchange;
- }
-
- @Override
- public Object getAttribute(String name)
- {
- if(ID.equals(name))
- {
- return getId();
- }
- else if(NAME.equals(name))
- {
- return getName();
- }
- else if(STATE.equals(name))
- {
- return State.ACTIVE;
- }
- else if(DURABLE.equals(name))
- {
- return isDurable();
- }
- else if(LIFETIME_POLICY.equals(name))
- {
- return _exchange.isAutoDelete() ? LifetimePolicy.DELETE_ON_NO_OUTBOUND_LINKS : LifetimePolicy.PERMANENT;
- }
- else if(TIME_TO_LIVE.equals(name))
- {
-
- }
- else if(ALTERNATE_EXCHANGE.equals(name))
- {
- org.apache.qpid.server.exchange.Exchange alternateExchange = _exchange.getAlternateExchange();
- return alternateExchange == null ? null :
- ConfiguredObjectFinder.findConfiguredObjectByName(_vhost.getExchanges(),
- alternateExchange.getName());
- }
- else if(TYPE.equals(name))
- {
- return getType();
- }
- return super.getAttribute(name);
- }
-
- @Override
- public Collection<String> getAttributeNames()
- {
- return getAttributeNames(Exchange.class);
- }
-
- @Override
- protected boolean setState(State currentState, State desiredState)
- {
- if (desiredState == State.DELETED)
- {
- delete();
- return true;
- }
- return false;
- }
-
- @Override
- protected void changeAttributes(Map<String, Object> attributes)
- {
- throw new UnsupportedOperationException("Changing attributes on exchange is not supported.");
- }
-
- @Override
- protected void authoriseSetAttribute(String name, Object expected, Object desired) throws AccessControlException
- {
- _vhost.getSecurityManager().authoriseUpdate(_exchange);
- }
-
- @Override
- protected void authoriseSetAttributes(Map<String, Object> attributes) throws AccessControlException
- {
- _vhost.getSecurityManager().authoriseUpdate(_exchange);
- }
-
- @Override
- public long getBindingCount()
- {
- return _exchange.getBindingCount();
- }
-
- @Override
- public long getBytesDropped()
- {
- return _exchange.getByteDrops();
- }
-
- @Override
- public long getBytesIn()
- {
- return _exchange.getByteReceives();
- }
-
- @Override
- public long getMessagesDropped()
- {
- return _exchange.getMsgDrops();
- }
-
- @Override
- public long getMessagesIn()
- {
- return _exchange.getMsgReceives();
- }
-
- @Override
- public Exchange<?> getAlternateExchange()
- {
- return null;
- }
-}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProvider.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProvider.java
index b6af07dea4..f1ba45dd09 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProvider.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/FileSystemPreferencesProvider.java
@@ -145,19 +145,6 @@ public class FileSystemPreferencesProvider extends AbstractConfiguredObject<File
}
@Override
- public long getTimeToLive()
- {
- return 0;
- }
-
- @Override
- public long setTimeToLive(long expected, long desired) throws IllegalStateException, AccessControlException,
- IllegalArgumentException
- {
- throw new UnsupportedOperationException();
- }
-
- @Override
public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> clazz)
{
return Collections.emptySet();
@@ -182,10 +169,6 @@ public class FileSystemPreferencesProvider extends AbstractConfiguredObject<File
{
return getState();
}
- else if (TIME_TO_LIVE.equals(name))
- {
- // TODO
- }
return super.getAttribute(name);
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/GroupProviderAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/GroupProviderAdapter.java
index 120e9a5123..09ab758271 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/GroupProviderAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/GroupProviderAdapter.java
@@ -132,20 +132,6 @@ public class GroupProviderAdapter extends AbstractConfiguredObject<GroupProvider
}
@Override
- public long getTimeToLive()
- {
- return 0;
- }
-
- @Override
- public long setTimeToLive(long expected, long desired)
- throws IllegalStateException, AccessControlException,
- IllegalArgumentException
- {
- return 0;
- }
-
- @Override
public Collection<String> getAttributeNames()
{
return _supportedAttributes;
@@ -170,10 +156,6 @@ public class GroupProviderAdapter extends AbstractConfiguredObject<GroupProvider
{
return getState();
}
- else if (TIME_TO_LIVE.equals(name))
- {
- // TODO
- }
return super.getAttribute(name);
}
@@ -407,20 +389,6 @@ public class GroupProviderAdapter extends AbstractConfiguredObject<GroupProvider
}
@Override
- public long getTimeToLive()
- {
- return 0;
- }
-
- @Override
- public long setTimeToLive(long expected, long desired)
- throws IllegalStateException, AccessControlException,
- IllegalArgumentException
- {
- throw new IllegalStateException("ttl cannot be updated");
- }
-
- @Override
public <C extends ConfiguredObject> Collection<C> getChildren(
Class<C> clazz)
{
@@ -590,20 +558,6 @@ public class GroupProviderAdapter extends AbstractConfiguredObject<GroupProvider
}
@Override
- public long getTimeToLive()
- {
- return 0;
- }
-
- @Override
- public long setTimeToLive(long expected, long desired)
- throws IllegalStateException, AccessControlException,
- IllegalArgumentException
- {
- return 0;
- }
-
- @Override
public <C extends ConfiguredObject> Collection<C> getChildren(
Class<C> clazz)
{
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java
index 6e97d735ea..54a9a44bf3 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/PortAdapter.java
@@ -213,19 +213,6 @@ abstract public class PortAdapter<X extends PortAdapter<X>> extends AbstractConf
}
@Override
- public long getTimeToLive()
- {
- return 0;
- }
-
- @Override
- public long setTimeToLive(long expected, long desired)
- throws IllegalStateException, AccessControlException, IllegalArgumentException
- {
- throw new IllegalStateException();
- }
-
- @Override
public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> clazz)
{
if(clazz == Connection.class)
@@ -263,10 +250,6 @@ abstract public class PortAdapter<X extends PortAdapter<X>> extends AbstractConf
{
return getLifetimePolicy();
}
- else if(TIME_TO_LIVE.equals(name))
- {
- return getTimeToLive();
- }
return super.getAttribute(name);
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java
deleted file mode 100644
index c08ccd0839..0000000000
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/QueueAdapter.java
+++ /dev/null
@@ -1,938 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-package org.apache.qpid.server.model.adapter;
-
-import java.lang.reflect.Type;
-import java.security.AccessControlException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.qpid.server.binding.Binding;
-import org.apache.qpid.server.configuration.IllegalConfigurationException;
-import org.apache.qpid.server.message.MessageSource;
-import org.apache.qpid.server.model.*;
-import org.apache.qpid.server.protocol.AMQConnectionModel;
-import org.apache.qpid.server.protocol.AMQSessionModel;
-import org.apache.qpid.server.queue.*;
-import org.apache.qpid.server.store.DurableConfigurationStoreHelper;
-import org.apache.qpid.server.consumer.Consumer;
-import org.apache.qpid.server.util.MapValueConverter;
-
-final class QueueAdapter<Q extends AMQQueue<?,Q,?>> extends AbstractConfiguredObject<QueueAdapter<Q>> implements Queue<QueueAdapter<Q>>,
- MessageSource.ConsumerRegistrationListener<Q>,
- AMQQueue.NotificationListener
-{
- @SuppressWarnings("serial")
- static final Map<String, Type> ATTRIBUTE_TYPES = Collections.unmodifiableMap(new HashMap<String, Type>(){{
- put(ALERT_REPEAT_GAP, Long.class);
- put(ALERT_THRESHOLD_MESSAGE_AGE, Long.class);
- put(ALERT_THRESHOLD_MESSAGE_SIZE, Long.class);
- put(ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES, Long.class);
- put(ALERT_THRESHOLD_QUEUE_DEPTH_BYTES, Long.class);
- put(QUEUE_FLOW_CONTROL_SIZE_BYTES, Long.class);
- put(QUEUE_FLOW_RESUME_SIZE_BYTES, Long.class);
- put(MAXIMUM_DELIVERY_ATTEMPTS, Integer.class);
- put(DESCRIPTION, String.class);
- }});
-
- private final AMQQueue<?,Q,?> _queue;
-
- private final Map<Binding, BindingAdapter> _bindingAdapters =
- new HashMap<Binding, BindingAdapter>();
- private final Map<Consumer, ConsumerAdapter> _consumerAdapters =
- new HashMap<Consumer, ConsumerAdapter>();
-
-
- private final VirtualHostAdapter _vhost;
- private QueueNotificationListener _queueNotificationListener;
-
- public QueueAdapter(final VirtualHostAdapter virtualHostAdapter, final AMQQueue<?,Q,?> queue)
- {
- super(queue.getId(), virtualHostAdapter.getTaskExecutor());
- _vhost = virtualHostAdapter;
- addParent(org.apache.qpid.server.model.VirtualHost.class, virtualHostAdapter);
-
- _queue = queue;
- _queue.addConsumerRegistrationListener(this);
- populateConsumers();
- _queue.setNotificationListener(this);
- }
-
- /**
- * Helper method to retrieve the SessionAdapter keyed by the AMQSessionModel.
- * This method first finds the ConnectionAdapter associated with the Session from this QueueAdapter's parent vhost
- * then it does a lookup on that to find the SessionAdapter keyed by the requested AMQSessionModel instance.
- * @param session the AMQSessionModel used to index the SessionAdapter.
- * @return the requested SessionAdapter or null if it can't be found.
- */
- private SessionAdapter getSessionAdapter(AMQSessionModel session)
- {
- // Retrieve the ConnectionModel associated with the SessionModel as a key to lookup the ConnectionAdapter.
- AMQConnectionModel connectionKey = session.getConnectionModel();
-
- // Lookup the ConnectionAdapter, from which we should be able to retrieve the SessionAdapter we really want.
- ConnectionAdapter connectionAdapter = _vhost.getConnectionAdapter(connectionKey);
- if (connectionAdapter == null)
- {
- return null; // If we can't find an associated ConnectionAdapter the SessionAdapter is a lost cause.
- }
- else
- { // With a good ConnectionAdapter we can finally try to find the SessionAdapter we are actually looking for.
- SessionAdapter sessionAdapter = connectionAdapter.getSessionAdapter(session);
- if (sessionAdapter == null)
- {
- return null; // If the SessionAdapter isn't associated with the selected ConnectionAdapter give up.
- }
- else
- {
- return sessionAdapter;
- }
- }
- }
-
- private void populateConsumers()
- {
- Collection<? extends Consumer> actualConsumers = _queue.getConsumers();
-
- synchronized (_consumerAdapters)
- {
- for(Consumer consumer : actualConsumers)
- {
- if(!_consumerAdapters.containsKey(consumer))
- {
- SessionAdapter sessionAdapter = getSessionAdapter(consumer.getSessionModel());
- ConsumerAdapter adapter = new ConsumerAdapter(this, sessionAdapter, consumer);
- _consumerAdapters.put(consumer, adapter);
- if (sessionAdapter != null)
- { // Register ConsumerAdapter with the SessionAdapter.
- sessionAdapter.consumerRegistered(consumer, adapter);
- }
- }
- }
- }
- }
-
- @Override
- public String getQueueType()
- {
- return (String) getAttribute(QUEUE_TYPE);
- }
-
- @Override
- public Exchange getAlternateExchange()
- {
- org.apache.qpid.server.exchange.Exchange alternateExchange = _queue.getAlternateExchange();
- return alternateExchange == null ? null :
- ConfiguredObjectFinder.findConfiguredObjectByName(_vhost.getExchanges(),
- alternateExchange.getName());
- }
-
- @Override
- public ExclusivityPolicy getExclusive()
- {
- return (ExclusivityPolicy) _queue.getAttribute(EXCLUSIVE);
- }
-
- @Override
- public String getOwner()
- {
- return _queue.getOwner();
- }
-
- @Override
- public boolean getNoLocal()
- {
- // TODO
- return false;
- }
-
- @Override
- public String getLvqKey()
- {
- return (String) _queue.getAttribute(LVQ_KEY);
- }
-
- @Override
- public String getSortKey()
- {
- return (String) _queue.getAttribute(SORT_KEY);
- }
-
- @Override
- public String getMessageGroupKey()
- {
- return (String) _queue.getAttribute(MESSAGE_GROUP_KEY);
- }
-
- @Override
- public int getMessageGroupSharedGroups()
- {
- return (Integer) _queue.getAttribute(MESSAGE_GROUP_SHARED_GROUPS);
- }
-
- @Override
- public int getMaximumDeliveryAttempts()
- {
- return _queue.getMaximumDeliveryCount();
- }
-
- @Override
- public long getQueueFlowControlSizeBytes()
- {
- return _queue.getCapacity();
- }
-
- @Override
- public long getQueueFlowResumeSizeBytes()
- {
- return _queue.getFlowResumeCapacity();
- }
-
- @Override
- public boolean isQueueFlowStopped()
- {
- return false;
- }
-
- @Override
- public long getAlertThresholdMessageAge()
- {
- return _queue.getMaximumMessageAge();
- }
-
- @Override
- public long getAlertThresholdMessageSize()
- {
- return _queue.getMaximumMessageSize();
- }
-
- @Override
- public long getAlertThresholdQueueDepthBytes()
- {
- return _queue.getMaximumQueueDepth();
- }
-
- @Override
- public long getAlertThresholdQueueDepthMessages()
- {
- return _queue.getMaximumMessageCount();
- }
-
- @Override
- public long getAlertRepeatGap()
- {
- return _queue.getMinimumAlertRepeatGap();
- }
-
- @Override
- public int getPriorities()
- {
- return (Integer) _queue.getAttribute(PRIORITIES);
- }
-
- public Collection<org.apache.qpid.server.model.Binding> getBindings()
- {
- synchronized (_bindingAdapters)
- {
- return new ArrayList<org.apache.qpid.server.model.Binding>(_bindingAdapters.values());
- }
- }
-
- public Collection<org.apache.qpid.server.model.Consumer> getConsumers()
- {
- synchronized (_consumerAdapters)
- {
- return new ArrayList<org.apache.qpid.server.model.Consumer>(_consumerAdapters.values());
- }
-
- }
-
- public void visit(final QueueEntryVisitor visitor)
- {
- _queue.visit(visitor);
- }
-
- public void delete()
- {
- _queue.getVirtualHost().removeQueue(_queue);
- }
-
- public String getName()
- {
- return _queue.getName();
- }
-
- public String setName(final String currentName, final String desiredName)
- throws IllegalStateException, AccessControlException
- {
- return null; //TODO
- }
-
- public State getState()
- {
- return null; //TODO
- }
-
- public boolean isDurable()
- {
- return _queue.isDurable();
- }
-
- public void setDurable(final boolean durable)
- throws IllegalStateException, AccessControlException, IllegalArgumentException
- {
- //TODO
- }
-
- public LifetimePolicy getLifetimePolicy()
- {
- return _queue.getLifetimePolicy();
- }
-
- public LifetimePolicy setLifetimePolicy(final LifetimePolicy expected, final LifetimePolicy desired)
- throws IllegalStateException, AccessControlException, IllegalArgumentException
- {
- return null; //TODO
- }
-
- public long getTimeToLive()
- {
- return 0; //TODO
- }
-
- public long setTimeToLive(final long expected, final long desired)
- throws IllegalStateException, AccessControlException, IllegalArgumentException
- {
- return 0; //TODO
- }
-
-
- @Override
- public Collection<String> getAttributeNames()
- {
- return getAttributeNames(Queue.class);
- }
-
- @Override
- public boolean changeAttribute(String name, Object expected, Object desired) throws IllegalStateException, AccessControlException, IllegalArgumentException
- {
- try
- {
- if(ALERT_REPEAT_GAP.equals(name))
- {
- _queue.setMinimumAlertRepeatGap((Long)desired);
- return true;
- }
- else if(ALERT_THRESHOLD_MESSAGE_AGE.equals(name))
- {
- _queue.setMaximumMessageAge((Long)desired);
- return true;
- }
- else if(ALERT_THRESHOLD_MESSAGE_SIZE.equals(name))
- {
- _queue.setMaximumMessageSize((Long)desired);
- return true;
- }
- else if(ALERT_THRESHOLD_QUEUE_DEPTH_BYTES.equals(name))
- {
- _queue.setMaximumQueueDepth((Long)desired);
- return true;
- }
- else if(ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES.equals(name))
- {
- _queue.setMaximumMessageCount((Long)desired);
- return true;
- }
- else if(ALTERNATE_EXCHANGE.equals(name))
- {
- // In future we may want to accept a UUID as an alternative way to identifying the exchange
- ExchangeAdapter alternateExchange = (ExchangeAdapter) desired;
- _queue.setAlternateExchange(alternateExchange == null ? null : alternateExchange.getExchange());
- return true;
- }
- else if(EXCLUSIVE.equals(name))
- {
- ExclusivityPolicy desiredPolicy;
- if(desired == null)
- {
- desiredPolicy = ExclusivityPolicy.NONE;
- }
- else if(desired instanceof ExclusivityPolicy)
- {
- desiredPolicy = (ExclusivityPolicy)desired;
- }
- else if (desired instanceof String)
- {
- desiredPolicy = ExclusivityPolicy.valueOf((String)desired);
- }
- else
- {
- throw new IllegalArgumentException("Cannot set " + Queue.EXCLUSIVE + " property to type " + desired.getClass().getName());
- }
- try
- {
- _queue.setExclusivityPolicy(desiredPolicy);
- }
- catch (MessageSource.ExistingConsumerPreventsExclusive existingConsumerPreventsExclusive)
- {
- throw new IllegalArgumentException("Unable to set exclusivity policy to " + desired + " as an existing combinations of consumers prevents this");
- }
- return true;
-
- }
- else if(MESSAGE_GROUP_KEY.equals(name))
- {
- // TODO
- }
- else if(MESSAGE_GROUP_SHARED_GROUPS.equals(name))
- {
- // TODO
- }
- else if(LVQ_KEY.equals(name))
- {
- // TODO
- }
- else if(MAXIMUM_DELIVERY_ATTEMPTS.equals(name))
- {
- _queue.setMaximumDeliveryCount((Integer)desired);
- return true;
- }
- else if(NO_LOCAL.equals(name))
- {
- // TODO
- }
- else if(OWNER.equals(name))
- {
- // TODO
- }
- else if(QUEUE_FLOW_CONTROL_SIZE_BYTES.equals(name))
- {
- _queue.setCapacity((Long)desired);
- return true;
- }
- else if(QUEUE_FLOW_RESUME_SIZE_BYTES.equals(name))
- {
- _queue.setFlowResumeCapacity((Long)desired);
- return true;
- }
- else if(QUEUE_FLOW_STOPPED.equals(name))
- {
- // TODO
- }
- else if(SORT_KEY.equals(name))
- {
- // TODO
- }
- else if(QUEUE_TYPE.equals(name))
- {
- // TODO
- }
- else if (DESCRIPTION.equals(name))
- {
- _queue.setDescription((String) desired);
- return true;
- }
-
- return super.changeAttribute(name, expected, desired);
- }
- finally
- {
- if (_queue.isDurable())
- {
- DurableConfigurationStoreHelper.updateQueue(_queue.getVirtualHost().getDurableConfigurationStore(),
- _queue);
- }
- }
- }
-
- @Override
- public Object getAttribute(String name)
- {
-
- if(ALERT_REPEAT_GAP.equals(name))
- {
- return _queue.getMinimumAlertRepeatGap();
- }
- else if(ALERT_THRESHOLD_MESSAGE_AGE.equals(name))
- {
- return _queue.getMaximumMessageAge();
- }
- else if(ALERT_THRESHOLD_MESSAGE_SIZE.equals(name))
- {
- return _queue.getMaximumMessageSize();
- }
- else if(ALERT_THRESHOLD_QUEUE_DEPTH_BYTES.equals(name))
- {
- return _queue.getMaximumQueueDepth();
- }
- else if(ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES.equals(name))
- {
- return _queue.getMaximumMessageCount();
- }
- else if(ALTERNATE_EXCHANGE.equals(name))
- {
- org.apache.qpid.server.exchange.Exchange alternateExchange = _queue.getAlternateExchange();
- return alternateExchange == null ? null :
- ConfiguredObjectFinder.findConfiguredObjectByName(_vhost.getExchanges(),
- alternateExchange.getName());
- }
- else if(EXCLUSIVE.equals(name))
- {
- return _queue.getAttribute(Queue.EXCLUSIVE);
- }
- else if(MESSAGE_GROUP_KEY.equals(name))
- {
- return _queue.getAttribute(MESSAGE_GROUP_KEY);
- }
- else if(MESSAGE_GROUP_SHARED_GROUPS.equals(name))
- {
- //We only return the boolean value if message groups are actually in use
- return getAttribute(MESSAGE_GROUP_KEY) == null ? null : _queue.getAttribute(MESSAGE_GROUP_SHARED_GROUPS);
- }
- else if(LVQ_KEY.equals(name))
- {
- AMQQueue queue = _queue;
- if(queue instanceof ConflationQueue)
- {
- return ((ConflationQueue)queue).getConflationKey();
- }
- }
- else if(MAXIMUM_DELIVERY_ATTEMPTS.equals(name))
- {
- return _queue.getMaximumDeliveryCount();
- }
- else if(NO_LOCAL.equals(name))
- {
- // TODO
- }
- else if(OWNER.equals(name))
- {
- return _queue.getOwner();
- }
- else if(QUEUE_FLOW_CONTROL_SIZE_BYTES.equals(name))
- {
- return _queue.getCapacity();
- }
- else if(QUEUE_FLOW_RESUME_SIZE_BYTES.equals(name))
- {
- return _queue.getFlowResumeCapacity();
- }
- else if(QUEUE_FLOW_STOPPED.equals(name))
- {
- return _queue.isOverfull();
- }
- else if(SORT_KEY.equals(name))
- {
- AMQQueue queue = _queue;
- if(queue instanceof SortedQueue)
- {
- return ((SortedQueue)queue).getSortedPropertyName();
- }
- }
- else if(QUEUE_TYPE.equals(name))
- {
- AMQQueue queue = _queue;
- if(queue instanceof SortedQueue)
- {
- return "sorted";
- }
- if(queue instanceof ConflationQueue)
- {
- return "lvq";
- }
- if(queue instanceof PriorityQueue)
- {
- return "priority";
- }
- return "standard";
- }
- else if(DURABLE.equals(name))
- {
- return _queue.isDurable();
- }
- else if(ID.equals(name))
- {
- return getId();
- }
- else if(LIFETIME_POLICY.equals(name))
- {
- return _queue.getLifetimePolicy();
- }
- else if(NAME.equals(name))
- {
- return _queue.getName();
- }
- else if(STATE.equals(name))
- {
- return State.ACTIVE; // TODO
- }
- else if(TIME_TO_LIVE.equals(name))
- {
- // TODO
- }
- else if (DESCRIPTION.equals(name))
- {
- return _queue.getDescription();
- }
- else if(PRIORITIES.equals(name))
- {
- AMQQueue queue = _queue;
- if(queue instanceof PriorityQueue)
- {
- return ((PriorityQueue)queue).getPriorities();
- }
- }
- return super.getAttribute(name);
- }
-
-
- @Override
- public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> clazz)
- {
- if(clazz == org.apache.qpid.server.model.Consumer.class)
- {
- return (Collection<C>) getConsumers();
- }
- else if(clazz == org.apache.qpid.server.model.Binding.class)
- {
- return (Collection<C>) getBindings();
- }
- else
- {
- return Collections.emptySet();
- }
- }
-
- public org.apache.qpid.server.model.Binding createBinding(Exchange exchange, Map<String, Object> attributes)
- throws AccessControlException, IllegalStateException
- {
- attributes = new HashMap<String, Object>(attributes);
- String bindingKey = MapValueConverter.getStringAttribute(org.apache.qpid.server.model.Binding.NAME, attributes, "");
- Map<String, Object> bindingArgs = MapValueConverter.getMapAttribute(org.apache.qpid.server.model.Binding.ARGUMENTS, attributes, Collections.<String,Object>emptyMap());
-
- attributes.remove(org.apache.qpid.server.model.Binding.NAME);
- attributes.remove(org.apache.qpid.server.model.Binding.ARGUMENTS);
-
- return exchange.createBinding(bindingKey, this, bindingArgs, attributes);
-
- }
-
-
-
- @Override
- public <C extends ConfiguredObject> C addChild(Class<C> childClass, Map<String, Object> attributes, ConfiguredObject... otherParents)
- {
- if(childClass == org.apache.qpid.server.model.Binding.class)
- {
- if(otherParents != null && otherParents.length == 1 && otherParents[0] instanceof Exchange)
- {
- Exchange exchange = (Exchange) otherParents[0];
- if(exchange.getParent(org.apache.qpid.server.model.VirtualHost.class) == getParent(org.apache.qpid.server.model.VirtualHost.class))
- {
- return (C) createBinding(exchange, attributes);
- }
- else
- {
- throw new IllegalArgumentException("Queue and Exchange parents of a binding must be on same virtual host");
- }
- }
- else
- {
- throw new IllegalArgumentException("Other parent must be an exchange");
- }
- }
- else
- {
- throw new IllegalArgumentException();
- }
- }
-
- void bindingRegistered(Binding binding, BindingAdapter adapter)
- {
- synchronized (_bindingAdapters)
- {
- _bindingAdapters.put(binding, adapter);
- }
- childAdded(adapter);
- }
-
- void bindingUnregistered(Binding binding)
- {
- BindingAdapter adapter = null;
- synchronized (_bindingAdapters)
- {
- adapter = _bindingAdapters.remove(binding);
- }
- if(adapter != null)
- {
- childRemoved(adapter);
- }
- }
-
- AMQQueue getAMQQueue()
- {
- return _queue;
- }
-
- public void consumerAdded(final AMQQueue queue, final Consumer consumer)
- {
- ConsumerAdapter adapter = null;
- synchronized (_consumerAdapters)
- {
- if(!_consumerAdapters.containsKey(consumer))
- {
- SessionAdapter sessionAdapter = getSessionAdapter(consumer.getSessionModel());
- adapter = new ConsumerAdapter(this, sessionAdapter, consumer);
- _consumerAdapters.put(consumer, adapter);
- if (sessionAdapter != null)
- { // Register ConsumerAdapter with the SessionAdapter.
- sessionAdapter.consumerRegistered(consumer, adapter);
- }
- }
- }
- if(adapter != null)
- {
- childAdded(adapter);
- }
- }
-
- public void consumerRemoved(final AMQQueue queue, final Consumer consumer)
- {
- ConsumerAdapter adapter = null;
-
- synchronized (_consumerAdapters)
- {
- adapter = _consumerAdapters.remove(consumer);
- }
- if(adapter != null)
- {
- SessionAdapter sessionAdapter = getSessionAdapter(consumer.getSessionModel());
- if (sessionAdapter != null)
- { // Unregister ConsumerAdapter with the SessionAdapter.
- sessionAdapter.consumerUnregistered(consumer);
- }
- childRemoved(adapter);
- }
- }
-
- VirtualHostAdapter getVirtualHost()
- {
- return _vhost;
- }
-
-
- @Override
- public long getBytesIn()
- {
- return _queue.getTotalEnqueueSize();
- }
-
- @Override
- public long getBytesOut()
- {
- return _queue.getTotalDequeueSize();
- }
-
- @Override
- public long getMessagesIn()
- {
- return _queue.getTotalEnqueueCount();
- }
-
- @Override
- public long getMessagesOut()
- {
- return _queue.getTotalDequeueCount();
- }
- @Override
- public long getBindingCount()
- {
- return _queue.getBindingCount();
- }
-
- @Override
- public long getConsumerCount()
- {
- return _queue.getConsumerCount();
- }
-
- @Override
- public long getConsumerCountWithCredit()
- {
- return _queue.getActiveConsumerCount();
- }
-
- @Override
- public long getPersistentDequeuedBytes()
- {
- return _queue.getPersistentByteDequeues();
- }
-
- @Override
- public long getPersistentDequeuedMessages()
- {
- return _queue.getPersistentMsgDequeues();
- }
-
- @Override
- public long getPersistentEnqueuedBytes()
- {
- return _queue.getPersistentByteEnqueues();
- }
-
- @Override
- public long getPersistentEnqueuedMessages()
- {
- return _queue.getPersistentMsgEnqueues();
- }
-
- @Override
- public long getQueueDepthBytes()
- {
- return _queue.getQueueDepth();
- }
-
- @Override
- public long getQueueDepthMessages()
- {
- return _queue.getMessageCount();
- }
-
- @Override
- public long getTotalDequeuedBytes()
- {
- return _queue.getTotalDequeueSize();
- }
-
- @Override
- public long getTotalDequeuedMessages()
- {
- return _queue.getTotalDequeueCount();
- }
-
- @Override
- public long getTotalEnqueuedBytes()
- {
- return _queue.getTotalEnqueueSize();
- }
-
- @Override
- public long getTotalEnqueuedMessages()
- {
- return _queue.getTotalEnqueueCount();
- }
-
- @Override
- public long getUnacknowledgedBytes()
- {
- return _queue.getUnackedMessageBytes();
- }
-
- @Override
- public long getUnacknowledgedMessages()
- {
- return _queue.getUnackedMessageCount();
- }
-
-
- @Override
- public void setNotificationListener(QueueNotificationListener listener)
- {
- _queueNotificationListener = listener;
- }
-
- @Override
- public void notifyClients(NotificationCheck notification, AMQQueue queue, String notificationMsg)
- {
- QueueNotificationListener listener = _queueNotificationListener;
- if(listener != null)
- {
- listener.notifyClients(notification, this, notificationMsg);
- }
- }
-
- @Override
- protected boolean setState(State currentState, State desiredState) throws IllegalStateTransitionException,
- AccessControlException
- {
- if (desiredState == State.DELETED)
- {
- delete();
- return true;
- }
- return false;
- }
-
- @Override
- protected void authoriseSetAttribute(String name, Object expected, Object desired) throws AccessControlException
- {
- _vhost.getSecurityManager().authoriseUpdate(_queue);
- }
-
- @Override
- protected void authoriseSetAttributes(Map<String, Object> attributes) throws AccessControlException
- {
- _vhost.getSecurityManager().authoriseUpdate(_queue);
- }
-
- @Override
- protected void changeAttributes(final Map<String, Object> attributes)
- {
- Map<String, Object> convertedAttributes = MapValueConverter.convert(attributes, ATTRIBUTE_TYPES);
- validateAttributes(convertedAttributes);
-
- super.changeAttributes(convertedAttributes);
- }
-
- private void validateAttributes(Map<String, Object> convertedAttributes)
- {
- Long queueFlowControlSize = (Long) convertedAttributes.get(QUEUE_FLOW_CONTROL_SIZE_BYTES);
- Long queueFlowControlResumeSize = (Long) convertedAttributes.get(QUEUE_FLOW_RESUME_SIZE_BYTES);
- if (queueFlowControlSize != null || queueFlowControlResumeSize != null )
- {
- if (queueFlowControlSize == null)
- {
- queueFlowControlSize = (Long)getAttribute(QUEUE_FLOW_CONTROL_SIZE_BYTES);
- }
- if (queueFlowControlResumeSize == null)
- {
- queueFlowControlResumeSize = (Long)getAttribute(QUEUE_FLOW_RESUME_SIZE_BYTES);
- }
- if (queueFlowControlResumeSize > queueFlowControlSize)
- {
- throw new IllegalConfigurationException("Flow resume size can't be greater than flow control size");
- }
- }
- for (Map.Entry<String, Object> entry: convertedAttributes.entrySet())
- {
- Object value = entry.getValue();
- if (value instanceof Number && ((Number)value).longValue() < 0)
- {
- throw new IllegalConfigurationException("Only positive integer value can be specified for the attribute "
- + entry.getKey());
- }
- }
- }
-
-}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java
index 7ddcb047f5..92e409e103 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/SessionAdapter.java
@@ -32,6 +32,7 @@ import org.apache.qpid.server.model.*;
import org.apache.qpid.server.consumer.Consumer;
import org.apache.qpid.server.configuration.updater.TaskExecutor;
import org.apache.qpid.server.protocol.AMQSessionModel;
+import org.apache.qpid.server.queue.QueueConsumer;
final class SessionAdapter extends AbstractConfiguredObject<SessionAdapter> implements Session<SessionAdapter>
{
@@ -39,7 +40,7 @@ final class SessionAdapter extends AbstractConfiguredObject<SessionAdapter> impl
private AMQSessionModel _session;
- private Map<Consumer, ConsumerAdapter> _consumerAdapters = new HashMap<Consumer, ConsumerAdapter>();
+ private Map<Consumer, QueueConsumer> _consumerAdapters = new HashMap<Consumer, QueueConsumer>();
public SessionAdapter(final AMQSessionModel session, TaskExecutor taskExecutor)
{
@@ -110,47 +111,6 @@ final class SessionAdapter extends AbstractConfiguredObject<SessionAdapter> impl
return null; //TODO
}
- public long getTimeToLive()
- {
- return 0; //TODO
- }
-
- public long setTimeToLive(final long expected, final long desired)
- throws IllegalStateException, AccessControlException, IllegalArgumentException
- {
- return 0; //TODO
- }
-
- /**
- * Register a ConsumerAdapter with this Session keyed by the Consumer.
- * @param consumer the org.apache.qpid.server.consumer.Consumer used to key the ConsumerAdapter.
- * @param adapter the registered ConsumerAdapter.
- */
- void consumerRegistered(Consumer consumer, ConsumerAdapter adapter)
- {
- synchronized (_consumerAdapters)
- {
- _consumerAdapters.put(consumer, adapter);
- }
- childAdded(adapter);
- }
-
- /**
- * Unregister a ConsumerAdapter with this Session keyed by the Consumer.
- * @param consumer the org.apache.qpid.server.consumer.Consumer used to key the ConsumerAdapter.
- */
- void consumerUnregistered(Consumer consumer)
- {
- ConsumerAdapter adapter = null;
- synchronized (_consumerAdapters)
- {
- adapter = _consumerAdapters.remove(consumer);
- }
- if (adapter != null)
- {
- childRemoved(adapter);
- }
- }
@Override
public Collection<String> getAttributeNames()
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java
index 0761e31935..36d8ebde43 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAdapter.java
@@ -24,14 +24,11 @@ import java.io.File;
import java.lang.reflect.Type;
import java.security.AccessControlException;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import java.util.UUID;
import org.apache.commons.configuration.CompositeConfiguration;
@@ -43,6 +40,8 @@ import org.apache.qpid.server.exchange.AMQUnknownExchangeType;
import org.apache.qpid.server.configuration.IllegalConfigurationException;
import org.apache.qpid.server.configuration.VirtualHostConfiguration;
import org.apache.qpid.server.configuration.XmlConfigurationUtilities.MyConfiguration;
+import org.apache.qpid.server.exchange.ExchangeImpl;
+import org.apache.qpid.server.exchange.NonDefaultExchange;
import org.apache.qpid.server.message.MessageInstance;
import org.apache.qpid.server.message.ServerMessage;
import org.apache.qpid.server.model.*;
@@ -50,6 +49,7 @@ import org.apache.qpid.server.configuration.updater.TaskExecutor;
import org.apache.qpid.server.plugin.ExchangeType;
import org.apache.qpid.server.protocol.AMQConnectionModel;
import org.apache.qpid.server.queue.AMQQueue;
+import org.apache.qpid.server.queue.AbstractQueue;
import org.apache.qpid.server.queue.ConflationQueue;
import org.apache.qpid.server.security.SecurityManager;
import org.apache.qpid.server.security.access.Operation;
@@ -86,11 +86,6 @@ public final class VirtualHostAdapter extends AbstractConfiguredObject<VirtualHo
private final Map<AMQConnectionModel, ConnectionAdapter> _connectionAdapters =
new HashMap<AMQConnectionModel, ConnectionAdapter>();
- private final Map<AMQQueue, QueueAdapter> _queueAdapters =
- new HashMap<AMQQueue, QueueAdapter>();
-
- private final Map<org.apache.qpid.server.exchange.Exchange, ExchangeAdapter> _exchangeAdapters =
- new HashMap<org.apache.qpid.server.exchange.Exchange, ExchangeAdapter>();
private final Broker<?> _broker;
private final List<VirtualHostAlias> _aliases = new ArrayList<VirtualHostAlias>();
private StatisticsGatherer _brokerStatisticsGatherer;
@@ -162,46 +157,6 @@ public final class VirtualHostAdapter extends AbstractConfiguredObject<VirtualHo
}
- private void populateExchanges()
- {
- Collection<org.apache.qpid.server.exchange.Exchange> actualExchanges =
- _virtualHost.getExchanges();
-
- synchronized (_exchangeAdapters)
- {
- for(org.apache.qpid.server.exchange.Exchange exchange : actualExchanges)
- {
- if(!_exchangeAdapters.containsKey(exchange))
- {
- final ExchangeAdapter adapter = new ExchangeAdapter(this, exchange);
- _exchangeAdapters.put(exchange, adapter);
- childAdded(adapter);
-
- }
- }
- }
- }
-
-
- private void populateQueues()
- {
- Collection<AMQQueue> actualQueues = _virtualHost.getQueues();
- if ( actualQueues != null )
- {
- synchronized(_queueAdapters)
- {
- for(AMQQueue queue : actualQueues)
- {
- if(!_queueAdapters.containsKey(queue))
- {
- final QueueAdapter adapter = new QueueAdapter(this, queue);
- _queueAdapters.put(queue, adapter);
- childAdded(adapter);
- }
- }
- }
- }
- }
public Collection<VirtualHostAlias> getAliases()
{
@@ -232,18 +187,12 @@ public final class VirtualHostAdapter extends AbstractConfiguredObject<VirtualHo
public Collection<Queue> getQueues()
{
- synchronized(_queueAdapters)
- {
- return new ArrayList<Queue>(_queueAdapters.values());
- }
+ return _virtualHost == null ? Collections.<Queue>emptyList() : new ArrayList<Queue>(_virtualHost.getQueues());
}
public Collection<Exchange> getExchanges()
{
- synchronized (_exchangeAdapters)
- {
- return new ArrayList<Exchange>(_exchangeAdapters.values());
- }
+ return _virtualHost == null ? Collections.<Exchange>emptyList() : new ArrayList<Exchange>(_virtualHost.getExchangesExceptDefault());
}
@@ -257,23 +206,20 @@ public final class VirtualHostAdapter extends AbstractConfiguredObject<VirtualHo
boolean durable = MapValueConverter.getBooleanAttribute(Exchange.DURABLE, attributes, false);
LifetimePolicy lifetime = MapValueConverter.getEnumAttribute(LifetimePolicy.class, Exchange.LIFETIME_POLICY, attributes, LifetimePolicy.PERMANENT);
String type = MapValueConverter.getStringAttribute(Exchange.TYPE, attributes, null);
- long ttl = MapValueConverter.getLongAttribute(Exchange.TIME_TO_LIVE, attributes, 0l);
attributes.remove(Exchange.NAME);
attributes.remove(Exchange.STATE);
attributes.remove(Exchange.DURABLE);
attributes.remove(Exchange.LIFETIME_POLICY);
attributes.remove(Exchange.TYPE);
- attributes.remove(Exchange.TIME_TO_LIVE);
- return createExchange(name, state, durable, lifetime, ttl, type, attributes);
+ return createExchange(name, state, durable, lifetime, type, attributes);
}
public Exchange createExchange(final String name,
final State initialState,
final boolean durable,
final LifetimePolicy lifetime,
- final long ttl,
final String type,
final Map<String, Object> attributes)
throws AccessControlException, IllegalArgumentException
@@ -344,11 +290,8 @@ public final class VirtualHostAdapter extends AbstractConfiguredObject<VirtualHo
lifetime != null && lifetime != LifetimePolicy.PERMANENT
? LifetimePolicy.DELETE_ON_NO_LINKS : LifetimePolicy.PERMANENT);
attributes1.put(Exchange.ALTERNATE_EXCHANGE, alternateExchange);
- org.apache.qpid.server.exchange.Exchange exchange = _virtualHost.createExchange(attributes1);
- synchronized (_exchangeAdapters)
- {
- return _exchangeAdapters.get(exchange);
- }
+ NonDefaultExchange exchange = _virtualHost.createExchange(attributes1);
+ return exchange;
}
catch(ExchangeExistsException e)
@@ -405,12 +348,11 @@ public final class VirtualHostAdapter extends AbstractConfiguredObject<VirtualHo
try
{
- AMQQueue queue = _virtualHost.createQueue(attributes);
+ AMQQueue<?> queue = _virtualHost.createQueue(attributes);
+
+
+ return queue;
- synchronized (_queueAdapters)
- {
- return _queueAdapters.get(queue);
- }
}
catch(QueueExistsException qe)
@@ -565,76 +507,25 @@ public final class VirtualHostAdapter extends AbstractConfiguredObject<VirtualHo
throw new IllegalArgumentException("Cannot create a child of class " + childClass.getSimpleName());
}
- public void exchangeRegistered(org.apache.qpid.server.exchange.Exchange exchange)
+ public void exchangeRegistered(ExchangeImpl exchange)
{
- ExchangeAdapter adapter = null;
- synchronized (_exchangeAdapters)
- {
- if(!_exchangeAdapters.containsKey(exchange))
- {
- adapter = new ExchangeAdapter(this, exchange);
- _exchangeAdapters.put(exchange, adapter);
-
- }
-
- }
- if(adapter != null)
- {
- childAdded(adapter);
- }
-
+ childAdded((NonDefaultExchange)exchange);
}
- public void exchangeUnregistered(org.apache.qpid.server.exchange.Exchange exchange)
+ public void exchangeUnregistered(ExchangeImpl exchange)
{
- ExchangeAdapter adapter;
- synchronized (_exchangeAdapters)
- {
- adapter = _exchangeAdapters.remove(exchange);
-
- }
-
- if(adapter != null)
- {
- childRemoved(adapter);
- }
+ childRemoved((NonDefaultExchange)exchange);
}
public void queueRegistered(AMQQueue queue)
{
- QueueAdapter adapter = null;
- synchronized (_queueAdapters)
- {
- if(!_queueAdapters.containsKey(queue))
- {
- adapter = new QueueAdapter(this, queue);
- _queueAdapters.put(queue, adapter);
-
- }
-
- }
- if(adapter != null)
- {
- childAdded(adapter);
- }
-
+ childAdded(queue);
}
public void queueUnregistered(AMQQueue queue)
{
-
- QueueAdapter adapter;
- synchronized (_queueAdapters)
- {
- adapter = _queueAdapters.remove(queue);
-
- }
-
- if(adapter != null)
- {
- childRemoved(adapter);
- }
+ childRemoved(queue);
}
public void connectionRegistered(AMQConnectionModel connection)
@@ -676,22 +567,14 @@ public final class VirtualHostAdapter extends AbstractConfiguredObject<VirtualHo
}
}
- QueueAdapter getQueueAdapter(AMQQueue queue)
- {
- synchronized (_queueAdapters)
- {
- return _queueAdapters.get(queue);
- }
- }
-
public Collection<String> getExchangeTypes()
{
- Collection<ExchangeType<? extends org.apache.qpid.server.exchange.Exchange>> types =
+ Collection<ExchangeType<? extends ExchangeImpl>> types =
_virtualHost.getExchangeTypes();
Collection<String> exchangeTypes = new ArrayList<String>();
- for(ExchangeType<? extends org.apache.qpid.server.exchange.Exchange> type : types)
+ for(ExchangeType<? extends ExchangeImpl> type : types)
{
exchangeTypes.add(type.getType());
}
@@ -726,7 +609,7 @@ public final class VirtualHostAdapter extends AbstractConfiguredObject<VirtualHo
public void copy(MessageInstance entry, Queue queue)
{
final ServerMessage message = entry.getMessage();
- final AMQQueue toQueue = ((QueueAdapter)queue).getAMQQueue();
+ final AMQQueue toQueue = (AMQQueue)queue;
txn.enqueue(toQueue, message, new ServerTransaction.Action()
{
@@ -745,7 +628,7 @@ public final class VirtualHostAdapter extends AbstractConfiguredObject<VirtualHo
public void move(final MessageInstance entry, Queue queue)
{
final ServerMessage message = entry.getMessage();
- final AMQQueue toQueue = ((QueueAdapter)queue).getAMQQueue();
+ final AMQQueue toQueue = (AMQQueue)queue;
if(entry.acquire())
{
txn.enqueue(toQueue, message,
@@ -807,10 +690,6 @@ public final class VirtualHostAdapter extends AbstractConfiguredObject<VirtualHo
{
return LifetimePolicy.PERMANENT;
}
- else if(TIME_TO_LIVE.equals(name))
- {
- // TODO
- }
else if (_virtualHost != null)
{
return getAttributeFromVirtualHostImplementation(name);
@@ -1194,8 +1073,6 @@ public final class VirtualHostAdapter extends AbstractConfiguredObject<VirtualHo
virtualHostRegistry.registerVirtualHost(_virtualHost);
_virtualHost.addVirtualHostListener(this);
- populateQueues();
- populateExchanges();
synchronized(_aliases)
{
@@ -1303,4 +1180,9 @@ public final class VirtualHostAdapter extends AbstractConfiguredObject<VirtualHo
throw new AccessControlException("Setting of virtual host attributes is denied");
}
}
+
+ public TaskExecutor getTaskExecutor()
+ {
+ return super.getTaskExecutor();
+ }
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAliasAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAliasAdapter.java
index 61e64d4ca3..8520884fd6 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAliasAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/VirtualHostAliasAdapter.java
@@ -110,19 +110,6 @@ public class VirtualHostAliasAdapter extends AbstractConfiguredObject<VirtualHos
}
@Override
- public long getTimeToLive()
- {
- return 0; // TODO - Implement
- }
-
- @Override
- public long setTimeToLive(long expected, long desired)
- throws IllegalStateException, AccessControlException, IllegalArgumentException
- {
- throw new IllegalStateException(); // TODO - Implement
- }
-
- @Override
public <C extends ConfiguredObject> Collection<C> getChildren(Class<C> clazz)
{
return Collections.emptySet();
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/ExchangeType.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/ExchangeType.java
index a1d49aa49a..3017aded98 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/ExchangeType.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/ExchangeType.java
@@ -21,13 +21,13 @@
package org.apache.qpid.server.plugin;
import java.util.Map;
-import java.util.UUID;
-import org.apache.qpid.server.exchange.Exchange;
+import org.apache.qpid.server.exchange.ExchangeImpl;
+import org.apache.qpid.server.exchange.NonDefaultExchange;
import org.apache.qpid.server.virtualhost.UnknownExchangeException;
import org.apache.qpid.server.virtualhost.VirtualHost;
-public interface ExchangeType<T extends Exchange> extends Pluggable
+public interface ExchangeType<T extends NonDefaultExchange> extends Pluggable
{
public String getType();
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AMQQueue.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AMQQueue.java
index 7dcafedc18..9216061169 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AMQQueue.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AMQQueue.java
@@ -20,52 +20,51 @@
*/
package org.apache.qpid.server.queue;
-import org.apache.qpid.server.binding.Binding;
-import org.apache.qpid.server.exchange.Exchange;
+import org.apache.qpid.server.binding.BindingImpl;
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.exchange.ExchangeReferrer;
+import org.apache.qpid.server.exchange.NonDefaultExchange;
import org.apache.qpid.server.logging.LogSubject;
import org.apache.qpid.server.message.MessageDestination;
import org.apache.qpid.server.message.MessageSource;
import org.apache.qpid.server.model.ExclusivityPolicy;
import org.apache.qpid.server.model.LifetimePolicy;
+import org.apache.qpid.server.model.Queue;
+import org.apache.qpid.server.model.QueueNotificationListener;
import org.apache.qpid.server.protocol.CapacityChecker;
import org.apache.qpid.server.consumer.Consumer;
import org.apache.qpid.server.util.Deletable;
import org.apache.qpid.server.virtualhost.VirtualHost;
+import javax.management.NotificationListener;
import java.util.Collection;
import java.util.List;
import java.util.Set;
-public interface AMQQueue<E extends QueueEntry<E,Q,C>, Q extends AMQQueue<E,Q,C>, C extends Consumer>
- extends Comparable<Q>, ExchangeReferrer, BaseQueue<C>, MessageSource<C,Q>, CapacityChecker, MessageDestination,
- Deletable<Q>
+public interface AMQQueue<X extends AMQQueue<X>>
+ extends Comparable<AMQQueue>, ExchangeReferrer, BaseQueue, MessageSource, CapacityChecker, MessageDestination,
+ Deletable<AMQQueue>, Queue<X>
{
void setExclusivityPolicy(ExclusivityPolicy desiredPolicy) throws ExistingConsumerPreventsExclusive;
- public interface NotificationListener
- {
- void notifyClients(NotificationCheck notification, AMQQueue queue, String notificationMsg);
- }
-
boolean isExclusive();
- void addBinding(Binding binding);
+ void addBinding(BindingImpl binding);
- void removeBinding(Binding binding);
+ void removeBinding(BindingImpl binding);
- List<Binding> getBindings();
+ Collection<BindingImpl> getBindings();
int getBindingCount();
LogSubject getLogSubject();
- long getUnackedMessageBytes();
+ long getUnacknowledgedBytes();
- long getTotalDequeueCount();
+ long getTotalDequeuedMessages();
- long getTotalEnqueueCount();
+ long getTotalEnqueuedMessages();
LifetimePolicy getLifetimePolicy();
@@ -73,10 +72,11 @@ public interface AMQQueue<E extends QueueEntry<E,Q,C>, Q extends AMQQueue<E,Q,C>
VirtualHost getVirtualHost();
+ public Collection<QueueConsumer<?>> getConsumers();
int getConsumerCount();
- int getActiveConsumerCount();
+ int getConsumerCountWithCredit();
boolean hasExclusiveConsumer();
@@ -84,10 +84,10 @@ public interface AMQQueue<E extends QueueEntry<E,Q,C>, Q extends AMQQueue<E,Q,C>
boolean isEmpty();
- int getMessageCount();
+ int getQueueDepthMessages();
- long getQueueDepth();
+ long getQueueDepthBytes();
long getOldestMessageArrivalTime();
@@ -95,21 +95,21 @@ public interface AMQQueue<E extends QueueEntry<E,Q,C>, Q extends AMQQueue<E,Q,C>
int delete();
- void requeue(E entry);
+ void requeue(QueueEntry entry);
- void dequeue(E entry);
+ void dequeue(QueueEntry entry);
- void decrementUnackedMsgCount(E queueEntry);
+ void decrementUnackedMsgCount(QueueEntry queueEntry);
- boolean resend(final E entry, final C consumer);
+ boolean resend(final QueueEntry entry, final QueueConsumer<?> consumer);
- List<E> getMessagesOnTheQueue();
+ List<? extends QueueEntry> getMessagesOnTheQueue();
List<Long> getMessagesOnTheQueue(int num);
List<Long> getMessagesOnTheQueue(int num, int offset);
- E getMessageOnTheQueue(long messageId);
+ QueueEntry getMessageOnTheQueue(long messageId);
/**
* Returns a list of QueEntries from a given range of queue positions, eg messages 5 to 10 on the queue.
@@ -120,42 +120,42 @@ public interface AMQQueue<E extends QueueEntry<E,Q,C>, Q extends AMQQueue<E,Q,C>
* @param toPosition
* @return
*/
- public List<E> getMessagesRangeOnTheQueue(final long fromPosition, final long toPosition);
+ public List<? extends QueueEntry> getMessagesRangeOnTheQueue(final long fromPosition, final long toPosition);
- void visit(QueueEntryVisitor<E> visitor);
+ void visit(QueueEntryVisitor visitor);
- long getMaximumMessageSize();
+ long getAlertThresholdMessageSize();
void setMaximumMessageSize(long value);
- long getMaximumMessageCount();
+ long getAlertThresholdQueueDepthMessages();
void setMaximumMessageCount(long value);
- long getMaximumQueueDepth();
+ long getAlertThresholdQueueDepthBytes();
void setMaximumQueueDepth(long value);
- long getMaximumMessageAge();
+ long getAlertThresholdMessageAge();
void setMaximumMessageAge(final long maximumMessageAge);
- long getMinimumAlertRepeatGap();
+ long getAlertRepeatGap();
void setMinimumAlertRepeatGap(long value);
- long getCapacity();
+ long getQueueFlowControlSizeBytes();
void setCapacity(long capacity);
- long getFlowResumeCapacity();
+ long getQueueFlowResumeSizeBytes();
void setFlowResumeCapacity(long flowResumeCapacity);
@@ -174,9 +174,9 @@ public interface AMQQueue<E extends QueueEntry<E,Q,C>, Q extends AMQQueue<E,Q,C>
void stop();
- Exchange getAlternateExchange();
+ NonDefaultExchange getAlternateExchange();
- void setAlternateExchange(Exchange exchange);
+ void setAlternateExchange(NonDefaultExchange exchange);
Collection<String> getAvailableAttributes();
Object getAttribute(String attrName);
@@ -189,7 +189,7 @@ public interface AMQQueue<E extends QueueEntry<E,Q,C>, Q extends AMQQueue<E,Q,C>
*
* @return maximum delivery count
*/
- int getMaximumDeliveryCount();
+ int getMaximumDeliveryAttempts();
/**
* Sets the maximum delivery count.
@@ -198,7 +198,7 @@ public interface AMQQueue<E extends QueueEntry<E,Q,C>, Q extends AMQQueue<E,Q,C>
*/
public void setMaximumDeliveryCount(final int maximumDeliveryCount);
- void setNotificationListener(NotificationListener listener);
+ void setNotificationListener(QueueNotificationListener listener);
/**
* Sets the free text description of this queue.
@@ -213,18 +213,18 @@ public interface AMQQueue<E extends QueueEntry<E,Q,C>, Q extends AMQQueue<E,Q,C>
*/
String getDescription();
- long getPersistentByteDequeues();
+ long getPersistentDequeuedBytes();
- long getPersistentMsgDequeues();
+ long getPersistentDequeuedMessages();
- long getPersistentByteEnqueues();
+ long getPersistentEnqueuedBytes();
- long getPersistentMsgEnqueues();
+ long getPersistentEnqueuedMessages();
- long getTotalDequeueSize();
+ long getTotalDequeuedBytes();
- long getTotalEnqueueSize();
+ long getTotalEnqueuedBytes();
- long getUnackedMessageCount();
+ long getUnacknowledgedMessages();
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AMQQueueFactory.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AMQQueueFactory.java
index 42052ba3be..34895b61e8 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AMQQueueFactory.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AMQQueueFactory.java
@@ -25,20 +25,20 @@ import java.util.Map;
import java.util.UUID;
import org.apache.qpid.server.exchange.AMQUnknownExchangeType;
+import org.apache.qpid.server.exchange.ExchangeImpl;
+import org.apache.qpid.server.exchange.NonDefaultExchange;
import org.apache.qpid.server.model.ExclusivityPolicy;
import org.apache.qpid.server.model.LifetimePolicy;
import org.apache.qpid.exchange.ExchangeDefaults;
import org.apache.qpid.server.configuration.BrokerProperties;
import org.apache.qpid.server.configuration.QueueConfiguration;
import org.apache.qpid.server.exchange.DefaultExchangeFactory;
-import org.apache.qpid.server.exchange.Exchange;
import org.apache.qpid.server.model.Queue;
import org.apache.qpid.server.model.UUIDGenerator;
import org.apache.qpid.server.store.DurableConfigurationStoreHelper;
import org.apache.qpid.server.util.ConnectionScopedRuntimeException;
import org.apache.qpid.server.util.MapValueConverter;
import org.apache.qpid.server.util.ServerScopedRuntimeException;
-import org.apache.qpid.server.virtualhost.AbstractVirtualHost;
import org.apache.qpid.server.virtualhost.ExchangeExistsException;
import org.apache.qpid.server.virtualhost.ReservedExchangeNameException;
import org.apache.qpid.server.virtualhost.UnknownExchangeException;
@@ -154,14 +154,14 @@ public class AMQQueueFactory implements QueueFactory
{
final String altExchangeAttr = (String) attributes.get(Queue.ALTERNATE_EXCHANGE);
- Exchange altExchange;
+ NonDefaultExchange altExchange;
try
{
- altExchange = _virtualHost.getExchange(UUID.fromString(altExchangeAttr));
+ altExchange = (NonDefaultExchange) _virtualHost.getExchange(UUID.fromString(altExchangeAttr));
}
catch(IllegalArgumentException e)
{
- altExchange = _virtualHost.getExchange(altExchangeAttr);
+ altExchange = (NonDefaultExchange) _virtualHost.getExchange(altExchangeAttr);
}
queue.setAlternateExchange(altExchange);
}
@@ -183,7 +183,7 @@ public class AMQQueueFactory implements QueueFactory
final String dlExchangeName = getDeadLetterExchangeName(queueName);
final String dlQueueName = getDeadLetterQueueName(queueName);
- Exchange dlExchange = null;
+ NonDefaultExchange dlExchange = null;
final UUID dlExchangeId = UUIDGenerator.generateExchangeUUID(dlExchangeName, _virtualHost.getName());
try
@@ -202,7 +202,7 @@ public class AMQQueueFactory implements QueueFactory
catch(ExchangeExistsException e)
{
// We're ok if the exchange already exists
- dlExchange = e.getExistingExchange();
+ dlExchange = (NonDefaultExchange) e.getExistingExchange();
}
catch (ReservedExchangeNameException e)
{
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java
index 352129b514..516fc7750c 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java
@@ -18,6 +18,8 @@
*/
package org.apache.qpid.server.queue;
+import java.lang.reflect.Type;
+import java.security.AccessControlException;
import java.security.AccessController;
import java.security.Principal;
import java.util.*;
@@ -30,14 +32,17 @@ import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
import org.apache.log4j.Logger;
+import org.apache.qpid.server.binding.BindingImpl;
+import org.apache.qpid.server.configuration.IllegalConfigurationException;
import org.apache.qpid.server.connection.SessionPrincipal;
-import org.apache.qpid.server.model.ExclusivityPolicy;
-import org.apache.qpid.server.model.LifetimePolicy;
+import org.apache.qpid.server.exchange.NonDefaultExchange;
+import org.apache.qpid.server.message.MessageSource;
+import org.apache.qpid.server.model.*;
+import org.apache.qpid.server.model.Queue;
+import org.apache.qpid.server.model.adapter.AbstractConfiguredObject;
import org.apache.qpid.server.protocol.AMQConnectionModel;
import org.apache.qpid.pool.ReferenceCountingExecutorService;
-import org.apache.qpid.server.binding.Binding;
import org.apache.qpid.server.configuration.BrokerProperties;
-import org.apache.qpid.server.exchange.Exchange;
import org.apache.qpid.server.filter.FilterManager;
import org.apache.qpid.server.logging.LogActor;
import org.apache.qpid.server.logging.LogSubject;
@@ -49,11 +54,11 @@ import org.apache.qpid.server.message.InstanceProperties;
import org.apache.qpid.server.message.MessageInstance;
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.protocol.AMQSessionModel;
import org.apache.qpid.server.consumer.Consumer;
import org.apache.qpid.server.consumer.ConsumerTarget;
import org.apache.qpid.server.security.auth.AuthenticatedPrincipal;
+import org.apache.qpid.server.store.DurableConfigurationStoreHelper;
import org.apache.qpid.server.store.StorableMessageMetaData;
import org.apache.qpid.server.txn.AutoCommitTransaction;
import org.apache.qpid.server.txn.LocalTransaction;
@@ -65,14 +70,14 @@ import org.apache.qpid.server.util.ServerScopedRuntimeException;
import org.apache.qpid.server.util.StateChangeListener;
import org.apache.qpid.server.virtualhost.VirtualHost;
+import javax.management.NotificationListener;
import javax.security.auth.Subject;
-abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
- Q extends AbstractQueue<E, Q,L>,
- L extends QueueEntryListBase<E,Q,L>>
- implements AMQQueue<E, Q, QueueConsumer<?,E,Q,L>>,
- StateChangeListener<QueueConsumer<?,E,Q,L>, QueueConsumer.State>,
- MessageGroupManager.ConsumerResetHelper<E,Q,L>
+public abstract class AbstractQueue
+ extends AbstractConfiguredObject<AbstractQueue>
+ implements AMQQueue<AbstractQueue>,
+ StateChangeListener<QueueConsumer<?>, State>,
+ MessageGroupManager.ConsumerResetHelper
{
private static final Logger _logger = Logger.getLogger(AbstractQueue.class);
@@ -83,6 +88,16 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
// TODO - should make this configurable at the vhost / broker level
private static final int DEFAULT_MAX_GROUPS = 255;
+ private static final QueueNotificationListener NULL_NOTIFICATION_LISTENER = new QueueNotificationListener()
+ {
+ @Override
+ public void notifyClients(final NotificationCheck notification,
+ final Queue queue,
+ final String notificationMsg)
+ {
+
+ }
+ };
private final VirtualHost _virtualHost;
@@ -93,14 +108,14 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
private final boolean _durable;
- private Exchange _alternateExchange;
+ private NonDefaultExchange _alternateExchange;
- private final L _entries;
+ private final QueueEntryList _entries;
- private final QueueConsumerList<E,Q,L> _consumerList = new QueueConsumerList<E,Q,L>();
+ private final QueueConsumerList _consumerList = new QueueConsumerList();
- private volatile QueueConsumer<?,E,Q,L> _exclusiveSubscriber;
+ private volatile QueueConsumer<?> _exclusiveSubscriber;
@@ -163,8 +178,8 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
private final Set<AMQSessionModel> _blockedChannels = new ConcurrentSkipListSet<AMQSessionModel>();
private final AtomicBoolean _deleted = new AtomicBoolean(false);
- private final List<Action<? super Q>> _deleteTaskList =
- new CopyOnWriteArrayList<Action<? super Q>>();
+ private final List<Action<? super AMQQueue>> _deleteTaskList =
+ new CopyOnWriteArrayList<Action<? super AMQQueue>>();
private LogSubject _logSubject;
@@ -173,7 +188,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
private boolean _noLocal;
private final AtomicBoolean _overfull = new AtomicBoolean(false);
- private final CopyOnWriteArrayList<Binding> _bindings = new CopyOnWriteArrayList<Binding>();
+ private final CopyOnWriteArrayList<BindingImpl> _bindings = new CopyOnWriteArrayList<BindingImpl>();
private UUID _id;
private final Map<String, Object> _arguments;
@@ -182,18 +197,20 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
/** the maximum delivery count for each message on this queue or 0 if maximum delivery count is not to be enforced. */
private int _maximumDeliveryCount;
- private final MessageGroupManager<E,Q,L> _messageGroupManager;
+ private final MessageGroupManager _messageGroupManager;
- private final Collection<ConsumerRegistrationListener<Q>> _consumerListeners =
- new ArrayList<ConsumerRegistrationListener<Q>>();
+ private final Collection<ConsumerRegistrationListener<? super MessageSource>> _consumerListeners =
+ new ArrayList<ConsumerRegistrationListener<? super MessageSource>>();
- private AMQQueue.NotificationListener _notificationListener;
+ private QueueNotificationListener _notificationListener;
private final long[] _lastNotificationTimes = new long[NotificationCheck.values().length];
protected AbstractQueue(VirtualHost virtualHost,
Map<String, Object> attributes,
- QueueEntryListFactory<E, Q, L> entryListFactory)
+ QueueEntryListFactory entryListFactory)
{
+ super(MapValueConverter.getUUIDAttribute(Queue.ID, attributes),
+ Collections.<String,Object>emptyMap(), attributes, virtualHost.getTaskExecutor());
if (virtualHost == null)
{
throw new IllegalArgumentException("Virtual Host must not be null");
@@ -223,7 +240,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
_name = name;
_durable = durable;
_virtualHost = virtualHost;
- _entries = entryListFactory.createQueueEntryList((Q) this);
+ _entries = entryListFactory.createQueueEntryList(this);
final LinkedHashMap<String, Object> arguments = new LinkedHashMap<String, Object>(attributes);
arguments.put(Queue.EXCLUSIVE, _exclusivityPolicy);
@@ -421,13 +438,13 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
{
Object defaultGroup = attributes.get(Queue.MESSAGE_GROUP_DEFAULT_GROUP);
_messageGroupManager =
- new DefinedGroupMessageGroupManager<E,Q,L>(String.valueOf(attributes.get(Queue.MESSAGE_GROUP_KEY)),
+ new DefinedGroupMessageGroupManager(String.valueOf(attributes.get(Queue.MESSAGE_GROUP_KEY)),
defaultGroup == null ? DEFAULT_SHARED_MESSAGE_GROUP : defaultGroup.toString(),
this);
}
else
{
- _messageGroupManager = new AssignedConsumerMessageGroupManager<E,Q,L>(String.valueOf(attributes.get(
+ _messageGroupManager = new AssignedConsumerMessageGroupManager(String.valueOf(attributes.get(
Queue.MESSAGE_GROUP_KEY)), DEFAULT_MAX_GROUPS);
}
}
@@ -499,11 +516,6 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
_noLocal = nolocal;
}
- public UUID getId()
- {
- return _id;
- }
-
public boolean isDurable()
{
return _durable;
@@ -514,12 +526,12 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
return _exclusivityPolicy != ExclusivityPolicy.NONE;
}
- public Exchange getAlternateExchange()
+ public NonDefaultExchange getAlternateExchange()
{
return _alternateExchange;
}
- public void setAlternateExchange(Exchange exchange)
+ public void setAlternateExchange(NonDefaultExchange exchange)
{
if(_alternateExchange != null)
{
@@ -540,9 +552,120 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
@Override
- public Object getAttribute(String attrName)
+ public Object getAttribute(String name)
{
- return _arguments.get(attrName);
+ if(ALTERNATE_EXCHANGE.equals(name))
+ {
+ return getAlternateExchange();
+ }
+ else if(OWNER.equals(name))
+ {
+ return getOwner();
+ }
+ else if(NAME.equals(name))
+ {
+ return getName();
+ }
+ if(ALERT_REPEAT_GAP.equals(name))
+ {
+ return getAlertRepeatGap();
+ }
+ else if(ALERT_THRESHOLD_MESSAGE_AGE.equals(name))
+ {
+ return getAlertThresholdMessageAge();
+ }
+ else if(ALERT_THRESHOLD_MESSAGE_SIZE.equals(name))
+ {
+ return getAlertThresholdMessageSize();
+ }
+ else if(ALERT_THRESHOLD_QUEUE_DEPTH_BYTES.equals(name))
+ {
+ return getAlertThresholdQueueDepthBytes();
+ }
+ else if(ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES.equals(name))
+ {
+ return getAlertThresholdQueueDepthMessages();
+ }
+ else if(MESSAGE_GROUP_SHARED_GROUPS.equals(name))
+ {
+ //We only return the boolean value if message groups are actually in use
+ return _arguments.get(MESSAGE_GROUP_KEY) == null ? null : _arguments.get(MESSAGE_GROUP_SHARED_GROUPS);
+ }
+ else if(LVQ_KEY.equals(name))
+ {
+ if(this instanceof ConflationQueue)
+ {
+ return ((ConflationQueue)this).getConflationKey();
+ }
+ }
+ else if(MAXIMUM_DELIVERY_ATTEMPTS.equals(name))
+ {
+ return getMaximumDeliveryAttempts();
+ }
+ else if(QUEUE_FLOW_CONTROL_SIZE_BYTES.equals(name))
+ {
+ return getQueueFlowControlSizeBytes();
+ }
+ else if(QUEUE_FLOW_RESUME_SIZE_BYTES.equals(name))
+ {
+ return getQueueFlowResumeSizeBytes();
+ }
+ else if(QUEUE_FLOW_STOPPED.equals(name))
+ {
+ return isOverfull();
+ }
+ else if(SORT_KEY.equals(name))
+ {
+ if(this instanceof SortedQueue)
+ {
+ return ((SortedQueue)this).getSortedPropertyName();
+ }
+ }
+ else if(QUEUE_TYPE.equals(name))
+ {
+ if(this instanceof SortedQueue)
+ {
+ return "sorted";
+ }
+ if(this instanceof ConflationQueue)
+ {
+ return "lvq";
+ }
+ if(this instanceof PriorityQueue)
+ {
+ return "priority";
+ }
+ return "standard";
+ }
+ else if(DURABLE.equals(name))
+ {
+ return isDurable();
+ }
+ else if(ID.equals(name))
+ {
+ return getId();
+ }
+ else if(LIFETIME_POLICY.equals(name))
+ {
+ return getLifetimePolicy();
+ }
+ else if(STATE.equals(name))
+ {
+ return State.ACTIVE; // TODO
+ }
+ else if (DESCRIPTION.equals(name))
+ {
+ return getDescription();
+ }
+ else if(PRIORITIES.equals(name))
+ {
+ if(this instanceof PriorityQueue)
+ {
+ return ((PriorityQueue)this).getPriorities();
+ }
+ }
+
+ return _arguments.get(name);
}
@Override
@@ -580,7 +703,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
@Override
- public synchronized <T extends ConsumerTarget> QueueConsumer<T,E,Q,L> addConsumer(final T target,
+ public synchronized QueueConsumerImpl addConsumer(final ConsumerTarget target,
final FilterManager filters,
final Class<? extends ServerMessage> messageClass,
final String consumerName,
@@ -678,11 +801,12 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
throw new ExistingConsumerPreventsExclusive();
}
- QueueConsumerImpl<T,E,Q,L> consumer = new QueueConsumerImpl<T,E,Q,L>((Q)this,
- target,
- consumerName,
- filters, messageClass,
- optionSet);
+ QueueConsumerImpl consumer = new QueueConsumerImpl(this,
+ target,
+ consumerName,
+ filters,
+ messageClass,
+ optionSet);
_exclusiveOwner = exclusiveOwner;
target.consumerAdded(consumer);
@@ -699,15 +823,15 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
consumer.setStateListener(this);
- consumer.setQueueContext(new QueueContext<E,Q,L>(_entries.getHead()));
+ consumer.setQueueContext(new QueueContext(_entries.getHead()));
if (!isDeleted())
{
synchronized (_consumerListeners)
{
- for(ConsumerRegistrationListener<Q> listener : _consumerListeners)
+ for(ConsumerRegistrationListener<? super MessageSource> listener : _consumerListeners)
{
- listener.consumerAdded((Q)this, consumer);
+ listener.consumerAdded(this, consumer);
}
}
@@ -729,7 +853,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
- synchronized void unregisterConsumer(final QueueConsumerImpl<?,E,Q,L> consumer)
+ synchronized void unregisterConsumer(final QueueConsumerImpl consumer)
{
if (consumer == null)
{
@@ -758,9 +882,9 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
synchronized (_consumerListeners)
{
- for(ConsumerRegistrationListener<Q> listener : _consumerListeners)
+ for(ConsumerRegistrationListener<? super MessageSource> listener : _consumerListeners)
{
- listener.consumerRemoved((Q)this, consumer);
+ listener.consumerRemoved(this, consumer);
}
}
@@ -787,10 +911,10 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
- public Collection<QueueConsumer<?,E,Q,L>> getConsumers()
+ public Collection<QueueConsumer<?>> getConsumers()
{
- List<QueueConsumer<?,E,Q,L>> consumers = new ArrayList<QueueConsumer<?,E,Q,L>>();
- QueueConsumerList.ConsumerNodeIterator<E,Q,L> iter = _consumerList.iterator();
+ List<QueueConsumer<?>> consumers = new ArrayList<QueueConsumer<?>>();
+ QueueConsumerList.ConsumerNodeIterator iter = _consumerList.iterator();
while(iter.advance())
{
consumers.add(iter.getNode().getConsumer());
@@ -799,7 +923,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
- public void addConsumerRegistrationListener(final ConsumerRegistrationListener<Q> listener)
+ public void addConsumerRegistrationListener(final ConsumerRegistrationListener<? super MessageSource> listener)
{
synchronized (_consumerListeners)
{
@@ -807,7 +931,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
}
- public void removeConsumerRegistrationListener(final ConsumerRegistrationListener<Q> listener)
+ public void removeConsumerRegistrationListener(final ConsumerRegistrationListener<? super MessageSource> listener)
{
synchronized (_consumerListeners)
{
@@ -815,9 +939,9 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
}
- public void resetSubPointersForGroups(QueueConsumer<?,E,Q,L> consumer, boolean clearAssignments)
+ public void resetSubPointersForGroups(QueueConsumer<?> consumer, boolean clearAssignments)
{
- E entry = _messageGroupManager.findEarliestAssignedAvailableEntry(consumer);
+ QueueEntry entry = _messageGroupManager.findEarliestAssignedAvailableEntry(consumer);
if(clearAssignments)
{
_messageGroupManager.clearAssignments(consumer);
@@ -825,11 +949,11 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
if(entry != null)
{
- QueueConsumerList.ConsumerNodeIterator<E,Q,L> subscriberIter = _consumerList.iterator();
+ QueueConsumerList.ConsumerNodeIterator subscriberIter = _consumerList.iterator();
// iterate over all the subscribers, and if they are in advance of this queue entry then move them backwards
while (subscriberIter.advance())
{
- QueueConsumer<?,E,Q,L> sub = subscriberIter.getNode().getConsumer();
+ QueueConsumer<?> sub = subscriberIter.getNode().getConsumer();
// we don't make browsers send the same stuff twice
if (sub.seesRequeues())
@@ -843,7 +967,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
}
- public void addBinding(final Binding binding)
+ public void addBinding(final BindingImpl binding)
{
_bindings.add(binding);
int bindingCount = _bindings.size();
@@ -857,12 +981,12 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
}
- public void removeBinding(final Binding binding)
+ public void removeBinding(final BindingImpl binding)
{
_bindings.remove(binding);
}
- public List<Binding> getBindings()
+ public Collection<BindingImpl> getBindings()
{
return Collections.unmodifiableList(_bindings);
}
@@ -879,7 +1003,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
// ------ Enqueue / Dequeue
- public void enqueue(ServerMessage message, Action<? super MessageInstance<?, QueueConsumer<?,E,Q,L>>> action)
+ public void enqueue(ServerMessage message, Action<? super MessageInstance> action)
{
incrementQueueCount();
incrementQueueSize(message);
@@ -887,8 +1011,8 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
_totalMessagesReceived.incrementAndGet();
- E entry;
- final QueueConsumer<?,E,Q,L> exclusiveSub = _exclusiveSubscriber;
+ QueueEntry entry;
+ final QueueConsumer<?> exclusiveSub = _exclusiveSubscriber;
entry = _entries.add(message);
if(action != null || (exclusiveSub == null && _queueRunner.isIdle()))
@@ -898,8 +1022,8 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
iterate over consumers and if any is at the end of the queue and can deliver this message, then deliver the message
*/
- QueueConsumerList.ConsumerNode<E,Q,L> node = _consumerList.getMarkedNode();
- QueueConsumerList.ConsumerNode<E,Q,L> nextNode = node.findNext();
+ QueueConsumerList.ConsumerNode node = _consumerList.getMarkedNode();
+ QueueConsumerList.ConsumerNode nextNode = node.findNext();
if (nextNode == null)
{
nextNode = _consumerList.getHead().findNext();
@@ -935,7 +1059,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
else
{
// if consumer at end, and active, offer
- QueueConsumer<?,E,Q,L> sub = nextNode.getConsumer();
+ QueueConsumer<?> sub = nextNode.getConsumer();
deliverToConsumer(sub, entry);
}
nextNode = nextNode.findNext();
@@ -967,7 +1091,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
- private void deliverToConsumer(final QueueConsumer<?,E,Q,L> sub, final E entry)
+ private void deliverToConsumer(final QueueConsumer<?> sub, final QueueEntry entry)
{
if(sub.trySendLock())
@@ -998,7 +1122,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
}
- private boolean assign(final QueueConsumer<?,E,Q,L> sub, final E entry)
+ private boolean assign(final QueueConsumer<?> sub, final QueueEntry entry)
{
if(_messageGroupManager == null)
{
@@ -1012,17 +1136,17 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
}
- private boolean mightAssign(final QueueConsumer<?,E,Q,L> sub, final E entry)
+ private boolean mightAssign(final QueueConsumer sub, final QueueEntry entry)
{
if(_messageGroupManager == null || !sub.acquires())
{
return true;
}
- QueueConsumer<?,E,Q,L> assigned = _messageGroupManager.getAssignedConsumer(entry);
+ QueueConsumer assigned = _messageGroupManager.getAssignedConsumer(entry);
return (assigned == null) || (assigned == sub);
}
- protected void checkConsumersNotAheadOfDelivery(final E entry)
+ protected void checkConsumersNotAheadOfDelivery(final QueueEntry entry)
{
// This method is only required for queues which mess with ordering
// Simple Queues don't :-)
@@ -1041,12 +1165,12 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
}
- public long getTotalDequeueCount()
+ public long getTotalDequeuedMessages()
{
return _dequeueCount.get();
}
- public long getTotalEnqueueCount()
+ public long getTotalEnqueuedMessages()
{
return _enqueueCount.get();
}
@@ -1056,7 +1180,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
getAtomicQueueCount().incrementAndGet();
}
- private void deliverMessage(final QueueConsumer<?,E,Q,L> sub, final E entry, boolean batch)
+ private void deliverMessage(final QueueConsumer<?> sub, final QueueEntry entry, boolean batch)
{
setLastSeenEntry(sub, entry);
@@ -1066,18 +1190,18 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
sub.send(entry, batch);
}
- private boolean consumerReadyAndHasInterest(final QueueConsumer<?,E,Q,L> sub, final E entry)
+ private boolean consumerReadyAndHasInterest(final QueueConsumer<?> sub, final QueueEntry entry)
{
return sub.hasInterest(entry) && (getNextAvailableEntry(sub) == entry);
}
- private void setLastSeenEntry(final QueueConsumer<?,E,Q,L> sub, final E entry)
+ private void setLastSeenEntry(final QueueConsumer<?> sub, final QueueEntry entry)
{
- QueueContext<E,Q,L> subContext = sub.getQueueContext();
+ QueueContext subContext = sub.getQueueContext();
if (subContext != null)
{
- E releasedEntry = subContext.getReleasedEntry();
+ QueueEntry releasedEntry = subContext.getReleasedEntry();
QueueContext._lastSeenUpdater.set(subContext, entry);
if(releasedEntry == entry)
@@ -1087,13 +1211,13 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
}
- private void updateSubRequeueEntry(final QueueConsumer<?,E,Q,L> sub, final E entry)
+ private void updateSubRequeueEntry(final QueueConsumer<?> sub, final QueueEntry entry)
{
- QueueContext<E,Q,L> subContext = sub.getQueueContext();
+ QueueContext subContext = sub.getQueueContext();
if(subContext != null)
{
- E oldEntry;
+ QueueEntry oldEntry;
while((oldEntry = subContext.getReleasedEntry()) == null || oldEntry.compareTo(entry) > 0)
{
@@ -1105,13 +1229,13 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
}
- public void requeue(E entry)
+ public void requeue(QueueEntry entry)
{
- QueueConsumerList.ConsumerNodeIterator<E,Q,L> subscriberIter = _consumerList.iterator();
+ QueueConsumerList.ConsumerNodeIterator subscriberIter = _consumerList.iterator();
// iterate over all the subscribers, and if they are in advance of this queue entry then move them backwards
while (subscriberIter.advance() && entry.isAvailable())
{
- QueueConsumer<?,E,Q,L> sub = subscriberIter.getNode().getConsumer();
+ QueueConsumer<?> sub = subscriberIter.getNode().getConsumer();
// we don't make browsers send the same stuff twice
if (sub.seesRequeues())
@@ -1125,7 +1249,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
@Override
- public void dequeue(E entry)
+ public void dequeue(QueueEntry entry)
{
decrementQueueCount();
decrementQueueSize(entry);
@@ -1138,7 +1262,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
- private void decrementQueueSize(final E entry)
+ private void decrementQueueSize(final QueueEntry entry)
{
final ServerMessage message = entry.getMessage();
long size = message.getSize();
@@ -1157,7 +1281,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
_dequeueCount.incrementAndGet();
}
- public boolean resend(final E entry, final QueueConsumer<?,E,Q,L> consumer)
+ public boolean resend(final QueueEntry entry, final QueueConsumer<?> consumer)
{
/* TODO : This is wrong as the consumer may be suspended, we should instead change the state of the message
entry to resend and move back the consumer pointer. */
@@ -1188,7 +1312,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
return _consumerList.size();
}
- public int getActiveConsumerCount()
+ public int getConsumerCountWithCredit()
{
return _activeSubscriberCount.get();
}
@@ -1200,22 +1324,23 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
public boolean isEmpty()
{
- return getMessageCount() == 0;
+ return getQueueDepthMessages() == 0;
}
- public int getMessageCount()
+ @Override
+ public int getQueueDepthMessages()
{
return getAtomicQueueCount().get();
}
- public long getQueueDepth()
+ public long getQueueDepthBytes()
{
return getAtomicQueueSize().get();
}
public int getUndeliveredMessageCount()
{
- int count = getMessageCount() - _deliveredMessages.get();
+ int count = getQueueDepthMessages() - _deliveredMessages.get();
if (count < 0)
{
return 0;
@@ -1233,11 +1358,11 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
public long getOldestMessageArrivalTime()
{
- E entry = getOldestQueueEntry();
+ QueueEntry entry = getOldestQueueEntry();
return entry == null ? Long.MAX_VALUE : entry.getMessage().getArrivalTime();
}
- protected E getOldestQueueEntry()
+ protected QueueEntry getOldestQueueEntry()
{
return _entries.next(_entries.getHead());
}
@@ -1247,13 +1372,13 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
return _deleted.get();
}
- public List<E> getMessagesOnTheQueue()
+ public List<QueueEntry> getMessagesOnTheQueue()
{
- ArrayList<E> entryList = new ArrayList<E>();
- QueueEntryIterator<E,Q,L,QueueConsumer<?,E,Q,L>> queueListIterator = _entries.iterator();
+ ArrayList<QueueEntry> entryList = new ArrayList<QueueEntry>();
+ QueueEntryIterator queueListIterator = _entries.iterator();
while (queueListIterator.advance())
{
- E node = queueListIterator.getNode();
+ QueueEntry node = queueListIterator.getNode();
if (node != null && !node.isDeleted())
{
entryList.add(node);
@@ -1263,16 +1388,16 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
- public void stateChanged(QueueConsumer<?,E,Q,L> sub, QueueConsumer.State oldState, QueueConsumer.State newState)
+ public void stateChanged(QueueConsumer<?> sub, State oldState, State newState)
{
- if (oldState == QueueConsumer.State.ACTIVE && newState != QueueConsumer.State.ACTIVE)
+ if (oldState == State.ACTIVE && newState != State.ACTIVE)
{
_activeSubscriberCount.decrementAndGet();
}
- else if (newState == QueueConsumer.State.ACTIVE)
+ else if (newState == State.ACTIVE)
{
- if (oldState != QueueConsumer.State.ACTIVE)
+ if (oldState != State.ACTIVE)
{
_activeSubscriberCount.incrementAndGet();
@@ -1281,7 +1406,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
}
- public int compareTo(final Q o)
+ public int compareTo(final AMQQueue o)
{
return _name.compareTo(o.getName());
}
@@ -1301,7 +1426,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
return _exclusiveSubscriber != null;
}
- private void setExclusiveSubscriber(QueueConsumer<?,E,Q,L> exclusiveSubscriber)
+ private void setExclusiveSubscriber(QueueConsumer<?> exclusiveSubscriber)
{
_exclusiveSubscriber = exclusiveSubscriber;
}
@@ -1312,32 +1437,32 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
/** Used to track bindings to exchanges so that on deletion they can easily be cancelled. */
- protected L getEntries()
+ protected QueueEntryList getEntries()
{
return _entries;
}
- protected QueueConsumerList<E,Q,L> getConsumerList()
+ protected QueueConsumerList getConsumerList()
{
return _consumerList;
}
- public static interface QueueEntryFilter<E extends QueueEntry>
+ public static interface QueueEntryFilter
{
- public boolean accept(E entry);
+ public boolean accept(QueueEntry entry);
public boolean filterComplete();
}
- public List<E> getMessagesOnTheQueue(final long fromMessageId, final long toMessageId)
+ public List<QueueEntry> getMessagesOnTheQueue(final long fromMessageId, final long toMessageId)
{
- return getMessagesOnTheQueue(new QueueEntryFilter<E>()
+ return getMessagesOnTheQueue(new QueueEntryFilter()
{
- public boolean accept(E entry)
+ public boolean accept(QueueEntry entry)
{
final long messageId = entry.getMessage().getMessageNumber();
return messageId >= fromMessageId && messageId <= toMessageId;
@@ -1350,13 +1475,13 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
});
}
- public E getMessageOnTheQueue(final long messageId)
+ public QueueEntry getMessageOnTheQueue(final long messageId)
{
- List<E> entries = getMessagesOnTheQueue(new QueueEntryFilter<E>()
+ List<QueueEntry> entries = getMessagesOnTheQueue(new QueueEntryFilter()
{
private boolean _complete;
- public boolean accept(E entry)
+ public boolean accept(QueueEntry entry)
{
_complete = entry.getMessage().getMessageNumber() == messageId;
return _complete;
@@ -1370,13 +1495,13 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
return entries.isEmpty() ? null : entries.get(0);
}
- public List<E> getMessagesOnTheQueue(QueueEntryFilter<E> filter)
+ public List<QueueEntry> getMessagesOnTheQueue(QueueEntryFilter filter)
{
- ArrayList<E> entryList = new ArrayList<E>();
- QueueEntryIterator<E,Q,L,QueueConsumer<?,E,Q,L>> queueListIterator = _entries.iterator();
+ ArrayList<QueueEntry> entryList = new ArrayList<QueueEntry>();
+ QueueEntryIterator queueListIterator = _entries.iterator();
while (queueListIterator.advance() && !filter.filterComplete())
{
- E node = queueListIterator.getNode();
+ QueueEntry node = queueListIterator.getNode();
if (!node.isDeleted() && filter.accept(node))
{
entryList.add(node);
@@ -1386,13 +1511,13 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
- public void visit(final QueueEntryVisitor<E> visitor)
+ public void visit(final QueueEntryVisitor visitor)
{
- QueueEntryIterator<E,Q,L,QueueConsumer<?,E,Q,L>> queueListIterator = _entries.iterator();
+ QueueEntryIterator queueListIterator = _entries.iterator();
while(queueListIterator.advance())
{
- E node = queueListIterator.getNode();
+ QueueEntry node = queueListIterator.getNode();
if(!node.isDeleted())
{
@@ -1413,13 +1538,13 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
* @param toPosition last message position
* @return list of messages
*/
- public List<E> getMessagesRangeOnTheQueue(final long fromPosition, final long toPosition)
+ public List<QueueEntry> getMessagesRangeOnTheQueue(final long fromPosition, final long toPosition)
{
- return getMessagesOnTheQueue(new QueueEntryFilter<E>()
+ return getMessagesOnTheQueue(new QueueEntryFilter()
{
private long position = 0;
- public boolean accept(E entry)
+ public boolean accept(QueueEntry entry)
{
position++;
return (position >= fromPosition) && (position <= toPosition);
@@ -1450,14 +1575,14 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
//Perform ACLs
getVirtualHost().getSecurityManager().authorisePurge(this);
- QueueEntryIterator<E,Q,L,QueueConsumer<?,E,Q,L>> queueListIterator = _entries.iterator();
+ QueueEntryIterator queueListIterator = _entries.iterator();
long count = 0;
ServerTransaction txn = new LocalTransaction(getVirtualHost().getMessageStore());
while (queueListIterator.advance())
{
- E node = queueListIterator.getNode();
+ QueueEntry node = queueListIterator.getNode();
if (node.acquire())
{
dequeueEntry(node, txn);
@@ -1474,13 +1599,13 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
return count;
}
- private void dequeueEntry(final E node)
+ private void dequeueEntry(final QueueEntry node)
{
ServerTransaction txn = new AutoCommitTransaction(getVirtualHost().getMessageStore());
dequeueEntry(node, txn);
}
- private void dequeueEntry(final E node, ServerTransaction txn)
+ private void dequeueEntry(final QueueEntry node, ServerTransaction txn)
{
txn.dequeue(this, node.getMessage(),
new ServerTransaction.Action()
@@ -1499,13 +1624,13 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
@Override
- public void addDeleteTask(final Action<? super Q> task)
+ public void addDeleteTask(final Action<? super AMQQueue> task)
{
_deleteTaskList.add(task);
}
@Override
- public void removeDeleteTask(final Action<? super Q> task)
+ public void removeDeleteTask(final Action<? super AMQQueue> task)
{
_deleteTaskList.remove(task);
}
@@ -1519,9 +1644,9 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
if (!_deleted.getAndSet(true))
{
- final ArrayList<Binding> bindingCopy = new ArrayList<Binding>(_bindings);
+ final ArrayList<BindingImpl> bindingCopy = new ArrayList<BindingImpl>(_bindings);
- for (Binding b : bindingCopy)
+ for (BindingImpl b : bindingCopy)
{
b.delete();
}
@@ -1538,10 +1663,10 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
- List<E> entries = getMessagesOnTheQueue(new QueueEntryFilter<E>()
+ List<QueueEntry> entries = getMessagesOnTheQueue(new QueueEntryFilter()
{
- public boolean accept(E entry)
+ public boolean accept(QueueEntry entry)
{
return entry.acquire();
}
@@ -1555,7 +1680,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
ServerTransaction txn = new LocalTransaction(getVirtualHost().getMessageStore());
- for(final E entry : entries)
+ for(final QueueEntry entry : entries)
{
// TODO log requeues with a post enqueue action
int requeues = entry.routeToAlternate(null, txn);
@@ -1574,9 +1699,9 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
- for (Action<? super Q> task : _deleteTaskList)
+ for (Action<? super AMQQueue> task : _deleteTaskList)
{
- task.performAction((Q)this);
+ task.performAction(this);
}
_deleteTaskList.clear();
@@ -1586,7 +1711,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
CurrentActor.get().message(_logSubject, QueueMessages.DELETED());
}
- return getMessageCount();
+ return getQueueDepthMessages();
}
@@ -1660,7 +1785,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
- public void deliverAsync(QueueConsumer<?,E,Q,L> sub)
+ public void deliverAsync(QueueConsumer<?> sub)
{
if(_exclusiveSubscriber == null)
{
@@ -1674,13 +1799,13 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
- void flushConsumer(QueueConsumer<?,E,Q,L> sub)
+ void flushConsumer(QueueConsumer<?> sub)
{
flushConsumer(sub, Long.MAX_VALUE);
}
- boolean flushConsumer(QueueConsumer<?,E,Q,L> sub, long iterations)
+ boolean flushConsumer(QueueConsumer<?> sub, long iterations)
{
boolean atTail = false;
final boolean keepSendLockHeld = iterations <= AbstractQueue.MAX_ASYNC_DELIVERIES;
@@ -1757,7 +1882,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
* @param batch true if processing can be batched
* @return true if we have completed all possible deliveries for this sub.
*/
- private boolean attemptDelivery(QueueConsumer<?,E,Q,L> sub, boolean batch)
+ private boolean attemptDelivery(QueueConsumer<?> sub, boolean batch)
{
boolean atTail = false;
@@ -1765,7 +1890,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
if (subActive)
{
- E node = getNextAvailableEntry(sub);
+ QueueEntry node = getNextAvailableEntry(sub);
if (node != null && node.isAvailable())
{
@@ -1802,11 +1927,11 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
protected void advanceAllConsumers()
{
- QueueConsumerList.ConsumerNodeIterator<E,Q,L> consumerNodeIterator = _consumerList.iterator();
+ QueueConsumerList.ConsumerNodeIterator consumerNodeIterator = _consumerList.iterator();
while (consumerNodeIterator.advance())
{
- QueueConsumerList.ConsumerNode<E,Q,L> subNode = consumerNodeIterator.getNode();
- QueueConsumer<?,E,Q,L> sub = subNode.getConsumer();
+ QueueConsumerList.ConsumerNode subNode = consumerNodeIterator.getNode();
+ QueueConsumer sub = subNode.getConsumer();
if(sub.acquires())
{
getNextAvailableEntry(sub);
@@ -1818,15 +1943,15 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
}
- private E getNextAvailableEntry(final QueueConsumer<?,E,Q,L> sub)
+ private QueueEntry getNextAvailableEntry(final QueueConsumer sub)
{
- QueueContext<E,Q,L> context = sub.getQueueContext();
+ QueueContext context = sub.getQueueContext();
if(context != null)
{
- E lastSeen = context.getLastSeenEntry();
- E releasedNode = context.getReleasedEntry();
+ QueueEntry lastSeen = context.getLastSeenEntry();
+ QueueEntry releasedNode = context.getReleasedEntry();
- E node = (releasedNode != null && lastSeen.compareTo(releasedNode)>=0) ? releasedNode : _entries.next(lastSeen);
+ QueueEntry node = (releasedNode != null && lastSeen.compareTo(releasedNode)>=0) ? releasedNode : _entries.next(lastSeen);
boolean expired = false;
while (node != null && (!node.isAvailable() || (expired = node.expired()) || !sub.hasInterest(node) ||
@@ -1858,12 +1983,12 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
}
- public boolean isEntryAheadOfConsumer(E entry, QueueConsumer<?,E,Q,L> sub)
+ public boolean isEntryAheadOfConsumer(QueueEntry entry, QueueConsumer<?> sub)
{
- QueueContext<E,Q,L> context = sub.getQueueContext();
+ QueueContext context = sub.getQueueContext();
if(context != null)
{
- E releasedNode = context.getReleasedEntry();
+ QueueEntry releasedNode = context.getReleasedEntry();
return releasedNode != null && releasedNode.compareTo(entry) < 0;
}
else
@@ -1934,11 +2059,11 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
boolean allConsumersDone = true;
boolean consumerDone;
- QueueConsumerList.ConsumerNodeIterator<E,Q,L> consumerNodeIterator = _consumerList.iterator();
+ QueueConsumerList.ConsumerNodeIterator consumerNodeIterator = _consumerList.iterator();
//iterate over the subscribers and try to advance their pointer
while (consumerNodeIterator.advance())
{
- QueueConsumer<?,E,Q,L> sub = consumerNodeIterator.getNode().getConsumer();
+ QueueConsumer<?> sub = consumerNodeIterator.getNode().getConsumer();
sub.getSendLock();
try
@@ -2020,11 +2145,11 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
public void checkMessageStatus()
{
- QueueEntryIterator<E,Q,L,QueueConsumer<?,E,Q,L>> queueListIterator = _entries.iterator();
+ QueueEntryIterator queueListIterator = _entries.iterator();
while (queueListIterator.advance())
{
- E node = queueListIterator.getNode();
+ QueueEntry node = queueListIterator.getNode();
// Only process nodes that are not currently deleted and not dequeued
if (!node.isDeleted())
{
@@ -2054,7 +2179,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
- public long getMinimumAlertRepeatGap()
+ public long getAlertRepeatGap()
{
return _minimumAlertRepeatGap;
}
@@ -2064,7 +2189,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
_minimumAlertRepeatGap = minimumAlertRepeatGap;
}
- public long getMaximumMessageAge()
+ public long getAlertThresholdMessageAge()
{
return _maximumMessageAge;
}
@@ -2082,7 +2207,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
}
- public long getMaximumMessageCount()
+ public long getAlertThresholdQueueDepthMessages()
{
return _maximumMessageCount;
}
@@ -2101,7 +2226,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
- public long getMaximumQueueDepth()
+ public long getAlertThresholdQueueDepthBytes()
{
return _maximumQueueDepth;
}
@@ -2121,7 +2246,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
- public long getMaximumMessageSize()
+ public long getAlertThresholdMessageSize()
{
return _maximumMessageSize;
}
@@ -2139,7 +2264,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
}
- public long getCapacity()
+ public long getQueueFlowControlSizeBytes()
{
return _capacity;
}
@@ -2149,7 +2274,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
_capacity = capacity;
}
- public long getFlowResumeCapacity()
+ public long getQueueFlowResumeSizeBytes()
{
return _flowResumeCapacity;
}
@@ -2191,12 +2316,12 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
}
- private final class QueueEntryListener implements StateChangeListener<E, QueueEntry.State>
+ private final class QueueEntryListener implements StateChangeListener<MessageInstance, QueueEntry.State>
{
- private final QueueConsumer<?,E,Q,L> _sub;
+ private final QueueConsumer<?> _sub;
- public QueueEntryListener(final QueueConsumer<?,E,Q,L> sub)
+ public QueueEntryListener(final QueueConsumer<?> sub)
{
_sub = sub;
}
@@ -2212,7 +2337,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
return System.identityHashCode(_sub);
}
- public void stateChanged(E entry, QueueEntry.State oldSate, QueueEntry.State newState)
+ public void stateChanged(MessageInstance entry, QueueEntry.State oldSate, QueueEntry.State newState)
{
entry.removeStateChangeListener(this);
deliverAsync(_sub);
@@ -2241,32 +2366,32 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
return ids;
}
- public long getTotalEnqueueSize()
+ public long getTotalEnqueuedBytes()
{
return _enqueueSize.get();
}
- public long getTotalDequeueSize()
+ public long getTotalDequeuedBytes()
{
return _dequeueSize.get();
}
- public long getPersistentByteEnqueues()
+ public long getPersistentEnqueuedBytes()
{
return _persistentMessageEnqueueSize.get();
}
- public long getPersistentByteDequeues()
+ public long getPersistentDequeuedBytes()
{
return _persistentMessageDequeueSize.get();
}
- public long getPersistentMsgEnqueues()
+ public long getPersistentEnqueuedMessages()
{
return _persistentMessageEnqueueCount.get();
}
- public long getPersistentMsgDequeues()
+ public long getPersistentDequeuedMessages()
{
return _persistentMessageDequeueCount.get();
}
@@ -2278,23 +2403,23 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
return getName();
}
- public long getUnackedMessageCount()
+ public long getUnacknowledgedMessages()
{
return _unackedMsgCount.get();
}
- public long getUnackedMessageBytes()
+ public long getUnacknowledgedBytes()
{
return _unackedMsgBytes.get();
}
- public void decrementUnackedMsgCount(E queueEntry)
+ public void decrementUnackedMsgCount(QueueEntry queueEntry)
{
_unackedMsgCount.decrementAndGet();
_unackedMsgBytes.addAndGet(-queueEntry.getSize());
}
- private void incrementUnackedMsgCount(E entry)
+ private void incrementUnackedMsgCount(QueueEntry entry)
{
_unackedMsgCount.incrementAndGet();
_unackedMsgBytes.addAndGet(entry.getSize());
@@ -2305,7 +2430,8 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
return _logActor;
}
- public int getMaximumDeliveryCount()
+ @Override
+ public int getMaximumDeliveryAttempts()
{
return _maximumDeliveryCount;
}
@@ -2321,12 +2447,15 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
private void checkForNotification(ServerMessage<?> msg)
{
final Set<NotificationCheck> notificationChecks = getNotificationChecks();
- final AMQQueue.NotificationListener listener = _notificationListener;
-
+ QueueNotificationListener listener = _notificationListener;
+ if(listener == null)
+ {
+ listener = NULL_NOTIFICATION_LISTENER;
+ }
if(listener != null && !notificationChecks.isEmpty())
{
final long currentTime = System.currentTimeMillis();
- final long thresholdTime = currentTime - getMinimumAlertRepeatGap();
+ final long thresholdTime = currentTime - getAlertRepeatGap();
for (NotificationCheck check : notificationChecks)
{
@@ -2341,7 +2470,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
}
}
- public void setNotificationListener(AMQQueue.NotificationListener listener)
+ public void setNotificationListener(QueueNotificationListener listener)
{
_notificationListener = listener;
}
@@ -2361,7 +2490,7 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
public final <M extends ServerMessage<? extends StorableMessageMetaData>> int send(final M message,
final InstanceProperties instanceProperties,
final ServerTransaction txn,
- final Action<? super MessageInstance<?, ? extends Consumer>> postEnqueueAction)
+ final Action<? super MessageInstance> postEnqueueAction)
{
txn.enqueue(this,message, new ServerTransaction.Action()
{
@@ -2612,4 +2741,371 @@ abstract class AbstractQueue<E extends QueueEntryImpl<E,Q,L>,
_deleteTask = deleteTask;
}
}
+
+ //=============
+
+
+ @Override
+ protected boolean setState(final State currentState, final State desiredState)
+ {
+ if(desiredState == State.DELETED)
+ {
+ _virtualHost.removeQueue(this);
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public String getQueueType()
+ {
+ return null;
+ }
+
+ @Override
+ public ExclusivityPolicy getExclusive()
+ {
+ return _exclusivityPolicy;
+ }
+
+ @Override
+ public boolean getNoLocal()
+ {
+ return _noLocal;
+ }
+
+ @Override
+ public String getLvqKey()
+ {
+ return null;
+ }
+
+ @Override
+ public String getSortKey()
+ {
+ return null;
+ }
+
+ @Override
+ public String getMessageGroupKey()
+ {
+ return (String) getAttribute(MESSAGE_GROUP_KEY);
+ }
+
+ @Override
+ public int getMessageGroupSharedGroups()
+ {
+ return (Integer) getAttribute(MESSAGE_GROUP_SHARED_GROUPS);
+ }
+
+
+ @Override
+ public boolean isQueueFlowStopped()
+ {
+ return false;
+ }
+
+ @Override
+ public int getPriorities()
+ {
+ return 0;
+ }
+
+ @Override
+ public long getBytesIn()
+ {
+ return 0;
+ }
+
+ @Override
+ public long getBytesOut()
+ {
+ return 0;
+ }
+
+ @Override
+ public long getMessagesIn()
+ {
+ return 0;
+ }
+
+ @Override
+ public long getMessagesOut()
+ {
+ return 0;
+ }
+
+ @Override
+ public String setName(final String currentName, final String desiredName)
+ throws IllegalStateException, AccessControlException
+ {
+ return null;
+ }
+
+ @Override
+ public State getState()
+ {
+ return isDeleted() ? State.DELETED : State.ACTIVE;
+ }
+
+ @Override
+ public void setDurable(final boolean durable)
+ throws IllegalStateException, AccessControlException, IllegalArgumentException
+ {
+
+ }
+
+ @Override
+ public LifetimePolicy setLifetimePolicy(final LifetimePolicy expected, final LifetimePolicy desired)
+ throws IllegalStateException, AccessControlException, IllegalArgumentException
+ {
+ return null;
+ }
+
+ @Override
+ public <C extends ConfiguredObject> Collection<C> getChildren(final Class<C> clazz)
+ {
+ if(clazz == Binding.class)
+ {
+ return (Collection<C>) getBindings();
+ }
+ else if(clazz == org.apache.qpid.server.model.Consumer.class)
+ {
+ return (Collection<C>) getConsumers();
+ }
+ else return Collections.emptySet();
+ }
+
+ @Override
+ public <T extends ConfiguredObject> T getParent(final Class<T> clazz)
+ {
+ if(clazz == org.apache.qpid.server.model.VirtualHost.class)
+ {
+ return (T) _virtualHost.getModel();
+ }
+ return super.getParent(clazz);
+ }
+
+ @Override
+ protected <C extends ConfiguredObject> C addChild(final Class<C> childClass,
+ final Map<String, Object> attributes,
+ final ConfiguredObject... otherParents)
+ {
+ if(childClass == Binding.class && otherParents.length == 1 && otherParents[0] instanceof Exchange)
+ {
+ final String bindingKey = (String) attributes.get("name");
+ ((NonDefaultExchange)otherParents[0]).addBinding(bindingKey, this, attributes);
+ for(Binding binding : _bindings)
+ {
+ if(binding.getExchange() == otherParents[0] && binding.getName().equals(bindingKey))
+ {
+ return (C) binding;
+ }
+ }
+ return null;
+ }
+ return super.addChild(childClass, attributes, otherParents);
+ }
+
+ @Override
+ public boolean changeAttribute(String name, Object expected, Object desired) throws IllegalStateException, AccessControlException, IllegalArgumentException
+ {
+ try
+ {
+ if(ALERT_REPEAT_GAP.equals(name))
+ {
+ setMinimumAlertRepeatGap((Long) desired);
+ return true;
+ }
+ else if(ALERT_THRESHOLD_MESSAGE_AGE.equals(name))
+ {
+ setMaximumMessageAge((Long) desired);
+ return true;
+ }
+ else if(ALERT_THRESHOLD_MESSAGE_SIZE.equals(name))
+ {
+ setMaximumMessageSize((Long) desired);
+ return true;
+ }
+ else if(ALERT_THRESHOLD_QUEUE_DEPTH_BYTES.equals(name))
+ {
+ setMaximumQueueDepth((Long) desired);
+ return true;
+ }
+ else if(ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES.equals(name))
+ {
+ setMaximumMessageCount((Long) desired);
+ return true;
+ }
+ else if(ALTERNATE_EXCHANGE.equals(name))
+ {
+ // In future we may want to accept a UUID as an alternative way to identifying the exchange
+ NonDefaultExchange alternateExchange = (NonDefaultExchange) desired;
+ setAlternateExchange(alternateExchange);
+ return true;
+ }
+ else if(EXCLUSIVE.equals(name))
+ {
+ ExclusivityPolicy desiredPolicy;
+ if(desired == null)
+ {
+ desiredPolicy = ExclusivityPolicy.NONE;
+ }
+ else if(desired instanceof ExclusivityPolicy)
+ {
+ desiredPolicy = (ExclusivityPolicy)desired;
+ }
+ else if (desired instanceof String)
+ {
+ desiredPolicy = ExclusivityPolicy.valueOf((String)desired);
+ }
+ else
+ {
+ throw new IllegalArgumentException("Cannot set " + Queue.EXCLUSIVE + " property to type " + desired.getClass().getName());
+ }
+ try
+ {
+ setExclusivityPolicy(desiredPolicy);
+ }
+ catch (MessageSource.ExistingConsumerPreventsExclusive existingConsumerPreventsExclusive)
+ {
+ throw new IllegalArgumentException("Unable to set exclusivity policy to " + desired + " as an existing combinations of consumers prevents this");
+ }
+ return true;
+
+ }
+ else if(MESSAGE_GROUP_KEY.equals(name))
+ {
+ // TODO
+ }
+ else if(MESSAGE_GROUP_SHARED_GROUPS.equals(name))
+ {
+ // TODO
+ }
+ else if(LVQ_KEY.equals(name))
+ {
+ // TODO
+ }
+ else if(MAXIMUM_DELIVERY_ATTEMPTS.equals(name))
+ {
+ setMaximumDeliveryCount((Integer) desired);
+ return true;
+ }
+ else if(NO_LOCAL.equals(name))
+ {
+ // TODO
+ }
+ else if(OWNER.equals(name))
+ {
+ // TODO
+ }
+ else if(QUEUE_FLOW_CONTROL_SIZE_BYTES.equals(name))
+ {
+ setCapacity((Long) desired);
+ return true;
+ }
+ else if(QUEUE_FLOW_RESUME_SIZE_BYTES.equals(name))
+ {
+ setFlowResumeCapacity((Long) desired);
+ return true;
+ }
+ else if(QUEUE_FLOW_STOPPED.equals(name))
+ {
+ // TODO
+ }
+ else if(SORT_KEY.equals(name))
+ {
+ // TODO
+ }
+ else if(QUEUE_TYPE.equals(name))
+ {
+ // TODO
+ }
+ else if (DESCRIPTION.equals(name))
+ {
+ setDescription((String) desired);
+ return true;
+ }
+
+ return super.changeAttribute(name, expected, desired);
+ }
+ finally
+ {
+ if (isDurable())
+ {
+ DurableConfigurationStoreHelper.updateQueue(this.getVirtualHost().getDurableConfigurationStore(),
+ this);
+ }
+ }
+ }
+
+ @Override
+ public Collection<String> getAttributeNames()
+ {
+ return getAttributeNames(getClass());
+ }
+ @Override
+ protected void authoriseSetAttribute(String name, Object expected, Object desired) throws AccessControlException
+ {
+ _virtualHost.getSecurityManager().authoriseUpdate(this);
+ }
+
+ @Override
+ protected void authoriseSetAttributes(Map<String, Object> attributes) throws AccessControlException
+ {
+ _virtualHost.getSecurityManager().authoriseUpdate(this);
+ }
+
+ @SuppressWarnings("serial")
+ static final Map<String, Type> ATTRIBUTE_TYPES = Collections.unmodifiableMap(new HashMap<String, Type>(){{
+ put(ALERT_REPEAT_GAP, Long.class);
+ put(ALERT_THRESHOLD_MESSAGE_AGE, Long.class);
+ put(ALERT_THRESHOLD_MESSAGE_SIZE, Long.class);
+ put(ALERT_THRESHOLD_QUEUE_DEPTH_MESSAGES, Long.class);
+ put(ALERT_THRESHOLD_QUEUE_DEPTH_BYTES, Long.class);
+ put(QUEUE_FLOW_CONTROL_SIZE_BYTES, Long.class);
+ put(QUEUE_FLOW_RESUME_SIZE_BYTES, Long.class);
+ put(MAXIMUM_DELIVERY_ATTEMPTS, Integer.class);
+ put(DESCRIPTION, String.class);
+ }});
+
+ @Override
+ protected void changeAttributes(final Map<String, Object> attributes)
+ {
+ Map<String, Object> convertedAttributes = MapValueConverter.convert(attributes, ATTRIBUTE_TYPES);
+ validateAttributes(convertedAttributes);
+
+ super.changeAttributes(convertedAttributes);
+ }
+
+ private void validateAttributes(Map<String, Object> convertedAttributes)
+ {
+ Long queueFlowControlSize = (Long) convertedAttributes.get(QUEUE_FLOW_CONTROL_SIZE_BYTES);
+ Long queueFlowControlResumeSize = (Long) convertedAttributes.get(QUEUE_FLOW_RESUME_SIZE_BYTES);
+ if (queueFlowControlSize != null || queueFlowControlResumeSize != null )
+ {
+ if (queueFlowControlSize == null)
+ {
+ queueFlowControlSize = (Long)getAttribute(QUEUE_FLOW_CONTROL_SIZE_BYTES);
+ }
+ if (queueFlowControlResumeSize == null)
+ {
+ queueFlowControlResumeSize = (Long)getAttribute(QUEUE_FLOW_RESUME_SIZE_BYTES);
+ }
+ if (queueFlowControlResumeSize > queueFlowControlSize)
+ {
+ throw new IllegalConfigurationException("Flow resume size can't be greater than flow control size");
+ }
+ }
+ for (Map.Entry<String, Object> entry: convertedAttributes.entrySet())
+ {
+ Object value = entry.getValue();
+ if (value instanceof Number && ((Number)value).longValue() < 0)
+ {
+ throw new IllegalConfigurationException("Only positive integer value can be specified for the attribute "
+ + entry.getKey());
+ }
+ }
+ }
+
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AssignedConsumerMessageGroupManager.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AssignedConsumerMessageGroupManager.java
index d8209e66ca..827d44dfb3 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AssignedConsumerMessageGroupManager.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/AssignedConsumerMessageGroupManager.java
@@ -28,13 +28,13 @@ import java.util.Iterator;
import java.util.concurrent.ConcurrentHashMap;
-public class AssignedConsumerMessageGroupManager<E extends QueueEntryImpl<E,Q,L>, Q extends AbstractQueue<E,Q,L>, L extends QueueEntryListBase<E,Q,L>> implements MessageGroupManager<E,Q,L>
+public class AssignedConsumerMessageGroupManager implements MessageGroupManager
{
private static final Logger _logger = LoggerFactory.getLogger(AssignedConsumerMessageGroupManager.class);
private final String _groupId;
- private final ConcurrentHashMap<Integer, QueueConsumer> _groupMap = new ConcurrentHashMap<Integer, QueueConsumer>();
+ private final ConcurrentHashMap<Integer, QueueConsumer<?>> _groupMap = new ConcurrentHashMap<Integer, QueueConsumer<?>>();
private final int _groupMask;
public AssignedConsumerMessageGroupManager(final String groupId, final int maxGroups)
@@ -53,18 +53,18 @@ public class AssignedConsumerMessageGroupManager<E extends QueueEntryImpl<E,Q,L>
return val;
}
- public QueueConsumer getAssignedConsumer(final E entry)
+ public QueueConsumer<?> getAssignedConsumer(final QueueEntry entry)
{
Object groupVal = entry.getMessage().getMessageHeader().getHeader(_groupId);
return groupVal == null ? null : _groupMap.get(groupVal.hashCode() & _groupMask);
}
- public boolean acceptMessage(QueueConsumer<?,E,Q,L> sub, E entry)
+ public boolean acceptMessage(QueueConsumer<?> sub, QueueEntry entry)
{
return assignMessage(sub, entry) && entry.acquire(sub);
}
- private boolean assignMessage(QueueConsumer sub, E entry)
+ private boolean assignMessage(QueueConsumer<?> sub, QueueEntry entry)
{
Object groupVal = entry.getMessage().getMessageHeader().getHeader(_groupId);
if(groupVal == null)
@@ -98,24 +98,24 @@ public class AssignedConsumerMessageGroupManager<E extends QueueEntryImpl<E,Q,L>
}
}
- public E findEarliestAssignedAvailableEntry(QueueConsumer sub)
+ public QueueEntry findEarliestAssignedAvailableEntry(QueueConsumer<?> sub)
{
EntryFinder visitor = new EntryFinder(sub);
sub.getQueue().visit(visitor);
return visitor.getEntry();
}
- private class EntryFinder implements QueueEntryVisitor<E>
+ private class EntryFinder implements QueueEntryVisitor
{
- private E _entry;
- private QueueConsumer _sub;
+ private QueueEntry _entry;
+ private QueueConsumer<?> _sub;
- public EntryFinder(final QueueConsumer sub)
+ public EntryFinder(final QueueConsumer<?> sub)
{
_sub = sub;
}
- public boolean visit(final E entry)
+ public boolean visit(final QueueEntry entry)
{
if(!entry.isAvailable())
{
@@ -129,7 +129,7 @@ public class AssignedConsumerMessageGroupManager<E extends QueueEntryImpl<E,Q,L>
}
Integer group = groupId.hashCode() & _groupMask;
- Consumer assignedSub = _groupMap.get(group);
+ QueueConsumer<?> assignedSub = _groupMap.get(group);
if(assignedSub == _sub)
{
_entry = entry;
@@ -141,15 +141,15 @@ public class AssignedConsumerMessageGroupManager<E extends QueueEntryImpl<E,Q,L>
}
}
- public E getEntry()
+ public QueueEntry getEntry()
{
return _entry;
}
}
- public void clearAssignments(QueueConsumer sub)
+ public void clearAssignments(QueueConsumer<?> sub)
{
- Iterator<QueueConsumer> subIter = _groupMap.values().iterator();
+ Iterator<QueueConsumer<?>> subIter = _groupMap.values().iterator();
while(subIter.hasNext())
{
if(subIter.next() == sub)
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/BaseQueue.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/BaseQueue.java
index 4158e51d2f..3bc6cbd625 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/BaseQueue.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/BaseQueue.java
@@ -27,9 +27,9 @@ import org.apache.qpid.server.message.ServerMessage;
import org.apache.qpid.server.store.TransactionLogResource;
import org.apache.qpid.server.util.Action;
-public interface BaseQueue<C extends Consumer> extends TransactionLogResource
+public interface BaseQueue extends TransactionLogResource
{
- void enqueue(ServerMessage message, Action<? super MessageInstance<?,C>> action);
+ void enqueue(ServerMessage message, Action<? super MessageInstance> action);
boolean isDurable();
boolean isDeleted();
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/ConflationQueue.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/ConflationQueue.java
index 1ffa404caf..dd5c6ea119 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/ConflationQueue.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/ConflationQueue.java
@@ -28,7 +28,7 @@ import org.apache.qpid.server.protocol.AMQSessionModel;
import org.apache.qpid.server.util.MapValueConverter;
import org.apache.qpid.server.virtualhost.VirtualHost;
-public class ConflationQueue extends AbstractQueue<ConflationQueueList.ConflationQueueEntry, ConflationQueue, ConflationQueueList>
+public class ConflationQueue extends AbstractQueue
{
public static final String DEFAULT_LVQ_KEY = "qpid.LVQ_key";
@@ -52,7 +52,7 @@ public class ConflationQueue extends AbstractQueue<ConflationQueueList.Conflatio
public String getConflationKey()
{
- return getEntries().getConflationKey();
+ return ((ConflationQueueList)getEntries()).getConflationKey();
}
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/ConflationQueueList.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/ConflationQueueList.java
index a98a4ac144..c234b9cbb3 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/ConflationQueueList.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/ConflationQueueList.java
@@ -32,17 +32,17 @@ import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicReference;
-public class ConflationQueueList extends OrderedQueueEntryList<ConflationQueueList.ConflationQueueEntry, ConflationQueue, ConflationQueueList>
+public class ConflationQueueList extends OrderedQueueEntryList
{
private static final Logger LOGGER = LoggerFactory.getLogger(ConflationQueueList.class);
- private static final HeadCreator<ConflationQueueList.ConflationQueueEntry, ConflationQueue, ConflationQueueList> HEAD_CREATOR = new HeadCreator<ConflationQueueList.ConflationQueueEntry, ConflationQueue, ConflationQueueList>()
+ private static final HeadCreator HEAD_CREATOR = new HeadCreator()
{
@Override
- public ConflationQueueEntry createHead(final ConflationQueueList list)
+ public ConflationQueueEntry createHead(final QueueEntryList list)
{
- return list.createHead();
+ return ((ConflationQueueList)list).createHead();
}
};
@@ -75,13 +75,15 @@ public class ConflationQueueList extends OrderedQueueEntryList<ConflationQueueLi
return new ConflationQueueEntry(this, message);
}
+
+
/**
* Updates the list using super.add and also updates {@link #_latestValuesMap} and discards entries as necessary.
*/
@Override
public ConflationQueueEntry add(final ServerMessage message)
{
- final ConflationQueueEntry addedEntry = super.add(message);
+ final ConflationQueueEntry addedEntry = (ConflationQueueEntry) super.add(message);
final Object keyValue = message.getMessageHeader().getHeader(_conflationKey);
if (keyValue != null)
@@ -192,7 +194,7 @@ public class ConflationQueueList extends OrderedQueueEntryList<ConflationQueueLi
}
}
- final class ConflationQueueEntry extends OrderedQueueEntry<ConflationQueueEntry, ConflationQueue, ConflationQueueList>
+ final class ConflationQueueEntry extends OrderedQueueEntry
{
private AtomicReference<ConflationQueueEntry> _latestValueReference;
@@ -252,7 +254,7 @@ public class ConflationQueueList extends OrderedQueueEntryList<ConflationQueueLi
return Collections.unmodifiableMap(_latestValuesMap);
}
- static class Factory implements QueueEntryListFactory<ConflationQueueList.ConflationQueueEntry, ConflationQueue, ConflationQueueList>
+ static class Factory implements QueueEntryListFactory
{
private final String _conflationKey;
@@ -262,9 +264,9 @@ public class ConflationQueueList extends OrderedQueueEntryList<ConflationQueueLi
}
@Override
- public ConflationQueueList createQueueEntryList(final ConflationQueue queue)
+ public ConflationQueueList createQueueEntryList(final AMQQueue<?> queue)
{
- return new ConflationQueueList(queue, _conflationKey);
+ return new ConflationQueueList((ConflationQueue)queue, _conflationKey);
}
}
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/DefinedGroupMessageGroupManager.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/DefinedGroupMessageGroupManager.java
index ebf8058584..c64291faec 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/DefinedGroupMessageGroupManager.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/DefinedGroupMessageGroupManager.java
@@ -32,22 +32,22 @@ import org.apache.qpid.server.message.ServerMessage;
import java.util.HashMap;
import java.util.Map;
-public class DefinedGroupMessageGroupManager<E extends QueueEntryImpl<E,Q,L>, Q extends AbstractQueue<E,Q,L>, L extends QueueEntryListBase<E,Q,L>> implements MessageGroupManager<E,Q,L>
+public class DefinedGroupMessageGroupManager implements MessageGroupManager
{
private static final Logger _logger = LoggerFactory.getLogger(DefinedGroupMessageGroupManager.class);
private final String _groupId;
private final String _defaultGroup;
private final Map<Object, Group> _groupMap = new HashMap<Object, Group>();
- private final ConsumerResetHelper<E,Q,L> _resetHelper;
+ private final ConsumerResetHelper _resetHelper;
private final class Group
{
private final Object _group;
- private QueueConsumer<?,E,Q,L> _consumer;
+ private QueueConsumer<?> _consumer;
private int _activeCount;
- private Group(final Object key, final QueueConsumer<?,E,Q,L> consumer)
+ private Group(final Object key, final QueueConsumer<?> consumer)
{
_group = key;
_consumer = consumer;
@@ -104,7 +104,7 @@ public class DefinedGroupMessageGroupManager<E extends QueueEntryImpl<E,Q,L>, Q
return !(_consumer == null || (_activeCount == 0 && _consumer.isClosed()));
}
- public QueueConsumer<?,E,Q,L> getConsumer()
+ public QueueConsumer<?> getConsumer()
{
return _consumer;
}
@@ -120,14 +120,14 @@ public class DefinedGroupMessageGroupManager<E extends QueueEntryImpl<E,Q,L>, Q
}
}
- public DefinedGroupMessageGroupManager(final String groupId, String defaultGroup, ConsumerResetHelper<E,Q,L> resetHelper)
+ public DefinedGroupMessageGroupManager(final String groupId, String defaultGroup, ConsumerResetHelper resetHelper)
{
_groupId = groupId;
_defaultGroup = defaultGroup;
_resetHelper = resetHelper;
}
- public synchronized QueueConsumer<?,E,Q,L> getAssignedConsumer(final E entry)
+ public synchronized QueueConsumer<?> getAssignedConsumer(final QueueEntry entry)
{
Object groupId = getKey(entry);
@@ -135,12 +135,12 @@ public class DefinedGroupMessageGroupManager<E extends QueueEntryImpl<E,Q,L>, Q
return group == null || !group.isValid() ? null : group.getConsumer();
}
- public synchronized boolean acceptMessage(final QueueConsumer<?,E,Q,L> sub, final E entry)
+ public synchronized boolean acceptMessage(final QueueConsumer<?> sub, final QueueEntry entry)
{
return assignMessage(sub, entry) && entry.acquire(sub);
}
- private boolean assignMessage(final QueueConsumer<?,E,Q,L> sub, final E entry)
+ private boolean assignMessage(final QueueConsumer<?> sub, final QueueEntry entry)
{
Object groupId = getKey(entry);
Group group = _groupMap.get(groupId);
@@ -173,24 +173,24 @@ public class DefinedGroupMessageGroupManager<E extends QueueEntryImpl<E,Q,L>, Q
}
}
- public synchronized E findEarliestAssignedAvailableEntry(final QueueConsumer<?,E,Q,L> sub)
+ public synchronized QueueEntry findEarliestAssignedAvailableEntry(final QueueConsumer<?> sub)
{
EntryFinder visitor = new EntryFinder(sub);
sub.getQueue().visit(visitor);
return visitor.getEntry();
}
- private class EntryFinder implements QueueEntryVisitor<E>
+ private class EntryFinder implements QueueEntryVisitor
{
- private E _entry;
+ private QueueEntry _entry;
private QueueConsumer _sub;
- public EntryFinder(final QueueConsumer sub)
+ public EntryFinder(final QueueConsumer<?> sub)
{
_sub = sub;
}
- public boolean visit(final E entry)
+ public boolean visit(final QueueEntry entry)
{
if(!entry.isAvailable())
{
@@ -211,18 +211,18 @@ public class DefinedGroupMessageGroupManager<E extends QueueEntryImpl<E,Q,L>, Q
}
}
- public E getEntry()
+ public QueueEntry getEntry()
{
return _entry;
}
}
- public void clearAssignments(final QueueConsumer sub)
+ public void clearAssignments(final QueueConsumer<?> sub)
{
}
- private Object getKey(E entry)
+ private Object getKey(QueueEntry entry)
{
ServerMessage message = entry.getMessage();
AMQMessageHeader messageHeader = message == null ? null : message.getMessageHeader();
@@ -234,7 +234,7 @@ public class DefinedGroupMessageGroupManager<E extends QueueEntryImpl<E,Q,L>, Q
return groupVal;
}
- private class GroupStateChangeListener implements StateChangeListener<MessageInstance<?, ? extends QueueConsumer>, QueueEntry.State>
+ private class GroupStateChangeListener implements StateChangeListener<MessageInstance, MessageInstance.State>
{
private final Group _group;
@@ -243,7 +243,7 @@ public class DefinedGroupMessageGroupManager<E extends QueueEntryImpl<E,Q,L>, Q
_group = group;
}
- public void stateChanged(final MessageInstance<?, ? extends QueueConsumer> entry,
+ public void stateChanged(final MessageInstance entry,
final MessageInstance.State oldState,
final MessageInstance.State newState)
{
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/MessageGroupManager.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/MessageGroupManager.java
index 820114f33f..3776bc1f2e 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/MessageGroupManager.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/MessageGroupManager.java
@@ -20,20 +20,20 @@
*/
package org.apache.qpid.server.queue;
-public interface MessageGroupManager<E extends QueueEntryImpl<E,Q,L>, Q extends AbstractQueue<E,Q,L>, L extends QueueEntryListBase<E,Q,L>>
+public interface MessageGroupManager
{
- public interface ConsumerResetHelper<E extends QueueEntryImpl<E,Q,L>, Q extends AbstractQueue<E,Q,L>, L extends QueueEntryListBase<E,Q,L>>
+ public interface ConsumerResetHelper
{
- public void resetSubPointersForGroups(QueueConsumer<?,E,Q,L> consumer, boolean clearAssignments);
+ public void resetSubPointersForGroups(QueueConsumer<?> consumer, boolean clearAssignments);
- boolean isEntryAheadOfConsumer(E entry, QueueConsumer<?,E,Q,L> sub);
+ boolean isEntryAheadOfConsumer(QueueEntry entry, QueueConsumer<?> sub);
}
- QueueConsumer getAssignedConsumer(E entry);
+ QueueConsumer getAssignedConsumer(QueueEntry entry);
- boolean acceptMessage(QueueConsumer<?,E,Q,L> sub, E entry);
+ boolean acceptMessage(QueueConsumer<?> sub, QueueEntry entry);
- E findEarliestAssignedAvailableEntry(QueueConsumer<?,E,Q,L> sub);
+ QueueEntry findEarliestAssignedAvailableEntry(QueueConsumer<?> sub);
- void clearAssignments(QueueConsumer sub);
+ void clearAssignments(QueueConsumer<?> sub);
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/NotificationCheck.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/NotificationCheck.java
index 566cdd0ea5..d3ab8bec32 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/NotificationCheck.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/NotificationCheck.java
@@ -1,150 +1,152 @@
-/*
- *
- * 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 org.apache.log4j.Logger;
-import org.apache.qpid.server.message.ServerMessage;
-
-public enum NotificationCheck
-{
-
- MESSAGE_COUNT_ALERT
- {
- public boolean notifyIfNecessary(ServerMessage<?> msg, AMQQueue queue, AMQQueue.NotificationListener listener)
- {
- int msgCount;
- final long maximumMessageCount = queue.getMaximumMessageCount();
- if (maximumMessageCount!= 0 && (msgCount = queue.getMessageCount()) >= maximumMessageCount)
- {
- String notificationMsg = msgCount + ": Maximum count on queue threshold ("+ maximumMessageCount +") breached.";
-
- logNotification(this, queue, notificationMsg);
- listener.notifyClients(this, queue, notificationMsg);
- return true;
- }
- return false;
- }
- },
- MESSAGE_SIZE_ALERT(true)
- {
- public boolean notifyIfNecessary(ServerMessage<?> msg, AMQQueue queue, AMQQueue.NotificationListener listener)
- {
- final long maximumMessageSize = queue.getMaximumMessageSize();
- if(maximumMessageSize != 0)
- {
- // Check for threshold message size
- long messageSize;
- messageSize = (msg == null) ? 0 : msg.getSize();
-
- if (messageSize >= maximumMessageSize)
- {
- String notificationMsg = messageSize + "b : Maximum message size threshold ("+ maximumMessageSize +") breached. [Message ID=" + msg.getMessageNumber() + "]";
-
- logNotification(this, queue, notificationMsg);
- listener.notifyClients(this, queue, notificationMsg);
- return true;
- }
- }
- return false;
- }
-
- },
- QUEUE_DEPTH_ALERT
- {
- public boolean notifyIfNecessary(ServerMessage<?> msg, AMQQueue queue, AMQQueue.NotificationListener listener)
- {
- // Check for threshold queue depth in bytes
- final long maximumQueueDepth = queue.getMaximumQueueDepth();
-
- if(maximumQueueDepth != 0)
- {
- final long queueDepth = queue.getQueueDepth();
-
- if (queueDepth >= maximumQueueDepth)
- {
- String notificationMsg = (queueDepth>>10) + "Kb : Maximum queue depth threshold ("+(maximumQueueDepth>>10)+"Kb) breached.";
-
- logNotification(this, queue, notificationMsg);
- listener.notifyClients(this, queue, notificationMsg);
- return true;
- }
- }
- return false;
- }
-
- },
- MESSAGE_AGE_ALERT
- {
- public boolean notifyIfNecessary(ServerMessage<?> msg, AMQQueue queue, AMQQueue.NotificationListener listener)
- {
-
- final long maxMessageAge = queue.getMaximumMessageAge();
- if(maxMessageAge != 0)
- {
- final long currentTime = System.currentTimeMillis();
- final long thresholdTime = currentTime - maxMessageAge;
- final long firstArrivalTime = queue.getOldestMessageArrivalTime();
-
- if(firstArrivalTime < thresholdTime)
- {
- long oldestAge = currentTime - firstArrivalTime;
- String notificationMsg = (oldestAge/1000) + "s : Maximum age on queue threshold ("+(maxMessageAge /1000)+"s) breached.";
-
- logNotification(this, queue, notificationMsg);
- listener.notifyClients(this, queue, notificationMsg);
-
- return true;
- }
- }
- return false;
-
- }
-
- }
- ;
-
- private static final Logger LOGGER = Logger.getLogger(NotificationCheck.class);
-
- private final boolean _messageSpecific;
-
- NotificationCheck()
- {
- this(false);
- }
-
- NotificationCheck(boolean messageSpecific)
- {
- _messageSpecific = messageSpecific;
- }
-
- public boolean isMessageSpecific()
- {
- return _messageSpecific;
- }
-
- public abstract boolean notifyIfNecessary(ServerMessage<?> msg, AMQQueue queue, AMQQueue.NotificationListener listener);
-
- //A bit of a hack, only for use until we do the logging listener
- private static void logNotification(NotificationCheck notification, AMQQueue queue, String notificationMsg)
- {
- LOGGER.info(notification.name() + " On Queue " + queue.getName() + " - " + notificationMsg);
- }
-}
+/*
+ *
+ * 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 org.apache.log4j.Logger;
+import org.apache.qpid.server.message.ServerMessage;
+import org.apache.qpid.server.model.QueueNotificationListener;
+
+
+public enum NotificationCheck
+{
+
+ MESSAGE_COUNT_ALERT
+ {
+ public boolean notifyIfNecessary(ServerMessage<?> msg, AMQQueue queue, QueueNotificationListener listener)
+ {
+ int msgCount;
+ final long maximumMessageCount = queue.getAlertThresholdQueueDepthMessages();
+ if (maximumMessageCount!= 0 && (msgCount = queue.getQueueDepthMessages()) >= maximumMessageCount)
+ {
+ String notificationMsg = msgCount + ": Maximum count on queue threshold ("+ maximumMessageCount +") breached.";
+
+ logNotification(this, queue, notificationMsg);
+ listener.notifyClients(this, queue, notificationMsg);
+ return true;
+ }
+ return false;
+ }
+ },
+ MESSAGE_SIZE_ALERT(true)
+ {
+ public boolean notifyIfNecessary(ServerMessage<?> msg, AMQQueue queue, QueueNotificationListener listener)
+ {
+ final long maximumMessageSize = queue.getAlertThresholdMessageSize();
+ if(maximumMessageSize != 0)
+ {
+ // Check for threshold message size
+ long messageSize;
+ messageSize = (msg == null) ? 0 : msg.getSize();
+
+ if (messageSize >= maximumMessageSize)
+ {
+ String notificationMsg = messageSize + "b : Maximum message size threshold ("+ maximumMessageSize +") breached. [Message ID=" + msg.getMessageNumber() + "]";
+
+ logNotification(this, queue, notificationMsg);
+ listener.notifyClients(this, queue, notificationMsg);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ },
+ QUEUE_DEPTH_ALERT
+ {
+ public boolean notifyIfNecessary(ServerMessage<?> msg, AMQQueue queue, QueueNotificationListener listener)
+ {
+ // Check for threshold queue depth in bytes
+ final long maximumQueueDepth = queue.getAlertThresholdQueueDepthBytes();
+
+ if(maximumQueueDepth != 0)
+ {
+ final long queueDepth = queue.getQueueDepthBytes();
+
+ if (queueDepth >= maximumQueueDepth)
+ {
+ String notificationMsg = (queueDepth>>10) + "Kb : Maximum queue depth threshold ("+(maximumQueueDepth>>10)+"Kb) breached.";
+
+ logNotification(this, queue, notificationMsg);
+ listener.notifyClients(this, queue, notificationMsg);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ },
+ MESSAGE_AGE_ALERT
+ {
+ public boolean notifyIfNecessary(ServerMessage<?> msg, AMQQueue queue, QueueNotificationListener listener)
+ {
+
+ final long maxMessageAge = queue.getAlertThresholdMessageAge();
+ if(maxMessageAge != 0)
+ {
+ final long currentTime = System.currentTimeMillis();
+ final long thresholdTime = currentTime - maxMessageAge;
+ final long firstArrivalTime = queue.getOldestMessageArrivalTime();
+
+ if(firstArrivalTime < thresholdTime)
+ {
+ long oldestAge = currentTime - firstArrivalTime;
+ String notificationMsg = (oldestAge/1000) + "s : Maximum age on queue threshold ("+(maxMessageAge /1000)+"s) breached.";
+
+ logNotification(this, queue, notificationMsg);
+ listener.notifyClients(this, queue, notificationMsg);
+
+ return true;
+ }
+ }
+ return false;
+
+ }
+
+ }
+ ;
+
+ private static final Logger LOGGER = Logger.getLogger(NotificationCheck.class);
+
+ private final boolean _messageSpecific;
+
+ NotificationCheck()
+ {
+ this(false);
+ }
+
+ NotificationCheck(boolean messageSpecific)
+ {
+ _messageSpecific = messageSpecific;
+ }
+
+ public boolean isMessageSpecific()
+ {
+ return _messageSpecific;
+ }
+
+ public abstract boolean notifyIfNecessary(ServerMessage<?> msg, AMQQueue queue, QueueNotificationListener listener);
+
+ //A bit of a hack, only for use until we do the logging listener
+ private static void logNotification(NotificationCheck notification, AMQQueue queue, String notificationMsg)
+ {
+ LOGGER.info(notification.name() + " On Queue " + queue.getName() + " - " + notificationMsg);
+ }
+}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/OrderedQueueEntry.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/OrderedQueueEntry.java
index 7e4ed5401d..6532b1224b 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/OrderedQueueEntry.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/OrderedQueueEntry.java
@@ -24,43 +24,45 @@ import org.apache.qpid.server.message.ServerMessage;
import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
-public abstract class OrderedQueueEntry<E extends OrderedQueueEntry<E,Q,L>, Q extends AbstractQueue<E,Q,L>, L extends OrderedQueueEntryList<E,Q,L>> extends QueueEntryImpl<E,Q,L>
+public abstract class OrderedQueueEntry extends QueueEntryImpl
{
static final AtomicReferenceFieldUpdater<OrderedQueueEntry, OrderedQueueEntry>
_nextUpdater =
AtomicReferenceFieldUpdater.newUpdater
(OrderedQueueEntry.class, OrderedQueueEntry.class, "_next");
- private volatile E _next;
+ private volatile OrderedQueueEntry _next;
- public OrderedQueueEntry(L queueEntryList)
+ public OrderedQueueEntry(OrderedQueueEntryList queueEntryList)
{
super(queueEntryList);
}
- public OrderedQueueEntry(L queueEntryList, ServerMessage message, final long entryId)
+ public OrderedQueueEntry(OrderedQueueEntryList queueEntryList, ServerMessage message, final long entryId)
{
super(queueEntryList, message, entryId);
}
- public OrderedQueueEntry(L queueEntryList, ServerMessage message)
+ public OrderedQueueEntry(OrderedQueueEntryList queueEntryList, ServerMessage message)
{
super(queueEntryList, message);
}
- public E getNextNode()
+ @Override
+ public OrderedQueueEntry getNextNode()
{
return _next;
}
- public E getNextValidEntry()
+ @Override
+ public OrderedQueueEntry getNextValidEntry()
{
- E next = getNextNode();
+ OrderedQueueEntry next = getNextNode();
while(next != null && next.isDeleted())
{
- final E newNext = next.getNextNode();
+ final OrderedQueueEntry newNext = next.getNextNode();
if(newNext != null)
{
OrderedQueueEntryList._nextUpdater.compareAndSet(this,next, newNext);
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/OrderedQueueEntryList.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/OrderedQueueEntryList.java
index a8bf3eecca..47fd5c2fa3 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/OrderedQueueEntryList.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/OrderedQueueEntryList.java
@@ -26,13 +26,12 @@ import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.atomic.AtomicReference;
import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
-public abstract class OrderedQueueEntryList<E extends OrderedQueueEntry<E,Q,L>, Q extends AbstractQueue<E,Q,L>, L extends OrderedQueueEntryList<E,Q,L>> implements
- QueueEntryListBase<E,Q,L>
+public abstract class OrderedQueueEntryList implements QueueEntryList
{
- private final E _head;
+ private final OrderedQueueEntry _head;
- private volatile E _tail;
+ private volatile OrderedQueueEntry _tail;
static final AtomicReferenceFieldUpdater<OrderedQueueEntryList, OrderedQueueEntry>
_tailUpdater =
@@ -40,27 +39,27 @@ public abstract class OrderedQueueEntryList<E extends OrderedQueueEntry<E,Q,L>,
(OrderedQueueEntryList.class, OrderedQueueEntry.class, "_tail");
- private final Q _queue;
+ private final AMQQueue _queue;
static final AtomicReferenceFieldUpdater<OrderedQueueEntry, OrderedQueueEntry>
_nextUpdater = OrderedQueueEntry._nextUpdater;
private AtomicLong _scavenges = new AtomicLong(0L);
private final long _scavengeCount = Integer.getInteger("qpid.queue.scavenge_count", 50);
- private final AtomicReference<E> _unscavengedHWM = new AtomicReference<E>();
+ private final AtomicReference<QueueEntry> _unscavengedHWM = new AtomicReference<QueueEntry>();
- public OrderedQueueEntryList(Q queue, HeadCreator<E,Q,L> headCreator)
+ public OrderedQueueEntryList(AMQQueue queue, HeadCreator headCreator)
{
_queue = queue;
- _head = headCreator.createHead((L)this);
+ _head = headCreator.createHead(this);
_tail = _head;
}
void scavenge()
{
- E hwm = _unscavengedHWM.getAndSet(null);
- E next = _head.getNextValidEntry();
+ QueueEntry hwm = _unscavengedHWM.getAndSet(null);
+ QueueEntry next = _head.getNextValidEntry();
if(hwm != null)
{
@@ -72,15 +71,15 @@ public abstract class OrderedQueueEntryList<E extends OrderedQueueEntry<E,Q,L>,
}
- public Q getQueue()
+ public AMQQueue getQueue()
{
return _queue;
}
- public E add(ServerMessage message)
+ public QueueEntry add(ServerMessage message)
{
- E node = createQueueEntry(message);
+ OrderedQueueEntry node = createQueueEntry(message);
for (;;)
{
OrderedQueueEntry tail = _tail;
@@ -105,23 +104,24 @@ public abstract class OrderedQueueEntryList<E extends OrderedQueueEntry<E,Q,L>,
}
}
- abstract protected E createQueueEntry(ServerMessage<?> message);
+ abstract protected OrderedQueueEntry createQueueEntry(ServerMessage<?> message);
- public E next(E node)
+ @Override
+ public QueueEntry next(QueueEntry node)
{
return node.getNextValidEntry();
}
- public static interface HeadCreator<E extends QueueEntryImpl<E,Q,L>, Q extends AbstractQueue<E,Q,L>, L extends QueueEntryListBase<E,Q,L>>
+ public static interface HeadCreator
{
- E createHead(L list);
+ OrderedQueueEntry createHead(QueueEntryList list);
}
- public static class QueueEntryIteratorImpl<E extends OrderedQueueEntry<E,Q,L>, Q extends AbstractQueue<E,Q,L>, L extends OrderedQueueEntryList<E,Q,L>> implements QueueEntryIterator<E,Q,L,QueueConsumer<?,E,Q,L>>
+ public static class QueueEntryIteratorImpl implements QueueEntryIterator
{
- private E _lastNode;
+ private QueueEntry _lastNode;
- QueueEntryIteratorImpl(E startNode)
+ QueueEntryIteratorImpl(QueueEntry startNode)
{
_lastNode = startNode;
}
@@ -131,14 +131,14 @@ public abstract class OrderedQueueEntryList<E extends OrderedQueueEntry<E,Q,L>,
return _lastNode.getNextValidEntry() == null;
}
- public E getNode()
+ public QueueEntry getNode()
{
return _lastNode;
}
public boolean advance()
{
- E nextValidNode = _lastNode.getNextValidEntry();
+ QueueEntry nextValidNode = _lastNode.getNextValidEntry();
if(nextValidNode != null)
{
@@ -149,26 +149,26 @@ public abstract class OrderedQueueEntryList<E extends OrderedQueueEntry<E,Q,L>,
}
}
- public QueueEntryIterator<E,Q,L,QueueConsumer<?,E,Q,L>> iterator()
+ public QueueEntryIterator iterator()
{
- return new QueueEntryIteratorImpl<E,Q,L>(_head);
+ return new QueueEntryIteratorImpl(_head);
}
- public E getHead()
+ public QueueEntry getHead()
{
return _head;
}
- public void entryDeleted(E queueEntry)
+ public void entryDeleted(QueueEntry queueEntry)
{
- E next = _head.getNextNode();
- E newNext = _head.getNextValidEntry();
+ QueueEntry next = _head.getNextNode();
+ QueueEntry newNext = _head.getNextValidEntry();
// the head of the queue has not been deleted, hence the deletion must have been mid queue.
if (next == newNext)
{
- E unscavengedHWM = _unscavengedHWM.get();
+ QueueEntry unscavengedHWM = _unscavengedHWM.get();
while(unscavengedHWM == null || unscavengedHWM.compareTo(queueEntry)<0)
{
_unscavengedHWM.compareAndSet(unscavengedHWM, queueEntry);
@@ -182,7 +182,7 @@ public abstract class OrderedQueueEntryList<E extends OrderedQueueEntry<E,Q,L>,
}
else
{
- E unscavengedHWM = _unscavengedHWM.get();
+ QueueEntry unscavengedHWM = _unscavengedHWM.get();
if(unscavengedHWM != null && (next == null || unscavengedHWM.compareTo(next) < 0))
{
_unscavengedHWM.compareAndSet(unscavengedHWM, null);
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/OutOfOrderQueue.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/OutOfOrderQueue.java
index 20229ec3ff..d0a001677d 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/OutOfOrderQueue.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/OutOfOrderQueue.java
@@ -24,30 +24,30 @@ import org.apache.qpid.server.virtualhost.VirtualHost;
import java.util.Map;
-public abstract class OutOfOrderQueue<E extends QueueEntryImpl<E,Q,L>, Q extends OutOfOrderQueue<E,Q,L>, L extends QueueEntryListBase<E,Q,L>> extends AbstractQueue<E,Q,L>
+public abstract class OutOfOrderQueue extends AbstractQueue
{
protected OutOfOrderQueue(VirtualHost virtualHost,
Map<String, Object> attributes,
- QueueEntryListFactory<E, Q, L> entryListFactory)
+ QueueEntryListFactory entryListFactory)
{
super(virtualHost, attributes, entryListFactory);
}
@Override
- protected void checkConsumersNotAheadOfDelivery(final E entry)
+ protected void checkConsumersNotAheadOfDelivery(final QueueEntry entry)
{
// check that all consumers are not in advance of the entry
- QueueConsumerList.ConsumerNodeIterator<E,Q,L> subIter = getConsumerList().iterator();
+ QueueConsumerList.ConsumerNodeIterator subIter = getConsumerList().iterator();
while(subIter.advance() && !entry.isAcquired())
{
- final QueueConsumer<?,E,Q,L> consumer = subIter.getNode().getConsumer();
+ final QueueConsumer<?> consumer = subIter.getNode().getConsumer();
if(!consumer.isClosed())
{
- QueueContext<E,Q,L> context = consumer.getQueueContext();
+ QueueContext context = consumer.getQueueContext();
if(context != null)
{
- E released = context.getReleasedEntry();
+ QueueEntry released = context.getReleasedEntry();
while(!entry.isAcquired() && (released == null || released.compareTo(entry) > 0))
{
if(QueueContext._releasedUpdater.compareAndSet(context,released,entry))
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/PriorityQueue.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/PriorityQueue.java
index b86d8efe87..c65b0a3060 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/PriorityQueue.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/PriorityQueue.java
@@ -27,7 +27,7 @@ import org.apache.qpid.server.virtualhost.VirtualHost;
import java.util.Map;
-public class PriorityQueue extends OutOfOrderQueue<PriorityQueueList.PriorityQueueEntry, PriorityQueue, PriorityQueueList>
+public class PriorityQueue extends OutOfOrderQueue
{
public static final int DEFAULT_PRIORITY_LEVELS = 10;
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/PriorityQueueList.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/PriorityQueueList.java
index e877983643..d47b7ce2cd 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/PriorityQueueList.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/PriorityQueueList.java
@@ -22,23 +22,23 @@ package org.apache.qpid.server.queue;
import org.apache.qpid.server.message.ServerMessage;
-abstract public class PriorityQueueList extends OrderedQueueEntryList<PriorityQueueList.PriorityQueueEntry, PriorityQueue, PriorityQueueList>
+abstract public class PriorityQueueList extends OrderedQueueEntryList
{
public PriorityQueueList(final PriorityQueue queue,
- final HeadCreator<PriorityQueueEntry, PriorityQueue, PriorityQueueList> headCreator)
+ final HeadCreator headCreator)
{
super(queue, headCreator);
}
static class PriorityQueueMasterList extends PriorityQueueList
{
- private static final HeadCreator<PriorityQueueEntry, PriorityQueue, PriorityQueueList> DUMMY_HEAD_CREATOR =
- new HeadCreator<PriorityQueueEntry, PriorityQueue, PriorityQueueList>()
+ private static final HeadCreator DUMMY_HEAD_CREATOR =
+ new HeadCreator()
{
@Override
- public PriorityQueueEntry createHead(final PriorityQueueList list)
+ public PriorityQueueEntry createHead(final QueueEntryList list)
{
return null;
}
@@ -66,11 +66,13 @@ abstract public class PriorityQueueList extends OrderedQueueEntryList<PriorityQu
return _priorities;
}
+ @Override
public PriorityQueue getQueue()
{
return _queue;
}
+ @Override
public PriorityQueueEntry add(ServerMessage message)
{
int index = message.getMessageHeader().getPriority() - _priorityOffset;
@@ -82,7 +84,7 @@ abstract public class PriorityQueueList extends OrderedQueueEntryList<PriorityQu
{
index = 0;
}
- return _priorityLists[index].add(message);
+ return (PriorityQueueEntry) _priorityLists[index].add(message);
}
@@ -92,13 +94,14 @@ abstract public class PriorityQueueList extends OrderedQueueEntryList<PriorityQu
throw new UnsupportedOperationException();
}
- public PriorityQueueEntry next(PriorityQueueEntry node)
+ @Override
+ public PriorityQueueEntry next(QueueEntry node)
{
- PriorityQueueEntry next = node.getNextValidEntry();
+ PriorityQueueEntry next = (PriorityQueueEntry) node.getNextValidEntry();
if(next == null)
{
- final PriorityQueueList nodeEntryList = node.getQueueEntryList();
+ final PriorityQueueList nodeEntryList = (PriorityQueueList) ((PriorityQueueEntry)node).getQueueEntryList();
int index;
for(index = _priorityLists.length-1; _priorityLists[index] != nodeEntryList; index--)
{
@@ -108,16 +111,16 @@ abstract public class PriorityQueueList extends OrderedQueueEntryList<PriorityQu
while(next == null && index != 0)
{
index--;
- next = _priorityLists[index].getHead().getNextValidEntry();
+ next = (PriorityQueueEntry) _priorityLists[index].getHead().getNextValidEntry();
}
}
return next;
}
- private final class PriorityQueueEntryListIterator implements QueueEntryIterator<PriorityQueueEntry, PriorityQueue, PriorityQueueList, QueueConsumer<?,PriorityQueueEntry, PriorityQueue, PriorityQueueList>>
+ private final class PriorityQueueEntryListIterator implements QueueEntryIterator
{
- private final QueueEntryIterator<PriorityQueueEntry, PriorityQueue, PriorityQueueList,QueueConsumer<?,PriorityQueueEntry, PriorityQueue, PriorityQueueList>>[] _iterators = new QueueEntryIterator[ _priorityLists.length ];
+ private final QueueEntryIterator[] _iterators = new QueueEntryIterator[ _priorityLists.length ];
private PriorityQueueEntry _lastNode;
PriorityQueueEntryListIterator()
@@ -126,10 +129,10 @@ abstract public class PriorityQueueList extends OrderedQueueEntryList<PriorityQu
{
_iterators[i] = _priorityLists[i].iterator();
}
- _lastNode = _iterators[_iterators.length - 1].getNode();
+ _lastNode = (PriorityQueueEntry) _iterators[_iterators.length - 1].getNode();
}
-
+ @Override
public boolean atTail()
{
for(int i = 0; i < _iterators.length; i++)
@@ -142,18 +145,20 @@ abstract public class PriorityQueueList extends OrderedQueueEntryList<PriorityQu
return true;
}
+ @Override
public PriorityQueueEntry getNode()
{
return _lastNode;
}
+ @Override
public boolean advance()
{
for(int i = _iterators.length-1; i >= 0; i--)
{
if(_iterators[i].advance())
{
- _lastNode = _iterators[i].getNode();
+ _lastNode = (PriorityQueueEntry) _iterators[i].getNode();
return true;
}
}
@@ -161,23 +166,26 @@ abstract public class PriorityQueueList extends OrderedQueueEntryList<PriorityQu
}
}
+ @Override
public PriorityQueueEntryListIterator iterator()
{
return new PriorityQueueEntryListIterator();
}
+ @Override
public PriorityQueueEntry getHead()
{
- return _priorityLists[_priorities-1].getHead();
+ return (PriorityQueueEntry) _priorityLists[_priorities-1].getHead();
}
- public void entryDeleted(final PriorityQueueEntry queueEntry)
+ @Override
+ public void entryDeleted(final QueueEntry queueEntry)
{
}
}
- static class Factory implements QueueEntryListFactory<PriorityQueueEntry, PriorityQueue, PriorityQueueList>
+ static class Factory implements QueueEntryListFactory
{
private final int _priorities;
@@ -186,20 +194,20 @@ abstract public class PriorityQueueList extends OrderedQueueEntryList<PriorityQu
_priorities = priorities;
}
- public PriorityQueueList createQueueEntryList(PriorityQueue queue)
+ public PriorityQueueList createQueueEntryList(AMQQueue<?> queue)
{
- return new PriorityQueueMasterList(queue, _priorities);
+ return new PriorityQueueMasterList((PriorityQueue) queue, _priorities);
}
}
static class PriorityQueueEntrySubList extends PriorityQueueList
{
- private static final HeadCreator<PriorityQueueEntry, PriorityQueue, PriorityQueueList> HEAD_CREATOR = new HeadCreator<PriorityQueueEntry, PriorityQueue, PriorityQueueList>()
+ private static final HeadCreator HEAD_CREATOR = new HeadCreator()
{
@Override
- public PriorityQueueEntry createHead(final PriorityQueueList list)
+ public PriorityQueueEntry createHead(final QueueEntryList list)
{
- return new PriorityQueueEntry(list);
+ return new PriorityQueueEntry((PriorityQueueList) list);
}
};
private int _listPriority;
@@ -222,7 +230,7 @@ abstract public class PriorityQueueList extends OrderedQueueEntryList<PriorityQu
}
}
- static class PriorityQueueEntry extends OrderedQueueEntry<PriorityQueueEntry, PriorityQueue, PriorityQueueList>
+ static class PriorityQueueEntry extends OrderedQueueEntry
{
private PriorityQueueEntry(final PriorityQueueList queueEntryList)
{
@@ -235,9 +243,10 @@ abstract public class PriorityQueueList extends OrderedQueueEntryList<PriorityQu
}
@Override
- public int compareTo(final PriorityQueueEntry o)
+ public int compareTo(final QueueEntry o)
{
- PriorityQueueEntrySubList pqel = (PriorityQueueEntrySubList)o.getQueueEntryList();
+ PriorityQueueEntry other = (PriorityQueueEntry)o;
+ PriorityQueueEntrySubList pqel = (PriorityQueueEntrySubList)other.getQueueEntryList();
int otherPriority = pqel.getListPriority();
int thisPriority = ((PriorityQueueEntrySubList) getQueueEntryList()).getListPriority();
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueConsumer.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueConsumer.java
index b2f473f9ff..660d4ec5d6 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueConsumer.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueConsumer.java
@@ -24,37 +24,30 @@ import org.apache.qpid.server.consumer.Consumer;
import org.apache.qpid.server.consumer.ConsumerTarget;
import org.apache.qpid.server.message.MessageInstance;
-interface QueueConsumer<T extends ConsumerTarget, E extends QueueEntryImpl<E,Q,L>, Q extends AbstractQueue<E,Q,L>, L extends QueueEntryListBase<E,Q,L>> extends Consumer
+public interface QueueConsumer<X extends QueueConsumer<X>> extends Consumer, org.apache.qpid.server.model.Consumer<X>
{
void flushBatched();
void queueEmpty();
- boolean hasInterest(E node);
+ boolean hasInterest(QueueEntry node);
- boolean wouldSuspend(E entry);
+ boolean wouldSuspend(QueueEntry entry);
- void restoreCredit(E entry);
+ void restoreCredit(QueueEntry entry);
- void send(E entry, boolean batch);
+ void send(QueueEntry entry, boolean batch);
void queueDeleted();
SubFlushRunner getRunner();
- Q getQueue();
+ AMQQueue getQueue();
- boolean resend(E e);
+ boolean resend(QueueEntry e);
- public static enum State
- {
- ACTIVE,
- SUSPENDED,
- CLOSED
- }
+ MessageInstance.ConsumerAcquiredState<X> getOwningState();
- MessageInstance.ConsumerAcquiredState<QueueConsumer<T,E,Q,L>> getOwningState();
-
- QueueContext<E,Q,L> getQueueContext();
+ QueueContext getQueueContext();
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueConsumerImpl.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueConsumerImpl.java
index ae30e53e9a..f0a8f239a8 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueConsumerImpl.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueConsumerImpl.java
@@ -31,14 +31,23 @@ import org.apache.qpid.server.logging.subjects.QueueLogSubject;
import org.apache.qpid.server.message.MessageInstance;
import org.apache.qpid.server.message.MessageSource;
import org.apache.qpid.server.message.ServerMessage;
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.Consumer;
+import org.apache.qpid.server.model.LifetimePolicy;
+import org.apache.qpid.server.model.State;
+import org.apache.qpid.server.model.adapter.AbstractConfiguredObject;
import org.apache.qpid.server.protocol.AMQSessionModel;
import org.apache.qpid.server.protocol.MessageConverterRegistry;
import org.apache.qpid.server.consumer.ConsumerTarget;
import org.apache.qpid.server.util.StateChangeListener;
+import java.security.AccessControlException;
import java.text.MessageFormat;
+import java.util.Collection;
+import java.util.Collections;
import java.util.EnumMap;
import java.util.EnumSet;
+import java.util.UUID;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.locks.Lock;
@@ -46,17 +55,19 @@ import java.util.concurrent.locks.ReentrantLock;
import static org.apache.qpid.server.logging.subjects.LogSubjectFormat.SUBSCRIPTION_FORMAT;
-class QueueConsumerImpl<T extends ConsumerTarget, E extends QueueEntryImpl<E,Q,L>, Q extends AbstractQueue<E,Q,L>, L extends QueueEntryListBase<E,Q,L>> implements QueueConsumer<T,E,Q,L>
+class QueueConsumerImpl
+ extends AbstractConfiguredObject<QueueConsumerImpl>
+ implements QueueConsumer<QueueConsumerImpl>
{
private static final Logger _logger = Logger.getLogger(QueueConsumerImpl.class);
private final AtomicBoolean _targetClosed = new AtomicBoolean(false);
private final AtomicBoolean _closed = new AtomicBoolean(false);
- private final long _id;
+ private final long _consumerNumber;
private final Lock _stateChangeLock = new ReentrantLock();
private final long _createTime = System.currentTimeMillis();
- private final MessageInstance.ConsumerAcquiredState<QueueConsumer<T,E,Q,L>> _owningState = new MessageInstance.ConsumerAcquiredState<QueueConsumer<T,E,Q,L>>(this);
+ private final MessageInstance.ConsumerAcquiredState<QueueConsumerImpl> _owningState = new MessageInstance.ConsumerAcquiredState<QueueConsumerImpl>(this);
private final boolean _acquires;
private final boolean _seesRequeues;
private final String _consumerName;
@@ -66,8 +77,9 @@ class QueueConsumerImpl<T extends ConsumerTarget, E extends QueueEntryImpl<E,Q,L
private final FilterManager _filters;
private final Class<? extends ServerMessage> _messageClass;
private final Object _sessionReference;
- private final Q _queue;
- private GenericActor _logActor = new GenericActor("[" + MessageFormat.format(SUBSCRIPTION_FORMAT, getId())
+ private final AbstractQueue _queue;
+ private final boolean _exclusive;
+ private GenericActor _logActor = new GenericActor("[" + MessageFormat.format(SUBSCRIPTION_FORMAT, getConsumerNumber())
+ "(UNKNOWN)"
+ "] ");
@@ -77,14 +89,14 @@ class QueueConsumerImpl<T extends ConsumerTarget, E extends QueueEntryImpl<E,Q,L
static
{
STATE_MAP.put(ConsumerTarget.State.ACTIVE, State.ACTIVE);
- STATE_MAP.put(ConsumerTarget.State.SUSPENDED, State.SUSPENDED);
- STATE_MAP.put(ConsumerTarget.State.CLOSED, State.CLOSED);
+ STATE_MAP.put(ConsumerTarget.State.SUSPENDED, State.QUIESCED);
+ STATE_MAP.put(ConsumerTarget.State.CLOSED, State.DELETED);
}
- private final T _target;
+ private final ConsumerTarget _target;
private final SubFlushRunner _runner = new SubFlushRunner(this);
- private volatile QueueContext<E,Q,L> _queueContext;
- private StateChangeListener<? super QueueConsumerImpl<T,E,Q,L>, State> _stateListener = new StateChangeListener<QueueConsumerImpl<T,E,Q,L>, State>()
+ private volatile QueueContext _queueContext;
+ private StateChangeListener<? super QueueConsumerImpl, State> _stateListener = new StateChangeListener<QueueConsumerImpl, State>()
{
public void stateChanged(QueueConsumerImpl sub, State oldState, State newState)
{
@@ -93,16 +105,18 @@ class QueueConsumerImpl<T extends ConsumerTarget, E extends QueueEntryImpl<E,Q,L
};
private final boolean _noLocal;
- QueueConsumerImpl(final Q queue,
- T target, final String consumerName,
+ QueueConsumerImpl(final AbstractQueue queue,
+ ConsumerTarget target, final String consumerName,
final FilterManager filters,
final Class<? extends ServerMessage> messageClass,
EnumSet<Option> optionSet)
{
-
+ super(UUID.randomUUID(), Collections.<String,Object>emptyMap(),
+ Collections.<String,Object>emptyMap(),
+ queue.getVirtualHost().getTaskExecutor());
_messageClass = messageClass;
_sessionReference = target.getSessionModel().getConnectionReference();
- _id = SUB_ID_GENERATOR.getAndIncrement();
+ _consumerNumber = CONSUMER_NUMBER_GENERATOR.getAndIncrement();
_filters = filters;
_acquires = optionSet.contains(Option.ACQUIRES);
_seesRequeues = optionSet.contains(Option.SEES_REQUEUES);
@@ -111,6 +125,7 @@ class QueueConsumerImpl<T extends ConsumerTarget, E extends QueueEntryImpl<E,Q,L
_target = target;
_queue = queue;
_noLocal = optionSet.contains(Option.NO_LOCAL);
+ _exclusive = optionSet.contains(Option.EXCLUSIVE);
setupLogging(optionSet.contains(Option.EXCLUSIVE));
// Access control
@@ -151,14 +166,14 @@ class QueueConsumerImpl<T extends ConsumerTarget, E extends QueueEntryImpl<E,Q,L
{
close();
}
- final StateChangeListener<? super QueueConsumerImpl<T,E,Q,L>, State> stateListener = getStateListener();
+ final StateChangeListener<? super QueueConsumerImpl, State> stateListener = getStateListener();
if(stateListener != null)
{
stateListener.stateChanged(this, STATE_MAP.get(oldState), STATE_MAP.get(newState));
}
}
- public T getTarget()
+ public ConsumerTarget getTarget()
{
return _target;
}
@@ -166,7 +181,7 @@ class QueueConsumerImpl<T extends ConsumerTarget, E extends QueueEntryImpl<E,Q,L
@Override
public void externalStateChange()
{
- getQueue().deliverAsync(this);
+ _queue.deliverAsync(this);
}
@Override
@@ -229,12 +244,12 @@ class QueueConsumerImpl<T extends ConsumerTarget, E extends QueueEntryImpl<E,Q,L
_target.queueDeleted();
}
- public boolean wouldSuspend(final E msg)
+ public boolean wouldSuspend(final QueueEntry msg)
{
return !_target.allocateCredit(msg.getMessage());
}
- public void restoreCredit(final E queueEntry)
+ public void restoreCredit(final QueueEntry queueEntry)
{
_target.restoreCredit(queueEntry.getMessage());
}
@@ -244,12 +259,12 @@ class QueueConsumerImpl<T extends ConsumerTarget, E extends QueueEntryImpl<E,Q,L
_target.queueEmpty();
}
- State getState()
+ public State getState()
{
return STATE_MAP.get(_target.getState());
}
- public final Q getQueue()
+ public final AMQQueue getQueue()
{
return _queue;
}
@@ -258,7 +273,7 @@ class QueueConsumerImpl<T extends ConsumerTarget, E extends QueueEntryImpl<E,Q,L
{
String queueString = new QueueLogSubject(_queue).toLogString();
- _logActor = new GenericActor("[" + MessageFormat.format(SUBSCRIPTION_FORMAT, getId())
+ _logActor = new GenericActor("[" + MessageFormat.format(SUBSCRIPTION_FORMAT, getConsumerNumber())
+ "("
// queueString is [vh(/{0})/qu({1}) ] so need to trim
// ^ ^^
@@ -289,10 +304,10 @@ class QueueConsumerImpl<T extends ConsumerTarget, E extends QueueEntryImpl<E,Q,L
@Override
public final void flush()
{
- getQueue().flushConsumer(this);
+ _queue.flushConsumer(this);
}
- public boolean resend(final E entry)
+ public boolean resend(final QueueEntry entry)
{
return getQueue().resend(entry, this);
}
@@ -302,27 +317,27 @@ class QueueConsumerImpl<T extends ConsumerTarget, E extends QueueEntryImpl<E,Q,L
return _runner;
}
- public final long getId()
+ public final long getConsumerNumber()
{
- return _id;
+ return _consumerNumber;
}
- public final StateChangeListener<? super QueueConsumerImpl<T,E,Q,L>, State> getStateListener()
+ public final StateChangeListener<? super QueueConsumerImpl, State> getStateListener()
{
return _stateListener;
}
- public final void setStateListener(StateChangeListener<? super QueueConsumerImpl<T,E,Q,L>, State> listener)
+ public final void setStateListener(StateChangeListener<? super QueueConsumerImpl, State> listener)
{
_stateListener = listener;
}
- public final QueueContext<E,Q,L> getQueueContext()
+ public final QueueContext getQueueContext()
{
return _queueContext;
}
- final void setQueueContext(QueueContext<E,Q,L> queueContext)
+ final void setQueueContext(QueueContext queueContext)
{
_queueContext = queueContext;
}
@@ -334,10 +349,10 @@ class QueueConsumerImpl<T extends ConsumerTarget, E extends QueueEntryImpl<E,Q,L
public final boolean isClosed()
{
- return getState() == State.CLOSED;
+ return getState() == State.DELETED;
}
- public final boolean hasInterest(E entry)
+ public final boolean hasInterest(QueueEntry entry)
{
//check that the message hasn't been rejected
if (entry.isRejectedBy(this))
@@ -412,7 +427,7 @@ class QueueConsumerImpl<T extends ConsumerTarget, E extends QueueEntryImpl<E,Q,L
return _createTime;
}
- public final MessageInstance.ConsumerAcquiredState<QueueConsumer<T,E,Q,L>> getOwningState()
+ public final MessageInstance.ConsumerAcquiredState<QueueConsumerImpl> getOwningState()
{
return _owningState;
}
@@ -447,11 +462,126 @@ class QueueConsumerImpl<T extends ConsumerTarget, E extends QueueEntryImpl<E,Q,L
return _deliveredCount.longValue();
}
- public final void send(final E entry, final boolean batch)
+ public final void send(final QueueEntry entry, final boolean batch)
{
_deliveredCount.incrementAndGet();
ServerMessage message = entry.getMessage();
_deliveredBytes.addAndGet(message.getSize());
_target.send(entry, batch);
}
+
+ @Override
+ protected boolean setState(final State currentState, final State desiredState)
+ {
+ return false;
+ }
+
+ @Override
+ public String getDistributionMode()
+ {
+ return acquires() ? "MOVE" : "COPY";
+ }
+
+ @Override
+ public String getSettlementMode()
+ {
+ return null;
+ }
+
+ @Override
+ public boolean isExclusive()
+ {
+ return _exclusive;
+ }
+
+ @Override
+ public boolean isNoLocal()
+ {
+ return isNoLocal();
+ }
+
+ @Override
+ public String getSelector()
+ {
+ return null;
+ }
+
+ @Override
+ public String setName(final String currentName, final String desiredName)
+ throws IllegalStateException, AccessControlException
+ {
+ return null;
+ }
+
+ @Override
+ public boolean isDurable()
+ {
+ return false;
+ }
+
+ @Override
+ public void setDurable(final boolean durable)
+ throws IllegalStateException, AccessControlException, IllegalArgumentException
+ {
+
+ }
+
+ @Override
+ public LifetimePolicy getLifetimePolicy()
+ {
+ return LifetimePolicy.DELETE_ON_SESSION_END;
+ }
+
+ @Override
+ public LifetimePolicy setLifetimePolicy(final LifetimePolicy expected, final LifetimePolicy desired)
+ throws IllegalStateException, AccessControlException, IllegalArgumentException
+ {
+ return null;
+ }
+
+ @Override
+ public <C extends ConfiguredObject> Collection<C> getChildren(final Class<C> clazz)
+ {
+ return Collections.<C>emptyList();
+ }
+
+ @Override
+ public Object getAttribute(final String name)
+ {
+ if(ID.equals(name))
+ {
+ return getId();
+ }
+ else if(NAME.equals(name))
+ {
+ return getName();
+ }
+ else if(DURABLE.equals(name))
+ {
+ return isDurable();
+ }
+ else if(DISTRIBUTION_MODE.equals(name))
+ {
+ return getDistributionMode();
+ }
+ else if(SETTLEMENT_MODE.equals(name))
+ {
+ return getSettlementMode();
+ }
+ else if(LIFETIME_POLICY.equals(name))
+ {
+ return getLifetimePolicy();
+ }
+ else if(EXCLUSIVE.equals(name))
+ {
+ return isExclusive();
+ }
+ return super.getAttribute(name);
+ }
+
+ @Override
+ public Collection<String> getAttributeNames()
+ {
+ return getAttributeNames(getClass());
+ }
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueConsumerList.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueConsumerList.java
index 1f1320cfd2..4c54d6e9cf 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueConsumerList.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueConsumerList.java
@@ -24,19 +24,19 @@ import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
-class QueueConsumerList<E extends QueueEntryImpl<E,Q,L>, Q extends AbstractQueue<E, Q,L>, L extends QueueEntryListBase<E,Q,L>>
+class QueueConsumerList
{
- private final ConsumerNode<E,Q,L> _head = new ConsumerNode<E,Q,L>();
+ private final ConsumerNode _head = new ConsumerNode();
- private final AtomicReference<ConsumerNode<E,Q,L>> _tail = new AtomicReference<ConsumerNode<E,Q,L>>(_head);
- private final AtomicReference<ConsumerNode<E,Q,L>> _subNodeMarker = new AtomicReference<ConsumerNode<E,Q,L>>(_head);
+ private final AtomicReference<ConsumerNode> _tail = new AtomicReference<ConsumerNode>(_head);
+ private final AtomicReference<ConsumerNode> _subNodeMarker = new AtomicReference<ConsumerNode>(_head);
private final AtomicInteger _size = new AtomicInteger();
- public static final class ConsumerNode<E extends QueueEntryImpl<E,Q,L>, Q extends AbstractQueue<E, Q,L>, L extends QueueEntryListBase<E,Q,L>>
+ public static final class ConsumerNode
{
private final AtomicBoolean _deleted = new AtomicBoolean();
- private final AtomicReference<ConsumerNode<E,Q,L>> _next = new AtomicReference<ConsumerNode<E,Q,L>>();
- private final QueueConsumer<?,E,Q,L> _sub;
+ private final AtomicReference<ConsumerNode> _next = new AtomicReference<ConsumerNode>();
+ private final QueueConsumer<?> _sub;
public ConsumerNode()
{
@@ -45,7 +45,7 @@ class QueueConsumerList<E extends QueueEntryImpl<E,Q,L>, Q extends AbstractQueue
_deleted.set(true);
}
- public ConsumerNode(final QueueConsumer<?,E,Q,L> sub)
+ public ConsumerNode(final QueueConsumer<?> sub)
{
//used for regular node construction
_sub = sub;
@@ -57,12 +57,12 @@ class QueueConsumerList<E extends QueueEntryImpl<E,Q,L>, Q extends AbstractQueue
*
* @return the next non-deleted node, or null if none was found.
*/
- public ConsumerNode<E,Q,L> findNext()
+ public ConsumerNode findNext()
{
- ConsumerNode<E,Q,L> next = nextNode();
+ ConsumerNode next = nextNode();
while(next != null && next.isDeleted())
{
- final ConsumerNode<E,Q,L> newNext = next.nextNode();
+ final ConsumerNode newNext = next.nextNode();
if(newNext != null)
{
//try to move our _next reference forward to the 'newNext'
@@ -86,7 +86,7 @@ class QueueConsumerList<E extends QueueEntryImpl<E,Q,L>, Q extends AbstractQueue
*
* @return the immediately next node in the structure, or null if at the tail.
*/
- protected ConsumerNode<E,Q,L> nextNode()
+ protected ConsumerNode nextNode()
{
return _next.get();
}
@@ -97,7 +97,7 @@ class QueueConsumerList<E extends QueueEntryImpl<E,Q,L>, Q extends AbstractQueue
* @param node the ConsumerNode to set as 'next'
* @return whether the operation succeeded
*/
- private boolean setNext(final ConsumerNode<E,Q,L> node)
+ private boolean setNext(final ConsumerNode node)
{
return _next.compareAndSet(null, node);
}
@@ -112,18 +112,18 @@ class QueueConsumerList<E extends QueueEntryImpl<E,Q,L>, Q extends AbstractQueue
return _deleted.compareAndSet(false,true);
}
- public QueueConsumer<?,E,Q,L> getConsumer()
+ public QueueConsumer<?> getConsumer()
{
return _sub;
}
}
- private void insert(final ConsumerNode<E,Q,L> node, final boolean count)
+ private void insert(final ConsumerNode node, final boolean count)
{
for (;;)
{
- ConsumerNode<E,Q,L> tail = _tail.get();
- ConsumerNode<E,Q,L> next = tail.nextNode();
+ ConsumerNode tail = _tail.get();
+ ConsumerNode next = tail.nextNode();
if (tail == _tail.get())
{
if (next == null)
@@ -146,16 +146,16 @@ class QueueConsumerList<E extends QueueEntryImpl<E,Q,L>, Q extends AbstractQueue
}
}
- public void add(final QueueConsumer<?,E,Q,L> sub)
+ public void add(final QueueConsumer<?> sub)
{
- ConsumerNode<E,Q,L> node = new ConsumerNode<E,Q,L>(sub);
+ ConsumerNode node = new ConsumerNode(sub);
insert(node, true);
}
- public boolean remove(final QueueConsumer<?, E,Q,L> sub)
+ public boolean remove(final QueueConsumer<?> sub)
{
- ConsumerNode<E,Q,L> prevNode = _head;
- ConsumerNode<E,Q,L> node = _head.nextNode();
+ ConsumerNode prevNode = _head;
+ ConsumerNode node = _head.nextNode();
while(node != null)
{
@@ -170,7 +170,7 @@ class QueueConsumerList<E extends QueueEntryImpl<E,Q,L>, Q extends AbstractQueue
//correctness reasons, however we have just 'deleted'
//the tail. Inserting an empty dummy node after it will
//let us scavenge the node containing the Consumer.
- insert(new ConsumerNode<E,Q,L>(), false);
+ insert(new ConsumerNode(), false);
}
//advance the next node reference in the 'prevNode' to scavenge
@@ -189,9 +189,9 @@ class QueueConsumerList<E extends QueueEntryImpl<E,Q,L>, Q extends AbstractQueue
return false;
}
- private void nodeMarkerCleanup(final ConsumerNode<E,Q,L> node)
+ private void nodeMarkerCleanup(final ConsumerNode node)
{
- ConsumerNode<E,Q,L> markedNode = _subNodeMarker.get();
+ ConsumerNode markedNode = _subNodeMarker.get();
if(node == markedNode)
{
//if the marked node is the one we are removing, then
@@ -200,7 +200,7 @@ class QueueConsumerList<E extends QueueEntryImpl<E,Q,L>, Q extends AbstractQueue
//into the list and find the next node to use.
//Because we inserted a dummy if node was the
//tail, markedNode.nextNode() can never be null.
- ConsumerNode<E,Q,L> dummy = new ConsumerNode<E,Q,L>();
+ ConsumerNode dummy = new ConsumerNode();
dummy.setNext(markedNode.nextNode());
//if the CAS fails the marked node has changed, thus
@@ -219,7 +219,7 @@ class QueueConsumerList<E extends QueueEntryImpl<E,Q,L>, Q extends AbstractQueue
}
}
- public boolean updateMarkedNode(final ConsumerNode<E,Q,L> expected, final ConsumerNode<E,Q,L> nextNode)
+ public boolean updateMarkedNode(final ConsumerNode expected, final ConsumerNode nextNode)
{
return _subNodeMarker.compareAndSet(expected, nextNode);
}
@@ -231,41 +231,41 @@ class QueueConsumerList<E extends QueueEntryImpl<E,Q,L>, Q extends AbstractQueue
*
* @return the previously marked node (or a dummy if it was subsequently deleted)
*/
- public ConsumerNode<E,Q,L> getMarkedNode()
+ public ConsumerNode getMarkedNode()
{
return _subNodeMarker.get();
}
- public static class ConsumerNodeIterator<E extends QueueEntryImpl<E,Q,L>, Q extends AbstractQueue<E, Q,L>, L extends QueueEntryListBase<E,Q,L>>
+ public static class ConsumerNodeIterator
{
- private ConsumerNode<E,Q,L> _lastNode;
+ private ConsumerNode _lastNode;
- ConsumerNodeIterator(ConsumerNode<E,Q,L> startNode)
+ ConsumerNodeIterator(ConsumerNode startNode)
{
_lastNode = startNode;
}
- public ConsumerNode<E,Q,L> getNode()
+ public ConsumerNode getNode()
{
return _lastNode;
}
public boolean advance()
{
- ConsumerNode<E,Q,L> nextNode = _lastNode.findNext();
+ ConsumerNode nextNode = _lastNode.findNext();
_lastNode = nextNode;
return _lastNode != null;
}
}
- public ConsumerNodeIterator<E,Q,L> iterator()
+ public ConsumerNodeIterator iterator()
{
- return new ConsumerNodeIterator<E,Q,L>(_head);
+ return new ConsumerNodeIterator(_head);
}
- public ConsumerNode<E,Q,L> getHead()
+ public ConsumerNode getHead()
{
return _head;
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueContext.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueContext.java
index 45673aa555..861bd3dea1 100755
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueContext.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueContext.java
@@ -23,32 +23,32 @@ package org.apache.qpid.server.queue;
import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
-final class QueueContext<E extends QueueEntryImpl<E,Q,L>, Q extends AbstractQueue<E,Q,L>, L extends QueueEntryListBase<E,Q,L>>
+final class QueueContext
{
- private volatile E _lastSeenEntry;
- private volatile E _releasedEntry;
+ private volatile QueueEntry _lastSeenEntry;
+ private volatile QueueEntry _releasedEntry;
- static final AtomicReferenceFieldUpdater<QueueContext, QueueEntryImpl>
+ static final AtomicReferenceFieldUpdater<QueueContext, QueueEntry>
_lastSeenUpdater =
AtomicReferenceFieldUpdater.newUpdater
- (QueueContext.class, QueueEntryImpl.class, "_lastSeenEntry");
- static final AtomicReferenceFieldUpdater<QueueContext, QueueEntryImpl>
+ (QueueContext.class, QueueEntry.class, "_lastSeenEntry");
+ static final AtomicReferenceFieldUpdater<QueueContext, QueueEntry>
_releasedUpdater =
AtomicReferenceFieldUpdater.newUpdater
- (QueueContext.class, QueueEntryImpl.class, "_releasedEntry");
+ (QueueContext.class, QueueEntry.class, "_releasedEntry");
- public QueueContext(E head)
+ public QueueContext(QueueEntry head)
{
_lastSeenEntry = head;
}
- public E getLastSeenEntry()
+ public QueueEntry getLastSeenEntry()
{
return _lastSeenEntry;
}
- E getReleasedEntry()
+ QueueEntry getReleasedEntry()
{
return _releasedEntry;
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntry.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntry.java
index 9a49cd6088..1e7c8030c1 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntry.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntry.java
@@ -23,18 +23,18 @@ package org.apache.qpid.server.queue;
import org.apache.qpid.server.consumer.Consumer;
import org.apache.qpid.server.message.MessageInstance;
-public interface QueueEntry<E extends QueueEntry<E,Q,C>, Q extends AMQQueue<E,Q,C>, C extends Consumer> extends MessageInstance<E,C>, Comparable<E>
+public interface QueueEntry extends MessageInstance, Comparable<QueueEntry>
{
- Q getQueue();
+ AMQQueue getQueue();
long getSize();
boolean isQueueDeleted();
- E getNextNode();
+ QueueEntry getNextNode();
- E getNextValidEntry();
+ QueueEntry getNextValidEntry();
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryImpl.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryImpl.java
index 5407985cd8..9814431beb 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryImpl.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryImpl.java
@@ -22,7 +22,7 @@ package org.apache.qpid.server.queue;
import org.apache.log4j.Logger;
-import org.apache.qpid.server.exchange.Exchange;
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.filter.Filterable;
import org.apache.qpid.server.message.InstanceProperties;
import org.apache.qpid.server.message.MessageInstance;
@@ -43,11 +43,11 @@ import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
import java.util.concurrent.atomic.AtomicLongFieldUpdater;
import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
-public abstract class QueueEntryImpl<E extends QueueEntryImpl<E,Q,L>, Q extends AbstractQueue<E,Q,L>, L extends QueueEntryListBase<E,Q,L>> implements QueueEntry<E,Q,QueueConsumer<?,E,Q,L>>
+public abstract class QueueEntryImpl implements QueueEntry
{
private static final Logger _log = Logger.getLogger(QueueEntryImpl.class);
- private final L _queueEntryList;
+ private final QueueEntryList _queueEntryList;
private final MessageReference _message;
@@ -62,7 +62,7 @@ public abstract class QueueEntryImpl<E extends QueueEntryImpl<E,Q,L>, Q extends
(QueueEntryImpl.class, EntryState.class, "_state");
- private volatile Set<StateChangeListener<? super E, State>> _stateChangeListeners;
+ private volatile Set<StateChangeListener<? super QueueEntry, State>> _stateChangeListeners;
private static final
AtomicReferenceFieldUpdater<QueueEntryImpl, Set>
@@ -89,14 +89,14 @@ public abstract class QueueEntryImpl<E extends QueueEntryImpl<E,Q,L>, Q extends
private boolean _deliveredToConsumer;
- public QueueEntryImpl(L queueEntryList)
+ public QueueEntryImpl(QueueEntryList queueEntryList)
{
this(queueEntryList,null,Long.MIN_VALUE);
_state = DELETED_STATE;
}
- public QueueEntryImpl(L queueEntryList, ServerMessage message, final long entryId)
+ public QueueEntryImpl(QueueEntryList queueEntryList, ServerMessage message, final long entryId)
{
_queueEntryList = queueEntryList;
@@ -106,7 +106,7 @@ public abstract class QueueEntryImpl<E extends QueueEntryImpl<E,Q,L>, Q extends
populateInstanceProperties();
}
- public QueueEntryImpl(L queueEntryList, ServerMessage message)
+ public QueueEntryImpl(QueueEntryList queueEntryList, ServerMessage message)
{
_queueEntryList = queueEntryList;
_message = message == null ? null : message.newReference();
@@ -137,7 +137,7 @@ public abstract class QueueEntryImpl<E extends QueueEntryImpl<E,Q,L>, Q extends
return _entryId;
}
- public Q getQueue()
+ public AMQQueue getQueue()
{
return _queueEntryList.getQueue();
}
@@ -201,9 +201,9 @@ public abstract class QueueEntryImpl<E extends QueueEntryImpl<E,Q,L>, Q extends
return acquired;
}
- public boolean acquire(QueueConsumer<?,E,Q,L> sub)
+ public boolean acquire(Consumer sub)
{
- final boolean acquired = acquire(sub.getOwningState());
+ final boolean acquired = acquire(((QueueConsumer<?>)sub).getOwningState());
if(acquired)
{
_deliveredToConsumer = true;
@@ -217,7 +217,7 @@ public abstract class QueueEntryImpl<E extends QueueEntryImpl<E,Q,L>, Q extends
return (_state instanceof ConsumerAcquiredState);
}
- public boolean isAcquiredBy(QueueConsumer consumer)
+ public boolean isAcquiredBy(Consumer consumer)
{
EntryState state = _state;
return state instanceof ConsumerAcquiredState
@@ -233,12 +233,12 @@ public abstract class QueueEntryImpl<E extends QueueEntryImpl<E,Q,L>, Q extends
if(state instanceof ConsumerAcquiredState)
{
- getQueue().decrementUnackedMsgCount((E) this);
+ getQueue().decrementUnackedMsgCount(this);
}
if(!getQueue().isDeleted())
{
- getQueue().requeue((E)this);
+ getQueue().requeue(this);
if(_stateChangeListeners != null)
{
notifyStateChange(QueueEntry.State.ACQUIRED, QueueEntry.State.AVAILABLE);
@@ -287,7 +287,7 @@ public abstract class QueueEntryImpl<E extends QueueEntryImpl<E,Q,L>, Q extends
_rejectedBy = new HashSet<Long>();
}
- _rejectedBy.add(consumer.getId());
+ _rejectedBy.add(consumer.getConsumerNumber());
}
else
{
@@ -295,12 +295,12 @@ public abstract class QueueEntryImpl<E extends QueueEntryImpl<E,Q,L>, Q extends
}
}
- public boolean isRejectedBy(QueueConsumer consumer)
+ public boolean isRejectedBy(Consumer consumer)
{
if (_rejectedBy != null) // We have consumers that rejected this message
{
- return _rejectedBy.contains(consumer.getId());
+ return _rejectedBy.contains(consumer.getConsumerNumber());
}
else // This message hasn't been rejected yet.
{
@@ -316,10 +316,10 @@ public abstract class QueueEntryImpl<E extends QueueEntryImpl<E,Q,L>, Q extends
{
if (state instanceof ConsumerAcquiredState)
{
- getQueue().decrementUnackedMsgCount((E) this);
+ getQueue().decrementUnackedMsgCount(this);
}
- getQueue().dequeue((E)this);
+ getQueue().dequeue(this);
if(_stateChangeListeners != null)
{
notifyStateChange(state.getState() , QueueEntry.State.DEQUEUED);
@@ -331,9 +331,9 @@ public abstract class QueueEntryImpl<E extends QueueEntryImpl<E,Q,L>, Q extends
private void notifyStateChange(final State oldState, final State newState)
{
- for(StateChangeListener<? super E, State> l : _stateChangeListeners)
+ for(StateChangeListener<? super QueueEntry, State> l : _stateChangeListeners)
{
- l.stateChanged((E)this, oldState, newState);
+ l.stateChanged(this, oldState, newState);
}
}
@@ -343,7 +343,7 @@ public abstract class QueueEntryImpl<E extends QueueEntryImpl<E,Q,L>, Q extends
if(state != DELETED_STATE && _stateUpdater.compareAndSet(this,state,DELETED_STATE))
{
- _queueEntryList.entryDeleted((E)this);
+ _queueEntryList.entryDeleted(this);
onDelete();
_message.release();
@@ -362,10 +362,10 @@ public abstract class QueueEntryImpl<E extends QueueEntryImpl<E,Q,L>, Q extends
dispose();
}
- public int routeToAlternate(final Action<? super MessageInstance<?, ? extends Consumer>> action, ServerTransaction txn)
+ public int routeToAlternate(final Action<? super MessageInstance> action, ServerTransaction txn)
{
final AMQQueue currentQueue = getQueue();
- Exchange alternateExchange = currentQueue.getAlternateExchange();
+ ExchangeImpl alternateExchange = currentQueue.getAlternateExchange();
boolean autocommit = txn == null;
int enqueues;
@@ -412,21 +412,21 @@ public abstract class QueueEntryImpl<E extends QueueEntryImpl<E,Q,L>, Q extends
return getQueue().isDeleted();
}
- public void addStateChangeListener(StateChangeListener<? super E,State> listener)
+ public void addStateChangeListener(StateChangeListener<? super MessageInstance,State> listener)
{
- Set<StateChangeListener<? super E, State>> listeners = _stateChangeListeners;
+ Set<StateChangeListener<? super QueueEntry, State>> listeners = _stateChangeListeners;
if(listeners == null)
{
- _listenersUpdater.compareAndSet(this, null, new CopyOnWriteArraySet<StateChangeListener<? super E, State>>());
+ _listenersUpdater.compareAndSet(this, null, new CopyOnWriteArraySet<StateChangeListener<? super QueueEntry, State>>());
listeners = _stateChangeListeners;
}
listeners.add(listener);
}
- public boolean removeStateChangeListener(StateChangeListener<? super E, State> listener)
+ public boolean removeStateChangeListener(StateChangeListener<? super MessageInstance, State> listener)
{
- Set<StateChangeListener<? super E, State>> listeners = _stateChangeListeners;
+ Set<StateChangeListener<? super QueueEntry, State>> listeners = _stateChangeListeners;
if(listeners != null)
{
return listeners.remove(listener);
@@ -436,9 +436,13 @@ public abstract class QueueEntryImpl<E extends QueueEntryImpl<E,Q,L>, Q extends
}
- public int compareTo(final E o)
+ public int compareTo(final QueueEntry o)
{
- E other = o;
+ if(o == null)
+ {
+ return 1;
+ }
+ QueueEntryImpl other = (QueueEntryImpl)o;
return getEntryId() > other.getEntryId() ? 1 : getEntryId() < other.getEntryId() ? -1 : 0;
}
@@ -446,7 +450,7 @@ public abstract class QueueEntryImpl<E extends QueueEntryImpl<E,Q,L>, Q extends
{
}
- public L getQueueEntryList()
+ public QueueEntryList getQueueEntryList()
{
return _queueEntryList;
}
@@ -464,7 +468,7 @@ public abstract class QueueEntryImpl<E extends QueueEntryImpl<E,Q,L>, Q extends
@Override
public int getMaximumDeliveryCount()
{
- return getQueue().getMaximumDeliveryCount();
+ return getQueue().getMaximumDeliveryAttempts();
}
public void incrementDeliveryCount()
@@ -494,10 +498,10 @@ public abstract class QueueEntryImpl<E extends QueueEntryImpl<E,Q,L>, Q extends
@Override
public boolean resend()
{
- QueueConsumer<?,E,Q,L> sub = getDeliveredConsumer();
+ QueueConsumer sub = getDeliveredConsumer();
if(sub != null)
{
- return sub.resend((E)this);
+ return sub.resend(this);
}
return false;
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryIterator.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryIterator.java
index 72502feb3d..c5c115a2d1 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryIterator.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryIterator.java
@@ -20,13 +20,11 @@
*/
package org.apache.qpid.server.queue;
-import org.apache.qpid.server.consumer.Consumer;
-
-public interface QueueEntryIterator<E extends QueueEntry<E,Q,C>, Q extends AMQQueue<E,Q,C>, L extends QueueEntryList<E,Q,L,C>, C extends Consumer>
+public interface QueueEntryIterator
{
boolean atTail();
- E getNode();
+ QueueEntry getNode();
boolean advance();
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryList.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryList.java
index a49320e9d6..070b1990a6 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryList.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryList.java
@@ -23,19 +23,19 @@ package org.apache.qpid.server.queue;
import org.apache.qpid.server.consumer.Consumer;
import org.apache.qpid.server.message.ServerMessage;
-public interface QueueEntryList<E extends QueueEntry<E,Q,C>, Q extends AMQQueue<E,Q,C>, L extends QueueEntryList<E,Q,L,C>, C extends Consumer>
+public interface QueueEntryList
{
- Q getQueue();
+ AMQQueue getQueue();
- E add(ServerMessage message);
+ QueueEntry add(ServerMessage message);
- E next(E node);
+ QueueEntry next(QueueEntry node);
- QueueEntryIterator<E,Q,L,C> iterator();
+ QueueEntryIterator iterator();
- E getHead();
+ QueueEntry getHead();
- void entryDeleted(E queueEntry);
+ void entryDeleted(QueueEntry queueEntry);
int getPriorities();
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryListBase.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryListBase.java
index f997e7383f..d2aff534c9 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryListBase.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryListBase.java
@@ -20,6 +20,6 @@
*/
package org.apache.qpid.server.queue;
-public interface QueueEntryListBase<E extends QueueEntryImpl<E,Q,L>, Q extends AbstractQueue<E,Q,L>, L extends QueueEntryListBase<E,Q,L>> extends QueueEntryList<E,Q,L,QueueConsumer<?,E,Q,L>>
+public interface QueueEntryListBase extends QueueEntryList
{
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryListFactory.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryListFactory.java
index 6e66fd2905..3f701f652e 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryListFactory.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryListFactory.java
@@ -20,7 +20,7 @@
*/
package org.apache.qpid.server.queue;
-interface QueueEntryListFactory<E extends QueueEntryImpl<E,Q,L>, Q extends AbstractQueue<E,Q,L>, L extends QueueEntryListBase<E,Q,L>>
+interface QueueEntryListFactory
{
- public L createQueueEntryList(Q queue);
+ public QueueEntryList createQueueEntryList(AMQQueue<?> queue);
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryVisitor.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryVisitor.java
index e6b5ac5611..9ecaf6dafd 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryVisitor.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryVisitor.java
@@ -16,9 +16,7 @@
*/
package org.apache.qpid.server.queue;
-import org.apache.qpid.server.consumer.Consumer;
-
-public interface QueueEntryVisitor<E extends QueueEntry>
+public interface QueueEntryVisitor
{
- boolean visit(E entry);
+ boolean visit(QueueEntry entry);
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/SortedQueue.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/SortedQueue.java
index cba992f347..899c556ec7 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/SortedQueue.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/SortedQueue.java
@@ -28,7 +28,7 @@ import org.apache.qpid.server.virtualhost.VirtualHost;
import java.util.Map;
-public class SortedQueue extends OutOfOrderQueue<SortedQueueEntry, SortedQueue, SortedQueueEntryList>
+public class SortedQueue extends OutOfOrderQueue
{
//Lock object to synchronize enqueue. Used instead of the object
//monitor to prevent lock order issues with consumer sendLocks
@@ -38,7 +38,7 @@ public class SortedQueue extends OutOfOrderQueue<SortedQueueEntry, SortedQueue,
protected SortedQueue(VirtualHost virtualHost,
Map<String, Object> attributes,
- QueueEntryListFactory<SortedQueueEntry, SortedQueue, SortedQueueEntryList> factory)
+ QueueEntryListFactory factory)
{
super(virtualHost, attributes, factory);
_sortedPropertyName = MapValueConverter.getStringAttribute(Queue.SORT_KEY,attributes);
@@ -62,7 +62,7 @@ public class SortedQueue extends OutOfOrderQueue<SortedQueueEntry, SortedQueue,
@Override
public void enqueue(final ServerMessage message,
- final Action<? super MessageInstance<?, QueueConsumer<?, SortedQueueEntry, SortedQueue, SortedQueueEntryList>>> action)
+ final Action<? super MessageInstance> action)
{
synchronized (_sortedQueueLock)
{
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/SortedQueueEntry.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/SortedQueueEntry.java
index 30d58138fb..433005a857 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/SortedQueueEntry.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/SortedQueueEntry.java
@@ -24,7 +24,7 @@ import org.apache.qpid.server.message.ServerMessage;
/**
* An implementation of QueueEntryImpl to be used in SortedQueueEntryList.
*/
-public class SortedQueueEntry extends QueueEntryImpl<SortedQueueEntry, SortedQueue, SortedQueueEntryList>
+public class SortedQueueEntry extends QueueEntryImpl
{
public static enum Colour
{
@@ -52,8 +52,9 @@ public class SortedQueueEntry extends QueueEntryImpl<SortedQueueEntry, SortedQue
}
@Override
- public int compareTo(final SortedQueueEntry o)
+ public int compareTo(final QueueEntry other)
{
+ SortedQueueEntry o = (SortedQueueEntry)other;
final String otherKey = o._key;
final int compare = _key == null ? (otherKey == null ? 0 : -1) : otherKey == null ? 1 : _key.compareTo(otherKey);
return compare == 0 ? super.compareTo(o) : compare;
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/SortedQueueEntryList.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/SortedQueueEntryList.java
index 801f9261f8..990ca76d67 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/SortedQueueEntryList.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/SortedQueueEntryList.java
@@ -30,7 +30,7 @@ import org.apache.qpid.server.queue.SortedQueueEntry.Colour;
* ISBN-13: 978-0262033848
* see http://en.wikipedia.org/wiki/Red-black_tree
*/
-public class SortedQueueEntryList implements QueueEntryListBase<SortedQueueEntry, SortedQueue, SortedQueueEntryList>
+public class SortedQueueEntryList implements QueueEntryList
{
private final SortedQueueEntry _head;
private SortedQueueEntry _root;
@@ -279,8 +279,9 @@ public class SortedQueueEntryList implements QueueEntryListBase<SortedQueueEntry
return (node == null ? Colour.BLACK : node.getColour()) == colour;
}
- public SortedQueueEntry next(final SortedQueueEntry node)
+ public SortedQueueEntry next(final QueueEntry entry)
{
+ SortedQueueEntry node = (SortedQueueEntry)entry;
synchronized(_lock)
{
if(node.isDeleted() && _head != node)
@@ -308,7 +309,7 @@ public class SortedQueueEntryList implements QueueEntryListBase<SortedQueueEntry
}
}
- public QueueEntryIterator<SortedQueueEntry,SortedQueue,SortedQueueEntryList,QueueConsumer<?,SortedQueueEntry,SortedQueue,SortedQueueEntryList>> iterator()
+ public QueueEntryIterator iterator()
{
return new QueueEntryIteratorImpl(_head);
}
@@ -323,8 +324,9 @@ public class SortedQueueEntryList implements QueueEntryListBase<SortedQueueEntry
return _root;
}
- public void entryDeleted(final SortedQueueEntry entry)
+ public void entryDeleted(final QueueEntry e)
{
+ SortedQueueEntry entry = (SortedQueueEntry)e;
synchronized(_lock)
{
// If the node to be removed has two children, we swap the position
@@ -618,7 +620,7 @@ public class SortedQueueEntryList implements QueueEntryListBase<SortedQueueEntry
return x == null ? null : x.getColour();
}
- public class QueueEntryIteratorImpl implements QueueEntryIterator<SortedQueueEntry,SortedQueue,SortedQueueEntryList,QueueConsumer<?,SortedQueueEntry,SortedQueue,SortedQueueEntryList>>
+ public class QueueEntryIteratorImpl implements QueueEntryIterator
{
private SortedQueueEntry _lastNode;
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/SortedQueueEntryListFactory.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/SortedQueueEntryListFactory.java
index 69ffcd67a7..ed80b33234 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/SortedQueueEntryListFactory.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/SortedQueueEntryListFactory.java
@@ -19,7 +19,7 @@
*/
package org.apache.qpid.server.queue;
-public class SortedQueueEntryListFactory implements QueueEntryListFactory<SortedQueueEntry,SortedQueue,SortedQueueEntryList>
+public class SortedQueueEntryListFactory implements QueueEntryListFactory
{
private final String _propertyName;
@@ -30,8 +30,8 @@ public class SortedQueueEntryListFactory implements QueueEntryListFactory<Sorted
}
@Override
- public SortedQueueEntryList createQueueEntryList(final SortedQueue queue)
+ public SortedQueueEntryList createQueueEntryList(final AMQQueue<?> queue)
{
- return new SortedQueueEntryList(queue, _propertyName);
+ return new SortedQueueEntryList((SortedQueue) queue, _propertyName);
}
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/StandardQueue.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/StandardQueue.java
index 51c2d7c7b5..1386196405 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/StandardQueue.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/StandardQueue.java
@@ -25,7 +25,7 @@ import org.apache.qpid.server.virtualhost.VirtualHost;
import java.util.Map;
-public class StandardQueue extends AbstractQueue<StandardQueueEntry,StandardQueue,StandardQueueEntryList>
+public class StandardQueue extends AbstractQueue
{
public StandardQueue(final VirtualHost virtualHost,
final Map<String, Object> arguments)
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/StandardQueueEntry.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/StandardQueueEntry.java
index 368015e9c0..8669d26110 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/StandardQueueEntry.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/StandardQueueEntry.java
@@ -22,7 +22,7 @@ package org.apache.qpid.server.queue;
import org.apache.qpid.server.message.ServerMessage;
-public class StandardQueueEntry extends OrderedQueueEntry<StandardQueueEntry, StandardQueue, StandardQueueEntryList>
+public class StandardQueueEntry extends OrderedQueueEntry
{
protected StandardQueueEntry(final StandardQueueEntryList queueEntryList)
{
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/StandardQueueEntryList.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/StandardQueueEntryList.java
index 11ad04e61c..0b8b7f7c6b 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/StandardQueueEntryList.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/StandardQueueEntryList.java
@@ -22,15 +22,15 @@ package org.apache.qpid.server.queue;
import org.apache.qpid.server.message.ServerMessage;
-public class StandardQueueEntryList extends OrderedQueueEntryList<StandardQueueEntry, StandardQueue, StandardQueueEntryList>
+public class StandardQueueEntryList extends OrderedQueueEntryList
{
- private static final HeadCreator<StandardQueueEntry, StandardQueue, StandardQueueEntryList> HEAD_CREATOR = new HeadCreator<StandardQueueEntry, StandardQueue, StandardQueueEntryList>()
+ private static final HeadCreator HEAD_CREATOR = new HeadCreator()
{
@Override
- public StandardQueueEntry createHead(final StandardQueueEntryList list)
+ public StandardQueueEntry createHead(final QueueEntryList list)
{
- return new StandardQueueEntry(list);
+ return new StandardQueueEntry((StandardQueueEntryList) list);
}
};
@@ -45,12 +45,12 @@ public class StandardQueueEntryList extends OrderedQueueEntryList<StandardQueueE
return new StandardQueueEntry(this, message);
}
- static class Factory implements QueueEntryListFactory<StandardQueueEntry, StandardQueue, StandardQueueEntryList>
+ static class Factory implements QueueEntryListFactory
{
- public StandardQueueEntryList createQueueEntryList(StandardQueue queue)
+ public StandardQueueEntryList createQueueEntryList(AMQQueue<?> queue)
{
- return new StandardQueueEntryList(queue);
+ return new StandardQueueEntryList((StandardQueue) queue);
}
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java
index 1ee726c455..dc30892667 100755
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/SecurityManager.java
@@ -20,9 +20,9 @@ package org.apache.qpid.server.security;
import org.apache.log4j.Logger;
-import org.apache.qpid.server.binding.Binding;
+import org.apache.qpid.server.binding.BindingImpl;
import org.apache.qpid.server.consumer.Consumer;
-import org.apache.qpid.server.exchange.Exchange;
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.model.*;
import org.apache.qpid.server.plugin.AccessControlFactory;
@@ -252,9 +252,9 @@ public class SecurityManager implements ConfigurationChangeListener
return true;
}
- public void authoriseCreateBinding(Binding binding)
+ public void authoriseCreateBinding(BindingImpl binding)
{
- final Exchange exch = binding.getExchangeImpl();
+ final ExchangeImpl exch = binding.getExchange();
final AMQQueue queue = binding.getAMQQueue();
final String bindingKey = binding.getBindingKey();
@@ -340,7 +340,7 @@ public class SecurityManager implements ConfigurationChangeListener
}
}
- public void authoriseCreateExchange(final Exchange exchange)
+ public void authoriseCreateExchange(final ExchangeImpl exchange)
{
final String exchangeName = exchange.getName();
if(!checkAllPlugins(new AccessCheck()
@@ -408,7 +408,7 @@ public class SecurityManager implements ConfigurationChangeListener
}
- public void authoriseUpdate(final Exchange exchange)
+ public void authoriseUpdate(final ExchangeImpl exchange)
{
if(!checkAllPlugins(new AccessCheck()
{
@@ -422,7 +422,7 @@ public class SecurityManager implements ConfigurationChangeListener
}
}
- public void authoriseDelete(final Exchange exchange)
+ public void authoriseDelete(final ExchangeImpl exchange)
{
if(! checkAllPlugins(new AccessCheck()
{
@@ -519,7 +519,7 @@ public class SecurityManager implements ConfigurationChangeListener
}
}
- public void authoriseUnbind(final Exchange exch, final String routingKey, final AMQQueue queue)
+ public void authoriseUnbind(final ExchangeImpl exch, final String routingKey, final AMQQueue queue)
{
if(! checkAllPlugins(new AccessCheck()
{
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/access/ObjectProperties.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/access/ObjectProperties.java
index 7f136a953f..ae0241314f 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/access/ObjectProperties.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/security/access/ObjectProperties.java
@@ -26,7 +26,7 @@ import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.builder.EqualsBuilder;
-import org.apache.qpid.server.exchange.Exchange;
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.model.LifetimePolicy;
import org.apache.qpid.server.queue.AMQQueue;
@@ -155,7 +155,7 @@ public class ObjectProperties
}
- public ObjectProperties(Exchange exch, AMQQueue queue, String routingKey)
+ public ObjectProperties(ExchangeImpl exch, AMQQueue queue, String routingKey)
{
this(queue);
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStoreHelper.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStoreHelper.java
index c4ee5819ac..77af1f92fd 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStoreHelper.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStoreHelper.java
@@ -29,6 +29,8 @@ 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.Exchange;
import org.apache.qpid.server.model.LifetimePolicy;
@@ -43,7 +45,7 @@ public class DurableConfigurationStoreHelper
private static final String QUEUE = Queue.class.getSimpleName();
private static final Set<String> QUEUE_ARGUMENTS_EXCLUDES = new HashSet<String>(Arrays.asList(Queue.ALTERNATE_EXCHANGE));
- public static void updateQueue(DurableConfigurationStore store, AMQQueue<?,?,?> queue)
+ public static void updateQueue(DurableConfigurationStore store, AMQQueue queue)
{
Map<String, Object> attributesMap = new LinkedHashMap<String, Object>();
@@ -65,7 +67,7 @@ public class DurableConfigurationStoreHelper
store.update(queue.getId(), QUEUE, attributesMap);
}
- public static void createQueue(DurableConfigurationStore store, AMQQueue<?,?,?> queue)
+ public static void createQueue(DurableConfigurationStore store, AMQQueue<?> queue)
{
Map<String, Object> attributesMap = new HashMap<String, Object>();
if (queue.getAlternateExchange() != null)
@@ -88,7 +90,7 @@ public class DurableConfigurationStoreHelper
store.remove(queue.getId(), QUEUE);
}
- public static void createExchange(DurableConfigurationStore store, org.apache.qpid.server.exchange.Exchange exchange)
+ public static void createExchange(DurableConfigurationStore store, ExchangeImpl exchange)
{
Map<String, Object> attributesMap = new HashMap<String, Object>();
attributesMap.put(Exchange.NAME, exchange.getName());
@@ -101,16 +103,16 @@ public class DurableConfigurationStoreHelper
}
- public static void removeExchange(DurableConfigurationStore store, org.apache.qpid.server.exchange.Exchange exchange)
+ public static void removeExchange(DurableConfigurationStore store, ExchangeImpl exchange)
{
store.remove(exchange.getId(), EXCHANGE);
}
- public static void createBinding(DurableConfigurationStore store, org.apache.qpid.server.binding.Binding binding)
+ public static void createBinding(DurableConfigurationStore store, BindingImpl binding)
{
Map<String, Object> attributesMap = new HashMap<String, Object>();
attributesMap.put(Binding.NAME, binding.getBindingKey());
- attributesMap.put(Binding.EXCHANGE, binding.getExchangeImpl().getId());
+ attributesMap.put(Binding.EXCHANGE, binding.getExchange().getId());
attributesMap.put(Binding.QUEUE, binding.getAMQQueue().getId());
Map<String, Object> arguments = binding.getArguments();
if (arguments != null)
@@ -122,7 +124,7 @@ public class DurableConfigurationStoreHelper
}
- public static void removeBinding(DurableConfigurationStore store, org.apache.qpid.server.binding.Binding binding)
+ public static void removeBinding(DurableConfigurationStore store, BindingImpl binding)
{
store.remove(binding.getId(), BINDING);
}
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 e3e3719558..1f52638279 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
@@ -34,8 +34,10 @@ import java.util.concurrent.TimeUnit;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.log4j.Logger;
+import org.apache.qpid.server.configuration.updater.TaskExecutor;
import org.apache.qpid.server.exchange.AMQUnknownExchangeType;
-import org.apache.qpid.server.model.ExclusivityPolicy;
+import org.apache.qpid.server.exchange.ExchangeImpl;
+import org.apache.qpid.server.exchange.NonDefaultExchange;
import org.apache.qpid.server.model.LifetimePolicy;
import org.apache.qpid.server.model.Queue;
import org.apache.qpid.server.configuration.ExchangeConfiguration;
@@ -45,7 +47,6 @@ import org.apache.qpid.server.connection.ConnectionRegistry;
import org.apache.qpid.server.connection.IConnectionRegistry;
import org.apache.qpid.server.exchange.DefaultExchangeFactory;
import org.apache.qpid.server.exchange.DefaultExchangeRegistry;
-import org.apache.qpid.server.exchange.Exchange;
import org.apache.qpid.server.exchange.ExchangeFactory;
import org.apache.qpid.server.exchange.ExchangeRegistry;
import org.apache.qpid.server.logging.actors.CurrentActor;
@@ -54,6 +55,7 @@ import org.apache.qpid.server.message.MessageDestination;
import org.apache.qpid.server.message.MessageNode;
import org.apache.qpid.server.message.MessageSource;
import org.apache.qpid.server.model.UUIDGenerator;
+import org.apache.qpid.server.model.adapter.VirtualHostAdapter;
import org.apache.qpid.server.plugin.ExchangeType;
import org.apache.qpid.server.plugin.QpidServiceLoader;
import org.apache.qpid.server.plugin.SystemNodeCreator;
@@ -358,7 +360,7 @@ public abstract class AbstractVirtualHost implements VirtualHost, IConnectionReg
attributes.put(org.apache.qpid.server.model.Exchange.LIFETIME_POLICY,
autodelete ? LifetimePolicy.DELETE_ON_NO_LINKS : LifetimePolicy.PERMANENT);
attributes.put(org.apache.qpid.server.model.Exchange.ALTERNATE_EXCHANGE, null);
- Exchange newExchange = createExchange(attributes);
+ ExchangeImpl newExchange = createExchange(attributes);
}
catch(ExchangeExistsException e)
{
@@ -381,13 +383,13 @@ public abstract class AbstractVirtualHost implements VirtualHost, IConnectionReg
//get the exchange name (returns default exchange name if none was specified)
String exchangeName = queueConfiguration.getExchange();
- Exchange exchange = _exchangeRegistry.getExchange(exchangeName);
+ ExchangeImpl exchange = _exchangeRegistry.getExchange(exchangeName);
if (exchange == null)
{
throw new ConfigurationException("Attempt to bind queue '" + queueName + "' to unknown exchange:" + exchangeName);
}
- Exchange defaultExchange = _exchangeRegistry.getDefaultExchange();
+ ExchangeImpl defaultExchange = _exchangeRegistry.getDefaultExchange();
//get routing keys in configuration (returns empty list if none are defined)
List<?> routingKeys = queueConfiguration.getRoutingKeys();
@@ -418,7 +420,7 @@ public abstract class AbstractVirtualHost implements VirtualHost, IConnectionReg
}
- private void configureBinding(AMQQueue queue, Exchange exchange, String routingKey, Map<String,Object> arguments)
+ private void configureBinding(AMQQueue queue, ExchangeImpl exchange, String routingKey, Map<String,Object> arguments)
{
if (_logger.isInfoEnabled())
{
@@ -458,13 +460,13 @@ public abstract class AbstractVirtualHost implements VirtualHost, IConnectionReg
_exchangeRegistry.addRegistryChangeListener(new ExchangeRegistry.RegistryChangeListener()
{
@Override
- public void exchangeRegistered(Exchange exchange)
+ public void exchangeRegistered(ExchangeImpl exchange)
{
listener.exchangeRegistered(exchange);
}
@Override
- public void exchangeUnregistered(Exchange exchange)
+ public void exchangeUnregistered(ExchangeImpl exchange)
{
listener.exchangeUnregistered(exchange);
}
@@ -591,37 +593,43 @@ public abstract class AbstractVirtualHost implements VirtualHost, IConnectionReg
}
@Override
- public Exchange getExchange(String name)
+ public ExchangeImpl getExchange(String name)
{
return _exchangeRegistry.getExchange(name);
}
@Override
- public Exchange getExchange(UUID id)
+ public ExchangeImpl getExchange(UUID id)
{
return _exchangeRegistry.getExchange(id);
}
@Override
- public Exchange getDefaultExchange()
+ public ExchangeImpl getDefaultExchange()
{
return _exchangeRegistry.getDefaultExchange();
}
@Override
- public Collection<Exchange> getExchanges()
+ public Collection<ExchangeImpl> getExchanges()
{
return Collections.unmodifiableCollection(_exchangeRegistry.getExchanges());
}
@Override
- public Collection<ExchangeType<? extends Exchange>> getExchangeTypes()
+ public Collection<NonDefaultExchange> getExchangesExceptDefault()
+ {
+ return Collections.unmodifiableCollection(_exchangeRegistry.getExchangesExceptDefault());
+ }
+
+ @Override
+ public Collection<ExchangeType<? extends ExchangeImpl>> getExchangeTypes()
{
return _exchangeFactory.getRegisteredTypes();
}
@Override
- public Exchange createExchange(Map<String,Object> attributes)
+ public NonDefaultExchange createExchange(Map<String,Object> attributes)
throws ExchangeExistsException, ReservedExchangeNameException,
UnknownExchangeException, AMQUnknownExchangeType
{
@@ -632,7 +640,7 @@ public abstract class AbstractVirtualHost implements VirtualHost, IConnectionReg
synchronized (_exchangeRegistry)
{
- Exchange existing;
+ ExchangeImpl existing;
if((existing = _exchangeRegistry.getExchange(name)) !=null)
{
throw new ExchangeExistsException(name,existing);
@@ -650,7 +658,7 @@ public abstract class AbstractVirtualHost implements VirtualHost, IConnectionReg
UUIDGenerator.generateExchangeUUID(name, getName()));
}
- Exchange exchange = _exchangeFactory.createExchange(attributes);
+ NonDefaultExchange exchange = _exchangeFactory.createExchange(attributes);
_exchangeRegistry.registerExchange(exchange);
if(durable)
@@ -662,7 +670,7 @@ public abstract class AbstractVirtualHost implements VirtualHost, IConnectionReg
}
@Override
- public void removeExchange(Exchange exchange, boolean force)
+ public void removeExchange(ExchangeImpl exchange, boolean force)
throws ExchangeIsAlternateException, RequiredExchangeException
{
if(exchange.hasReferrers())
@@ -1073,4 +1081,17 @@ public abstract class AbstractVirtualHost implements VirtualHost, IConnectionReg
{
return getConfiguration().getMaxDeliveryCount();
}
+
+ @Override
+ public TaskExecutor getTaskExecutor()
+ {
+ // todo - remove this once virtualhost is a configured object itself
+ return _model.getTaskExecutor();
+ }
+
+ @Override
+ public org.apache.qpid.server.model.VirtualHost getModel()
+ {
+ return _model;
+ }
}
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 02a6ed75fb..a682079de1 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
@@ -25,16 +25,17 @@ import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.apache.log4j.Logger;
-import org.apache.qpid.server.binding.Binding;
-import org.apache.qpid.server.exchange.Exchange;
+import org.apache.qpid.server.binding.BindingImpl;
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.exchange.ExchangeRegistry;
+import org.apache.qpid.server.exchange.NonDefaultExchange;
import org.apache.qpid.server.model.Queue;
import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.store.AbstractDurableConfiguredObjectRecoverer;
import org.apache.qpid.server.store.UnresolvedDependency;
import org.apache.qpid.server.store.UnresolvedObject;
-public class BindingRecoverer extends AbstractDurableConfiguredObjectRecoverer<Binding>
+public class BindingRecoverer extends AbstractDurableConfiguredObjectRecoverer<BindingImpl>
{
private static final Logger _logger = Logger.getLogger(BindingRecoverer.class);
@@ -49,7 +50,7 @@ public class BindingRecoverer extends AbstractDurableConfiguredObjectRecoverer<B
}
@Override
- public UnresolvedObject<Binding> createUnresolvedObject(final UUID id,
+ public UnresolvedObject<BindingImpl> createUnresolvedObject(final UUID id,
final String type,
final Map<String, Object> attributes)
{
@@ -62,7 +63,7 @@ public class BindingRecoverer extends AbstractDurableConfiguredObjectRecoverer<B
return org.apache.qpid.server.model.Binding.class.getSimpleName();
}
- private class UnresolvedBinding implements UnresolvedObject<Binding>
+ private class UnresolvedBinding implements UnresolvedObject<BindingImpl>
{
private final Map<String, Object> _bindingArgumentsMap;
private final String _bindingName;
@@ -73,7 +74,7 @@ public class BindingRecoverer extends AbstractDurableConfiguredObjectRecoverer<B
private List<UnresolvedDependency> _unresolvedDependencies =
new ArrayList<UnresolvedDependency>();
- private Exchange _exchange;
+ private ExchangeImpl _exchange;
private AMQQueue _queue;
public UnresolvedBinding(final UUID id,
@@ -104,16 +105,16 @@ public class BindingRecoverer extends AbstractDurableConfiguredObjectRecoverer<B
}
@Override
- public Binding resolve()
+ public BindingImpl resolve()
{
- if(_exchange.getBinding(_bindingName, _queue) == null)
+ if(!_exchange.hasBinding(_bindingName, _queue))
{
_logger.info("Restoring binding: (Exchange: " + _exchange.getName() + ", Queue: " + _queue.getName()
+ ", Routing Key: " + _bindingName + ", Arguments: " + _bindingArgumentsMap + ")");
_exchange.restoreBinding(_bindingId, _bindingName, _queue, _bindingArgumentsMap);
}
- return _exchange.getBinding(_bindingName, _queue);
+ return ((NonDefaultExchange)_exchange).getBinding(_bindingName, _queue);
}
private class QueueDependency implements UnresolvedDependency<AMQQueue>
@@ -140,7 +141,7 @@ public class BindingRecoverer extends AbstractDurableConfiguredObjectRecoverer<B
}
- private class ExchangeDependency implements UnresolvedDependency<Exchange>
+ private class ExchangeDependency implements UnresolvedDependency<ExchangeImpl>
{
@Override
@@ -156,7 +157,7 @@ public class BindingRecoverer extends AbstractDurableConfiguredObjectRecoverer<B
}
@Override
- public void resolve(final Exchange dependency)
+ public void resolve(final ExchangeImpl dependency)
{
_exchange = dependency;
_unresolvedDependencies.remove(this);
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ExchangeExistsException.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ExchangeExistsException.java
index 4e0e46e57b..0f57123c19 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ExchangeExistsException.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/ExchangeExistsException.java
@@ -19,19 +19,19 @@ package org.apache.qpid.server.virtualhost;/*
*
*/
-import org.apache.qpid.server.exchange.Exchange;
+import org.apache.qpid.server.exchange.ExchangeImpl;
public class ExchangeExistsException extends Exception
{
- private final Exchange _existing;
+ private final ExchangeImpl _existing;
- public ExchangeExistsException(String name, Exchange existing)
+ public ExchangeExistsException(String name, ExchangeImpl existing)
{
super(name);
_existing = existing;
}
- public Exchange getExistingExchange()
+ public ExchangeImpl getExistingExchange()
{
return _existing;
}
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 b800734231..bc65ece87e 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
@@ -24,16 +24,15 @@ import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import org.apache.qpid.server.exchange.AMQUnknownExchangeType;
-import org.apache.qpid.server.exchange.Exchange;
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.exchange.ExchangeFactory;
import org.apache.qpid.server.exchange.ExchangeRegistry;
-import org.apache.qpid.server.model.LifetimePolicy;
import org.apache.qpid.server.store.AbstractDurableConfiguredObjectRecoverer;
import org.apache.qpid.server.store.UnresolvedDependency;
import org.apache.qpid.server.store.UnresolvedObject;
import org.apache.qpid.server.util.ServerScopedRuntimeException;
-public class ExchangeRecoverer extends AbstractDurableConfiguredObjectRecoverer<Exchange>
+public class ExchangeRecoverer extends AbstractDurableConfiguredObjectRecoverer<ExchangeImpl>
{
private final ExchangeRegistry _exchangeRegistry;
private final ExchangeFactory _exchangeFactory;
@@ -51,16 +50,16 @@ public class ExchangeRecoverer extends AbstractDurableConfiguredObjectRecoverer<
}
@Override
- public UnresolvedObject<Exchange> createUnresolvedObject(final UUID id,
+ public UnresolvedObject<ExchangeImpl> createUnresolvedObject(final UUID id,
final String type,
final Map<String, Object> attributes)
{
return new UnresolvedExchange(id, attributes);
}
- private class UnresolvedExchange implements UnresolvedObject<Exchange>
+ private class UnresolvedExchange implements UnresolvedObject<ExchangeImpl>
{
- private Exchange _exchange;
+ private ExchangeImpl _exchange;
public UnresolvedExchange(final UUID id,
final Map<String, Object> attributeMap)
@@ -101,7 +100,7 @@ public class ExchangeRecoverer extends AbstractDurableConfiguredObjectRecoverer<
}
@Override
- public Exchange resolve()
+ public ExchangeImpl resolve()
{
return _exchange;
}
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 77ca1b1d4e..385f4e219e 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
@@ -26,7 +26,7 @@ import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.apache.log4j.Logger;
-import org.apache.qpid.server.exchange.Exchange;
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.exchange.ExchangeRegistry;
import org.apache.qpid.server.model.Queue;
import org.apache.qpid.server.queue.AMQQueue;
@@ -72,7 +72,7 @@ public class QueueRecoverer extends AbstractDurableConfiguredObjectRecoverer<AMQ
private final UUID _id;
private AMQQueue _queue;
private List<UnresolvedDependency> _dependencies = new ArrayList<UnresolvedDependency>();
- private Exchange _alternateExchange;
+ private ExchangeImpl _alternateExchange;
public UnresolvedQueue(final UUID id,
final String type,
@@ -136,7 +136,7 @@ public class QueueRecoverer extends AbstractDurableConfiguredObjectRecoverer<AMQ
@Override
public void resolve(final Object dependency)
{
- _alternateExchange = (Exchange) dependency;
+ _alternateExchange = (ExchangeImpl) dependency;
_dependencies.remove(this);
}
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java
index 304001cdd0..fd30119d7b 100755
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHost.java
@@ -25,15 +25,16 @@ import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ScheduledFuture;
+import org.apache.qpid.server.configuration.updater.TaskExecutor;
import org.apache.qpid.server.exchange.AMQUnknownExchangeType;
import org.apache.qpid.common.Closeable;
import org.apache.qpid.server.configuration.VirtualHostConfiguration;
import org.apache.qpid.server.connection.IConnectionRegistry;
-import org.apache.qpid.server.exchange.Exchange;
+import org.apache.qpid.server.exchange.ExchangeImpl;
+import org.apache.qpid.server.exchange.NonDefaultExchange;
import org.apache.qpid.server.message.MessageDestination;
import org.apache.qpid.server.message.MessageSource;
import org.apache.qpid.server.plugin.ExchangeType;
-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.security.SecurityManager;
@@ -61,24 +62,24 @@ public interface VirtualHost extends DurableConfigurationStore.Source, Closeable
AMQQueue createQueue(Map<String, Object> arguments) throws QueueExistsException;
- Exchange createExchange(Map<String,Object> attributes)
+ NonDefaultExchange createExchange(Map<String,Object> attributes)
throws ExchangeExistsException, ReservedExchangeNameException,
UnknownExchangeException, AMQUnknownExchangeType;
- void removeExchange(Exchange exchange, boolean force) throws ExchangeIsAlternateException,
+ void removeExchange(ExchangeImpl exchange, boolean force) throws ExchangeIsAlternateException,
RequiredExchangeException;
MessageDestination getMessageDestination(String name);
- Exchange getExchange(String name);
- Exchange getExchange(UUID id);
+ ExchangeImpl getExchange(String name);
+ ExchangeImpl getExchange(UUID id);
- Exchange getDefaultExchange();
+ ExchangeImpl getDefaultExchange();
- Collection<Exchange> getExchanges();
+ Collection<ExchangeImpl> getExchanges();
- Collection<ExchangeType<? extends Exchange>> getExchangeTypes();
+ Collection<ExchangeType<? extends ExchangeImpl>> getExchangeTypes();
DurableConfigurationStore getDurableConfigurationStore();
@@ -133,4 +134,10 @@ public interface VirtualHost extends DurableConfigurationStore.Source, Closeable
long getDefaultQueueFlowResumeSizeBytes();
int getDefaultMaximumDeliveryAttempts();
+
+ TaskExecutor getTaskExecutor();
+
+ Collection<NonDefaultExchange> getExchangesExceptDefault();
+
+ org.apache.qpid.server.model.VirtualHost getModel();
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostListener.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostListener.java
index 8527435eea..af8b0c8f29 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostListener.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostListener.java
@@ -20,7 +20,7 @@
*/
package org.apache.qpid.server.virtualhost;
-import org.apache.qpid.server.exchange.Exchange;
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.protocol.AMQConnectionModel;
import org.apache.qpid.server.queue.AMQQueue;
@@ -35,7 +35,7 @@ public interface VirtualHostListener
public void connectionUnregistered(AMQConnectionModel connection);
- public void exchangeRegistered(Exchange exchange);
+ public void exchangeRegistered(ExchangeImpl exchange);
- public void exchangeUnregistered(Exchange exchange);
+ public void exchangeUnregistered(ExchangeImpl exchange);
}
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/VirtualHostConfigurationTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/VirtualHostConfigurationTest.java
index 4dd9831454..ee90d71028 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/VirtualHostConfigurationTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/VirtualHostConfigurationTest.java
@@ -146,15 +146,15 @@ public class VirtualHostConfigurationTest extends QpidTestCase
// Check specifically configured values
AMQQueue aTest = vhost.getQueue("atest");
- assertEquals(4, aTest.getMaximumQueueDepth());
- assertEquals(5, aTest.getMaximumMessageSize());
- assertEquals(6, aTest.getMaximumMessageAge());
+ assertEquals(4, aTest.getAlertThresholdQueueDepthBytes());
+ assertEquals(5, aTest.getAlertThresholdMessageSize());
+ assertEquals(6, aTest.getAlertThresholdMessageAge());
// Check default values
AMQQueue bTest = vhost.getQueue("btest");
- assertEquals(1, bTest.getMaximumQueueDepth());
- assertEquals(2, bTest.getMaximumMessageSize());
- assertEquals(3, bTest.getMaximumMessageAge());
+ assertEquals(1, bTest.getAlertThresholdQueueDepthBytes());
+ assertEquals(2, bTest.getAlertThresholdMessageSize());
+ assertEquals(3, bTest.getAlertThresholdMessageAge());
}
public void testMaxDeliveryCount() throws Exception
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/exchange/DefaultExchangeFactoryTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/exchange/DefaultExchangeFactoryTest.java
index 276e098efe..5ec9a7762d 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/exchange/DefaultExchangeFactoryTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/exchange/DefaultExchangeFactoryTest.java
@@ -24,7 +24,6 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
-import java.util.UUID;
import org.apache.qpid.server.plugin.ExchangeType;
import org.apache.qpid.server.virtualhost.VirtualHost;
@@ -60,7 +59,7 @@ public class DefaultExchangeFactoryTest extends QpidTestCase
DefaultExchangeFactory factory = new TestExchangeFactory();
- Collection<ExchangeType<? extends Exchange>> registeredTypes = factory.getRegisteredTypes();
+ Collection<ExchangeType<? extends ExchangeImpl>> registeredTypes = factory.getRegisteredTypes();
assertEquals("Unexpected number of exchange types", _stubbedExchangeTypes.size(), registeredTypes.size());
assertTrue("Direct exchange type is not found", registeredTypes.contains(_directExchangeType));
assertTrue("Fanout exchange type is not found", registeredTypes.contains(_fanoutExchangeType));
@@ -169,7 +168,7 @@ public class DefaultExchangeFactoryTest extends QpidTestCase
public void testCreateDefaultExchangeFactoryWithCustomExchangeType()
{
- ExchangeType<?> customExchangeType = new ExchangeType<Exchange>()
+ ExchangeType<?> customExchangeType = new ExchangeType<NonDefaultExchange>()
{
@Override
public String getType()
@@ -178,7 +177,7 @@ public class DefaultExchangeFactoryTest extends QpidTestCase
}
@Override
- public Exchange newInstance(VirtualHost host, Map<String,Object> attributes)
+ public NonDefaultExchange newInstance(VirtualHost host, Map<String,Object> attributes)
{
return null;
}
@@ -198,7 +197,7 @@ public class DefaultExchangeFactoryTest extends QpidTestCase
DefaultExchangeFactory factory = new TestExchangeFactory();
- Collection<ExchangeType<? extends Exchange>> registeredTypes = factory.getRegisteredTypes();
+ Collection<ExchangeType<? extends ExchangeImpl>> registeredTypes = factory.getRegisteredTypes();
assertEquals("Unexpected number of exchange types", _stubbedExchangeTypes.size(), registeredTypes.size());
assertTrue("Direct exchange type is not found", registeredTypes.contains(_directExchangeType));
assertTrue("Fanout exchange type is not found", registeredTypes.contains(_fanoutExchangeType));
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 487b512180..be0704aeaa 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
@@ -142,7 +142,7 @@ public class FanoutExchangeTest extends TestCase
assertTrue("Expected queue1 to be routed to", result.contains(queue1));
assertTrue("Expected queue2 to be routed to", result.contains(queue2));
- _exchange.getBinding("key",queue2).delete();
+ _exchange.deleteBinding("key",queue2);
result = _exchange.route(mockMessage(true),InstanceProperties.EMPTY);
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 05569994d7..453a1b8e7d 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
@@ -23,13 +23,12 @@ package org.apache.qpid.server.exchange;
import java.util.Collection;
import junit.framework.TestCase;
-import org.apache.qpid.server.binding.Binding;
+import org.apache.qpid.server.binding.BindingImpl;
import org.apache.qpid.server.logging.LogActor;
import org.apache.qpid.server.logging.actors.CurrentActor;
import org.apache.qpid.server.message.AMQMessageHeader;
import org.apache.qpid.server.plugin.ExchangeType;
import org.apache.qpid.server.queue.AMQQueue;
-import org.apache.qpid.server.security.*;
import org.apache.qpid.server.virtualhost.VirtualHost;
import java.util.HashMap;
@@ -140,7 +139,7 @@ public class HeadersBindingTest extends TestCase
private MockHeader matchHeaders = new MockHeader();
private int _count = 0;
private AMQQueue _queue;
- private Exchange _exchange;
+ private NonDefaultExchange _exchange;
protected void setUp()
{
@@ -150,7 +149,7 @@ public class HeadersBindingTest extends TestCase
when(_queue.getVirtualHost()).thenReturn(vhost);
when(vhost.getSecurityManager()).thenReturn(mock(org.apache.qpid.server.security.SecurityManager.class));
CurrentActor.set(mock(LogActor.class));
- _exchange = mock(Exchange.class);
+ _exchange = mock(NonDefaultExchange.class);
when(_exchange.getExchangeType()).thenReturn(mock(ExchangeType.class));
}
@@ -165,7 +164,7 @@ public class HeadersBindingTest extends TestCase
matchHeaders.setString("A", "Value of A");
- Binding b = new Binding(null, getQueueName(), _queue, _exchange, bindHeaders);
+ BindingImpl b = new BindingImpl(null, getQueueName(), _queue, _exchange, bindHeaders);
assertTrue(new HeadersBinding(b).matches(matchHeaders));
}
@@ -176,7 +175,7 @@ public class HeadersBindingTest extends TestCase
matchHeaders.setString("A", "Value of A");
matchHeaders.setString("B", "Value of B");
- Binding b = new Binding(null, getQueueName(), _queue, _exchange, bindHeaders);
+ BindingImpl b = new BindingImpl(null, getQueueName(), _queue, _exchange, bindHeaders);
assertTrue(new HeadersBinding(b).matches(matchHeaders));
}
@@ -186,7 +185,7 @@ public class HeadersBindingTest extends TestCase
matchHeaders.setString("A", "Altered value of A");
- Binding b = new Binding(null, getQueueName(), _queue, _exchange, bindHeaders);
+ BindingImpl b = new BindingImpl(null, getQueueName(), _queue, _exchange, bindHeaders);
assertFalse(new HeadersBinding(b).matches(matchHeaders));
}
@@ -197,7 +196,7 @@ public class HeadersBindingTest extends TestCase
matchHeaders.setString("A", "Value of A");
- Binding b = new Binding(null, getQueueName(), _queue, _exchange, bindHeaders);
+ BindingImpl b = new BindingImpl(null, getQueueName(), _queue, _exchange, bindHeaders);
assertTrue(new HeadersBinding(b).matches(matchHeaders));
}
@@ -209,7 +208,7 @@ public class HeadersBindingTest extends TestCase
matchHeaders.setString("A", "Value of A");
- Binding b = new Binding(null, getQueueName(), _queue, _exchange, bindHeaders);
+ BindingImpl b = new BindingImpl(null, getQueueName(), _queue, _exchange, bindHeaders);
assertFalse(new HeadersBinding(b).matches(matchHeaders));
}
@@ -222,7 +221,7 @@ public class HeadersBindingTest extends TestCase
matchHeaders.setString("A", "Value of A");
matchHeaders.setString("B", "Value of B");
- Binding b = new Binding(null, getQueueName(), _queue, _exchange, bindHeaders);
+ BindingImpl b = new BindingImpl(null, getQueueName(), _queue, _exchange, bindHeaders);
assertTrue(new HeadersBinding(b).matches(matchHeaders));
}
@@ -236,7 +235,7 @@ public class HeadersBindingTest extends TestCase
matchHeaders.setString("B", "Value of B");
matchHeaders.setString("C", "Value of C");
- Binding b = new Binding(null, getQueueName(), _queue, _exchange, bindHeaders);
+ BindingImpl b = new BindingImpl(null, getQueueName(), _queue, _exchange, bindHeaders);
assertTrue(new HeadersBinding(b).matches(matchHeaders));
}
@@ -250,7 +249,7 @@ public class HeadersBindingTest extends TestCase
matchHeaders.setString("B", "Altered value of B");
matchHeaders.setString("C", "Value of C");
- Binding b = new Binding(null, getQueueName(), _queue, _exchange, bindHeaders);
+ BindingImpl b = new BindingImpl(null, getQueueName(), _queue, _exchange, bindHeaders);
assertFalse(new HeadersBinding(b).matches(matchHeaders));
}
@@ -261,7 +260,7 @@ public class HeadersBindingTest extends TestCase
matchHeaders.setString("A", "Value of A");
- Binding b = new Binding(null, getQueueName(), _queue, _exchange, bindHeaders);
+ BindingImpl b = new BindingImpl(null, getQueueName(), _queue, _exchange, bindHeaders);
assertTrue(new HeadersBinding(b).matches(matchHeaders));
}
@@ -273,7 +272,7 @@ public class HeadersBindingTest extends TestCase
matchHeaders.setString("A", "Value of A");
- Binding b = new Binding(null, getQueueName(), _queue, _exchange, bindHeaders);
+ BindingImpl b = new BindingImpl(null, getQueueName(), _queue, _exchange, bindHeaders);
assertTrue(new HeadersBinding(b).matches(matchHeaders));
}
@@ -286,7 +285,7 @@ public class HeadersBindingTest extends TestCase
matchHeaders.setString("A", "Value of A");
matchHeaders.setString("B", "Value of B");
- Binding b = new Binding(null, getQueueName(), _queue, _exchange, bindHeaders);
+ BindingImpl b = new BindingImpl(null, getQueueName(), _queue, _exchange, bindHeaders);
assertTrue(new HeadersBinding(b).matches(matchHeaders));
}
@@ -300,7 +299,7 @@ public class HeadersBindingTest extends TestCase
matchHeaders.setString("B", "Value of B");
matchHeaders.setString("C", "Value of C");
- Binding b = new Binding(null, getQueueName(), _queue, _exchange, bindHeaders);
+ BindingImpl b = new BindingImpl(null, getQueueName(), _queue, _exchange, bindHeaders);
assertTrue(new HeadersBinding(b).matches(matchHeaders));
}
@@ -314,7 +313,7 @@ public class HeadersBindingTest extends TestCase
matchHeaders.setString("B", "Altered value of B");
matchHeaders.setString("C", "Value of C");
- Binding b = new Binding(null, getQueueName(), _queue, _exchange, bindHeaders);
+ BindingImpl b = new BindingImpl(null, getQueueName(), _queue, _exchange, bindHeaders);
assertTrue(new HeadersBinding(b).matches(matchHeaders));
}
@@ -328,7 +327,7 @@ public class HeadersBindingTest extends TestCase
matchHeaders.setString("B", "Altered value of B");
matchHeaders.setString("C", "Value of C");
- Binding b = new Binding(null, getQueueName(), _queue, _exchange, bindHeaders);
+ BindingImpl b = new BindingImpl(null, getQueueName(), _queue, _exchange, bindHeaders);
assertFalse(new HeadersBinding(b).matches(matchHeaders));
}
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 420b26a756..e4e07813c7 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
@@ -178,7 +178,7 @@ public class HeadersExchangeTest extends TestCase
routeAndTest(mockMessage(getArgsMapFromStrings("F0000=Aardvark")), q1, q2);
routeAndTest(mockMessage(getArgsMapFromStrings("F0001")), q3);
- _exchange.getBinding("Q1",q1).delete();
+ _exchange.deleteBinding("Q1",q1);
routeAndTest(mockMessage(getArgsMapFromStrings("F0000")));
routeAndTest(mockMessage(getArgsMapFromStrings("F0000=Aardvark")), q2);
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/exchange/TopicExchangeTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/exchange/TopicExchangeTest.java
index 2faefa1525..1c191b7b2e 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/exchange/TopicExchangeTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/exchange/TopicExchangeTest.java
@@ -27,7 +27,7 @@ import java.util.UUID;
import junit.framework.Assert;
-import org.apache.qpid.server.binding.Binding;
+import org.apache.qpid.server.binding.BindingImpl;
import org.apache.qpid.server.message.InstanceProperties;
import org.apache.qpid.server.message.MessageReference;
import org.apache.qpid.server.message.ServerMessage;
@@ -81,7 +81,7 @@ public class TopicExchangeTest extends QpidTestCase
}
}
- private AMQQueue<?,?,?> createQueue(String name) throws QueueExistsException
+ private AMQQueue<?> createQueue(String name) throws QueueExistsException
{
Map<String,Object> attributes = new HashMap<String, Object>();
attributes.put(Queue.ID, UUIDGenerator.generateRandomUUID());
@@ -91,233 +91,233 @@ public class TopicExchangeTest extends QpidTestCase
public void testNoRoute() throws Exception
{
- AMQQueue<?,?,?> queue = createQueue("a*#b");
- _exchange.registerQueue(new Binding(null, "a.*.#.b",queue, _exchange, null));
+ AMQQueue<?> queue = createQueue("a*#b");
+ _exchange.registerQueue(new BindingImpl(null, "a.*.#.b",queue, _exchange, null));
routeMessage("a.b", 0l);
- Assert.assertEquals(0, queue.getMessageCount());
+ Assert.assertEquals(0, queue.getQueueDepthMessages());
}
public void testDirectMatch() throws Exception
{
- AMQQueue<?,?,?> queue = createQueue("ab");
- _exchange.registerQueue(new Binding(null, "a.b",queue, _exchange, null));
+ AMQQueue<?> queue = createQueue("ab");
+ _exchange.registerQueue(new BindingImpl(null, "a.b",queue, _exchange, null));
routeMessage("a.b",0l);
- Assert.assertEquals(1, queue.getMessageCount());
+ Assert.assertEquals(1, queue.getQueueDepthMessages());
Assert.assertEquals("Wrong message received", 0l, queue.getMessagesOnTheQueue().get(0).getMessage().getMessageNumber());
queue.clearQueue();
- Assert.assertEquals(0, queue.getMessageCount());
+ Assert.assertEquals(0, queue.getQueueDepthMessages());
int queueCount = routeMessage("a.c",1l);
Assert.assertEquals("Message should not route to any queues", 0, queueCount);
- Assert.assertEquals(0, queue.getMessageCount());
+ Assert.assertEquals(0, queue.getQueueDepthMessages());
}
public void testStarMatch() throws Exception
{
- AMQQueue<?,?,?> queue = createQueue("a*");
- _exchange.registerQueue(new Binding(null, "a.*",queue, _exchange, null));
+ AMQQueue<?> queue = createQueue("a*");
+ _exchange.registerQueue(new BindingImpl(null, "a.*",queue, _exchange, null));
routeMessage("a.b",0l);
- Assert.assertEquals(1, queue.getMessageCount());
+ Assert.assertEquals(1, queue.getQueueDepthMessages());
Assert.assertEquals("Wrong message received", 0l, queue.getMessagesOnTheQueue().get(0).getMessage().getMessageNumber());
queue.clearQueue();
- Assert.assertEquals(0, queue.getMessageCount());
+ Assert.assertEquals(0, queue.getQueueDepthMessages());
routeMessage("a.c",1l);
- Assert.assertEquals(1, queue.getMessageCount());
+ Assert.assertEquals(1, queue.getQueueDepthMessages());
Assert.assertEquals("Wrong message received", 1l, queue.getMessagesOnTheQueue().get(0).getMessage().getMessageNumber());
queue.clearQueue();
- Assert.assertEquals(0, queue.getMessageCount());
+ Assert.assertEquals(0, queue.getQueueDepthMessages());
int queueCount = routeMessage("a",2l);
Assert.assertEquals("Message should not route to any queues", 0, queueCount);
- Assert.assertEquals(0, queue.getMessageCount());
+ Assert.assertEquals(0, queue.getQueueDepthMessages());
}
public void testHashMatch() throws Exception
{
- AMQQueue<?,?,?> queue = createQueue("a#");
- _exchange.registerQueue(new Binding(null, "a.#",queue, _exchange, null));
+ AMQQueue<?> queue = createQueue("a#");
+ _exchange.registerQueue(new BindingImpl(null, "a.#",queue, _exchange, null));
routeMessage("a.b.c",0l);
- Assert.assertEquals(1, queue.getMessageCount());
+ Assert.assertEquals(1, queue.getQueueDepthMessages());
Assert.assertEquals("Wrong message received", 0l, queue.getMessagesOnTheQueue().get(0).getMessage().getMessageNumber());
queue.clearQueue();
- Assert.assertEquals(0, queue.getMessageCount());
+ Assert.assertEquals(0, queue.getQueueDepthMessages());
routeMessage("a.b",1l);
- Assert.assertEquals(1, queue.getMessageCount());
+ Assert.assertEquals(1, queue.getQueueDepthMessages());
Assert.assertEquals("Wrong message received", 1l, queue.getMessagesOnTheQueue().get(0).getMessage().getMessageNumber());
queue.clearQueue();
- Assert.assertEquals(0, queue.getMessageCount());
+ Assert.assertEquals(0, queue.getQueueDepthMessages());
routeMessage("a.c",2l);
- Assert.assertEquals(1, queue.getMessageCount());
+ Assert.assertEquals(1, queue.getQueueDepthMessages());
Assert.assertEquals("Wrong message received", 2l, queue.getMessagesOnTheQueue().get(0).getMessage().getMessageNumber());
queue.clearQueue();
- Assert.assertEquals(0, queue.getMessageCount());
+ Assert.assertEquals(0, queue.getQueueDepthMessages());
routeMessage("a",3l);
- Assert.assertEquals(1, queue.getMessageCount());
+ Assert.assertEquals(1, queue.getQueueDepthMessages());
Assert.assertEquals("Wrong message received", 3l, queue.getMessagesOnTheQueue().get(0).getMessage().getMessageNumber());
queue.clearQueue();
- Assert.assertEquals(0, queue.getMessageCount());
+ Assert.assertEquals(0, queue.getQueueDepthMessages());
int queueCount = routeMessage("b", 4l);
Assert.assertEquals("Message should not route to any queues", 0, queueCount);
- Assert.assertEquals(0, queue.getMessageCount());
+ Assert.assertEquals(0, queue.getQueueDepthMessages());
}
public void testMidHash() throws Exception
{
- AMQQueue<?,?,?> queue = createQueue("a");
- _exchange.registerQueue(new Binding(null, "a.*.#.b",queue, _exchange, null));
+ AMQQueue<?> queue = createQueue("a");
+ _exchange.registerQueue(new BindingImpl(null, "a.*.#.b",queue, _exchange, null));
routeMessage("a.c.d.b",0l);
- Assert.assertEquals(1, queue.getMessageCount());
+ Assert.assertEquals(1, queue.getQueueDepthMessages());
Assert.assertEquals("Wrong message received", 0l, queue.getMessagesOnTheQueue().get(0).getMessage().getMessageNumber());
queue.clearQueue();
- Assert.assertEquals(0, queue.getMessageCount());
+ Assert.assertEquals(0, queue.getQueueDepthMessages());
routeMessage("a.c.b",1l);
- Assert.assertEquals(1, queue.getMessageCount());
+ Assert.assertEquals(1, queue.getQueueDepthMessages());
Assert.assertEquals("Wrong message received", 1l, queue.getMessagesOnTheQueue().get(0).getMessage().getMessageNumber());
queue.clearQueue();
- Assert.assertEquals(0, queue.getMessageCount());
+ Assert.assertEquals(0, queue.getQueueDepthMessages());
}
public void testMatchAfterHash() throws Exception
{
- AMQQueue<?,?,?> queue = createQueue("a#");
- _exchange.registerQueue(new Binding(null, "a.*.#.b.c",queue, _exchange, null));
+ AMQQueue<?> queue = createQueue("a#");
+ _exchange.registerQueue(new BindingImpl(null, "a.*.#.b.c",queue, _exchange, null));
int queueCount = routeMessage("a.c.b.b",0l);
Assert.assertEquals("Message should not route to any queues", 0, queueCount);
- Assert.assertEquals(0, queue.getMessageCount());
+ Assert.assertEquals(0, queue.getQueueDepthMessages());
routeMessage("a.a.b.c",1l);
- Assert.assertEquals(1, queue.getMessageCount());
+ Assert.assertEquals(1, queue.getQueueDepthMessages());
Assert.assertEquals("Wrong message received", 1l, queue.getMessagesOnTheQueue().get(0).getMessage().getMessageNumber());
queue.clearQueue();
- Assert.assertEquals(0, queue.getMessageCount());
+ Assert.assertEquals(0, queue.getQueueDepthMessages());
queueCount = routeMessage("a.b.c.b",2l);
Assert.assertEquals("Message should not route to any queues", 0, queueCount);
- Assert.assertEquals(0, queue.getMessageCount());
+ Assert.assertEquals(0, queue.getQueueDepthMessages());
routeMessage("a.b.c.b.c",3l);
- Assert.assertEquals(1, queue.getMessageCount());
+ Assert.assertEquals(1, queue.getQueueDepthMessages());
Assert.assertEquals("Wrong message received", 3l, queue.getMessagesOnTheQueue().get(0).getMessage().getMessageNumber());
queue.clearQueue();
- Assert.assertEquals(0, queue.getMessageCount());
+ Assert.assertEquals(0, queue.getQueueDepthMessages());
}
public void testHashAfterHash() throws Exception
{
- AMQQueue<?,?,?> queue = createQueue("a#");
- _exchange.registerQueue(new Binding(null, "a.*.#.b.c.#.d",queue, _exchange, null));
+ AMQQueue<?> queue = createQueue("a#");
+ _exchange.registerQueue(new BindingImpl(null, "a.*.#.b.c.#.d",queue, _exchange, null));
int queueCount = routeMessage("a.c.b.b.c",0l);
Assert.assertEquals("Message should not route to any queues", 0, queueCount);
- Assert.assertEquals(0, queue.getMessageCount());
+ Assert.assertEquals(0, queue.getQueueDepthMessages());
routeMessage("a.a.b.c.d",1l);
- Assert.assertEquals(1, queue.getMessageCount());
+ Assert.assertEquals(1, queue.getQueueDepthMessages());
Assert.assertEquals("Wrong message received", 1l, queue.getMessagesOnTheQueue().get(0).getMessage().getMessageNumber());
queue.clearQueue();
- Assert.assertEquals(0, queue.getMessageCount());
+ Assert.assertEquals(0, queue.getQueueDepthMessages());
}
public void testHashHash() throws Exception
{
- AMQQueue<?,?,?> queue = createQueue("a#");
- _exchange.registerQueue(new Binding(null, "a.#.*.#.d",queue, _exchange, null));
+ AMQQueue<?> queue = createQueue("a#");
+ _exchange.registerQueue(new BindingImpl(null, "a.#.*.#.d",queue, _exchange, null));
int queueCount = routeMessage("a.c.b.b.c",0l);
Assert.assertEquals("Message should not route to any queues", 0, queueCount);
- Assert.assertEquals(0, queue.getMessageCount());
+ Assert.assertEquals(0, queue.getQueueDepthMessages());
routeMessage("a.a.b.c.d",1l);
- Assert.assertEquals(1, queue.getMessageCount());
+ Assert.assertEquals(1, queue.getQueueDepthMessages());
Assert.assertEquals("Wrong message received", 1l, queue.getMessagesOnTheQueue().get(0).getMessage().getMessageNumber());
queue.clearQueue();
- Assert.assertEquals(0, queue.getMessageCount());
+ Assert.assertEquals(0, queue.getQueueDepthMessages());
}
public void testSubMatchFails() throws Exception
{
- AMQQueue queue = createQueue("a");
- _exchange.registerQueue(new Binding(null, "a.b.c.d",queue, _exchange, null));
+ AMQQueue<?> queue = createQueue("a");
+ _exchange.registerQueue(new BindingImpl(null, "a.b.c.d",queue, _exchange, null));
int queueCount = routeMessage("a.b.c",0l);
Assert.assertEquals("Message should not route to any queues", 0, queueCount);
- Assert.assertEquals(0, queue.getMessageCount());
+ Assert.assertEquals(0, queue.getQueueDepthMessages());
}
@@ -340,27 +340,27 @@ public class TopicExchangeTest extends QpidTestCase
public void testMoreRouting() throws Exception
{
- AMQQueue queue = createQueue("a");
- _exchange.registerQueue(new Binding(null, "a.b",queue, _exchange, null));
+ AMQQueue<?> queue = createQueue("a");
+ _exchange.registerQueue(new BindingImpl(null, "a.b",queue, _exchange, null));
int queueCount = routeMessage("a.b.c",0l);
Assert.assertEquals("Message should not route to any queues", 0, queueCount);
- Assert.assertEquals(0, queue.getMessageCount());
+ Assert.assertEquals(0, queue.getQueueDepthMessages());
}
public void testMoreQueue() throws Exception
{
- AMQQueue queue = createQueue("a");
- _exchange.registerQueue(new Binding(null, "a.b",queue, _exchange, null));
+ AMQQueue<?> queue = createQueue("a");
+ _exchange.registerQueue(new BindingImpl(null, "a.b",queue, _exchange, null));
int queueCount = routeMessage("a",0l);
Assert.assertEquals("Message should not route to any queues", 0, queueCount);
- Assert.assertEquals(0, queue.getMessageCount());
+ Assert.assertEquals(0, queue.getQueueDepthMessages());
}
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/messages/ExchangeMessagesTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/messages/ExchangeMessagesTest.java
index f1452b8b88..d970a1f732 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/messages/ExchangeMessagesTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/messages/ExchangeMessagesTest.java
@@ -20,7 +20,7 @@
*/
package org.apache.qpid.server.logging.messages;
-import org.apache.qpid.server.exchange.Exchange;
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.util.BrokerTestHelper;
import java.util.List;
@@ -32,7 +32,7 @@ public class ExchangeMessagesTest extends AbstractTestMessages
{
public void testExchangeCreated_Transient() throws Exception
{
- Exchange exchange = BrokerTestHelper.createExchange("test");
+ ExchangeImpl exchange = BrokerTestHelper.createExchange("test");
String type = exchange.getTypeName();
String name = exchange.getName();
@@ -47,7 +47,7 @@ public class ExchangeMessagesTest extends AbstractTestMessages
public void testExchangeCreated_Persistent() throws Exception
{
- Exchange exchange = BrokerTestHelper.createExchange("test");
+ ExchangeImpl exchange = BrokerTestHelper.createExchange("test");
String type = exchange.getTypeName();
String name = exchange.getName();
@@ -72,7 +72,7 @@ public class ExchangeMessagesTest extends AbstractTestMessages
public void testExchangeDiscardedMessage() throws Exception
{
- Exchange exchange = BrokerTestHelper.createExchange("test");
+ ExchangeImpl exchange = BrokerTestHelper.createExchange("test");
final String name = exchange.getName();
final String routingKey = "routingKey";
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/subjects/AbstractTestLogSubject.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/subjects/AbstractTestLogSubject.java
index 0d4f2b2227..e7366dfe65 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/subjects/AbstractTestLogSubject.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/subjects/AbstractTestLogSubject.java
@@ -21,7 +21,7 @@
package org.apache.qpid.server.logging.subjects;
-import org.apache.qpid.server.exchange.Exchange;
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.logging.LogActor;
import org.apache.qpid.server.logging.LogMessage;
import org.apache.qpid.server.logging.LogSubject;
@@ -178,7 +178,7 @@ public abstract class AbstractTestLogSubject extends QpidTestCase
* @param message The message to check
* @param exchange the exchange to check against
*/
- protected void verifyExchange(String message, Exchange exchange)
+ protected void verifyExchange(String message, ExchangeImpl exchange)
{
String exchangeSlice = getSlice("ex", message);
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/subjects/BindingLogSubjectTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/subjects/BindingLogSubjectTest.java
index f083d2ba5d..14e193cc86 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/subjects/BindingLogSubjectTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/subjects/BindingLogSubjectTest.java
@@ -20,7 +20,7 @@
*/
package org.apache.qpid.server.logging.subjects;
-import org.apache.qpid.server.exchange.Exchange;
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.util.BrokerTestHelper;
import org.apache.qpid.server.virtualhost.VirtualHost;
@@ -36,7 +36,7 @@ public class BindingLogSubjectTest extends AbstractTestLogSubject
private AMQQueue _queue;
private String _routingKey;
- private Exchange _exchange;
+ private ExchangeImpl _exchange;
private VirtualHost _testVhost;
@Override
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/subjects/ExchangeLogSubjectTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/subjects/ExchangeLogSubjectTest.java
index 40188f9354..a16e7b2936 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/subjects/ExchangeLogSubjectTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/subjects/ExchangeLogSubjectTest.java
@@ -20,7 +20,7 @@
*/
package org.apache.qpid.server.logging.subjects;
-import org.apache.qpid.server.exchange.Exchange;
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.util.BrokerTestHelper;
import org.apache.qpid.server.virtualhost.VirtualHost;
@@ -30,7 +30,7 @@ import org.apache.qpid.server.virtualhost.VirtualHost;
*/
public class ExchangeLogSubjectTest extends AbstractTestLogSubject
{
- private Exchange _exchange;
+ private ExchangeImpl _exchange;
private VirtualHost _testVhost;
@Override
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/AMQQueueFactoryTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/AMQQueueFactoryTest.java
index e05a9d43da..d32f8bcf49 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/AMQQueueFactoryTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/AMQQueueFactoryTest.java
@@ -36,7 +36,8 @@ import org.apache.qpid.server.configuration.BrokerProperties;
import org.apache.qpid.server.configuration.QueueConfiguration;
import org.apache.qpid.server.configuration.VirtualHostConfiguration;
import org.apache.qpid.server.exchange.DefaultExchangeFactory;
-import org.apache.qpid.server.exchange.Exchange;
+import org.apache.qpid.server.exchange.ExchangeImpl;
+import org.apache.qpid.server.exchange.NonDefaultExchange;
import org.apache.qpid.server.logging.LogActor;
import org.apache.qpid.server.logging.RootMessageLogger;
import org.apache.qpid.server.logging.actors.CurrentActor;
@@ -140,16 +141,16 @@ public class AMQQueueFactoryTest extends QpidTestCase
when(_virtualHost.createExchange(attributes.capture())).then(
- new Answer<Exchange>()
+ new Answer<ExchangeImpl>()
{
@Override
- public Exchange answer(InvocationOnMock invocation) throws Throwable
+ public ExchangeImpl answer(InvocationOnMock invocation) throws Throwable
{
Map attributeValues = attributes.getValue();
final String name = MapValueConverter.getStringAttribute(org.apache.qpid.server.model.Exchange.NAME, attributeValues);
final UUID id = MapValueConverter.getUUIDAttribute(org.apache.qpid.server.model.Exchange.ID, attributeValues);
- final Exchange exchange = mock(Exchange.class);
+ final NonDefaultExchange exchange = mock(NonDefaultExchange.class);
ExchangeType exType = mock(ExchangeType.class);
when(exchange.getName()).thenReturn(name);
@@ -260,7 +261,7 @@ public class AMQQueueFactoryTest extends QpidTestCase
AMQQueue queue = _queueFactory.createQueue(attributes);
- Exchange altExchange = queue.getAlternateExchange();
+ ExchangeImpl 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());
@@ -272,7 +273,7 @@ public class AMQQueueFactoryTest extends QpidTestCase
assertNotNull("The DLQ was not registered as expected", dlQueue);
assertTrue("DLQ should have been bound to the alternate exchange", altExchange.isBound(dlQueue));
assertNull("DLQ should have no alternate exchange", dlQueue.getAlternateExchange());
- assertEquals("DLQ should have a zero maximum delivery count", 0, dlQueue.getMaximumDeliveryCount());
+ assertEquals("DLQ should have a zero maximum delivery count", 0, dlQueue.getMaximumDeliveryAttempts());
//2 queues should have been registered
verifyRegisteredQueueCount(2);
@@ -301,8 +302,8 @@ public class AMQQueueFactoryTest extends QpidTestCase
AMQQueue queue = _queueFactory.createQueue(attributes);
- assertEquals("Unexpected maximum delivery count", 5, queue.getMaximumDeliveryCount());
- Exchange altExchange = queue.getAlternateExchange();
+ assertEquals("Unexpected maximum delivery count", 5, queue.getMaximumDeliveryAttempts());
+ ExchangeImpl 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());
@@ -314,7 +315,7 @@ public class AMQQueueFactoryTest extends QpidTestCase
assertNotNull("The DLQ was not registered as expected", dlQueue);
assertTrue("DLQ should have been bound to the alternate exchange", altExchange.isBound(dlQueue));
assertNull("DLQ should have no alternate exchange", dlQueue.getAlternateExchange());
- assertEquals("DLQ should have a zero maximum delivery count", 0, dlQueue.getMaximumDeliveryCount());
+ assertEquals("DLQ should have a zero maximum delivery count", 0, dlQueue.getMaximumDeliveryAttempts());
//2 queues should have been registered
verifyRegisteredQueueCount(2);
@@ -403,7 +404,7 @@ public class AMQQueueFactoryTest extends QpidTestCase
final AMQQueue queue = _queueFactory.createQueue(attributes);
assertNotNull("The queue was not registered as expected ", queue);
- assertEquals("Maximum delivery count not as expected", 5, queue.getMaximumDeliveryCount());
+ assertEquals("Maximum delivery count not as expected", 5, queue.getMaximumDeliveryAttempts());
verifyRegisteredQueueCount(1);
}
@@ -421,7 +422,7 @@ public class AMQQueueFactoryTest extends QpidTestCase
final AMQQueue queue = _queueFactory.createQueue(attributes);
assertNotNull("The queue was not registered as expected ", queue);
- assertEquals("Maximum delivery count not as expected", 0, queue.getMaximumDeliveryCount());
+ assertEquals("Maximum delivery count not as expected", 0, queue.getMaximumDeliveryAttempts());
verifyRegisteredQueueCount(1);
}
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/AbstractQueueTestBase.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/AbstractQueueTestBase.java
index 5b4950c5ba..97365479fa 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/AbstractQueueTestBase.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/AbstractQueueTestBase.java
@@ -32,6 +32,7 @@ import static org.mockito.Mockito.when;
import java.util.*;
import org.apache.log4j.Logger;
+import org.apache.qpid.server.binding.BindingImpl;
import org.apache.qpid.server.message.MessageSource;
import org.apache.qpid.server.model.LifetimePolicy;
import org.apache.qpid.server.model.Queue;
@@ -41,6 +42,7 @@ import org.apache.qpid.server.message.AMQMessageHeader;
import org.apache.qpid.server.message.MessageInstance;
import org.apache.qpid.server.message.MessageReference;
import org.apache.qpid.server.message.ServerMessage;
+import org.apache.qpid.server.model.QueueNotificationListener;
import org.apache.qpid.server.model.UUIDGenerator;
import org.apache.qpid.server.queue.AbstractQueue.QueueEntryFilter;
import org.apache.qpid.server.consumer.MockConsumer;
@@ -50,19 +52,19 @@ import org.apache.qpid.server.util.BrokerTestHelper;
import org.apache.qpid.server.virtualhost.VirtualHost;
import org.apache.qpid.test.utils.QpidTestCase;
-abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends AbstractQueue<E,Q,L>, L extends QueueEntryListBase<E,Q,L>> extends QpidTestCase
+abstract class AbstractQueueTestBase extends QpidTestCase
{
private static final Logger _logger = Logger.getLogger(AbstractQueueTestBase.class);
- private Q _queue;
+ private AMQQueue<?> _queue;
private VirtualHost _virtualHost;
private String _qname = "qname";
private String _owner = "owner";
private String _routingKey = "routing key";
private DirectExchange _exchange;
private MockConsumer _consumerTarget = new MockConsumer();
- private QueueConsumer _consumer;
+ private QueueConsumer<?> _consumer;
private Map<String,Object> _arguments = Collections.emptyMap();
@Override
@@ -78,7 +80,7 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
attributes.put(Queue.NAME, _qname);
attributes.put(Queue.OWNER, _owner);
- _queue = (Q) _virtualHost.createQueue(attributes);
+ _queue = _virtualHost.createQueue(attributes);
_exchange = (DirectExchange) _virtualHost.getExchange(ExchangeDefaults.DIRECT_EXCHANGE_NAME);
}
@@ -106,7 +108,7 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
Map<String,Object> attributes = new HashMap<String, Object>(_arguments);
attributes.put(Queue.ID, UUIDGenerator.generateRandomUUID());
- _queue = (Q) _virtualHost.createQueue(attributes);
+ _queue = _virtualHost.createQueue(attributes);
assertNull("Queue was created", _queue);
}
catch (IllegalArgumentException e)
@@ -118,7 +120,7 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
Map<String,Object> attributes = new HashMap<String, Object>(_arguments);
attributes.put(Queue.ID, UUIDGenerator.generateRandomUUID());
attributes.put(Queue.NAME, "differentName");
- _queue = (Q) _virtualHost.createQueue(attributes);
+ _queue = _virtualHost.createQueue(attributes);
assertNotNull("Queue was not created", _queue);
}
@@ -138,12 +140,13 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
_exchange.isBound(_routingKey,_queue));
assertEquals("Exchange binding count", 1,
_queue.getBindings().size());
+ final BindingImpl firstBinding = _queue.getBindings().iterator().next();
assertEquals("Wrong exchange bound", _routingKey,
- _queue.getBindings().get(0).getBindingKey());
+ firstBinding.getBindingKey());
assertEquals("Wrong exchange bound", _exchange,
- _queue.getBindings().get(0).getExchangeImpl());
+ firstBinding.getExchange());
- _exchange.getBinding(_routingKey, _queue).delete();
+ _exchange.deleteBinding(_routingKey, _queue);
assertFalse("Routing key was still bound",
_exchange.isBound(_routingKey));
@@ -154,13 +157,13 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
ServerMessage messageA = createMessage(new Long(24));
// Check adding a consumer adds it to the queue
- _consumer = _queue.addConsumer(_consumerTarget, null, messageA.getClass(), "test",
+ _consumer = (QueueConsumer<?>) _queue.addConsumer(_consumerTarget, null, messageA.getClass(), "test",
EnumSet.of(Consumer.Option.ACQUIRES,
Consumer.Option.SEES_REQUEUES));
assertEquals("Queue does not have consumer", 1,
_queue.getConsumerCount());
assertEquals("Queue does not have active consumer", 1,
- _queue.getActiveConsumerCount());
+ _queue.getConsumerCountWithCredit());
// Check sending a message ends up with the subscriber
_queue.enqueue(messageA, null);
@@ -179,7 +182,7 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
assertTrue("Consumer still had queue", _consumerTarget.isClosed());
assertFalse("Queue still has consumer", 1 == _queue.getConsumerCount());
assertFalse("Queue still has active consumer",
- 1 == _queue.getActiveConsumerCount());
+ 1 == _queue.getConsumerCountWithCredit());
ServerMessage messageB = createMessage(new Long (25));
_queue.enqueue(messageB, null);
@@ -191,7 +194,7 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
{
ServerMessage messageA = createMessage(new Long(24));
_queue.enqueue(messageA, null);
- _consumer = _queue.addConsumer(_consumerTarget, null, messageA.getClass(), "test",
+ _consumer = (QueueConsumer<?>) _queue.addConsumer(_consumerTarget, null, messageA.getClass(), "test",
EnumSet.of(Consumer.Option.ACQUIRES,
Consumer.Option.SEES_REQUEUES));
Thread.sleep(150);
@@ -209,7 +212,7 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
ServerMessage messageB = createMessage(new Long(25));
_queue.enqueue(messageA, null);
_queue.enqueue(messageB, null);
- _consumer = _queue.addConsumer(_consumerTarget, null, messageA.getClass(), "test",
+ _consumer = (QueueConsumer<?>) _queue.addConsumer(_consumerTarget, null, messageA.getClass(), "test",
EnumSet.of(Consumer.Option.ACQUIRES,
Consumer.Option.SEES_REQUEUES));
Thread.sleep(150);
@@ -230,7 +233,7 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
ServerMessage messageC = createMessage(new Long(26));
- _consumer = _queue.addConsumer(_consumerTarget, null, messageA.getClass(), "test",
+ _consumer = (QueueConsumer<?>) _queue.addConsumer(_consumerTarget, null, messageA.getClass(), "test",
EnumSet.of(Consumer.Option.ACQUIRES,
Consumer.Option.SEES_REQUEUES));
@@ -270,14 +273,14 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
/**
* Tests that a released message that becomes expired is not resent to the subscriber.
- * This tests ensures that SimpleAMQQueueEntry.getNextAvailableEntry avoids expired entries.
+ * This tests ensures that SimpleAMQQueue<?>Entry.getNextAvailableEntry avoids expired entries.
* Verifies also that the QueueContext._releasedEntry is reset to null after the entry has been reset.
*/
public void testReleaseMessageThatBecomesExpiredIsNotRedelivered() throws Exception
{
ServerMessage messageA = createMessage(new Long(24));
- _consumer = _queue.addConsumer(_consumerTarget, null, messageA.getClass(), "test",
+ _consumer = (QueueConsumer<?>) _queue.addConsumer(_consumerTarget, null, messageA.getClass(), "test",
EnumSet.of(Consumer.Option.SEES_REQUEUES,
Consumer.Option.ACQUIRES));
@@ -329,7 +332,7 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
ServerMessage messageB = createMessage(new Long(25));
ServerMessage messageC = createMessage(new Long(26));
- _consumer = _queue.addConsumer(_consumerTarget, null, messageA.getClass(), "test",
+ _consumer = (QueueConsumer<?>) _queue.addConsumer(_consumerTarget, null, messageA.getClass(), "test",
EnumSet.of(Consumer.Option.ACQUIRES,
Consumer.Option.SEES_REQUEUES));
@@ -382,11 +385,11 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
MockConsumer target2 = new MockConsumer();
- QueueConsumer consumer1 = _queue.addConsumer(target1, null, messageA.getClass(), "test",
+ QueueConsumer consumer1 = (QueueConsumer) _queue.addConsumer(target1, null, messageA.getClass(), "test",
EnumSet.of(Consumer.Option.ACQUIRES,
Consumer.Option.SEES_REQUEUES));
- QueueConsumer consumer2 = _queue.addConsumer(target2, null, messageA.getClass(), "test",
+ QueueConsumer consumer2 = (QueueConsumer) _queue.addConsumer(target2, null, messageA.getClass(), "test",
EnumSet.of(Consumer.Option.ACQUIRES,
Consumer.Option.SEES_REQUEUES));
@@ -424,14 +427,14 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
ServerMessage messageA = createMessage(new Long(24));
// Check adding an exclusive consumer adds it to the queue
- _consumer = _queue.addConsumer(_consumerTarget, null, messageA.getClass(), "test",
+ _consumer = (QueueConsumer<?>) _queue.addConsumer(_consumerTarget, null, messageA.getClass(), "test",
EnumSet.of(Consumer.Option.EXCLUSIVE, Consumer.Option.ACQUIRES,
Consumer.Option.SEES_REQUEUES));
assertEquals("Queue does not have consumer", 1,
_queue.getConsumerCount());
assertEquals("Queue does not have active consumer", 1,
- _queue.getActiveConsumerCount());
+ _queue.getConsumerCountWithCredit());
// Check sending a message ends up with the subscriber
_queue.enqueue(messageA, null);
@@ -464,14 +467,14 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
// Check we cannot add an exclusive subscriber to a queue with an
// existing consumer
_consumer.close();
- _consumer = _queue.addConsumer(_consumerTarget, null, messageA.getClass(), "test",
+ _consumer = (QueueConsumer<?>) _queue.addConsumer(_consumerTarget, null, messageA.getClass(), "test",
EnumSet.of(Consumer.Option.ACQUIRES,
Consumer.Option.SEES_REQUEUES));
try
{
- _consumer = _queue.addConsumer(subB, null, messageA.getClass(), "test",
+ _consumer = (QueueConsumer<?>) _queue.addConsumer(subB, null, messageA.getClass(), "test",
EnumSet.of(Consumer.Option.EXCLUSIVE));
}
@@ -488,13 +491,13 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
Long id = new Long(26);
ServerMessage message = createMessage(id);
- _consumer = _queue.addConsumer(_consumerTarget, null, message.getClass(), "test",
+ _consumer = (QueueConsumer<?>) _queue.addConsumer(_consumerTarget, null, message.getClass(), "test",
EnumSet.of(Consumer.Option.ACQUIRES, Consumer.Option.SEES_REQUEUES));
- _queue.enqueue(message, new Action<MessageInstance<?,? extends Consumer>>()
+ _queue.enqueue(message, new Action<MessageInstance>()
{
@Override
- public void performAction(final MessageInstance<?,? extends Consumer> object)
+ public void performAction(final MessageInstance object)
{
QueueEntryImpl entry = (QueueEntryImpl) object;
entry.setRedelivered();
@@ -577,7 +580,7 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
// Get non-existent 0th QueueEntry & check returned list was empty
// (the position parameters in this method are indexed from 1)
- List<E> entries = _queue.getMessagesRangeOnTheQueue(0, 0);
+ List<? extends QueueEntry> entries = _queue.getMessagesRangeOnTheQueue(0, 0);
assertTrue(entries.size() == 0);
// Check that when 'from' is 0 it is ignored and the range continues from 1
@@ -725,7 +728,7 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
dequeueMessage(_queue, dequeueMessageIndex);
// get messages on the queue
- List<E> entries = _queue.getMessagesOnTheQueue();
+ List<? extends QueueEntry> entries = _queue.getMessagesOnTheQueue();
// assert queue entries
assertEquals(messageNumber - 1, entries.size());
@@ -762,9 +765,9 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
dequeueMessage(_queue, dequeueMessageIndex);
// get messages on the queue with filter accepting all available messages
- List<E> entries = _queue.getMessagesOnTheQueue(new QueueEntryFilter<E>()
+ List<? extends QueueEntry> entries = ((AbstractQueue)_queue).getMessagesOnTheQueue(new QueueEntryFilter()
{
- public boolean accept(E entry)
+ public boolean accept(QueueEntry entry)
{
return true;
}
@@ -813,7 +816,7 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
_queue.clearQueue();
// get queue entries
- List<E> entries = _queue.getMessagesOnTheQueue();
+ List<? extends QueueEntry> entries = _queue.getMessagesOnTheQueue();
// assert queue entries
assertNotNull(entries);
@@ -823,7 +826,7 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
public void testNotificationFiredOnEnqueue() throws Exception
{
- AMQQueue.NotificationListener listener = mock(AMQQueue.NotificationListener.class);
+ QueueNotificationListener listener = mock(QueueNotificationListener .class);
_queue.setNotificationListener(listener);
_queue.setMaximumMessageCount(2);
@@ -838,7 +841,7 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
public void testNotificationFiredAsync() throws Exception
{
- AMQQueue.NotificationListener listener = mock(AMQQueue.NotificationListener.class);
+ QueueNotificationListener listener = mock(QueueNotificationListener .class);
_queue.enqueue(createMessage(new Long(24)), null);
_queue.enqueue(createMessage(new Long(25)), null);
@@ -864,12 +867,12 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
* @param messageNumber
* number of messages to put into queue
*/
- protected List<E> enqueueGivenNumberOfMessages(Q queue, int messageNumber)
+ protected List<? extends QueueEntry> enqueueGivenNumberOfMessages(AMQQueue<?> queue, int messageNumber)
{
putGivenNumberOfMessages(queue, messageNumber);
// make sure that all enqueued messages are on the queue
- List<E> entries = queue.getMessagesOnTheQueue();
+ List<? extends QueueEntry> entries = queue.getMessagesOnTheQueue();
assertEquals(messageNumber, entries.size());
for (int i = 0; i < messageNumber; i++)
{
@@ -890,7 +893,7 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
* @param queue
* @param messageNumber
*/
- protected <T extends AbstractQueue> void putGivenNumberOfMessages(T queue, int messageNumber)
+ protected void putGivenNumberOfMessages(AMQQueue<?> queue, int messageNumber)
{
for (int i = 0; i < messageNumber; i++)
{
@@ -920,9 +923,9 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
* @param dequeueMessageIndex
* entry index to dequeue.
*/
- protected QueueEntry dequeueMessage(AMQQueue queue, int dequeueMessageIndex)
+ protected QueueEntry dequeueMessage(AMQQueue<?> queue, int dequeueMessageIndex)
{
- List<QueueEntry> entries = queue.getMessagesOnTheQueue();
+ List<? extends QueueEntry> entries = queue.getMessagesOnTheQueue();
QueueEntry entry = entries.get(dequeueMessageIndex);
entry.acquire();
entry.delete();
@@ -953,12 +956,12 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
}
}
- public Q getQueue()
+ public AMQQueue<?> getQueue()
{
return _queue;
}
- protected void setQueue(Q queue)
+ protected void setQueue(AMQQueue<?> queue)
{
_queue = queue;
}
@@ -996,7 +999,7 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
return message;
}
- private static class EntryListAddingAction implements Action<MessageInstance<?,? extends Consumer>>
+ private static class EntryListAddingAction implements Action<MessageInstance>
{
private final ArrayList<QueueEntry> _queueEntries;
@@ -1005,7 +1008,7 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
_queueEntries = queueEntries;
}
- public void performAction(MessageInstance<?,? extends Consumer> entry)
+ public void performAction(MessageInstance entry)
{
_queueEntries.add((QueueEntry) entry);
}
@@ -1043,17 +1046,17 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
}
- static class TestSimpleQueueEntryListFactory implements QueueEntryListFactory<NonAsyncDeliverEntry, NonAsyncDeliverQueue, NonAsyncDeliverList>
+ static class TestSimpleQueueEntryListFactory implements QueueEntryListFactory
{
@Override
- public NonAsyncDeliverList createQueueEntryList(final NonAsyncDeliverQueue queue)
+ public NonAsyncDeliverList createQueueEntryList(final AMQQueue<?> queue)
{
- return new NonAsyncDeliverList(queue);
+ return new NonAsyncDeliverList((NonAsyncDeliverQueue) queue);
}
}
- private static class NonAsyncDeliverEntry extends OrderedQueueEntry<NonAsyncDeliverEntry, NonAsyncDeliverQueue, NonAsyncDeliverList>
+ private static class NonAsyncDeliverEntry extends OrderedQueueEntry
{
public NonAsyncDeliverEntry(final NonAsyncDeliverList queueEntryList)
@@ -1074,17 +1077,17 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
}
}
- private static class NonAsyncDeliverList extends OrderedQueueEntryList<NonAsyncDeliverEntry, NonAsyncDeliverQueue, NonAsyncDeliverList>
+ private static class NonAsyncDeliverList extends OrderedQueueEntryList
{
- private static final HeadCreator<NonAsyncDeliverEntry, NonAsyncDeliverQueue, NonAsyncDeliverList> HEAD_CREATOR =
- new HeadCreator<NonAsyncDeliverEntry, NonAsyncDeliverQueue, NonAsyncDeliverList>()
+ private static final HeadCreator HEAD_CREATOR =
+ new HeadCreator()
{
@Override
- public NonAsyncDeliverEntry createHead(final NonAsyncDeliverList list)
+ public NonAsyncDeliverEntry createHead(final QueueEntryList list)
{
- return new NonAsyncDeliverEntry(list);
+ return new NonAsyncDeliverEntry((NonAsyncDeliverList) list);
}
};
@@ -1101,7 +1104,7 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
}
- private static class NonAsyncDeliverQueue extends AbstractQueue<NonAsyncDeliverEntry, NonAsyncDeliverQueue, NonAsyncDeliverList>
+ private static class NonAsyncDeliverQueue extends AbstractQueue
{
public NonAsyncDeliverQueue(final TestSimpleQueueEntryListFactory factory, VirtualHost vhost)
{
@@ -1119,7 +1122,7 @@ abstract class AbstractQueueTestBase<E extends QueueEntryImpl<E,Q,L>, Q extends
}
@Override
- public void deliverAsync(QueueConsumer sub)
+ public void deliverAsync(QueueConsumer<?> sub)
{
// do nothing, i.e prevent deliveries by the SubFlushRunner
// when registering the new consumers
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/ConflationQueueListTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/ConflationQueueListTest.java
index e77125bb0e..54a25dd0e9 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/ConflationQueueListTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/ConflationQueueListTest.java
@@ -58,7 +58,7 @@ public class ConflationQueueListTest extends TestCase
when(virtualHost.getSecurityManager()).thenReturn(mock(SecurityManager.class));
_queue = new ConflationQueue(virtualHost, queueAttributes);
- _list = _queue.getEntries();
+ _list = (ConflationQueueList) _queue.getEntries();
}
public void testListHasNoEntries()
@@ -190,7 +190,7 @@ public class ConflationQueueListTest extends TestCase
private int countEntries(ConflationQueueList list)
{
- QueueEntryIterator<ConflationQueueList.ConflationQueueEntry, ConflationQueue, ConflationQueueList,QueueConsumer<?,ConflationQueueList.ConflationQueueEntry, ConflationQueue, ConflationQueueList>> iterator =
+ QueueEntryIterator iterator =
list.iterator();
int count = 0;
while(iterator.advance())
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/ConsumerListTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/ConsumerListTest.java
index dc920bf555..4a762afbdb 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/ConsumerListTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/ConsumerListTest.java
@@ -22,9 +22,7 @@ package org.apache.qpid.server.queue;
import org.apache.qpid.server.message.MessageInstance;
-import org.apache.qpid.server.protocol.AMQSessionModel;
import org.apache.qpid.server.consumer.Consumer;
-import org.apache.qpid.server.consumer.ConsumerTarget;
import org.apache.qpid.test.utils.QpidTestCase;
import static org.mockito.Mockito.mock;
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/MockMessageInstance.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/MockMessageInstance.java
index 4df8f91ede..7c89f9855c 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/MockMessageInstance.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/MockMessageInstance.java
@@ -31,7 +31,7 @@ import org.apache.qpid.server.txn.ServerTransaction;
import org.apache.qpid.server.util.Action;
import org.apache.qpid.server.util.StateChangeListener;
-public class MockMessageInstance implements MessageInstance<MockMessageInstance,Consumer>
+public class MockMessageInstance implements MessageInstance
{
private ServerMessage _message;
@@ -48,7 +48,7 @@ public class MockMessageInstance implements MessageInstance<MockMessageInstance,
}
@Override
- public int routeToAlternate(final Action<? super MessageInstance<?, ? extends Consumer>> action,
+ public int routeToAlternate(final Action<? super MessageInstance> action,
final ServerTransaction txn)
{
return 0;
@@ -178,13 +178,13 @@ public class MockMessageInstance implements MessageInstance<MockMessageInstance,
}
@Override
- public void addStateChangeListener(final StateChangeListener<? super MockMessageInstance, State> listener)
+ public void addStateChangeListener(final StateChangeListener<? super MessageInstance, State> listener)
{
}
@Override
- public boolean removeStateChangeListener(final StateChangeListener<? super MockMessageInstance, State> listener)
+ public boolean removeStateChangeListener(final StateChangeListener<? super MessageInstance, State> listener)
{
return false;
}
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/NotificationCheckTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/NotificationCheckTest.java
index 3834fac2d0..9d4af86022 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/NotificationCheckTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/NotificationCheckTest.java
@@ -36,19 +36,19 @@ import static org.apache.qpid.server.queue.NotificationCheck.QUEUE_DEPTH_ALERT;
import junit.framework.TestCase;
import org.apache.qpid.server.message.ServerMessage;
-import org.apache.qpid.server.queue.AMQQueue.NotificationListener;
+import org.apache.qpid.server.model.QueueNotificationListener;
public class NotificationCheckTest extends TestCase
{
private ServerMessage<?> _message = mock(ServerMessage.class);
private AMQQueue _queue = mock(AMQQueue.class);
- private NotificationListener _listener = mock(NotificationListener.class);
+ private QueueNotificationListener _listener = mock(QueueNotificationListener .class);
public void testMessageCountAlertFires() throws Exception
{
- when(_queue.getMaximumMessageCount()).thenReturn(1000l);
- when(_queue.getMessageCount()).thenReturn(999, 1000, 1001);
+ when(_queue.getAlertThresholdQueueDepthMessages()).thenReturn(1000l);
+ when(_queue.getQueueDepthMessages()).thenReturn(999, 1000, 1001);
MESSAGE_COUNT_ALERT.notifyIfNecessary(_message, _queue, _listener);
verifyZeroInteractions(_listener);
@@ -62,7 +62,7 @@ public class NotificationCheckTest extends TestCase
public void testMessageSizeAlertFires() throws Exception
{
- when(_queue.getMaximumMessageSize()).thenReturn(1024l);
+ when(_queue.getAlertThresholdMessageSize()).thenReturn(1024l);
when(_message.getSize()).thenReturn(1023l, 1024l, 1025l);
MESSAGE_SIZE_ALERT.notifyIfNecessary(_message, _queue, _listener);
@@ -78,7 +78,7 @@ public class NotificationCheckTest extends TestCase
public void testMessageAgeAlertFires() throws Exception
{
long now = System.currentTimeMillis();
- when(_queue.getMaximumMessageAge()).thenReturn(1000l);
+ when(_queue.getAlertThresholdMessageAge()).thenReturn(1000l);
when(_queue.getOldestMessageArrivalTime()).thenReturn(now, now - 15000);
MESSAGE_AGE_ALERT.notifyIfNecessary(_message, _queue, _listener);
@@ -91,8 +91,8 @@ public class NotificationCheckTest extends TestCase
public void testQueueDepthAlertFires() throws Exception
{
- when(_queue.getMaximumQueueDepth()).thenReturn(1024l);
- when(_queue.getQueueDepth()).thenReturn(1023l, 1024l, 2048l);
+ when(_queue.getAlertThresholdQueueDepthBytes()).thenReturn(1024l);
+ when(_queue.getQueueDepthBytes()).thenReturn(1023l, 1024l, 2048l);
QUEUE_DEPTH_ALERT.notifyIfNecessary(_message, _queue, _listener);
verifyZeroInteractions(_listener);
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 44d12f2763..6e444419a4 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
@@ -56,7 +56,7 @@ public class PriorityQueueListTest extends QpidTestCase
final VirtualHost virtualHost = mock(VirtualHost.class);
when(virtualHost.getSecurityManager()).thenReturn(mock(SecurityManager.class));
PriorityQueue queue = new PriorityQueue(virtualHost, queueAttributes);
- _list = queue.getEntries();
+ _list = (PriorityQueueList) queue.getEntries();
for (int i = 0; i < PRIORITIES.length; i++)
{
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/PriorityQueueTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/PriorityQueueTest.java
index f6c700f959..9c8449ce5f 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/PriorityQueueTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/PriorityQueueTest.java
@@ -49,7 +49,7 @@ public class PriorityQueueTest extends AbstractQueueTestBase
{
// Enqueue messages in order
- AbstractQueue queue = getQueue();
+ AbstractQueue queue = (AbstractQueue) getQueue();
queue.enqueue(createMessage(1L, (byte) 10), null);
queue.enqueue(createMessage(2L, (byte) 4), null);
queue.enqueue(createMessage(3L, (byte) 0), null);
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 fbebdb6008..0657c8cdad 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
@@ -20,7 +20,6 @@ package org.apache.qpid.server.queue;
import junit.framework.TestCase;
-import org.apache.qpid.server.consumer.ConsumerTarget;
import org.apache.qpid.server.logging.LogActor;
import org.apache.qpid.server.logging.RootMessageLogger;
import org.apache.qpid.server.logging.actors.CurrentActor;
@@ -29,8 +28,6 @@ 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.protocol.AMQSessionModel;
-import org.apache.qpid.server.security.*;
import org.apache.qpid.server.virtualhost.VirtualHost;
import java.lang.reflect.Field;
@@ -143,7 +140,7 @@ public abstract class QueueEntryImplTestBase extends TestCase
MessageInstance.ConsumerAcquiredState owningState = new QueueEntryImpl.ConsumerAcquiredState(consumer);
when(consumer.getOwningState()).thenReturn(owningState);
- when(consumer.getId()).thenReturn(_consumerId++);
+ when(consumer.getConsumerNumber()).thenReturn(_consumerId++);
return consumer;
}
@@ -213,7 +210,7 @@ public abstract class QueueEntryImplTestBase extends TestCase
when(virtualHost.getSecurityManager()).thenReturn(mock(org.apache.qpid.server.security.SecurityManager.class));
StandardQueue queue = new StandardQueue(virtualHost, queueAttributes);
- OrderedQueueEntryList queueEntryList = queue.getEntries();
+ OrderedQueueEntryList queueEntryList = (OrderedQueueEntryList) queue.getEntries();
// create test entries
for(int i = 0; i < numberOfEntries ; i++)
@@ -223,7 +220,7 @@ public abstract class QueueEntryImplTestBase extends TestCase
final MessageReference reference = mock(MessageReference.class);
when(reference.getMessage()).thenReturn(message);
when(message.newReference()).thenReturn(reference);
- QueueEntryImpl entry = queueEntryList.add(message);
+ QueueEntryImpl entry = (QueueEntryImpl) queueEntryList.add(message);
entries[i] = entry;
}
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/QueueEntryListTestBase.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/QueueEntryListTestBase.java
index 07d00daba5..39d53637e4 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/QueueEntryListTestBase.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/QueueEntryListTestBase.java
@@ -32,10 +32,10 @@ import static org.mockito.Mockito.when;
/**
* Abstract test class for QueueEntryList implementations.
*/
-public abstract class QueueEntryListTestBase<E extends QueueEntry<E,Q,C>, Q extends AMQQueue<E,Q,C>, L extends QueueEntryList<E,Q,L,C>, C extends Consumer> extends TestCase
+public abstract class QueueEntryListTestBase extends TestCase
{
- public abstract L getTestList();
- public abstract L getTestList(boolean newList);
+ public abstract QueueEntryList getTestList();
+ public abstract QueueEntryList getTestList(boolean newList);
public abstract long getExpectedFirstMsgId();
public abstract int getExpectedListLength();
public abstract ServerMessage getTestMessageToAdd();
@@ -45,7 +45,7 @@ public abstract class QueueEntryListTestBase<E extends QueueEntry<E,Q,C>, Q exte
assertEquals("Unexpected head entry returned by getHead()", getTestList().getQueue(), getTestQueue());
}
- protected abstract Q getTestQueue();
+ protected abstract AMQQueue getTestQueue();
/**
* Test to add a message with properties specific to the queue type.
@@ -54,10 +54,10 @@ public abstract class QueueEntryListTestBase<E extends QueueEntry<E,Q,C>, Q exte
*/
public void testAddSpecificMessage()
{
- final L list = getTestList();
+ final QueueEntryList list = getTestList();
list.add(getTestMessageToAdd());
- final QueueEntryIterator<E,Q,L,C> iter = list.iterator();
+ final QueueEntryIterator iter = list.iterator();
int count = 0;
while(iter.advance())
{
@@ -74,11 +74,11 @@ public abstract class QueueEntryListTestBase<E extends QueueEntry<E,Q,C>, Q exte
*/
public void testAddGenericMessage()
{
- final L list = getTestList();
+ final QueueEntryList list = getTestList();
final ServerMessage message = createServerMessage(666l);
list.add(message);
- final QueueEntryIterator<E,Q,L,C> iter = list.iterator();
+ final QueueEntryIterator iter = list.iterator();
int count = 0;
while(iter.advance())
{
@@ -108,8 +108,8 @@ public abstract class QueueEntryListTestBase<E extends QueueEntry<E,Q,C>, Q exte
*/
public void testListNext()
{
- final L entryList = getTestList();
- E entry = entryList.getHead();
+ final QueueEntryList entryList = getTestList();
+ QueueEntry entry = entryList.getHead();
int count = 0;
while(entryList.next(entry) != null)
{
@@ -126,7 +126,7 @@ public abstract class QueueEntryListTestBase<E extends QueueEntry<E,Q,C>, Q exte
*/
public void testIterator()
{
- final QueueEntryIterator<E,Q,L,C> iter = getTestList().iterator();
+ final QueueEntryIterator iter = getTestList().iterator();
int count = 0;
while(iter.advance())
{
@@ -144,10 +144,10 @@ public abstract class QueueEntryListTestBase<E extends QueueEntry<E,Q,C>, Q exte
public void testDequeuedMessagedNotPresentInIterator() throws Exception
{
final int numberOfMessages = getExpectedListLength();
- final L entryList = getTestList();
+ final QueueEntryList entryList = getTestList();
// dequeue all even messages
- final QueueEntryIterator<E,Q,L,C> it1 = entryList.iterator();
+ final QueueEntryIterator it1 = entryList.iterator();
int counter = 0;
while (it1.advance())
{
@@ -160,7 +160,7 @@ public abstract class QueueEntryListTestBase<E extends QueueEntry<E,Q,C>, Q exte
}
// iterate and check that dequeued messages are not returned by iterator
- final QueueEntryIterator<E,Q,L,C> it2 = entryList.iterator();
+ final QueueEntryIterator it2 = entryList.iterator();
int counter2 = 0;
while(it2.advance())
{
@@ -179,7 +179,7 @@ public abstract class QueueEntryListTestBase<E extends QueueEntry<E,Q,C>, Q exte
*/
public void testGetHead()
{
- final E head = getTestList().getHead();
+ final QueueEntry head = getTestList().getHead();
assertNull("Head entry should not contain an actual message", head.getMessage());
assertEquals("Unexpected message id for first list entry", getExpectedFirstMsgId(), getTestList().next(head)
.getMessage().getMessageNumber());
@@ -191,16 +191,16 @@ public abstract class QueueEntryListTestBase<E extends QueueEntry<E,Q,C>, Q exte
*/
public void testEntryDeleted()
{
- final E head = getTestList().getHead();
+ final QueueEntry head = getTestList().getHead();
- final E first = getTestList().next(head);
+ final QueueEntry first = getTestList().next(head);
first.delete();
- final E second = getTestList().next(head);
+ final QueueEntry second = getTestList().next(head);
assertNotSame("After deletion the next entry should be different", first.getMessage().getMessageNumber(), second
.getMessage().getMessageNumber());
- final E third = getTestList().next(first);
+ final QueueEntry third = getTestList().next(first);
assertEquals("After deletion the deleted nodes next node should be the same as the next from head", second
.getMessage().getMessageNumber(), third.getMessage().getMessageNumber());
}
@@ -214,11 +214,11 @@ public abstract class QueueEntryListTestBase<E extends QueueEntry<E,Q,C>, Q exte
*/
public void testIteratorIgnoresDeletedFinalNode() throws Exception
{
- L list = getTestList(true);
+ QueueEntryList list = getTestList(true);
int i = 0;
- E queueEntry1 = list.add(createServerMessage(i++));
- E queueEntry2 = list.add(createServerMessage(i++));
+ QueueEntry queueEntry1 = list.add(createServerMessage(i++));
+ QueueEntry queueEntry2 = list.add(createServerMessage(i++));
assertSame(queueEntry2, list.next(queueEntry1));
assertNull(list.next(queueEntry2));
@@ -227,7 +227,7 @@ public abstract class QueueEntryListTestBase<E extends QueueEntry<E,Q,C>, Q exte
queueEntry2.delete();
assertTrue("Deleting node should have succeeded", queueEntry2.isDeleted());
- QueueEntryIterator<E,Q,L,C> iter = list.iterator();
+ QueueEntryIterator iter = list.iterator();
//verify the iterator isn't 'atTail', can advance, and returns the 1st QueueEntry
assertFalse("Iterator should not have been 'atTail'", iter.atTail());
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SelfValidatingSortedQueueEntryList.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SelfValidatingSortedQueueEntryList.java
index 87182dc8dc..0ea4ee930d 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SelfValidatingSortedQueueEntryList.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SelfValidatingSortedQueueEntryList.java
@@ -51,7 +51,7 @@ public class SelfValidatingSortedQueueEntryList extends SortedQueueEntryList
}
@Override /** Overridden to automatically check queue properties before and after. */
- public void entryDeleted(SortedQueueEntry entry)
+ public void entryDeleted(QueueEntry entry)
{
assertQueueProperties(); //before delete
super.entryDeleted(entry);
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 87cda34cc9..9039654c15 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
@@ -50,7 +50,7 @@ public class SimpleQueueEntryImplTest extends QueueEntryImplTestBase
StandardQueue queue = new StandardQueue(virtualHost, queueAttributes);
- queueEntryList = queue.getEntries();
+ queueEntryList = (OrderedQueueEntryList) queue.getEntries();
super.setUp();
}
@@ -63,7 +63,7 @@ public class SimpleQueueEntryImplTest extends QueueEntryImplTestBase
final MessageReference reference = mock(MessageReference.class);
when(reference.getMessage()).thenReturn(message);
when(message.newReference()).thenReturn(reference);
- return queueEntryList.add(message);
+ return (QueueEntryImpl) queueEntryList.add(message);
}
public void testCompareTo()
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 6dfc067db7..ef64226048 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
@@ -40,7 +40,7 @@ import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-public class SortedQueueEntryListTest extends QueueEntryListTestBase<SortedQueueEntry, SortedQueue, SortedQueueEntryList, QueueConsumer<?,SortedQueueEntry, SortedQueue, SortedQueueEntryList>>
+public class SortedQueueEntryListTest extends QueueEntryListTestBase
{
private static SelfValidatingSortedQueueEntryList _sqel;
@@ -90,13 +90,13 @@ public class SortedQueueEntryListTest extends QueueEntryListTestBase<SortedQueue
final VirtualHost virtualHost = mock(VirtualHost.class);
when(virtualHost.getSecurityManager()).thenReturn(mock(org.apache.qpid.server.security.SecurityManager.class));
- _testQueue = new SortedQueue(virtualHost, attributes, new QueueEntryListFactory<SortedQueueEntry,SortedQueue,SortedQueueEntryList>()
+ _testQueue = new SortedQueue(virtualHost, attributes, new QueueEntryListFactory()
{
@Override
- public SortedQueueEntryList createQueueEntryList(final SortedQueue queue)
+ public SortedQueueEntryList createQueueEntryList(final AMQQueue queue)
{
- return new SelfValidatingSortedQueueEntryList(queue, "KEY");
+ return new SelfValidatingSortedQueueEntryList((SortedQueue) queue, "KEY");
}
});
_sqel = (SelfValidatingSortedQueueEntryList) _testQueue.getEntries();
@@ -186,7 +186,7 @@ public class SortedQueueEntryListTest extends QueueEntryListTestBase<SortedQueue
super.testIterator();
// Test sorted order of list
- final QueueEntryIterator<SortedQueueEntry, SortedQueue, SortedQueueEntryList, QueueConsumer<?,SortedQueueEntry, SortedQueue, SortedQueueEntryList>> iter = getTestList().iterator();
+ final QueueEntryIterator iter = getTestList().iterator();
int count = 0;
while(iter.advance())
{
@@ -195,12 +195,12 @@ public class SortedQueueEntryListTest extends QueueEntryListTestBase<SortedQueue
}
}
- private Object getSortedKeyValue(QueueEntryIterator<SortedQueueEntry, SortedQueue, SortedQueueEntryList, QueueConsumer<?,SortedQueueEntry, SortedQueue, SortedQueueEntryList>> iter)
+ private Object getSortedKeyValue(QueueEntryIterator iter)
{
return (iter.getNode()).getMessage().getMessageHeader().getHeader("KEY");
}
- private Long getMessageId(QueueEntryIterator<SortedQueueEntry, SortedQueue, SortedQueueEntryList, QueueConsumer<?,SortedQueueEntry, SortedQueue, SortedQueueEntryList>> iter)
+ private Long getMessageId(QueueEntryIterator iter)
{
return (iter.getNode()).getMessage().getMessageNumber();
}
@@ -217,7 +217,7 @@ public class SortedQueueEntryListTest extends QueueEntryListTestBase<SortedQueue
_sqel.add(msg);
}
- final QueueEntryIterator<SortedQueueEntry, SortedQueue, SortedQueueEntryList, QueueConsumer<?,SortedQueueEntry, SortedQueue, SortedQueueEntryList>> iter = getTestList().iterator();
+ final QueueEntryIterator iter = getTestList().iterator();
int count=0;
while(iter.advance())
{
@@ -238,7 +238,7 @@ public class SortedQueueEntryListTest extends QueueEntryListTestBase<SortedQueue
_sqel.add(msg);
}
- final QueueEntryIterator<SortedQueueEntry, SortedQueue, SortedQueueEntryList, QueueConsumer<?,SortedQueueEntry, SortedQueue, SortedQueueEntryList>> iter = getTestList().iterator();
+ final QueueEntryIterator iter = getTestList().iterator();
int count=0;
while(iter.advance())
{
@@ -260,7 +260,7 @@ public class SortedQueueEntryListTest extends QueueEntryListTestBase<SortedQueue
_sqel.add(msg);
}
- final QueueEntryIterator<SortedQueueEntry, SortedQueue, SortedQueueEntryList, QueueConsumer<?,SortedQueueEntry, SortedQueue, SortedQueueEntryList>> iter = getTestList().iterator();
+ final QueueEntryIterator iter = getTestList().iterator();
int count=0;
while(iter.advance())
{
@@ -283,7 +283,7 @@ public class SortedQueueEntryListTest extends QueueEntryListTestBase<SortedQueue
_sqel.add(msg);
}
- final QueueEntryIterator<SortedQueueEntry, SortedQueue, SortedQueueEntryList, QueueConsumer<?,SortedQueueEntry, SortedQueue, SortedQueueEntryList>> iter = getTestList().iterator();
+ final QueueEntryIterator iter = getTestList().iterator();
int count=0;
while(iter.advance())
{
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 c6bc126510..c1d5a9e9fe 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
@@ -58,13 +58,13 @@ public class SortedQueueEntryTest extends QueueEntryImplTestBase
final VirtualHost virtualHost = mock(VirtualHost.class);
when(virtualHost.getSecurityManager()).thenReturn(mock(org.apache.qpid.server.security.SecurityManager.class));
- SortedQueue queue = new SortedQueue(virtualHost, attributes, new QueueEntryListFactory<SortedQueueEntry,SortedQueue,SortedQueueEntryList>()
+ SortedQueue queue = new SortedQueue(virtualHost, attributes, new QueueEntryListFactory()
{
@Override
- public SortedQueueEntryList createQueueEntryList(final SortedQueue queue)
+ public SortedQueueEntryList createQueueEntryList(final AMQQueue queue)
{
- return new SelfValidatingSortedQueueEntryList(queue, "KEY");
+ return new SelfValidatingSortedQueueEntryList((SortedQueue) queue, "KEY");
}
});
_queueEntryList = (SelfValidatingSortedQueueEntryList) queue.getEntries();
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 302c1f1870..c03727087a 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
@@ -38,7 +38,7 @@ import java.util.concurrent.ConcurrentHashMap;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-public class StandardQueueEntryListTest extends QueueEntryListTestBase<StandardQueueEntry, StandardQueue, StandardQueueEntryList, QueueConsumer<?,StandardQueueEntry, StandardQueue, StandardQueueEntryList>>
+public class StandardQueueEntryListTest extends QueueEntryListTestBase
{
private StandardQueue _testQueue;
@@ -62,7 +62,7 @@ public class StandardQueueEntryListTest extends QueueEntryListTestBase<StandardQ
CurrentActor.set(logActor);
_testQueue = new StandardQueue(virtualHost, queueAttributes);
- _sqel = _testQueue.getEntries();
+ _sqel = (StandardQueueEntryList) _testQueue.getEntries();
for(int i = 1; i <= 100; i++)
{
final ServerMessage message = mock(ServerMessage.class);
@@ -107,7 +107,7 @@ public class StandardQueueEntryListTest extends QueueEntryListTestBase<StandardQ
when(virtualHost.getSecurityManager()).thenReturn(mock(SecurityManager.class));
StandardQueue queue = new StandardQueue(virtualHost, queueAttributes);
- return queue.getEntries();
+ return (StandardQueueEntryList) queue.getEntries();
}
else
{
@@ -160,7 +160,7 @@ public class StandardQueueEntryListTest extends QueueEntryListTestBase<StandardQ
entriesMap.put(i,bleh);
}
- OrderedQueueEntry head = sqel.getHead();
+ OrderedQueueEntry head = (OrderedQueueEntry) sqel.getHead();
//We shall now delete some specific messages mid-queue that will lead to
//requiring a scavenge once the requested threshold of 9 deletes is passed
@@ -256,7 +256,7 @@ public class StandardQueueEntryListTest extends QueueEntryListTestBase<StandardQ
final MessageReference reference = mock(MessageReference.class);
when(reference.getMessage()).thenReturn(message);
when(message.newReference()).thenReturn(reference);
- entries[i] = queueEntryList.add(message);
+ entries[i] = (OrderedQueueEntry) queueEntryList.add(message);
}
// test getNext for not acquired entries
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/StandardQueueTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/StandardQueueTest.java
index da69700f6b..12ae494fc8 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/StandardQueueTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/StandardQueueTest.java
@@ -40,7 +40,7 @@ import java.util.concurrent.TimeUnit;
import static org.mockito.Mockito.mock;
-public class StandardQueueTest extends AbstractQueueTestBase<StandardQueueEntry, StandardQueue, StandardQueueEntryList>
+public class StandardQueueTest extends AbstractQueueTestBase
{
public void testCreationFailsWithNoVhost()
@@ -60,6 +60,10 @@ public class StandardQueueTest extends AbstractQueueTestBase<StandardQueueEntry,
assertTrue("Exception was not about missing vhost",
e.getMessage().contains("Host"));
}
+ catch(NullPointerException e)
+ {
+
+ }
}
@@ -76,7 +80,7 @@ public class StandardQueueTest extends AbstractQueueTestBase<StandardQueueEntry,
ServerMessage message = createMessage(25l);
QueueConsumer consumer =
- getQueue().addConsumer(getConsumerTarget(), null, message.getClass(), "test",
+ (QueueConsumer) getQueue().addConsumer(getConsumerTarget(), null, message.getClass(), "test",
EnumSet.of(Consumer.Option.ACQUIRES,
Consumer.Option.SEES_REQUEUES));
@@ -99,59 +103,59 @@ public class StandardQueueTest extends AbstractQueueTestBase<StandardQueueEntry,
final MockConsumer consumer1 = new MockConsumer();
consumer1.setActive(true);
consumer1.setState(ConsumerTarget.State.ACTIVE);
- assertEquals("Unexpected active consumer count", 0, queue.getActiveConsumerCount());
+ assertEquals("Unexpected active consumer count", 0, queue.getConsumerCountWithCredit());
queue.addConsumer(consumer1,
null,
createMessage(-1l).getClass(),
"test",
EnumSet.of(Consumer.Option.ACQUIRES,
Consumer.Option.SEES_REQUEUES));
- assertEquals("Unexpected active consumer count", 1, queue.getActiveConsumerCount());
+ assertEquals("Unexpected active consumer count", 1, queue.getConsumerCountWithCredit());
//verify adding an inactive consumer doesn't increase the count
final MockConsumer consumer2 = new MockConsumer();
consumer2.setActive(false);
consumer2.setState(ConsumerTarget.State.SUSPENDED);
- assertEquals("Unexpected active consumer count", 1, queue.getActiveConsumerCount());
+ assertEquals("Unexpected active consumer count", 1, queue.getConsumerCountWithCredit());
queue.addConsumer(consumer2,
null,
createMessage(-1l).getClass(),
"test",
EnumSet.of(Consumer.Option.ACQUIRES,
Consumer.Option.SEES_REQUEUES));
- assertEquals("Unexpected active consumer count", 1, queue.getActiveConsumerCount());
+ assertEquals("Unexpected active consumer count", 1, queue.getConsumerCountWithCredit());
//verify behaviour in face of expected state changes:
//verify a consumer going suspended->active increases the count
consumer2.setState(ConsumerTarget.State.ACTIVE);
- assertEquals("Unexpected active consumer count", 2, queue.getActiveConsumerCount());
+ assertEquals("Unexpected active consumer count", 2, queue.getConsumerCountWithCredit());
//verify a consumer going active->suspended decreases the count
consumer2.setState(ConsumerTarget.State.SUSPENDED);
- assertEquals("Unexpected active consumer count", 1, queue.getActiveConsumerCount());
+ assertEquals("Unexpected active consumer count", 1, queue.getConsumerCountWithCredit());
//verify a consumer going suspended->closed doesn't change the count
consumer2.setState(ConsumerTarget.State.CLOSED);
- assertEquals("Unexpected active consumer count", 1, queue.getActiveConsumerCount());
+ assertEquals("Unexpected active consumer count", 1, queue.getConsumerCountWithCredit());
//verify a consumer going active->active doesn't change the count
consumer1.setState(ConsumerTarget.State.ACTIVE);
- assertEquals("Unexpected active consumer count", 1, queue.getActiveConsumerCount());
+ assertEquals("Unexpected active consumer count", 1, queue.getConsumerCountWithCredit());
consumer1.setState(ConsumerTarget.State.SUSPENDED);
- assertEquals("Unexpected active consumer count", 0, queue.getActiveConsumerCount());
+ assertEquals("Unexpected active consumer count", 0, queue.getConsumerCountWithCredit());
//verify a consumer going suspended->suspended doesn't change the count
consumer1.setState(ConsumerTarget.State.SUSPENDED);
- assertEquals("Unexpected active consumer count", 0, queue.getActiveConsumerCount());
+ assertEquals("Unexpected active consumer count", 0, queue.getConsumerCountWithCredit());
consumer1.setState(ConsumerTarget.State.ACTIVE);
- assertEquals("Unexpected active consumer count", 1, queue.getActiveConsumerCount());
+ assertEquals("Unexpected active consumer count", 1, queue.getConsumerCountWithCredit());
//verify a consumer going active->closed decreases the count
consumer1.setState(ConsumerTarget.State.CLOSED);
- assertEquals("Unexpected active consumer count", 0, queue.getActiveConsumerCount());
+ assertEquals("Unexpected active consumer count", 0, queue.getConsumerCountWithCredit());
}
@@ -210,7 +214,8 @@ public class StandardQueueTest extends AbstractQueueTestBase<StandardQueueEntry,
};
// put messages
- List<StandardQueueEntry> entries = enqueueGivenNumberOfMessages(testQueue, messageNumber);
+ List<StandardQueueEntry> entries =
+ (List<StandardQueueEntry>) enqueueGivenNumberOfMessages(testQueue, messageNumber);
// dequeue message
dequeueMessage(testQueue, dequeueMessageIndex);
@@ -264,7 +269,7 @@ public class StandardQueueTest extends AbstractQueueTestBase<StandardQueueEntry,
}
- private static class DequeuedQueue extends AbstractQueue<DequeuedQueueEntry, DequeuedQueue, DequeuedQueueEntryList>
+ private static class DequeuedQueue extends AbstractQueue
{
public DequeuedQueue(VirtualHost virtualHost)
@@ -282,30 +287,30 @@ public class StandardQueueTest extends AbstractQueueTestBase<StandardQueueEntry,
return attributes;
}
}
- private static class DequeuedQueueEntryListFactory implements QueueEntryListFactory<DequeuedQueueEntry, DequeuedQueue, DequeuedQueueEntryList>
+ private static class DequeuedQueueEntryListFactory implements QueueEntryListFactory
{
- public DequeuedQueueEntryList createQueueEntryList(DequeuedQueue queue)
+ public DequeuedQueueEntryList createQueueEntryList(AMQQueue queue)
{
/**
* Override SimpleQueueEntryList to create a dequeued
* entries for messages with even id
*/
- return new DequeuedQueueEntryList(queue);
+ return new DequeuedQueueEntryList((DequeuedQueue) queue);
}
}
- private static class DequeuedQueueEntryList extends OrderedQueueEntryList<DequeuedQueueEntry, DequeuedQueue, DequeuedQueueEntryList>
+ private static class DequeuedQueueEntryList extends OrderedQueueEntryList
{
- private static final HeadCreator<DequeuedQueueEntry,DequeuedQueue,DequeuedQueueEntryList> HEAD_CREATOR =
- new HeadCreator<DequeuedQueueEntry,DequeuedQueue,DequeuedQueueEntryList>()
+ private static final HeadCreator HEAD_CREATOR =
+ new HeadCreator()
{
@Override
- public DequeuedQueueEntry createHead(final DequeuedQueueEntryList list)
+ public DequeuedQueueEntry createHead(final QueueEntryList list)
{
- return new DequeuedQueueEntry(list);
+ return new DequeuedQueueEntry((DequeuedQueueEntryList) list);
}
};
@@ -326,7 +331,7 @@ public class StandardQueueTest extends AbstractQueueTestBase<StandardQueueEntry,
}
- private static class DequeuedQueueEntry extends OrderedQueueEntry<DequeuedQueueEntry,DequeuedQueue,DequeuedQueueEntryList>
+ private static class DequeuedQueueEntry extends OrderedQueueEntry
{
private final ServerMessage _message;
@@ -354,7 +359,7 @@ public class StandardQueueTest extends AbstractQueueTestBase<StandardQueueEntry,
}
@Override
- public boolean acquire(QueueConsumer<?,DequeuedQueueEntry,DequeuedQueue,DequeuedQueueEntryList> sub)
+ public boolean acquire(Consumer sub)
{
if(_message.getMessageNumber() % 2 == 0)
{
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 4cbe385fed..56b931f37e 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
@@ -38,8 +38,9 @@ import java.util.UUID;
import org.apache.commons.configuration.Configuration;
import org.apache.qpid.common.AMQPFilterTypes;
-import org.apache.qpid.server.binding.Binding;
-import org.apache.qpid.server.exchange.Exchange;
+import org.apache.qpid.server.binding.BindingImpl;
+import org.apache.qpid.server.exchange.ExchangeImpl;
+import org.apache.qpid.server.exchange.NonDefaultExchange;
import org.apache.qpid.server.logging.LogActor;
import org.apache.qpid.server.logging.actors.CurrentActor;
import org.apache.qpid.server.message.EnqueueableMessage;
@@ -80,7 +81,7 @@ public abstract class AbstractDurableConfigurationStoreTestCase extends QpidTest
private TransactionLogRecoveryHandler.QueueEntryRecoveryHandler _queueEntryRecoveryHandler;
private TransactionLogRecoveryHandler.DtxRecordRecoveryHandler _dtxRecordRecoveryHandler;
- private Exchange _exchange = mock(Exchange.class);
+ private NonDefaultExchange _exchange = mock(NonDefaultExchange.class);
private static final String ROUTING_KEY = "routingKey";
private static final String QUEUE_NAME = "queueName";
private Map<String,Object> _bindingArgs;
@@ -145,7 +146,7 @@ public abstract class AbstractDurableConfigurationStoreTestCase extends QpidTest
public void testCreateExchange() throws Exception
{
- Exchange exchange = createTestExchange();
+ ExchangeImpl exchange = createTestExchange();
DurableConfigurationStoreHelper.createExchange(_configStore, exchange);
reopenStore();
@@ -177,7 +178,7 @@ public abstract class AbstractDurableConfigurationStoreTestCase extends QpidTest
public void testRemoveExchange() throws Exception
{
- Exchange exchange = createTestExchange();
+ ExchangeImpl exchange = createTestExchange();
DurableConfigurationStoreHelper.createExchange(_configStore, exchange);
DurableConfigurationStoreHelper.removeExchange(_configStore, exchange);
@@ -189,7 +190,7 @@ public abstract class AbstractDurableConfigurationStoreTestCase extends QpidTest
public void testBindQueue() throws Exception
{
AMQQueue queue = createTestQueue(QUEUE_NAME, "queueOwner", false, null);
- Binding binding = new Binding(UUIDGenerator.generateRandomUUID(), ROUTING_KEY, queue,
+ BindingImpl binding = new BindingImpl(UUIDGenerator.generateRandomUUID(), ROUTING_KEY, queue,
_exchange, _bindingArgs);
DurableConfigurationStoreHelper.createBinding(_configStore, binding);
@@ -208,7 +209,7 @@ public abstract class AbstractDurableConfigurationStoreTestCase extends QpidTest
public void testUnbindQueue() throws Exception
{
AMQQueue queue = createTestQueue(QUEUE_NAME, "queueOwner", false, null);
- Binding binding = new Binding(UUIDGenerator.generateRandomUUID(), ROUTING_KEY, queue,
+ BindingImpl binding = new BindingImpl(UUIDGenerator.generateRandomUUID(), ROUTING_KEY, queue,
_exchange, _bindingArgs);
DurableConfigurationStoreHelper.createBinding(_configStore, binding);
@@ -257,7 +258,7 @@ public abstract class AbstractDurableConfigurationStoreTestCase extends QpidTest
public void testCreateQueueAMQQueueWithAlternateExchange() throws Exception
{
- Exchange alternateExchange = createTestAlternateExchange();
+ NonDefaultExchange alternateExchange = createTestAlternateExchange();
AMQQueue queue = createTestQueue(getName(), getName() + "Owner", true, alternateExchange, null);
DurableConfigurationStoreHelper.createQueue(_configStore, queue);
@@ -273,10 +274,10 @@ public abstract class AbstractDurableConfigurationStoreTestCase extends QpidTest
verify(_recoveryHandler).configuredObject(eq(_queueId), eq(QUEUE), eq(queueAttributes));
}
- private Exchange createTestAlternateExchange()
+ private NonDefaultExchange createTestAlternateExchange()
{
UUID exchUuid = UUID.randomUUID();
- Exchange alternateExchange = mock(Exchange.class);
+ NonDefaultExchange alternateExchange = mock(NonDefaultExchange.class);
when(alternateExchange.getId()).thenReturn(exchUuid);
return alternateExchange;
}
@@ -317,7 +318,7 @@ public abstract class AbstractDurableConfigurationStoreTestCase extends QpidTest
DurableConfigurationStoreHelper.createQueue(_configStore, queue);
// update the queue to have exclusive=false
- Exchange alternateExchange = createTestAlternateExchange();
+ NonDefaultExchange alternateExchange = createTestAlternateExchange();
queue = createTestQueue(getName(), getName() + "Owner", false, alternateExchange, attributes);
DurableConfigurationStoreHelper.updateQueue(_configStore, queue);
@@ -361,10 +362,10 @@ public abstract class AbstractDurableConfigurationStoreTestCase extends QpidTest
private AMQQueue createTestQueue(String queueName,
String queueOwner,
boolean exclusive,
- Exchange alternateExchange,
+ NonDefaultExchange alternateExchange,
final Map<String, Object> arguments) throws StoreException
{
- AMQQueue queue = mock(AMQQueue.class);
+ AMQQueue<?> queue = mock(AMQQueue.class);
when(queue.getName()).thenReturn(queueName);
when(queue.isExclusive()).thenReturn(exclusive);
when(queue.getId()).thenReturn(_queueId);
@@ -398,9 +399,9 @@ public abstract class AbstractDurableConfigurationStoreTestCase extends QpidTest
return queue;
}
- private Exchange createTestExchange()
+ private ExchangeImpl createTestExchange()
{
- Exchange exchange = mock(Exchange.class);
+ ExchangeImpl exchange = mock(ExchangeImpl.class);
when(exchange.getName()).thenReturn(getName());
when(exchange.getTypeName()).thenReturn(getName() + "Type");
when(exchange.isAutoDelete()).thenReturn(true);
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 1a7dfe9ca0..ea8b492552 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
@@ -22,7 +22,6 @@ package org.apache.qpid.server.util;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.only;
import static org.mockito.Mockito.when;
import java.net.SocketAddress;
@@ -32,13 +31,13 @@ import java.util.UUID;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.model.Queue;
import org.apache.qpid.server.protocol.AMQConnectionModel;
import org.apache.qpid.server.protocol.AMQSessionModel;
import org.apache.qpid.server.configuration.VirtualHostConfiguration;
import org.apache.qpid.server.configuration.store.JsonConfigurationEntryStore;
import org.apache.qpid.server.exchange.DefaultExchangeFactory;
-import org.apache.qpid.server.exchange.Exchange;
import org.apache.qpid.server.logging.RootMessageLogger;
import org.apache.qpid.server.logging.SystemOutMessageLogger;
import org.apache.qpid.server.logging.actors.CurrentActor;
@@ -171,7 +170,7 @@ public class BrokerTestHelper
return connection;
}
- public static Exchange createExchange(String hostName) throws Exception
+ public static ExchangeImpl createExchange(String hostName) throws Exception
{
SecurityManager securityManager = new SecurityManager(mock(Broker.class), false);
VirtualHost virtualHost = mock(VirtualHost.class);
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 324a0a809e..90ba03a789 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
@@ -27,10 +27,11 @@ import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.UUID;
+
+import org.apache.qpid.server.exchange.NonDefaultExchange;
import org.apache.qpid.server.store.StoreException;
import org.apache.qpid.server.configuration.IllegalConfigurationException;
import org.apache.qpid.server.exchange.DirectExchange;
-import org.apache.qpid.server.exchange.Exchange;
import org.apache.qpid.server.exchange.ExchangeFactory;
import org.apache.qpid.server.exchange.ExchangeRegistry;
import org.apache.qpid.server.exchange.HeadersExchange;
@@ -69,8 +70,8 @@ public class DurableConfigurationRecovererTest extends QpidTestCase
private static final String CUSTOM_EXCHANGE_NAME = "customExchange";
private DurableConfigurationRecoverer _durableConfigurationRecoverer;
- private Exchange _directExchange;
- private Exchange _topicExchange;
+ private NonDefaultExchange _directExchange;
+ private NonDefaultExchange _topicExchange;
private VirtualHost _vhost;
private DurableConfigurationStore _store;
private ExchangeFactory _exchangeFactory;
@@ -83,11 +84,11 @@ public class DurableConfigurationRecovererTest extends QpidTestCase
super.setUp();
- _directExchange = mock(Exchange.class);
+ _directExchange = mock(NonDefaultExchange.class);
when(_directExchange.getExchangeType()).thenReturn(DirectExchange.TYPE);
- _topicExchange = mock(Exchange.class);
+ _topicExchange = mock(NonDefaultExchange.class);
when(_topicExchange.getExchangeType()).thenReturn(TopicExchange.TYPE);
AMQQueue queue = mock(AMQQueue.class);
@@ -100,14 +101,14 @@ public class DurableConfigurationRecovererTest extends QpidTestCase
when(_vhost.getQueue(eq(QUEUE_ID))).thenReturn(queue);
- final ArgumentCaptor<Exchange> registeredExchange = ArgumentCaptor.forClass(Exchange.class);
+ final ArgumentCaptor<NonDefaultExchange> registeredExchange = ArgumentCaptor.forClass(NonDefaultExchange.class);
doAnswer(new Answer()
{
@Override
public Object answer(final InvocationOnMock invocation) throws Throwable
{
- Exchange exchange = registeredExchange.getValue();
+ NonDefaultExchange exchange = registeredExchange.getValue();
when(_exchangeRegistry.getExchange(eq(exchange.getId()))).thenReturn(exchange);
when(_exchangeRegistry.getExchange(eq(exchange.getName()))).thenReturn(exchange);
return null;
@@ -138,14 +139,14 @@ public class DurableConfigurationRecovererTest extends QpidTestCase
when(_vhost.getQueue(eq(queueName))).thenReturn(queue);
when(_vhost.getQueue(eq(queueId))).thenReturn(queue);
- final ArgumentCaptor<Exchange> altExchangeArg = ArgumentCaptor.forClass(Exchange.class);
+ final ArgumentCaptor<NonDefaultExchange> altExchangeArg = ArgumentCaptor.forClass(NonDefaultExchange.class);
doAnswer(
new Answer()
{
@Override
public Object answer(InvocationOnMock invocation) throws Throwable
{
- final Exchange value = altExchangeArg.getValue();
+ final NonDefaultExchange value = altExchangeArg.getValue();
when(queue.getAlternateExchange()).thenReturn(value);
return null;
}
@@ -156,7 +157,8 @@ public class DurableConfigurationRecovererTest extends QpidTestCase
if (args.containsKey(Queue.ALTERNATE_EXCHANGE))
{
final UUID exchangeId = UUID.fromString(args.get(Queue.ALTERNATE_EXCHANGE).toString());
- final Exchange exchange = _exchangeRegistry.getExchange(exchangeId);
+ final NonDefaultExchange exchange =
+ (NonDefaultExchange) _exchangeRegistry.getExchange(exchangeId);
queue.setAlternateExchange(exchange);
}
return queue;
@@ -265,13 +267,13 @@ public class DurableConfigurationRecovererTest extends QpidTestCase
"org.apache.qpid.server.model.Exchange",
createExchange(CUSTOM_EXCHANGE_NAME, HeadersExchange.TYPE));
- final Exchange customExchange = mock(Exchange.class);
+ final NonDefaultExchange customExchange = mock(NonDefaultExchange.class);
final ArgumentCaptor<Map> attributesCaptor = ArgumentCaptor.forClass(Map.class);
- when(_exchangeFactory.restoreExchange(attributesCaptor.capture())).thenAnswer(new Answer<Exchange>()
+ when(_exchangeFactory.restoreExchange(attributesCaptor.capture())).thenAnswer(new Answer<NonDefaultExchange>()
{
@Override
- public Exchange answer(final InvocationOnMock invocation) throws Throwable
+ public NonDefaultExchange answer(final InvocationOnMock invocation) throws Throwable
{
Map arguments = attributesCaptor.getValue();
if(CUSTOM_EXCHANGE_NAME.equals(arguments.get(org.apache.qpid.server.model.Exchange.NAME))
@@ -395,17 +397,17 @@ public class DurableConfigurationRecovererTest extends QpidTestCase
final UUID queueId = new UUID(1, 0);
final UUID exchangeId = new UUID(2, 0);
- final Exchange customExchange = mock(Exchange.class);
+ final NonDefaultExchange customExchange = mock(NonDefaultExchange.class);
when(customExchange.getId()).thenReturn(exchangeId);
when(customExchange.getName()).thenReturn(CUSTOM_EXCHANGE_NAME);
final ArgumentCaptor<Map> attributesCaptor = ArgumentCaptor.forClass(Map.class);
- when(_exchangeFactory.restoreExchange(attributesCaptor.capture())).thenAnswer(new Answer<Exchange>()
+ when(_exchangeFactory.restoreExchange(attributesCaptor.capture())).thenAnswer(new Answer<NonDefaultExchange>()
{
@Override
- public Exchange answer(final InvocationOnMock invocation) throws Throwable
+ public NonDefaultExchange answer(final InvocationOnMock invocation) throws Throwable
{
Map arguments = attributesCaptor.getValue();
if(CUSTOM_EXCHANGE_NAME.equals(arguments.get(org.apache.qpid.server.model.Exchange.NAME))
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 8c6725ea14..baa62b8ea2 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
@@ -24,8 +24,10 @@ import java.util.Collection;
import java.util.Map;
import java.util.concurrent.ScheduledFuture;
import org.apache.qpid.server.configuration.VirtualHostConfiguration;
+import org.apache.qpid.server.configuration.updater.TaskExecutor;
import org.apache.qpid.server.connection.IConnectionRegistry;
-import org.apache.qpid.server.exchange.Exchange;
+import org.apache.qpid.server.exchange.ExchangeImpl;
+import org.apache.qpid.server.exchange.NonDefaultExchange;
import org.apache.qpid.server.message.MessageDestination;
import org.apache.qpid.server.message.MessageSource;
import org.apache.qpid.server.plugin.ExchangeType;
@@ -158,13 +160,13 @@ public class MockVirtualHost implements VirtualHost
}
@Override
- public Exchange createExchange(Map<String,Object> attributes)
+ public NonDefaultExchange createExchange(Map<String,Object> attributes)
{
return null;
}
@Override
- public void removeExchange(Exchange exchange, boolean force)
+ public void removeExchange(ExchangeImpl exchange, boolean force)
{
}
@@ -175,31 +177,31 @@ public class MockVirtualHost implements VirtualHost
}
@Override
- public Exchange getExchange(String name)
+ public ExchangeImpl getExchange(String name)
{
return null;
}
@Override
- public Exchange getExchange(UUID id)
+ public ExchangeImpl getExchange(UUID id)
{
return null;
}
@Override
- public Exchange getDefaultExchange()
+ public ExchangeImpl getDefaultExchange()
{
return null;
}
@Override
- public Collection<Exchange> getExchanges()
+ public Collection<ExchangeImpl> getExchanges()
{
return null;
}
@Override
- public Collection<ExchangeType<? extends Exchange>> getExchangeTypes()
+ public Collection<ExchangeType<? extends ExchangeImpl>> getExchangeTypes()
{
return null;
}
@@ -350,4 +352,22 @@ public class MockVirtualHost implements VirtualHost
{
return 0;
}
+
+ @Override
+ public TaskExecutor getTaskExecutor()
+ {
+ return null;
+ }
+
+ @Override
+ public Collection<NonDefaultExchange> getExchangesExceptDefault()
+ {
+ return null;
+ }
+
+ @Override
+ public org.apache.qpid.server.model.VirtualHost getModel()
+ {
+ return null;
+ }
}
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/StandardVirtualHostTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/StandardVirtualHostTest.java
index 5a808c87d8..61569cc3e7 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/StandardVirtualHostTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/virtualhost/StandardVirtualHostTest.java
@@ -28,10 +28,11 @@ import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
-import org.apache.qpid.server.binding.Binding;
+import org.apache.qpid.server.binding.BindingImpl;
import org.apache.qpid.server.configuration.VirtualHostConfiguration;
-import org.apache.qpid.server.exchange.Exchange;
+import org.apache.qpid.server.exchange.AbstractExchange;
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.security.SecurityManager;
@@ -207,14 +208,14 @@ public class StandardVirtualHostTest extends QpidTestCase
File config = writeConfigFile(vhostName, queueName, exchangeName, false, new String[]{"ping","pong"}, bindingArguments);
VirtualHost vhost = createVirtualHost(vhostName, config);
- Exchange exch = vhost.getExchange(getName() +".direct");
- Collection<Binding> bindings = exch.getBindings();
+ ExchangeImpl exch = vhost.getExchange(getName() +".direct");
+ Collection<BindingImpl> bindings = ((AbstractExchange)exch).getBindings();
assertNotNull("Bindings cannot be null", bindings);
assertEquals("Unexpected number of bindings", 3, bindings.size());
boolean foundPong = false;
boolean foundPing = false;
- for (Binding binding : bindings)
+ for (BindingImpl binding : bindings)
{
String qn = binding.getAMQQueue().getName();
assertEquals("Unexpected queue name", getName(), qn);
@@ -252,10 +253,10 @@ public class StandardVirtualHostTest extends QpidTestCase
AMQQueue queue = vhost.getQueue(queueName);
assertNotNull("queue should exist", queue);
- Exchange defaultExch = vhost.getDefaultExchange();
+ ExchangeImpl defaultExch = vhost.getDefaultExchange();
assertTrue("queue should have been bound to default exchange with its name", defaultExch.isBound(queueName, queue));
- Exchange exch = vhost.getExchange(exchangeName);
+ ExchangeImpl exch = vhost.getExchange(exchangeName);
assertTrue("queue should have been bound to " + exchangeName + " with its name", exch.isBound(queueName, queue));
for(String key: routingKeys)
diff --git a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ConsumerTarget_0_10.java b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ConsumerTarget_0_10.java
index ff4bd1dc2e..69c625d41d 100644
--- a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ConsumerTarget_0_10.java
+++ b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ConsumerTarget_0_10.java
@@ -20,7 +20,7 @@
*/
package org.apache.qpid.server.protocol.v0_10;
-import org.apache.qpid.server.exchange.Exchange;
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.flow.FlowCreditManager;
import org.apache.qpid.server.logging.LogActor;
import org.apache.qpid.server.logging.actors.CurrentActor;
@@ -406,7 +406,7 @@ public class ConsumerTarget_0_10 extends AbstractConsumerTarget implements FlowC
if(owningResource instanceof AMQQueue)
{
final AMQQueue queue = (AMQQueue)owningResource;
- final Exchange alternateExchange = queue.getAlternateExchange();
+ final ExchangeImpl alternateExchange = queue.getAlternateExchange();
if(alternateExchange != null)
{
diff --git a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSession.java b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSession.java
index 12c10240bb..236a955ea9 100644
--- a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSession.java
+++ b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSession.java
@@ -936,10 +936,10 @@ public class ServerSession extends Session
return getId().compareTo(o.getId());
}
- private class CheckCapacityAction<C extends Consumer> implements Action<MessageInstance<?,C>>
+ private class CheckCapacityAction implements Action<MessageInstance>
{
@Override
- public void performAction(final MessageInstance<?,C> entry)
+ public void performAction(final MessageInstance entry)
{
TransactionLogResource queue = entry.getOwningResource();
if(queue instanceof CapacityChecker)
diff --git a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java
index e70b34a426..1fb82efd2d 100644
--- a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java
+++ b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java
@@ -27,13 +27,11 @@ import java.util.LinkedHashMap;
import java.util.UUID;
import org.apache.log4j.Logger;
-import org.apache.qpid.server.binding.*;
-import org.apache.qpid.server.binding.Binding;
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.model.ExclusivityPolicy;
import org.apache.qpid.server.model.LifetimePolicy;
import org.apache.qpid.server.store.StoreException;
import org.apache.qpid.server.exchange.AMQUnknownExchangeType;
-import org.apache.qpid.server.exchange.Exchange;
import org.apache.qpid.server.exchange.HeadersExchange;
import org.apache.qpid.server.filter.AMQInvalidArgumentException;
import org.apache.qpid.server.filter.FilterManager;
@@ -688,7 +686,7 @@ public class ServerSessionDelegate extends SessionDelegate
if(method.getPassive())
{
- Exchange exchange = getExchange(session, exchangeName);
+ ExchangeImpl exchange = getExchange(session, exchangeName);
if(exchange == null)
{
@@ -736,7 +734,7 @@ public class ServerSessionDelegate extends SessionDelegate
}
catch(ExchangeExistsException e)
{
- Exchange exchange = e.getExistingExchange();
+ ExchangeImpl exchange = e.getExistingExchange();
if(!exchange.getTypeName().equals(method.getType()))
{
exception(session, method, ExecutionErrorCode.NOT_ALLOWED,
@@ -776,7 +774,7 @@ public class ServerSessionDelegate extends SessionDelegate
((ServerSession)session).close(errorCode.getValue(), description);
}
- private Exchange getExchange(Session session, String exchangeName)
+ private ExchangeImpl getExchange(Session session, String exchangeName)
{
return getVirtualHost(session).getExchange(exchangeName);
}
@@ -827,7 +825,7 @@ public class ServerSessionDelegate extends SessionDelegate
return;
}
- Exchange exchange = getExchange(session, method.getExchange());
+ ExchangeImpl exchange = getExchange(session, method.getExchange());
if(exchange == null)
{
@@ -862,7 +860,7 @@ public class ServerSessionDelegate extends SessionDelegate
return false;
}
- private boolean isStandardExchange(Exchange exchange, Collection<ExchangeType<? extends Exchange>> registeredTypes)
+ private boolean isStandardExchange(ExchangeImpl exchange, Collection<ExchangeType<? extends ExchangeImpl>> registeredTypes)
{
for(ExchangeType type : registeredTypes)
{
@@ -880,7 +878,7 @@ public class ServerSessionDelegate extends SessionDelegate
ExchangeQueryResult result = new ExchangeQueryResult();
- Exchange exchange = getExchange(session, method.getName());
+ ExchangeImpl exchange = getExchange(session, method.getName());
if(exchange != null)
{
@@ -919,7 +917,7 @@ public class ServerSessionDelegate extends SessionDelegate
method.setBindingKey(method.getQueue());
}
AMQQueue queue = virtualHost.getQueue(method.getQueue());
- Exchange exchange = virtualHost.getExchange(method.getExchange());
+ ExchangeImpl exchange = virtualHost.getExchange(method.getExchange());
if(queue == null)
{
exception(session, method, ExecutionErrorCode.NOT_FOUND, "Queue: '" + method.getQueue() + "' not found");
@@ -978,7 +976,7 @@ public class ServerSessionDelegate extends SessionDelegate
else
{
AMQQueue queue = virtualHost.getQueue(method.getQueue());
- Exchange exchange = virtualHost.getExchange(method.getExchange());
+ ExchangeImpl exchange = virtualHost.getExchange(method.getExchange());
if(queue == null)
{
exception(session, method, ExecutionErrorCode.NOT_FOUND, "Queue: '" + method.getQueue() + "' not found");
@@ -991,10 +989,9 @@ public class ServerSessionDelegate extends SessionDelegate
{
try
{
- Binding binding = exchange.getBinding(method.getBindingKey(), queue);
- if(binding != null)
+ if(exchange.hasBinding(method.getBindingKey(), queue))
{
- binding.delete();
+ exchange.deleteBinding(method.getBindingKey(), queue);
}
}
catch (AccessControlException e)
@@ -1011,7 +1008,7 @@ public class ServerSessionDelegate extends SessionDelegate
ExchangeBoundResult result = new ExchangeBoundResult();
VirtualHost virtualHost = getVirtualHost(session);
- Exchange exchange;
+ ExchangeImpl exchange;
AMQQueue queue;
if(method.hasExchange())
{
@@ -1378,7 +1375,7 @@ public class ServerSessionDelegate extends SessionDelegate
arguments.put(attrName, queue.getAttribute(attrName));
}
result.setArguments(QueueArgumentsConverter.convertModelArgsToWire(arguments));
- result.setMessageCount(queue.getMessageCount());
+ result.setMessageCount(queue.getQueueDepthMessages());
result.setSubscriberCount(queue.getConsumerCount());
}
diff --git a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java
index 453f3035e1..9e0c5b6be6 100644
--- a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java
+++ b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java
@@ -32,6 +32,7 @@ import org.apache.log4j.Logger;
import org.apache.qpid.AMQConnectionException;
import org.apache.qpid.AMQException;
import org.apache.qpid.server.connection.SessionPrincipal;
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.filter.AMQInvalidArgumentException;
import org.apache.qpid.server.filter.Filterable;
import org.apache.qpid.server.filter.MessageFilter;
@@ -48,7 +49,6 @@ import org.apache.qpid.protocol.AMQConstant;
import org.apache.qpid.server.TransactionTimeoutHelper;
import org.apache.qpid.server.TransactionTimeoutHelper.CloseAction;
import org.apache.qpid.server.configuration.BrokerProperties;
-import org.apache.qpid.server.exchange.Exchange;
import org.apache.qpid.server.filter.FilterManager;
import org.apache.qpid.server.filter.FilterManagerFactory;
import org.apache.qpid.server.filter.SimpleFilterManager;
@@ -1267,14 +1267,14 @@ public class AMQChannel<T extends AMQProtocolSession<T>>
}
- private class ImmediateAction<C extends Consumer> implements Action<MessageInstance<?,C>>
+ private class ImmediateAction implements Action<MessageInstance>
{
public ImmediateAction()
{
}
- public void performAction(MessageInstance<?,C> entry)
+ public void performAction(MessageInstance entry)
{
TransactionLogResource queue = entry.getOwningResource();
@@ -1332,10 +1332,10 @@ public class AMQChannel<T extends AMQProtocolSession<T>>
}
}
- private final class CapacityCheckAction<C extends Consumer> implements Action<MessageInstance<?,C>>
+ private final class CapacityCheckAction implements Action<MessageInstance>
{
@Override
- public void performAction(final MessageInstance<?,C> entry)
+ public void performAction(final MessageInstance entry)
{
TransactionLogResource queue = entry.getOwningResource();
if(queue instanceof CapacityChecker)
@@ -1569,7 +1569,7 @@ public class AMQChannel<T extends AMQProtocolSession<T>>
{
final AMQQueue queue = (AMQQueue) owningResource;
- final Exchange altExchange = queue.getAlternateExchange();
+ final ExchangeImpl altExchange = queue.getAlternateExchange();
if (altExchange == null)
{
diff --git a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/BasicGetMethodHandler.java b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/BasicGetMethodHandler.java
index 611999d8c6..f620abf30f 100644
--- a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/BasicGetMethodHandler.java
+++ b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/BasicGetMethodHandler.java
@@ -210,7 +210,7 @@ public class BasicGetMethodHandler implements StateAwareMethodListener<BasicGetB
props,
_channel.getChannelId(),
deliveryTag,
- _queue.getMessageCount());
+ _queue.getQueueDepthMessages());
_deliveredMessage = true;
}
diff --git a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/ExchangeBoundHandler.java b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/ExchangeBoundHandler.java
index 4ebddb0f68..27837844ff 100644
--- a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/ExchangeBoundHandler.java
+++ b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/ExchangeBoundHandler.java
@@ -25,8 +25,8 @@ import org.apache.qpid.framing.AMQShortString;
import org.apache.qpid.framing.ExchangeBoundBody;
import org.apache.qpid.framing.ExchangeBoundOkBody;
import org.apache.qpid.framing.MethodRegistry;
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.protocol.v0_8.AMQChannel;
-import org.apache.qpid.server.exchange.Exchange;
import org.apache.qpid.server.protocol.v0_8.AMQProtocolSession;
import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.protocol.v0_8.state.AMQStateManager;
@@ -82,7 +82,7 @@ public class ExchangeBoundHandler implements StateAwareMethodListener<ExchangeBo
AMQShortString exchangeName = body.getExchange() == null ? AMQShortString.EMPTY_STRING : body.getExchange();
AMQShortString queueName = body.getQueue();
AMQShortString routingKey = body.getRoutingKey();
- Exchange exchange = virtualHost.getExchange(exchangeName.toString());
+ ExchangeImpl exchange = virtualHost.getExchange(exchangeName.toString());
ExchangeBoundOkBody response;
if (exchange == null)
{
diff --git a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/ExchangeDeclareHandler.java b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/ExchangeDeclareHandler.java
index 9446f53188..3b630c684c 100644
--- a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/ExchangeDeclareHandler.java
+++ b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/ExchangeDeclareHandler.java
@@ -30,13 +30,12 @@ import org.apache.qpid.framing.AMQShortString;
import org.apache.qpid.framing.ExchangeDeclareBody;
import org.apache.qpid.framing.MethodRegistry;
import org.apache.qpid.protocol.AMQConstant;
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.model.LifetimePolicy;
import org.apache.qpid.server.protocol.v0_8.AMQChannel;
-import org.apache.qpid.server.exchange.Exchange;
import org.apache.qpid.server.protocol.v0_8.AMQProtocolSession;
import org.apache.qpid.server.protocol.v0_8.state.AMQStateManager;
import org.apache.qpid.server.protocol.v0_8.state.StateAwareMethodListener;
-import org.apache.qpid.server.virtualhost.AbstractVirtualHost;
import org.apache.qpid.server.virtualhost.ExchangeExistsException;
import org.apache.qpid.server.virtualhost.ReservedExchangeNameException;
import org.apache.qpid.server.virtualhost.UnknownExchangeException;
@@ -77,7 +76,7 @@ public class ExchangeDeclareHandler implements StateAwareMethodListener<Exchange
_logger.debug("Request to declare exchange of type " + body.getType() + " with name " + exchangeName);
}
- Exchange exchange;
+ ExchangeImpl exchange;
if (body.getPassive())
{
diff --git a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/ExchangeDeleteHandler.java b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/ExchangeDeleteHandler.java
index bbe6028a63..720677064b 100644
--- a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/ExchangeDeleteHandler.java
+++ b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/ExchangeDeleteHandler.java
@@ -24,8 +24,8 @@ import org.apache.qpid.AMQException;
import org.apache.qpid.framing.ExchangeDeleteBody;
import org.apache.qpid.framing.ExchangeDeleteOkBody;
import org.apache.qpid.protocol.AMQConstant;
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.protocol.v0_8.AMQChannel;
-import org.apache.qpid.server.exchange.Exchange;
import org.apache.qpid.server.protocol.v0_8.AMQProtocolSession;
import org.apache.qpid.server.protocol.v0_8.state.AMQStateManager;
import org.apache.qpid.server.protocol.v0_8.state.StateAwareMethodListener;
@@ -62,7 +62,7 @@ public class ExchangeDeleteHandler implements StateAwareMethodListener<ExchangeD
{
final String exchangeName = body.getExchange() == null ? null : body.getExchange().toString();
- final Exchange exchange = virtualHost.getExchange(exchangeName);
+ final ExchangeImpl exchange = virtualHost.getExchange(exchangeName);
if(exchange == null)
{
throw body.getChannelException(AMQConstant.NOT_FOUND, "No such exchange: " + body.getExchange());
diff --git a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/QueueBindHandler.java b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/QueueBindHandler.java
index 7ac71babf3..1e0382f456 100644
--- a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/QueueBindHandler.java
+++ b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/QueueBindHandler.java
@@ -29,10 +29,9 @@ import org.apache.qpid.framing.FieldTable;
import org.apache.qpid.framing.MethodRegistry;
import org.apache.qpid.framing.QueueBindBody;
import org.apache.qpid.protocol.AMQConstant;
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.exchange.TopicExchange;
import org.apache.qpid.server.protocol.v0_8.AMQChannel;
-import org.apache.qpid.server.binding.Binding;
-import org.apache.qpid.server.exchange.Exchange;
import org.apache.qpid.server.protocol.v0_8.AMQProtocolSession;
import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.protocol.v0_8.state.AMQStateManager;
@@ -103,7 +102,7 @@ public class QueueBindHandler implements StateAwareMethodListener<QueueBindBody>
throw body.getChannelException(AMQConstant.NOT_FOUND, "Queue " + queueName + " does not exist.");
}
final String exchangeName = body.getExchange() == null ? null : body.getExchange().toString();
- final Exchange exch = virtualHost.getExchange(exchangeName);
+ final ExchangeImpl exch = virtualHost.getExchange(exchangeName);
if (exch == null)
{
throw body.getChannelException(AMQConstant.NOT_FOUND, "Exchange " + exchangeName + " does not exist.");
@@ -121,13 +120,7 @@ public class QueueBindHandler implements StateAwareMethodListener<QueueBindBody>
if(!exch.addBinding(bindingKey, queue, arguments) && TopicExchange.TYPE.equals(exch.getExchangeType()))
{
- Binding oldBinding = exch.getBinding(bindingKey, queue);
-
- Map<String, Object> oldArgs = oldBinding.getArguments();
- if((oldArgs == null && !arguments.isEmpty()) || (oldArgs != null && !oldArgs.equals(arguments)))
- {
- exch.replaceBinding(oldBinding.getId(), bindingKey, queue, arguments);
- }
+ exch.replaceBinding(bindingKey, queue, arguments);
}
}
}
diff --git a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/QueueDeclareHandler.java b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/QueueDeclareHandler.java
index 4a3bd1e921..97aac8424a 100644
--- a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/QueueDeclareHandler.java
+++ b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/QueueDeclareHandler.java
@@ -163,7 +163,7 @@ public class QueueDeclareHandler implements StateAwareMethodListener<QueueDeclar
MethodRegistry methodRegistry = protocolConnection.getMethodRegistry();
QueueDeclareOkBody responseBody =
methodRegistry.createQueueDeclareOkBody(queueName,
- queue.getMessageCount(),
+ queue.getQueueDepthMessages(),
queue.getConsumerCount());
protocolConnection.writeFrame(responseBody.generateFrame(channelId));
diff --git a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/QueueUnbindHandler.java b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/QueueUnbindHandler.java
index f6dbd0cee0..a828ca323d 100644
--- a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/QueueUnbindHandler.java
+++ b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/handler/QueueUnbindHandler.java
@@ -30,9 +30,8 @@ import org.apache.qpid.framing.QueueUnbindBody;
import org.apache.qpid.framing.amqp_0_9.MethodRegistry_0_9;
import org.apache.qpid.framing.amqp_0_91.MethodRegistry_0_91;
import org.apache.qpid.protocol.AMQConstant;
-import org.apache.qpid.server.binding.Binding;
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.protocol.v0_8.AMQChannel;
-import org.apache.qpid.server.exchange.Exchange;
import org.apache.qpid.server.protocol.v0_8.AMQProtocolSession;
import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.protocol.v0_8.state.AMQStateManager;
@@ -94,13 +93,13 @@ public class QueueUnbindHandler implements StateAwareMethodListener<QueueUnbindB
{
throw body.getChannelException(AMQConstant.NOT_FOUND, "Queue " + body.getQueue() + " does not exist.");
}
- final Exchange exch = virtualHost.getExchange(body.getExchange() == null ? null : body.getExchange().toString());
+ final ExchangeImpl exch = virtualHost.getExchange(body.getExchange() == null ? null : body.getExchange().toString());
if (exch == null)
{
throw body.getChannelException(AMQConstant.NOT_FOUND, "Exchange " + body.getExchange() + " does not exist.");
}
- if(exch.getBinding(String.valueOf(routingKey), queue) == null)
+ if(!exch.hasBinding(String.valueOf(routingKey), queue))
{
throw body.getChannelException(AMQConstant.NOT_FOUND,"No such binding");
}
@@ -108,11 +107,7 @@ public class QueueUnbindHandler implements StateAwareMethodListener<QueueUnbindB
{
try
{
- Binding binding = exch.getBinding(String.valueOf(routingKey), queue);
- if(binding != null)
- {
- binding.delete();
- }
+ exch.deleteBinding(String.valueOf(routingKey), queue);
}
catch (AccessControlException e)
{
diff --git a/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/AMQChannelTest.java b/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/AMQChannelTest.java
index 317a544b6c..face730195 100644
--- a/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/AMQChannelTest.java
+++ b/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/AMQChannelTest.java
@@ -26,13 +26,12 @@ import static org.mockito.Mockito.when;
import java.util.HashMap;
import java.util.Map;
-import org.apache.qpid.AMQException;
import org.apache.qpid.framing.AMQShortString;
import org.apache.qpid.framing.BasicContentHeaderProperties;
import org.apache.qpid.framing.ContentHeaderBody;
import org.apache.qpid.framing.abstraction.MessagePublishInfo;
import org.apache.qpid.server.configuration.BrokerProperties;
-import org.apache.qpid.server.exchange.Exchange;
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.message.MessageContentSource;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.util.BrokerTestHelper;
@@ -100,7 +99,7 @@ public class AMQChannelTest extends QpidTestCase
channel.setLocalTransactional();
MessagePublishInfo info = mock(MessagePublishInfo.class);
- Exchange e = mock(Exchange.class);
+ ExchangeImpl e = mock(ExchangeImpl.class);
ContentHeaderBody contentHeaderBody= mock(ContentHeaderBody.class);
BasicContentHeaderProperties properties = mock(BasicContentHeaderProperties.class);
@@ -123,7 +122,7 @@ public class AMQChannelTest extends QpidTestCase
channel.setLocalTransactional();
MessagePublishInfo info = mock(MessagePublishInfo.class);
- Exchange e = mock(Exchange.class);
+ ExchangeImpl e = mock(ExchangeImpl.class);
ContentHeaderBody contentHeaderBody= mock(ContentHeaderBody.class);
BasicContentHeaderProperties properties = mock(BasicContentHeaderProperties.class);
diff --git a/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/BrokerTestHelper_0_8.java b/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/BrokerTestHelper_0_8.java
index e5a3475feb..86adc585c3 100644
--- a/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/BrokerTestHelper_0_8.java
+++ b/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/BrokerTestHelper_0_8.java
@@ -25,7 +25,7 @@ import org.apache.qpid.framing.AMQShortString;
import org.apache.qpid.framing.BasicContentHeaderProperties;
import org.apache.qpid.framing.ContentHeaderBody;
import org.apache.qpid.framing.abstraction.MessagePublishInfo;
-import org.apache.qpid.server.exchange.Exchange;
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.util.BrokerTestHelper;
import org.apache.qpid.server.virtualhost.VirtualHost;
@@ -73,7 +73,7 @@ public class BrokerTestHelper_0_8 extends BrokerTestHelper
when(info.getExchange()).thenReturn(exchangeNameAsShortString);
when(info.getRoutingKey()).thenReturn(routingKey);
- Exchange exchange = channel.getVirtualHost().getExchange(exchangeName);
+ ExchangeImpl exchange = channel.getVirtualHost().getExchange(exchangeName);
for (int count = 0; count < numberOfMessages; count++)
{
channel.setPublishFrame(info, exchange);
diff --git a/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/ExtractResendAndRequeueTest.java b/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/ExtractResendAndRequeueTest.java
index aa5a75396a..f18da87d09 100644
--- a/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/ExtractResendAndRequeueTest.java
+++ b/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/ExtractResendAndRequeueTest.java
@@ -75,7 +75,7 @@ public class ExtractResendAndRequeueTest extends TestCase
when(_queue.getName()).thenReturn(getName());
when(_queue.isDeleted()).thenReturn(_queueDeleted);
_consumer = mock(Consumer.class);
- when(_consumer.getId()).thenReturn(Consumer.SUB_ID_GENERATOR.getAndIncrement());
+ when(_consumer.getConsumerNumber()).thenReturn(Consumer.CONSUMER_NUMBER_GENERATOR.getAndIncrement());
long id = 0;
diff --git a/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ExchangeDestination.java b/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ExchangeDestination.java
index 5356a6e6a3..d83665ad39 100644
--- a/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ExchangeDestination.java
+++ b/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ExchangeDestination.java
@@ -25,7 +25,7 @@ import org.apache.qpid.amqp_1_0.type.messaging.Accepted;
import org.apache.qpid.amqp_1_0.type.messaging.Rejected;
import org.apache.qpid.amqp_1_0.type.messaging.TerminusDurability;
import org.apache.qpid.amqp_1_0.type.messaging.TerminusExpiryPolicy;
-import org.apache.qpid.server.exchange.Exchange;
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.message.InstanceProperties;
import org.apache.qpid.server.txn.ServerTransaction;
@@ -35,11 +35,11 @@ public class ExchangeDestination implements ReceivingDestination, SendingDestina
public static final Rejected REJECTED = new Rejected();
private static final Outcome[] OUTCOMES = { ACCEPTED, REJECTED};
- private Exchange _exchange;
+ private ExchangeImpl _exchange;
private TerminusDurability _durability;
private TerminusExpiryPolicy _expiryPolicy;
- public ExchangeDestination(Exchange exchange, TerminusDurability durable, TerminusExpiryPolicy expiryPolicy)
+ public ExchangeDestination(ExchangeImpl exchange, TerminusDurability durable, TerminusExpiryPolicy expiryPolicy)
{
_exchange = exchange;
_durability = durable;
@@ -98,7 +98,7 @@ public class ExchangeDestination implements ReceivingDestination, SendingDestina
return 20000;
}
- public Exchange getExchange()
+ public ExchangeImpl getExchange()
{
return _exchange;
}
diff --git a/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/NodeReceivingDestination.java b/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/NodeReceivingDestination.java
index 70f659b546..f7f049831e 100644
--- a/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/NodeReceivingDestination.java
+++ b/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/NodeReceivingDestination.java
@@ -25,7 +25,6 @@ import org.apache.qpid.amqp_1_0.type.messaging.Accepted;
import org.apache.qpid.amqp_1_0.type.messaging.Rejected;
import org.apache.qpid.amqp_1_0.type.messaging.TerminusDurability;
import org.apache.qpid.amqp_1_0.type.messaging.TerminusExpiryPolicy;
-import org.apache.qpid.server.exchange.Exchange;
import org.apache.qpid.server.message.InstanceProperties;
import org.apache.qpid.server.message.MessageDestination;
import org.apache.qpid.server.txn.ServerTransaction;
diff --git a/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java b/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java
index 94120371fb..394ab69990 100644
--- a/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java
+++ b/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java
@@ -21,16 +21,12 @@
package org.apache.qpid.server.protocol.v1_0;
import java.security.AccessControlException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.EnumSet;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
+import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.log4j.Logger;
+import org.apache.qpid.server.binding.BindingImpl;
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.model.ExclusivityPolicy;
import org.apache.qpid.server.model.LifetimePolicy;
import org.apache.qpid.server.model.Queue;
@@ -51,9 +47,7 @@ import org.apache.qpid.amqp_1_0.type.transport.Error;
import org.apache.qpid.amqp_1_0.type.transport.Transfer;
import org.apache.qpid.filter.SelectorParsingException;
import org.apache.qpid.filter.selector.ParseException;
-import org.apache.qpid.server.binding.Binding;
import org.apache.qpid.server.exchange.DirectExchange;
-import org.apache.qpid.server.exchange.Exchange;
import org.apache.qpid.server.exchange.TopicExchange;
import org.apache.qpid.server.filter.JMSSelectorFilter;
import org.apache.qpid.server.filter.SimpleFilterManager;
@@ -205,7 +199,7 @@ public class SendingLink_1_0 implements SendingLinkListener, Link_1_0, DeliveryS
}
AMQQueue queue = _vhost.getQueue(name);
- Exchange exchange = exchangeDestination.getExchange();
+ ExchangeImpl exchange = exchangeDestination.getExchange();
if(queue == null)
{
@@ -220,17 +214,16 @@ public class SendingLink_1_0 implements SendingLinkListener, Link_1_0, DeliveryS
}
else
{
- List<Binding> bindings = queue.getBindings();
- List<Binding> bindingsToRemove = new ArrayList<Binding>();
- for(Binding existingBinding : bindings)
+ Collection<BindingImpl> bindings = queue.getBindings();
+ List<BindingImpl> bindingsToRemove = new ArrayList<BindingImpl>();
+ for(BindingImpl existingBinding : bindings)
{
- if(existingBinding.getExchangeImpl() != _vhost.getDefaultExchange()
- && existingBinding.getExchangeImpl() != exchange)
+ if(existingBinding.getExchange() != exchange)
{
bindingsToRemove.add(existingBinding);
}
}
- for(Binding existingBinding : bindingsToRemove)
+ for(BindingImpl existingBinding : bindingsToRemove)
{
existingBinding.delete();
}
diff --git a/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Session_1_0.java b/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Session_1_0.java
index ac1517aaf5..6132b48722 100644
--- a/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Session_1_0.java
+++ b/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Session_1_0.java
@@ -43,9 +43,9 @@ import org.apache.qpid.amqp_1_0.type.transport.*;
import org.apache.qpid.amqp_1_0.type.transport.Error;
import org.apache.qpid.server.connection.SessionPrincipal;
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.model.*;
import org.apache.qpid.protocol.AMQConstant;
-import org.apache.qpid.server.exchange.Exchange;
import org.apache.qpid.server.logging.LogSubject;
import org.apache.qpid.server.message.MessageDestination;
import org.apache.qpid.server.message.MessageSource;
@@ -138,7 +138,7 @@ public class Session_1_0 implements SessionEventListener, AMQSessionModel<Sessio
}
else
{
- Exchange exchg = getVirtualHost().getExchange(addr);
+ ExchangeImpl exchg = getVirtualHost().getExchange(addr);
if(exchg != null)
{
destination = new ExchangeDestination(exchg, source.getDurable(), source.getExpiryPolicy());
diff --git a/qpid/java/broker-plugins/amqp-msg-conv-0-8-to-0-10/src/main/java/org/apache/qpid/server/protocol/converter/v0_8_v0_10/MessageConverter_0_10_to_0_8.java b/qpid/java/broker-plugins/amqp-msg-conv-0-8-to-0-10/src/main/java/org/apache/qpid/server/protocol/converter/v0_8_v0_10/MessageConverter_0_10_to_0_8.java
index 0c83c31ad4..d385f684ea 100644
--- a/qpid/java/broker-plugins/amqp-msg-conv-0-8-to-0-10/src/main/java/org/apache/qpid/server/protocol/converter/v0_8_v0_10/MessageConverter_0_10_to_0_8.java
+++ b/qpid/java/broker-plugins/amqp-msg-conv-0-8-to-0-10/src/main/java/org/apache/qpid/server/protocol/converter/v0_8_v0_10/MessageConverter_0_10_to_0_8.java
@@ -30,7 +30,7 @@ import org.apache.qpid.framing.BasicContentHeaderProperties;
import org.apache.qpid.framing.ContentHeaderBody;
import org.apache.qpid.framing.FieldTable;
import org.apache.qpid.framing.abstraction.MessagePublishInfo;
-import org.apache.qpid.server.exchange.Exchange;
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.plugin.MessageConverter;
import org.apache.qpid.server.protocol.v0_10.MessageTransferMessage;
import org.apache.qpid.server.protocol.v0_8.AMQMessage;
@@ -110,7 +110,7 @@ public class MessageConverter_0_10_to_0_8 implements MessageConverter<MessageTra
exchangeName = "";
}
- Exchange exchange = vhost.getExchange(exchangeName);
+ ExchangeImpl exchange = vhost.getExchange(exchangeName);
String exchangeClass = exchange == null
? ExchangeDefaults.DIRECT_EXCHANGE_CLASS
: exchange.getTypeName();
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 c163bfa238..6029b09466 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
@@ -56,7 +56,7 @@ import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
-class ManagementNode implements MessageSource<ManagementNodeConsumer,ManagementNode>, MessageDestination
+class ManagementNode implements MessageSource, MessageDestination
{
public static final String NAME_ATTRIBUTE = "name";
@@ -93,8 +93,8 @@ class ManagementNode implements MessageSource<ManagementNodeConsumer,ManagementN
private final UUID _id;
- private final CopyOnWriteArrayList<ConsumerRegistrationListener<ManagementNode>> _consumerRegistrationListeners =
- new CopyOnWriteArrayList<ConsumerRegistrationListener<ManagementNode>>();
+ private final CopyOnWriteArrayList<ConsumerRegistrationListener<? super MessageSource>> _consumerRegistrationListeners =
+ new CopyOnWriteArrayList<ConsumerRegistrationListener<? super MessageSource>>();
private final SystemNodeCreator.SystemNodeRegistry _registry;
private final ConfiguredObject<?> _managedObject;
@@ -139,18 +139,41 @@ class ManagementNode implements MessageSource<ManagementNodeConsumer,ManagementN
private Class getManagementClass(Class objectClass)
{
- List<Class> allClasses = new ArrayList<Class>();
- allClasses.add(objectClass);
- allClasses.addAll(Arrays.asList(objectClass.getInterfaces()));
- allClasses.add(objectClass.getSuperclass());
- for(Class clazz : allClasses)
+
+ if(objectClass.getAnnotation(ManagedObject.class)!=null)
{
- ManagedObject annotation = (ManagedObject) clazz.getAnnotation(ManagedObject.class);
- if(annotation != null)
+ return objectClass;
+ }
+ List<Class> allClasses = Collections.singletonList(objectClass);
+ List<Class> testedClasses = new ArrayList<Class>();
+ do
+ {
+ testedClasses.addAll( allClasses );
+ allClasses = new ArrayList<Class>();
+ for(Class c : testedClasses)
{
- return clazz;
+ for(Class i : c.getInterfaces())
+ {
+ if(!allClasses.contains(i))
+ {
+ allClasses.add(i);
+ }
+ }
+ if(c.getSuperclass() != null && !allClasses.contains(c.getSuperclass()))
+ {
+ allClasses.add(c.getSuperclass());
+ }
+ }
+ allClasses.removeAll(testedClasses);
+ for(Class c : allClasses)
+ {
+ if(c.getAnnotation(ManagedObject.class) != null)
+ {
+ return c;
+ }
}
}
+ while(!allClasses.isEmpty());
return null;
}
@@ -240,7 +263,7 @@ class ManagementNode implements MessageSource<ManagementNodeConsumer,ManagementN
public <M extends ServerMessage<? extends StorableMessageMetaData>> int send(final M message,
final InstanceProperties instanceProperties,
final ServerTransaction txn,
- final Action<? super MessageInstance<?, ? extends Consumer>> postEnqueueAction)
+ final Action<? super MessageInstance> postEnqueueAction)
{
@SuppressWarnings("unchecked")
@@ -286,7 +309,7 @@ class ManagementNode implements MessageSource<ManagementNodeConsumer,ManagementN
return header.containsHeader(name) && header.getHeader(name) instanceof String;
}
- synchronized void enqueue(InternalMessage message, InstanceProperties properties, Action<? super MessageInstance<?, ? extends Consumer>> postEnqueueAction)
+ synchronized void enqueue(InternalMessage message, InstanceProperties properties, Action<? super MessageInstance> postEnqueueAction)
{
if(postEnqueueAction != null)
{
@@ -925,7 +948,7 @@ class ManagementNode implements MessageSource<ManagementNodeConsumer,ManagementN
}
@Override
- public synchronized <T extends ConsumerTarget> ManagementNodeConsumer addConsumer(final T target,
+ public synchronized ManagementNodeConsumer addConsumer(final ConsumerTarget target,
final FilterManager filters,
final Class<? extends ServerMessage> messageClass,
final String consumerName,
@@ -935,7 +958,7 @@ class ManagementNode implements MessageSource<ManagementNodeConsumer,ManagementN
final ManagementNodeConsumer managementNodeConsumer = new ManagementNodeConsumer(consumerName,this, target);
target.consumerAdded(managementNodeConsumer);
_consumers.put(consumerName, managementNodeConsumer);
- for(ConsumerRegistrationListener<ManagementNode> listener : _consumerRegistrationListeners)
+ for(ConsumerRegistrationListener<? super MessageSource> listener : _consumerRegistrationListeners)
{
listener.consumerAdded(this, managementNodeConsumer);
}
@@ -949,7 +972,7 @@ class ManagementNode implements MessageSource<ManagementNodeConsumer,ManagementN
}
@Override
- public void addConsumerRegistrationListener(final ConsumerRegistrationListener<ManagementNode> listener)
+ public void addConsumerRegistrationListener(final ConsumerRegistrationListener<? super MessageSource> listener)
{
_consumerRegistrationListeners.add(listener);
}
@@ -984,7 +1007,7 @@ class ManagementNode implements MessageSource<ManagementNodeConsumer,ManagementN
return false;
}
- private class ConsumedMessageInstance implements MessageInstance<ConsumedMessageInstance,Consumer>
+ private class ConsumedMessageInstance implements MessageInstance
{
private final ServerMessage _message;
private final InstanceProperties _properties;
@@ -1015,13 +1038,13 @@ class ManagementNode implements MessageSource<ManagementNodeConsumer,ManagementN
}
@Override
- public void addStateChangeListener(final StateChangeListener<? super ConsumedMessageInstance, State> listener)
+ public void addStateChangeListener(final StateChangeListener<? super MessageInstance, State> listener)
{
}
@Override
- public boolean removeStateChangeListener(final StateChangeListener<? super ConsumedMessageInstance, State> listener)
+ public boolean removeStateChangeListener(final StateChangeListener<? super MessageInstance, State> listener)
{
return false;
}
@@ -1094,7 +1117,7 @@ class ManagementNode implements MessageSource<ManagementNodeConsumer,ManagementN
}
@Override
- public int routeToAlternate(final Action<? super MessageInstance<?, ? extends Consumer>> action,
+ public int routeToAlternate(final Action<? super MessageInstance> action,
final ServerTransaction txn)
{
return 0;
@@ -1182,7 +1205,8 @@ class ManagementNode implements MessageSource<ManagementNodeConsumer,ManagementN
@Override
public void childAdded(final ConfiguredObject object, final ConfiguredObject child)
{
- final ManagedEntityType entityType = _entityTypes.get(getManagementClass(child.getClass()).getName());
+ final Class managementClass = getManagementClass(child.getClass());
+ final ManagedEntityType entityType = _entityTypes.get(managementClass.getName());
if(entityType != null)
{
_entities.get(entityType).put(child.getName(), child);
diff --git a/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNodeConsumer.java b/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNodeConsumer.java
index 1e2c7b0652..8a1f39fdfe 100644
--- a/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNodeConsumer.java
+++ b/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNodeConsumer.java
@@ -35,7 +35,7 @@ import java.util.concurrent.locks.ReentrantLock;
class ManagementNodeConsumer implements Consumer
{
- private final long _id = Consumer.SUB_ID_GENERATOR.getAndIncrement();
+ private final long _id = Consumer.CONSUMER_NUMBER_GENERATOR.getAndIncrement();
private final ManagementNode _managementNode;
private final List<ManagementResponse> _queue = Collections.synchronizedList(new ArrayList<ManagementResponse>());
private final ConsumerTarget _target;
@@ -95,7 +95,7 @@ class ManagementNodeConsumer implements Consumer
}
@Override
- public long getId()
+ public long getConsumerNumber()
{
return _id;
}
diff --git a/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementResponse.java b/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementResponse.java
index 59ab849848..18c68bd198 100644
--- a/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementResponse.java
+++ b/qpid/java/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementResponse.java
@@ -31,7 +31,7 @@ import org.apache.qpid.server.txn.ServerTransaction;
import org.apache.qpid.server.util.Action;
import org.apache.qpid.server.util.StateChangeListener;
-class ManagementResponse implements MessageInstance<ManagementResponse,ManagementNodeConsumer>
+class ManagementResponse implements MessageInstance
{
private final ManagementNodeConsumer _consumer;
private int _deliveryCount;
@@ -65,13 +65,13 @@ class ManagementResponse implements MessageInstance<ManagementResponse,Managemen
}
@Override
- public void addStateChangeListener(final StateChangeListener<? super ManagementResponse, State> listener)
+ public void addStateChangeListener(final StateChangeListener<? super MessageInstance, State> listener)
{
}
@Override
- public boolean removeStateChangeListener(final StateChangeListener<? super ManagementResponse, State> listener)
+ public boolean removeStateChangeListener(final StateChangeListener<? super MessageInstance, State> listener)
{
return false;
}
@@ -84,7 +84,7 @@ class ManagementResponse implements MessageInstance<ManagementResponse,Managemen
}
@Override
- public boolean isAcquiredBy(final ManagementNodeConsumer consumer)
+ public boolean isAcquiredBy(final Consumer consumer)
{
return consumer == _consumer && !isDeleted();
}
@@ -114,7 +114,7 @@ class ManagementResponse implements MessageInstance<ManagementResponse,Managemen
}
@Override
- public boolean isRejectedBy(final ManagementNodeConsumer consumer)
+ public boolean isRejectedBy(final Consumer consumer)
{
return false;
}
@@ -132,7 +132,7 @@ class ManagementResponse implements MessageInstance<ManagementResponse,Managemen
}
@Override
- public boolean acquire(final ManagementNodeConsumer sub)
+ public boolean acquire(final Consumer sub)
{
return false;
}
@@ -144,7 +144,7 @@ class ManagementResponse implements MessageInstance<ManagementResponse,Managemen
}
@Override
- public int routeToAlternate(final Action<? super MessageInstance<?, ? extends Consumer>> action,
+ public int routeToAlternate(final Action<? super MessageInstance> action,
final ServerTransaction txn)
{
return 0;
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageServlet.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageServlet.java
index d28338b354..baf92e8522 100644
--- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageServlet.java
+++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/MessageServlet.java
@@ -328,7 +328,7 @@ public class MessageServlet extends AbstractServlet
? "Acquired"
: "");
final Consumer deliveredConsumer = entry.getDeliveredConsumer();
- object.put("deliveredTo", deliveredConsumer == null ? null : deliveredConsumer.getId());
+ object.put("deliveredTo", deliveredConsumer == null ? null : deliveredConsumer.getConsumerNumber());
ServerMessage message = entry.getMessage();
if(message != null)
diff --git a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/ExchangeMBean.java b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/ExchangeMBean.java
index 27901bfbf7..8b247ef5fa 100644
--- a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/ExchangeMBean.java
+++ b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/ExchangeMBean.java
@@ -22,6 +22,8 @@
package org.apache.qpid.server.jmx.mbeans;
import org.apache.qpid.management.common.mbeans.ManagedExchange;
+import org.apache.qpid.server.binding.BindingImpl;
+import org.apache.qpid.server.exchange.HeadersExchange;
import org.apache.qpid.server.jmx.AMQManagedObject;
import org.apache.qpid.server.jmx.ManagedObject;
import org.apache.qpid.server.model.Binding;
@@ -173,7 +175,7 @@ public class ExchangeMBean extends AMQManagedObject implements ManagedExchange
{
if(HEADERS_EXCHANGE_TYPE.equals(_exchange.getType()))
{
- return getHeadersBindings(_exchange.getBindings());
+ return getHeadersBindings(_exchange.getBindings());
}
else
{
@@ -181,7 +183,7 @@ public class ExchangeMBean extends AMQManagedObject implements ManagedExchange
}
}
- private TabularData getHeadersBindings(Collection<Binding> bindings) throws OpenDataException
+ private TabularData getHeadersBindings(Collection<? extends Binding> bindings) throws OpenDataException
{
TabularType bindinglistDataType =
new TabularType("Exchange Bindings", "List of exchange bindings for " + getName(),
@@ -221,7 +223,7 @@ public class ExchangeMBean extends AMQManagedObject implements ManagedExchange
}
- private TabularData getNonHeadersBindings(Collection<Binding> bindings) throws OpenDataException
+ private TabularData getNonHeadersBindings(Collection<? extends Binding> bindings) throws OpenDataException
{
TabularType bindinglistDataType =
diff --git a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java
index 88d68cff9a..ca8cc7eb7d 100644
--- a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java
+++ b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBean.java
@@ -166,7 +166,7 @@ public class VirtualHostManagerMBean extends AbstractStatisticsGatheringMBean<Vi
try
{
getConfiguredObject().createExchange(name, State.ACTIVE, durable,
- LifetimePolicy.PERMANENT, 0l, type, Collections.EMPTY_MAP);
+ LifetimePolicy.PERMANENT, type, Collections.EMPTY_MAP);
}
catch (IllegalArgumentException iae)
{
diff --git a/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/QueueMBeanTest.java b/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/QueueMBeanTest.java
index 4a88884bf8..f2ca04f709 100644
--- a/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/QueueMBeanTest.java
+++ b/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/QueueMBeanTest.java
@@ -87,7 +87,7 @@ public class QueueMBeanTest extends QpidTestCase
public void testGetMessageCount() throws Exception
{
- when(_mockQueue.getQueueDepthMessages()).thenReturn(1000l);
+ when(_mockQueue.getQueueDepthMessages()).thenReturn(1000);
assertStatistic("messageCount", 1000);
}
@@ -105,13 +105,13 @@ public class QueueMBeanTest extends QpidTestCase
public void testActiveConsumerCount() throws Exception
{
- when(_mockQueue.getConsumerCountWithCredit()).thenReturn(3l);
+ when(_mockQueue.getConsumerCountWithCredit()).thenReturn(3);
assertStatistic("activeConsumerCount", 3);
}
public void testConsumerCount() throws Exception
{
- when(_mockQueue.getConsumerCount()).thenReturn(3l);
+ when(_mockQueue.getConsumerCount()).thenReturn(3);
assertStatistic("consumerCount", 3);
}
diff --git a/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBeanTest.java b/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBeanTest.java
index 2dc2cb8d3b..8d56e766fc 100644
--- a/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBeanTest.java
+++ b/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/VirtualHostManagerMBeanTest.java
@@ -146,7 +146,7 @@ public class VirtualHostManagerMBeanTest extends TestCase
public void testCreateNewDurableExchange() throws Exception
{
_virtualHostManagerMBean.createNewExchange(TEST_EXCHANGE_NAME, TEST_EXCHANGE_TYPE, true);
- verify(_mockVirtualHost).createExchange(TEST_EXCHANGE_NAME, State.ACTIVE, true, LifetimePolicy.PERMANENT, 0, TEST_EXCHANGE_TYPE, EMPTY_ARGUMENT_MAP);
+ verify(_mockVirtualHost).createExchange(TEST_EXCHANGE_NAME, State.ACTIVE, true, LifetimePolicy.PERMANENT, TEST_EXCHANGE_TYPE, EMPTY_ARGUMENT_MAP);
}
public void testCreateNewExchangeWithUnknownExchangeType() throws Exception
@@ -161,7 +161,7 @@ public class VirtualHostManagerMBeanTest extends TestCase
{
// PASS
}
- verify(_mockVirtualHost, never()).createExchange(TEST_EXCHANGE_NAME, State.ACTIVE, true, LifetimePolicy.PERMANENT, 0, exchangeType, EMPTY_ARGUMENT_MAP);
+ verify(_mockVirtualHost, never()).createExchange(TEST_EXCHANGE_NAME, State.ACTIVE, true, LifetimePolicy.PERMANENT, exchangeType, EMPTY_ARGUMENT_MAP);
}
public void testUnregisterExchange() throws Exception
diff --git a/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java b/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java
index 9657a49d98..60d48f02ef 100644
--- a/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java
+++ b/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java
@@ -1187,7 +1187,10 @@ public class AMQSession_0_10 extends AMQSession<BasicMessageConsumer_0_10, Basic
for (String key: source.keySet())
{
match = target.containsKey(key) &&
- target.get(key).equals(source.get(key));
+ (target.get(key).equals(source.get(key))
+ || (target.get(key) instanceof Number)
+ && source.get(key) instanceof Number &&
+ (((Number) target.get(key)).longValue()) == (((Number) source.get(key)).longValue()));
if (!match)
{
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/server/store/MessageStoreTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/server/store/MessageStoreTest.java
index eba5a6dd46..e6f9c46523 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/server/store/MessageStoreTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/server/store/MessageStoreTest.java
@@ -34,13 +34,14 @@ import org.apache.qpid.framing.ContentHeaderBody;
import org.apache.qpid.framing.FieldTable;
import org.apache.qpid.framing.abstraction.MessagePublishInfo;
import org.apache.qpid.framing.amqp_8_0.BasicConsumeBodyImpl;
-import org.apache.qpid.server.binding.Binding;
+import org.apache.qpid.server.binding.BindingImpl;
import org.apache.qpid.server.configuration.VirtualHostConfiguration;
import org.apache.qpid.server.exchange.DirectExchange;
-import org.apache.qpid.server.exchange.Exchange;
+import org.apache.qpid.server.exchange.ExchangeImpl;
import org.apache.qpid.server.exchange.TopicExchange;
import org.apache.qpid.server.message.InstanceProperties;
import org.apache.qpid.server.message.MessageSource;
+import org.apache.qpid.server.model.Binding;
import org.apache.qpid.server.model.ExclusivityPolicy;
import org.apache.qpid.server.model.LifetimePolicy;
import org.apache.qpid.server.model.Queue;
@@ -212,15 +213,15 @@ public class MessageStoreTest extends QpidTestCase
createAllTopicQueues();
//Register Non-Durable DirectExchange
- Exchange nonDurableExchange = createExchange(DirectExchange.TYPE, nonDurableExchangeName, false);
+ ExchangeImpl nonDurableExchange = createExchange(DirectExchange.TYPE, nonDurableExchangeName, false);
bindAllQueuesToExchange(nonDurableExchange, directRouting);
//Register DirectExchange
- Exchange directExchange = createExchange(DirectExchange.TYPE, directExchangeName, true);
+ ExchangeImpl directExchange = createExchange(DirectExchange.TYPE, directExchangeName, true);
bindAllQueuesToExchange(directExchange, directRouting);
//Register TopicExchange
- Exchange topicExchange = createExchange(TopicExchange.TYPE, topicExchangeName, true);
+ ExchangeImpl topicExchange = createExchange(TopicExchange.TYPE, topicExchangeName, true);
bindAllTopicQueuesToExchange(topicExchange, topicRouting);
//Send Message To NonDurable direct Exchange = persistent
@@ -365,7 +366,7 @@ public class MessageStoreTest extends QpidTestCase
{
int origExchangeCount = getVirtualHost().getExchanges().size();
- Map<String, Exchange> oldExchanges = createExchanges();
+ Map<String, ExchangeImpl> oldExchanges = createExchanges();
assertEquals("Incorrect number of exchanges registered before recovery",
origExchangeCount + 3, getVirtualHost().getExchanges().size());
@@ -396,7 +397,7 @@ public class MessageStoreTest extends QpidTestCase
origExchangeCount + 1, getVirtualHost().getExchanges().size());
//test that removing the exchange means it is not recovered next time
- final Exchange exchange = getVirtualHost().getExchange(directExchangeName);
+ final ExchangeImpl exchange = getVirtualHost().getExchange(directExchangeName);
DurableConfigurationStoreHelper.removeExchange(getVirtualHost().getDurableConfigurationStore(), exchange);
reloadVirtualHost();
@@ -420,11 +421,11 @@ public class MessageStoreTest extends QpidTestCase
createAllQueues();
createAllTopicQueues();
- Map<String, Exchange> exchanges = createExchanges();
+ Map<String, ExchangeImpl> exchanges = createExchanges();
- Exchange nonDurableExchange = exchanges.get(nonDurableExchangeName);
- Exchange directExchange = exchanges.get(directExchangeName);
- Exchange topicExchange = exchanges.get(topicExchangeName);
+ ExchangeImpl nonDurableExchange = exchanges.get(nonDurableExchangeName);
+ ExchangeImpl directExchange = exchanges.get(directExchangeName);
+ ExchangeImpl topicExchange = exchanges.get(topicExchangeName);
bindAllQueuesToExchange(nonDurableExchange, directRouting);
bindAllQueuesToExchange(directExchange, directRouting);
@@ -448,7 +449,7 @@ public class MessageStoreTest extends QpidTestCase
public void testDurableBindingRemoval() throws Exception
{
//create durable queue and exchange, bind them
- Exchange exch = createExchange(DirectExchange.TYPE, directExchangeName, true);
+ ExchangeImpl exch = createExchange(DirectExchange.TYPE, directExchangeName, true);
createQueue(durableQueueName, false, true, false, false);
bindQueueToExchange(exch, directRouting, getVirtualHost().getQueue(durableQueueName), false);
@@ -478,11 +479,11 @@ public class MessageStoreTest extends QpidTestCase
* and that the new exchanges are not the same objects as the provided list (i.e. that the
* reload actually generated new exchange objects)
*/
- private void validateExchanges(int originalNumExchanges, Map<String, Exchange> oldExchanges)
+ private void validateExchanges(int originalNumExchanges, Map<String, ExchangeImpl> oldExchanges)
{
- Collection<Exchange> exchanges = getVirtualHost().getExchanges();
+ Collection<ExchangeImpl> exchanges = getVirtualHost().getExchanges();
Collection<String> exchangeNames = new ArrayList(exchanges.size());
- for(Exchange exchange : exchanges)
+ for(ExchangeImpl exchange : exchanges)
{
exchangeNames.add(exchange.getName());
}
@@ -525,11 +526,11 @@ public class MessageStoreTest extends QpidTestCase
* @param bindings the set of bindings to validate
* @param useSelectors if set, check the binding has a JMS_SELECTOR argument and the correct value for it
*/
- private void validateBindingProperties(List<Binding> bindings, boolean useSelectors)
+ private void validateBindingProperties(Collection<? extends Binding> bindings, boolean useSelectors)
{
assertEquals("Each queue should only be bound once.", 1, bindings.size());
- Binding binding = bindings.get(0);
+ Binding binding = bindings.iterator().next();
if (useSelectors)
{
@@ -605,7 +606,7 @@ public class MessageStoreTest extends QpidTestCase
}
}
- private void sendMessageOnExchange(Exchange exchange, String routingKey, boolean deliveryMode)
+ private void sendMessageOnExchange(ExchangeImpl exchange, String routingKey, boolean deliveryMode)
{
//Set MessagePersistence
BasicContentHeaderProperties properties = new BasicContentHeaderProperties();
@@ -708,9 +709,9 @@ public class MessageStoreTest extends QpidTestCase
}
- private Map<String, Exchange> createExchanges() throws Exception
+ private Map<String, ExchangeImpl> createExchanges() throws Exception
{
- Map<String, Exchange> exchanges = new HashMap<String, Exchange>();
+ Map<String, ExchangeImpl> exchanges = new HashMap<String, ExchangeImpl>();
//Register non-durable DirectExchange
exchanges.put(nonDurableExchangeName, createExchange(DirectExchange.TYPE, nonDurableExchangeName, false));
@@ -722,9 +723,9 @@ public class MessageStoreTest extends QpidTestCase
return exchanges;
}
- private Exchange createExchange(ExchangeType<?> type, String name, boolean durable) throws Exception
+ private ExchangeImpl createExchange(ExchangeType<?> type, String name, boolean durable) throws Exception
{
- Exchange exchange = null;
+ ExchangeImpl exchange = null;
Map<String,Object> attributes = new HashMap<String, Object>();
@@ -739,7 +740,7 @@ public class MessageStoreTest extends QpidTestCase
return exchange;
}
- private void bindAllQueuesToExchange(Exchange exchange, String routingKey)
+ private void bindAllQueuesToExchange(ExchangeImpl exchange, String routingKey)
{
bindQueueToExchange(exchange, routingKey, getVirtualHost().getQueue(durablePriorityQueueName), false);
bindQueueToExchange(exchange, routingKey, getVirtualHost().getQueue(durableQueueName), false);
@@ -748,7 +749,7 @@ public class MessageStoreTest extends QpidTestCase
bindQueueToExchange(exchange, routingKey, getVirtualHost().getQueue(durableExclusiveQueueName), false);
}
- private void bindAllTopicQueuesToExchange(Exchange exchange, String routingKey)
+ private void bindAllTopicQueuesToExchange(ExchangeImpl exchange, String routingKey)
{
bindQueueToExchange(exchange, routingKey, getVirtualHost().getQueue(durablePriorityTopicQueueName), true);
@@ -758,7 +759,7 @@ public class MessageStoreTest extends QpidTestCase
}
- protected void bindQueueToExchange(Exchange exchange,
+ protected void bindQueueToExchange(ExchangeImpl exchange,
String routingKey,
AMQQueue queue,
boolean useSelector)
@@ -780,7 +781,7 @@ public class MessageStoreTest extends QpidTestCase
}
}
- protected void unbindQueueFromExchange(Exchange exchange,
+ protected void unbindQueueFromExchange(ExchangeImpl exchange,
String routingKey,
AMQQueue queue,
boolean useSelector)
@@ -794,8 +795,7 @@ public class MessageStoreTest extends QpidTestCase
try
{
- Binding b = exchange.getBinding(routingKey, queue);
- b.delete();
+ exchange.deleteBinding(routingKey, queue);
}
catch (Exception e)
{
@@ -833,18 +833,18 @@ public class MessageStoreTest extends QpidTestCase
assertNotNull("Queue(" + queueName + ") not correctly registered:", queue);
- assertEquals("Incorrect Message count on queue:" + queueName, messageCount, queue.getMessageCount());
+ assertEquals("Incorrect Message count on queue:" + queueName, messageCount, queue.getQueueDepthMessages());
}
private class TestMessagePublishInfo implements MessagePublishInfo
{
- Exchange _exchange;
+ ExchangeImpl _exchange;
boolean _immediate;
boolean _mandatory;
String _routingKey;
- TestMessagePublishInfo(Exchange exchange, boolean immediate, boolean mandatory, String routingKey)
+ TestMessagePublishInfo(ExchangeImpl exchange, boolean immediate, boolean mandatory, String routingKey)
{
_exchange = exchange;
_immediate = immediate;
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java
index 3bd21f8b77..c749318595 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/Asserts.java
@@ -49,7 +49,6 @@ public class Asserts
ConfiguredObject.LAST_UPDATED_BY,
ConfiguredObject.LAST_UPDATED_TIME,
ConfiguredObject.DESCRIPTION,
- VirtualHost.TIME_TO_LIVE,
VirtualHost.SUPPORTED_QUEUE_TYPES,
VirtualHost.STORE_PATH,
VirtualHost.CONFIG_PATH,
@@ -102,7 +101,6 @@ public class Asserts
Queue.LAST_UPDATED_TIME,
Queue.TYPE,
Queue.DESCRIPTION,
- Queue.TIME_TO_LIVE,
Queue.ALTERNATE_EXCHANGE,
Queue.OWNER,
Queue.NO_LOCAL,
@@ -205,7 +203,6 @@ public class Asserts
Connection.STATE,
Connection.DURABLE,
Connection.LIFETIME_POLICY,
- Connection.TIME_TO_LIVE,
Connection.INCOMING,
Connection.REMOTE_PROCESS_NAME,
Connection.REMOTE_PROCESS_PID,
@@ -254,7 +251,6 @@ public class Asserts
assertEquals("Unexpected value of attribute " + Port.LIFETIME_POLICY, LifetimePolicy.PERMANENT.name(),
port.get(Broker.LIFETIME_POLICY));
assertEquals("Unexpected value of attribute " + Port.STATE, state.name(), port.get(Port.STATE));
- assertEquals("Unexpected value of attribute " + Port.TIME_TO_LIVE, 0, port.get(Port.TIME_TO_LIVE));
@SuppressWarnings("unchecked")
Collection<String> protocols = (Collection<String>) port.get(Port.PROTOCOLS);
@@ -322,7 +318,7 @@ public class Asserts
{
assertNotNull("Exchange " + exchangeName + " is not found!", exchangeData);
assertAttributesPresent(exchangeData, AbstractConfiguredObject.getAttributeNames(Exchange.class),
- Exchange.ALTERNATE_EXCHANGE, Exchange.TIME_TO_LIVE,
+ Exchange.ALTERNATE_EXCHANGE,
ConfiguredObject.CREATED_BY,
ConfiguredObject.CREATED_TIME,
ConfiguredObject.LAST_UPDATED_BY,
@@ -357,7 +353,6 @@ public class Asserts
assertAttributesPresent(binding,
AbstractConfiguredObject.getAttributeNames(Binding.class),
Binding.STATE,
- Binding.TIME_TO_LIVE,
ConfiguredObject.TYPE,
ConfiguredObject.CREATED_BY,
ConfiguredObject.CREATED_TIME,
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java
index 5e1489a640..d41e019c13 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/AuthenticationProviderRestTest.java
@@ -306,7 +306,7 @@ public class AuthenticationProviderRestTest extends QpidRestTestCase
{
Asserts.assertAttributesPresent(provider, AbstractConfiguredObject.getAttributeNames(
AuthenticationProvider.class),
- AuthenticationProvider.DESCRIPTION, AuthenticationProvider.TIME_TO_LIVE, ConfiguredObject.CREATED_BY,
+ AuthenticationProvider.DESCRIPTION, ConfiguredObject.CREATED_BY,
ConfiguredObject.CREATED_TIME, ConfiguredObject.LAST_UPDATED_BY, ConfiguredObject.LAST_UPDATED_TIME);
assertEquals("Unexpected value of provider attribute " + AuthenticationProvider.STATE, State.ACTIVE.name(),
provider.get(AuthenticationProvider.STATE));
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestHttpsTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestHttpsTest.java
index a9705f73d5..ad789e6fa1 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestHttpsTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestHttpsTest.java
@@ -65,7 +65,7 @@ public class BrokerRestHttpsTest extends QpidRestTestCase
Map<String, Object> brokerDetails = getRestTestHelper().getJsonAsSingletonList("/rest/broker");
Asserts.assertAttributesPresent(brokerDetails, AbstractConfiguredObject.getAttributeNames(Broker.class),
- Broker.PROCESS_PID, Broker.SUPPORTED_VIRTUALHOST_STORE_TYPES, Broker.TIME_TO_LIVE,
+ Broker.PROCESS_PID, Broker.SUPPORTED_VIRTUALHOST_STORE_TYPES,
ConfiguredObject.TYPE,
ConfiguredObject.CREATED_BY,
ConfiguredObject.CREATED_TIME,
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java
index 178f365fa5..1ccd31a83a 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java
@@ -236,7 +236,6 @@ public class BrokerRestTest extends QpidRestTestCase
{
Asserts.assertAttributesPresent(brokerDetails, AbstractConfiguredObject.getAttributeNames(Broker.class),
Broker.PROCESS_PID,
- Broker.TIME_TO_LIVE,
ConfiguredObject.TYPE,
ConfiguredObject.CREATED_BY,
ConfiguredObject.CREATED_TIME,
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/ConnectionRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/ConnectionRestTest.java
index 07f1627d94..d405a91ad4 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/ConnectionRestTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/ConnectionRestTest.java
@@ -183,7 +183,7 @@ public class ConnectionRestTest extends QpidRestTestCase
ConfiguredObject.DESCRIPTION,
Session.STATE,
Session.DURABLE,
- Session.LIFETIME_POLICY, Session.TIME_TO_LIVE);
+ Session.LIFETIME_POLICY);
assertEquals("Unexpecte value of attribute " + Session.NAME, session.getChannelId() + "",
sessionData.get(Session.NAME));
assertEquals("Unexpecte value of attribute " + Session.PRODUCER_FLOW_BLOCKED, Boolean.FALSE,
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/GroupProviderRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/GroupProviderRestTest.java
index 11c0b7bc4a..e0a06d15a2 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/GroupProviderRestTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/GroupProviderRestTest.java
@@ -323,7 +323,6 @@ public class GroupProviderRestTest extends QpidRestTestCase
private void assertProvider(String name, String type, Map<String, Object> provider)
{
Asserts.assertAttributesPresent(provider, AbstractConfiguredObject.getAttributeNames(GroupProvider.class),
- GroupProvider.TIME_TO_LIVE,
ConfiguredObject.TYPE,
ConfiguredObject.CREATED_BY,
ConfiguredObject.CREATED_TIME,
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PreferencesProviderRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PreferencesProviderRestTest.java
index d9ff53a351..94b088dbaf 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PreferencesProviderRestTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/PreferencesProviderRestTest.java
@@ -169,7 +169,7 @@ public class PreferencesProviderRestTest extends QpidRestTestCase
ConfiguredObject.CREATED_TIME,
ConfiguredObject.LAST_UPDATED_BY,
ConfiguredObject.LAST_UPDATED_TIME,
- ConfiguredObject.DESCRIPTION, PreferencesProvider.TIME_TO_LIVE);
+ ConfiguredObject.DESCRIPTION);
assertEquals("Unexpected value of provider attribute " + PreferencesProvider.STATE, State.ACTIVE.name(),
provider.get(PreferencesProvider.STATE));
assertEquals("Unexpected value of provider attribute " + PreferencesProvider.LIFETIME_POLICY,
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/QueueRestTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/QueueRestTest.java
index fba319e907..faccca9e9d 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/QueueRestTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/QueueRestTest.java
@@ -212,7 +212,7 @@ public class QueueRestTest extends QpidRestTestCase
{
assertNotNull("Consumer map should not be null", consumer);
Asserts.assertAttributesPresent(consumer,
- AbstractConfiguredObject.getAttributeNames(Consumer.class), Consumer.STATE, Consumer.TIME_TO_LIVE,
+ AbstractConfiguredObject.getAttributeNames(Consumer.class), Consumer.STATE,
Consumer.SETTLEMENT_MODE, Consumer.EXCLUSIVE, Consumer.SELECTOR,
Consumer.NO_LOCAL,
ConfiguredObject.TYPE,
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/client/destination/AddressBasedDestinationTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/client/destination/AddressBasedDestinationTest.java
index bd826259bc..324b101b89 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/test/client/destination/AddressBasedDestinationTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/client/destination/AddressBasedDestinationTest.java
@@ -53,6 +53,8 @@ public class AddressBasedDestinationTest extends QpidBrokerTestCase
@Override
public void setUp() throws Exception
{
+ setVirtualHostConfigurationProperty("virtualhosts.virtualhost.test.queues.maximumDeliveryCount",
+ "0");
super.setUp();
_connection = getConnection() ;
_connection.start();