summaryrefslogtreecommitdiff
path: root/qpid/java
diff options
context:
space:
mode:
authorKeith Wall <kwall@apache.org>2014-01-23 11:01:02 +0000
committerKeith Wall <kwall@apache.org>2014-01-23 11:01:02 +0000
commit3d82eb9c42bf4dce8ac38029a7a808d8a3aa3ce2 (patch)
treec6d59cfe2fbdd30f50afc7d3add06806e224b2a3 /qpid/java
parent597a1a6e9a12a8d5119fa7a3ddc0a8cd958dd8a4 (diff)
parentac51ca3f2be3df75c54eae14a50dc2e3d758b693 (diff)
downloadqpid-python-3d82eb9c42bf4dce8ac38029a7a808d8a3aa3ce2.tar.gz
Merge changes from the trunk in revisions 1558036:1560619 using
svn merge -r 1558036:1560619 https://svn.apache.org/repos/asf/qpid/trunk git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/java-broker-bdb-ha@1560634 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
-rw-r--r--qpid/java/bdbstore/jmx/pom.xml7
-rw-r--r--qpid/java/bdbstore/pom.xml7
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/upgrade/UpgradeFrom4To5.java3
-rw-r--r--qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBStoreUpgradeTestPreparer.java9
-rw-r--r--qpid/java/bdbstore/systests/pom.xml23
-rw-r--r--qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBBackupTest.java3
-rw-r--r--qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java12
-rw-r--r--qpid/java/broker-core/pom.xml6
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java12
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultExchange.java5
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/DirectExchange.java10
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/Exchange.java5
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/FanoutExchange.java10
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersBinding.java6
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/HeadersExchange.java10
-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.java4
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/FilterManager.java2
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/FilterSupport.java (renamed from qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/FilterSupport.java)12
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/Filterable.java72
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/JMSSelectorFilter.java1
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/MessageFilter.java2
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/NoConsumerFilter.java1
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/SimpleFilterManager.java2
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/log4j/LoggingManagementFacade.java106
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/AMQMessageHeader.java4
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/AbstractServerMessageImpl.java88
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/InboundMessage.java37
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/InstanceProperties.java79
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/MessageReference.java37
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/ServerMessage.java3
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java5
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/protocol/AMQSessionModel.java3
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/ConflationQueueList.java2
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/Filterable.java32
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntry.java5
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryImpl.java27
-rw-r--r--[-rwxr-xr-x]qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryInstanceProperties.java (renamed from qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/InboundMessageAdapter.java)60
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java8
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java7
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java22
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/DefaultUpgraderProvider.java2
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/plugins/AbstractConfigurationTest.java5
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/exchange/FanoutExchangeTest.java21
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/exchange/HeadersBindingTest.java10
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/exchange/HeadersExchangeTest.java15
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/exchange/TopicExchangeTest.java8
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/log4j/LoggingManagementFacadeTest.java3
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/PortFactoryTest.java1
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/InboundMessageAdapterTest.java88
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/MockQueueEntry.java8
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SimpleAMQQueueTest.java5
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/TestMessageMetaDataType.java11
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/subscription/MockSubscription.java5
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/txn/MockServerMessage.java6
-rw-r--r--qpid/java/broker-plugins/access-control/pom.xml7
-rw-r--r--qpid/java/broker-plugins/amqp-0-10-protocol/pom.xml14
-rw-r--r--qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/MessageConverter_v0_10.java1
-rwxr-xr-xqpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/MessageMetaData_0_10.java21
-rw-r--r--qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/MessageTransferMessage.java44
-rwxr-xr-xqpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ProtocolEngine_0_10.java4
-rw-r--r--qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java13
-rw-r--r--qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnectionDelegate.java8
-rw-r--r--qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSession.java32
-rw-r--r--qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java46
-rw-r--r--qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/Subscription_0_10.java10
-rw-r--r--qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/TransferMessageReference.java41
-rw-r--r--qpid/java/broker-plugins/amqp-0-8-protocol/pom.xml7
-rw-r--r--qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java206
-rw-r--r--qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQMessage.java143
-rw-r--r--qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQMessageReference.java43
-rw-r--r--qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ContentHeaderBodyAdapter.java146
-rw-r--r--qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/IncomingMessage.java200
-rw-r--r--qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/MessageMetaData.java57
-rw-r--r--qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/SubscriptionImpl.java5
-rw-r--r--qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/AckTest.java43
-rw-r--r--qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/InternalTestProtocolSession.java4
-rwxr-xr-xqpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/MockStoredMessage.java4
-rw-r--r--qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/ReferenceCountingTest.java4
-rw-r--r--qpid/java/broker-plugins/amqp-1-0-protocol/pom.xml8
-rw-r--r--qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Connection_1_0.java7
-rw-r--r--qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ExchangeDestination.java75
-rw-r--r--qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/MessageConverter_to_1_0.java2
-rwxr-xr-xqpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/MessageMetaData_1_0.java15
-rw-r--r--qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Message_1_0.java138
-rw-r--r--qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/QueueDestination.java7
-rw-r--r--qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ReceivingLink_1_0.java7
-rw-r--r--qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java26
-rw-r--r--qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Session_1_0.java24
-rw-r--r--qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Subscription_1_0.java7
-rw-r--r--qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/TxnCoordinatorLink_1_0.java6
-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.java1
-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_8_to_0_10.java2
-rw-r--r--qpid/java/broker-plugins/amqp-msg-conv-0-8-to-1-0/src/main/java/org/apache/qpid/server/protocol/converter/v0_8_v1_0/MessageConverter_0_8_to_1_0.java2
-rw-r--r--qpid/java/broker-plugins/derby-store/pom.xml7
-rw-r--r--qpid/java/broker-plugins/jdbc-store/pom.xml7
-rw-r--r--qpid/java/broker-plugins/management-http/pom.xml14
-rw-r--r--qpid/java/broker-plugins/management-jmx/pom.xml7
-rw-r--r--qpid/java/broker/pom.xml12
-rw-r--r--qpid/java/client/pom.xml9
-rw-r--r--qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_8.java11
-rw-r--r--qpid/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessageFactory.java2
-rw-r--r--qpid/java/client/src/main/java/org/apache/qpid/client/message/MessageFactoryRegistry.java2
-rw-r--r--qpid/java/client/src/main/java/org/apache/qpid/client/transport/ClientConnectionDelegate.java12
-rw-r--r--qpid/java/client/src/test/java/org/apache/qpid/client/protocol/AMQProtocolHandlerTest.java2
-rw-r--r--qpid/java/client/src/test/java/org/apache/qpid/test/unit/message/MessageConverterTest.java5
-rw-r--r--qpid/java/common/pom.xml18
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/framing/BasicContentHeaderProperties.java2
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/framing/CommonContentHeaderProperties.java81
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/framing/ContentHeaderBody.java10
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/framing/ContentHeaderProperties.java62
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/framing/ContentHeaderPropertiesFactory.java4
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/framing/abstraction/ContentChunk.java30
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/framing/abstraction/MessagePublishInfoConverter.java32
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/framing/abstraction/ProtocolVersionMethodConverter.java12
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/framing/amqp_0_9/MethodConverter_0_9.java68
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/framing/amqp_0_91/MethodConverter_0_91.java68
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/framing/amqp_8_0/MethodConverter_8_0.java50
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/properties/ConnectionStartProperties.java7
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/transport/ClientDelegate.java2
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java26
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/transport/ConnectionDelegate.java5
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoReceiver.java4
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoSender.java2
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/url/BindingURLParser.java6
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/util/FileUtils.java5
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/util/SystemUtils.java81
-rw-r--r--qpid/java/common/src/test/java/org/apache/qpid/transport/ConnectionTest.java9
-rw-r--r--qpid/java/common/src/test/java/org/apache/qpid/transport/network/io/IoAcceptor.java36
-rw-r--r--qpid/java/ivy.nexus.xml6
-rw-r--r--qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/client/QpidTestClient.java3
-rw-r--r--qpid/java/jca/pom.xml15
-rw-r--r--qpid/java/jca/rar/pom.xml2
-rw-r--r--qpid/java/perftests/pom.xml35
-rw-r--r--qpid/java/perftests/visualisation-jfc/pom.xml2
-rw-r--r--qpid/java/perftests/visualisation-jfc/src/test/java/org/apache/qpid/disttest/charting/chartbuilder/ChartProductionTest.java4
-rw-r--r--qpid/java/pom.xml87
-rw-r--r--qpid/java/qpid-test-utils/pom.xml12
-rw-r--r--qpid/java/qpid-test-utils/src/main/resources/log4j-test.xml67
-rw-r--r--qpid/java/systests/pom.xml23
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/ra/QpidRAConnectionTest.java5
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/scripts/QpidPasswdTest.java5
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/server/exchange/ReturnUnroutableMandatoryMessageTest.java11
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/server/failover/FailoverMethodTest.java37
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/server/queue/PriorityQueueTest.java7
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/server/queue/ProducerFlowControlTest.java7
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/server/store/MessageStoreTest.java76
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/server/store/StoreOverfullTest.java2
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/server/util/AveragedRun.java6
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/systest/rest/BrokerRestTest.java4
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/client/RollbackOrderTest.java9
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java2
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/unit/ack/AcknowledgeOnMessageTest.java4
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/BytesMessageTest.java4
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/LargeMessageTest.java4
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/PropertyValueTest.java1
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/TextMessageTest.java2
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/ConnectionStartTest.java2
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/message/ObjectMessageTest.java4
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/unit/close/MessageRequeueTest.java2
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/unit/close/VerifyAckingOkDuringClose.java160
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/unit/topic/DurableSubscriptionTest.java8
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/unit/topic/TopicSessionTest.java2
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/unit/transacted/CommitRollbackTest.java2
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/unit/transacted/TransactedTest.java4
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/AbstractXATestCase.java2
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/FaultTest.java1
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/QueueTest.java17
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/TopicTest.java97
-rwxr-xr-xqpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java50
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/utils/SpawnedBrokerHolder.java95
-rwxr-xr-xqpid/java/test-profiles/Java010Excludes4
-rw-r--r--qpid/java/test-profiles/java-bdb-spawn.0-10.testprofile3
-rw-r--r--qpid/java/test-profiles/java-bdb-spawn.0-8.testprofile3
-rw-r--r--qpid/java/test-profiles/java-bdb-spawn.0-9-1.testprofile3
-rw-r--r--qpid/java/test-profiles/java-bdb-spawn.0-9.testprofile3
-rw-r--r--qpid/java/test-profiles/java-bdb.0-10.testprofile3
-rw-r--r--qpid/java/test-profiles/java-bdb.0-8.testprofile3
-rw-r--r--qpid/java/test-profiles/java-bdb.0-9-1.testprofile3
-rw-r--r--qpid/java/test-profiles/java-bdb.0-9.testprofile3
-rw-r--r--qpid/java/test-profiles/java-dby-mem.0-10.testprofile3
-rw-r--r--qpid/java/test-profiles/java-dby-mem.0-8.testprofile3
-rw-r--r--qpid/java/test-profiles/java-dby-mem.0-9-1.testprofile3
-rw-r--r--qpid/java/test-profiles/java-dby-mem.0-9.testprofile3
-rw-r--r--qpid/java/test-profiles/java-dby-spawn.0-10.testprofile3
-rw-r--r--qpid/java/test-profiles/java-dby-spawn.0-8.testprofile3
-rw-r--r--qpid/java/test-profiles/java-dby-spawn.0-9-1.testprofile3
-rw-r--r--qpid/java/test-profiles/java-dby-spawn.0-9.testprofile3
-rw-r--r--qpid/java/test-profiles/java-dby.0-10.testprofile3
-rw-r--r--qpid/java/test-profiles/java-dby.0-8.testprofile3
-rw-r--r--qpid/java/test-profiles/java-dby.0-9-1.testprofile3
-rw-r--r--qpid/java/test-profiles/java-dby.0-9.testprofile3
-rw-r--r--qpid/java/test-profiles/java-mms-spawn.0-10.testprofile3
-rw-r--r--qpid/java/test-profiles/java-mms-spawn.0-8.testprofile3
-rw-r--r--qpid/java/test-profiles/java-mms-spawn.0-9-1.testprofile3
-rw-r--r--qpid/java/test-profiles/java-mms-spawn.0-9.testprofile3
-rw-r--r--qpid/java/test-profiles/java-mms.0-10.testprofile3
-rw-r--r--qpid/java/test-profiles/java-mms.0-8.testprofile3
-rw-r--r--qpid/java/test-profiles/java-mms.0-9-1.testprofile3
-rw-r--r--qpid/java/test-profiles/java-mms.0-9.testprofile3
-rw-r--r--qpid/java/tools/pom.xml21
201 files changed, 1717 insertions, 2371 deletions
diff --git a/qpid/java/bdbstore/jmx/pom.xml b/qpid/java/bdbstore/jmx/pom.xml
index 3480460972..82ece2c66f 100644
--- a/qpid/java/bdbstore/jmx/pom.xml
+++ b/qpid/java/bdbstore/jmx/pom.xml
@@ -49,6 +49,13 @@
</dependency>
<dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>${log4j-version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
<groupId>com.sleepycat</groupId>
<artifactId>je</artifactId>
<version>5.0.84</version>
diff --git a/qpid/java/bdbstore/pom.xml b/qpid/java/bdbstore/pom.xml
index c90f904171..ec71547038 100644
--- a/qpid/java/bdbstore/pom.xml
+++ b/qpid/java/bdbstore/pom.xml
@@ -41,6 +41,13 @@
</dependency>
<dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>${log4j-version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
<groupId>com.sleepycat</groupId>
<artifactId>je</artifactId>
<version>5.0.97</version>
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/upgrade/UpgradeFrom4To5.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/upgrade/UpgradeFrom4To5.java
index 4c9eae6f3e..9d52241c4c 100644
--- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/upgrade/UpgradeFrom4To5.java
+++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/upgrade/UpgradeFrom4To5.java
@@ -663,9 +663,8 @@ public class UpgradeFrom4To5 extends AbstractStoreUpgrade
{
final MessagePublishInfo publishBody = readMessagePublishInfo(input);
final ContentHeaderBody contentHeaderBody = readContentHeaderBody(input);
- final int contentChunkCount = input.readInt();
- return new MessageMetaData(publishBody, contentHeaderBody, contentChunkCount);
+ return new MessageMetaData(publishBody, contentHeaderBody);
}
catch (Exception e)
{
diff --git a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBStoreUpgradeTestPreparer.java b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBStoreUpgradeTestPreparer.java
index ed6024feb1..c7e6e1f745 100644
--- a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBStoreUpgradeTestPreparer.java
+++ b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBStoreUpgradeTestPreparer.java
@@ -44,6 +44,7 @@ import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
+import org.apache.log4j.Logger;
import org.apache.qpid.client.AMQConnectionFactory;
import org.apache.qpid.client.AMQDestination;
import org.apache.qpid.client.AMQSession;
@@ -64,6 +65,8 @@ import org.apache.qpid.url.URLSyntaxException;
*/
public class BDBStoreUpgradeTestPreparer
{
+ private static final Logger _logger = Logger.getLogger(BDBStoreUpgradeTestPreparer.class);
+
public static final String TOPIC_NAME="myUpgradeTopic";
public static final String SUB_NAME="myDurSubName";
public static final String SELECTOR_SUB_NAME="mySelectorDurSubName";
@@ -131,7 +134,7 @@ public class BDBStoreUpgradeTestPreparer
{
public void onException(JMSException e)
{
- e.printStackTrace();
+ _logger.error("Error setting exception listener for connection", e);
}
});
// Create a session on the connection, transacted to confirm delivery
@@ -225,7 +228,7 @@ public class BDBStoreUpgradeTestPreparer
{
public void onException(JMSException e)
{
- e.printStackTrace();
+ _logger.error("Error setting exception listener for connection", e);
}
});
// Create a session on the connection, transacted to confirm delivery
@@ -270,7 +273,7 @@ public class BDBStoreUpgradeTestPreparer
{
public void onException(JMSException e)
{
- e.printStackTrace();
+ _logger.error("Error setting exception listener for connection", e);
}
});
// Create a session on the connection, transacted to confirm delivery
diff --git a/qpid/java/bdbstore/systests/pom.xml b/qpid/java/bdbstore/systests/pom.xml
index fd229bc9d6..5cf42e8b35 100644
--- a/qpid/java/bdbstore/systests/pom.xml
+++ b/qpid/java/bdbstore/systests/pom.xml
@@ -27,10 +27,10 @@
<artifactId>qpid-bdbstore-systests</artifactId>
<properties>
- <broker.home.dir>target/qpid-broker/${project.version}</broker.home.dir>
+ <broker.home.dir>target${file.separator}qpid-broker${file.separator}${project.version}</broker.home.dir>
<!-- test properties -->
- <qpid.home>${basedir}/${broker.home.dir}</qpid.home>
- <qpid.home.qbtc.output>${qpid.home}/qbtc-output</qpid.home.qbtc.output>
+ <qpid.home>${basedir}${file.separator}${broker.home.dir}</qpid.home>
+ <qpid.home.qbtc.output>${qpid.home}${file.separator}qbtc-output</qpid.home.qbtc.output>
</properties>
<dependencies>
@@ -56,6 +56,20 @@
</dependency>
<dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>${log4j-version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>${slf4j-version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jms_1.1_spec</artifactId>
<version>1.0</version>
@@ -109,6 +123,9 @@
<!-- Skip the default test phase, bind to the
integration-test phase below instead -->
<skip>true</skip>
+ <systemPropertyVariables>
+ <log4j.configuration.file>${project.basedir}${file.separator}..${file.separator}..${file.separator}test-profiles${file.separator}log4j-test.xml</log4j.configuration.file>
+ </systemPropertyVariables>
</configuration>
<executions>
<execution>
diff --git a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBBackupTest.java b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBBackupTest.java
index 73eaf363ad..1b9fa0be9c 100644
--- a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBBackupTest.java
+++ b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBBackupTest.java
@@ -34,6 +34,7 @@ import org.apache.log4j.Logger;
import org.apache.qpid.test.utils.Piper;
import org.apache.qpid.test.utils.QpidBrokerTestCase;
import org.apache.qpid.util.FileUtils;
+import org.apache.qpid.util.SystemUtils;
/**
* Tests the BDB backup script can successfully perform a backup and that
@@ -134,7 +135,7 @@ public class BDBBackupTest extends QpidBrokerTestCase
private void invokeBdbBackup(final File backupFromDir, final File backupToDir) throws Exception
{
- if (IS_OS_WINDOWS)
+ if (SystemUtils.isWindows())
{
BDBBackup.main(new String[]{"-todir", backupToDir.getAbsolutePath(), "-fromdir", backupFromDir.getAbsolutePath()});
}
diff --git a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java
index 679defcb66..fe0fcc9eee 100644
--- a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java
+++ b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java
@@ -100,7 +100,7 @@ public class BDBMessageStoreTest extends MessageStoreTest
ContentHeaderBody chb_0_8 = createContentHeaderBody_0_8(props_0_8, bodySize);
- MessageMetaData messageMetaData_0_8 = new MessageMetaData(pubInfoBody_0_8, chb_0_8, 0);
+ MessageMetaData messageMetaData_0_8 = new MessageMetaData(pubInfoBody_0_8, chb_0_8);
StoredMessage<MessageMetaData> storedMessage_0_8 = bdbStore.addMessage(messageMetaData_0_8);
long origArrivalTime_0_8 = messageMetaData_0_8.getArrivalTime();
@@ -156,7 +156,7 @@ public class BDBMessageStoreTest extends MessageStoreTest
assertEquals("ContentHeader weight has changed", chb_0_8.getWeight(), returnedHeaderBody_0_8.getWeight());
assertEquals("ContentHeader bodySize has changed", chb_0_8.getBodySize(), returnedHeaderBody_0_8.getBodySize());
- BasicContentHeaderProperties returnedProperties_0_8 = (BasicContentHeaderProperties) returnedHeaderBody_0_8.getProperties();
+ BasicContentHeaderProperties returnedProperties_0_8 = returnedHeaderBody_0_8.getProperties();
assertEquals("Property ContentType has changed", props_0_8.getContentTypeAsString(), returnedProperties_0_8.getContentTypeAsString());
assertEquals("Property MessageID has changed", props_0_8.getMessageIdAsString(), returnedProperties_0_8.getMessageIdAsString());
@@ -401,7 +401,7 @@ public class BDBMessageStoreTest extends MessageStoreTest
ContentHeaderBody chb_0_8 = createContentHeaderBody_0_8(props_0_8, bodySize);
- MessageMetaData messageMetaData_0_8 = new MessageMetaData(pubInfoBody_0_8, chb_0_8, 0);
+ MessageMetaData messageMetaData_0_8 = new MessageMetaData(pubInfoBody_0_8, chb_0_8);
StoredMessage<MessageMetaData> storedMessage_0_8 = store.addMessage(messageMetaData_0_8);
storedMessage_0_8.addContent(0, chunk1);
@@ -617,5 +617,11 @@ public class BDBMessageStoreTest extends MessageStoreTest
{
return null;
}
+
+ @Override
+ public Object getConnectionReference()
+ {
+ return null;
+ }
}
}
diff --git a/qpid/java/broker-core/pom.xml b/qpid/java/broker-core/pom.xml
index a872bf565a..7254de0251 100644
--- a/qpid/java/broker-core/pom.xml
+++ b/qpid/java/broker-core/pom.xml
@@ -47,21 +47,21 @@
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
- <version>1.2.16</version>
+ <version>${log4j-version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
- <version>1.6.4</version>
+ <version>${slf4j-version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
- <version>1.6.4</version>
+ <version>${slf4j-version}</version>
<scope>compile</scope>
</dependency>
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 ac2fa5e60d..b00d98637e 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
@@ -32,7 +32,8 @@ import org.apache.qpid.server.logging.messages.BindingMessages;
import org.apache.qpid.server.logging.messages.ExchangeMessages;
import org.apache.qpid.server.logging.subjects.BindingLogSubject;
import org.apache.qpid.server.logging.subjects.ExchangeLogSubject;
-import org.apache.qpid.server.message.InboundMessage;
+import org.apache.qpid.server.message.InstanceProperties;
+import org.apache.qpid.server.message.ServerMessage;
import org.apache.qpid.server.model.UUIDGenerator;
import org.apache.qpid.server.plugin.ExchangeType;
import org.apache.qpid.server.queue.AMQQueue;
@@ -373,11 +374,13 @@ public abstract class AbstractExchange implements Exchange
return getBindings().size();
}
- public final List<? extends BaseQueue> route(final InboundMessage message)
+ @Override
+ public final List<? extends BaseQueue> route(final ServerMessage message,
+ final InstanceProperties instanceProperties)
{
_receivedMessageCount.incrementAndGet();
_receivedMessageSize.addAndGet(message.getSize());
- List<? extends BaseQueue> queues = doRoute(message);
+ List<? extends BaseQueue> queues = doRoute(message, instanceProperties);
List<? extends BaseQueue> allQueues = queues;
boolean deletedQueues = false;
@@ -413,7 +416,8 @@ public abstract class AbstractExchange implements Exchange
return queues;
}
- protected abstract List<? extends BaseQueue> doRoute(final InboundMessage message);
+ protected abstract List<? extends BaseQueue> doRoute(final ServerMessage message,
+ final InstanceProperties instanceProperties);
public long getMsgReceives()
{
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 5aea60f1b5..e2582019cd 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
@@ -35,7 +35,8 @@ import org.apache.qpid.server.binding.Binding;
import org.apache.qpid.server.logging.LogSubject;
import org.apache.qpid.server.logging.actors.CurrentActor;
import org.apache.qpid.server.logging.messages.ExchangeMessages;
-import org.apache.qpid.server.message.InboundMessage;
+import org.apache.qpid.server.message.InstanceProperties;
+import org.apache.qpid.server.message.ServerMessage;
import org.apache.qpid.server.model.UUIDGenerator;
import org.apache.qpid.server.plugin.ExchangeType;
import org.apache.qpid.server.queue.AMQQueue;
@@ -203,7 +204,7 @@ public class DefaultExchange implements Exchange
}
@Override
- public List<AMQQueue> route(InboundMessage message)
+ public List<AMQQueue> route(ServerMessage message, final InstanceProperties instanceProperties)
{
AMQQueue q = _virtualHost.getQueue(message.getRoutingKey());
if(q == null)
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 4571ec09af..2d65c22727 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
@@ -27,8 +27,11 @@ import java.util.Set;
import org.apache.log4j.Logger;
import org.apache.qpid.AMQInvalidArgumentException;
import org.apache.qpid.server.binding.Binding;
+import org.apache.qpid.server.filter.FilterSupport;
+import org.apache.qpid.server.filter.Filterable;
import org.apache.qpid.server.filter.MessageFilter;
-import org.apache.qpid.server.message.InboundMessage;
+import org.apache.qpid.server.message.InstanceProperties;
+import org.apache.qpid.server.message.ServerMessage;
import org.apache.qpid.server.plugin.ExchangeType;
import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.queue.BaseQueue;
@@ -130,7 +133,8 @@ public class DirectExchange extends AbstractExchange
super(TYPE);
}
- public List<? extends BaseQueue> doRoute(InboundMessage payload)
+ @Override
+ public List<? extends BaseQueue> doRoute(ServerMessage payload, final InstanceProperties instanceProperties)
{
final String routingKey = payload.getRoutingKey();
@@ -151,7 +155,7 @@ public class DirectExchange extends AbstractExchange
if(!queuesSet.contains(entry.getKey()))
{
MessageFilter filter = entry.getValue();
- if(filter.matches(payload))
+ if(filter.matches(Filterable.Factory.newInstance(payload, instanceProperties)))
{
queuesSet.add(entry.getKey());
}
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/Exchange.java
index d05e731daa..78455c9261 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/Exchange.java
@@ -24,7 +24,8 @@ import org.apache.qpid.AMQException;
import org.apache.qpid.AMQInternalException;
import org.apache.qpid.AMQSecurityException;
import org.apache.qpid.server.binding.Binding;
-import org.apache.qpid.server.message.InboundMessage;
+import org.apache.qpid.server.message.InstanceProperties;
+import org.apache.qpid.server.message.ServerMessage;
import org.apache.qpid.server.plugin.ExchangeType;
import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.queue.BaseQueue;
@@ -98,7 +99,7 @@ public interface Exchange extends ExchangeReferrer
*
* @return list of queues to which to route the message.
*/
- List<? extends BaseQueue> route(InboundMessage message);
+ List<? extends BaseQueue> route(ServerMessage message, final InstanceProperties instanceProperties);
/**
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 6665fe5a9d..22b0fed6b2 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
@@ -29,8 +29,11 @@ import org.apache.log4j.Logger;
import org.apache.qpid.AMQInvalidArgumentException;
import org.apache.qpid.server.binding.Binding;
+import org.apache.qpid.server.filter.FilterSupport;
+import org.apache.qpid.server.filter.Filterable;
import org.apache.qpid.server.filter.MessageFilter;
-import org.apache.qpid.server.message.InboundMessage;
+import org.apache.qpid.server.message.InstanceProperties;
+import org.apache.qpid.server.message.ServerMessage;
import org.apache.qpid.server.plugin.ExchangeType;
import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.queue.BaseQueue;
@@ -66,7 +69,8 @@ public class FanoutExchange extends AbstractExchange
super(TYPE);
}
- public ArrayList<BaseQueue> doRoute(InboundMessage payload)
+ @Override
+ public ArrayList<BaseQueue> doRoute(ServerMessage payload, final InstanceProperties instanceProperties)
{
for(Binding b : getBindings())
@@ -87,7 +91,7 @@ public class FanoutExchange extends AbstractExchange
{
for(MessageFilter filter : bindingMessageFilterMap.values())
{
- if(filter.matches(payload))
+ if(filter.matches(Filterable.Factory.newInstance(payload,instanceProperties)))
{
result.add(q);
break;
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 474c0862ad..276a38e7f8 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
@@ -24,6 +24,7 @@ import org.apache.log4j.Logger;
import org.apache.qpid.AMQInvalidArgumentException;
import org.apache.qpid.server.binding.Binding;
+import org.apache.qpid.server.filter.FilterSupport;
import org.apache.qpid.server.filter.MessageFilter;
import org.apache.qpid.server.message.AMQMessageHeader;
@@ -31,8 +32,7 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
-import org.apache.qpid.server.message.InboundMessage;
-import org.apache.qpid.server.queue.Filterable;
+import org.apache.qpid.server.filter.Filterable;
/**
* Defines binding and matching based on a set of headers.
@@ -135,7 +135,7 @@ class HeadersBinding
}
}
- public boolean matches(InboundMessage message)
+ public boolean matches(Filterable message)
{
return matches(message.getMessageHeader()) && (_filter == null || _filter.matches(message));
}
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 977ac7249e..a8b0ae601c 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
@@ -23,7 +23,9 @@ package org.apache.qpid.server.exchange;
import org.apache.log4j.Logger;
import org.apache.qpid.server.binding.Binding;
-import org.apache.qpid.server.message.InboundMessage;
+import org.apache.qpid.server.filter.Filterable;
+import org.apache.qpid.server.message.InstanceProperties;
+import org.apache.qpid.server.message.ServerMessage;
import org.apache.qpid.server.plugin.ExchangeType;
import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.queue.BaseQueue;
@@ -81,8 +83,8 @@ public class HeadersExchange extends AbstractExchange
super(TYPE);
}
-
- public ArrayList<BaseQueue> doRoute(InboundMessage payload)
+ @Override
+ public ArrayList<BaseQueue> doRoute(ServerMessage payload, final InstanceProperties instanceProperties)
{
if (_logger.isDebugEnabled())
{
@@ -93,7 +95,7 @@ public class HeadersExchange extends AbstractExchange
for (HeadersBinding hb : _bindingHeaderMatchers)
{
- if (hb.matches(payload))
+ if (hb.matches(Filterable.Factory.newInstance(payload,instanceProperties)))
{
Binding b = hb.getBinding();
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 7085d72390..d86d5cd769 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
@@ -34,7 +34,10 @@ import org.apache.qpid.server.exchange.topic.TopicExchangeResult;
import org.apache.qpid.server.exchange.topic.TopicMatcherResult;
import org.apache.qpid.server.exchange.topic.TopicNormalizer;
import org.apache.qpid.server.exchange.topic.TopicParser;
-import org.apache.qpid.server.message.InboundMessage;
+import org.apache.qpid.server.filter.FilterSupport;
+import org.apache.qpid.server.filter.Filterable;
+import org.apache.qpid.server.message.InstanceProperties;
+import org.apache.qpid.server.message.ServerMessage;
import org.apache.qpid.server.plugin.ExchangeType;
import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.queue.BaseQueue;
@@ -144,15 +147,16 @@ public class TopicExchange extends AbstractExchange
}
-
- public ArrayList<BaseQueue> doRoute(InboundMessage payload)
+ @Override
+ public ArrayList<BaseQueue> doRoute(ServerMessage payload, final InstanceProperties instanceProperties)
{
final String routingKey = payload.getRoutingKey() == null
? ""
: payload.getRoutingKey();
- final Collection<AMQQueue> matchedQueues = getMatchedQueues(payload, routingKey);
+ final Collection<AMQQueue> matchedQueues =
+ getMatchedQueues(Filterable.Factory.newInstance(payload,instanceProperties), routingKey);
ArrayList<BaseQueue> queues;
@@ -209,7 +213,7 @@ public class TopicExchange extends AbstractExchange
}
}
- private Collection<AMQQueue> getMatchedQueues(InboundMessage message, String routingKey)
+ private Collection<AMQQueue> getMatchedQueues(Filterable message, String routingKey)
{
Collection<TopicMatcherResult> results = _parser.parse(routingKey);
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 44d5f7f1d0..77060cb146 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
@@ -21,8 +21,8 @@
package org.apache.qpid.server.exchange.topic;
import org.apache.qpid.server.binding.Binding;
+import org.apache.qpid.server.filter.Filterable;
import org.apache.qpid.server.filter.MessageFilter;
-import org.apache.qpid.server.message.InboundMessage;
import org.apache.qpid.server.queue.AMQQueue;
import java.util.ArrayList;
@@ -168,7 +168,7 @@ public final class TopicExchangeResult implements TopicMatcherResult
_filteredQueues.put(queue,newFilters);
}
- public Collection<AMQQueue> processMessage(InboundMessage msg, Collection<AMQQueue> queues)
+ public Collection<AMQQueue> processMessage(Filterable msg, Collection<AMQQueue> queues)
{
if(queues == null)
{
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/FilterManager.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/FilterManager.java
index b5e282038b..4992b960c4 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/FilterManager.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/FilterManager.java
@@ -23,8 +23,6 @@ package org.apache.qpid.server.filter;
// Based on like named file from r450141 of the Apache ActiveMQ project <http://www.activemq.org/site/home.html>
//
-import org.apache.qpid.server.queue.Filterable;
-
public interface FilterManager
{
void add(MessageFilter filter);
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/FilterSupport.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/FilterSupport.java
index 9968ae6f5e..b50424868a 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/exchange/FilterSupport.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/FilterSupport.java
@@ -19,7 +19,7 @@
*
*/
-package org.apache.qpid.server.exchange;
+package org.apache.qpid.server.filter;
import java.lang.ref.WeakReference;
import java.util.Collections;
@@ -30,12 +30,8 @@ import org.apache.qpid.common.AMQPFilterTypes;
import org.apache.qpid.filter.SelectorParsingException;
import org.apache.qpid.filter.selector.ParseException;
import org.apache.qpid.filter.selector.TokenMgrError;
-import org.apache.qpid.server.filter.JMSSelectorFilter;
-import org.apache.qpid.server.filter.MessageFilter;
-import org.apache.qpid.server.message.InboundMessage;
import org.apache.qpid.server.protocol.AMQSessionModel;
import org.apache.qpid.server.queue.AMQQueue;
-import org.apache.qpid.server.queue.Filterable;
public class FilterSupport
{
@@ -104,7 +100,7 @@ public class FilterSupport
&& ((String)args.get(AMQPFilterTypes.JMS_SELECTOR.toString())).trim().length() != 0;
}
- static MessageFilter createMessageFilter(final Map<String,Object> args, AMQQueue queue) throws AMQInvalidArgumentException
+ public static MessageFilter createMessageFilter(final Map<String,Object> args, AMQQueue queue) throws AMQInvalidArgumentException
{
if(argumentsContainNoLocal(args))
{
@@ -133,9 +129,9 @@ public class FilterSupport
public boolean matches(Filterable message)
{
- InboundMessage inbound = (InboundMessage) message;
final AMQSessionModel exclusiveOwningSession = _queue.getExclusiveOwningSession();
- return exclusiveOwningSession == null || !exclusiveOwningSession.onSameConnection(inbound);
+ return exclusiveOwningSession == null ||
+ exclusiveOwningSession.getConnectionReference() != message.getConnectionReference();
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/Filterable.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/Filterable.java
new file mode 100644
index 0000000000..6958ac106b
--- /dev/null
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/Filterable.java
@@ -0,0 +1,72 @@
+/*
+*
+* 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.filter;
+
+import org.apache.qpid.server.message.AMQMessageHeader;
+import org.apache.qpid.server.message.InstanceProperties;
+import org.apache.qpid.server.message.ServerMessage;
+import org.apache.qpid.server.queue.QueueEntry;
+import org.apache.qpid.server.queue.QueueEntryInstanceProperties;
+
+public interface Filterable
+{
+ AMQMessageHeader getMessageHeader();
+
+ boolean isPersistent();
+
+ boolean isRedelivered();
+
+ Object getConnectionReference();
+
+ public class Factory
+ {
+
+ public static Filterable newInstance(final ServerMessage message, final InstanceProperties properties)
+ {
+ return new Filterable()
+ {
+ @Override
+ public AMQMessageHeader getMessageHeader()
+ {
+ return message.getMessageHeader();
+ }
+
+ @Override
+ public boolean isPersistent()
+ {
+ return Boolean.TRUE.equals(properties.getProperty(InstanceProperties.Property.PERSISTENT));
+ }
+
+ @Override
+ public boolean isRedelivered()
+ {
+ return Boolean.TRUE.equals(properties.getProperty(InstanceProperties.Property.REDELIVERED));
+ }
+
+ @Override
+ public Object getConnectionReference()
+ {
+ return message.getConnectionReference();
+ }
+ };
+ }
+ }
+}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/JMSSelectorFilter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/JMSSelectorFilter.java
index 3d0d9a0f31..744e4e4e9d 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/JMSSelectorFilter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/JMSSelectorFilter.java
@@ -31,7 +31,6 @@ import org.apache.qpid.filter.SelectorParsingException;
import org.apache.qpid.filter.selector.ParseException;
import org.apache.qpid.filter.selector.SelectorParser;
import org.apache.qpid.filter.selector.TokenMgrError;
-import org.apache.qpid.server.queue.Filterable;
public class JMSSelectorFilter implements MessageFilter
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/MessageFilter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/MessageFilter.java
index f5416af09a..d7dbbea166 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/MessageFilter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/MessageFilter.java
@@ -20,8 +20,6 @@
*/
package org.apache.qpid.server.filter;
-import org.apache.qpid.server.queue.Filterable;
-
public interface MessageFilter
{
boolean matches(Filterable message);
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/NoConsumerFilter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/NoConsumerFilter.java
index d3e097d22c..cf73bfa21f 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/NoConsumerFilter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/NoConsumerFilter.java
@@ -23,7 +23,6 @@ package org.apache.qpid.server.filter;
import org.apache.log4j.Logger;
import org.apache.qpid.AMQException;
-import org.apache.qpid.server.queue.Filterable;
public class NoConsumerFilter implements MessageFilter
{
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/SimpleFilterManager.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/SimpleFilterManager.java
index 6c158de8b5..ddbee299a1 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/SimpleFilterManager.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/filter/SimpleFilterManager.java
@@ -22,8 +22,6 @@ package org.apache.qpid.server.filter;
import org.apache.log4j.Logger;
-import org.apache.qpid.server.queue.Filterable;
-
import java.util.concurrent.ConcurrentLinkedQueue;
public class SimpleFilterManager implements FilterManager
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/log4j/LoggingManagementFacade.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/log4j/LoggingManagementFacade.java
index 6a961c8fa4..5b411e2d8d 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/log4j/LoggingManagementFacade.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/logging/log4j/LoggingManagementFacade.java
@@ -25,6 +25,8 @@ import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;
import org.apache.log4j.xml.Log4jEntityResolver;
+import org.apache.qpid.util.FileUtils;
+import org.apache.qpid.util.SystemUtils;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
@@ -293,7 +295,9 @@ public class LoggingManagementFacade
public List<String> getAvailableLoggerLevels()
{
return new ArrayList<String>()
- {{
+ {
+ private static final long serialVersionUID = 599203507907836466L;
+ {
add(Level.ALL.toString());
add(Level.TRACE.toString());
add(Level.DEBUG.toString());
@@ -364,6 +368,65 @@ public class LoggingManagementFacade
throw new IOException("Specified log4j XML configuration file is not writable");
}
+ // Swap temp file in to replace existing configuration file.
+ File old = new File(log4jConfigFile.getAbsoluteFile() + ".old");
+ if (old.exists())
+ {
+ old.delete();
+ }
+
+ if(!SystemUtils.isWindows())
+ {
+
+ File tmp;
+ Random r = new Random();
+
+ final String absolutePath = log4jConfigFile.getAbsolutePath();
+ do
+ {
+ tmp = new File(absolutePath + r.nextInt() + ".tmp");
+ }
+ while(tmp.exists());
+
+ tmp.deleteOnExit();
+
+ writeConfigToFile(doc, new FileOutputStream(tmp));
+
+ if(!log4jConfigFile.renameTo(old))
+ {
+ //unable to rename the existing file to the backup name
+ LOGGER.error("Could not backup the existing log4j XML file");
+ throw new IOException("Could not backup the existing log4j XML file");
+ }
+
+ if(!tmp.renameTo(new File(absolutePath)))
+ {
+ //failed to rename the new file to the required filename
+
+ if(!old.renameTo(log4jConfigFile))
+ {
+ //unable to return the backup to required filename
+ LOGGER.error("Could not rename the new log4j configuration file into place, and unable to restore original file");
+ throw new IOException("Could not rename the new log4j configuration file into place, and unable to restore original file");
+ }
+
+ LOGGER.error("Could not rename the new log4j configuration file into place");
+ throw new IOException("Could not rename the new log4j configuration file into place");
+ }
+ }
+ else
+ {
+ // In windows we can't do a safe rename current -> old, tmp -> current as it will not allow
+ // a new file with the same name as current to be created while it is still open.
+
+ // Instead we have to do an unsafe "copy current to old", "replace current contents with tmp contents"
+ FileUtils.copy(log4jConfigFile,old);
+ writeConfigToFile(doc, new FileOutputStream(log4jConfigFile));
+ }
+ }
+
+ private void writeConfigToFile(Document doc, FileOutputStream outputFile) throws TransformerConfigurationException, IOException
+ {
Transformer transformer = null;
transformer = TransformerFactory.newInstance().newTransformer();
@@ -371,20 +434,10 @@ public class LoggingManagementFacade
transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, "log4j.dtd");
DOMSource source = new DOMSource(doc);
- File tmp;
- Random r = new Random();
-
- do
- {
- tmp = new File(log4jConfigFile.getAbsolutePath() + r.nextInt() + ".tmp");
- }
- while(tmp.exists());
-
- tmp.deleteOnExit();
try
{
- StreamResult result = new StreamResult(new FileOutputStream(tmp));
+ StreamResult result = new StreamResult(outputFile);
transformer.transform(source, result);
}
catch (TransformerException e)
@@ -392,35 +445,6 @@ public class LoggingManagementFacade
LOGGER.warn("Could not transform the XML into new file: ", e);
throw new IOException("Could not transform the XML into new file: ", e);
}
-
- // Swap temp file in to replace existing configuration file.
- File old = new File(log4jConfigFile.getAbsoluteFile() + ".old");
- if (old.exists())
- {
- old.delete();
- }
-
- if(!log4jConfigFile.renameTo(old))
- {
- //unable to rename the existing file to the backup name
- LOGGER.error("Could not backup the existing log4j XML file");
- throw new IOException("Could not backup the existing log4j XML file");
- }
-
- if(!tmp.renameTo(log4jConfigFile))
- {
- //failed to rename the new file to the required filename
-
- if(!old.renameTo(log4jConfigFile))
- {
- //unable to return the backup to required filename
- LOGGER.error("Could not rename the new log4j configuration file into place, and unable to restore original file");
- throw new IOException("Could not rename the new log4j configuration file into place, and unable to restore original file");
- }
-
- LOGGER.error("Could not rename the new log4j configuration file into place");
- throw new IOException("Could not rename the new log4j configuration file into place");
- }
}
//method to parse the XML configuration file, validating it in the process, and returning a DOM Document of the content.
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/AMQMessageHeader.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/AMQMessageHeader.java
index 63bd1e45a0..d19f127b16 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/AMQMessageHeader.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/AMQMessageHeader.java
@@ -47,10 +47,6 @@ public interface AMQMessageHeader
String getReplyTo();
- String getReplyToExchange();
- String getReplyToRoutingKey();
-
-
Object getHeader(String name);
boolean containsHeaders(Set<String> names);
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/AbstractServerMessageImpl.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/AbstractServerMessageImpl.java
index 8311dbd5ff..e5aa6c1158 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/AbstractServerMessageImpl.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/AbstractServerMessageImpl.java
@@ -23,9 +23,11 @@ package org.apache.qpid.server.message;
import org.apache.qpid.server.store.StorableMessageMetaData;
import org.apache.qpid.server.store.StoredMessage;
+import java.nio.ByteBuffer;
+import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
-public abstract class AbstractServerMessageImpl<T extends StorableMessageMetaData> implements ServerMessage<T>
+public abstract class AbstractServerMessageImpl<X extends AbstractServerMessageImpl<X,T>, T extends StorableMessageMetaData> implements ServerMessage<T>
{
private static final AtomicIntegerFieldUpdater<AbstractServerMessageImpl> _refCountUpdater =
@@ -33,10 +35,13 @@ public abstract class AbstractServerMessageImpl<T extends StorableMessageMetaDat
private volatile int _referenceCount = 0;
private final StoredMessage<T> _handle;
+ private final Object _connectionReference;
- public AbstractServerMessageImpl(StoredMessage<T> handle)
+
+ public AbstractServerMessageImpl(StoredMessage<T> handle, Object connectionReference)
{
_handle = handle;
+ _connectionReference = connectionReference;
}
public StoredMessage<T> getStoredMessage()
@@ -44,16 +49,11 @@ public abstract class AbstractServerMessageImpl<T extends StorableMessageMetaDat
return _handle;
}
- public boolean incrementReference()
+ private boolean incrementReference()
{
- return incrementReference(1);
- }
-
- public boolean incrementReference(int count)
- {
- if(_refCountUpdater.addAndGet(this, count) <= 0)
+ if(_refCountUpdater.incrementAndGet(this) <= 0)
{
- _refCountUpdater.addAndGet(this, -count);
+ _refCountUpdater.decrementAndGet(this);
return false;
}
else
@@ -67,7 +67,7 @@ public abstract class AbstractServerMessageImpl<T extends StorableMessageMetaDat
* message store.
*
*/
- public void decrementReference()
+ private void decrementReference()
{
int count = _refCountUpdater.decrementAndGet(this);
@@ -104,8 +104,72 @@ public abstract class AbstractServerMessageImpl<T extends StorableMessageMetaDat
return "(HC:" + System.identityHashCode(this) + " ID:" + getMessageNumber() + " Ref:" + getReferenceCount() + ")";
}
- protected int getReferenceCount()
+ private int getReferenceCount()
{
return _referenceCount;
}
+
+ @Override
+ final public MessageReference<X> newReference()
+ {
+ return new Reference();
+ }
+
+ @Override
+ final public boolean isPersistent()
+ {
+ return _handle.getMetaData().isPersistent();
+ }
+
+ @Override
+ final public long getMessageNumber()
+ {
+ return getStoredMessage().getMessageNumber();
+ }
+
+ @Override
+ final public int getContent(ByteBuffer buf, int offset)
+ {
+ return getStoredMessage().getContent(offset, buf);
+ }
+
+ @Override
+ final public ByteBuffer getContent(int offset, int size)
+ {
+ return getStoredMessage().getContent(offset, size);
+ }
+
+ final public Object getConnectionReference()
+ {
+ return _connectionReference;
+ }public String toString()
+ {
+ return "Message[" + debugIdentity() + "]";
+ }
+
+ private final class Reference implements MessageReference<X>
+ {
+
+ private final AtomicBoolean _released = new AtomicBoolean(false);
+
+ private Reference()
+ {
+ incrementReference();
+ }
+
+ public X getMessage()
+ {
+ return (X) AbstractServerMessageImpl.this;
+ }
+
+ public void release()
+ {
+ if(!_released.getAndSet(true))
+ {
+ decrementReference();
+ }
+ }
+
+ }
+
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/InboundMessage.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/InboundMessage.java
deleted file mode 100644
index 1b3fdb1870..0000000000
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/InboundMessage.java
+++ /dev/null
@@ -1,37 +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.message;
-
-
-import org.apache.qpid.server.queue.Filterable;
-
-public interface InboundMessage extends Filterable
-{
- String getRoutingKey();
-
- AMQMessageHeader getMessageHeader();
-
- boolean isPersistent();
-
- boolean isRedelivered();
-
- long getSize();
-}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/InstanceProperties.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/InstanceProperties.java
new file mode 100644
index 0000000000..6941ed119c
--- /dev/null
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/InstanceProperties.java
@@ -0,0 +1,79 @@
+/*
+ *
+ * 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.message;
+
+import java.util.EnumMap;
+import java.util.Map;
+
+public interface InstanceProperties
+{
+
+ enum Property {
+ REDELIVERED,
+ PERSISTENT,
+ MANDATORY,
+ IMMEDIATE,
+ EXPIRATION
+ }
+
+ public Object getProperty(Property prop);
+
+ InstanceProperties EMPTY = new InstanceProperties()
+ {
+ @Override
+ public Object getProperty(final Property prop)
+ {
+ return null;
+ }
+ };
+
+ class Factory
+ {
+ public static InstanceProperties fromMap(Map<Property, Object> map)
+ {
+ final Map<Property,Object> props = new EnumMap<Property,Object>(map);
+ return new InstanceProperties()
+ {
+ @Override
+ public Object getProperty(final Property prop)
+ {
+ return props.get(prop);
+ }
+ };
+ }
+
+ public static Map<Property, Object> asMap(InstanceProperties props)
+ {
+ EnumMap<Property, Object> map = new EnumMap<Property,Object>(Property.class);
+
+ for(Property prop : Property.values())
+ {
+ Object value = props.getProperty(prop);
+ if(value != null)
+ {
+ map.put(prop,value);
+ }
+ }
+
+ return map;
+ }
+ }
+}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/MessageReference.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/MessageReference.java
index 399f8f9327..eda85507f0 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/MessageReference.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/MessageReference.java
@@ -20,39 +20,8 @@
*/
package org.apache.qpid.server.message;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-public abstract class MessageReference<M extends ServerMessage>
+public interface MessageReference<M extends ServerMessage>
{
-
- private final AtomicBoolean _released = new AtomicBoolean(false);
-
- private volatile M _message;
-
- public MessageReference(M message)
- {
- _message = message;
- onReference(message);
- }
-
- abstract protected void onReference(M message);
-
- abstract protected void onRelease(M message);
-
- public M getMessage()
- {
- return _message;
- }
-
- public void release()
- {
- if(!_released.getAndSet(true))
- {
- if(_message != null)
- {
- onRelease(_message);
- }
- }
- }
-
+ public M getMessage();
+ public void release();
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/ServerMessage.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/ServerMessage.java
index e1ad2fd0ca..a4c461570f 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/ServerMessage.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/message/ServerMessage.java
@@ -37,8 +37,6 @@ public interface ServerMessage<T extends StorableMessageMetaData> extends Enquea
long getSize();
- boolean isImmediate();
-
long getExpiration();
MessageReference newReference();
@@ -51,4 +49,5 @@ public interface ServerMessage<T extends StorableMessageMetaData> extends Enquea
public ByteBuffer getContent(int offset, int size);
+ Object getConnectionReference();
}
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 40560be379..d07e9de021 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
@@ -71,6 +71,7 @@ import org.apache.qpid.server.stats.StatisticsGatherer;
import org.apache.qpid.server.store.MessageStoreCreator;
import org.apache.qpid.server.util.MapValueConverter;
import org.apache.qpid.server.virtualhost.VirtualHostRegistry;
+import org.apache.qpid.util.SystemUtils;
public class BrokerAdapter extends AbstractAdapter implements Broker, ConfigurationChangeListener
{
@@ -755,9 +756,7 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, Configurat
}
else if(OPERATING_SYSTEM.equals(name))
{
- return System.getProperty("os.name") + " "
- + System.getProperty("os.version") + " "
- + System.getProperty("os.arch");
+ return SystemUtils.getOSString();
}
else if(PLATFORM.equals(name))
{
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/protocol/AMQSessionModel.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/protocol/AMQSessionModel.java
index a3833eebb9..75994f6d81 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/protocol/AMQSessionModel.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/protocol/AMQSessionModel.java
@@ -26,7 +26,6 @@ import java.util.concurrent.ConcurrentSkipListSet;
import org.apache.qpid.AMQException;
import org.apache.qpid.protocol.AMQConstant;
import org.apache.qpid.server.logging.LogSubject;
-import org.apache.qpid.server.message.InboundMessage;
import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.queue.SimpleAMQQueue;
@@ -76,7 +75,7 @@ public interface AMQSessionModel extends Comparable<AMQSessionModel>
boolean getBlocking();
- boolean onSameConnection(InboundMessage inbound);
+ Object getConnectionReference();
int getUnacknowledgedMessageCount();
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 53420ded9b..000bfbfd6e 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
@@ -202,7 +202,7 @@ public class ConflationQueueList extends SimpleQueueEntryList
{
if(_latestValueReference != null && _latestValueReference.compareAndSet(this, _deleteInProgress))
{
- Object key = getMessageHeader().getHeader(_conflationKey);
+ Object key = getMessage().getMessageHeader().getHeader(_conflationKey);
_latestValuesMap.remove(key,_latestValueReference);
}
return true;
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/Filterable.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/Filterable.java
deleted file mode 100644
index 50d8f4166d..0000000000
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/Filterable.java
+++ /dev/null
@@ -1,32 +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.queue;
-
-import org.apache.qpid.server.message.AMQMessageHeader;
-
-public interface Filterable
-{
- AMQMessageHeader getMessageHeader();
-
- boolean isPersistent();
-
- boolean isRedelivered();
-}
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 c44961c457..d5c987026c 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
@@ -21,10 +21,11 @@
package org.apache.qpid.server.queue;
import org.apache.qpid.AMQException;
+import org.apache.qpid.server.filter.Filterable;
import org.apache.qpid.server.message.ServerMessage;
import org.apache.qpid.server.subscription.Subscription;
-public interface QueueEntry extends Comparable<QueueEntry>, Filterable
+public interface QueueEntry extends Comparable<QueueEntry>
{
@@ -250,4 +251,6 @@ public interface QueueEntry extends Comparable<QueueEntry>, Filterable
void decrementDeliveryCount();
+ Filterable asFilterable();
+
}
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 36feb27d86..1b9b0f6daa 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
@@ -24,6 +24,7 @@ import org.apache.log4j.Logger;
import org.apache.qpid.AMQException;
import org.apache.qpid.server.exchange.Exchange;
+import org.apache.qpid.server.filter.Filterable;
import org.apache.qpid.server.message.AMQMessageHeader;
import org.apache.qpid.server.message.MessageReference;
import org.apache.qpid.server.message.ServerMessage;
@@ -174,7 +175,7 @@ public abstract class QueueEntryImpl implements QueueEntry
private boolean acquire(final EntryState state)
{
- boolean acquired = _stateUpdater.compareAndSet(this,AVAILABLE_STATE, state);
+ boolean acquired = _stateUpdater.compareAndSet(this, AVAILABLE_STATE, state);
if(acquired && _stateChangeListeners != null)
{
@@ -246,18 +247,6 @@ public abstract class QueueEntryImpl implements QueueEntry
_deliveryState |= REDELIVERED;
}
- public AMQMessageHeader getMessageHeader()
- {
- final ServerMessage message = getMessage();
- return message == null ? null : message.getMessageHeader();
- }
-
- public boolean isPersistent()
- {
- final ServerMessage message = getMessage();
- return message != null && message.isPersistent();
- }
-
public boolean isRedelivered()
{
return (_deliveryState & REDELIVERED) != 0;
@@ -366,12 +355,12 @@ public abstract class QueueEntryImpl implements QueueEntry
if (alternateExchange != null)
{
- InboundMessageAdapter inboundMessageAdapter = new InboundMessageAdapter(this);
- List<? extends BaseQueue> queues = alternateExchange.route(inboundMessageAdapter);
+ QueueEntryInstanceProperties props = new QueueEntryInstanceProperties(this);
+ List<? extends BaseQueue> queues = alternateExchange.route(getMessage(), props);
final ServerMessage message = getMessage();
if ((queues == null || queues.size() == 0) && alternateExchange.getAlternateExchange() != null)
{
- queues = alternateExchange.getAlternateExchange().route(inboundMessageAdapter);
+ queues = alternateExchange.getAlternateExchange().route(getMessage(), props);
}
@@ -507,6 +496,12 @@ public abstract class QueueEntryImpl implements QueueEntry
_deliveryCountUpdater.decrementAndGet(this);
}
+ @Override
+ public Filterable asFilterable()
+ {
+ return Filterable.Factory.newInstance(getMessage(), new QueueEntryInstanceProperties(this));
+ }
+
public String toString()
{
return "QueueEntryImpl{" +
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/InboundMessageAdapter.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryInstanceProperties.java
index df26037eed..3affc69ed0 100755..100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/InboundMessageAdapter.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryInstanceProperties.java
@@ -18,53 +18,35 @@
* under the License.
*
*/
-
package org.apache.qpid.server.queue;
-import org.apache.qpid.server.message.AMQMessageHeader;
-import org.apache.qpid.server.message.InboundMessage;
+import org.apache.qpid.server.message.InstanceProperties;
-public class InboundMessageAdapter implements InboundMessage
+public class QueueEntryInstanceProperties implements InstanceProperties
{
+ private final QueueEntry _entry;
- private QueueEntry _entry;
-
- InboundMessageAdapter()
- {
- }
-
- public InboundMessageAdapter(QueueEntry entry)
+ public QueueEntryInstanceProperties(final QueueEntry entry)
{
_entry = entry;
}
- public void setEntry(QueueEntry entry)
- {
- _entry = entry;
- }
-
- public String getRoutingKey()
- {
- return _entry.getMessage().getRoutingKey();
- }
-
- public AMQMessageHeader getMessageHeader()
- {
- return _entry.getMessageHeader();
- }
-
- public boolean isPersistent()
- {
- return _entry.isPersistent();
- }
-
- public boolean isRedelivered()
- {
- return _entry.isRedelivered();
- }
-
- public long getSize()
- {
- return _entry.getSize();
+ @Override
+ public Object getProperty(final Property prop)
+ {
+ switch(prop)
+ {
+ case REDELIVERED:
+ return _entry.isRedelivered();
+ case MANDATORY:
+ return false;
+ case PERSISTENT:
+ return _entry.getMessage().isPersistent();
+ case IMMEDIATE:
+ return false;
+ case EXPIRATION:
+ return _entry.getMessage().getExpiration();
+ }
+ return null;
}
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java
index b002419064..c0bc662039 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java
@@ -1358,14 +1358,14 @@ public class SimpleAMQQueue implements AMQQueue, Subscription.StateListener, Mes
if(_alternateExchange != null)
{
- InboundMessageAdapter adapter = new InboundMessageAdapter();
for(final QueueEntry entry : entries)
{
- adapter.setEntry(entry);
- List<? extends BaseQueue> queues = _alternateExchange.route(adapter);
+
+ QueueEntryInstanceProperties props = new QueueEntryInstanceProperties(entry);
+ List<? extends BaseQueue> queues = _alternateExchange.route(entry.getMessage(), props);
if((queues == null || queues.size() == 0) && _alternateExchange.getAlternateExchange() != null)
{
- queues = _alternateExchange.getAlternateExchange().route(adapter);
+ queues = _alternateExchange.getAlternateExchange().route(entry.getMessage(),props);
}
final ServerMessage message = entry.getMessage();
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java
index 9d16f4b927..8e7916e4b2 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java
@@ -54,6 +54,7 @@ import org.apache.qpid.server.stats.StatisticsCounter;
import org.apache.qpid.server.stats.StatisticsGatherer;
import org.apache.qpid.server.virtualhost.VirtualHost;
import org.apache.qpid.server.virtualhost.VirtualHostRegistry;
+import org.apache.qpid.util.SystemUtils;
/**
@@ -339,9 +340,9 @@ public class ApplicationRegistry implements IApplicationRegistry
logActor.message(BrokerMessages.PLATFORM(System.getProperty("java.vendor"),
System.getProperty("java.runtime.version", System.getProperty("java.version")),
- System.getProperty("os.name"),
- System.getProperty("os.version"),
- System.getProperty("os.arch")));
+ SystemUtils.getOSName(),
+ SystemUtils.getOSVersion(),
+ SystemUtils.getOSArch()));
logActor.message(BrokerMessages.MAX_MEMORY(Runtime.getRuntime().maxMemory()));
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java
index c584d148f2..c1d9838833 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java
@@ -139,26 +139,32 @@ public class JsonFileConfigStore implements DurableConfigurationStore
return file.exists();
}
- private void getFileLock() throws IOException, AMQStoreException
+ private void getFileLock() throws AMQStoreException
{
File lockFile = new File(_directoryName, _name + ".lck");
- lockFile.createNewFile();
-
- FileOutputStream out = new FileOutputStream(lockFile);
- FileChannel channel = out.getChannel();
try
{
+ lockFile.createNewFile();
+ lockFile.deleteOnExit();
+
+ @SuppressWarnings("resource")
+ FileOutputStream out = new FileOutputStream(lockFile);
+ FileChannel channel = out.getChannel();
_fileLock = channel.tryLock();
}
+ catch (IOException ioe)
+ {
+ throw new AMQStoreException("Cannot create the lock file " + lockFile.getName(), ioe);
+ }
catch(OverlappingFileLockException e)
{
_fileLock = null;
}
+
if(_fileLock == null)
{
- throw new AMQStoreException("Cannot get lock on file " + lockFile.getAbsolutePath() + " is another instance running?");
+ throw new AMQStoreException("Cannot get lock on file " + lockFile.getAbsolutePath() + ". Is another instance running?");
}
- lockFile.deleteOnExit();
}
private void checkDirectoryIsWritable(String directoryName) throws AMQStoreException
@@ -190,7 +196,7 @@ public class JsonFileConfigStore implements DurableConfigurationStore
Map data = _objectMapper.readValue(new File(_directoryName,_configFileName),Map.class);
Collection<Class<? extends ConfiguredObject>> childClasses =
MODEL.getChildTypes(VirtualHost.class);
- String modelVersion = (String) data.remove("modelVersion");
+ data.remove("modelVersion");
Object configVersion;
if((configVersion = data.remove("configVersion")) instanceof Integer)
{
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/DefaultUpgraderProvider.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/DefaultUpgraderProvider.java
index 8d05e719ee..6474e00c24 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/DefaultUpgraderProvider.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/DefaultUpgraderProvider.java
@@ -25,7 +25,7 @@ import java.util.LinkedHashMap;
import java.util.Map;
import java.util.UUID;
import org.apache.qpid.server.exchange.ExchangeRegistry;
-import org.apache.qpid.server.exchange.FilterSupport;
+import org.apache.qpid.server.filter.FilterSupport;
import org.apache.qpid.server.exchange.TopicExchange;
import org.apache.qpid.server.model.Binding;
import org.apache.qpid.server.model.Exchange;
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/plugins/AbstractConfigurationTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/plugins/AbstractConfigurationTest.java
index 674abbfeb7..0e57b60a6f 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/plugins/AbstractConfigurationTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/configuration/plugins/AbstractConfigurationTest.java
@@ -24,6 +24,7 @@ import org.apache.commons.configuration.CompositeConfiguration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.XMLConfiguration;
+import org.apache.log4j.Logger;
import org.apache.qpid.test.utils.QpidTestCase;
import java.util.List;
@@ -34,6 +35,8 @@ import java.util.List;
*/
public class AbstractConfigurationTest extends QpidTestCase
{
+ private static final Logger _logger = Logger.getLogger(AbstractConfigurationTest.class);
+
private static final double DOUBLE = 3.14;
private static final long POSITIVE_LONG = 1000;
private static final long NEGATIVE_LONG = -1000;
@@ -101,7 +104,7 @@ public class AbstractConfigurationTest extends QpidTestCase
}
catch (ConfigurationException e)
{
- e.printStackTrace();
+ _logger.error("Error setting up plugin configuration", e);
fail(e.toString());
}
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 98ff2421bc..4449cf7645 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
@@ -40,7 +40,8 @@ import org.apache.qpid.common.AMQPFilterTypes;
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.message.InboundMessage;
+import org.apache.qpid.server.message.InstanceProperties;
+import org.apache.qpid.server.message.ServerMessage;
import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.queue.BaseQueue;
import org.apache.qpid.server.security.SecurityManager;
@@ -128,7 +129,7 @@ public class FanoutExchangeTest extends TestCase
_exchange.addBinding("key",queue2, null);
- List<? extends BaseQueue> result = _exchange.route(mockMessage(true));
+ List<? extends BaseQueue> result = _exchange.route(mockMessage(true),InstanceProperties.EMPTY);
assertEquals("Expected message to be routed to both queues", 2, result.size());
assertTrue("Expected queue1 to be routed to", result.contains(queue1));
@@ -137,7 +138,7 @@ public class FanoutExchangeTest extends TestCase
_exchange.addBinding("key2",queue2, Collections.singletonMap(AMQPFilterTypes.JMS_SELECTOR.toString(),(Object)"select = True"));
- result = _exchange.route(mockMessage(true));
+ result = _exchange.route(mockMessage(true),InstanceProperties.EMPTY);
assertEquals("Expected message to be routed to both queues", 2, result.size());
assertTrue("Expected queue1 to be routed to", result.contains(queue1));
@@ -145,14 +146,14 @@ public class FanoutExchangeTest extends TestCase
_exchange.removeBinding("key",queue2,null);
- result = _exchange.route(mockMessage(true));
+ result = _exchange.route(mockMessage(true),InstanceProperties.EMPTY);
assertEquals("Expected message to be routed to both queues", 2, result.size());
assertTrue("Expected queue1 to be routed to", result.contains(queue1));
assertTrue("Expected queue2 to be routed to", result.contains(queue2));
- result = _exchange.route(mockMessage(false));
+ result = _exchange.route(mockMessage(false),InstanceProperties.EMPTY);
assertEquals("Expected message to be routed to queue1 only", 1, result.size());
assertTrue("Expected queue1 to be routed to", result.contains(queue1));
@@ -161,7 +162,7 @@ public class FanoutExchangeTest extends TestCase
_exchange.addBinding("key",queue2, Collections.singletonMap(AMQPFilterTypes.JMS_SELECTOR.toString(),(Object)"select = False"));
- result = _exchange.route(mockMessage(false));
+ result = _exchange.route(mockMessage(false),InstanceProperties.EMPTY);
assertEquals("Expected message to be routed to both queues", 2, result.size());
assertTrue("Expected queue1 to be routed to", result.contains(queue1));
assertTrue("Expected queue2 to be routed to", result.contains(queue2));
@@ -169,7 +170,7 @@ public class FanoutExchangeTest extends TestCase
}
- private InboundMessage mockMessage(boolean val)
+ private ServerMessage mockMessage(boolean val)
{
final AMQMessageHeader header = mock(AMQMessageHeader.class);
when(header.containsHeader("select")).thenReturn(true);
@@ -185,8 +186,8 @@ public class FanoutExchangeTest extends TestCase
}
});
- final InboundMessage inboundMessage = mock(InboundMessage.class);
- when(inboundMessage.getMessageHeader()).thenReturn(header);
- return inboundMessage;
+ final ServerMessage serverMessage = mock(ServerMessage.class);
+ when(serverMessage.getMessageHeader()).thenReturn(header);
+ return serverMessage;
}
}
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 833df34fd8..8919599cba 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
@@ -96,16 +96,6 @@ public class HeadersBindingTest extends TestCase
return null;
}
- public String getReplyToExchange()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
- public String getReplyToRoutingKey()
- {
- return null; //To change body of implemented methods use File | Settings | File Templates.
- }
-
public Object getHeader(String name)
{
return _headers.get(name);
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 757624d090..7c62530301 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
@@ -35,7 +35,8 @@ import org.apache.qpid.common.AMQPFilterTypes;
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.message.InboundMessage;
+import org.apache.qpid.server.message.InstanceProperties;
+import org.apache.qpid.server.message.ServerMessage;
import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.queue.BaseQueue;
import org.apache.qpid.server.security.SecurityManager;
@@ -71,9 +72,9 @@ public class HeadersExchangeTest extends TestCase
}
- protected void routeAndTest(InboundMessage msg, AMQQueue... expected) throws Exception
+ protected void routeAndTest(ServerMessage msg, AMQQueue... expected) throws Exception
{
- List<? extends BaseQueue> results = _exchange.route(msg);
+ List<? extends BaseQueue> results = _exchange.route(msg, InstanceProperties.EMPTY);
List<? extends BaseQueue> unexpected = new ArrayList<BaseQueue>(results);
unexpected.removeAll(Arrays.asList(expected));
assertTrue("Message delivered to unexpected queues: " + unexpected, unexpected.isEmpty());
@@ -209,7 +210,7 @@ public class HeadersExchangeTest extends TestCase
}
- private InboundMessage mockMessage(final Map<String, Object> headerValues)
+ private ServerMessage mockMessage(final Map<String, Object> headerValues)
{
final AMQMessageHeader header = mock(AMQMessageHeader.class);
when(header.containsHeader(anyString())).then(new Answer<Boolean>()
@@ -239,9 +240,9 @@ public class HeadersExchangeTest extends TestCase
}
});
- final InboundMessage inboundMessage = mock(InboundMessage.class);
- when(inboundMessage.getMessageHeader()).thenReturn(header);
- return inboundMessage;
+ final ServerMessage serverMessage = mock(ServerMessage.class);
+ when(serverMessage.getMessageHeader()).thenReturn(header);
+ return serverMessage;
}
public static junit.framework.Test suite()
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 344ddd9366..4296ebd68f 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
@@ -25,7 +25,7 @@ import junit.framework.Assert;
import org.apache.qpid.AMQException;
import org.apache.qpid.server.binding.Binding;
-import org.apache.qpid.server.message.InboundMessage;
+import org.apache.qpid.server.message.InstanceProperties;
import org.apache.qpid.server.message.MessageReference;
import org.apache.qpid.server.message.ServerMessage;
import org.apache.qpid.server.model.UUIDGenerator;
@@ -312,9 +312,9 @@ public class TopicExchangeTest extends QpidTestCase
private int routeMessage(String routingKey, long messageNumber) throws AMQException
{
- InboundMessage inboundMessage = mock(InboundMessage.class);
- when(inboundMessage.getRoutingKey()).thenReturn(routingKey);
- List<? extends BaseQueue> queues = _exchange.route(inboundMessage);
+ ServerMessage serverMessage = mock(ServerMessage.class);
+ when(serverMessage.getRoutingKey()).thenReturn(routingKey);
+ List<? extends BaseQueue> queues = _exchange.route(serverMessage, InstanceProperties.EMPTY);
ServerMessage message = mock(ServerMessage.class);
MessageReference ref = mock(MessageReference.class);
when(ref.getMessage()).thenReturn(message);
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/log4j/LoggingManagementFacadeTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/log4j/LoggingManagementFacadeTest.java
index 72b34868ba..e55e700489 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/log4j/LoggingManagementFacadeTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/logging/log4j/LoggingManagementFacadeTest.java
@@ -19,14 +19,11 @@
*/
package org.apache.qpid.server.logging.log4j;
-import java.io.File;
-import java.io.InputStream;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Level;
import org.apache.qpid.test.utils.TestFileUtils;
-import org.apache.qpid.util.FileUtils;
import junit.framework.TestCase;
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/PortFactoryTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/PortFactoryTest.java
index 54826b8c88..8b67db2de9 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/PortFactoryTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/model/adapter/PortFactoryTest.java
@@ -382,7 +382,6 @@ public class PortFactoryTest extends QpidTestCase
}
catch(IllegalConfigurationException e)
{
- e.printStackTrace();
// pass
}
}
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/InboundMessageAdapterTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/InboundMessageAdapterTest.java
deleted file mode 100644
index 2c7fa3a8d0..0000000000
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/InboundMessageAdapterTest.java
+++ /dev/null
@@ -1,88 +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.queue;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import org.apache.qpid.server.message.AMQMessageHeader;
-import org.apache.qpid.server.message.ServerMessage;
-import org.apache.qpid.test.utils.QpidTestCase;
-
-public class InboundMessageAdapterTest extends QpidTestCase
-{
- private ServerMessage<?> _mockMessage;
- private QueueEntry _mockQueueEntry;
- private InboundMessageAdapter _inboundMessageAdapter;
-
- @Override
- protected void setUp() throws Exception
- {
- super.setUp();
- _mockMessage = mock(ServerMessage.class);
- _mockQueueEntry = mock(QueueEntry.class);
- when(_mockQueueEntry.getMessage()).thenReturn(_mockMessage);
-
- _inboundMessageAdapter = new InboundMessageAdapter(_mockQueueEntry);
- }
-
- public void testGetRoutingKey() throws Exception
- {
- String routingKey = getTestName();
- when(_mockMessage.getRoutingKey()).thenReturn(routingKey);
-
- assertEquals("Unexpected value for routing key", routingKey, _inboundMessageAdapter.getRoutingKey());
- }
-
-
- public void testGetMessageHeader() throws Exception
- {
- AMQMessageHeader mockMessageHeader = mock(AMQMessageHeader.class);
- when(_mockQueueEntry.getMessageHeader()).thenReturn(mockMessageHeader);
-
- assertSame("unexpected message header", mockMessageHeader, _inboundMessageAdapter.getMessageHeader());
- }
-
- public void testIsRedelivered() throws Exception
- {
- when(_mockQueueEntry.isRedelivered()).thenReturn(true);
- assertTrue("unexpected isRedelivered value", _inboundMessageAdapter.isRedelivered());
-
- when(_mockQueueEntry.isRedelivered()).thenReturn(false);
- assertFalse("unexpected isRedelivered value", _inboundMessageAdapter.isRedelivered());
- }
-
- public void testIsPersistent() throws Exception
- {
- when(_mockQueueEntry.isPersistent()).thenReturn(true);
- assertTrue("unexpected isPersistent value", _inboundMessageAdapter.isPersistent());
-
- when(_mockQueueEntry.isPersistent()).thenReturn(false);
- assertFalse("unexpected isPersistent value", _inboundMessageAdapter.isPersistent());
- }
-
- public void testGetSize() throws Exception
- {
- long size = 32526215;
- when(_mockQueueEntry.getSize()).thenReturn(size);
- assertEquals("unexpected getSize value", size, _inboundMessageAdapter.getSize());
- }
-}
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/MockQueueEntry.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/MockQueueEntry.java
index f5d4f1219d..bbaca38c79 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/MockQueueEntry.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/MockQueueEntry.java
@@ -21,6 +21,7 @@
package org.apache.qpid.server.queue;
import org.apache.qpid.AMQException;
+import org.apache.qpid.server.filter.Filterable;
import org.apache.qpid.server.message.AMQMessageHeader;
import org.apache.qpid.server.message.ServerMessage;
import org.apache.qpid.server.subscription.Subscription;
@@ -201,7 +202,6 @@ public class MockQueueEntry implements QueueEntry
return false;
}
-
public int compareTo(QueueEntry o)
{
@@ -249,5 +249,9 @@ public class MockQueueEntry implements QueueEntry
{
}
-
+ @Override
+ public Filterable asFilterable()
+ {
+ return Filterable.Factory.newInstance(_message, new QueueEntryInstanceProperties(this));
+ }
}
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SimpleAMQQueueTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SimpleAMQQueueTest.java
index 4058eac99d..a7dcaf6d49 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SimpleAMQQueueTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/queue/SimpleAMQQueueTest.java
@@ -30,6 +30,8 @@ import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.when;
import java.util.Map;
+
+import org.apache.log4j.Logger;
import org.apache.qpid.AMQException;
import org.apache.qpid.AMQInternalException;
import org.apache.qpid.AMQSecurityException;
@@ -55,6 +57,7 @@ import java.util.concurrent.TimeUnit;
public class SimpleAMQQueueTest extends QpidTestCase
{
+ private static final Logger _logger = Logger.getLogger(SimpleAMQQueueTest.class);
private SimpleAMQQueue _queue;
private VirtualHost _virtualHost;
@@ -1146,7 +1149,7 @@ public class SimpleAMQQueueTest extends QpidTestCase
}
catch (InterruptedException e)
{
- e.printStackTrace();
+ _logger.error("Thread interrupted", e);
}
}
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/TestMessageMetaDataType.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/TestMessageMetaDataType.java
index 25f1df7a20..bd43100cd2 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/TestMessageMetaDataType.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/TestMessageMetaDataType.java
@@ -95,6 +95,12 @@ public class TestMessageMetaDataType implements MessageMetaDataType<TestMessageM
}
@Override
+ public Object getConnectionReference()
+ {
+ return null;
+ }
+
+ @Override
public long getExpiration()
{
return 0;
@@ -130,11 +136,6 @@ public class TestMessageMetaDataType implements MessageMetaDataType<TestMessageM
return _storedMsg;
}
- @Override
- public boolean isImmediate()
- {
- return false;
- }
@Override
public boolean isPersistent()
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/subscription/MockSubscription.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/subscription/MockSubscription.java
index 508f33fd35..8d1b27e272 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/subscription/MockSubscription.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/subscription/MockSubscription.java
@@ -25,7 +25,6 @@ import org.apache.qpid.AMQException;
import org.apache.qpid.protocol.AMQConstant;
import org.apache.qpid.server.logging.LogActor;
import org.apache.qpid.server.logging.LogSubject;
-import org.apache.qpid.server.message.InboundMessage;
import org.apache.qpid.server.model.Port;
import org.apache.qpid.server.model.Transport;
import org.apache.qpid.server.protocol.AMQConnectionModel;
@@ -352,9 +351,9 @@ public class MockSubscription implements Subscription
}
@Override
- public boolean onSameConnection(InboundMessage inbound)
+ public Object getConnectionReference()
{
- return false;
+ return this;
}
@Override
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/txn/MockServerMessage.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/txn/MockServerMessage.java
index aa5b555b3b..3b74110a6e 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/txn/MockServerMessage.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/txn/MockServerMessage.java
@@ -98,6 +98,12 @@ class MockServerMessage implements ServerMessage
throw new NotImplementedException();
}
+ @Override
+ public Object getConnectionReference()
+ {
+ return null;
+ }
+
public long getArrivalTime()
{
throw new NotImplementedException();
diff --git a/qpid/java/broker-plugins/access-control/pom.xml b/qpid/java/broker-plugins/access-control/pom.xml
index c4b966d9ae..c63618380c 100644
--- a/qpid/java/broker-plugins/access-control/pom.xml
+++ b/qpid/java/broker-plugins/access-control/pom.xml
@@ -38,6 +38,13 @@
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>${log4j-version}</version>
+ <scope>compile</scope>
+ </dependency>
+
<!-- test dependencies -->
<dependency>
<groupId>org.apache.qpid</groupId>
diff --git a/qpid/java/broker-plugins/amqp-0-10-protocol/pom.xml b/qpid/java/broker-plugins/amqp-0-10-protocol/pom.xml
index c24dd918e0..6bfce64240 100644
--- a/qpid/java/broker-plugins/amqp-0-10-protocol/pom.xml
+++ b/qpid/java/broker-plugins/amqp-0-10-protocol/pom.xml
@@ -34,6 +34,20 @@
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>${log4j-version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>${slf4j-version}</version>
+ <scope>compile</scope>
+ </dependency>
+
<!-- test dependencies -->
<dependency>
<groupId>org.apache.qpid</groupId>
diff --git a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/MessageConverter_v0_10.java b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/MessageConverter_v0_10.java
index c6ae0c6e47..5244a7f51b 100644
--- a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/MessageConverter_v0_10.java
+++ b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/MessageConverter_v0_10.java
@@ -113,7 +113,6 @@ public class MessageConverter_v0_10 implements MessageConverter<ServerMessage, M
deliveryProps.setExpiration(serverMsg.getExpiration());
- deliveryProps.setImmediate(serverMsg.isImmediate());
deliveryProps.setPriority(MessageDeliveryPriority.get(serverMsg.getMessageHeader().getPriority()));
deliveryProps.setRoutingKey(serverMsg.getRoutingKey());
deliveryProps.setTimestamp(serverMsg.getMessageHeader().getTimestamp());
diff --git a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/MessageMetaData_0_10.java b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/MessageMetaData_0_10.java
index 2ca680869f..2e74621814 100755
--- a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/MessageMetaData_0_10.java
+++ b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/MessageMetaData_0_10.java
@@ -21,7 +21,6 @@
package org.apache.qpid.server.protocol.v0_10;
import org.apache.qpid.server.message.AMQMessageHeader;
-import org.apache.qpid.server.message.InboundMessage;
import org.apache.qpid.server.plugin.MessageMetaDataType;
import org.apache.qpid.server.store.StorableMessageMetaData;
import org.apache.qpid.transport.DeliveryProperties;
@@ -37,7 +36,7 @@ import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
-public class MessageMetaData_0_10 implements StorableMessageMetaData, InboundMessage
+public class MessageMetaData_0_10 implements StorableMessageMetaData
{
private Header _header;
private DeliveryProperties _deliveryProps;
@@ -53,8 +52,6 @@ public class MessageMetaData_0_10 implements StorableMessageMetaData, InboundMes
private static final MessageMetaDataType_0_10 TYPE = new MessageMetaDataType_0_10();
private volatile ByteBuffer _encoded;
- private Object _connectionReference;
-
public MessageMetaData_0_10(MessageTransfer xfr)
{
@@ -202,12 +199,6 @@ public class MessageMetaData_0_10 implements StorableMessageMetaData, InboundMes
return _deliveryProps == null ? 0L : _deliveryProps.getExpiration();
}
- public boolean isRedelivered()
- {
- // The *Message* is never redelivered, only queue entries are...
- return false;
- }
-
public long getArrivalTime()
{
return _arrivalTime;
@@ -218,16 +209,6 @@ public class MessageMetaData_0_10 implements StorableMessageMetaData, InboundMes
return _header;
}
- public void setConnectionReference(Object connectionReference)
- {
- _connectionReference = connectionReference;
- }
-
- public Object getConnectionReference()
- {
- return _connectionReference;
- }
-
private static class MetaDataFactory implements MessageMetaDataType.Factory<MessageMetaData_0_10>
{
public MessageMetaData_0_10 createMetaData(ByteBuffer buf)
diff --git a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/MessageTransferMessage.java b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/MessageTransferMessage.java
index 34cf6998ab..487862bcba 100644
--- a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/MessageTransferMessage.java
+++ b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/MessageTransferMessage.java
@@ -22,23 +22,18 @@ package org.apache.qpid.server.protocol.v0_10;
import org.apache.qpid.server.message.AMQMessageHeader;
import org.apache.qpid.server.message.AbstractServerMessageImpl;
-import org.apache.qpid.server.message.InboundMessage;
-import org.apache.qpid.server.message.MessageReference;
import org.apache.qpid.server.store.StoredMessage;
import org.apache.qpid.transport.Header;
import java.nio.ByteBuffer;
-public class MessageTransferMessage extends AbstractServerMessageImpl<MessageMetaData_0_10> implements InboundMessage
+public class MessageTransferMessage extends AbstractServerMessageImpl<MessageTransferMessage, MessageMetaData_0_10>
{
- private Object _connectionRef;
-
public MessageTransferMessage(StoredMessage<MessageMetaData_0_10> storeMessage, Object connectionRef)
{
- super(storeMessage);
- _connectionRef = connectionRef;
+ super(storeMessage, connectionRef);
}
private MessageMetaData_0_10 getMetaData()
@@ -56,12 +51,6 @@ public class MessageTransferMessage extends AbstractServerMessageImpl<MessageMet
return getMetaData().getMessageHeader();
}
- public boolean isPersistent()
- {
- return getMetaData().isPersistent();
- }
-
-
public boolean isRedelivered()
{
// The *Message* is never redelivered, only queue entries are... this is here so that filters
@@ -71,7 +60,6 @@ public class MessageTransferMessage extends AbstractServerMessageImpl<MessageMet
public long getSize()
{
-
return getMetaData().getSize();
}
@@ -85,32 +73,11 @@ public class MessageTransferMessage extends AbstractServerMessageImpl<MessageMet
return getMetaData().getExpiration();
}
- public MessageReference newReference()
- {
- return new TransferMessageReference(this);
- }
-
- public long getMessageNumber()
- {
- return getStoredMessage().getMessageNumber();
- }
-
public long getArrivalTime()
{
return getMetaData().getArrivalTime();
}
- public int getContent(ByteBuffer buf, int offset)
- {
- return getStoredMessage().getContent(offset, buf);
- }
-
-
- public ByteBuffer getContent(int offset, int size)
- {
- return getStoredMessage().getContent(offset,size);
- }
-
public Header getHeader()
{
return getMetaData().getHeader();
@@ -118,13 +85,6 @@ public class MessageTransferMessage extends AbstractServerMessageImpl<MessageMet
public ByteBuffer getBody()
{
-
return getContent(0, (int)getSize());
}
-
- public Object getConnectionReference()
- {
- return _connectionRef;
- }
-
}
diff --git a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ProtocolEngine_0_10.java b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ProtocolEngine_0_10.java
index b8fcdbfe6d..6d3babe515 100755
--- a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ProtocolEngine_0_10.java
+++ b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ProtocolEngine_0_10.java
@@ -24,7 +24,6 @@ import org.apache.qpid.protocol.ServerProtocolEngine;
import org.apache.qpid.server.logging.messages.ConnectionMessages;
import org.apache.qpid.server.model.Port;
import org.apache.qpid.server.model.Transport;
-import org.apache.qpid.server.protocol.v0_10.ServerConnection;
import org.apache.qpid.transport.Sender;
import org.apache.qpid.transport.network.Assembler;
import org.apache.qpid.transport.network.Disassembler;
@@ -156,7 +155,8 @@ public class ProtocolEngine_0_10 extends InputHandler implements ServerProtocol
public void readerIdle()
{
- //Todo
+ _connection.getLogActor().message(ConnectionMessages.IDLE_CLOSE());
+ _network.close();
}
public String getAddress()
diff --git a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java
index b4d591a72f..66ffd1ef94 100644
--- a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java
+++ b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnection.java
@@ -73,7 +73,6 @@ public class ServerConnection extends Connection implements AMQConnectionModel,
private Port _port;
private AtomicLong _lastIoTime = new AtomicLong();
private boolean _blocking;
- private NetworkConnection _networkConnection;
private Transport _transport;
private volatile boolean _stopped;
@@ -528,7 +527,7 @@ public class ServerConnection extends Connection implements AMQConnectionModel,
public Principal getPeerPrincipal()
{
- return _networkConnection.getPeerPrincipal();
+ return getNetworkConnection().getPeerPrincipal();
}
@Override
@@ -543,16 +542,6 @@ public class ServerConnection extends Connection implements AMQConnectionModel,
super.setLocalAddress(localAddress);
}
- public void setNetworkConnection(NetworkConnection network)
- {
- _networkConnection = network;
- }
-
- public NetworkConnection getNetworkConnection()
- {
- return _networkConnection;
- }
-
public void doHeartbeat()
{
super.doHeartBeat();
diff --git a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnectionDelegate.java b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnectionDelegate.java
index 129a811b61..a15fea1200 100644
--- a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnectionDelegate.java
+++ b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerConnectionDelegate.java
@@ -236,7 +236,6 @@ public class ServerConnectionDelegate extends ServerDelegate
}
final NetworkConnection networkConnection = sconn.getNetworkConnection();
-
if(ok.hasHeartbeat())
{
int heartbeat = ok.getHeartbeat();
@@ -352,4 +351,11 @@ public class ServerConnectionDelegate extends ServerDelegate
{
return _clientProperties == null ? null : (String) _clientProperties.get(ConnectionStartProperties.PRODUCT);
}
+
+ @Override
+ protected int getHeartbeatMax()
+ {
+ int delay = (Integer)_broker.getAttribute(Broker.CONNECTION_HEART_BEAT_DELAY);
+ return delay == 0 ? super.getHeartbeatMax() : delay;
+ }
}
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 abe784cefa..261c937836 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
@@ -53,9 +53,7 @@ import org.apache.qpid.server.logging.actors.CurrentActor;
import org.apache.qpid.server.logging.actors.GenericActor;
import org.apache.qpid.server.logging.messages.ChannelMessages;
import org.apache.qpid.server.logging.subjects.ChannelLogSubject;
-import org.apache.qpid.server.message.InboundMessage;
import org.apache.qpid.server.message.MessageReference;
-import org.apache.qpid.server.message.ServerMessage;
import org.apache.qpid.server.protocol.AMQConnectionModel;
import org.apache.qpid.server.protocol.AMQSessionModel;
import org.apache.qpid.server.queue.AMQQueue;
@@ -184,7 +182,7 @@ public class ServerSession extends Session
return isCommandsFull(id);
}
- public void enqueue(final ServerMessage message, final List<? extends BaseQueue> queues)
+ public void enqueue(final MessageTransferMessage message, final List<? extends BaseQueue> queues)
{
if(_outstandingCredit.get() != UNLIMITED_CREDIT
&& _outstandingCredit.decrementAndGet() == (Integer.MAX_VALUE - PRODUCER_CREDIT_TOPUP_THRESHOLD))
@@ -766,15 +764,12 @@ public class ServerSession extends Session
}
}
- public boolean onSameConnection(InboundMessage inbound)
+ @Override
+ public Object getConnectionReference()
{
- return ((inbound instanceof MessageTransferMessage)
- && ((MessageTransferMessage)inbound).getConnectionReference() == getConnection().getReference())
- || ((inbound instanceof MessageMetaData_0_10)
- && (((MessageMetaData_0_10)inbound).getConnectionReference())== getConnection().getReference());
+ return getConnection().getReference();
}
-
public String toLogString()
{
long connectionId = super.getConnection() instanceof ServerConnection
@@ -852,31 +847,25 @@ public class ServerSession extends Session
private class PostEnqueueAction implements ServerTransaction.Action
{
- private List<? extends BaseQueue> _queues;
- private ServerMessage _message;
+ private final MessageReference<MessageTransferMessage> _reference;
+ private final List<? extends BaseQueue> _queues;
private final boolean _transactional;
- public PostEnqueueAction(List<? extends BaseQueue> queues, ServerMessage message, final boolean transactional)
+ public PostEnqueueAction(List<? extends BaseQueue> queues, MessageTransferMessage message, final boolean transactional)
{
+ _reference = message.newReference();
_transactional = transactional;
- setState(queues, message);
- }
-
- public void setState(List<? extends BaseQueue> queues, ServerMessage message)
- {
- _message = message;
_queues = queues;
}
public void postCommit()
{
- MessageReference<?> ref = _message.newReference();
for(int i = 0; i < _queues.size(); i++)
{
try
{
BaseQueue queue = _queues.get(i);
- queue.enqueue(_message, _transactional, null);
+ queue.enqueue(_reference.getMessage(), _transactional, null);
if(queue instanceof AMQQueue)
{
((AMQQueue)queue).checkCapacity(ServerSession.this);
@@ -889,12 +878,13 @@ public class ServerSession extends Session
throw new RuntimeException(e);
}
}
- ref.release();
+ _reference.release();
}
public void onRollback()
{
// NO-OP
+ _reference.release();
}
}
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 041e1d3645..5b52d31255 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
@@ -33,6 +33,8 @@ import org.apache.qpid.server.exchange.HeadersExchange;
import org.apache.qpid.server.filter.FilterManager;
import org.apache.qpid.server.filter.FilterManagerFactory;
import org.apache.qpid.server.logging.messages.ExchangeMessages;
+import org.apache.qpid.server.message.InstanceProperties;
+import org.apache.qpid.server.message.MessageReference;
import org.apache.qpid.server.model.Queue;
import org.apache.qpid.server.model.UUIDGenerator;
import org.apache.qpid.server.plugin.ExchangeType;
@@ -289,15 +291,13 @@ public class ServerSessionDelegate extends SessionDelegate
{
final Exchange exchange = getExchangeForMessage(ssn, xfr);
- DeliveryProperties delvProps = null;
- if(xfr.getHeader() != null && (delvProps = xfr.getHeader().getDeliveryProperties()) != null && delvProps.hasTtl() && !delvProps
- .hasExpiration())
+ final DeliveryProperties delvProps = xfr.getHeader() == null ? null : xfr.getHeader().getDeliveryProperties();
+ if(delvProps != null && delvProps.hasTtl() && !delvProps.hasExpiration())
{
delvProps.setExpiration(System.currentTimeMillis() + delvProps.getTtl());
}
final MessageMetaData_0_10 messageMetaData = new MessageMetaData_0_10(xfr);
- messageMetaData.setConnectionReference(((ServerSession)ssn).getReference());
if (!getVirtualHost(ssn).getSecurityManager().authorisePublish(messageMetaData.isImmediate(), messageMetaData.getRoutingKey(), exchange.getName()))
{
@@ -309,11 +309,39 @@ public class ServerSessionDelegate extends SessionDelegate
}
final Exchange exchangeInUse;
- List<? extends BaseQueue> queues = exchange.route(messageMetaData);
+ final MessageStore store = getVirtualHost(ssn).getMessageStore();
+ final StoredMessage<MessageMetaData_0_10> storeMessage = createStoreMessage(xfr, messageMetaData, store);
+ final ServerSession serverSession = (ServerSession) ssn;
+ final MessageTransferMessage message = new MessageTransferMessage(storeMessage, serverSession.getReference());
+ MessageReference<MessageTransferMessage> reference = message.newReference();
+
+ final InstanceProperties instanceProperties = new InstanceProperties()
+ {
+ @Override
+ public Object getProperty(final Property prop)
+ {
+ switch(prop)
+ {
+ case EXPIRATION:
+ return message.getExpiration();
+ case IMMEDIATE:
+ return message.isImmediate();
+ case MANDATORY:
+ return (delvProps == null || !delvProps.getDiscardUnroutable()) && xfr.getAcceptMode() == MessageAcceptMode.EXPLICIT;
+ case PERSISTENT:
+ return message.isPersistent();
+ case REDELIVERED:
+ return delvProps.getRedelivered();
+ }
+ return null;
+ }
+ };
+
+ List<? extends BaseQueue> queues = exchange.route(message, instanceProperties);
if(queues.isEmpty() && exchange.getAlternateExchange() != null)
{
final Exchange alternateExchange = exchange.getAlternateExchange();
- queues = alternateExchange.route(messageMetaData);
+ queues = alternateExchange.route(message, instanceProperties);
if (!queues.isEmpty())
{
exchangeInUse = alternateExchange;
@@ -328,12 +356,8 @@ public class ServerSessionDelegate extends SessionDelegate
exchangeInUse = exchange;
}
- final ServerSession serverSession = (ServerSession) ssn;
if(!queues.isEmpty())
{
- final MessageStore store = getVirtualHost(ssn).getMessageStore();
- final StoredMessage<MessageMetaData_0_10> storeMessage = createStoreMessage(xfr, messageMetaData, store);
- MessageTransferMessage message = new MessageTransferMessage(storeMessage, serverSession.getReference());
serverSession.enqueue(message, queues);
storeMessage.flushToStore();
}
@@ -352,7 +376,6 @@ public class ServerSessionDelegate extends SessionDelegate
}
}
-
if(serverSession.isTransactional())
{
serverSession.processed(xfr);
@@ -361,6 +384,7 @@ public class ServerSessionDelegate extends SessionDelegate
{
serverSession.recordFuture(StoreFuture.IMMEDIATE_FUTURE, new CommandProcessedAction(serverSession, xfr));
}
+ reference.release();
}
private StoredMessage<MessageMetaData_0_10> createStoreMessage(final MessageTransfer xfr,
diff --git a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/Subscription_0_10.java b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/Subscription_0_10.java
index 77b63906cc..f68973096a 100644
--- a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/Subscription_0_10.java
+++ b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/Subscription_0_10.java
@@ -33,13 +33,11 @@ import org.apache.qpid.server.logging.messages.SubscriptionMessages;
import org.apache.qpid.server.model.Queue;
import org.apache.qpid.server.plugin.MessageConverter;
import org.apache.qpid.server.protocol.MessageConverterRegistry;
-import org.apache.qpid.server.message.InboundMessage;
import org.apache.qpid.server.message.ServerMessage;
import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.queue.BaseQueue;
-import org.apache.qpid.server.queue.InboundMessageAdapter;
-import org.apache.qpid.server.queue.QueueArgumentsConverter;
import org.apache.qpid.server.queue.QueueEntry;
+import org.apache.qpid.server.queue.QueueEntryInstanceProperties;
import org.apache.qpid.server.subscription.Subscription;
import org.apache.qpid.server.txn.AutoCommitTransaction;
import org.apache.qpid.server.txn.ServerTransaction;
@@ -230,7 +228,7 @@ public class Subscription_0_10 implements Subscription, FlowCreditManager.FlowCr
private boolean checkFilters(QueueEntry entry)
{
- return (_filters == null) || _filters.allAllow(entry);
+ return (_filters == null) || _filters.allAllow(entry.asFilterable());
}
public boolean isClosed()
@@ -583,9 +581,7 @@ public class Subscription_0_10 implements Subscription, FlowCreditManager.FlowCr
final ServerMessage msg = entry.getMessage();
if (alternateExchange != null)
{
- final InboundMessage m = new InboundMessageAdapter(entry);
-
- final List<? extends BaseQueue> destinationQueues = alternateExchange.route(m);
+ final List<? extends BaseQueue> destinationQueues = alternateExchange.route(entry.getMessage(), new QueueEntryInstanceProperties(entry));
if (destinationQueues == null || destinationQueues.isEmpty())
{
diff --git a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/TransferMessageReference.java b/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/TransferMessageReference.java
deleted file mode 100644
index 0c04f22232..0000000000
--- a/qpid/java/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/TransferMessageReference.java
+++ /dev/null
@@ -1,41 +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.protocol.v0_10;
-
-import org.apache.qpid.server.message.MessageReference;
-
-public class TransferMessageReference extends MessageReference<MessageTransferMessage>
-{
- public TransferMessageReference(MessageTransferMessage message)
- {
- super(message);
- }
-
- protected void onReference(MessageTransferMessage message)
- {
- message.incrementReference();
- }
-
- protected void onRelease(MessageTransferMessage message)
- {
- message.decrementReference();
- }
-}
diff --git a/qpid/java/broker-plugins/amqp-0-8-protocol/pom.xml b/qpid/java/broker-plugins/amqp-0-8-protocol/pom.xml
index 2e9954bc46..0d8c8be3dd 100644
--- a/qpid/java/broker-plugins/amqp-0-8-protocol/pom.xml
+++ b/qpid/java/broker-plugins/amqp-0-8-protocol/pom.xml
@@ -34,6 +34,13 @@
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>${log4j-version}</version>
+ <scope>compile</scope>
+ </dependency>
+
<!-- test dependencies -->
<dependency>
<groupId>org.apache.qpid</groupId>
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 a603807f87..bb1d1949a2 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
@@ -49,7 +49,6 @@ import org.apache.qpid.framing.ContentBody;
import org.apache.qpid.framing.ContentHeaderBody;
import org.apache.qpid.framing.FieldTable;
import org.apache.qpid.framing.MethodRegistry;
-import org.apache.qpid.framing.abstraction.ContentChunk;
import org.apache.qpid.framing.abstraction.MessagePublishInfo;
import org.apache.qpid.protocol.AMQConstant;
import org.apache.qpid.server.TransactionTimeoutHelper;
@@ -66,7 +65,7 @@ import org.apache.qpid.server.logging.actors.CurrentActor;
import org.apache.qpid.server.logging.messages.ChannelMessages;
import org.apache.qpid.server.logging.messages.ExchangeMessages;
import org.apache.qpid.server.logging.subjects.ChannelLogSubject;
-import org.apache.qpid.server.message.InboundMessage;
+import org.apache.qpid.server.message.InstanceProperties;
import org.apache.qpid.server.message.MessageReference;
import org.apache.qpid.server.message.ServerMessage;
import org.apache.qpid.server.protocol.v0_8.output.ProtocolOutputConverter;
@@ -74,8 +73,8 @@ import org.apache.qpid.server.protocol.AMQConnectionModel;
import org.apache.qpid.server.protocol.AMQSessionModel;
import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.queue.BaseQueue;
-import org.apache.qpid.server.queue.InboundMessageAdapter;
import org.apache.qpid.server.queue.QueueEntry;
+import org.apache.qpid.server.queue.QueueEntryInstanceProperties;
import org.apache.qpid.server.security.SecurityManager;
import org.apache.qpid.server.store.MessageStore;
import org.apache.qpid.server.store.StoreFuture;
@@ -271,7 +270,7 @@ public class AMQChannel implements AMQSessionModel, AsyncAutoCommitTransaction.F
{
throw new AMQSecurityException("Permission denied: " + e.getName());
}
- _currentMessage = new IncomingMessage(info, getProtocolSession().getReference());
+ _currentMessage = new IncomingMessage(info);
_currentMessage.setExchange(e);
}
@@ -291,12 +290,6 @@ public class AMQChannel implements AMQSessionModel, AsyncAutoCommitTransaction.F
_currentMessage.setContentHeaderBody(contentHeaderBody);
- _currentMessage.setExpiration();
-
- _currentMessage.headersReceived(getProtocolSession().getLastReceivedTime());
-
- _currentMessage.route();
-
deliverCurrentMessageIfComplete();
}
}
@@ -309,56 +302,86 @@ public class AMQChannel implements AMQSessionModel, AsyncAutoCommitTransaction.F
{
try
{
- final List<? extends BaseQueue> destinationQueues = _currentMessage.getDestinationQueues();
- if(!checkMessageUserId(_currentMessage.getContentHeader()))
- {
- _transaction.addPostTransactionAction(new WriteReturnAction(AMQConstant.ACCESS_REFUSED, "Access Refused", _currentMessage));
- }
- else
+ final MessageMetaData messageMetaData =
+ new MessageMetaData(_currentMessage.getMessagePublishInfo(),
+ _currentMessage.getContentHeader(),
+ getProtocolSession().getLastReceivedTime());
+
+ final StoredMessage<MessageMetaData> handle = _messageStore.addMessage(messageMetaData);
+ final AMQMessage amqMessage = createAMQMessage(_currentMessage, handle);
+ MessageReference reference = amqMessage.newReference();
+ try
{
- if(destinationQueues == null || destinationQueues.isEmpty())
+ int bodyCount = _currentMessage.getBodyCount();
+ if(bodyCount > 0)
+ {
+ long bodyLengthReceived = 0;
+ for(int i = 0 ; i < bodyCount ; i++)
+ {
+ ContentBody contentChunk = _currentMessage.getContentChunk(i);
+ handle.addContent((int)bodyLengthReceived, ByteBuffer.wrap(contentChunk.getPayload()));
+ bodyLengthReceived += contentChunk.getSize();
+ }
+ }
+
+ if(!checkMessageUserId(_currentMessage.getContentHeader()))
{
- handleUnroutableMessage();
+ _transaction.addPostTransactionAction(new WriteReturnAction(AMQConstant.ACCESS_REFUSED, "Access Refused", amqMessage));
}
else
{
- final StoredMessage<MessageMetaData> handle = _messageStore.addMessage(_currentMessage.getMessageMetaData());
- _currentMessage.setStoredMessage(handle);
- int bodyCount = _currentMessage.getBodyCount();
- if(bodyCount > 0)
+ final InstanceProperties instanceProperties =
+ new InstanceProperties()
+ {
+ @Override
+ public Object getProperty(final Property prop)
+ {
+ switch(prop)
+ {
+ case EXPIRATION:
+ return amqMessage.getExpiration();
+ case IMMEDIATE:
+ return _currentMessage.getMessagePublishInfo().isImmediate();
+ case PERSISTENT:
+ return amqMessage.isPersistent();
+ case MANDATORY:
+ return _currentMessage.getMessagePublishInfo().isMandatory();
+ case REDELIVERED:
+ return false;
+ }
+ return null;
+ }
+ };
+
+ final List<? extends BaseQueue> destinationQueues =
+ _currentMessage.getExchange().route(amqMessage, instanceProperties);
+
+ if(destinationQueues == null || destinationQueues.isEmpty())
{
- long bodyLengthReceived = 0;
- for(int i = 0 ; i < bodyCount ; i++)
- {
- ContentChunk contentChunk = _currentMessage.getContentChunk(i);
- handle.addContent((int)bodyLengthReceived, ByteBuffer.wrap(contentChunk.getData()));
- bodyLengthReceived += contentChunk.getSize();
- }
+ handleUnroutableMessage(amqMessage);
}
-
- _transaction.addPostTransactionAction(new ServerTransaction.Action()
+ else
{
- public void postCommit()
- {
- }
-
- public void onRollback()
- {
- handle.remove();
- }
- });
-
- _transaction.enqueue(destinationQueues, _currentMessage, new MessageDeliveryAction(_currentMessage, destinationQueues));
- incrementOutstandingTxnsIfNecessary();
- _currentMessage.getStoredMessage().flushToStore();
+ _transaction.enqueue(destinationQueues,
+ amqMessage,
+ new MessageDeliveryAction(amqMessage, destinationQueues));
+ incrementOutstandingTxnsIfNecessary();
+ handle.flushToStore();
+
+ }
}
}
+ finally
+ {
+ reference.release();
+ }
+
}
finally
{
long bodySize = _currentMessage.getSize();
- long timestamp = ((BasicContentHeaderProperties) _currentMessage.getContentHeader().getProperties()).getTimestamp();
+ long timestamp = _currentMessage.getContentHeader().getProperties().getTimestamp();
_session.registerMessageReceived(bodySize, timestamp);
_currentMessage = null;
}
@@ -374,9 +397,9 @@ public class AMQChannel implements AMQSessionModel, AsyncAutoCommitTransaction.F
* @throws AMQConnectionException if the message is mandatoryclose-on-no-route
* @see AMQProtocolSession#isCloseWhenNoRoute()
*/
- private void handleUnroutableMessage() throws AMQConnectionException
+ private void handleUnroutableMessage(AMQMessage message) throws AMQConnectionException
{
- boolean mandatory = _currentMessage.isMandatory();
+ boolean mandatory = message.isMandatory();
String description = currentMessageDescription();
boolean closeOnNoRoute = _session.isCloseWhenNoRoute();
@@ -398,13 +421,18 @@ public class AMQChannel implements AMQSessionModel, AsyncAutoCommitTransaction.F
(Throwable) null);
}
- if (mandatory || _currentMessage.isImmediate())
+ if (mandatory || message.isImmediate())
{
- _transaction.addPostTransactionAction(new WriteReturnAction(AMQConstant.NO_ROUTE, "No Route for message " + currentMessageDescription(), _currentMessage));
+ _transaction.addPostTransactionAction(new WriteReturnAction(AMQConstant.NO_ROUTE, "No Route for message " + currentMessageDescription(), message));
}
else
{
- _actor.message(ExchangeMessages.DISCARDMSG(_currentMessage.getExchange().asString(), _currentMessage.getRoutingKey()));
+ _actor.message(ExchangeMessages.DISCARDMSG(_currentMessage.getExchangeName().asString(),
+ _currentMessage.getMessagePublishInfo().getRoutingKey() == null
+ ? null
+ : _currentMessage.getMessagePublishInfo()
+ .getRoutingKey()
+ .toString()));
}
}
@@ -417,15 +445,17 @@ public class AMQChannel implements AMQSessionModel, AsyncAutoCommitTransaction.F
return String.format(
"[Exchange: %s, Routing key: %s]",
- _currentMessage.getExchange(),
- _currentMessage.getRoutingKey());
+ _currentMessage.getExchangeName(),
+ _currentMessage.getMessagePublishInfo().getRoutingKey() == null
+ ? null
+ : _currentMessage.getMessagePublishInfo().getRoutingKey().toString());
}
public void publishContentBody(ContentBody contentBody) throws AMQException
{
if (_currentMessage == null)
{
- throw new AMQException("Received content body without previously receiving a JmsPublishBody");
+ throw new AMQException("Received content body without previously receiving a Content Header");
}
if (_logger.isDebugEnabled())
@@ -435,10 +465,7 @@ public class AMQChannel implements AMQSessionModel, AsyncAutoCommitTransaction.F
try
{
- final ContentChunk contentChunk =
- _session.getMethodRegistry().getProtocolVersionMethodConverter().convertToContentChunk(contentBody);
-
- _currentMessage.addContentBodyFrame(contentChunk);
+ _currentMessage.addContentBodyFrame(contentBody);
deliverCurrentMessageIfComplete();
}
@@ -1157,24 +1184,23 @@ public class AMQChannel implements AMQSessionModel, AsyncAutoCommitTransaction.F
}
- private AMQMessage createAMQMessage(IncomingMessage incomingMessage)
+ private AMQMessage createAMQMessage(IncomingMessage incomingMessage, StoredMessage<MessageMetaData> handle)
throws AMQException
{
- AMQMessage message = new AMQMessage(incomingMessage.getStoredMessage());
+ AMQMessage message = new AMQMessage(handle, _session.getReference());
+
+ final BasicContentHeaderProperties properties =
+ incomingMessage.getContentHeader().getProperties();
- message.setExpiration(incomingMessage.getExpiration());
- message.setConnectionIdentifier(_session.getReference());
+ long expiration = properties.getExpiration();
+ message.setExpiration(expiration);
return message;
}
private boolean checkMessageUserId(ContentHeaderBody header)
{
- AMQShortString userID =
- header.getProperties() instanceof BasicContentHeaderProperties
- ? ((BasicContentHeaderProperties) header.getProperties()).getUserId()
- : null;
-
+ AMQShortString userID = header.getProperties().getUserId();
return (!_messageAuthorizationRequired || _session.getAuthorizedPrincipal().getName().equals(userID == null? "" : userID.toString()));
}
@@ -1208,13 +1234,13 @@ public class AMQChannel implements AMQSessionModel, AsyncAutoCommitTransaction.F
private class MessageDeliveryAction implements ServerTransaction.Action
{
- private IncomingMessage _incommingMessage;
+ private final MessageReference<AMQMessage> _reference;
private List<? extends BaseQueue> _destinationQueues;
- public MessageDeliveryAction(IncomingMessage currentMessage,
+ public MessageDeliveryAction(AMQMessage currentMessage,
List<? extends BaseQueue> destinationQueues)
{
- _incommingMessage = currentMessage;
+ _reference = currentMessage.newReference();
_destinationQueues = destinationQueues;
}
@@ -1222,10 +1248,8 @@ public class AMQChannel implements AMQSessionModel, AsyncAutoCommitTransaction.F
{
try
{
- final boolean immediate = _incommingMessage.isImmediate();
-
- final AMQMessage amqMessage = createAMQMessage(_incommingMessage);
- MessageReference ref = amqMessage.newReference();
+ AMQMessage message = _reference.getMessage();
+ final boolean immediate = message.isImmediate();
for(int i = 0; i < _destinationQueues.size(); i++)
{
@@ -1242,7 +1266,7 @@ public class AMQChannel implements AMQSessionModel, AsyncAutoCommitTransaction.F
action = null;
}
- queue.enqueue(amqMessage, isTransactional(), action);
+ queue.enqueue(message, isTransactional(), action);
if(queue instanceof AMQQueue)
{
@@ -1251,8 +1275,8 @@ public class AMQChannel implements AMQSessionModel, AsyncAutoCommitTransaction.F
}
- _incommingMessage.getStoredMessage().flushToStore();
- ref.release();
+ message.getStoredMessage().flushToStore();
+ _reference.release();
}
catch (AMQException e)
{
@@ -1265,6 +1289,7 @@ public class AMQChannel implements AMQSessionModel, AsyncAutoCommitTransaction.F
{
// Maybe keep track of entries that were created and then delete them here in case of failure
// to in memory enqueue
+ _reference.release();
}
private class ImmediateAction implements BaseQueue.PostEnqueueAction
@@ -1375,28 +1400,30 @@ public class AMQChannel implements AMQSessionModel, AsyncAutoCommitTransaction.F
private class WriteReturnAction implements ServerTransaction.Action
{
private final AMQConstant _errorCode;
- private final IncomingMessage _message;
private final String _description;
+ private final MessageReference<AMQMessage> _reference;
public WriteReturnAction(AMQConstant errorCode,
String description,
- IncomingMessage message)
+ AMQMessage message)
{
_errorCode = errorCode;
- _message = message;
_description = description;
+ _reference = message.newReference();
}
public void postCommit()
{
try
{
- _session.getProtocolOutputConverter().writeReturn(_message.getMessagePublishInfo(),
- _message.getContentHeader(),
- _message,
+ AMQMessage message = _reference.getMessage();
+ _session.getProtocolOutputConverter().writeReturn(message.getMessagePublishInfo(),
+ message.getContentHeaderBody(),
+ message,
_channelId,
_errorCode.getCode(),
AMQShortString.validValueOf(_description));
+ _reference.release();
}
catch (AMQException e)
{
@@ -1408,6 +1435,7 @@ public class AMQChannel implements AMQSessionModel, AsyncAutoCommitTransaction.F
public void onRollback()
{
+ _reference.release();
}
}
@@ -1468,14 +1496,10 @@ public class AMQChannel implements AMQSessionModel, AsyncAutoCommitTransaction.F
}
}
- public boolean onSameConnection(InboundMessage inbound)
+ @Override
+ public Object getConnectionReference()
{
- if(inbound instanceof IncomingMessage)
- {
- IncomingMessage incoming = (IncomingMessage) inbound;
- return getProtocolSession().getReference() == incoming.getConnectionReference();
- }
- return false;
+ return getProtocolSession().getReference();
}
public int getUnacknowledgedMessageCount()
@@ -1551,9 +1575,9 @@ public class AMQChannel implements AMQSessionModel, AsyncAutoCommitTransaction.F
return;
}
- final InboundMessage m = new InboundMessageAdapter(rejectedQueueEntry);
- final List<? extends BaseQueue> destinationQueues = altExchange.route(m);
+ final List<? extends BaseQueue> destinationQueues =
+ altExchange.route(rejectedQueueEntry.getMessage(), new QueueEntryInstanceProperties(rejectedQueueEntry));
if (destinationQueues == null || destinationQueues.isEmpty())
{
diff --git a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQMessage.java b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQMessage.java
index 416a4da183..833f5fb06f 100644
--- a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQMessage.java
+++ b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQMessage.java
@@ -22,72 +22,43 @@ package org.apache.qpid.server.protocol.v0_8;
import org.apache.log4j.Logger;
-import org.apache.qpid.AMQException;
import org.apache.qpid.framing.AMQShortString;
import org.apache.qpid.framing.ContentHeaderBody;
import org.apache.qpid.framing.abstraction.MessagePublishInfo;
import org.apache.qpid.server.message.AMQMessageHeader;
import org.apache.qpid.server.message.AbstractServerMessageImpl;
-import org.apache.qpid.server.message.MessageReference;
-import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.store.StoredMessage;
-import java.lang.ref.WeakReference;
import java.nio.ByteBuffer;
/**
* A deliverable message.
*/
-public class AMQMessage extends AbstractServerMessageImpl<MessageMetaData>
+public class AMQMessage extends AbstractServerMessageImpl<AMQMessage, MessageMetaData>
{
/** Used for debugging purposes. */
private static final Logger _log = Logger.getLogger(AMQMessage.class);
/** Flag to indicate that this message requires 'immediate' delivery. */
- private static final byte IMMEDIATE = 0x01;
-
- /**
- * Flag to indicate whether this message has been delivered to a consumer. Used in implementing return functionality
- * for messages published with the 'immediate' flag.
- */
-
- private static final byte DELIVERED_TO_CONSUMER = 0x02;
-
- private byte _flags = 0;
-
private long _expiration;
private final long _size;
- private Object _connectionIdentifier;
- private static final byte IMMEDIATE_AND_DELIVERED = (byte) (IMMEDIATE | DELIVERED_TO_CONSUMER);
-
public AMQMessage(StoredMessage<MessageMetaData> handle)
{
this(handle, null);
}
- public AMQMessage(StoredMessage<MessageMetaData> handle, WeakReference<AMQChannel> channelRef)
+ public AMQMessage(StoredMessage<MessageMetaData> handle, Object connectionReference)
{
- super(handle);
-
-
- final MessageMetaData metaData = handle.getMetaData();
- _size = metaData.getContentSize();
- final MessagePublishInfo messagePublishInfo = metaData.getMessagePublishInfo();
-
- if(messagePublishInfo.isImmediate())
- {
- _flags |= IMMEDIATE;
- }
+ super(handle, connectionReference);
+ _size = handle.getMetaData().getContentSize();
}
public void setExpiration(final long expiration)
{
-
_expiration = expiration;
-
}
public MessageMetaData getMessageMetaData()
@@ -100,21 +71,6 @@ public class AMQMessage extends AbstractServerMessageImpl<MessageMetaData>
return getMessageMetaData().getContentHeaderBody();
}
- public Long getMessageId()
- {
- return getStoredMessage().getMessageNumber();
- }
-
- /**
- * Called selectors to determin if the message has already been sent
- *
- * @return _deliveredToConsumer
- */
- public boolean getDeliveredToConsumer()
- {
- return (_flags & DELIVERED_TO_CONSUMER) != 0;
- }
-
public String getRoutingKey()
{
MessageMetaData messageMetaData = getMessageMetaData();
@@ -134,24 +90,6 @@ public class AMQMessage extends AbstractServerMessageImpl<MessageMetaData>
return getMessageMetaData().getMessageHeader();
}
- public boolean isPersistent()
- {
- return getMessageMetaData().isPersistent();
- }
-
- /**
- * Called to enforce the 'immediate' flag.
- *
- * @returns true if the message is marked for immediate delivery but has not been marked as delivered
- * to a consumer
- */
- public boolean immediateAndNotDelivered()
- {
-
- return (_flags & IMMEDIATE_AND_DELIVERED) == IMMEDIATE;
-
- }
-
public MessagePublishInfo getMessagePublishInfo()
{
return getMessageMetaData().getMessagePublishInfo();
@@ -162,90 +100,27 @@ public class AMQMessage extends AbstractServerMessageImpl<MessageMetaData>
return getMessageMetaData().getArrivalTime();
}
- /**
- * Checks to see if the message has expired. If it has the message is dequeued.
- *
- * @param queue The queue to check the expiration against. (Currently not used)
- *
- * @return true if the message has expire
- *
- * @throws AMQException
- */
- public boolean expired(AMQQueue queue) throws AMQException
- {
-
- if (_expiration != 0L)
- {
- long now = System.currentTimeMillis();
-
- return (now > _expiration);
- }
-
- return false;
- }
-
- /**
- * Called when this message is delivered to a consumer. (used to implement the 'immediate' flag functionality).
- * And for selector efficiency.
- */
- public void setDeliveredToConsumer()
- {
- _flags |= DELIVERED_TO_CONSUMER;
- }
-
public long getSize()
{
return _size;
-
}
public boolean isImmediate()
{
- return (_flags & IMMEDIATE) == IMMEDIATE;
- }
-
- public long getExpiration()
- {
- return _expiration;
- }
-
- public MessageReference newReference()
- {
- return new AMQMessageReference(this);
+ return getMessagePublishInfo().isImmediate();
}
- public long getMessageNumber()
- {
- return getStoredMessage().getMessageNumber();
- }
-
-
- public Object getConnectionIdentifier()
- {
- return _connectionIdentifier;
-
- }
- public void setConnectionIdentifier(final Object connectionIdentifier)
+ public boolean isMandatory()
{
- _connectionIdentifier = connectionIdentifier;
+ return getMessagePublishInfo().isMandatory();
}
- public String toString()
- {
- return "Message[" + debugIdentity() + "]: " + getMessageId() + "; ref count: " + getReferenceCount();
- }
-
- public int getContent(ByteBuffer buf, int offset)
+ public long getExpiration()
{
- return getStoredMessage().getContent(offset, buf);
+ return _expiration;
}
- public ByteBuffer getContent(int offset, int size)
- {
- return getStoredMessage().getContent(offset, size);
- }
-
}
diff --git a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQMessageReference.java b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQMessageReference.java
deleted file mode 100644
index 3adc9f70cd..0000000000
--- a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQMessageReference.java
+++ /dev/null
@@ -1,43 +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.protocol.v0_8;
-
-import org.apache.qpid.server.message.MessageReference;
-
-public class AMQMessageReference extends MessageReference<AMQMessage>
-{
-
-
- public AMQMessageReference(AMQMessage message)
- {
- super(message);
- }
-
- protected void onReference(AMQMessage message)
- {
- message.incrementReference();
- }
-
- protected void onRelease(AMQMessage message)
- {
- message.decrementReference();
- }
-}
diff --git a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ContentHeaderBodyAdapter.java b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ContentHeaderBodyAdapter.java
deleted file mode 100644
index f5c43003a4..0000000000
--- a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ContentHeaderBodyAdapter.java
+++ /dev/null
@@ -1,146 +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.protocol.v0_8;
-
-import java.util.Collection;
-import org.apache.qpid.framing.BasicContentHeaderProperties;
-import org.apache.qpid.framing.ContentHeaderBody;
-import org.apache.qpid.framing.FieldTable;
-
-import java.util.Set;
-import org.apache.qpid.server.message.AMQMessageHeader;
-
-public class ContentHeaderBodyAdapter implements AMQMessageHeader
-{
- private final ContentHeaderBody _contentHeaderBody;
-
- public ContentHeaderBodyAdapter(ContentHeaderBody contentHeaderBody)
- {
- _contentHeaderBody = contentHeaderBody;
- }
-
- private BasicContentHeaderProperties getProperties()
- {
- return (BasicContentHeaderProperties) _contentHeaderBody.getProperties();
- }
-
- public String getCorrelationId()
- {
- return getProperties().getCorrelationIdAsString();
- }
-
- public long getExpiration()
- {
- return getProperties().getExpiration();
- }
-
- public String getUserId()
- {
- return getProperties().getUserIdAsString();
- }
-
- public String getAppId()
- {
- return getProperties().getAppIdAsString();
- }
-
- public String getMessageId()
- {
- return getProperties().getMessageIdAsString();
- }
-
- public String getMimeType()
- {
- return getProperties().getContentTypeAsString();
- }
-
- public String getEncoding()
- {
- return getProperties().getEncodingAsString();
- }
-
- public byte getPriority()
- {
- return getProperties().getPriority();
- }
-
- public long getTimestamp()
- {
- return getProperties().getTimestamp();
- }
-
- public String getType()
- {
- return getProperties().getTypeAsString();
- }
-
- public String getReplyTo()
- {
- return getProperties().getReplyToAsString();
- }
-
- public String getReplyToExchange()
- {
- // TODO
- return getReplyTo();
- }
-
- public String getReplyToRoutingKey()
- {
- // TODO
- return getReplyTo();
-
- }
-
- public Object getHeader(String name)
- {
- FieldTable ft = getProperties().getHeaders();
- return ft.get(name);
- }
-
- public boolean containsHeaders(Set<String> names)
- {
- FieldTable ft = getProperties().getHeaders();
- for(String name : names)
- {
- if(!ft.containsKey(name))
- {
- return false;
- }
- }
- return true;
- }
-
- @Override
- public Collection<String> getHeaderNames()
- {
- FieldTable ft = getProperties().getHeaders();
- return ft.keys();
- }
-
- public boolean containsHeader(String name)
- {
- FieldTable ft = getProperties().getHeaders();
- return ft.containsKey(name);
- }
-
-
-}
diff --git a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/IncomingMessage.java b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/IncomingMessage.java
index 5267651a66..5a9a51ff59 100644
--- a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/IncomingMessage.java
+++ b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/IncomingMessage.java
@@ -24,96 +24,44 @@ import org.apache.log4j.Logger;
import org.apache.qpid.AMQException;
import org.apache.qpid.framing.AMQShortString;
-import org.apache.qpid.framing.BasicContentHeaderProperties;
+import org.apache.qpid.framing.ContentBody;
import org.apache.qpid.framing.ContentHeaderBody;
-import org.apache.qpid.framing.abstraction.ContentChunk;
import org.apache.qpid.framing.abstraction.MessagePublishInfo;
import org.apache.qpid.server.exchange.Exchange;
-import org.apache.qpid.server.message.AMQMessageHeader;
-import org.apache.qpid.server.message.EnqueableMessage;
-import org.apache.qpid.server.message.InboundMessage;
-import org.apache.qpid.server.message.MessageContentSource;
-import org.apache.qpid.server.queue.BaseQueue;
-import org.apache.qpid.server.queue.Filterable;
import org.apache.qpid.server.store.StoredMessage;
-import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
-public class IncomingMessage implements Filterable, InboundMessage, EnqueableMessage, MessageContentSource
+public class IncomingMessage
{
- /** Used for debugging purposes. */
- private static final Logger _logger = Logger.getLogger(IncomingMessage.class);
-
private final MessagePublishInfo _messagePublishInfo;
private ContentHeaderBody _contentHeaderBody;
-
+ private Exchange _exchange;
/**
* Keeps a track of how many bytes we have received in body frames
*/
private long _bodyLengthReceived = 0;
+ private List<ContentBody> _contentChunks = new ArrayList<ContentBody>();
- /**
- * This is stored during routing, to know the queues to which this message should immediately be
- * delivered. It is <b>cleared after delivery has been attempted</b>. Any persistent record of destinations is done
- * by the message handle.
- */
- private List<? extends BaseQueue> _destinationQueues;
-
- private long _expiration;
-
- private Exchange _exchange;
-
- private List<ContentChunk> _contentChunks = new ArrayList<ContentChunk>();
-
- // we keep both the original meta data object and the store reference to it just in case the
- // store would otherwise flow it to disk
-
- private MessageMetaData _messageMetaData;
-
- private StoredMessage<MessageMetaData> _storedMessageHandle;
- private Object _connectionReference;
-
-
- public IncomingMessage(
- final MessagePublishInfo info
- )
- {
- this(info, null);
- }
-
- public IncomingMessage(MessagePublishInfo info, Object reference)
+ public IncomingMessage(MessagePublishInfo info)
{
_messagePublishInfo = info;
- _connectionReference = reference;
}
- public void setContentHeaderBody(final ContentHeaderBody contentHeaderBody) throws AMQException
+ public void setContentHeaderBody(final ContentHeaderBody contentHeaderBody)
{
_contentHeaderBody = contentHeaderBody;
}
- public void setExpiration()
- {
- _expiration = ((BasicContentHeaderProperties) _contentHeaderBody.getProperties()).getExpiration();
- }
-
- public MessageMetaData headersReceived(long currentTime)
- {
- _messageMetaData = new MessageMetaData(_messagePublishInfo, _contentHeaderBody, 0, currentTime);
- return _messageMetaData;
- }
-
-
- public List<? extends BaseQueue> getDestinationQueues()
+ public MessagePublishInfo getMessagePublishInfo()
{
- return _destinationQueues;
+ return _messagePublishInfo;
}
- public void addContentBodyFrame(final ContentChunk contentChunk) throws AMQException
+ public void addContentBodyFrame(final ContentBody contentChunk) throws AMQException
{
_bodyLengthReceived += contentChunk.getSize();
_contentChunks.add(contentChunk);
@@ -124,31 +72,14 @@ public class IncomingMessage implements Filterable, InboundMessage, EnqueableMes
return (_bodyLengthReceived == getContentHeader().getBodySize());
}
- public AMQShortString getExchange()
+ public AMQShortString getExchangeName()
{
return _messagePublishInfo.getExchange();
}
- public String getRoutingKey()
- {
- return _messagePublishInfo.getRoutingKey() == null ? null : _messagePublishInfo.getRoutingKey().toString();
- }
-
- public String getBinding()
- {
- return _messagePublishInfo.getRoutingKey() == null ? null : _messagePublishInfo.getRoutingKey().toString();
- }
-
-
- public boolean isMandatory()
- {
- return _messagePublishInfo.isMandatory();
- }
-
-
- public boolean isImmediate()
+ public Exchange getExchange()
{
- return _messagePublishInfo.isImmediate();
+ return _exchange;
}
public ContentHeaderBody getContentHeader()
@@ -156,129 +87,24 @@ public class IncomingMessage implements Filterable, InboundMessage, EnqueableMes
return _contentHeaderBody;
}
-
- public AMQMessageHeader getMessageHeader()
- {
- return _messageMetaData.getMessageHeader();
- }
-
- public boolean isPersistent()
- {
- return getContentHeader().getProperties() instanceof BasicContentHeaderProperties &&
- ((BasicContentHeaderProperties) getContentHeader().getProperties()).getDeliveryMode() ==
- BasicContentHeaderProperties.PERSISTENT;
- }
-
- public boolean isRedelivered()
- {
- return false;
- }
-
-
public long getSize()
{
return getContentHeader().getBodySize();
}
- public long getMessageNumber()
- {
- return _storedMessageHandle.getMessageNumber();
- }
-
public void setExchange(final Exchange e)
{
_exchange = e;
}
- public void route()
- {
- enqueue(_exchange.route(this));
-
- }
-
- public void enqueue(final List<? extends BaseQueue> queues)
- {
- _destinationQueues = queues;
- }
-
- public MessagePublishInfo getMessagePublishInfo()
- {
- return _messagePublishInfo;
- }
-
- public long getExpiration()
- {
- return _expiration;
- }
-
public int getBodyCount() throws AMQException
{
return _contentChunks.size();
}
- public ContentChunk getContentChunk(int index)
+ public ContentBody getContentChunk(int index)
{
return _contentChunks.get(index);
}
-
- public int getContent(ByteBuffer buf, int offset)
- {
- int pos = 0;
- int written = 0;
- for(ContentChunk cb : _contentChunks)
- {
- ByteBuffer data = ByteBuffer.wrap(cb.getData());
- if(offset+written >= pos && offset < pos + data.limit())
- {
- ByteBuffer src = data.duplicate();
- src.position(offset+written - pos);
- src = src.slice();
-
- if(buf.remaining() < src.limit())
- {
- src.limit(buf.remaining());
- }
- int count = src.limit();
- buf.put(src);
- written += count;
- if(buf.remaining() == 0)
- {
- break;
- }
- }
- pos+=data.limit();
- }
- return written;
-
- }
-
-
- public ByteBuffer getContent(int offset, int size)
- {
- ByteBuffer buf = ByteBuffer.allocate(size);
- getContent(buf,offset);
- buf.flip();
- return buf;
- }
-
- public void setStoredMessage(StoredMessage<MessageMetaData> storedMessageHandle)
- {
- _storedMessageHandle = storedMessageHandle;
- }
-
- public StoredMessage<MessageMetaData> getStoredMessage()
- {
- return _storedMessageHandle;
- }
-
- public Object getConnectionReference()
- {
- return _connectionReference;
- }
-
- public MessageMetaData getMessageMetaData()
- {
- return _messageMetaData;
- }
}
diff --git a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/MessageMetaData.java b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/MessageMetaData.java
index 4cc590d8cc..ead28c6e26 100644
--- a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/MessageMetaData.java
+++ b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/MessageMetaData.java
@@ -46,11 +46,10 @@ import java.util.Set;
*/
public class MessageMetaData implements StorableMessageMetaData
{
- private MessagePublishInfo _messagePublishInfo;
+ private final MessagePublishInfo _messagePublishInfo;
- private ContentHeaderBody _contentHeaderBody;
+ private final ContentHeaderBody _contentHeaderBody;
- private int _contentChunkCount;
private long _arrivalTime;
private static final byte MANDATORY_FLAG = 1;
@@ -58,59 +57,36 @@ public class MessageMetaData implements StorableMessageMetaData
public static final MessageMetaDataType.Factory<MessageMetaData> FACTORY = new MetaDataFactory();
private static final MessageMetaDataType_0_8 TYPE = new MessageMetaDataType_0_8();
- public MessageMetaData(MessagePublishInfo publishBody, ContentHeaderBody contentHeaderBody, int contentChunkCount)
+ public MessageMetaData(MessagePublishInfo publishBody, ContentHeaderBody contentHeaderBody)
{
- this(publishBody,contentHeaderBody, contentChunkCount, System.currentTimeMillis());
+ this(publishBody,contentHeaderBody, System.currentTimeMillis());
}
- public MessageMetaData(MessagePublishInfo publishBody, ContentHeaderBody contentHeaderBody, int contentChunkCount, long arrivalTime)
+ public MessageMetaData(MessagePublishInfo publishBody,
+ ContentHeaderBody contentHeaderBody,
+ long arrivalTime)
{
_contentHeaderBody = contentHeaderBody;
_messagePublishInfo = publishBody;
- _contentChunkCount = contentChunkCount;
_arrivalTime = arrivalTime;
}
- public int getContentChunkCount()
- {
- return _contentChunkCount;
- }
-
- public void setContentChunkCount(int contentChunkCount)
- {
- _contentChunkCount = contentChunkCount;
- }
public ContentHeaderBody getContentHeaderBody()
{
return _contentHeaderBody;
}
- public void setContentHeaderBody(ContentHeaderBody contentHeaderBody)
- {
- _contentHeaderBody = contentHeaderBody;
- }
-
public MessagePublishInfo getMessagePublishInfo()
{
return _messagePublishInfo;
}
- public void setMessagePublishInfo(MessagePublishInfo messagePublishInfo)
- {
- _messagePublishInfo = messagePublishInfo;
- }
-
public long getArrivalTime()
{
return _arrivalTime;
}
- public void setArrivalTime(long arrivalTime)
- {
- _arrivalTime = arrivalTime;
- }
-
public MessageMetaDataType getType()
{
return TYPE;
@@ -169,8 +145,7 @@ public class MessageMetaData implements StorableMessageMetaData
public boolean isPersistent()
{
- BasicContentHeaderProperties properties = (BasicContentHeaderProperties) (_contentHeaderBody.getProperties());
- return properties.getDeliveryMode() == BasicContentHeaderProperties.PERSISTENT;
+ return _contentHeaderBody.getProperties().getDeliveryMode() == BasicContentHeaderProperties.PERSISTENT;
}
private static class MetaDataFactory implements MessageMetaDataType.Factory
@@ -219,7 +194,7 @@ public class MessageMetaData implements StorableMessageMetaData
return routingKey;
}
};
- return new MessageMetaData(publishBody, chb, 0, arrivalTime);
+ return new MessageMetaData(publishBody, chb, arrivalTime);
}
catch (AMQException e)
{
@@ -242,7 +217,7 @@ public class MessageMetaData implements StorableMessageMetaData
{
private BasicContentHeaderProperties getProperties()
{
- return (BasicContentHeaderProperties) getContentHeaderBody().getProperties();
+ return getContentHeaderBody().getProperties();
}
public String getUserId()
@@ -300,18 +275,6 @@ public class MessageMetaData implements StorableMessageMetaData
return getProperties().getReplyToAsString();
}
- public String getReplyToExchange()
- {
- // TODO
- return getReplyTo();
- }
-
- public String getReplyToRoutingKey()
- {
- // TODO
- return getReplyTo();
- }
-
public Object getHeader(String name)
{
FieldTable ft = getProperties().getHeaders();
diff --git a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/SubscriptionImpl.java b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/SubscriptionImpl.java
index d1d86fe478..d48e8b3dea 100644
--- a/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/SubscriptionImpl.java
+++ b/qpid/java/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/SubscriptionImpl.java
@@ -28,6 +28,7 @@ import org.apache.qpid.framing.AMQShortString;
import org.apache.qpid.framing.FieldTable;
import org.apache.qpid.server.filter.FilterManager;
import org.apache.qpid.server.filter.FilterManagerFactory;
+import org.apache.qpid.server.filter.Filterable;
import org.apache.qpid.server.flow.FlowCreditManager;
import org.apache.qpid.server.logging.LogActor;
import org.apache.qpid.server.logging.LogSubject;
@@ -488,7 +489,7 @@ public abstract class SubscriptionImpl implements Subscription, FlowCreditManage
{
AMQMessage message = (AMQMessage) entry.getMessage();
- final Object publisherReference = message.getConnectionIdentifier();
+ final Object publisherReference = message.getConnectionReference();
// We don't want local messages so check to see if message is one we sent
Object localReference = getProtocolSession().getReference();
@@ -519,7 +520,7 @@ public abstract class SubscriptionImpl implements Subscription, FlowCreditManage
private boolean checkFilters(QueueEntry msg)
{
- return (_filters == null) || _filters.allAllow(msg);
+ return (_filters == null) || _filters.allAllow(msg.asFilterable());
}
public boolean isAutoClose()
diff --git a/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/AckTest.java b/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/AckTest.java
index 4ab64ca100..176d1858f1 100644
--- a/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/AckTest.java
+++ b/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/AckTest.java
@@ -119,8 +119,6 @@ public class AckTest extends QpidTestCase
return new AMQShortString("rk");
}
};
- final IncomingMessage msg = new IncomingMessage(publishBody);
- //IncomingMessage msg2 = null;
BasicContentHeaderProperties b = new BasicContentHeaderProperties();
ContentHeaderBody cb = new ContentHeaderBody();
cb.setProperties(b);
@@ -131,42 +129,35 @@ public class AckTest extends QpidTestCase
b.setDeliveryMode((byte) 2);
}
- msg.setContentHeaderBody(cb);
-
// we increment the reference here since we are not delivering the messaging to any queues, which is where
// the reference is normally incremented. The test is easier to construct if we have direct access to the
// subscription
ArrayList<AMQQueue> qs = new ArrayList<AMQQueue>();
qs.add(_queue);
- msg.enqueue(qs);
- MessageMetaData mmd = msg.headersReceived(System.currentTimeMillis());
+ MessageMetaData mmd = new MessageMetaData(publishBody,cb, System.currentTimeMillis());
final StoredMessage storedMessage = _messageStore.addMessage(mmd);
- msg.setStoredMessage(storedMessage);
final AMQMessage message = new AMQMessage(storedMessage);
- if(msg.allContentReceived())
- {
- ServerTransaction txn = new AutoCommitTransaction(_messageStore);
- txn.enqueue(_queue, message, new ServerTransaction.Action() {
- public void postCommit()
+ ServerTransaction txn = new AutoCommitTransaction(_messageStore);
+ txn.enqueue(_queue, message, new ServerTransaction.Action() {
+ public void postCommit()
+ {
+ try
{
- try
- {
-
- _queue.enqueue(message);
- }
- catch (AMQException e)
- {
- throw new RuntimeException(e);
- }
- }
- public void onRollback()
+ _queue.enqueue(message);
+ }
+ catch (AMQException e)
{
- //To change body of implemented methods use File | Settings | File Templates.
+ throw new RuntimeException(e);
}
- });
+ }
+
+ public void onRollback()
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+ });
- }
// we manually send the message to the subscription
//_subscription.send(new QueueEntry(_queue,msg), _queue);
}
diff --git a/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/InternalTestProtocolSession.java b/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/InternalTestProtocolSession.java
index f1dfc52ba4..1680a16b42 100644
--- a/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/InternalTestProtocolSession.java
+++ b/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/InternalTestProtocolSession.java
@@ -35,6 +35,7 @@ import java.util.concurrent.atomic.AtomicLong;
import javax.security.auth.Subject;
+import org.apache.log4j.Logger;
import org.apache.qpid.AMQException;
import org.apache.qpid.framing.AMQShortString;
import org.apache.qpid.framing.ContentHeaderBody;
@@ -55,6 +56,7 @@ import org.apache.qpid.transport.network.NetworkConnection;
public class InternalTestProtocolSession extends AMQProtocolEngine implements ProtocolOutputConverter
{
+ private static final Logger _logger = Logger.getLogger(InternalTestProtocolSession.class);
// ChannelID(LIST) -> LinkedList<Pair>
private final Map<Integer, Map<AMQShortString, LinkedList<DeliveryPair>>> _channelDelivers;
private AtomicInteger _deliveryCount = new AtomicInteger(0);
@@ -185,7 +187,7 @@ public class InternalTestProtocolSession extends AMQProtocolEngine implements Pr
}
catch (InterruptedException e)
{
- e.printStackTrace();
+ _logger.error("Thread interupted", e);
}
}
}
diff --git a/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/MockStoredMessage.java b/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/MockStoredMessage.java
index 15573a871f..50145e5c6d 100755
--- a/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/MockStoredMessage.java
+++ b/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/MockStoredMessage.java
@@ -57,9 +57,9 @@ public class MockStoredMessage implements StoredMessage<MessageMetaData>
{
FieldTable headers = new FieldTable();
headers.setString(headerName, headerValue == null? null :String.valueOf(headerValue));
- ((BasicContentHeaderProperties)chb.getProperties()).setHeaders(headers);
+ ( chb.getProperties()).setHeaders(headers);
}
- _metaData = new MessageMetaData(info, chb, 0);
+ _metaData = new MessageMetaData(info, chb);
_content = ByteBuffer.allocate(_metaData.getContentSize());
}
diff --git a/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/ReferenceCountingTest.java b/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/ReferenceCountingTest.java
index 87fbcfa9b3..227e9794da 100644
--- a/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/ReferenceCountingTest.java
+++ b/qpid/java/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/ReferenceCountingTest.java
@@ -81,7 +81,7 @@ public class ReferenceCountingTest extends QpidTestCase
- MessageMetaData mmd = new MessageMetaData(info, chb, 0);
+ MessageMetaData mmd = new MessageMetaData(info, chb);
StoredMessage storedMessage = _store.addMessage(mmd);
@@ -139,7 +139,7 @@ public class ReferenceCountingTest extends QpidTestCase
final ContentHeaderBody chb = createPersistentContentHeader();
- MessageMetaData mmd = new MessageMetaData(info, chb, 0);
+ MessageMetaData mmd = new MessageMetaData(info, chb);
StoredMessage storedMessage = _store.addMessage(mmd);
AMQMessage message = new AMQMessage(storedMessage);
diff --git a/qpid/java/broker-plugins/amqp-1-0-protocol/pom.xml b/qpid/java/broker-plugins/amqp-1-0-protocol/pom.xml
index 31b42ef0e2..97db18011d 100644
--- a/qpid/java/broker-plugins/amqp-1-0-protocol/pom.xml
+++ b/qpid/java/broker-plugins/amqp-1-0-protocol/pom.xml
@@ -40,6 +40,14 @@
<version>0.26-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
+
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>${log4j-version}</version>
+ <scope>compile</scope>
+ </dependency>
+
</dependencies>
<build>
diff --git a/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Connection_1_0.java b/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Connection_1_0.java
index 4cb9767514..4082f22e9c 100644
--- a/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Connection_1_0.java
+++ b/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Connection_1_0.java
@@ -51,6 +51,8 @@ public class Connection_1_0 implements ConnectionEventListener
private final ConnectionEndpoint _conn;
private final long _connectionId;
private final Collection<Session_1_0> _sessions = Collections.synchronizedCollection(new ArrayList<Session_1_0>());
+ private final Object _reference = new Object();
+
public static interface Task
@@ -79,6 +81,11 @@ public class Connection_1_0 implements ConnectionEventListener
}
+ public Object getReference()
+ {
+ return _reference;
+ }
+
public void remoteSessionCreation(SessionEndpoint endpoint)
{
Session_1_0 session = new Session_1_0(_vhost, this);
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 2cef27267b..3b981b46b8 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
@@ -27,6 +27,8 @@ import org.apache.qpid.amqp_1_0.type.messaging.Accepted;
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.MessageReference;
import org.apache.qpid.server.queue.BaseQueue;
import org.apache.qpid.server.txn.ServerTransaction;
@@ -53,34 +55,71 @@ public class ExchangeDestination implements ReceivingDestination, SendingDestina
public Outcome send(final Message_1_0 message, ServerTransaction txn)
{
- final List<? extends BaseQueue> queues = _exchange.route(message);
+ final InstanceProperties instanceProperties =
+ new InstanceProperties()
+ {
+
+ @Override
+ public Object getProperty(final Property prop)
+ {
+ switch(prop)
+ {
+ case MANDATORY:
+ return false;
+ case REDELIVERED:
+ return false;
+ case PERSISTENT:
+ return message.isPersistent();
+ case IMMEDIATE:
+ return false;
+ case EXPIRATION:
+ return message.getExpiration();
+ }
+ return null;
+ }};
- txn.enqueue(queues,message, new ServerTransaction.Action()
+ List<? extends BaseQueue> queues = _exchange.route(message, instanceProperties);
+
+ if(queues == null || queues.isEmpty())
{
+ Exchange altExchange = _exchange.getAlternateExchange();
+ if(altExchange != null)
+ {
+ queues = altExchange.route(message, instanceProperties);
+ }
+ }
- BaseQueue[] _queues = queues.toArray(new BaseQueue[queues.size()]);
+ if(queues != null && !queues.isEmpty())
+ {
+ final BaseQueue[] baseQueues = queues.toArray(new BaseQueue[queues.size()]);
- public void postCommit()
+ txn.enqueue(queues,message, new ServerTransaction.Action()
{
- for(int i = 0; i < _queues.length; i++)
+ MessageReference _reference = message.newReference();
+
+ public void postCommit()
{
- try
- {
- _queues[i].enqueue(message);
- }
- catch (AMQException e)
+ for(int i = 0; i < baseQueues.length; i++)
{
- // TODO
- throw new RuntimeException(e);
+ try
+ {
+ baseQueues[i].enqueue(message);
+ }
+ catch (AMQException e)
+ {
+ // TODO
+ throw new RuntimeException(e);
+ }
}
+ _reference.release();
}
- }
- public void onRollback()
- {
- // NO-OP
- }
- });
+ public void onRollback()
+ {
+ _reference.release();
+ }
+ });
+ }
return ACCEPTED;
}
diff --git a/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/MessageConverter_to_1_0.java b/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/MessageConverter_to_1_0.java
index 5925bf0c32..78ca9ff2a6 100644
--- a/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/MessageConverter_to_1_0.java
+++ b/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/MessageConverter_to_1_0.java
@@ -272,7 +272,7 @@ public abstract class MessageConverter_to_1_0<M extends ServerMessage> implement
@Override
public void remove()
{
- serverMessage.getStoredMessage().remove();
+ throw new UnsupportedOperationException();
}
};
}
diff --git a/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/MessageMetaData_1_0.java b/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/MessageMetaData_1_0.java
index 8d48d70d9a..8db6c86fc4 100755
--- a/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/MessageMetaData_1_0.java
+++ b/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/MessageMetaData_1_0.java
@@ -22,6 +22,8 @@ package org.apache.qpid.server.protocol.v1_0;
import java.nio.ByteBuffer;
import java.util.*;
+
+import org.apache.log4j.Logger;
import org.apache.qpid.amqp_1_0.codec.ValueHandler;
import org.apache.qpid.amqp_1_0.messaging.SectionDecoder;
import org.apache.qpid.amqp_1_0.messaging.SectionEncoder;
@@ -44,6 +46,7 @@ import org.apache.qpid.server.store.StorableMessageMetaData;
public class MessageMetaData_1_0 implements StorableMessageMetaData
{
+ private static final Logger _logger = Logger.getLogger(MessageMetaData_1_0.class);
// TODO move to somewhere more useful
public static final Symbol JMS_TYPE = Symbol.valueOf("x-opt-jms-type");
public static final MessageMetaDataType.Factory<MessageMetaData_1_0> FACTORY = new MetaDataFactory();
@@ -275,7 +278,7 @@ public class MessageMetaData_1_0 implements StorableMessageMetaData
}
catch (AmqpErrorException e)
{
- e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+ _logger.error("Decoding read section error", e);
throw new IllegalArgumentException(e);
}
}
@@ -501,16 +504,6 @@ public class MessageMetaData_1_0 implements StorableMessageMetaData
}
}
- public String getReplyToExchange()
- {
- return null; //TODO
- }
-
- public String getReplyToRoutingKey()
- {
- return null; //TODO
- }
-
public String getAppId()
{
//TODO
diff --git a/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Message_1_0.java b/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Message_1_0.java
index 9b11c0f48d..66094f52f0 100644
--- a/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Message_1_0.java
+++ b/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Message_1_0.java
@@ -21,35 +21,22 @@
package org.apache.qpid.server.protocol.v1_0;
-import java.lang.ref.WeakReference;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
-import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
-import org.apache.qpid.server.message.InboundMessage;
-import org.apache.qpid.server.message.MessageReference;
-import org.apache.qpid.server.message.ServerMessage;
+import org.apache.qpid.server.message.AbstractServerMessageImpl;
import org.apache.qpid.server.store.StoredMessage;
-public class Message_1_0 implements ServerMessage<MessageMetaData_1_0>, InboundMessage
+public class Message_1_0 extends AbstractServerMessageImpl<Message_1_0, MessageMetaData_1_0>
{
-
- private static final AtomicIntegerFieldUpdater<Message_1_0> _refCountUpdater =
- AtomicIntegerFieldUpdater.newUpdater(Message_1_0.class, "_referenceCount");
-
- private volatile int _referenceCount = 0;
-
- private final StoredMessage<MessageMetaData_1_0> _storedMessage;
private List<ByteBuffer> _fragments;
- private WeakReference<Session_1_0> _session;
private long _arrivalTime;
public Message_1_0(final StoredMessage<MessageMetaData_1_0> storedMessage)
{
- _storedMessage = storedMessage;
- _session = null;
+ super(storedMessage, null);
_fragments = restoreFragments(storedMessage);
}
@@ -75,11 +62,10 @@ public class Message_1_0 implements ServerMessage<MessageMetaData_1_0>, InboundM
public Message_1_0(final StoredMessage<MessageMetaData_1_0> storedMessage,
final List<ByteBuffer> fragments,
- final Session_1_0 session)
+ final Object connectionReference)
{
- _storedMessage = storedMessage;
+ super(storedMessage, connectionReference);
_fragments = fragments;
- _session = new WeakReference<Session_1_0>(session);
_arrivalTime = System.currentTimeMillis();
}
@@ -98,7 +84,7 @@ public class Message_1_0 implements ServerMessage<MessageMetaData_1_0>, InboundM
private MessageMetaData_1_0 getMessageMetaData()
{
- return _storedMessage.getMetaData();
+ return getStoredMessage().getMetaData();
}
public MessageMetaData_1_0.MessageHeader_1_0 getMessageHeader()
@@ -106,16 +92,6 @@ public class Message_1_0 implements ServerMessage<MessageMetaData_1_0>, InboundM
return getMessageMetaData().getMessageHeader();
}
- public StoredMessage getStoredMessage()
- {
- return _storedMessage;
- }
-
- public boolean isPersistent()
- {
- return getMessageMetaData().isPersistent();
- }
-
public boolean isRedelivered()
{
// TODO
@@ -136,121 +112,19 @@ public class Message_1_0 implements ServerMessage<MessageMetaData_1_0>, InboundM
return size;
}
- public boolean isImmediate()
- {
- return false;
- }
-
public long getExpiration()
{
return getMessageHeader().getExpiration();
}
- public MessageReference<Message_1_0> newReference()
- {
- return new Reference(this);
- }
-
- public long getMessageNumber()
- {
- return _storedMessage.getMessageNumber();
- }
-
public long getArrivalTime()
{
return _arrivalTime;
}
- public int getContent(final ByteBuffer buf, final int offset)
- {
- return _storedMessage.getContent(offset, buf);
- }
-
- public ByteBuffer getContent(int offset, int size)
- {
- ByteBuffer buf = ByteBuffer.allocate(size);
- buf.limit(getContent(buf, offset));
-
- return buf;
- }
-
public List<ByteBuffer> getFragments()
{
return _fragments;
}
- public Session_1_0 getSession()
- {
- return _session == null ? null : _session.get();
- }
-
-
- public boolean incrementReference()
- {
- if(_refCountUpdater.incrementAndGet(this) <= 0)
- {
- _refCountUpdater.decrementAndGet(this);
- return false;
- }
- else
- {
- return true;
- }
- }
-
- /**
- * Threadsafe. This will decrement the reference count and when it reaches zero will remove the message from the
- * message store.
- */
-
- public void decrementReference()
- {
- int count = _refCountUpdater.decrementAndGet(this);
-
- // note that the operation of decrementing the reference count and then removing the message does not
- // have to be atomic since the ref count starts at 1 and the exchange itself decrements that after
- // the message has been passed to all queues. i.e. we are
- // not relying on the all the increments having taken place before the delivery manager decrements.
- if (count == 0)
- {
- // set the reference count way below 0 so that we can detect that the message has been deleted
- // this is to guard against the message being spontaneously recreated (from the mgmt console)
- // by copying from other queues at the same time as it is being removed.
- _refCountUpdater.set(this,Integer.MIN_VALUE/2);
-
- // must check if the handle is null since there may be cases where we decide to throw away a message
- // and the handle has not yet been constructed
- if (_storedMessage != null)
- {
- _storedMessage.remove();
- }
- }
- else
- {
- if (count < 0)
- {
- throw new RuntimeException("Reference count for message id " + getMessageNumber()
- + " has gone below 0.");
- }
- }
- }
-
- public static class Reference extends MessageReference<Message_1_0>
- {
- public Reference(Message_1_0 message)
- {
- super(message);
- }
-
- protected void onReference(Message_1_0 message)
- {
- message.incrementReference();
- }
-
- protected void onRelease(Message_1_0 message)
- {
- message.decrementReference();
- }
-
- }
}
diff --git a/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/QueueDestination.java b/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/QueueDestination.java
index af3f0b7872..b9c10b925f 100644
--- a/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/QueueDestination.java
+++ b/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/QueueDestination.java
@@ -20,18 +20,17 @@
*/
package org.apache.qpid.server.protocol.v1_0;
+import org.apache.log4j.Logger;
import org.apache.qpid.amqp_1_0.type.Outcome;
import org.apache.qpid.amqp_1_0.type.messaging.Accepted;
-import org.apache.qpid.AMQException;
import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.txn.ServerTransaction;
-import java.util.Arrays;
-
public class QueueDestination implements SendingDestination, ReceivingDestination
{
+ private static final Logger _logger = Logger.getLogger(QueueDestination.class);
private static final Accepted ACCEPTED = new Accepted();
private static final Outcome[] OUTCOMES = new Outcome[] { ACCEPTED };
@@ -80,7 +79,7 @@ public class QueueDestination implements SendingDestination, ReceivingDestinatio
}
catch(Exception e)
{
- e.printStackTrace();
+ _logger.error("Send error", e);
throw new RuntimeException(e);
}
return ACCEPTED;
diff --git a/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ReceivingLink_1_0.java b/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ReceivingLink_1_0.java
index 4efa053204..df39ed667e 100644
--- a/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ReceivingLink_1_0.java
+++ b/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ReceivingLink_1_0.java
@@ -43,6 +43,7 @@ import org.apache.qpid.amqp_1_0.type.transaction.TransactionalState;
import org.apache.qpid.amqp_1_0.type.transport.Detach;
import org.apache.qpid.amqp_1_0.type.transport.ReceiverSettleMode;
import org.apache.qpid.amqp_1_0.type.transport.Transfer;
+import org.apache.qpid.server.message.MessageReference;
import org.apache.qpid.server.store.StoredMessage;
import org.apache.qpid.server.txn.AutoCommitTransaction;
import org.apache.qpid.server.txn.ServerTransaction;
@@ -170,8 +171,8 @@ public class ReceivingLink_1_0 implements ReceivingLinkListener, Link_1_0, Deliv
storedMessage.flushToStore();
- Message_1_0 message = new Message_1_0(storedMessage, fragments, getSession());
-
+ Message_1_0 message = new Message_1_0(storedMessage, fragments, getSession().getConnection().getReference());
+ MessageReference<Message_1_0> reference = message.newReference();
Binary transactionId = null;
org.apache.qpid.amqp_1_0.type.DeliveryState xfrState = xfr.getState();
@@ -241,6 +242,8 @@ public class ReceivingLink_1_0 implements ReceivingLinkListener, Link_1_0, Deliv
}
});
}
+
+ reference.release();
}
}
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 0351de3e00..034927c56b 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
@@ -27,6 +27,8 @@ import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
+
+import org.apache.log4j.Logger;
import org.apache.qpid.AMQException;
import org.apache.qpid.AMQInternalException;
import org.apache.qpid.AMQSecurityException;
@@ -64,7 +66,6 @@ import org.apache.qpid.server.filter.JMSSelectorFilter;
import org.apache.qpid.server.filter.SimpleFilterManager;
import org.apache.qpid.server.model.UUIDGenerator;
import org.apache.qpid.server.queue.AMQQueue;
-import org.apache.qpid.server.queue.AMQQueueFactory;
import org.apache.qpid.server.queue.QueueEntry;
import org.apache.qpid.server.txn.AutoCommitTransaction;
import org.apache.qpid.server.txn.ServerTransaction;
@@ -72,6 +73,8 @@ import org.apache.qpid.server.virtualhost.VirtualHost;
public class SendingLink_1_0 implements SendingLinkListener, Link_1_0, DeliveryStateHandler
{
+ private static final Logger _logger = Logger.getLogger(SendingLink_1_0.class);
+
private VirtualHost _vhost;
private SendingDestination _destination;
@@ -319,7 +322,8 @@ public class SendingLink_1_0 implements SendingLinkListener, Link_1_0, DeliveryS
}
catch (AMQException e)
{
- e.printStackTrace(); //TODO.
+ //TODO
+ _logger.error("Error removing queue", e);
}
}
}
@@ -342,14 +346,15 @@ public class SendingLink_1_0 implements SendingLinkListener, Link_1_0, DeliveryS
}
catch (AMQSecurityException e)
{
- e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+ _logger.error("Security error", e);
}
catch (AMQInternalException e)
{
- e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
- } catch (AMQException e)
+ _logger.error("Internal error", e);
+ }
+ catch (AMQException e)
{
- e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+ _logger.error("Error", e);
}
_subscription = new Subscription_1_0(this, qd, true);
@@ -370,7 +375,8 @@ public class SendingLink_1_0 implements SendingLinkListener, Link_1_0, DeliveryS
}
catch (AMQException e)
{
- e.printStackTrace(); //TODO
+ //TODO
+ _logger.error("Error registering subscription", e);
}
}
@@ -398,7 +404,8 @@ public class SendingLink_1_0 implements SendingLinkListener, Link_1_0, DeliveryS
}
catch (AMQException e)
{
- e.printStackTrace(); //TODO
+ //TODO
+ _logger.error("Error unregistering subscription", e);
}
Modified state = new Modified();
@@ -423,7 +430,8 @@ public class SendingLink_1_0 implements SendingLinkListener, Link_1_0, DeliveryS
}
catch(AMQException e)
{
- e.printStackTrace(); // TODO - Implement
+ //TODO
+ _logger.error("Error removing queue", e);
}
}
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 d3962c779c..823e4cb16d 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
@@ -21,6 +21,8 @@
package org.apache.qpid.server.protocol.v1_0;
import java.text.MessageFormat;
+
+import org.apache.log4j.Logger;
import org.apache.qpid.amqp_1_0.transport.LinkEndpoint;
import org.apache.qpid.amqp_1_0.transport.ReceivingLinkEndpoint;
import org.apache.qpid.amqp_1_0.transport.SendingLinkEndpoint;
@@ -39,13 +41,11 @@ import org.apache.qpid.AMQSecurityException;
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.InboundMessage;
import org.apache.qpid.server.model.UUIDGenerator;
import org.apache.qpid.server.protocol.AMQConnectionModel;
import org.apache.qpid.server.protocol.AMQSessionModel;
import org.apache.qpid.server.protocol.LinkRegistry;
import org.apache.qpid.server.queue.AMQQueue;
-import org.apache.qpid.server.queue.AMQQueueFactory;
import org.apache.qpid.server.txn.AutoCommitTransaction;
import org.apache.qpid.server.txn.ServerTransaction;
import org.apache.qpid.server.virtualhost.VirtualHost;
@@ -56,6 +56,7 @@ import static org.apache.qpid.server.logging.subjects.LogSubjectFormat.CHANNEL_F
public class Session_1_0 implements SessionEventListener, AMQSessionModel, LogSubject
{
+ private static final Logger _logger = Logger.getLogger(Session_1_0.class);
private static final Symbol LIFETIME_POLICY = Symbol.valueOf("lifetime-policy");
private VirtualHost _vhost;
private AutoCommitTransaction _transaction;
@@ -155,7 +156,7 @@ public class Session_1_0 implements SessionEventListener, AMQSessionModel, LogSu
}
catch(AmqpErrorException e)
{
- e.printStackTrace();
+ _logger.error("Error creating sending link", e);
destination = null;
sendingLinkEndpoint.setSource(null);
error = e.getError();
@@ -355,7 +356,8 @@ public class Session_1_0 implements SessionEventListener, AMQSessionModel, LogSu
}
catch (AMQException e)
{
- e.printStackTrace(); //TODO.
+ //TODO
+ _logger.error("Error removing queue from vhost", e);
}
}
}
@@ -388,10 +390,13 @@ public class Session_1_0 implements SessionEventListener, AMQSessionModel, LogSu
}
catch (AMQSecurityException e)
{
- e.printStackTrace(); //TODO.
- } catch (AMQException e)
+ //TODO
+ _logger.error("Security error", e);
+ }
+ catch (AMQException e)
{
- e.printStackTrace(); //TODO
+ //TODO
+ _logger.error("Error", e);
}
return queue;
@@ -533,10 +538,9 @@ public class Session_1_0 implements SessionEventListener, AMQSessionModel, LogSu
}
@Override
- public boolean onSameConnection(InboundMessage inbound)
+ public Object getConnectionReference()
{
- // TODO
- return false;
+ return getConnection().getReference();
}
@Override
diff --git a/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Subscription_1_0.java b/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Subscription_1_0.java
index b9695ba87a..e5f3a52e3b 100644
--- a/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Subscription_1_0.java
+++ b/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Subscription_1_0.java
@@ -57,7 +57,8 @@ import org.apache.qpid.server.queue.QueueEntry;
import org.apache.qpid.server.subscription.Subscription;
import org.apache.qpid.server.txn.ServerTransaction;
-class Subscription_1_0 implements Subscription
+class
+ Subscription_1_0 implements Subscription
{
private SendingLink_1_0 _link;
@@ -149,7 +150,7 @@ class Subscription_1_0 implements Subscription
{
if(entry.getMessage() instanceof Message_1_0)
{
- if(_noLocal && ((Message_1_0)entry.getMessage()).getSession() == getSession())
+ if(_noLocal && ((Message_1_0)entry.getMessage()).getConnectionReference() == getSession().getConnection().getReference())
{
return false;
}
@@ -164,7 +165,7 @@ class Subscription_1_0 implements Subscription
private boolean checkFilters(final QueueEntry entry)
{
- return (_filters == null) || _filters.allAllow(entry);
+ return (_filters == null) || _filters.allAllow(entry.asFilterable());
}
public boolean isClosed()
diff --git a/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/TxnCoordinatorLink_1_0.java b/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/TxnCoordinatorLink_1_0.java
index a05d14816a..10d4811916 100644
--- a/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/TxnCoordinatorLink_1_0.java
+++ b/qpid/java/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/TxnCoordinatorLink_1_0.java
@@ -20,13 +20,13 @@
*/
package org.apache.qpid.server.protocol.v1_0;
+import org.apache.log4j.Logger;
import org.apache.qpid.amqp_1_0.messaging.SectionDecoder;
import org.apache.qpid.amqp_1_0.messaging.SectionDecoderImpl;
import org.apache.qpid.amqp_1_0.transport.LinkEndpoint;
import org.apache.qpid.amqp_1_0.transport.ReceivingLinkEndpoint;
import org.apache.qpid.amqp_1_0.transport.ReceivingLinkListener;
import org.apache.qpid.amqp_1_0.type.*;
-import org.apache.qpid.amqp_1_0.type.DeliveryState;
import org.apache.qpid.amqp_1_0.type.messaging.*;
import org.apache.qpid.amqp_1_0.type.transaction.Declare;
import org.apache.qpid.amqp_1_0.type.transaction.Declared;
@@ -42,6 +42,7 @@ import java.util.*;
public class TxnCoordinatorLink_1_0 implements ReceivingLinkListener, Link_1_0
{
+ private static final Logger _logger = Logger.getLogger(TxnCoordinatorLink_1_0.class);
private VirtualHost _vhost;
private ReceivingLinkEndpoint _endpoint;
@@ -149,7 +150,8 @@ public class TxnCoordinatorLink_1_0 implements ReceivingLinkListener, Link_1_0
}
catch (AmqpErrorException e)
{
- e.printStackTrace(); //TODO.
+ //TODO
+ _logger.error("AMQP error", e);
}
}
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 92bccf871f..f1843de8ac 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
@@ -225,7 +225,6 @@ public class MessageConverter_0_10_to_0_8 implements MessageConverter<MessageTra
{
return new MessageMetaData(convertPublishBody(message),
convertContentHeaderBody(message, vhost),
- 1,
message.getArrivalTime());
}
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_8_to_0_10.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_8_to_0_10.java
index e1e8fbd9d3..544099f1f2 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_8_to_0_10.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_8_to_0_10.java
@@ -121,7 +121,7 @@ public class MessageConverter_0_8_to_0_10 implements MessageConverter<AMQMessag
body.flip();
BasicContentHeaderProperties properties =
- (BasicContentHeaderProperties) message_0_8.getContentHeaderBody().getProperties();
+ message_0_8.getContentHeaderBody().getProperties();
final AMQShortString exchange = message_0_8.getMessagePublishInfo().getExchange();
if(exchange != null)
diff --git a/qpid/java/broker-plugins/amqp-msg-conv-0-8-to-1-0/src/main/java/org/apache/qpid/server/protocol/converter/v0_8_v1_0/MessageConverter_0_8_to_1_0.java b/qpid/java/broker-plugins/amqp-msg-conv-0-8-to-1-0/src/main/java/org/apache/qpid/server/protocol/converter/v0_8_v1_0/MessageConverter_0_8_to_1_0.java
index 0d9d59ff56..bbea177260 100644
--- a/qpid/java/broker-plugins/amqp-msg-conv-0-8-to-1-0/src/main/java/org/apache/qpid/server/protocol/converter/v0_8_v1_0/MessageConverter_0_8_to_1_0.java
+++ b/qpid/java/broker-plugins/amqp-msg-conv-0-8-to-1-0/src/main/java/org/apache/qpid/server/protocol/converter/v0_8_v1_0/MessageConverter_0_8_to_1_0.java
@@ -56,7 +56,7 @@ public class MessageConverter_0_8_to_1_0 extends MessageConverter_to_1_0<AMQMess
header.setDurable(serverMessage.isPersistent());
BasicContentHeaderProperties contentHeader =
- (BasicContentHeaderProperties) serverMessage.getContentHeaderBody().getProperties();
+ serverMessage.getContentHeaderBody().getProperties();
header.setPriority(UnsignedByte.valueOf(contentHeader.getPriority()));
final long expiration = serverMessage.getExpiration();
diff --git a/qpid/java/broker-plugins/derby-store/pom.xml b/qpid/java/broker-plugins/derby-store/pom.xml
index 51578a5db6..9b55875aa8 100644
--- a/qpid/java/broker-plugins/derby-store/pom.xml
+++ b/qpid/java/broker-plugins/derby-store/pom.xml
@@ -41,6 +41,13 @@
<scope>compile</scope>
</dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>${log4j-version}</version>
+ <scope>compile</scope>
+ </dependency>
+
<!-- test dependencies -->
<dependency>
<groupId>org.apache.qpid</groupId>
diff --git a/qpid/java/broker-plugins/jdbc-store/pom.xml b/qpid/java/broker-plugins/jdbc-store/pom.xml
index 1cc75d8465..ca861a42f3 100644
--- a/qpid/java/broker-plugins/jdbc-store/pom.xml
+++ b/qpid/java/broker-plugins/jdbc-store/pom.xml
@@ -34,6 +34,13 @@
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>${log4j-version}</version>
+ <scope>compile</scope>
+ </dependency>
+
<!-- test dependencies -->
<dependency>
<groupId>org.apache.qpid</groupId>
diff --git a/qpid/java/broker-plugins/management-http/pom.xml b/qpid/java/broker-plugins/management-http/pom.xml
index 36925369fe..abc754902a 100644
--- a/qpid/java/broker-plugins/management-http/pom.xml
+++ b/qpid/java/broker-plugins/management-http/pom.xml
@@ -35,6 +35,20 @@
</dependency>
<dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>${log4j-version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>${slf4j-version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-servlet_2.5_spec</artifactId>
<version>1.2</version>
diff --git a/qpid/java/broker-plugins/management-jmx/pom.xml b/qpid/java/broker-plugins/management-jmx/pom.xml
index 8fd525e7d6..8a06fcf185 100644
--- a/qpid/java/broker-plugins/management-jmx/pom.xml
+++ b/qpid/java/broker-plugins/management-jmx/pom.xml
@@ -41,6 +41,13 @@
<scope>compile</scope>
</dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>${log4j-version}</version>
+ <scope>compile</scope>
+ </dependency>
+
<!-- test dependencies -->
<dependency>
<groupId>org.apache.qpid</groupId>
diff --git a/qpid/java/broker/pom.xml b/qpid/java/broker/pom.xml
index 7f09d5c046..6eb51a4b2e 100644
--- a/qpid/java/broker/pom.xml
+++ b/qpid/java/broker/pom.xml
@@ -40,12 +40,12 @@
<scope>compile</scope>
</dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>1.2.16</version>
- <scope>compile</scope>
- </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>${log4j-version}</version>
+ <scope>compile</scope>
+ </dependency>
<dependency>
<groupId>commons-cli</groupId>
diff --git a/qpid/java/client/pom.xml b/qpid/java/client/pom.xml
index e97b5b7a0d..3d9508eb16 100644
--- a/qpid/java/client/pom.xml
+++ b/qpid/java/client/pom.xml
@@ -43,7 +43,7 @@
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
- <version>1.6.4</version>
+ <version>${slf4j-version}</version>
<scope>compile</scope>
</dependency>
@@ -54,13 +54,6 @@
<version>0.26-SNAPSHOT</version>
<scope>test</scope>
</dependency>
-
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>1.2.16</version>
- <scope>test</scope>
- </dependency>
</dependencies>
<build>
diff --git a/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_8.java b/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_8.java
index fe9f9f4d00..dbfbb743ec 100644
--- a/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_8.java
+++ b/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_8.java
@@ -30,7 +30,6 @@ import org.apache.qpid.client.CustomJMSXProperty;
import org.apache.qpid.client.JMSAMQException;
import org.apache.qpid.framing.AMQShortString;
import org.apache.qpid.framing.BasicContentHeaderProperties;
-import org.apache.qpid.framing.ContentHeaderProperties;
import org.apache.qpid.url.AMQBindingURL;
import org.apache.qpid.url.BindingURL;
@@ -73,7 +72,7 @@ public class AMQMessageDelegate_0_8 extends AbstractAMQMessageDelegate
private static final boolean STRICT_AMQP_COMPLIANCE =
Boolean.parseBoolean(System.getProperties().getProperty(AMQSession.STRICT_AMQP, AMQSession.STRICT_AMQP_DEFAULT));
- private ContentHeaderProperties _contentHeaderProperties;
+ private BasicContentHeaderProperties _contentHeaderProperties;
// The base set of items that needs to be set.
private AMQMessageDelegate_0_8(BasicContentHeaderProperties properties, long deliveryTag)
@@ -81,7 +80,7 @@ public class AMQMessageDelegate_0_8 extends AbstractAMQMessageDelegate
super(deliveryTag);
_contentHeaderProperties = properties;
_readableProperties = (_contentHeaderProperties != null);
- _headerAdapter = new JMSHeaderAdapter(_readableProperties ? ((BasicContentHeaderProperties) _contentHeaderProperties).getHeaders()
+ _headerAdapter = new JMSHeaderAdapter(_readableProperties ? _contentHeaderProperties.getHeaders()
: (new BasicContentHeaderProperties()).getHeaders() );
}
@@ -90,7 +89,7 @@ public class AMQMessageDelegate_0_8 extends AbstractAMQMessageDelegate
{
this(new BasicContentHeaderProperties(), -1);
_readableProperties = false;
- _headerAdapter = new JMSHeaderAdapter(((BasicContentHeaderProperties) _contentHeaderProperties).getHeaders());
+ _headerAdapter = new JMSHeaderAdapter(_contentHeaderProperties.getHeaders());
}
@@ -337,7 +336,7 @@ public class AMQMessageDelegate_0_8 extends AbstractAMQMessageDelegate
public BasicContentHeaderProperties getContentHeaderProperties()
{
- return (BasicContentHeaderProperties) _contentHeaderProperties;
+ return _contentHeaderProperties;
}
@@ -443,7 +442,7 @@ public class AMQMessageDelegate_0_8 extends AbstractAMQMessageDelegate
//NOTE: if the JMSX Property is a non AMQP property then we must check _strictAMQP and throw as below.
if (propertyName.equals(CustomJMSXProperty.JMSXUserID.toString()))
{
- return ((BasicContentHeaderProperties) _contentHeaderProperties).getUserIdAsString();
+ return _contentHeaderProperties.getUserIdAsString();
}
else
{
diff --git a/qpid/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessageFactory.java b/qpid/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessageFactory.java
index 608567674a..e52ff9acb2 100644
--- a/qpid/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessageFactory.java
+++ b/qpid/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessageFactory.java
@@ -101,7 +101,7 @@ public abstract class AbstractJMSMessageFactory implements MessageFactory
}
AMQMessageDelegate delegate = new AMQMessageDelegate_0_8(messageNbr,
- (BasicContentHeaderProperties) contentHeader.getProperties(),
+ contentHeader.getProperties(),
exchange, routingKey, queueDestinationCache, topicDestinationCache);
return createMessage(delegate, data);
diff --git a/qpid/java/client/src/main/java/org/apache/qpid/client/message/MessageFactoryRegistry.java b/qpid/java/client/src/main/java/org/apache/qpid/client/message/MessageFactoryRegistry.java
index 4154003b23..7e1ce20238 100644
--- a/qpid/java/client/src/main/java/org/apache/qpid/client/message/MessageFactoryRegistry.java
+++ b/qpid/java/client/src/main/java/org/apache/qpid/client/message/MessageFactoryRegistry.java
@@ -110,7 +110,7 @@ public class MessageFactoryRegistry
AMQSession_0_8.DestinationCache<AMQTopic> topicDestinationCache)
throws AMQException, JMSException
{
- BasicContentHeaderProperties properties = (BasicContentHeaderProperties) contentHeader.getProperties();
+ BasicContentHeaderProperties properties = contentHeader.getProperties();
// Get the message content type. This may be null for pure AMQP messages, but will always be set for JMS over
// AMQP. When the type is null, it can only be assumed that the message is a byte message.
diff --git a/qpid/java/client/src/main/java/org/apache/qpid/client/transport/ClientConnectionDelegate.java b/qpid/java/client/src/main/java/org/apache/qpid/client/transport/ClientConnectionDelegate.java
index e9b946d5b7..51354a5941 100644
--- a/qpid/java/client/src/main/java/org/apache/qpid/client/transport/ClientConnectionDelegate.java
+++ b/qpid/java/client/src/main/java/org/apache/qpid/client/transport/ClientConnectionDelegate.java
@@ -179,12 +179,9 @@ public class ClientConnectionDelegate extends ClientDelegate
}
@Override
- public void connectionHeartbeat(Connection conn, ConnectionHeartbeat hearbeat)
+ public void connectionHeartbeat(Connection conn, ConnectionHeartbeat heartbeat)
{
- // ClientDelegate simply responds to heartbeats with heartbeats
_heartbeatListener.heartbeatReceived();
- super.connectionHeartbeat(conn, hearbeat);
- _heartbeatListener.heartbeatSent();
}
@@ -192,4 +189,11 @@ public class ClientConnectionDelegate extends ClientDelegate
{
_heartbeatListener = listener == null ? HeartbeatListener.DEFAULT : listener;
}
+
+ @Override
+ public void writerIdle(final Connection connection)
+ {
+ super.writerIdle(connection);
+ _heartbeatListener.heartbeatSent();
+ }
}
diff --git a/qpid/java/client/src/test/java/org/apache/qpid/client/protocol/AMQProtocolHandlerTest.java b/qpid/java/client/src/test/java/org/apache/qpid/client/protocol/AMQProtocolHandlerTest.java
index 4c9448cb39..70fcfcedb8 100644
--- a/qpid/java/client/src/test/java/org/apache/qpid/client/protocol/AMQProtocolHandlerTest.java
+++ b/qpid/java/client/src/test/java/org/apache/qpid/client/protocol/AMQProtocolHandlerTest.java
@@ -179,7 +179,7 @@ public class AMQProtocolHandlerTest extends TestCase
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error(e.getMessage(), e);
fail(e.getMessage());
}
}
diff --git a/qpid/java/client/src/test/java/org/apache/qpid/test/unit/message/MessageConverterTest.java b/qpid/java/client/src/test/java/org/apache/qpid/test/unit/message/MessageConverterTest.java
index 04122a6d51..9bd7062c7b 100644
--- a/qpid/java/client/src/test/java/org/apache/qpid/test/unit/message/MessageConverterTest.java
+++ b/qpid/java/client/src/test/java/org/apache/qpid/test/unit/message/MessageConverterTest.java
@@ -22,6 +22,7 @@ package org.apache.qpid.test.unit.message;
import junit.framework.TestCase;
+import org.apache.log4j.Logger;
import org.apache.qpid.client.AMQConnection;
import org.apache.qpid.client.AMQQueue;
import org.apache.qpid.client.AMQSession;
@@ -42,7 +43,7 @@ import javax.jms.TextMessage;
public class MessageConverterTest extends TestCase
{
-
+ private static final Logger _logger = Logger.getLogger(MessageConverterTest.class);
public static final String JMS_CORR_ID = "QPIDID_01";
public static final int JMS_DELIV_MODE = 1;
public static final String JMS_TYPE = "test.jms.type";
@@ -134,8 +135,8 @@ public class MessageConverterTest extends TestCase
}
catch (JMSException e)
{
+ _logger.error("An error occured testing the property values", e);
fail("An error occured testing the property values" + e.getCause());
- e.printStackTrace();
}
}
diff --git a/qpid/java/common/pom.xml b/qpid/java/common/pom.xml
index 7aa4cd2a0c..d931c799a3 100644
--- a/qpid/java/common/pom.xml
+++ b/qpid/java/common/pom.xml
@@ -34,12 +34,12 @@
</properties>
<dependencies>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- <version>1.6.4</version>
- <scope>compile</scope>
- </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>${slf4j-version}</version>
+ <scope>compile</scope>
+ </dependency>
<!-- test dependencies -->
<dependency>
@@ -49,12 +49,6 @@
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>1.2.16</version>
- <scope>test</scope>
- </dependency>
</dependencies>
<build>
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/framing/BasicContentHeaderProperties.java b/qpid/java/common/src/main/java/org/apache/qpid/framing/BasicContentHeaderProperties.java
index 366c8231a1..60dac24cfc 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/framing/BasicContentHeaderProperties.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/framing/BasicContentHeaderProperties.java
@@ -27,7 +27,7 @@ import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
-public class BasicContentHeaderProperties implements CommonContentHeaderProperties
+public class BasicContentHeaderProperties
{
//persistent & non-persistent constants, values as per JMS DeliveryMode
public static final int NON_PERSISTENT = 1;
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/framing/CommonContentHeaderProperties.java b/qpid/java/common/src/main/java/org/apache/qpid/framing/CommonContentHeaderProperties.java
deleted file mode 100644
index 7162c37062..0000000000
--- a/qpid/java/common/src/main/java/org/apache/qpid/framing/CommonContentHeaderProperties.java
+++ /dev/null
@@ -1,81 +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.framing;
-
-public interface CommonContentHeaderProperties extends ContentHeaderProperties
-{
- AMQShortString getContentType();
-
- void setContentType(AMQShortString contentType);
-
- FieldTable getHeaders();
-
- void setHeaders(FieldTable headers);
-
- byte getDeliveryMode();
-
- void setDeliveryMode(byte deliveryMode);
-
- byte getPriority();
-
- void setPriority(byte priority);
-
- AMQShortString getCorrelationId();
-
- void setCorrelationId(AMQShortString correlationId);
-
- AMQShortString getReplyTo();
-
- void setReplyTo(AMQShortString replyTo);
-
- long getExpiration();
-
- void setExpiration(long expiration);
-
- AMQShortString getMessageId();
-
- void setMessageId(AMQShortString messageId);
-
- long getTimestamp();
-
- void setTimestamp(long timestamp);
-
- AMQShortString getType();
-
- void setType(AMQShortString type);
-
- AMQShortString getUserId();
-
- void setUserId(AMQShortString userId);
-
- AMQShortString getAppId();
-
- void setAppId(AMQShortString appId);
-
- AMQShortString getClusterId();
-
- void setClusterId(AMQShortString clusterId);
-
- AMQShortString getEncoding();
-
- void setEncoding(AMQShortString encoding);
-}
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/framing/ContentHeaderBody.java b/qpid/java/common/src/main/java/org/apache/qpid/framing/ContentHeaderBody.java
index f6fa89a91c..131d796af4 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/framing/ContentHeaderBody.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/framing/ContentHeaderBody.java
@@ -39,7 +39,7 @@ public class ContentHeaderBody implements AMQBody
private long bodySize;
/** must never be null */
- private ContentHeaderProperties properties;
+ private BasicContentHeaderProperties properties;
public ContentHeaderBody()
{
@@ -57,13 +57,13 @@ public class ContentHeaderBody implements AMQBody
}
- public ContentHeaderBody(ContentHeaderProperties props, int classId)
+ public ContentHeaderBody(BasicContentHeaderProperties props, int classId)
{
properties = props;
this.classId = classId;
}
- public ContentHeaderBody(int classId, int weight, ContentHeaderProperties props, long bodySize)
+ public ContentHeaderBody(int classId, int weight, BasicContentHeaderProperties props, long bodySize)
{
this(props, classId);
this.weight = weight;
@@ -121,12 +121,12 @@ public class ContentHeaderBody implements AMQBody
return new AMQFrame(channelId, body);
}
- public ContentHeaderProperties getProperties()
+ public BasicContentHeaderProperties getProperties()
{
return properties;
}
- public void setProperties(ContentHeaderProperties props)
+ public void setProperties(BasicContentHeaderProperties props)
{
properties = props;
}
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/framing/ContentHeaderProperties.java b/qpid/java/common/src/main/java/org/apache/qpid/framing/ContentHeaderProperties.java
deleted file mode 100644
index 2e1b988aa3..0000000000
--- a/qpid/java/common/src/main/java/org/apache/qpid/framing/ContentHeaderProperties.java
+++ /dev/null
@@ -1,62 +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.framing;
-
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.IOException;
-
-
-/**
- * There will be an implementation of this interface for each content type. All content types have associated
- * header properties and this provides a way to encode and decode them.
- */
-public interface ContentHeaderProperties
-{
- /**
- * Writes the property list to the buffer, in a suitably encoded form.
- * @param buffer The buffer to write to
- */
- void writePropertyListPayload(DataOutput buffer) throws IOException;
-
- /**
- * Populates the properties from buffer.
- * @param buffer The buffer to read from.
- * @param propertyFlags he property flags.
- * @throws AMQFrameDecodingException when the buffer does not contain valid data
- */
- void populatePropertiesFromBuffer(DataInput buffer, int propertyFlags, int size)
- throws AMQFrameDecodingException, IOException;
-
- /**
- * @return the size of the encoded property list in bytes.
- */
- int getPropertyListSize();
-
- /**
- * Gets the property flags. Property flags indicate which properties are set in the list. The
- * position and meaning of each flag is defined in the protocol specification for the particular
- * content type with which these properties are associated.
- * @return flags
- */
- int getPropertyFlags();
-
-}
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/framing/ContentHeaderPropertiesFactory.java b/qpid/java/common/src/main/java/org/apache/qpid/framing/ContentHeaderPropertiesFactory.java
index ff97c0b28f..55961db06b 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/framing/ContentHeaderPropertiesFactory.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/framing/ContentHeaderPropertiesFactory.java
@@ -38,11 +38,11 @@ public class ContentHeaderPropertiesFactory
{
}
- public ContentHeaderProperties createContentHeaderProperties(int classId, int propertyFlags,
+ public BasicContentHeaderProperties createContentHeaderProperties(int classId, int propertyFlags,
DataInput buffer, int size)
throws AMQFrameDecodingException, IOException
{
- ContentHeaderProperties properties;
+ BasicContentHeaderProperties properties;
// AMQP version change: "Hardwired" version to major=8, minor=0
// TODO: Change so that the actual version is obtained from
// the ProtocolInitiation object for this session.
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/framing/abstraction/ContentChunk.java b/qpid/java/common/src/main/java/org/apache/qpid/framing/abstraction/ContentChunk.java
deleted file mode 100644
index 470b7b05e3..0000000000
--- a/qpid/java/common/src/main/java/org/apache/qpid/framing/abstraction/ContentChunk.java
+++ /dev/null
@@ -1,30 +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.framing.abstraction;
-
-public interface ContentChunk
-{
- int getSize();
- byte[] getData();
-
- void reduceToFit();
-}
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/framing/abstraction/MessagePublishInfoConverter.java b/qpid/java/common/src/main/java/org/apache/qpid/framing/abstraction/MessagePublishInfoConverter.java
deleted file mode 100644
index 01d1a8a17b..0000000000
--- a/qpid/java/common/src/main/java/org/apache/qpid/framing/abstraction/MessagePublishInfoConverter.java
+++ /dev/null
@@ -1,32 +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.framing.abstraction;
-
-import org.apache.qpid.framing.AMQMethodBody;
-
-
-public interface MessagePublishInfoConverter
-{
- public MessagePublishInfo convertToInfo(AMQMethodBody body);
- public AMQMethodBody convertToBody(MessagePublishInfo info);
-
-}
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/framing/abstraction/ProtocolVersionMethodConverter.java b/qpid/java/common/src/main/java/org/apache/qpid/framing/abstraction/ProtocolVersionMethodConverter.java
index d1e53d6907..b3897771c5 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/framing/abstraction/ProtocolVersionMethodConverter.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/framing/abstraction/ProtocolVersionMethodConverter.java
@@ -21,14 +21,10 @@
package org.apache.qpid.framing.abstraction;
-import org.apache.qpid.framing.AMQBody;
+import org.apache.qpid.framing.AMQMethodBody;
-public interface ProtocolVersionMethodConverter extends MessagePublishInfoConverter
+public interface ProtocolVersionMethodConverter
{
- AMQBody convertToBody(ContentChunk contentBody);
- ContentChunk convertToContentChunk(AMQBody body);
-
- void configure();
-
- AMQBody convertToBody(byte[] input);
+ public MessagePublishInfo convertToInfo(AMQMethodBody body);
+ public AMQMethodBody convertToBody(MessagePublishInfo info);
}
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/framing/amqp_0_9/MethodConverter_0_9.java b/qpid/java/common/src/main/java/org/apache/qpid/framing/amqp_0_9/MethodConverter_0_9.java
index b3eb1211a5..6456eacab1 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/framing/amqp_0_9/MethodConverter_0_9.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/framing/amqp_0_9/MethodConverter_0_9.java
@@ -21,13 +21,10 @@
package org.apache.qpid.framing.amqp_0_9;
-import org.apache.qpid.framing.AMQBody;
import org.apache.qpid.framing.AMQMethodBody;
import org.apache.qpid.framing.AMQShortString;
import org.apache.qpid.framing.BasicPublishBody;
-import org.apache.qpid.framing.ContentBody;
import org.apache.qpid.framing.abstraction.AbstractMethodConverter;
-import org.apache.qpid.framing.abstraction.ContentChunk;
import org.apache.qpid.framing.abstraction.MessagePublishInfo;
import org.apache.qpid.framing.abstraction.MessagePublishInfoImpl;
import org.apache.qpid.framing.abstraction.ProtocolVersionMethodConverter;
@@ -35,48 +32,12 @@ import org.apache.qpid.framing.abstraction.ProtocolVersionMethodConverter;
public class MethodConverter_0_9 extends AbstractMethodConverter implements ProtocolVersionMethodConverter
{
- private int _basicPublishClassId;
- private int _basicPublishMethodId;
public MethodConverter_0_9()
{
super((byte)0,(byte)9);
-
-
- }
-
- public AMQBody convertToBody(ContentChunk contentChunk)
- {
- if(contentChunk instanceof ContentChunk_0_9)
- {
- return ((ContentChunk_0_9)contentChunk).toBody();
- }
- else
- {
- return new ContentBody(contentChunk.getData());
- }
- }
-
- public ContentChunk convertToContentChunk(AMQBody body)
- {
- final ContentBody contentBodyChunk = (ContentBody) body;
-
- return new ContentChunk_0_9(contentBodyChunk);
-
- }
-
- public void configure()
- {
-
- _basicPublishClassId = org.apache.qpid.framing.amqp_0_9.BasicPublishBodyImpl.CLASS_ID;
- _basicPublishMethodId = BasicPublishBodyImpl.METHOD_ID;
-
}
- public AMQBody convertToBody(byte[] data)
- {
- return new ContentBody(data);
- }
public MessagePublishInfo convertToInfo(AMQMethodBody methodBody)
{
@@ -103,33 +64,4 @@ public class MethodConverter_0_9 extends AbstractMethodConverter implements Prot
}
- private static class ContentChunk_0_9 implements ContentChunk
- {
- private final ContentBody _contentBodyChunk;
-
- public ContentChunk_0_9(final ContentBody contentBodyChunk)
- {
- _contentBodyChunk = contentBodyChunk;
- }
-
- public int getSize()
- {
- return _contentBodyChunk.getSize();
- }
-
- public byte[] getData()
- {
- return _contentBodyChunk.getPayload();
- }
-
- public void reduceToFit()
- {
- _contentBodyChunk.reduceBufferToFit();
- }
-
- public AMQBody toBody()
- {
- return _contentBodyChunk;
- }
- }
}
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/framing/amqp_0_91/MethodConverter_0_91.java b/qpid/java/common/src/main/java/org/apache/qpid/framing/amqp_0_91/MethodConverter_0_91.java
index d33749d795..e25dc8a022 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/framing/amqp_0_91/MethodConverter_0_91.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/framing/amqp_0_91/MethodConverter_0_91.java
@@ -21,61 +21,22 @@
package org.apache.qpid.framing.amqp_0_91;
-import org.apache.qpid.framing.AMQBody;
import org.apache.qpid.framing.AMQMethodBody;
import org.apache.qpid.framing.AMQShortString;
import org.apache.qpid.framing.BasicPublishBody;
-import org.apache.qpid.framing.ContentBody;
import org.apache.qpid.framing.abstraction.AbstractMethodConverter;
-import org.apache.qpid.framing.abstraction.ContentChunk;
import org.apache.qpid.framing.abstraction.MessagePublishInfo;
import org.apache.qpid.framing.abstraction.MessagePublishInfoImpl;
import org.apache.qpid.framing.abstraction.ProtocolVersionMethodConverter;
public class MethodConverter_0_91 extends AbstractMethodConverter implements ProtocolVersionMethodConverter
{
- private int _basicPublishClassId;
- private int _basicPublishMethodId;
public MethodConverter_0_91()
{
super((byte)0,(byte)9);
-
-
- }
-
- public AMQBody convertToBody(ContentChunk contentChunk)
- {
- if(contentChunk instanceof ContentChunk_0_9)
- {
- return ((ContentChunk_0_9)contentChunk).toBody();
- }
- else
- {
- return new ContentBody(contentChunk.getData());
- }
- }
-
- public ContentChunk convertToContentChunk(AMQBody body)
- {
- final ContentBody contentBodyChunk = (ContentBody) body;
-
- return new ContentChunk_0_9(contentBodyChunk);
-
- }
-
- public void configure()
- {
-
- _basicPublishClassId = BasicPublishBodyImpl.CLASS_ID;
- _basicPublishMethodId = BasicPublishBodyImpl.METHOD_ID;
-
}
- public AMQBody convertToBody(byte[] data)
- {
- return new ContentBody(data);
- }
public MessagePublishInfo convertToInfo(AMQMethodBody methodBody)
{
@@ -102,33 +63,4 @@ public class MethodConverter_0_91 extends AbstractMethodConverter implements Pro
}
- private static class ContentChunk_0_9 implements ContentChunk
- {
- private final ContentBody _contentBodyChunk;
-
- public ContentChunk_0_9(final ContentBody contentBodyChunk)
- {
- _contentBodyChunk = contentBodyChunk;
- }
-
- public int getSize()
- {
- return _contentBodyChunk.getSize();
- }
-
- public byte[] getData()
- {
- return _contentBodyChunk.getPayload();
- }
-
- public void reduceToFit()
- {
- _contentBodyChunk.reduceBufferToFit();
- }
-
- public AMQBody toBody()
- {
- return _contentBodyChunk;
- }
- }
} \ No newline at end of file
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/framing/amqp_8_0/MethodConverter_8_0.java b/qpid/java/common/src/main/java/org/apache/qpid/framing/amqp_8_0/MethodConverter_8_0.java
index 575816db4f..5e50c2b3fb 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/framing/amqp_8_0/MethodConverter_8_0.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/framing/amqp_8_0/MethodConverter_8_0.java
@@ -21,71 +21,21 @@
package org.apache.qpid.framing.amqp_8_0;
-import org.apache.qpid.framing.AMQBody;
import org.apache.qpid.framing.AMQMethodBody;
import org.apache.qpid.framing.AMQShortString;
import org.apache.qpid.framing.BasicPublishBody;
-import org.apache.qpid.framing.ContentBody;
import org.apache.qpid.framing.abstraction.AbstractMethodConverter;
-import org.apache.qpid.framing.abstraction.ContentChunk;
import org.apache.qpid.framing.abstraction.MessagePublishInfo;
import org.apache.qpid.framing.abstraction.MessagePublishInfoImpl;
import org.apache.qpid.framing.abstraction.ProtocolVersionMethodConverter;
public class MethodConverter_8_0 extends AbstractMethodConverter implements ProtocolVersionMethodConverter
{
- private int _basicPublishClassId;
- private int _basicPublishMethodId;
-
public MethodConverter_8_0()
{
super((byte)8,(byte)0);
-
-
- }
-
- public AMQBody convertToBody(ContentChunk contentChunk)
- {
- return new ContentBody(contentChunk.getData());
}
- public ContentChunk convertToContentChunk(AMQBody body)
- {
- final ContentBody contentBodyChunk = (ContentBody) body;
-
- return new ContentChunk()
- {
-
- public int getSize()
- {
- return contentBodyChunk.getSize();
- }
-
- public byte[] getData()
- {
- return contentBodyChunk.getPayload();
- }
-
- public void reduceToFit()
- {
- contentBodyChunk.reduceBufferToFit();
- }
- };
-
- }
-
- public void configure()
- {
-
- _basicPublishClassId = BasicPublishBodyImpl.CLASS_ID;
- _basicPublishMethodId = BasicPublishBodyImpl.METHOD_ID;
-
- }
-
- public AMQBody convertToBody(byte[] data)
- {
- return new ContentBody(data);
- }
public MessagePublishInfo convertToInfo(AMQMethodBody methodBody)
{
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/properties/ConnectionStartProperties.java b/qpid/java/common/src/main/java/org/apache/qpid/properties/ConnectionStartProperties.java
index 6f9d872f98..b2bcc1836e 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/properties/ConnectionStartProperties.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/properties/ConnectionStartProperties.java
@@ -24,6 +24,7 @@ import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import org.apache.qpid.transport.util.Logger;
+import org.apache.qpid.util.SystemUtils;
/**
* Constants for the various properties clients can
@@ -88,11 +89,11 @@ public class ConnectionStartProperties
fullSystemInfo.append(", ");
fullSystemInfo.append(System.getProperty("java.vendor"));
fullSystemInfo.append(", ");
- fullSystemInfo.append(System.getProperty("os.arch"));
+ fullSystemInfo.append(SystemUtils.getOSArch());
fullSystemInfo.append(", ");
- fullSystemInfo.append(System.getProperty("os.name"));
+ fullSystemInfo.append(SystemUtils.getOSName());
fullSystemInfo.append(", ");
- fullSystemInfo.append(System.getProperty("os.version"));
+ fullSystemInfo.append(SystemUtils.getOSVersion());
fullSystemInfo.append(", ");
fullSystemInfo.append(System.getProperty("sun.os.patch.level"));
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/transport/ClientDelegate.java b/qpid/java/common/src/main/java/org/apache/qpid/transport/ClientDelegate.java
index 75eb0e19a7..d48cd1754c 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/transport/ClientDelegate.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/transport/ClientDelegate.java
@@ -143,6 +143,8 @@ public class ClientDelegate extends ConnectionDelegate
actualHeartbeatInterval);
int idleTimeout = (int)(actualHeartbeatInterval * 1000 * heartbeatTimeoutFactor);
+ conn.getNetworkConnection().setMaxReadIdle((int)(actualHeartbeatInterval*heartbeatTimeoutFactor));
+ conn.getNetworkConnection().setMaxWriteIdle(actualHeartbeatInterval);
conn.setIdleTimeout(idleTimeout);
int channelMax = tune.getChannelMax();
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java b/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java
index cdca726148..3547205df1 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/transport/Connection.java
@@ -70,6 +70,7 @@ public class Connection extends ConnectionInvoker
public static final int MIN_USABLE_CHANNEL_NUM = 0;
private long _lastSendTime;
private long _lastReadTime;
+ private NetworkConnection _networkConnection;
public enum State { NEW, CLOSED, OPENING, OPEN, CLOSING, CLOSE_RCVD, RESUMING }
@@ -229,12 +230,13 @@ public class Connection extends ConnectionInvoker
addConnectionListener((ConnectionListener)secureReceiver);
}
- NetworkConnection network = transport.connect(settings, secureReceiver, new ConnectionActivity());
+ _networkConnection = transport.connect(settings, secureReceiver, new ConnectionActivity());
- setRemoteAddress(network.getRemoteAddress());
- setLocalAddress(network.getLocalAddress());
- final Sender<ByteBuffer> secureSender = securityLayer.sender(network.getSender());
+ setRemoteAddress(_networkConnection.getRemoteAddress());
+ setLocalAddress(_networkConnection.getLocalAddress());
+
+ final Sender<ByteBuffer> secureSender = securityLayer.sender(_networkConnection.getSender());
if(secureSender instanceof ConnectionListener)
{
addConnectionListener((ConnectionListener)secureSender);
@@ -785,14 +787,26 @@ public class Connection extends ConnectionInvoker
@Override
public void writerIdle()
{
+ getConnectionDelegate().writerIdle(Connection.this);
connectionHeartbeat();
}
@Override
public void readerIdle()
{
- // TODO
-
+ log.error("Closing connection as no heartbeat or other activity detected within specified interval");
+ _networkConnection.close();
}
}
+
+
+ public void setNetworkConnection(NetworkConnection network)
+ {
+ _networkConnection = network;
+ }
+
+ public NetworkConnection getNetworkConnection()
+ {
+ return _networkConnection;
+ }
}
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/transport/ConnectionDelegate.java b/qpid/java/common/src/main/java/org/apache/qpid/transport/ConnectionDelegate.java
index fdd35d49ef..b3379890f3 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/transport/ConnectionDelegate.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/transport/ConnectionDelegate.java
@@ -105,4 +105,9 @@ public abstract class ConnectionDelegate
ssn.closed();
}
}
+
+ public void writerIdle(final Connection connection)
+ {
+ connection.doHeartBeat();
+ }
}
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoReceiver.java b/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoReceiver.java
index 06a43e21c6..0ab195ced8 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoReceiver.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoReceiver.java
@@ -26,6 +26,7 @@ import org.apache.qpid.transport.Receiver;
import org.apache.qpid.transport.TransportException;
import org.apache.qpid.transport.network.Ticker;
import org.apache.qpid.transport.util.Logger;
+import org.apache.qpid.util.SystemUtils;
import javax.net.ssl.SSLSocket;
import java.io.IOException;
@@ -57,8 +58,7 @@ final class IoReceiver implements Runnable, Closeable
private Ticker _ticker;
static
{
- String osName = System.getProperty("os.name");
- shutdownBroken = osName == null ? false : osName.matches("(?i).*windows.*");
+ shutdownBroken = SystemUtils.isWindows();
}
public IoReceiver(Socket socket, Receiver<ByteBuffer> receiver, int bufferSize, long timeout)
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoSender.java b/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoSender.java
index 17400cca8b..56a4b28978 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoSender.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/transport/network/io/IoSender.java
@@ -143,7 +143,7 @@ public final class IoSender implements Runnable, Sender<ByteBuffer>
{
// pass
}
- elapsed += System.currentTimeMillis() - start;
+ elapsed = System.currentTimeMillis() - start;
}
checkNotAlreadyClosed();
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/url/BindingURLParser.java b/qpid/java/common/src/main/java/org/apache/qpid/url/BindingURLParser.java
index ee823978b4..8e93a907d6 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/url/BindingURLParser.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/url/BindingURLParser.java
@@ -443,17 +443,17 @@ public class BindingURLParser
for (String url: urls)
{
- System.out.println("URL " + url);
+ _logger.info("URL " + url);
AMQBindingURL bindingURL = new AMQBindingURL(url);
parser.parse(url,bindingURL);
- System.out.println("\nX " + bindingURL.toString() + " \n");
+ _logger.info("\nX " + bindingURL.toString() + " \n");
}
}
catch(Exception e)
{
- e.printStackTrace();
+ _logger.error("Error with binding urls", e);
}
}
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/util/FileUtils.java b/qpid/java/common/src/main/java/org/apache/qpid/util/FileUtils.java
index 7362099070..f48103c650 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/util/FileUtils.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/util/FileUtils.java
@@ -129,7 +129,6 @@ public class FileUtils
StringBuffer inBuffer = new StringBuffer();
- String line;
int read;
while ((read = is.read(data)) != -1)
@@ -157,6 +156,7 @@ public class FileUtils
*
* @return An input stream for the file or resource, or null if one could not be opened.
*/
+ @SuppressWarnings("resource")
public static InputStream openFileOrDefaultResource(String filename, String defaultResource, ClassLoader cl)
{
InputStream is = null;
@@ -173,7 +173,6 @@ public class FileUtils
{
is = null;
}
-
if (is == null)
{
// failed on filesystem, so try on classpath
@@ -332,6 +331,8 @@ public class FileUtils
public static class UnableToCopyException extends Exception
{
+ private static final long serialVersionUID = 956249157141857044L;
+
UnableToCopyException(String msg)
{
super(msg);
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/util/SystemUtils.java b/qpid/java/common/src/main/java/org/apache/qpid/util/SystemUtils.java
new file mode 100644
index 0000000000..55c7ae9b96
--- /dev/null
+++ b/qpid/java/common/src/main/java/org/apache/qpid/util/SystemUtils.java
@@ -0,0 +1,81 @@
+/*
+ *
+ * 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.util;
+
+/**
+ * SystemUtils provides some simple helper methods for working with the current
+ * Operating System.
+ *
+ * It follows the convention of wrapping all checked exceptions as runtimes, so
+ * code using these methods is free of try-catch blocks but does not expect to
+ * recover from errors.
+ */
+public class SystemUtils
+{
+
+ public static final String UNKNOWN_OS = "unknown";
+ public static final String UNKNOWN_VERSION = "na";
+ public static final String UNKNOWN_ARCH = "unknown";
+
+ private static final String _osName = System.getProperty("os.name", UNKNOWN_OS);
+ private static final String _osVersion = System.getProperty("os.version", UNKNOWN_VERSION);
+ private static final String _osArch = System.getProperty("os.arch", UNKNOWN_ARCH);
+
+ private static final boolean _isWindows = _osName.toLowerCase().contains("windows");
+
+ private SystemUtils()
+ {
+ }
+
+ public final static String getOSName()
+ {
+ return _osName;
+ }
+
+ public final static String getOSVersion()
+ {
+ return _osVersion;
+ }
+
+ public final static String getOSArch()
+ {
+ return _osArch;
+ }
+
+ public final static boolean isWindows()
+ {
+ return _isWindows;
+ }
+
+ public final static String getOSConfigSuffix()
+ {
+ if (_osName.contains(" "))
+ {
+ return _osName.substring(0, _osName.indexOf(' ')).toLowerCase();
+ }
+ return _osName;
+ }
+
+ public final static String getOSString()
+ {
+ return _osName + " " + _osVersion + " " + _osArch;
+ }
+}
diff --git a/qpid/java/common/src/test/java/org/apache/qpid/transport/ConnectionTest.java b/qpid/java/common/src/test/java/org/apache/qpid/transport/ConnectionTest.java
index 12bbd20228..46d1887496 100644
--- a/qpid/java/common/src/test/java/org/apache/qpid/transport/ConnectionTest.java
+++ b/qpid/java/common/src/test/java/org/apache/qpid/transport/ConnectionTest.java
@@ -20,6 +20,7 @@
*/
package org.apache.qpid.transport;
+import org.apache.log4j.Logger;
import org.apache.qpid.test.utils.QpidTestCase;
import org.apache.qpid.transport.network.ConnectionBinding;
import org.apache.qpid.transport.network.io.IoAcceptor;
@@ -41,6 +42,7 @@ import java.util.concurrent.TimeUnit;
*/
public class ConnectionTest extends QpidTestCase implements SessionListener
{
+ private static final Logger _logger = Logger.getLogger(ConnectionTest.class);
private int port;
private volatile boolean queue = false;
private List<MessageTransfer> messages = new ArrayList<MessageTransfer>();
@@ -155,7 +157,6 @@ public class ConnectionTest extends QpidTestCase implements SessionListener
{
final Connection conn = new Connection();
conn.setConnectionDelegate(new ClientDelegate(new ConnectionSettings()));
-
conn.addConnectionListener(new ConnectionListener()
{
public void opened(Connection conn) {}
@@ -240,7 +241,6 @@ public class ConnectionTest extends QpidTestCase implements SessionListener
}
catch (IOException e)
{
- e.printStackTrace();
fail("Unable to start Server for test due to:" + e.getMessage());
}
@@ -349,7 +349,10 @@ public class ConnectionTest extends QpidTestCase implements SessionListener
Thread.sleep(6000);
send(ssn, "SINK 3");
ssn.sync();
- System.out.println(messages);
+ if (_logger.isDebugEnabled())
+ {
+ _logger.debug(messages);
+ }
assertEquals(1, messages.size());
assertEquals("SINK 3", messages.get(0).getBodyString());
}
diff --git a/qpid/java/common/src/test/java/org/apache/qpid/transport/network/io/IoAcceptor.java b/qpid/java/common/src/test/java/org/apache/qpid/transport/network/io/IoAcceptor.java
index 641bc5fa34..bb864cd434 100644
--- a/qpid/java/common/src/test/java/org/apache/qpid/transport/network/io/IoAcceptor.java
+++ b/qpid/java/common/src/test/java/org/apache/qpid/transport/network/io/IoAcceptor.java
@@ -20,6 +20,7 @@
*/
package org.apache.qpid.transport.network.io;
+import org.apache.log4j.Logger;
import org.apache.qpid.transport.Binding;
import org.apache.qpid.transport.TransportException;
@@ -38,7 +39,9 @@ import java.nio.ByteBuffer;
public class IoAcceptor<E> extends Thread
{
+ private static final Logger _logger = Logger.getLogger(IoAcceptor.class);
+ private volatile boolean _closed = false;
private ServerSocket socket;
private Binding<E,ByteBuffer> binding;
@@ -59,6 +62,8 @@ public class IoAcceptor<E> extends Thread
*/
public void close() throws IOException
{
+ _closed = true;
+
if (!socket.isClosed())
{
socket.close();
@@ -73,7 +78,7 @@ public class IoAcceptor<E> extends Thread
public void run()
{
- while (true)
+ while (!_closed)
{
try
{
@@ -82,9 +87,36 @@ public class IoAcceptor<E> extends Thread
}
catch (IOException e)
{
- throw new TransportException(e);
+ if (!_closed)
+ {
+ _logger.error("Error in IoAcceptor thread", e);
+ closeSocketIfNecessary(socket);
+ try
+ {
+ Thread.sleep(1000);
+ }
+ catch (InterruptedException ie)
+ {
+ _logger.debug("Stopping io acceptor due to interrupt request");
+ _closed = true;
+ }
+ }
}
}
}
+ private void closeSocketIfNecessary(final ServerSocket socket)
+ {
+ if(socket != null)
+ {
+ try
+ {
+ socket.close();
+ }
+ catch (IOException e)
+ {
+ _logger.debug("Exception while closing socket", e);
+ }
+ }
+ }
}
diff --git a/qpid/java/ivy.nexus.xml b/qpid/java/ivy.nexus.xml
index ee0ec27d48..e301bcb0cf 100644
--- a/qpid/java/ivy.nexus.xml
+++ b/qpid/java/ivy.nexus.xml
@@ -117,6 +117,12 @@
<artifact name="qpid-broker-plugins-jdbc-provider-bone" type="jar.asc" ext="jar.asc"/>
<artifact name="qpid-broker-plugins-jdbc-provider-bone" type="source" ext="jar" e:classifier="sources"/>
<artifact name="qpid-broker-plugins-jdbc-provider-bone" type="source.asc" ext="jar.asc" e:classifier="sources"/>
+ <artifact name="qpid-broker-plugins-websocket" type="pom" ext="pom"/>
+ <artifact name="qpid-broker-plugins-websocket" type="pom.asc" ext="pom.asc"/>
+ <artifact name="qpid-broker-plugins-websocket" type="jar" ext="jar"/>
+ <artifact name="qpid-broker-plugins-websocket" type="jar.asc" ext="jar.asc"/>
+ <artifact name="qpid-broker-plugins-websocket" type="source" ext="jar" e:classifier="sources"/>
+ <artifact name="qpid-broker-plugins-websocket" type="source.asc" ext="jar.asc" e:classifier="sources"/>
<artifact name="qpid-amqp-1-0-common" type="pom" ext="pom"/>
<artifact name="qpid-amqp-1-0-common" type="pom.asc" ext="pom.asc"/>
<artifact name="qpid-amqp-1-0-common" type="jar" ext="jar"/>
diff --git a/qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/client/QpidTestClient.java b/qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/client/QpidTestClient.java
index a5a33e36ec..f21b8ea07d 100644
--- a/qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/client/QpidTestClient.java
+++ b/qpid/java/jca/example/src/main/java/org/apache/qpid/jca/example/client/QpidTestClient.java
@@ -120,8 +120,7 @@ public class QpidTestClient
}
catch(Exception e)
{
- e.printStackTrace();
- _log.error(e.getMessage());
+ _log.error(e.getMessage(),e);
}
finally
{
diff --git a/qpid/java/jca/pom.xml b/qpid/java/jca/pom.xml
index 467175db90..859b8aabac 100644
--- a/qpid/java/jca/pom.xml
+++ b/qpid/java/jca/pom.xml
@@ -34,6 +34,13 @@
</dependency>
<dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>${slf4j-version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-j2ee-connector_1.5_spec</artifactId>
<version>2.0.0</version>
@@ -104,6 +111,14 @@
</exclusion>
</exclusions>
</dependency>
+
+ <!-- test dependencies -->
+ <dependency>
+ <groupId>org.apache.qpid</groupId>
+ <artifactId>qpid-test-utils</artifactId>
+ <version>0.26-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
diff --git a/qpid/java/jca/rar/pom.xml b/qpid/java/jca/rar/pom.xml
index 192f34255d..fca35dba14 100644
--- a/qpid/java/jca/rar/pom.xml
+++ b/qpid/java/jca/rar/pom.xml
@@ -24,7 +24,7 @@
</parent>
<modelVersion>4.0.0</modelVersion>
- <artifactId>qpid-rar</artifactId>
+ <artifactId>qpid-ra</artifactId>
<packaging>rar</packaging>
<dependencies>
diff --git a/qpid/java/perftests/pom.xml b/qpid/java/perftests/pom.xml
index 25d0cce626..2a1dbd4350 100644
--- a/qpid/java/perftests/pom.xml
+++ b/qpid/java/perftests/pom.xml
@@ -26,10 +26,10 @@
<artifactId>qpid-perftests</artifactId>
<properties>
- <broker.home.dir>target/qpid-broker/${project.version}</broker.home.dir>
+ <broker.home.dir>target${file.separator}qpid-broker${file.separator}${project.version}</broker.home.dir>
<!-- test properties -->
- <qpid.home>${basedir}/${broker.home.dir}</qpid.home>
- <qpid.home.qbtc.output>${qpid.home}/qbtc-output</qpid.home.qbtc.output>
+ <qpid.home>${basedir}${file.separator}${broker.home.dir}</qpid.home>
+ <qpid.home.qbtc.output>${qpid.home}${file.separator}qbtc-output</qpid.home.qbtc.output>
</properties>
<dependencies>
@@ -42,34 +42,26 @@
</dependency>
<dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-jms_1.1_spec</artifactId>
- <version>1.0</version>
- <scope>provided</scope>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>${log4j-version}</version>
+ <scope>compile</scope>
</dependency>
- <!-- logging deps -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
- <version>1.6.4</version>
+ <version>${slf4j-version}</version>
<scope>compile</scope>
</dependency>
<dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <version>1.6.4</version>
- <scope>compile</scope>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-jms_1.1_spec</artifactId>
+ <version>1.0</version>
+ <scope>provided</scope>
</dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>1.2.16</version>
- <scope>compile</scope>
- </dependency>
-
<!-- other deps -->
<dependency>
<groupId>commons-lang</groupId>
@@ -262,6 +254,9 @@
<excludes>
<exclude>**/org/apache/qpid/systest/**/*.java</exclude>
</excludes>
+ <systemPropertyVariables>
+ <log4j.configuration.file>${project.basedir}${file.separator}..${file.separator}test-profiles${file.separator}log4j-test.xml</log4j.configuration.file>
+ </systemPropertyVariables>
</configuration>
<executions>
<execution>
diff --git a/qpid/java/perftests/visualisation-jfc/pom.xml b/qpid/java/perftests/visualisation-jfc/pom.xml
index da84df1d2e..d677491a03 100644
--- a/qpid/java/perftests/visualisation-jfc/pom.xml
+++ b/qpid/java/perftests/visualisation-jfc/pom.xml
@@ -37,7 +37,7 @@
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
- <version>1.6.4</version>
+ <version>${slf4j-version}</version>
<scope>compile</scope>
</dependency>
diff --git a/qpid/java/perftests/visualisation-jfc/src/test/java/org/apache/qpid/disttest/charting/chartbuilder/ChartProductionTest.java b/qpid/java/perftests/visualisation-jfc/src/test/java/org/apache/qpid/disttest/charting/chartbuilder/ChartProductionTest.java
index 7af3a6b35e..024af6dd57 100644
--- a/qpid/java/perftests/visualisation-jfc/src/test/java/org/apache/qpid/disttest/charting/chartbuilder/ChartProductionTest.java
+++ b/qpid/java/perftests/visualisation-jfc/src/test/java/org/apache/qpid/disttest/charting/chartbuilder/ChartProductionTest.java
@@ -28,6 +28,7 @@ import java.util.Date;
import java.util.Iterator;
import java.util.List;
+import org.apache.log4j.Logger;
import org.apache.qpid.disttest.charting.ChartType;
import org.apache.qpid.disttest.charting.definition.ChartingDefinition;
import org.apache.qpid.disttest.charting.definition.SeriesDefinition;
@@ -49,6 +50,7 @@ import org.jfree.data.general.Dataset;
*/
public class ChartProductionTest extends QpidTestCase
{
+ private static final Logger _logger = Logger.getLogger(ChartProductionTest.class);
private static final String TEST_CHARTTITLE = "TEST_CHARTTITLE";
private static final String TEST_CHARTSUBTITLE = "TEST_CHARTSUBTITLE";
private static final String TEST_XAXIS = "TEST_XAXIS";
@@ -95,7 +97,7 @@ public class ChartProductionTest extends QpidTestCase
}
else
{
- System.out.println("Charting directory for manual observation " + chartDir);
+ _logger.info("Charting directory for manual observation " + chartDir);
}
_writer.setOutputDirectory(chartDir);
diff --git a/qpid/java/pom.xml b/qpid/java/pom.xml
index 1b313b3514..c8875fb39b 100644
--- a/qpid/java/pom.xml
+++ b/qpid/java/pom.xml
@@ -29,12 +29,10 @@
<packaging>pom</packaging>
<!-- ###### TODO ######
- - Fix the jca/rar pom module name, it should be qpid-ra not qpid-rar.
- Add the Excludes files, log4j config, etc test resources to a module (qpid-test-utils?) which can be
used (extracted?) by the others to prevent them having to reference outside their directly for the files.
- - Fix what the systests/perftests do to copy the test-profiles dir to the necessary location.
- - Fix the log4j configuration property to work with all the modules, resolve the currently generated log4j exceptions during test runs.
- - Add project details such as Website, Mailing List, SCM.
+ - Fix what the systests/perftests do to copy the test-profiles dir to the necessary location.
+ - Fix the log4j configuration property to work with all the modules.
- Fix the version numbers in all the modules.
- Decide on a final name for this parent module, qpid-project isnt necessarily appropriate given it doesnt encompass the whole project.
- Test deploying the modules to a local Nexus instance (by overriding the repo properties locally).
@@ -59,6 +57,9 @@
- Remove the QBTC output file mechanics, rely on Surefire to do it?
- JUnit test profiles instead of Exludes files?
-->
+ <prerequisites>
+ <maven>3.0.0</maven>
+ </prerequisites>
<properties>
<!-- dependency version numbers -->
@@ -67,6 +68,8 @@
<!-- test dependency version numbers -->
<junit-version>3.8.1</junit-version>
<mockito-version>1.9.0</mockito-version>
+ <log4j-version>1.2.16</log4j-version>
+ <slf4j-version>1.6.4</slf4j-version>
<!-- plugin version numbers -->
<maven-antrun-plugin-version>1.7</maven-antrun-plugin-version>
@@ -102,13 +105,12 @@
<java.target>1.6</java.target>
<!-- enforcer plugin config properties -->
- <supported-maven-version-range>[3.0.0,)</supported-maven-version-range>
<supported-test-profiles-regex>(java-mms.0-9-1|java-mms.0-10)</supported-test-profiles-regex>
<!-- test properties -->
<qpid.home>${basedir}</qpid.home> <!-- override for broker tests -->
- <qpid.home.qbtc.output>${qpid.home}/target/qbtc-output</qpid.home.qbtc.output> <!-- override for broker tests -->
- <qpid.work>${project.build.directory}/QPID_WORK</qpid.work>
+ <qpid.home.qbtc.output>${qpid.home}${file.separator}target${file.separator}qbtc-output</qpid.home.qbtc.output> <!-- override for broker tests -->
+ <qpid.work>${project.build.directory}${file.separator}QPID_WORK</qpid.work>
<profile.excludes.java-mms.0-10>JavaTransientExcludes Java010Excludes</profile.excludes.java-mms.0-10>
<broker.version.java-mms.0-10>v0_10</broker.version.java-mms.0-10>
@@ -132,6 +134,27 @@
<version>${mockito-version}</version>
<scope>test</scope>
</dependency>
+
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>${log4j-version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>${slf4j-version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <version>${slf4j-version}</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<modules>
@@ -409,7 +432,7 @@
<java.naming.factory.initial>org.apache.qpid.jndi.PropertiesFileInitialContextFactory</java.naming.factory.initial>
<java.naming.provider.url>test-profiles${file.separator}test-provider.properties</java.naming.provider.url>
- <broker.config>${qpid.home}/etc/config-systests.json</broker.config>
+ <broker.config>${qpid.home}${file.separator}etc${file.separator}config-systests.json</broker.config>
<messagestore.class.name>org.apache.qpid.server.store.MemoryMessageStore</messagestore.class.name>
<broker.protocol.excludes></broker.protocol.excludes>
<broker.persistent>false</broker.persistent>
@@ -422,8 +445,8 @@
<amqj.protocol.logging.level>debug</amqj.protocol.logging.level>
<root.logging.level>warn</root.logging.level>
- <log4j.configuration.file>test-profiles${file.separator}log4j-test.xml</log4j.configuration.file>
- <log4j.configuration>file://${basedir}${file.separator}..${file.separator}test-profiles${file.separator}log4j-test.xml</log4j.configuration>
+ <log4j.configuration.file>${project.basedir}${file.separator}test-profiles${file.separator}log4j-test.xml</log4j.configuration.file>
+ <log4j.configuration>log4j-test.xml</log4j.configuration>
<log4j.debug>false</log4j.debug>
@@ -450,13 +473,13 @@
<broker.version>${broker.version.java-mms.0-10}</broker.version>
<qpid.broker_default_amqp_protocol_excludes>${qpid.broker_default_amqp_protocol_excludes.java-mms.0-10}</qpid.broker_default_amqp_protocol_excludes>
<broker.stopped>Exception</broker.stopped>
- <broker.command>${qpid.home}/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE</broker.command>
+ <broker.command>${qpid.home}${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE</broker.command>
+ <broker.command.windows>${qpid.home}${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE</broker.command.windows>
<broker.ready>BRK-1004</broker.ready>
<profile>${profile}</profile>
- <!-- This must be a child of qpid home currently
- due to the horrible mechanics of QBTC -->
+ <!-- This must be a child of qpid home currently due to the horrible mechanics of QBTC -->
<test.output>${qpid.home.qbtc.output}</test.output>
</systemPropertyVariables>
</configuration>
@@ -474,9 +497,6 @@
</goals>
<configuration>
<rules>
- <requireMavenVersion>
- <version>${supported-maven-version-range}</version>
- </requireMavenVersion>
<requireProperty>
<property>profile</property>
<message>You must set a test profile!</message>
@@ -497,6 +517,41 @@
</plugins>
</build>
+ <description>
+ Apache Qpidâ„¢ makes messaging tools that speak AMQP and support many languages and platforms.
+ AMQP is an open internet protocol for reliably sending and receiving messages. It makes it possible for everyone to build a diverse, coherent messaging ecosystem.
+ </description>
+
+ <url>http://qpid.apache.org</url>
+
+ <issueManagement>
+ <system>JIRA</system>
+ <url>https://issues.apache.org/jira/browse/QPID</url>
+ </issueManagement>
+
+ <mailingLists>
+ <mailingList>
+ <name>Apache Qpid Users</name>
+ <subscribe>users-subscribe@qpid.apache.org</subscribe>
+ <unsubscribe>users-unsubscribe@qpid.apache.org</unsubscribe>
+ <post>users@qpid.apache.org</post>
+ <archive>http://mail-archives.apache.org/mod_mbox/qpid-users/</archive>
+ </mailingList>
+ <mailingList>
+ <name>Apache Qpid Developers</name>
+ <subscribe>dev-subscribe@qpid.apache.org</subscribe>
+ <unsubscribe>dev-unsubscribe@qpid.apache.org</unsubscribe>
+ <post>dev@qpid.apache.org</post>
+ <archive>http://mail-archives.apache.org/mod_mbox/qpid-dev/</archive>
+ </mailingList>
+ </mailingLists>
+
+ <scm>
+ <connection>scm:svn:http://svn.apache.org/repos/asf/qpid/trunk/qpid</connection>
+ <developerConnection>scm:svn:https://svn.apache.org/repos/asf/qpid/trunk/qpid</developerConnection>
+ <url>http://svn.apache.org/viewvc/qpid/</url>
+ </scm>
+
<reporting>
<plugins>
<plugin>
diff --git a/qpid/java/qpid-test-utils/pom.xml b/qpid/java/qpid-test-utils/pom.xml
index 4e90eb334c..17422d5378 100644
--- a/qpid/java/qpid-test-utils/pom.xml
+++ b/qpid/java/qpid-test-utils/pom.xml
@@ -33,12 +33,12 @@
<scope>compile</scope>
</dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>1.2.16</version>
- <scope>provided</scope>
- </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>${log4j-version}</version>
+ <scope>compile</scope>
+ </dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
diff --git a/qpid/java/qpid-test-utils/src/main/resources/log4j-test.xml b/qpid/java/qpid-test-utils/src/main/resources/log4j-test.xml
new file mode 100644
index 0000000000..58205752e1
--- /dev/null
+++ b/qpid/java/qpid-test-utils/src/main/resources/log4j-test.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ 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.
+-->
+
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+<!-- ===================================================================== -->
+<!-- -->
+<!-- Log4j configuration for unit tests -->
+<!-- -->
+<!-- ===================================================================== -->
+
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
+ <appender name="console" class="org.apache.log4j.ConsoleAppender">
+ <param name="Target" value="System.out"/>
+ <param name="ImmediateFlush" value="true"/>
+ <param name="Follow" value="true"/>
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="%t %d %p [%c{4}] %m%n"/>
+ </layout>
+ </appender>
+
+ <logger name="org.apache.qpid">
+ <level value="${amqj.logging.level}"/>
+ </logger>
+
+ <logger name="qpid.message">
+ <level value="INFO"/>
+ </logger>
+
+ <logger name="qpid.protocol">
+ <level value="${amqj.protocol.logging.level}"/>
+ </logger>
+
+ <logger name="org.apache.qpid.test.utils.QpidTestCase">
+ <level value="ALL"/>
+ </logger>
+
+ <logger name="org.apache.commons">
+ <level value="WARN"/>
+ </logger>
+
+ <logger name="apache.commons.configuration.ConfigurationFactory">
+ <level value="ERROR"/>
+ </logger>
+
+ <root>
+ <level value="${root.logging.level}"/>
+ <appender-ref ref="console" />
+ </root>
+</log4j:configuration>
diff --git a/qpid/java/systests/pom.xml b/qpid/java/systests/pom.xml
index 62f1a89480..98086bbe9e 100644
--- a/qpid/java/systests/pom.xml
+++ b/qpid/java/systests/pom.xml
@@ -26,10 +26,10 @@
<artifactId>qpid-systests</artifactId>
<properties>
- <broker.home.dir>target/qpid-broker/${project.version}</broker.home.dir>
+ <broker.home.dir>target${file.separator}qpid-broker${file.separator}${project.version}</broker.home.dir>
<!-- test properties -->
- <qpid.home>${basedir}/${broker.home.dir}</qpid.home>
- <qpid.home.qbtc.output>${qpid.home}/qbtc-output</qpid.home.qbtc.output>
+ <qpid.home>${basedir}${file.separator}${broker.home.dir}</qpid.home>
+ <qpid.home.qbtc.output>${qpid.home}${file.separator}qbtc-output</qpid.home.qbtc.output>
</properties>
<dependencies>
@@ -55,6 +55,20 @@
<scope>compile</scope>
</dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>${log4j-version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>${slf4j-version}</version>
+ <scope>compile</scope>
+ </dependency>
+
<!-- client deps -->
<dependency>
<groupId>org.apache.qpid</groupId>
@@ -242,6 +256,9 @@
<!-- Skip the default test phase, bind to the
integration-test phase below instead -->
<skip>true</skip>
+ <systemPropertyVariables>
+ <log4j.configuration.file>${project.basedir}${file.separator}..${file.separator}test-profiles${file.separator}log4j-test.xml</log4j.configuration.file>
+ </systemPropertyVariables>
</configuration>
<executions>
<execution>
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/ra/QpidRAConnectionTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/ra/QpidRAConnectionTest.java
index 0ca90ac2ea..b274edf164 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/ra/QpidRAConnectionTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/ra/QpidRAConnectionTest.java
@@ -20,6 +20,7 @@
*/
package org.apache.qpid.ra;
+import org.apache.log4j.Logger;
import org.apache.qpid.test.utils.QpidBrokerTestCase;
import javax.jms.Connection;
@@ -33,6 +34,8 @@ import org.apache.qpid.ra.QpidResourceAdapter;
public class QpidRAConnectionTest extends QpidBrokerTestCase
{
+ private static final Logger _logger = Logger.getLogger(QpidRAConnectionTest.class);
+
private static final String BROKER_PORT = "15672";
private static final String URL = "amqp://guest:guest@client/test?brokerlist='tcp://localhost:" + BROKER_PORT + "?sasl_mechs='PLAIN''";
@@ -55,7 +58,7 @@ public class QpidRAConnectionTest extends QpidBrokerTestCase
}
catch(Exception e)
{
- e.printStackTrace();
+ _logger.error("Commit threw exception", e);
assertTrue(e instanceof javax.jms.IllegalStateException);
}
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/scripts/QpidPasswdTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/scripts/QpidPasswdTest.java
index 1158a1d220..e483660f4c 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/scripts/QpidPasswdTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/scripts/QpidPasswdTest.java
@@ -23,6 +23,7 @@ import java.util.concurrent.TimeUnit;
import org.apache.qpid.test.utils.Piper;
import org.apache.qpid.test.utils.QpidTestCase;
+import org.apache.qpid.util.SystemUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -35,6 +36,10 @@ public class QpidPasswdTest extends QpidTestCase
public void testRunScript() throws Exception
{
+ if(SystemUtils.isWindows())
+ {
+ return;
+ }
Process process = null;
try
{
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/server/exchange/ReturnUnroutableMandatoryMessageTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/server/exchange/ReturnUnroutableMandatoryMessageTest.java
index 69b529cf40..9f145cd62c 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/server/exchange/ReturnUnroutableMandatoryMessageTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/server/exchange/ReturnUnroutableMandatoryMessageTest.java
@@ -60,7 +60,7 @@ public class ReturnUnroutableMandatoryMessageTest extends QpidBrokerTestCase imp
if (workdir == null || workdir.equals(""))
{
String tempdir = System.getProperty("java.io.tmpdir");
- System.out.println("QPID_WORK not set using tmp directory: " + tempdir);
+ _logger.info("QPID_WORK not set using tmp directory: " + tempdir);
System.setProperty("QPID_WORK", tempdir);
}
}
@@ -290,14 +290,7 @@ public class ReturnUnroutableMandatoryMessageTest extends QpidBrokerTestCase imp
{
Exception linkedException = null;
- try
- {
- linkedException = jmsException.getLinkedException();
- }
- catch (Exception e)
- {
- e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
- }
+ linkedException = jmsException.getLinkedException();
if (linkedException instanceof AMQNoRouteException)
{
AMQNoRouteException noRoute = (AMQNoRouteException) linkedException;
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/server/failover/FailoverMethodTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/server/failover/FailoverMethodTest.java
index babe2d207d..9e2bd28c43 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/server/failover/FailoverMethodTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/server/failover/FailoverMethodTest.java
@@ -29,6 +29,7 @@ import org.apache.qpid.AMQException;
import org.apache.qpid.client.AMQConnection;
import org.apache.qpid.client.AMQConnectionURL;
import org.apache.qpid.test.utils.QpidBrokerTestCase;
+import org.apache.qpid.util.SystemUtils;
import javax.jms.ExceptionListener;
import javax.jms.JMSException;
@@ -49,6 +50,12 @@ public class FailoverMethodTest extends QpidBrokerTestCase implements ExceptionL
*/
public void testFailoverRoundRobinDelay() throws Exception
{
+ if (SystemUtils.isWindows())
+ {
+ //TODO Test requires redevelopment - timings/behaviour on windows mean it fails
+ return;
+ }
+
//note: The first broker has no connect delay and the default 1 retry
// while the tcp:localhost broker has 3 retries with a 2s connect delay
String connectionString = "amqp://guest:guest@/test?brokerlist=" +
@@ -77,7 +84,7 @@ public class FailoverMethodTest extends QpidBrokerTestCase implements ExceptionL
long duration = (end - start);
//Failover should take more that 6 seconds.
- // 3 Retires
+ // 3 Retries
// so VM Broker NoDelay 0 (Connect) NoDelay 0
// then TCP NoDelay 0 Delay 1 Delay 2 Delay 3
// so 3 delays of 2s in total for connection
@@ -99,6 +106,12 @@ public class FailoverMethodTest extends QpidBrokerTestCase implements ExceptionL
public void testFailoverSingleDelay() throws Exception
{
+ if (SystemUtils.isWindows())
+ {
+ //TODO Test requires redevelopment - timings/behaviour on windows mean it fails
+ return;
+ }
+
String connectionString = "amqp://guest:guest@/test?brokerlist='tcp://localhost:" + getPort() + "?connectdelay='2000',retries='3''";
AMQConnectionURL url = new AMQConnectionURL(connectionString);
@@ -123,7 +136,7 @@ public class FailoverMethodTest extends QpidBrokerTestCase implements ExceptionL
long duration = (end - start);
//Failover should take more that 6 seconds.
- // 3 Retires
+ // 3 Retries
// so NoDelay 0 (Connect) NoDelay 0 Delay 1 Delay 2 Delay 3
// so 3 delays of 2s in total for connection
// so max time is 6 seconds of delay + 1 second of runtime. == 7 seconds
@@ -151,16 +164,9 @@ public class FailoverMethodTest extends QpidBrokerTestCase implements ExceptionL
*/
public void testNoFailover() throws Exception
{
- if (!isInternalBroker())
+ if (SystemUtils.isWindows())
{
- // QPID-3359
- // These tests always used to be inVM tests, then QPID-2815, with removal of ivVM,
- // converted the test to use QpidBrokerTestCase. However, since then we notice this
- // test fails on slower CI boxes. It turns out the test design is *extremely*
- // sensitive the length of time the broker takes to start up.
- //
- // Making the test a same-VM test to temporarily avoid the issue. In long term, test
- // needs redesigned to avoid the issue.
+ //TODO Test requires redevelopment - timings/behaviour on windows mean it fails
return;
}
@@ -185,7 +191,7 @@ public class FailoverMethodTest extends QpidBrokerTestCase implements ExceptionL
try
{
//Wait before starting broker
- // The wait should allow atleast 1 retries to fail before broker is ready
+ // The wait should allow at least 1 retries to fail before broker is ready
Thread.sleep(750);
startBroker();
}
@@ -198,15 +204,13 @@ public class FailoverMethodTest extends QpidBrokerTestCase implements ExceptionL
brokerStart.start();
long start = System.currentTimeMillis();
-
//Start the connection so it will use the retries
AMQConnection connection = new AMQConnection(url);
long end = System.currentTimeMillis();
-
long duration = (end - start);
- // Check that we actually had a delay had a delay in connection
+ // Check that we actually had a delay in connection
assertTrue("Initial connection should be longer than 1 delay : " + CONNECT_DELAY + " <:(" + duration + ")", duration > CONNECT_DELAY);
@@ -222,8 +226,7 @@ public class FailoverMethodTest extends QpidBrokerTestCase implements ExceptionL
stopBroker();
_failoverComplete.await(30, TimeUnit.SECONDS);
- assertEquals("failoverLatch was not decremented in given timeframe",
- 0, _failoverComplete.getCount());
+ assertEquals("failoverLatch was not decremented in given timeframe", 0, _failoverComplete.getCount());
end = System.currentTimeMillis();
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/server/queue/PriorityQueueTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/server/queue/PriorityQueueTest.java
index a6c9885568..7b2dd3239d 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/server/queue/PriorityQueueTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/server/queue/PriorityQueueTest.java
@@ -20,6 +20,7 @@
*/
package org.apache.qpid.server.queue;
+import org.apache.log4j.Logger;
import org.apache.qpid.AMQException;
import org.apache.qpid.client.AMQConnection;
import org.apache.qpid.client.AMQDestination;
@@ -246,6 +247,8 @@ public class PriorityQueueTest extends QpidBrokerTestCase
private static class ReflectingMessageListener implements MessageListener
{
+ private static final Logger _logger = Logger.getLogger(PriorityQueueTest.ReflectingMessageListener.class);
+
private Session _prodSess;
private Session _consSess;
private CountDownLatch _latch;
@@ -270,7 +273,7 @@ public class PriorityQueueTest extends QpidBrokerTestCase
{
_latch.countDown();
long msgNum = _origCount - _latch.getCount();
- System.out.println("Received message " + msgNum + " with ID: " + message.getIntProperty("msg"));
+ _logger.info("Received message " + msgNum + " with ID: " + message.getIntProperty("msg"));
if(_latch.getCount() > 0)
{
@@ -287,7 +290,7 @@ public class PriorityQueueTest extends QpidBrokerTestCase
}
catch(Throwable t)
{
- t.printStackTrace();
+ _logger.error(t.getMessage(), t);
_lastThrown = t;
}
}
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/server/queue/ProducerFlowControlTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/server/queue/ProducerFlowControlTest.java
index 8bebcc703d..427508954d 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/server/queue/ProducerFlowControlTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/server/queue/ProducerFlowControlTest.java
@@ -37,6 +37,7 @@ import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
+import org.apache.log4j.Logger;
import org.apache.qpid.AMQException;
import org.apache.qpid.client.AMQDestination;
import org.apache.qpid.client.AMQSession;
@@ -47,6 +48,8 @@ import org.apache.qpid.test.utils.JMXTestUtils;
public class ProducerFlowControlTest extends AbstractTestLogging
{
+ private static final Logger _logger = Logger.getLogger(ProducerFlowControlTest.class);
+
private static final int TIMEOUT = 10000;
private Connection producerConnection;
@@ -94,7 +97,7 @@ public class ProducerFlowControlTest extends AbstractTestLogging
}
catch (IOException e)
{
- e.printStackTrace();
+ _logger.error("Error closing jmxUtils", e);
}
}
producerConnection.close();
@@ -426,7 +429,7 @@ public class ProducerFlowControlTest extends AbstractTestLogging
}
catch (AMQException e)
{
- e.printStackTrace();
+ _logger.error("Error performing sync", e);
throw new RuntimeException(e);
}
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 5d8a1fe23c..710a6c5731 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
@@ -26,6 +26,7 @@ import java.util.Collection;
import java.util.Collections;
import org.apache.commons.configuration.PropertiesConfiguration;
+import org.apache.log4j.Logger;
import org.apache.qpid.AMQException;
import org.apache.qpid.AMQStoreException;
import org.apache.qpid.common.AMQPFilterTypes;
@@ -40,6 +41,7 @@ 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.TopicExchange;
+import org.apache.qpid.server.message.InstanceProperties;
import org.apache.qpid.server.model.Queue;
import org.apache.qpid.server.protocol.v0_8.AMQMessage;
import org.apache.qpid.server.protocol.v0_8.MessageMetaData;
@@ -50,8 +52,6 @@ import org.apache.qpid.server.queue.AMQPriorityQueue;
import org.apache.qpid.server.queue.AMQQueue;
import org.apache.qpid.server.queue.BaseQueue;
import org.apache.qpid.server.queue.ConflationQueue;
-import org.apache.qpid.server.protocol.v0_8.IncomingMessage;
-import org.apache.qpid.server.queue.QueueArgumentsConverter;
import org.apache.qpid.server.queue.SimpleAMQQueue;
import org.apache.qpid.server.txn.AutoCommitTransaction;
import org.apache.qpid.server.txn.ServerTransaction;
@@ -77,6 +77,8 @@ import static org.mockito.Mockito.when;
*/
public class MessageStoreTest extends QpidTestCase
{
+ private static final Logger _logger = Logger.getLogger(MessageStoreTest.class);
+
public static final int DEFAULT_PRIORTY_LEVEL = 5;
public static final String SELECTOR_VALUE = "Test = 'MST'";
public static final String LVQ_KEY = "MST-LVQ-KEY";
@@ -180,7 +182,7 @@ public class MessageStoreTest extends QpidTestCase
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("Error closing virtual host", e);
fail(e.getMessage());
}
}
@@ -191,7 +193,7 @@ public class MessageStoreTest extends QpidTestCase
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("Error creating virtual host", e);
fail(e.getMessage());
}
@@ -615,61 +617,41 @@ public class MessageStoreTest extends QpidTestCase
MessagePublishInfo messageInfo = new TestMessagePublishInfo(exchange, false, false, routingKey);
- final IncomingMessage currentMessage;
-
-
- currentMessage = new IncomingMessage(messageInfo);
-
- currentMessage.setExchange(exchange);
-
ContentHeaderBody headerBody = new ContentHeaderBody(BasicConsumeBodyImpl.CLASS_ID,0,properties,0l);
- try
- {
- currentMessage.setContentHeaderBody(headerBody);
- }
- catch (AMQException e)
- {
- fail(e.getMessage());
- }
+ MessageMetaData mmd = new MessageMetaData(messageInfo, headerBody, System.currentTimeMillis());
- currentMessage.setExpiration();
+ final StoredMessage<MessageMetaData> storedMessage = getVirtualHost().getMessageStore().addMessage(mmd);
+ storedMessage.flushToStore();
+ final AMQMessage currentMessage = new AMQMessage(storedMessage);
- MessageMetaData mmd = currentMessage.headersReceived(System.currentTimeMillis());
- currentMessage.setStoredMessage(getVirtualHost().getMessageStore().addMessage(mmd));
- currentMessage.getStoredMessage().flushToStore();
- currentMessage.route();
+ final List<? extends BaseQueue> destinationQueues = exchange.route(currentMessage, InstanceProperties.EMPTY);
- // check and deliver if header says body length is zero
- if (currentMessage.allContentReceived())
- {
- ServerTransaction trans = new AutoCommitTransaction(getVirtualHost().getMessageStore());
- final List<? extends BaseQueue> destinationQueues = currentMessage.getDestinationQueues();
- trans.enqueue(currentMessage.getDestinationQueues(), currentMessage, new ServerTransaction.Action() {
- public void postCommit()
- {
- try
- {
- AMQMessage message = new AMQMessage(currentMessage.getStoredMessage());
+ ServerTransaction trans = new AutoCommitTransaction(getVirtualHost().getMessageStore());
- for(BaseQueue queue : destinationQueues)
- {
- queue.enqueue(message);
- }
- }
- catch (AMQException e)
+ trans.enqueue(destinationQueues, currentMessage, new ServerTransaction.Action() {
+ public void postCommit()
+ {
+ try
+ {
+ for(BaseQueue queue : destinationQueues)
{
- e.printStackTrace();
+ queue.enqueue(currentMessage);
}
}
-
- public void onRollback()
+ catch (AMQException e)
{
- //To change body of implemented methods use File | Settings | File Templates.
+ _logger.error("Problem enqueing message", e);
}
- });
- }
+ }
+
+ public void onRollback()
+ {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+ });
+
}
private void createAllQueues()
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/server/store/StoreOverfullTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/server/store/StoreOverfullTest.java
index c4b16133f0..31e6a5613f 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/server/store/StoreOverfullTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/server/store/StoreOverfullTest.java
@@ -346,7 +346,7 @@ public class StoreOverfullTest extends QpidBrokerTestCase
}
catch (AMQException e)
{
- e.printStackTrace();
+ _logger.error(e);
throw new RuntimeException(e);
}
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/server/util/AveragedRun.java b/qpid/java/systests/src/main/java/org/apache/qpid/server/util/AveragedRun.java
index b7732a8270..941c1d9499 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/server/util/AveragedRun.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/server/util/AveragedRun.java
@@ -23,8 +23,12 @@ package org.apache.qpid.server.util;
import java.util.Collection;
import java.util.concurrent.Callable;
+import org.apache.log4j.Logger;
+
public class AveragedRun implements Callable<RunStats>
{
+ private static final Logger _logger = Logger.getLogger(AveragedRun.class);
+
private final RunStats stats = new RunStats();
private final TimedRun test;
private final int iterations;
@@ -46,7 +50,7 @@ public class AveragedRun implements Callable<RunStats>
public void run() throws Exception
{
- System.out.println(test + ": " + call());
+ _logger.info(test + ": " + call());
}
public String toString()
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 b5d036c9e4..30a9ea2f21 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
@@ -42,6 +42,7 @@ import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.store.MessageStoreCreator;
import org.apache.qpid.test.client.UnroutableMessageTestExceptionListener;
import org.apache.qpid.test.utils.TestBrokerConfiguration;
+import org.apache.qpid.util.SystemUtils;
public class BrokerRestTest extends QpidRestTestCase
{
@@ -237,8 +238,7 @@ public class BrokerRestTest extends QpidRestTestCase
assertEquals("Unexpected value of attribute " + Broker.BUILD_VERSION, QpidProperties.getBuildVersion(),
brokerDetails.get(Broker.BUILD_VERSION));
- assertEquals("Unexpected value of attribute " + Broker.OPERATING_SYSTEM, OS_NAME + " "
- + System.getProperty("os.version") + " " + System.getProperty("os.arch"),
+ assertEquals("Unexpected value of attribute " + Broker.OPERATING_SYSTEM, SystemUtils.getOSString(),
brokerDetails.get(Broker.OPERATING_SYSTEM));
assertEquals(
"Unexpected value of attribute " + Broker.PLATFORM,
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/client/RollbackOrderTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/client/RollbackOrderTest.java
index 2ed3f356d3..54c3225cec 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/test/client/RollbackOrderTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/client/RollbackOrderTest.java
@@ -150,7 +150,7 @@ public class RollbackOrderTest extends QpidBrokerTestCase
}
catch (JMSException e)
{
- System.out.println("Error:" + e.getMessage());
+ _logger.error("Error:" + e.getMessage(), e);
exceptions[(int)count.getCount()] = e;
}
catch (AssertionFailedError cf)
@@ -161,9 +161,7 @@ public class RollbackOrderTest extends QpidBrokerTestCase
count.countDown();
}
- System.out.println("Error:" + cf.getMessage());
- System.err.println(cf.getMessage());
- cf.printStackTrace();
+ _logger.error("Error:" + cf.getMessage(), cf);
failed.set(true);
}
}
@@ -177,8 +175,7 @@ public class RollbackOrderTest extends QpidBrokerTestCase
{
if (e != null)
{
- System.err.println(e.getMessage());
- e.printStackTrace();
+ _logger.error("Encountered exception", e);
failed.set(true);
}
}
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java
index 5dcf678510..38fb1622b3 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java
@@ -126,7 +126,7 @@ public class SelectorTest extends QpidBrokerTestCase implements MessageListener
}
else
{
- System.out.println("SUCCESS!!");
+ _logger.debug("SUCCESS!!");
}
}
catch (InterruptedException e)
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/ack/AcknowledgeOnMessageTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/ack/AcknowledgeOnMessageTest.java
index 1b4407f255..602eb5137a 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/ack/AcknowledgeOnMessageTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/ack/AcknowledgeOnMessageTest.java
@@ -125,7 +125,7 @@ public class AcknowledgeOnMessageTest extends AcknowledgeTest implements Message
Exception cause = _causeOfFailure.get();
if (cause != null)
{
- cause.printStackTrace();
+ _logger.error("Cause of failure is: ", cause);
fail(cause.getMessage());
}
else
@@ -142,7 +142,7 @@ public class AcknowledgeOnMessageTest extends AcknowledgeTest implements Message
Exception cause = _causeOfFailure.get();
if (cause != null)
{
- cause.printStackTrace();
+ _logger.error("Failed due to following exception", cause);
fail(cause.getMessage());
}
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/BytesMessageTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/BytesMessageTest.java
index a121b39a56..01f4cdbb05 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/BytesMessageTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/BytesMessageTest.java
@@ -271,8 +271,8 @@ public class BytesMessageTest extends QpidBrokerTestCase implements MessageListe
count = Integer.parseInt(argv[1]);
}
- System.out.println("connectionString = " + connectionString);
- System.out.println("count = " + count);
+ _logger.info("connectionString = " + connectionString);
+ _logger.info("count = " + count);
BytesMessageTest test = new BytesMessageTest();
test._connectionString = connectionString;
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/LargeMessageTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/LargeMessageTest.java
index 7bd737ee53..ace8324dab 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/LargeMessageTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/LargeMessageTest.java
@@ -155,8 +155,8 @@ public class LargeMessageTest extends QpidBrokerTestCase
}
catch (JMSException e)
{
- e.printStackTrace();
- fail("Excpetion occured:" + e.getCause());
+ _logger.error("Exception occured", e);
+ fail("Exception occured:" + e.getCause());
}
}
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/PropertyValueTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/PropertyValueTest.java
index 52213d15c4..dc963da680 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/PropertyValueTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/PropertyValueTest.java
@@ -197,7 +197,6 @@ public class PropertyValueTest extends QpidBrokerTestCase implements MessageList
catch (Exception e)
{
_logger.error(e.getMessage(), e);
- e.printStackTrace();
}
}
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/TextMessageTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/TextMessageTest.java
index 0a568d57ad..57b689a291 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/TextMessageTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/TextMessageTest.java
@@ -95,7 +95,7 @@ public class TextMessageTest extends QpidBrokerTestCase implements MessageListen
}
catch (Throwable e)
{
- e.printStackTrace();
+ _logger.error("Error creating consumer", e);
}
connection.start();
}
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/ConnectionStartTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/ConnectionStartTest.java
index 0650531d2b..6ea1582bb8 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/ConnectionStartTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/connection/ConnectionStartTest.java
@@ -73,7 +73,7 @@ public class ConnectionStartTest extends QpidBrokerTestCase
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("Connection to " + _broker + " should succeed.", e);
fail("Connection to " + _broker + " should succeed. Reason: " + e);
}
}
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/message/ObjectMessageTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/message/ObjectMessageTest.java
index 728ef85bd2..99dc5ff216 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/message/ObjectMessageTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/message/ObjectMessageTest.java
@@ -104,7 +104,7 @@ public class ObjectMessageTest extends QpidBrokerTestCase implements MessageList
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("This Test should succeed but failed", e);
fail("This Test should succeed but failed due to: " + e);
}
}
@@ -254,7 +254,7 @@ public class ObjectMessageTest extends QpidBrokerTestCase implements MessageList
}
catch (JMSException e)
{
- e.printStackTrace();
+ _logger.error("Error getting object from message", e);
items.add(e);
}
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/close/MessageRequeueTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/close/MessageRequeueTest.java
index a4e9a992b4..5895d670a7 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/close/MessageRequeueTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/close/MessageRequeueTest.java
@@ -312,7 +312,7 @@ public class MessageRequeueTest extends QpidBrokerTestCase
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("Consumer run error",e);
}
}
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/close/VerifyAckingOkDuringClose.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/close/VerifyAckingOkDuringClose.java
deleted file mode 100644
index 3b30b7d63f..0000000000
--- a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/close/VerifyAckingOkDuringClose.java
+++ /dev/null
@@ -1,160 +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.test.unit.close;
-
-import org.apache.qpid.client.AMQConnection;
-import org.apache.qpid.client.AMQConnectionFactory;
-import org.apache.qpid.jndi.PropertiesFileInitialContextFactory;
-
-import javax.jms.Message;
-import javax.jms.MessageConsumer;
-import javax.jms.MessageProducer;
-import javax.jms.Queue;
-import javax.jms.Session;
-import javax.naming.InitialContext;
-import java.util.ArrayList;
-
-/**
- * QPID-1791
- *
- * The threading model in the Java broker (at least till 0.5) allows for the
- * close to be handled immediately even if the broker is still processing state
- * for that Session.
- *
- * This test verifys that QPID-1791 is has been handled.
- *
- * The problem was that the whilst the Session is busy processing Acks from the
- * client the Close frame jumps in and clears the unAcknowledgeMap in an
- * attempt to start processing them for closing the connection.
- *
- * If the session had a consumer consuming from a temporary queue. The closing
- * thread dequeues and deletes the message that were on the uncknowledgedMap.
- *
- * However, the Acking thread currently does:
- * queuEntry = unackedMap.get(messageID)
- *
- * dequeueAndDelete(queueEntry)
- *
- * unackedMap.remove(messageID)
- *
- * As a result the queueEntry is sitting in the unackedMap whilst it is being
- * dequeuedAndDeleted which leaves the opportunity for the close thread to
- * remove contents of the unackedMap for processing. The close thread will then
- * dequeueAndDelete all these values one of which the acking thread is currently
- * processing.
- *
- *
- * Test Approach
- *
- * Send a lot of persistent messages (5000), the goal of which is to fill the
- * pretch and to provide the broker with a lot of acks to process
- *
- * Using client ack and prefetch buffer of 5000 use receive to get 2500
- * Use AMQMessage.acknowledgeThis() to send a single ack frame back to the
- * broker per message so 2500 ack frames.
- * This will give the broker a lot to process,
- * Immediately send the consumer close after the acks are all gone.
- * This will cause the remaining 2500 prefetched messages plus any that have
- * not yet had their acks processed
- * to be collected by the requeue() process potentially
- */
-public class VerifyAckingOkDuringClose
-{
-
- static final int MESSAGE_SENT = 5000;
-
- public static void main(String[] args) throws Exception
- {
- //Check that we have the InitialContext Configured
-
- if (System.getProperty(InitialContext.INITIAL_CONTEXT_FACTORY) == null)
- {
- System.setProperty(InitialContext.INITIAL_CONTEXT_FACTORY, PropertiesFileInitialContextFactory.class.getName());
- }
-
- if (System.getProperty(InitialContext.PROVIDER_URL) == null)
- {
- System.err.println(InitialContext.PROVIDER_URL + ": Is not set and is required to contain a 'default' ConnectionFactory.");
- System.exit(1);
- }
-
- //Retreive the local factory from the properties file
- // when used with perftest.properties this will be localhost:5672
- AMQConnectionFactory factory = (AMQConnectionFactory) new InitialContext().lookup("default");
-
- AMQConnection connection = (AMQConnection) factory.createConnection("guest", "guest");
-
- //Use the AMQConnection Interface to set the prefetch to the number
- // we are sending
- Session session = connection.createSession(false,
- Session.CLIENT_ACKNOWLEDGE,
- MESSAGE_SENT);
-
- Queue queue = session.createTemporaryQueue();
-
- MessageConsumer consumer = session.createConsumer(queue);
- connection.start();
-
- MessageProducer producer = session.createProducer(queue);
-
- Message message = session.createTextMessage("Close");
-
- for (int i = 0; i < MESSAGE_SENT; i++)
- {
- message.setIntProperty("SequenceNumber", i);
-
- producer.send(message);
- }
-
- // Put a reasonable about of data on the queue.
-
- //Receive all the messags
- ArrayList<Message> received = new ArrayList<Message>();
-
- message = consumer.receive(2000);
-
- while (message != null)
- {
- received.add(message);
- message = consumer.receive(2000);
- }
-
- //Check we have all the messages
- if (received.size() != MESSAGE_SENT)
- {
- System.err.println("Test Failed Not all the messages received:" + received.size());
- System.exit(1);
- }
-
- //individually ack the first half then close
- for (int i = 0; i < MESSAGE_SENT / 2; i++)
- {
- ((org.apache.qpid.jms.Message) received.get(i)).acknowledgeThis();
- }
-
- // Close the Session to force a requeue on the server of the unackedMsgs
-
- System.out.println("Killing client to force requeue on broker");
-
- System.exit(1);
- }
-
-}
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/topic/DurableSubscriptionTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/topic/DurableSubscriptionTest.java
index 4b61b6269c..cc8bfb9433 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/topic/DurableSubscriptionTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/topic/DurableSubscriptionTest.java
@@ -284,7 +284,7 @@ public class DurableSubscriptionTest extends QpidBrokerTestCase
{
if(!isBrokerStorePersistent())
{
- System.out.println("The broker store is not persistent, skipping this test.");
+ _logger.warn("The broker store is not persistent, skipping this test");
return;
}
@@ -784,7 +784,7 @@ public class DurableSubscriptionTest extends QpidBrokerTestCase
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("Receive error",e);
}
conn.stop();
@@ -852,7 +852,7 @@ public class DurableSubscriptionTest extends QpidBrokerTestCase
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("Receive error",e);
}
conn.stop();
@@ -914,7 +914,7 @@ public class DurableSubscriptionTest extends QpidBrokerTestCase
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("Error creating durable subscriber",e);
}
}
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/topic/TopicSessionTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/topic/TopicSessionTest.java
index 6bf20d7708..c2ea3a5695 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/topic/TopicSessionTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/topic/TopicSessionTest.java
@@ -297,7 +297,7 @@ public class TopicSessionTest extends QpidBrokerTestCase
m = (TextMessage) noLocal.receive(1000);
if (m != null)
{
- System.out.println("Message:" + m.getText());
+ _logger.info("Message:" + m.getText());
}
assertNull(m);
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/transacted/CommitRollbackTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/transacted/CommitRollbackTest.java
index 0be4f7ff1d..610628a02d 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/transacted/CommitRollbackTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/transacted/CommitRollbackTest.java
@@ -634,7 +634,7 @@ public class CommitRollbackTest extends QpidBrokerTestCase
}
catch (JMSException e)
{
- e.printStackTrace();
+ _logger.error("OnMessage error",e);
}
}
}
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/transacted/TransactedTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/transacted/TransactedTest.java
index 4f7d592958..78c76602c5 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/transacted/TransactedTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/transacted/TransactedTest.java
@@ -108,7 +108,7 @@ public class TransactedTest extends QpidBrokerTestCase
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("setup error",e);
stopBroker();
throw e;
}
@@ -127,7 +127,7 @@ public class TransactedTest extends QpidBrokerTestCase
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("tear down error",e);
}
finally
{
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/AbstractXATestCase.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/AbstractXATestCase.java
index b5d1bff842..92df1bd331 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/AbstractXATestCase.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/AbstractXATestCase.java
@@ -112,7 +112,7 @@ public abstract class AbstractXATestCase extends QpidBrokerTestCase
}
catch (JMSException e)
{
- e.printStackTrace();
+ _logger.error("Producer error",e);
fail("cannot create message producer: " + e.getMessage());
}
// create standard consumer
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/FaultTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/FaultTest.java
index 39973e12c7..c5fa217aa9 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/FaultTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/FaultTest.java
@@ -39,7 +39,6 @@ import javax.transaction.xa.Xid;
public class FaultTest extends AbstractXATestCase
{
- /* this clas logger */
private static final Logger _logger = LoggerFactory.getLogger(FaultTest.class);
/**
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/QueueTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/QueueTest.java
index 3fbe76323a..350781e970 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/QueueTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/QueueTest.java
@@ -39,7 +39,6 @@ import javax.transaction.xa.Xid;
public class QueueTest extends AbstractXATestCase
{
- /* this clas logger */
private static final Logger _logger = LoggerFactory.getLogger(QueueTest.class);
/**
@@ -167,7 +166,7 @@ public class QueueTest extends AbstractXATestCase
}
catch (JMSException e)
{
- e.printStackTrace();
+ _logger.error("cannot create queue session",e);
fail("cannot create queue session: " + e.getMessage());
}
init(session, _queue);
@@ -197,7 +196,7 @@ public class QueueTest extends AbstractXATestCase
}
catch (XAException e)
{
- e.printStackTrace();
+ _logger.error("cannot start the transaction with xid1", e);
fail("cannot start the transaction with xid1: " + e.getMessage());
}
try
@@ -411,14 +410,14 @@ public class QueueTest extends AbstractXATestCase
{
if (anInDoubt.equals(xid1))
{
- System.out.println("commit xid1 ");
+ _logger.info("commit xid1 ");
try
{
_xaResource.commit(anInDoubt, false);
}
catch (Exception e)
{
- System.out.println("PB when aborted xid1");
+ _logger.error("PB when aborted xid1", e);
}
}
else
@@ -429,7 +428,7 @@ public class QueueTest extends AbstractXATestCase
}
catch (XAException e)
{
- e.printStackTrace();
+ _logger.error("exception thrown when recovering transactions", e);
fail("exception thrown when recovering transactions " + e.getMessage());
}
// the queue should contain the first message!
@@ -607,7 +606,7 @@ public class QueueTest extends AbstractXATestCase
}
catch (Exception e)
{
- System.out.println("PB when aborted xid1");
+ _logger.error("PB when aborted xid1", e);
}
}
else if (anInDoubt.equals(xid2))
@@ -619,14 +618,14 @@ public class QueueTest extends AbstractXATestCase
}
catch (Exception e)
{
- System.out.println("PB when commiting xid2");
+ _logger.error("PB when commiting xid2", e);
}
}
}
}
catch (XAException e)
{
- e.printStackTrace();
+ _logger.error("exception thrown when recovering transactions", e);
fail("exception thrown when recovering transactions " + e.getMessage());
}
// the queue should be empty
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/TopicTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/TopicTest.java
index d955979ad6..4d9242b8b3 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/TopicTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/xa/TopicTest.java
@@ -36,7 +36,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
*/
public class TopicTest extends AbstractXATestCase
{
- /* this clas logger */
+ /* this class logger */
private static final Logger _logger = LoggerFactory.getLogger(TopicTest.class);
/**
@@ -163,7 +163,7 @@ public class TopicTest extends AbstractXATestCase
}
catch (JMSException e)
{
- e.printStackTrace(); //To change body of catch statement use Options | File Templates.
+ _logger.error("Error creating topic session", e);
}
init(_session, _topic);
}
@@ -199,7 +199,7 @@ public class TopicTest extends AbstractXATestCase
}
catch (XAException e)
{
- e.printStackTrace();
+ _logger.error("cannot start the transaction with xid1", e);
fail("cannot start the transaction with xid1: " + e.getMessage());
}
try
@@ -384,7 +384,7 @@ public class TopicTest extends AbstractXATestCase
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("Exception when working with xid1", e);
fail("Exception when working with xid1: " + e.getMessage());
}
try
@@ -426,7 +426,7 @@ public class TopicTest extends AbstractXATestCase
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("Exception when working with xid2", e);
fail("Exception when working with xid2: " + e.getMessage());
}
try
@@ -453,7 +453,7 @@ public class TopicTest extends AbstractXATestCase
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("Exception when working with xid3", e);
fail("Exception when working with xid3: " + e.getMessage());
}
try
@@ -472,13 +472,13 @@ public class TopicTest extends AbstractXATestCase
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("Exception when working with xid4", e);
fail("Exception when working with xid4: " + e.getMessage());
}
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("problem when creating dur sub", e);
fail("problem when creating dur sub: " + e.getMessage());
}
finally
@@ -489,7 +489,7 @@ public class TopicTest extends AbstractXATestCase
}
catch (JMSException e)
{
- e.printStackTrace();
+ _logger.error("problem when unsubscribing dur sub", e);
fail("problem when unsubscribing dur sub: " + e.getMessage());
}
}
@@ -537,7 +537,7 @@ public class TopicTest extends AbstractXATestCase
}
catch (JMSException e)
{
- e.printStackTrace();
+ _logger.error("Exception thrown when producing messages", e);
fail("Exception thrown when producing messages: " + e.getMessage());
}
@@ -595,7 +595,7 @@ public class TopicTest extends AbstractXATestCase
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("Exception thrown when consumming 6 first messages", e);
fail("Exception thrown when consumming 6 first messages: " + e.getMessage());
}
try
@@ -626,7 +626,7 @@ public class TopicTest extends AbstractXATestCase
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("Exception thrown when consumming message: 3, 4 and 7", e);
fail("Exception thrown when consumming message: 3, 4 and 7: " + e.getMessage());
}
@@ -641,7 +641,7 @@ public class TopicTest extends AbstractXATestCase
}
catch (XAException e)
{
- e.printStackTrace();
+ _logger.error("XAException thrown when committing tx3 or aborting tx1", e);
fail("XAException thrown when committing tx3 or aborting tx1: " + e.getMessage());
}
@@ -676,7 +676,7 @@ public class TopicTest extends AbstractXATestCase
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("Exception thrown in last phase", e);
fail("Exception thrown in last phase: " + e.getMessage());
}
// now the topic should be empty!!
@@ -697,13 +697,13 @@ public class TopicTest extends AbstractXATestCase
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("Exception when working with xid6", e);
fail("Exception when working with xid6: " + e.getMessage());
}
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("problem when creating dur sub", e);
fail("problem when creating dur sub: " + e.getMessage());
}
finally
@@ -714,7 +714,7 @@ public class TopicTest extends AbstractXATestCase
}
catch (JMSException e)
{
- e.printStackTrace();
+ _logger.error("problem when unsubscribing dur sub", e);
fail("problem when unsubscribing dur sub: " + e.getMessage());
}
}
@@ -769,7 +769,7 @@ public class TopicTest extends AbstractXATestCase
}
catch (JMSException e)
{
- e.printStackTrace();
+ _logger.error("Exception thrown when producing messages", e);
fail("Exception thrown when producing messages: " + e.getMessage());
}
try
@@ -830,7 +830,7 @@ public class TopicTest extends AbstractXATestCase
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("Exception thrown when consumming 6 first messages", e);
fail("Exception thrown when consumming 6 first messages: " + e.getMessage());
}
/////// stop the broker now !!
@@ -862,7 +862,7 @@ public class TopicTest extends AbstractXATestCase
}
catch (XAException e)
{
- e.printStackTrace();
+ _logger.error("exception thrown when recovering transactions", e);
fail("exception thrown when recovering transactions " + e.getMessage());
}
try
@@ -929,7 +929,7 @@ public class TopicTest extends AbstractXATestCase
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("Exception thrown when consumming message: 3, 4 and 7", e);
fail("Exception thrown when consumming message: 3, 4 and 7: " + e.getMessage());
}
@@ -944,7 +944,7 @@ public class TopicTest extends AbstractXATestCase
}
catch (XAException e)
{
- e.printStackTrace();
+ _logger.error("XAException thrown when committing tx3 or aborting tx1", e);
fail("XAException thrown when committing tx3 or aborting tx1: " + e.getMessage());
}
@@ -1024,7 +1024,7 @@ public class TopicTest extends AbstractXATestCase
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("Exception thrown in last phase", e);
fail("Exception thrown in last phase: " + e.getMessage());
}
// now the topic should be empty!!
@@ -1045,13 +1045,13 @@ public class TopicTest extends AbstractXATestCase
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("Exception when working with xid6", e);
fail("Exception when working with xid6: " + e.getMessage());
}
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("problem when creating dur sub", e);
fail("problem when creating dur sub: " + e.getMessage());
}
finally
@@ -1062,7 +1062,7 @@ public class TopicTest extends AbstractXATestCase
}
catch (JMSException e)
{
- e.printStackTrace();
+ _logger.error("problem when unsubscribing dur sub", e);
fail("problem when unsubscribing dur sub: " + e.getMessage());
}
}
@@ -1108,7 +1108,7 @@ public class TopicTest extends AbstractXATestCase
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("Exception when working with xid1", e);
fail("Exception when working with xid1: " + e.getMessage());
}
try
@@ -1134,7 +1134,7 @@ public class TopicTest extends AbstractXATestCase
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("Exception when working with xid2", e);
fail("Exception when working with xid2: " + e.getMessage());
}
@@ -1171,26 +1171,26 @@ public class TopicTest extends AbstractXATestCase
{
if (anInDoubt.equals(xid2))
{
- System.out.println("aborting xid2 ");
+ _logger.info("aborting xid2 ");
try
{
_xaResource.rollback(anInDoubt);
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("exception when aborting xid2 ", e);
fail("exception when aborting xid2 ");
}
}
else
{
- System.out.println("XID2 is not in doubt ");
+ _logger.info("XID2 is not in doubt ");
}
}
}
catch (XAException e)
{
- e.printStackTrace();
+ _logger.error("exception thrown when recovering transactions", e);
fail("exception thrown when recovering transactions " + e.getMessage());
}
@@ -1218,7 +1218,7 @@ public class TopicTest extends AbstractXATestCase
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("Exception when working with xid3", e);
fail("Exception when working with xid3: " + e.getMessage());
}
try
@@ -1238,13 +1238,13 @@ public class TopicTest extends AbstractXATestCase
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("Exception when working with xid4", e);
fail("Exception when working with xid4: " + e.getMessage());
}
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("problem when creating dur sub", e);
fail("problem when creating dur sub: " + e.getMessage());
}
finally
@@ -1255,7 +1255,7 @@ public class TopicTest extends AbstractXATestCase
}
catch (JMSException e)
{
- e.printStackTrace();
+ _logger.error("problem when unsubscribing dur sub", e);
fail("problem when unsubscribing dur sub: " + e.getMessage());
}
}
@@ -1356,8 +1356,7 @@ public class TopicTest extends AbstractXATestCase
}
catch (Exception e)
{
- _logger.debug("PB when aborted xid1");
- e.printStackTrace();
+ _logger.error("PB when aborted xid1");
fail("exception when committing xid1 ");
}
}
@@ -1369,7 +1368,7 @@ public class TopicTest extends AbstractXATestCase
}
catch (XAException e)
{
- e.printStackTrace();
+ _logger.error("exception thrown when recovering transactions ", e);
fail("exception thrown when recovering transactions " + e.getMessage());
}
_logger.debug("the topic should not be empty");
@@ -1381,13 +1380,13 @@ public class TopicTest extends AbstractXATestCase
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("Exception thrown when testin that queue test is empty", e);
fail("Exception thrown when testin that queue test is empty: " + e.getMessage());
}
}
catch (JMSException e)
{
- e.printStackTrace();
+ _logger.error("cannot create dummy durable subscriber", e);
fail("cannot create dummy durable subscriber: " + e.getMessage());
}
finally
@@ -1469,7 +1468,7 @@ public class TopicTest extends AbstractXATestCase
}
else if (message.getLongProperty(_sequenceNumberPropertyName) != 2)
{
- System.out.println("wrong sequence number, 2 expected, received: " + message
+ _logger.info("wrong sequence number, 2 expected, received: " + message
.getLongProperty(_sequenceNumberPropertyName));
}
_xaResource.end(xid1, XAResource.TMSUCCESS);
@@ -1491,7 +1490,7 @@ public class TopicTest extends AbstractXATestCase
}
else if (message.getLongProperty(_sequenceNumberPropertyName) != 2)
{
- System.out.println("wrong sequence number, 2 expected, received: " + message
+ _logger.info("wrong sequence number, 2 expected, received: " + message
.getLongProperty(_sequenceNumberPropertyName));
}
// consume the third message with that xa durable subscriber
@@ -1502,7 +1501,7 @@ public class TopicTest extends AbstractXATestCase
}
else if (message.getLongProperty(_sequenceNumberPropertyName) != 3)
{
- System.out.println("wrong sequence number, 3 expected, received: " + message
+ _logger.info("wrong sequence number, 3 expected, received: " + message
.getLongProperty(_sequenceNumberPropertyName));
}
stSession.commit();
@@ -1565,11 +1564,11 @@ public class TopicTest extends AbstractXATestCase
message = (TextMessage) durSub.receive(1000);
if (message == null)
{
- System.out.println("no message received ");
+ _logger.info("no message received ");
}
else if (message.getLongProperty(_sequenceNumberPropertyName) != i)
{
- System.out.println("wrong sequence number, " + i + " expected, received: " + message
+ _logger.info("wrong sequence number, " + i + " expected, received: " + message
.getLongProperty(_sequenceNumberPropertyName));
}
}
@@ -1639,7 +1638,7 @@ public class TopicTest extends AbstractXATestCase
}
catch (Exception e)
{
- e.printStackTrace();
+ _logger.error("Exception thrown", e);
fail("Exception thrown: " + e.getMessage());
}
finally
@@ -1710,7 +1709,7 @@ public class TopicTest extends AbstractXATestCase
}
catch (JMSException e)
{
- e.printStackTrace();
+ _logger.error("Error getting long property: " + TopicTest._sequenceNumberPropertyName , e);
TopicTest.failure();
_lock.set(false);
synchronized (_lock)
@@ -1720,7 +1719,7 @@ public class TopicTest extends AbstractXATestCase
}
if (seq != _counter)
{
- System.out.println("received message " + seq + " expected " + _counter);
+ _logger.info("received message " + seq + " expected " + _counter);
TopicTest.failure();
_lock.set(false);
synchronized (_lock)
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java
index 8248fc9de2..91dcf48001 100755
--- a/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java
@@ -21,8 +21,6 @@ import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
-import java.net.URI;
-import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
@@ -31,6 +29,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
+
import javax.jms.BytesMessage;
import javax.jms.Connection;
import javax.jms.Destination;
@@ -48,6 +47,7 @@ import javax.jms.Topic;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
+
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.XMLConfiguration;
import org.apache.commons.lang.StringUtils;
@@ -72,6 +72,7 @@ import org.apache.qpid.server.store.MessageStoreConstants;
import org.apache.qpid.server.store.MessageStoreCreator;
import org.apache.qpid.url.URLSyntaxException;
import org.apache.qpid.util.FileUtils;
+import org.apache.qpid.util.SystemUtils;
/**
* Qpid base class for system testing test cases.
@@ -131,6 +132,7 @@ public class QpidBrokerTestCase extends QpidTestCase
private static final String BROKER_LANGUAGE = "broker.language";
protected static final String BROKER_TYPE = "broker.type";
private static final String BROKER_COMMAND = "broker.command";
+ private static final String BROKER_COMMAND_PLATFORM = "broker.command." + SystemUtils.getOSConfigSuffix();
private static final String BROKER_CLEAN_BETWEEN_TESTS = "broker.clean.between.tests";
private static final String BROKER_VERSION = "broker.version";
protected static final String BROKER_READY = "broker.ready";
@@ -158,13 +160,13 @@ public class QpidBrokerTestCase extends QpidTestCase
public static final int FAILING_PORT = Integer.parseInt(System.getProperty("test.port.alt"));
public static final int DEFAULT_MANAGEMENT_PORT = Integer.getInteger("test.mport", DEFAULT_JMXPORT_REGISTRYSERVER);
public static final int DEFAULT_SSL_PORT = Integer.getInteger("test.port.ssl", DEFAULT_SSL_PORT_VALUE);
- public static final String OS_NAME = System.getProperty("os.name");
- public static final boolean IS_OS_WINDOWS = String.valueOf(OS_NAME).toLowerCase().contains("windows");
protected String _brokerLanguage = System.getProperty(BROKER_LANGUAGE, JAVA);
protected BrokerType _brokerType = BrokerType.valueOf(System.getProperty(BROKER_TYPE, "").toUpperCase());
- protected BrokerCommandHelper _brokerCommandHelper = new BrokerCommandHelper(System.getProperty(BROKER_COMMAND));
+ private static final String BROKER_COMMAND_TEMPLATE = System.getProperty(BROKER_COMMAND_PLATFORM, System.getProperty(BROKER_COMMAND));
+ protected BrokerCommandHelper _brokerCommandHelper = new BrokerCommandHelper(BROKER_COMMAND_TEMPLATE);
+
private Boolean _brokerCleanBetweenTests = Boolean.getBoolean(BROKER_CLEAN_BETWEEN_TESTS);
private final AmqpProtocolVersion _brokerVersion = AmqpProtocolVersion.valueOf(System.getProperty(BROKER_VERSION, ""));
protected String _output = System.getProperty(TEST_OUTPUT, System.getProperty("java.io.tmpdir"));
@@ -253,8 +255,6 @@ public class QpidBrokerTestCase extends QpidTestCase
private void initialiseLogConfigFile()
{
- _logger.info("About to initialise log config file from system property: " + LOG4J_CONFIG_FILE_PATH);
-
_logConfigFile = new File(LOG4J_CONFIG_FILE_PATH);
if(!_logConfigFile.exists())
{
@@ -499,8 +499,21 @@ public class QpidBrokerTestCase extends QpidTestCase
String qpidHome = System.getProperty(QPID_HOME);
processEnv.put(QPID_HOME, qpidHome);
//Augment Path with bin directory in QPID_HOME.
- processEnv.put("PATH", processEnv.get("PATH").concat(File.pathSeparator + qpidHome + "/bin"));
+ boolean foundPath = false;
+ final String pathEntry = qpidHome + File.separator + "bin";
+ for(Map.Entry<String,String> entry : processEnv.entrySet())
+ {
+ if(entry.getKey().equalsIgnoreCase("path"))
+ {
+ entry.setValue(entry.getValue().concat(File.pathSeparator + pathEntry));
+ foundPath = true;
+ }
+ }
+ if(!foundPath)
+ {
+ processEnv.put("PATH", pathEntry);
+ }
//Add the test name to the broker run.
// DON'T change PNAME, qpid.stop needs this value.
processEnv.put("QPID_PNAME", "-DPNAME=QPBRKR -DTNAME=\"" + getTestName() + "\"");
@@ -565,8 +578,14 @@ public class QpidBrokerTestCase extends QpidTestCase
_interleaveBrokerLog ? _brokerLogPrefix : null);
p.start();
+ StringBuilder cmdLine = new StringBuilder(cmd[0]);
+ for(int i = 1; i< cmd.length; i++)
+ {
+ cmdLine.append(' ');
+ cmdLine.append(cmd[i]);
+ }
- SpawnedBrokerHolder holder = new SpawnedBrokerHolder(process, qpidWork, portsUsedByBroker);
+ SpawnedBrokerHolder holder = new SpawnedBrokerHolder(process, qpidWork, portsUsedByBroker, cmdLine.toString());
if (!p.await(30, TimeUnit.SECONDS))
{
_logger.info("broker failed to become ready (" + p.getReady() + "):" + p.getStopLine());
@@ -639,7 +658,16 @@ public class QpidBrokerTestCase extends QpidTestCase
private String relativeToQpidHome(String file)
{
- return file.replace(System.getProperty(QPID_HOME,"QPID_HOME") + File.separator,"");
+ _logger.debug("Converting path to be relative to QPID_HOME: " + file);
+
+ final String qpidHome = System.getProperty(QPID_HOME,"QPID_HOME");
+ _logger.debug("QPID_HOME is: " + qpidHome);
+
+ if(!file.startsWith(qpidHome)) {
+ throw new RuntimeException("Provided path is not a child of the QPID_HOME directory: " + qpidHome);
+ }
+
+ return file.replace(qpidHome + File.separator,"");
}
protected String getPathRelativeToWorkingDirectory(String file)
@@ -653,7 +681,7 @@ public class QpidBrokerTestCase extends QpidTestCase
{
String configPath = configLocation.getAbsolutePath();
String workingDirectoryPath = workingDirectory.getCanonicalPath();
- if (IS_OS_WINDOWS)
+ if (SystemUtils.isWindows())
{
configPath = configPath.toLowerCase();
workingDirectoryPath = workingDirectoryPath.toLowerCase();
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/SpawnedBrokerHolder.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/SpawnedBrokerHolder.java
index bce97a574a..4752aec352 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/SpawnedBrokerHolder.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/SpawnedBrokerHolder.java
@@ -20,24 +20,32 @@
*/
package org.apache.qpid.test.utils;
+import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import java.util.Set;
import org.apache.log4j.Logger;
+import org.apache.qpid.util.SystemUtils;
public class SpawnedBrokerHolder implements BrokerHolder
{
private static final Logger LOGGER = Logger.getLogger(SpawnedBrokerHolder.class);
- private final boolean _isWindows = String.valueOf(System.getProperty("os.name")).toLowerCase().contains("windows");
private final Process _process;
private final Integer _pid;
private final String _workingDirectory;
private Set<Integer> _portsUsedByBroker;
+ private final String _brokerCommand;
- public SpawnedBrokerHolder(final Process process, final String workingDirectory, Set<Integer> portsUsedByBroker)
+ public SpawnedBrokerHolder(final Process process, final String workingDirectory, Set<Integer> portsUsedByBroker,
+ String brokerCmd)
{
if(process == null)
{
@@ -48,6 +56,7 @@ public class SpawnedBrokerHolder implements BrokerHolder
_pid = retrieveUnixPidIfPossible();
_workingDirectory = workingDirectory;
_portsUsedByBroker = portsUsedByBroker;
+ _brokerCommand = brokerCmd;
}
@Override
@@ -58,6 +67,11 @@ public class SpawnedBrokerHolder implements BrokerHolder
public void shutdown()
{
+ if(SystemUtils.isWindows())
+ {
+ doWindowsKill();
+ }
+
LOGGER.info("Destroying broker process");
_process.destroy();
@@ -66,12 +80,85 @@ public class SpawnedBrokerHolder implements BrokerHolder
waitUntilPortsAreFree();
}
+ private void doWindowsKill()
+ {
+ try
+ {
+ Process p = Runtime.getRuntime().exec(new String[] {"wmic", "process", "list"});
+ BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
+ String line;
+ String headers = reader.readLine();
+ int processIdOffset = headers.indexOf(" ProcessId") + 1;
+ int parentProcessIdOffset = headers.indexOf(" ParentProcessId") + 1;
+ String parentProcess = null;
+ Map<String,List<String>> parentProcessMap = new HashMap<String, List<String>>();
+
+ while ((line = reader.readLine()) != null)
+ {
+ if(line.length() > processIdOffset)
+ {
+ String processIdStr = line.substring(processIdOffset);
+ processIdStr = processIdStr.substring(0, processIdStr.indexOf(' '));
+ processIdStr.trim();
+
+ String parentProcessIdStr = line.substring(parentProcessIdOffset);
+ parentProcessIdStr = parentProcessIdStr.substring(0, parentProcessIdStr.indexOf(' '));
+ parentProcessIdStr.trim();
+ if(parentProcessIdStr.length() > 0 && (parentProcess == null || parentProcess.equals(parentProcessIdStr)))
+ {
+ List<String> children = parentProcessMap.get(parentProcessIdStr);
+ if(children == null)
+ {
+ children = new ArrayList<String>();
+ parentProcessMap.put(parentProcessIdStr,children);
+ }
+ children.add(processIdStr);
+ }
+ if(line.substring(0,_brokerCommand.length()+7).toLowerCase().contains(_brokerCommand.toLowerCase()))
+ {
+ parentProcess = processIdStr;
+ }
+
+ }
+ if(parentProcess != null)
+ {
+ List<String> children = parentProcessMap.get(parentProcess);
+ if(children != null)
+ {
+ for(String child : children)
+ {
+ p = Runtime.getRuntime().exec(new String[] {"taskkill", "/PID", child, "/T", "/F"});
+ reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
+ while((line = reader.readLine()) != null)
+ {
+ }
+ }
+ }
+ p = Runtime.getRuntime().exec(new String[] {"taskkill", "/PID", parentProcess, "/T", "/F"});
+ reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
+ while((line = reader.readLine()) != null)
+ {
+ }
+ }
+
+ }
+ }
+ catch (IOException e)
+ {
+ LOGGER.error("Error whilst killing process " + _brokerCommand, e);
+ }
+ }
+
@Override
public void kill()
{
if (_pid == null)
{
- LOGGER.info("Destroying broker process");
+ if(SystemUtils.isWindows())
+ {
+ doWindowsKill();
+ }
+ LOGGER.info("Destroying broker process (no PID)");
_process.destroy();
}
else
@@ -113,7 +200,7 @@ public class SpawnedBrokerHolder implements BrokerHolder
private Integer retrieveUnixPidIfPossible()
{
- if(!_isWindows)
+ if(!SystemUtils.isWindows())
{
try
{
diff --git a/qpid/java/test-profiles/Java010Excludes b/qpid/java/test-profiles/Java010Excludes
index 093821647d..8da2b5edd8 100755
--- a/qpid/java/test-profiles/Java010Excludes
+++ b/qpid/java/test-profiles/Java010Excludes
@@ -67,9 +67,5 @@ org.apache.qpid.client.failover.AddressBasedFailoverBehaviourTest#testFlowContro
// QPID-3604: Immediate Prefetch no longer supported by 0-10
org.apache.qpid.client.AsynchMessageListenerTest#testImmediatePrefetchWithMessageListener
-// QPID-2796 : Java 0-10 client only sends heartbeats in response to heartbeats from the server, not timeout based
-org.apache.qpid.client.HeartbeatTest#testUnidirectionalHeartbeating
-org.apache.qpid.client.HeartbeatTest#testHeartbeatsEnabledBrokerSide
-
// Java 0-10 client does not support re-binding the queue to the same exchange
org.apache.qpid.server.queue.QueueBindTest#testQueueCanBeReboundOnTopicExchange
diff --git a/qpid/java/test-profiles/java-bdb-spawn.0-10.testprofile b/qpid/java/test-profiles/java-bdb-spawn.0-10.testprofile
index 78ab05a179..4230888a21 100644
--- a/qpid/java/test-profiles/java-bdb-spawn.0-10.testprofile
+++ b/qpid/java/test-profiles/java-bdb-spawn.0-10.testprofile
@@ -19,7 +19,8 @@
broker.language=java
broker.type=spawned
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0
diff --git a/qpid/java/test-profiles/java-bdb-spawn.0-8.testprofile b/qpid/java/test-profiles/java-bdb-spawn.0-8.testprofile
index 7f6efcbc3d..054eb9c1b6 100644
--- a/qpid/java/test-profiles/java-bdb-spawn.0-8.testprofile
+++ b/qpid/java/test-profiles/java-bdb-spawn.0-8.testprofile
@@ -19,7 +19,8 @@
broker.language=java
broker.type=spawned
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10,AMQP_0_9_1,AMQP_0_9
diff --git a/qpid/java/test-profiles/java-bdb-spawn.0-9-1.testprofile b/qpid/java/test-profiles/java-bdb-spawn.0-9-1.testprofile
index 28668b94f7..65d86d9310 100644
--- a/qpid/java/test-profiles/java-bdb-spawn.0-9-1.testprofile
+++ b/qpid/java/test-profiles/java-bdb-spawn.0-9-1.testprofile
@@ -19,7 +19,8 @@
broker.language=java
broker.type=spawned
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10
diff --git a/qpid/java/test-profiles/java-bdb-spawn.0-9.testprofile b/qpid/java/test-profiles/java-bdb-spawn.0-9.testprofile
index aa8e6830d4..4818cfff28 100644
--- a/qpid/java/test-profiles/java-bdb-spawn.0-9.testprofile
+++ b/qpid/java/test-profiles/java-bdb-spawn.0-9.testprofile
@@ -19,7 +19,8 @@
broker.language=java
broker.type=spawned
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10,AMQP_0_9_1
diff --git a/qpid/java/test-profiles/java-bdb.0-10.testprofile b/qpid/java/test-profiles/java-bdb.0-10.testprofile
index 8c4b145e0b..cf5f608957 100644
--- a/qpid/java/test-profiles/java-bdb.0-10.testprofile
+++ b/qpid/java/test-profiles/java-bdb.0-10.testprofile
@@ -20,7 +20,8 @@
broker.language=java
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0
diff --git a/qpid/java/test-profiles/java-bdb.0-8.testprofile b/qpid/java/test-profiles/java-bdb.0-8.testprofile
index acf031040e..09270f89b0 100644
--- a/qpid/java/test-profiles/java-bdb.0-8.testprofile
+++ b/qpid/java/test-profiles/java-bdb.0-8.testprofile
@@ -20,7 +20,8 @@
broker.language=java
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10,AMQP_0_9_1,AMQP_0_9
diff --git a/qpid/java/test-profiles/java-bdb.0-9-1.testprofile b/qpid/java/test-profiles/java-bdb.0-9-1.testprofile
index fa86720bbb..4248a55f1c 100644
--- a/qpid/java/test-profiles/java-bdb.0-9-1.testprofile
+++ b/qpid/java/test-profiles/java-bdb.0-9-1.testprofile
@@ -20,7 +20,8 @@
broker.language=java
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10
diff --git a/qpid/java/test-profiles/java-bdb.0-9.testprofile b/qpid/java/test-profiles/java-bdb.0-9.testprofile
index ed3d7b2170..cff55d7bde 100644
--- a/qpid/java/test-profiles/java-bdb.0-9.testprofile
+++ b/qpid/java/test-profiles/java-bdb.0-9.testprofile
@@ -20,7 +20,8 @@
broker.language=java
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10,AMQP_0_9_1
diff --git a/qpid/java/test-profiles/java-dby-mem.0-10.testprofile b/qpid/java/test-profiles/java-dby-mem.0-10.testprofile
index bfe031b338..f968d58ec9 100644
--- a/qpid/java/test-profiles/java-dby-mem.0-10.testprofile
+++ b/qpid/java/test-profiles/java-dby-mem.0-10.testprofile
@@ -20,7 +20,8 @@ broker.language=java
broker.version=v0_10
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0
diff --git a/qpid/java/test-profiles/java-dby-mem.0-8.testprofile b/qpid/java/test-profiles/java-dby-mem.0-8.testprofile
index 28bce8e434..b50e17b955 100644
--- a/qpid/java/test-profiles/java-dby-mem.0-8.testprofile
+++ b/qpid/java/test-profiles/java-dby-mem.0-8.testprofile
@@ -20,7 +20,8 @@ broker.version=v0_8
broker.language=java
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10,AMQP_0_9_1,AMQP_0_9
diff --git a/qpid/java/test-profiles/java-dby-mem.0-9-1.testprofile b/qpid/java/test-profiles/java-dby-mem.0-9-1.testprofile
index 0d2f82ebb5..d16d17d220 100644
--- a/qpid/java/test-profiles/java-dby-mem.0-9-1.testprofile
+++ b/qpid/java/test-profiles/java-dby-mem.0-9-1.testprofile
@@ -20,7 +20,8 @@ broker.version=v0_9_1
broker.language=java
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10
diff --git a/qpid/java/test-profiles/java-dby-mem.0-9.testprofile b/qpid/java/test-profiles/java-dby-mem.0-9.testprofile
index 4dd9fbb899..35f2d0aa8c 100644
--- a/qpid/java/test-profiles/java-dby-mem.0-9.testprofile
+++ b/qpid/java/test-profiles/java-dby-mem.0-9.testprofile
@@ -20,7 +20,8 @@ broker.version=v0_9
broker.language=java
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10,AMQP_0_9_1
diff --git a/qpid/java/test-profiles/java-dby-spawn.0-10.testprofile b/qpid/java/test-profiles/java-dby-spawn.0-10.testprofile
index 9795533b52..a3ea69a1ee 100644
--- a/qpid/java/test-profiles/java-dby-spawn.0-10.testprofile
+++ b/qpid/java/test-profiles/java-dby-spawn.0-10.testprofile
@@ -19,7 +19,8 @@
broker.language=java
broker.version=v0_10
broker.type=spawned
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0
diff --git a/qpid/java/test-profiles/java-dby-spawn.0-8.testprofile b/qpid/java/test-profiles/java-dby-spawn.0-8.testprofile
index a980fd181d..8e737cec7c 100644
--- a/qpid/java/test-profiles/java-dby-spawn.0-8.testprofile
+++ b/qpid/java/test-profiles/java-dby-spawn.0-8.testprofile
@@ -19,7 +19,8 @@
broker.version=v0_8
broker.language=java
broker.type=spawned
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10,AMQP_0_9_1,AMQP_0_9
diff --git a/qpid/java/test-profiles/java-dby-spawn.0-9-1.testprofile b/qpid/java/test-profiles/java-dby-spawn.0-9-1.testprofile
index 04428b5021..9de7a4a490 100644
--- a/qpid/java/test-profiles/java-dby-spawn.0-9-1.testprofile
+++ b/qpid/java/test-profiles/java-dby-spawn.0-9-1.testprofile
@@ -19,7 +19,8 @@
broker.version=v0_9_1
broker.language=java
broker.type=spawned
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10
diff --git a/qpid/java/test-profiles/java-dby-spawn.0-9.testprofile b/qpid/java/test-profiles/java-dby-spawn.0-9.testprofile
index 4724eba660..97fff81068 100644
--- a/qpid/java/test-profiles/java-dby-spawn.0-9.testprofile
+++ b/qpid/java/test-profiles/java-dby-spawn.0-9.testprofile
@@ -19,7 +19,8 @@
broker.version=v0_9
broker.language=java
broker.type=spawned
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10,AMQP_0_9_1
diff --git a/qpid/java/test-profiles/java-dby.0-10.testprofile b/qpid/java/test-profiles/java-dby.0-10.testprofile
index a2b1a41c31..07d75577d3 100644
--- a/qpid/java/test-profiles/java-dby.0-10.testprofile
+++ b/qpid/java/test-profiles/java-dby.0-10.testprofile
@@ -20,7 +20,8 @@ broker.language=java
broker.version=v0_10
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0
diff --git a/qpid/java/test-profiles/java-dby.0-8.testprofile b/qpid/java/test-profiles/java-dby.0-8.testprofile
index 509796331f..b24dc8381d 100644
--- a/qpid/java/test-profiles/java-dby.0-8.testprofile
+++ b/qpid/java/test-profiles/java-dby.0-8.testprofile
@@ -20,7 +20,8 @@ broker.version=v0_8
broker.language=java
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10,AMQP_0_9_1,AMQP_0_9
diff --git a/qpid/java/test-profiles/java-dby.0-9-1.testprofile b/qpid/java/test-profiles/java-dby.0-9-1.testprofile
index be087a6344..ec08913626 100644
--- a/qpid/java/test-profiles/java-dby.0-9-1.testprofile
+++ b/qpid/java/test-profiles/java-dby.0-9-1.testprofile
@@ -20,7 +20,8 @@ broker.version=v0_9_1
broker.language=java
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10
diff --git a/qpid/java/test-profiles/java-dby.0-9.testprofile b/qpid/java/test-profiles/java-dby.0-9.testprofile
index 3b5e586ba4..73b1161f6b 100644
--- a/qpid/java/test-profiles/java-dby.0-9.testprofile
+++ b/qpid/java/test-profiles/java-dby.0-9.testprofile
@@ -20,7 +20,8 @@ broker.version=v0_9
broker.language=java
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10,AMQP_0_9_1
diff --git a/qpid/java/test-profiles/java-mms-spawn.0-10.testprofile b/qpid/java/test-profiles/java-mms-spawn.0-10.testprofile
index 71aaf48562..c2f2976d5f 100644
--- a/qpid/java/test-profiles/java-mms-spawn.0-10.testprofile
+++ b/qpid/java/test-profiles/java-mms-spawn.0-10.testprofile
@@ -19,7 +19,8 @@
broker.version=v0_10
broker.language=java
broker.type=spawned
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0
diff --git a/qpid/java/test-profiles/java-mms-spawn.0-8.testprofile b/qpid/java/test-profiles/java-mms-spawn.0-8.testprofile
index 6365fa20f0..74da76edc4 100644
--- a/qpid/java/test-profiles/java-mms-spawn.0-8.testprofile
+++ b/qpid/java/test-profiles/java-mms-spawn.0-8.testprofile
@@ -19,7 +19,8 @@
broker.version=v0_8
broker.language=java
broker.type=spawned
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10,AMQP_0_9_1,AMQP_0_9
diff --git a/qpid/java/test-profiles/java-mms-spawn.0-9-1.testprofile b/qpid/java/test-profiles/java-mms-spawn.0-9-1.testprofile
index 1eb4b00a1d..4438a4293f 100644
--- a/qpid/java/test-profiles/java-mms-spawn.0-9-1.testprofile
+++ b/qpid/java/test-profiles/java-mms-spawn.0-9-1.testprofile
@@ -19,7 +19,8 @@
broker.version=v0_9_1
broker.language=java
broker.type=spawned
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10
diff --git a/qpid/java/test-profiles/java-mms-spawn.0-9.testprofile b/qpid/java/test-profiles/java-mms-spawn.0-9.testprofile
index 4ebce66c05..828ad3fedf 100644
--- a/qpid/java/test-profiles/java-mms-spawn.0-9.testprofile
+++ b/qpid/java/test-profiles/java-mms-spawn.0-9.testprofile
@@ -19,7 +19,8 @@
broker.version=v0_9
broker.language=java
broker.type=spawned
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10,AMQP_0_9_1
diff --git a/qpid/java/test-profiles/java-mms.0-10.testprofile b/qpid/java/test-profiles/java-mms.0-10.testprofile
index 0de5ffea09..33e90b940a 100644
--- a/qpid/java/test-profiles/java-mms.0-10.testprofile
+++ b/qpid/java/test-profiles/java-mms.0-10.testprofile
@@ -20,7 +20,8 @@ broker.language=java
broker.version=v0_10
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0
diff --git a/qpid/java/test-profiles/java-mms.0-8.testprofile b/qpid/java/test-profiles/java-mms.0-8.testprofile
index dddad95157..93365e2e5c 100644
--- a/qpid/java/test-profiles/java-mms.0-8.testprofile
+++ b/qpid/java/test-profiles/java-mms.0-8.testprofile
@@ -20,7 +20,8 @@ broker.language=java
broker.version=v0_8
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10,AMQP_0_9_1,AMQP_0_9
diff --git a/qpid/java/test-profiles/java-mms.0-9-1.testprofile b/qpid/java/test-profiles/java-mms.0-9-1.testprofile
index 3c2f68a2c9..78a4629c9b 100644
--- a/qpid/java/test-profiles/java-mms.0-9-1.testprofile
+++ b/qpid/java/test-profiles/java-mms.0-9-1.testprofile
@@ -20,7 +20,8 @@ broker.language=java
broker.version=v0_9_1
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10
diff --git a/qpid/java/test-profiles/java-mms.0-9.testprofile b/qpid/java/test-profiles/java-mms.0-9.testprofile
index 992168b044..c5edf32bee 100644
--- a/qpid/java/test-profiles/java-mms.0-9.testprofile
+++ b/qpid/java/test-profiles/java-mms.0-9.testprofile
@@ -20,7 +20,8 @@ broker.language=java
broker.version=v0_9
broker.type=internal
#broker.command only used for the second broker during failover tests in this profile
-broker.command=build/bin/qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command=build${file.separator}bin${file.separator}qpid-server -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
+broker.command.windows=build${file.separator}bin${file.separator}qpid-server.bat -sp @STORE_PATH -st @STORE_TYPE -l @LOG_CONFIG_FILE
broker.ready=BRK-1004
broker.stopped=Exception
qpid.broker_default_amqp_protocol_excludes=AMQP_1_0,AMQP_0_10,AMQP_0_9_1
diff --git a/qpid/java/tools/pom.xml b/qpid/java/tools/pom.xml
index edc800a172..0afaa1d274 100644
--- a/qpid/java/tools/pom.xml
+++ b/qpid/java/tools/pom.xml
@@ -34,18 +34,25 @@
</dependency>
<dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>${log4j-version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>${slf4j-version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jms_1.1_spec</artifactId>
<version>1.0</version>
<scope>compile</scope>
</dependency>
-
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>1.2.16</version>
- <scope>compile</scope>
- </dependency>
</dependencies>
<build>