You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2016/10/21 09:32:09 UTC

svn commit: r1765973 [1/7] - in /qpid/java/branches/transfer-queue: bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/ bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/ bdbstore/src/test/java/org/apache/qpid/server/stor...

Author: rgodfrey
Date: Fri Oct 21 09:32:07 2016
New Revision: 1765973

URL: http://svn.apache.org/viewvc?rev=1765973&view=rev
Log:
QPID-946 : Provide mechanism for a broker to route incoming messages to another AMQP service based on address

Added:
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/OutboundProtocolEngine.java   (with props)
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/RemoteHostAddressImpl.java   (with props)
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/RemoteHostImpl.java   (with props)
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/UsernamePasswordCredentialImpl.java   (with props)
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/sasl/
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/sasl/AbstractScramSaslClient.java
      - copied, changed from r1755476, qpid/java/trunk/client/src/main/java/org/apache/qpid/client/security/scram/AbstractScramSaslClient.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/sasl/ScramSHA1SaslClient.java
      - copied, changed from r1755476, qpid/java/trunk/client/src/main/java/org/apache/qpid/client/security/scram/ScramSHA1SaslClient.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/sasl/ScramSHA256SaslClient.java
      - copied, changed from r1755476, qpid/java/trunk/client/src/main/java/org/apache/qpid/client/security/scram/ScramSHA256SaslClient.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/AcquiringMessageInstanceConsumer.java   (with props)
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/BaseMessageInstance.java   (with props)
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/ConsumerOption.java   (with props)
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/MessageInstanceConsumer.java   (with props)
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfigurationChangeListener.java
      - copied, changed from r1765972, qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/NoopConfigurationChangeListener.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/AnonymousCredential.java   (with props)
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/Credential.java   (with props)
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/ExternalCredential.java   (with props)
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/PermissionedObject.java   (with props)
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/RemoteHost.java   (with props)
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/RemoteHostAddress.java   (with props)
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/UsernamePasswordCredential.java   (with props)
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/plugin/OutboundProtocolEngineCreator.java
      - copied, changed from r1755476, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/plugin/ProtocolEngineCreator.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/queue/OrderedBaseQueueEntryList.java
      - copied, changed from r1765972, qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/queue/OrderedQueueEntryList.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/queue/OrderedQueueEntryList.java   (with props)
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/queue/RecoverableBaseQueue.java   (with props)
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transfer/
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transfer/OutboundTransferDestination.java   (with props)
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transfer/QueueContext.java
      - copied, changed from r1755476, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/queue/QueueContext.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transfer/TransferQueue.java   (with props)
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transfer/TransferQueueConsumer.java   (with props)
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transfer/TransferQueueEntry.java   (with props)
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transfer/TransferQueueEntryList.java   (with props)
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transfer/TransferQueueImpl.java   (with props)
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transfer/TransferTarget.java
      - copied, changed from r1755476, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/consumer/ConsumerTarget.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnection.java   (with props)
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingInboundConnection.java
      - copied, changed from r1761440, qpid/java/trunk/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnection.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingOutboundConnection.java   (with props)
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transport/SchedulableConnection.java   (with props)
    qpid/java/branches/transfer-queue/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/MessageContentSourceBody.java   (with props)
    qpid/java/branches/transfer-queue/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/federation/
    qpid/java/branches/transfer-queue/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/federation/FederationDecoder.java   (with props)
    qpid/java/branches/transfer-queue/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/federation/OutboundChannel.java   (with props)
    qpid/java/branches/transfer-queue/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/federation/OutboundConnection_0_8.java   (with props)
    qpid/java/branches/transfer-queue/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/federation/OutboundProtocolEngineCreator_0_8.java   (with props)
    qpid/java/branches/transfer-queue/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/federation/OutboundProtocolEngineCreator_0_9.java   (with props)
    qpid/java/branches/transfer-queue/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/federation/OutboundProtocolEngineCreator_0_9_1.java
      - copied, changed from r1755476, qpid/java/trunk/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ProtocolEngineCreator_0_9_1.java
    qpid/java/branches/transfer-queue/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/federation/TransferSession_0_8.java   (with props)
    qpid/java/branches/transfer-queue/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/federation/TransferTarget_0_8.java   (with props)
Removed:
    qpid/java/branches/transfer-queue/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/NoopConfigurationChangeListener.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/consumer/ConsumerImpl.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/MessageSourceConsumer.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/NoopConfigurationChangeListener.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryListBase.java
Modified:
    qpid/java/branches/transfer-queue/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBCacheSizeSetter.java
    qpid/java/branches/transfer-queue/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHostImpl.java
    qpid/java/branches/transfer-queue/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java
    qpid/java/branches/transfer-queue/bdbstore/src/test/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeOperationalLoggingTest.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/consumer/AbstractConsumerTarget.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/consumer/ConsumerMessageInstancePair.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/consumer/ConsumerTarget.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultDestination.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/filter/FilterSupport.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/MessageDestination.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/MessageInfoImpl.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/MessageInstance.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/MessageSource.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/AbstractConfiguredObject.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/AbstractSystemConfig.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/BrokerImpl.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/BrokerModel.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/ConfiguredObject.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/Consumer.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/Queue.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/model/VirtualHost.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/queue/AbstractQueue.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/queue/BaseQueue.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/queue/DefinedGroupMessageGroupManager.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/queue/LastValueQueueList.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/queue/OrderedQueueEntry.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/queue/QueueConsumer.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/queue/QueueConsumerImpl.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntry.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryImpl.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/queue/QueueEntryList.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/queue/SortedQueueEntryList.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/security/AbstractKeyStore.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/security/AccessControl.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/security/CompoundAccessControl.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/security/TrustStoreMessageSource.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/security/TrustStoreMessageSourceCreator.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/store/VirtualHostStoreUpgraderAndRecoverer.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transport/AbstractAMQPConnection.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transport/NetworkConnectionScheduler.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnectionPlainDelegate.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnectionTLSDelegate.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingConnectionUndecidedDelegate.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transport/NonBlockingNetworkTransport.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/transport/SelectorThread.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractSystemMessageSource.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AsynchronousMessageStoreRecoverer.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/virtualhost/SynchronousMessageStoreRecoverer.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostPropertiesNode.java
    qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/RedirectingVirtualHostImpl.java
    qpid/java/branches/transfer-queue/broker-core/src/test/java/org/apache/qpid/server/consumer/MockConsumer.java
    qpid/java/branches/transfer-queue/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/ConfiguredObjectTypeRegistryTest.java
    qpid/java/branches/transfer-queue/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/hierarchy/InjectedAttributeTest.java
    qpid/java/branches/transfer-queue/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/lifecycle/AbstractConfiguredObjectTest.java
    qpid/java/branches/transfer-queue/broker-core/src/test/java/org/apache/qpid/server/model/testmodels/singleton/AbstractConfiguredObjectTest.java
    qpid/java/branches/transfer-queue/broker-core/src/test/java/org/apache/qpid/server/queue/AbstractQueueTestBase.java
    qpid/java/branches/transfer-queue/broker-core/src/test/java/org/apache/qpid/server/queue/ConsumerListTest.java
    qpid/java/branches/transfer-queue/broker-core/src/test/java/org/apache/qpid/server/queue/MockMessageInstance.java
    qpid/java/branches/transfer-queue/broker-core/src/test/java/org/apache/qpid/server/queue/PriorityQueueTest.java
    qpid/java/branches/transfer-queue/broker-core/src/test/java/org/apache/qpid/server/queue/QueueEntryImplTestBase.java
    qpid/java/branches/transfer-queue/broker-core/src/test/java/org/apache/qpid/server/queue/SimpleQueueEntryImplTest.java
    qpid/java/branches/transfer-queue/broker-core/src/test/java/org/apache/qpid/server/queue/StandardQueueEntryListTest.java
    qpid/java/branches/transfer-queue/broker-core/src/test/java/org/apache/qpid/server/queue/StandardQueueTest.java
    qpid/java/branches/transfer-queue/broker-core/src/test/java/org/apache/qpid/server/security/TrustStoreMessageSourceTest.java
    qpid/java/branches/transfer-queue/broker-core/src/test/java/org/apache/qpid/server/virtualhost/AsynchronousMessageStoreRecovererTest.java
    qpid/java/branches/transfer-queue/broker-core/src/test/java/org/apache/qpid/server/virtualhost/SynchronousMessageStoreRecovererTest.java
    qpid/java/branches/transfer-queue/broker-core/src/test/java/org/apache/qpid/server/virtualhost/VirtualHostPropertiesNodeTest.java
    qpid/java/branches/transfer-queue/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/config/CachingSecurityToken.java
    qpid/java/branches/transfer-queue/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/config/LegacyAccessControlAdapter.java
    qpid/java/branches/transfer-queue/broker-plugins/access-control/src/main/java/org/apache/qpid/server/security/access/config/RuleBasedAccessControl.java
    qpid/java/branches/transfer-queue/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ConsumerTarget_0_10.java
    qpid/java/branches/transfer-queue/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ExplicitAcceptDispositionChangeListener.java
    qpid/java/branches/transfer-queue/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ImplicitAcceptDispositionChangeListener.java
    qpid/java/branches/transfer-queue/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/MessageAcceptCompletionListener.java
    qpid/java/branches/transfer-queue/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSession.java
    qpid/java/branches/transfer-queue/broker-plugins/amqp-0-10-protocol/src/main/java/org/apache/qpid/server/protocol/v0_10/ServerSessionDelegate.java
    qpid/java/branches/transfer-queue/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQChannel.java
    qpid/java/branches/transfer-queue/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQPConnection_0_8Impl.java
    qpid/java/branches/transfer-queue/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ClientDeliveryMethod.java
    qpid/java/branches/transfer-queue/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ConsumerTarget_0_8.java
    qpid/java/branches/transfer-queue/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ExtractResendAndRequeue.java
    qpid/java/branches/transfer-queue/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/ProtocolOutputConverterImpl.java
    qpid/java/branches/transfer-queue/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/RecordDeliveryMethod.java
    qpid/java/branches/transfer-queue/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/ExtractResendAndRequeueTest.java
    qpid/java/branches/transfer-queue/broker-plugins/amqp-0-8-protocol/src/test/java/org/apache/qpid/server/protocol/v0_8/UnacknowledgedMessageMapTest.java
    qpid/java/branches/transfer-queue/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/ConsumerTarget_1_0.java
    qpid/java/branches/transfer-queue/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/SendingLink_1_0.java
    qpid/java/branches/transfer-queue/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/Session_1_0.java
    qpid/java/branches/transfer-queue/broker-plugins/logging-logback/src/main/java/org/apache/qpid/server/logging/logback/AbstractLogger.java
    qpid/java/branches/transfer-queue/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementAddressSpace.java
    qpid/java/branches/transfer-queue/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNode.java
    qpid/java/branches/transfer-queue/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementNodeConsumer.java
    qpid/java/branches/transfer-queue/broker-plugins/management-amqp/src/main/java/org/apache/qpid/server/management/amqp/ManagementResponse.java
    qpid/java/branches/transfer-queue/client/src/main/java/org/apache/qpid/client/url/URLParser.java
    qpid/java/branches/transfer-queue/client/src/test/java/org/apache/qpid/test/unit/client/connectionurl/ConnectionURLTest.java
    qpid/java/branches/transfer-queue/common/src/main/java/org/apache/qpid/framing/FieldTable.java
    qpid/java/branches/transfer-queue/common/src/main/java/org/apache/qpid/framing/HeartbeatBody.java

Modified: qpid/java/branches/transfer-queue/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBCacheSizeSetter.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBCacheSizeSetter.java?rev=1765973&r1=1765972&r2=1765973&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBCacheSizeSetter.java (original)
+++ qpid/java/branches/transfer-queue/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBCacheSizeSetter.java Fri Oct 21 09:32:07 2016
@@ -28,14 +28,14 @@ import org.slf4j.LoggerFactory;
 
 import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.model.ConfiguredObject;
-import org.apache.qpid.server.model.NoopConfigurationChangeListener;
+import org.apache.qpid.server.model.AbstractConfigurationChangeListener;
 import org.apache.qpid.server.model.State;
 import org.apache.qpid.server.model.VirtualHost;
 import org.apache.qpid.server.model.VirtualHostNode;
 import org.apache.qpid.server.util.ServerScopedRuntimeException;
 import org.apache.qpid.server.virtualhost.berkeleydb.BDBVirtualHost;
 
-public class BDBCacheSizeSetter extends NoopConfigurationChangeListener
+public class BDBCacheSizeSetter extends AbstractConfigurationChangeListener
 {
     private static final Logger LOGGER = LoggerFactory.getLogger(BDBCacheSizeSetter.class);
 

Modified: qpid/java/branches/transfer-queue/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHostImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHostImpl.java?rev=1765973&r1=1765972&r2=1765973&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHostImpl.java (original)
+++ qpid/java/branches/transfer-queue/bdbstore/src/main/java/org/apache/qpid/server/virtualhost/berkeleydb/BDBHAReplicaVirtualHostImpl.java Fri Oct 21 09:32:07 2016
@@ -45,6 +45,7 @@ import org.apache.qpid.server.model.Mana
 import org.apache.qpid.server.model.ManagedObject;
 import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
 import org.apache.qpid.server.model.Queue;
+import org.apache.qpid.server.model.RemoteHostAddress;
 import org.apache.qpid.server.model.State;
 import org.apache.qpid.server.model.VirtualHostNode;
 import org.apache.qpid.server.model.port.AmqpPort;
@@ -53,8 +54,10 @@ import org.apache.qpid.server.protocol.L
 import org.apache.qpid.server.stats.StatisticsCounter;
 import org.apache.qpid.server.store.DurableConfigurationStore;
 import org.apache.qpid.server.store.MessageStore;
+import org.apache.qpid.server.transfer.TransferQueue;
 import org.apache.qpid.server.transport.AMQPConnection;
 import org.apache.qpid.server.txn.DtxRegistry;
+import org.apache.qpid.server.util.Action;
 import org.apache.qpid.server.virtualhost.HouseKeepingTask;
 import org.apache.qpid.server.virtualhost.NodeAutoCreationPolicy;
 import org.apache.qpid.server.virtualhost.VirtualHostPrincipal;
@@ -511,6 +514,12 @@ public class BDBHAReplicaVirtualHostImpl
     }
 
     @Override
+    public TransferQueue getTransferQueue()
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
     public Principal getPrincipal()
     {
         return _principal;
@@ -541,6 +550,13 @@ public class BDBHAReplicaVirtualHostImpl
     }
 
     @Override
+    public boolean makeConnection(final RemoteHostAddress<?> address, final Action<Boolean> onConnectionLoss)
+    {
+        throwUnsupportedForReplica();
+        return false;
+    }
+
+    @Override
     public UserPreferences createUserPreferences(final ConfiguredObject<?> object)
     {
         throwUnsupportedForReplica();

Modified: qpid/java/branches/transfer-queue/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java?rev=1765973&r1=1765972&r2=1765973&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java (original)
+++ qpid/java/branches/transfer-queue/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java Fri Oct 21 09:32:07 2016
@@ -45,6 +45,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.qpid.server.configuration.IllegalConfigurationException;
+import org.apache.qpid.server.model.AbstractConfigurationChangeListener;
 import org.apache.qpid.server.model.ConfigurationChangeListener;
 import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.RemoteReplicationNode;
@@ -269,7 +270,7 @@ public class BDBHAVirtualHostNodeTest ex
 
         final AtomicReference<RemoteReplicationNode<?>> lastSeenReplica = new AtomicReference<>();
         final CountDownLatch remoteNodeLatch = new CountDownLatch(2);
-        node1.addChangeListener(new NoopConfigurationChangeListener()
+        node1.addChangeListener(new AbstractConfigurationChangeListener()
         {
             @Override
             public void childAdded(ConfiguredObject<?> object, ConfiguredObject<?> child)
@@ -557,7 +558,7 @@ public class BDBHAVirtualHostNodeTest ex
         Map<String, Object> node1Attributes = _helper.createNodeAttributes(nodeName, groupName, helperAddress, helperAddress, nodeName, nodePortNumber);
         BDBHAVirtualHostNode<?> node = _helper.createAndStartHaVHN(node1Attributes);
         final CountDownLatch stopLatch = new CountDownLatch(1);
-        ConfigurationChangeListener listener = new NoopConfigurationChangeListener()
+        ConfigurationChangeListener listener = new AbstractConfigurationChangeListener()
         {
             @Override
             public void stateChanged(ConfiguredObject<?> object, State oldState, State newState)
@@ -578,7 +579,7 @@ public class BDBHAVirtualHostNodeTest ex
 
         final CountDownLatch stateChangeLatch = new CountDownLatch(1);
         final CountDownLatch roleChangeLatch = new CountDownLatch(1);
-        node.addChangeListener(new NoopConfigurationChangeListener()
+        node.addChangeListener(new AbstractConfigurationChangeListener()
         {
             @Override
             public void stateChanged(final ConfiguredObject<?> object, final State oldState, final State newState)
@@ -637,7 +638,7 @@ public class BDBHAVirtualHostNodeTest ex
         BDBHAVirtualHostNode<?> node = _helper.createAndStartHaVHN(nodeAttributes);
 
         final CountDownLatch stopLatch = new CountDownLatch(1);
-        ConfigurationChangeListener listener = new NoopConfigurationChangeListener()
+        ConfigurationChangeListener listener = new AbstractConfigurationChangeListener()
         {
             @Override
             public void stateChanged(ConfiguredObject<?> object, State oldState, State newState)
@@ -666,7 +667,7 @@ public class BDBHAVirtualHostNodeTest ex
 
         final CountDownLatch stateChangeLatch = new CountDownLatch(1);
         final CountDownLatch roleChangeLatch = new CountDownLatch(1);
-        node.addChangeListener(new NoopConfigurationChangeListener()
+        node.addChangeListener(new AbstractConfigurationChangeListener()
         {
             @Override
             public void stateChanged(final ConfiguredObject<?> object, final State oldState, final State newState)
@@ -719,7 +720,7 @@ public class BDBHAVirtualHostNodeTest ex
 
         final AtomicInteger permittedNodesChangeCounter = new AtomicInteger();
         final CountDownLatch _permittedNodesLatch = new CountDownLatch(1);
-        node2.addChangeListener(new NoopConfigurationChangeListener()
+        node2.addChangeListener(new AbstractConfigurationChangeListener()
         {
             @Override
             public void attributeSet(ConfiguredObject<?> object, String attributeName, Object oldAttributeValue, Object newAttributeValue)
@@ -776,7 +777,7 @@ public class BDBHAVirtualHostNodeTest ex
         BDBHAVirtualHostNode<?> node1 = _helper.createAndStartHaVHN(node1Attributes);
 
         final CountDownLatch stopLatch = new CountDownLatch(1);
-        ConfigurationChangeListener listener = new NoopConfigurationChangeListener()
+        ConfigurationChangeListener listener = new AbstractConfigurationChangeListener()
         {
             @Override
             public void stateChanged(ConfiguredObject<?> object, State oldState, State newState)

Modified: qpid/java/branches/transfer-queue/bdbstore/src/test/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeOperationalLoggingTest.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/bdbstore/src/test/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeOperationalLoggingTest.java?rev=1765973&r1=1765972&r2=1765973&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/bdbstore/src/test/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeOperationalLoggingTest.java (original)
+++ qpid/java/branches/transfer-queue/bdbstore/src/test/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeOperationalLoggingTest.java Fri Oct 21 09:32:07 2016
@@ -20,7 +20,11 @@
  */
 package org.apache.qpid.server.virtualhostnode.berkeleydb;
 
-import static org.mockito.Mockito.*;
+import static org.mockito.Mockito.argThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.reset;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
 import java.util.Collections;
 import java.util.EnumSet;
@@ -28,17 +32,18 @@ import java.util.Map;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
+import org.hamcrest.Description;
+import org.mockito.ArgumentMatcher;
+
 import org.apache.qpid.server.logging.EventLogger;
 import org.apache.qpid.server.logging.LogMessage;
 import org.apache.qpid.server.logging.LogSubject;
 import org.apache.qpid.server.logging.messages.HighAvailabilityMessages;
+import org.apache.qpid.server.model.AbstractConfigurationChangeListener;
 import org.apache.qpid.server.model.ConfiguredObject;
 import org.apache.qpid.server.model.SystemConfig;
-import org.apache.qpid.server.store.berkeleydb.NoopConfigurationChangeListener;
 import org.apache.qpid.test.utils.PortHelper;
 import org.apache.qpid.test.utils.QpidTestCase;
-import org.hamcrest.Description;
-import org.mockito.ArgumentMatcher;
 
 /**
  * Class to test that specific VHN operations result in the expected Operational Log message(s) being performed.
@@ -264,7 +269,7 @@ public class BDBHAVirtualHostNodeOperati
         BDBHAVirtualHostNodeImpl node1 = (BDBHAVirtualHostNodeImpl)_helper.createHaVHN(node1Attributes);
 
         final CountDownLatch remoteNodeAdded = new CountDownLatch(1);
-        node1.addChangeListener(new NoopConfigurationChangeListener()
+        node1.addChangeListener(new AbstractConfigurationChangeListener()
         {
             @Override
             public void childAdded(ConfiguredObject<?> object, ConfiguredObject<?> child)

Modified: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/consumer/AbstractConsumerTarget.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/consumer/AbstractConsumerTarget.java?rev=1765973&r1=1765972&r2=1765973&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/consumer/AbstractConsumerTarget.java (original)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/consumer/AbstractConsumerTarget.java Fri Oct 21 09:32:07 2016
@@ -35,6 +35,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.qpid.server.message.MessageInstance;
+import org.apache.qpid.server.message.MessageInstanceConsumer;
 import org.apache.qpid.server.transport.AMQPConnection;
 import org.apache.qpid.server.util.StateChangeListener;
 
@@ -193,7 +194,7 @@ public abstract class AbstractConsumerTa
     }
 
     @Override
-    public final long send(final ConsumerImpl consumer, MessageInstance entry, boolean batch)
+    public final long send(final MessageInstanceConsumer consumer, MessageInstance entry, boolean batch)
     {
         AMQPConnection<?> amqpConnection = getSessionModel().getAMQPConnection();
         amqpConnection.reserveOutboundMessageSpace(entry.getMessage().getSize());
@@ -202,7 +203,7 @@ public abstract class AbstractConsumerTa
         return entry.getMessage().getSize();
     }
 
-    protected abstract void doSend(final ConsumerImpl consumer, MessageInstance entry, boolean batch);
+    protected abstract void doSend(final MessageInstanceConsumer consumer, MessageInstance entry, boolean batch);
 
     @Override
     public boolean hasMessagesToSend()
@@ -219,7 +220,7 @@ public abstract class AbstractConsumerTa
             try
             {
 
-                ConsumerImpl consumer = consumerMessage.getConsumer();
+                MessageInstanceConsumer consumer = consumerMessage.getConsumer();
                 MessageInstance entry = consumerMessage.getEntry();
                 boolean batch = consumerMessage.isBatch();
                 doSend(consumer, entry, batch);

Modified: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/consumer/ConsumerMessageInstancePair.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/consumer/ConsumerMessageInstancePair.java?rev=1765973&r1=1765972&r2=1765973&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/consumer/ConsumerMessageInstancePair.java (original)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/consumer/ConsumerMessageInstancePair.java Fri Oct 21 09:32:07 2016
@@ -20,16 +20,17 @@
 package org.apache.qpid.server.consumer;
 
 import org.apache.qpid.server.message.MessageInstance;
+import org.apache.qpid.server.message.MessageInstanceConsumer;
 import org.apache.qpid.server.message.MessageReference;
 
 public class ConsumerMessageInstancePair
 {
-    private final ConsumerImpl _consumer;
+    private final MessageInstanceConsumer _consumer;
     private final MessageInstance _entry;
     private final boolean _batch;
     private final MessageReference _reference;
 
-    public ConsumerMessageInstancePair(final ConsumerImpl consumer, final MessageInstance entry, final boolean batch)
+    public ConsumerMessageInstancePair(final MessageInstanceConsumer consumer, final MessageInstance entry, final boolean batch)
     {
         _consumer = consumer;
         _entry = entry;
@@ -38,7 +39,7 @@ public class ConsumerMessageInstancePair
 
     }
 
-    public ConsumerImpl getConsumer()
+    public MessageInstanceConsumer getConsumer()
     {
         return _consumer;
     }

Modified: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/consumer/ConsumerTarget.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/consumer/ConsumerTarget.java?rev=1765973&r1=1765972&r2=1765973&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/consumer/ConsumerTarget.java (original)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/consumer/ConsumerTarget.java Fri Oct 21 09:32:07 2016
@@ -21,6 +21,7 @@
 package org.apache.qpid.server.consumer;
 
 import org.apache.qpid.server.message.MessageInstance;
+import org.apache.qpid.server.message.MessageInstanceConsumer;
 import org.apache.qpid.server.message.ServerMessage;
 import org.apache.qpid.server.protocol.AMQSessionModel;
 import org.apache.qpid.server.util.StateChangeListener;
@@ -48,9 +49,9 @@ public interface ConsumerTarget
 
     State getState();
 
-    void consumerAdded(ConsumerImpl sub);
+    void consumerAdded(MessageInstanceConsumer consumer);
 
-    void consumerRemoved(ConsumerImpl sub);
+    void consumerRemoved(MessageInstanceConsumer consumer);
 
     void notifyCurrentState();
 
@@ -62,7 +63,7 @@ public interface ConsumerTarget
 
     AMQSessionModel getSessionModel();
 
-    long send(final ConsumerImpl consumer, MessageInstance entry, boolean batch);
+    long send(final MessageInstanceConsumer consumer, MessageInstance entry, boolean batch);
 
     boolean hasMessagesToSend();
 

Modified: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java?rev=1765973&r1=1765972&r2=1765973&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java (original)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/exchange/AbstractExchange.java Fri Oct 21 09:32:07 2016
@@ -39,18 +39,18 @@ import com.google.common.util.concurrent
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
-import org.apache.qpid.server.configuration.updater.Task;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.qpid.exchange.ExchangeDefaults;
 import org.apache.qpid.server.binding.BindingImpl;
+import org.apache.qpid.server.configuration.updater.Task;
 import org.apache.qpid.server.logging.EventLogger;
 import org.apache.qpid.server.logging.LogSubject;
 import org.apache.qpid.server.logging.messages.ExchangeMessages;
 import org.apache.qpid.server.logging.subjects.ExchangeLogSubject;
+import org.apache.qpid.server.message.BaseMessageInstance;
 import org.apache.qpid.server.message.InstanceProperties;
-import org.apache.qpid.server.message.MessageInstance;
 import org.apache.qpid.server.message.MessageReference;
 import org.apache.qpid.server.message.ServerMessage;
 import org.apache.qpid.server.model.AbstractConfiguredObject;
@@ -442,7 +442,7 @@ public abstract class AbstractExchange<T
                                                                                         final String routingAddress,
                                                                                         final InstanceProperties instanceProperties,
                                                                                         final ServerTransaction txn,
-                                                                                        final Action<? super MessageInstance> postEnqueueAction)
+                                                                                        final Action<? super BaseMessageInstance> postEnqueueAction)
     {
         if (_virtualHost.getState() != State.ACTIVE)
         {

Modified: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultDestination.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultDestination.java?rev=1765973&r1=1765972&r2=1765973&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultDestination.java (original)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/exchange/DefaultDestination.java Fri Oct 21 09:32:07 2016
@@ -19,9 +19,9 @@
 package org.apache.qpid.server.exchange;
 
 import org.apache.qpid.exchange.ExchangeDefaults;
+import org.apache.qpid.server.message.BaseMessageInstance;
 import org.apache.qpid.server.message.InstanceProperties;
 import org.apache.qpid.server.message.MessageDestination;
-import org.apache.qpid.server.message.MessageInstance;
 import org.apache.qpid.server.message.ServerMessage;
 import org.apache.qpid.server.model.Exchange;
 import org.apache.qpid.server.model.VirtualHost;
@@ -50,13 +50,13 @@ public class DefaultDestination implemen
                                                                                         String routingAddress,
                                                                                         final InstanceProperties instanceProperties,
                                                                                         final ServerTransaction txn,
-                                                                                        final Action<? super MessageInstance> postEnqueueAction)
+                                                                                        final Action<? super BaseMessageInstance> postEnqueueAction)
     {
         if(routingAddress == null || routingAddress.trim().equals(""))
         {
             return 0;
         }
-        final MessageDestination dest = _virtualHost.getAttainedMessageDestination(routingAddress);
+        MessageDestination dest = _virtualHost.getAttainedMessageDestination(routingAddress);
         if(dest == null)
         {
             routingAddress = _virtualHost.getLocalAddress(routingAddress);
@@ -71,10 +71,10 @@ public class DefaultDestination implemen
             }
             else if(!routingAddress.contains("/"))
             {
-                Exchange<?> exchange = _virtualHost.getAttainedChildFromAddress(Exchange.class, routingAddress);
-                if(exchange != null)
+                dest = _virtualHost.getAttainedMessageDestination(routingAddress);
+                if(dest != null)
                 {
-                    return exchange.send(message, "", instanceProperties, txn, postEnqueueAction);
+                    return dest.send(message, dest instanceof Exchange ? "" : routingAddress, instanceProperties, txn, postEnqueueAction);
                 }
             }
             return 0;

Added: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/OutboundProtocolEngine.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/OutboundProtocolEngine.java?rev=1765973&view=auto
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/OutboundProtocolEngine.java (added)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/OutboundProtocolEngine.java Fri Oct 21 09:32:07 2016
@@ -0,0 +1,32 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.server.federation;
+
+import org.apache.qpid.server.transport.ProtocolEngine;
+import org.apache.qpid.server.transport.SchedulableConnection;
+import org.apache.qpid.server.util.Action;
+
+public interface OutboundProtocolEngine extends ProtocolEngine
+{
+    void setConnection(SchedulableConnection connection);
+
+    void setOnClosedTask(Action<Boolean> onConnectionLoss);
+}

Propchange: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/OutboundProtocolEngine.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/RemoteHostAddressImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/RemoteHostAddressImpl.java?rev=1765973&view=auto
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/RemoteHostAddressImpl.java (added)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/RemoteHostAddressImpl.java Fri Oct 21 09:32:07 2016
@@ -0,0 +1,179 @@
+/*
+ *
+ * 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.federation;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
+
+import org.apache.qpid.configuration.CommonProperties;
+import org.apache.qpid.server.configuration.IllegalConfigurationException;
+import org.apache.qpid.server.model.AbstractConfiguredObject;
+import org.apache.qpid.server.model.KeyStore;
+import org.apache.qpid.server.model.ManagedAttributeField;
+import org.apache.qpid.server.model.ManagedObject;
+import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
+import org.apache.qpid.server.model.Protocol;
+import org.apache.qpid.server.model.RemoteHost;
+import org.apache.qpid.server.model.RemoteHostAddress;
+import org.apache.qpid.server.model.State;
+import org.apache.qpid.server.model.StateTransition;
+import org.apache.qpid.server.model.Transport;
+import org.apache.qpid.server.model.TrustStore;
+import org.apache.qpid.server.util.ParameterizedTypes;
+
+@ManagedObject( category = false, type = RemoteHostAddress.REMOTE_HOST_ADDRESS_TYPE )
+class RemoteHostAddressImpl extends AbstractConfiguredObject<RemoteHostAddressImpl> implements RemoteHostAddress<RemoteHostAddressImpl>
+{
+    @ManagedAttributeField
+    private String _address;
+    @ManagedAttributeField
+    private int _port;
+    @ManagedAttributeField
+    private String _hostName;
+    @ManagedAttributeField
+    private Protocol _protocol;
+    @ManagedAttributeField
+    private Transport _transport;
+    @ManagedAttributeField
+    private KeyStore _keyStore;
+    @ManagedAttributeField
+    private Collection<TrustStore> _trustStores;
+    @ManagedAttributeField
+    private int _desiredHeartbeatInterval;
+
+    private List<String> _tlsProtocolBlackList;
+    private List<String> _tlsProtocolWhiteList;
+
+    private List<String> _tlsCipherSuiteWhiteList;
+    private List<String> _tlsCipherSuiteBlackList;
+
+
+    @ManagedObjectFactoryConstructor
+    public RemoteHostAddressImpl(Map<String, Object> attributes, RemoteHost<?> remoteHost)
+    {
+        super(parentsMap(remoteHost), attributes);
+    }
+
+
+    @Override
+    protected void onOpen()
+    {
+        super.onOpen();
+        _tlsProtocolWhiteList = getContextValue(List.class, ParameterizedTypes.LIST_OF_STRINGS, CommonProperties.QPID_SECURITY_TLS_PROTOCOL_WHITE_LIST);
+        _tlsProtocolBlackList = getContextValue(List.class, ParameterizedTypes.LIST_OF_STRINGS, CommonProperties.QPID_SECURITY_TLS_PROTOCOL_BLACK_LIST);
+        _tlsCipherSuiteWhiteList = getContextValue(List.class, ParameterizedTypes.LIST_OF_STRINGS, CommonProperties.QPID_SECURITY_TLS_CIPHER_SUITE_WHITE_LIST);
+        _tlsCipherSuiteBlackList = getContextValue(List.class, ParameterizedTypes.LIST_OF_STRINGS, CommonProperties.QPID_SECURITY_TLS_CIPHER_SUITE_BLACK_LIST);
+    }
+
+
+    @Override
+    public String getAddress()
+    {
+        return _address;
+    }
+
+    @Override
+    public int getPort()
+    {
+        return _port;
+    }
+
+    @Override
+    public String getHostName()
+    {
+        return _hostName;
+    }
+
+    @Override
+    public Protocol getProtocol()
+    {
+        return _protocol;
+    }
+
+    @Override
+    public Transport getTransport()
+    {
+        return _transport;
+    }
+
+    @Override
+    public KeyStore getKeyStore()
+    {
+        return _keyStore;
+    }
+
+    @Override
+    public Collection<TrustStore> getTrustStores()
+    {
+        return _trustStores;
+    }
+
+    @Override
+    public int getDesiredHeartbeatInterval()
+    {
+        return _desiredHeartbeatInterval;
+    }
+
+    @Override
+    public List<String> getTlsProtocolWhiteList()
+    {
+        return _tlsProtocolWhiteList;
+    }
+
+    @Override
+    public List<String> getTlsProtocolBlackList()
+    {
+        return _tlsProtocolBlackList;
+    }
+
+    @Override
+    public List<String> getTlsCipherSuiteWhiteList()
+    {
+        return _tlsCipherSuiteWhiteList;
+    }
+
+    @Override
+    public List<String> getTlsCipherSuiteBlackList()
+    {
+        return _tlsCipherSuiteBlackList;
+    }
+
+    @StateTransition( currentState = {State.UNINITIALIZED, State.QUIESCED, State.ERRORED}, desiredState = State.ACTIVE )
+    protected ListenableFuture<Void> activate()
+    {
+        try
+        {
+            setState(State.ACTIVE);
+        }
+        catch (RuntimeException e)
+        {
+            setState(State.ERRORED);
+            throw new IllegalConfigurationException("Unable to active remote host address '" + getName() + "'", e);
+        }
+        return Futures.immediateFuture(null);
+    }
+
+
+}

Propchange: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/RemoteHostAddressImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/RemoteHostImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/RemoteHostImpl.java?rev=1765973&view=auto
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/RemoteHostImpl.java (added)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/RemoteHostImpl.java Fri Oct 21 09:32:07 2016
@@ -0,0 +1,233 @@
+/*
+ *
+ * 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.federation;
+
+import java.security.AccessControlContext;
+import java.util.Collection;
+import java.util.EnumSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.qpid.server.model.AbstractConfigurationChangeListener;
+import org.apache.qpid.server.model.AbstractConfiguredObject;
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.ManagedAttributeField;
+import org.apache.qpid.server.model.ManagedObject;
+import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
+import org.apache.qpid.server.model.RemoteHost;
+import org.apache.qpid.server.model.RemoteHostAddress;
+import org.apache.qpid.server.model.State;
+import org.apache.qpid.server.model.StateTransition;
+import org.apache.qpid.server.model.VirtualHost;
+import org.apache.qpid.server.util.Action;
+import org.apache.qpid.server.virtualhost.HouseKeepingTask;
+
+@ManagedObject( category = false, type = RemoteHost.REMOTE_HOST_TYPE )
+class RemoteHostImpl extends AbstractConfiguredObject<RemoteHostImpl> implements RemoteHost<RemoteHostImpl>
+{
+    private static final Logger LOGGER = LoggerFactory.getLogger(RemoteHostImpl.class);
+
+    private final VirtualHost<?> _virtualHost;
+    @ManagedAttributeField
+    private int _retryPeriod;
+
+    @ManagedAttributeField
+    private boolean _redirectFollowed;
+
+    @ManagedAttributeField
+    private Collection<String> _routableAddresses;
+
+    private final AccessControlContext _createConnectionContext;
+    private final CreateConnectionTask _createConnectionTask;
+
+    enum ConnectionState
+    {
+        DISCONNECTED,
+        CONNECTING,
+        CONNECTED,
+        STOPPED
+    }
+
+    private ConnectionState _connectionState = ConnectionState.STOPPED;
+
+    @ManagedObjectFactoryConstructor
+    public RemoteHostImpl(Map<String, Object> attributes, VirtualHost<?> virtualHost)
+    {
+        super(parentsMap(virtualHost), attributes);
+        _virtualHost = virtualHost;
+        _createConnectionContext =
+                getSystemTaskControllerContext("Create connection " + getName(), _virtualHost.getPrincipal());
+        _createConnectionTask = new CreateConnectionTask();
+    }
+
+    @Override
+    public int getRetryPeriod()
+    {
+        return _retryPeriod;
+    }
+
+    @Override
+    public boolean isRedirectFollowed()
+    {
+        return _redirectFollowed;
+    }
+
+    @Override
+    public Collection<String> getRoutableAddresses()
+    {
+        return _routableAddresses;
+    }
+
+    @StateTransition(currentState = {State.UNINITIALIZED, State.ERRORED, State.STOPPED}, desiredState = State.ACTIVE)
+    private ListenableFuture<Void> onActivate()
+    {
+        setState(State.ACTIVE);
+        _failoverIterator = null;
+        if (_virtualHost.getState() == State.ACTIVE)
+        {
+            _createConnectionTask.scheduleNow();
+        }
+        else if (_virtualHost.getDesiredState() == State.ACTIVE)
+        {
+            _virtualHost.addChangeListener(new AbstractConfigurationChangeListener()
+            {
+                @Override
+                public void stateChanged(final ConfiguredObject<?> object, final State oldState, final State newState)
+                {
+                    if (newState == State.ACTIVE)
+                    {
+
+                        _createConnectionTask.scheduleNow();
+
+                        _virtualHost.removeChangeListener(this);
+                    }
+                    else if (object.getDesiredState() != State.ACTIVE)
+                    {
+                        _virtualHost.removeChangeListener(this);
+                    }
+                }
+            });
+        }
+        return Futures.immediateFuture(null);
+    }
+
+    private Iterator<RemoteHostAddress> _failoverIterator;
+
+
+    private void setConnectionState(ConnectionState connectionState)
+    {
+        _connectionState = connectionState;
+    }
+
+    private synchronized void makeConnection()
+    {
+        LOGGER.debug("makeConnection called with state: {}, connectionState: {}", getState(), _connectionState);
+        if(getState() == State.ACTIVE && !EnumSet.of(ConnectionState.CONNECTED, ConnectionState.CONNECTING).contains(_connectionState))
+        {
+            if (_failoverIterator == null || !_failoverIterator.hasNext())
+            {
+                _failoverIterator = getChildren(RemoteHostAddress.class).iterator();
+            }
+            if (_failoverIterator.hasNext())
+            {
+                RemoteHostAddress<?> address = _failoverIterator.next();
+                setConnectionState(ConnectionState.CONNECTING);
+                boolean connected = _virtualHost.makeConnection(address, new Action<Boolean>()
+                {
+
+                    @Override
+                    public void performAction(final Boolean wasConnected)
+                    {
+                        setConnectionState(ConnectionState.DISCONNECTED);
+                        if (wasConnected)
+                        {
+                            _failoverIterator = null;
+                            _createConnectionTask.scheduleNow();
+                        }
+                        else if (_failoverIterator.hasNext())
+                        {
+                            _createConnectionTask.scheduleNow();
+                        }
+                        else
+                        {
+                            _createConnectionTask.schedule(1000L * _retryPeriod);
+                        }
+                    }
+                });
+
+                if (connected)
+                {
+                    setConnectionState(ConnectionState.CONNECTED);
+                }
+                else
+                {
+                    setConnectionState(ConnectionState.DISCONNECTED);
+                    if (_failoverIterator.hasNext())
+                    {
+                        _createConnectionTask.scheduleNow();
+                    }
+                    else
+                    {
+                        _createConnectionTask.schedule(1000L * _retryPeriod);
+                    }
+                }
+            }
+        }
+
+    }
+
+    private class CreateConnectionTask extends HouseKeepingTask
+    {
+
+        private final AtomicBoolean _scheduled = new AtomicBoolean();
+
+        public CreateConnectionTask()
+        {
+            super("Create connection: " + RemoteHostImpl.this.getName(), _virtualHost, _createConnectionContext);
+        }
+
+        @Override
+        public void execute()
+        {
+            _scheduled.set(false);
+            makeConnection();
+        }
+
+        public void schedule(long delay)
+        {
+            if(_scheduled.compareAndSet(false, true))
+            {
+                _virtualHost.scheduleTask(delay, this);
+            }
+        }
+
+        public void scheduleNow()
+        {
+            schedule(0L);
+        }
+    }
+}

Propchange: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/RemoteHostImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/UsernamePasswordCredentialImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/UsernamePasswordCredentialImpl.java?rev=1765973&view=auto
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/UsernamePasswordCredentialImpl.java (added)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/UsernamePasswordCredentialImpl.java Fri Oct 21 09:32:07 2016
@@ -0,0 +1,88 @@
+/*
+ *
+ * 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.federation;
+
+import java.util.List;
+import java.util.Map;
+
+import javax.security.sasl.SaslClient;
+
+import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
+
+import org.apache.qpid.server.federation.sasl.ScramSHA1SaslClient;
+import org.apache.qpid.server.federation.sasl.ScramSHA256SaslClient;
+import org.apache.qpid.server.model.AbstractConfiguredObject;
+import org.apache.qpid.server.model.ManagedAttributeField;
+import org.apache.qpid.server.model.ManagedObjectFactoryConstructor;
+import org.apache.qpid.server.model.RemoteHost;
+import org.apache.qpid.server.model.State;
+import org.apache.qpid.server.model.StateTransition;
+import org.apache.qpid.server.model.UsernamePasswordCredential;
+
+class UsernamePasswordCredentialImpl extends AbstractConfiguredObject<UsernamePasswordCredentialImpl>
+        implements UsernamePasswordCredential<UsernamePasswordCredentialImpl>
+{
+    @ManagedAttributeField
+    private String _username;
+    @ManagedAttributeField
+    private String _password;
+
+    @ManagedObjectFactoryConstructor
+    UsernamePasswordCredentialImpl(Map<String, Object> attributes, RemoteHost<?> host)
+    {
+        super(parentsMap(host), attributes);
+    }
+
+        @Override
+    public SaslClient getSaslClient(final List<String> mechanisms)
+    {
+        if(mechanisms.contains(ScramSHA256SaslClient.MECHANISM))
+        {
+            return new ScramSHA256SaslClient(this);
+        }
+        else if(mechanisms.contains(ScramSHA1SaslClient.MECHANISM))
+        {
+            return new ScramSHA1SaslClient(this);
+        }
+        return null;
+    }
+
+    @Override
+    public String getUsername()
+    {
+        return _username;
+    }
+
+    @Override
+    public String getPassword()
+    {
+        return _password;
+    }
+
+    @StateTransition( currentState = {State.UNINITIALIZED, State.QUIESCED, State.ERRORED}, desiredState = State.ACTIVE )
+    protected ListenableFuture<Void> activate()
+    {
+        setState(State.ACTIVE);
+        return Futures.immediateFuture(null);
+    }
+
+}

Propchange: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/UsernamePasswordCredentialImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Copied: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/sasl/AbstractScramSaslClient.java (from r1755476, qpid/java/trunk/client/src/main/java/org/apache/qpid/client/security/scram/AbstractScramSaslClient.java)
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/sasl/AbstractScramSaslClient.java?p2=qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/sasl/AbstractScramSaslClient.java&p1=qpid/java/trunk/client/src/main/java/org/apache/qpid/client/security/scram/AbstractScramSaslClient.java&r1=1755476&r2=1765973&rev=1765973&view=diff
==============================================================================
--- qpid/java/trunk/client/src/main/java/org/apache/qpid/client/security/scram/AbstractScramSaslClient.java (original)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/sasl/AbstractScramSaslClient.java Fri Oct 21 09:32:07 2016
@@ -18,7 +18,7 @@
  * under the License.
  *
  */
-package org.apache.qpid.client.security.scram;
+package org.apache.qpid.server.federation.sasl;
 
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
@@ -31,15 +31,12 @@ import java.util.UUID;
 
 import javax.crypto.Mac;
 import javax.crypto.spec.SecretKeySpec;
-import javax.security.auth.callback.Callback;
-import javax.security.auth.callback.CallbackHandler;
-import javax.security.auth.callback.NameCallback;
-import javax.security.auth.callback.PasswordCallback;
-import javax.security.auth.callback.UnsupportedCallbackException;
 import javax.security.sasl.SaslClient;
 import javax.security.sasl.SaslException;
 import javax.xml.bind.DatatypeConverter;
 
+import org.apache.qpid.server.model.UsernamePasswordCredential;
+
 public abstract class AbstractScramSaslClient implements SaslClient
 {
 
@@ -68,19 +65,19 @@ public abstract class AbstractScramSaslC
 
     public final String _mechanism;
 
-    private final CallbackHandler _callbackHandler;
+    private final UsernamePasswordCredential<?> _credentials;
 
     private State _state = State.INITIAL;
 
-    public AbstractScramSaslClient(final CallbackHandler cbh,
+    public AbstractScramSaslClient(final UsernamePasswordCredential credentials,
                                    final String mechanism,
                                    final String digestName,
                                    final String hmacName)
     {
-        _callbackHandler = cbh;
         _mechanism = mechanism;
         _digestName = digestName;
         _hmacName = hmacName;
+        _credentials = credentials;
 
     }
 
@@ -176,9 +173,7 @@ public abstract class AbstractScramSaslC
             {
                 throw new SaslException("Iteration count " + _iterationCount + " is not a positive integer");
             }
-            PasswordCallback passwordCallback = new PasswordCallback("Password", false);
-            _callbackHandler.handle(new Callback[] { passwordCallback });
-            byte[] passwordBytes = saslPrep(new String(passwordCallback.getPassword())).getBytes("UTF-8");
+            byte[] passwordBytes = saslPrep(_credentials.getPassword()).getBytes("UTF-8");
 
             byte[] saltedPassword = generateSaltedPassword(passwordBytes);
 
@@ -206,23 +201,7 @@ public abstract class AbstractScramSaslC
                                            + ",p=" + DatatypeConverter.printBase64Binary(clientProof);
             return finalMessageWithProof.getBytes();
         }
-        catch (UnsupportedEncodingException e)
-        {
-            throw new SaslException(e.getMessage(), e);
-        }
-        catch (IllegalArgumentException e)
-        {
-            throw new SaslException(e.getMessage(), e);
-        }
-        catch (UnsupportedCallbackException e)
-        {
-            throw new SaslException(e.getMessage(), e);
-        }
-        catch (IOException e)
-        {
-            throw new SaslException(e.getMessage(), e);
-        }
-        catch (NoSuchAlgorithmException e)
+        catch (IllegalArgumentException | NoSuchAlgorithmException | IOException e)
         {
             throw new SaslException(e.getMessage(), e);
         }
@@ -284,19 +263,13 @@ public abstract class AbstractScramSaslC
         try
         {
             StringBuffer buf = new StringBuffer("n=");
-            NameCallback nameCallback = new NameCallback("Username?");
-            _callbackHandler.handle(new Callback[] { nameCallback });
-            _username = nameCallback.getName();
+            _username = _credentials.getUsername();
             buf.append(saslPrep(_username));
             buf.append(",r=");
             buf.append(_clientNonce);
             _clientFirstMessageBare = buf.toString();
             return (GS2_HEADER + _clientFirstMessageBare).getBytes(ASCII);
         }
-        catch (UnsupportedCallbackException e)
-        {
-            throw new SaslException(e.getMessage(), e);
-        }
         catch (IOException e)
         {
             throw new SaslException(e.getMessage(), e);

Copied: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/sasl/ScramSHA1SaslClient.java (from r1755476, qpid/java/trunk/client/src/main/java/org/apache/qpid/client/security/scram/ScramSHA1SaslClient.java)
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/sasl/ScramSHA1SaslClient.java?p2=qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/sasl/ScramSHA1SaslClient.java&p1=qpid/java/trunk/client/src/main/java/org/apache/qpid/client/security/scram/ScramSHA1SaslClient.java&r1=1755476&r2=1765973&rev=1765973&view=diff
==============================================================================
--- qpid/java/trunk/client/src/main/java/org/apache/qpid/client/security/scram/ScramSHA1SaslClient.java (original)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/sasl/ScramSHA1SaslClient.java Fri Oct 21 09:32:07 2016
@@ -18,17 +18,17 @@
  * under the License.
  *
  */
-package org.apache.qpid.client.security.scram;
+package org.apache.qpid.server.federation.sasl;
 
-import javax.security.auth.callback.CallbackHandler;
+import org.apache.qpid.server.model.UsernamePasswordCredential;
 
 public class ScramSHA1SaslClient extends AbstractScramSaslClient
 {
 
     public static final String MECHANISM = "SCRAM-SHA-1";
 
-    public ScramSHA1SaslClient(final CallbackHandler cbh)
+    public ScramSHA1SaslClient(final UsernamePasswordCredential<?> credentials)
     {
-        super(cbh, MECHANISM, "SHA-1", "HmacSHA1");
+        super(credentials, MECHANISM, "SHA-1", "HmacSHA1");
     }
 }

Copied: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/sasl/ScramSHA256SaslClient.java (from r1755476, qpid/java/trunk/client/src/main/java/org/apache/qpid/client/security/scram/ScramSHA256SaslClient.java)
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/sasl/ScramSHA256SaslClient.java?p2=qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/sasl/ScramSHA256SaslClient.java&p1=qpid/java/trunk/client/src/main/java/org/apache/qpid/client/security/scram/ScramSHA256SaslClient.java&r1=1755476&r2=1765973&rev=1765973&view=diff
==============================================================================
--- qpid/java/trunk/client/src/main/java/org/apache/qpid/client/security/scram/ScramSHA256SaslClient.java (original)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/federation/sasl/ScramSHA256SaslClient.java Fri Oct 21 09:32:07 2016
@@ -18,17 +18,17 @@
  * under the License.
  *
  */
-package org.apache.qpid.client.security.scram;
+package org.apache.qpid.server.federation.sasl;
 
-import javax.security.auth.callback.CallbackHandler;
+import org.apache.qpid.server.model.UsernamePasswordCredential;
 
 public class ScramSHA256SaslClient extends AbstractScramSaslClient
 {
 
     public static final String MECHANISM = "SCRAM-SHA-256";
 
-    public ScramSHA256SaslClient(final CallbackHandler cbh)
+    public ScramSHA256SaslClient(final UsernamePasswordCredential<?> credentials)
     {
-        super(cbh, MECHANISM, "SHA-256", "HmacSHA256");
+        super(credentials, MECHANISM, "SHA-256", "HmacSHA256");
     }
 }

Modified: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/filter/FilterSupport.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/filter/FilterSupport.java?rev=1765973&r1=1765972&r2=1765973&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/filter/FilterSupport.java (original)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/filter/FilterSupport.java Fri Oct 21 09:32:07 2016
@@ -31,10 +31,9 @@ import org.apache.qpid.common.AMQPFilter
 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.consumer.ConsumerImpl;
-import org.apache.qpid.server.message.MessageSource;
 import org.apache.qpid.server.model.Queue;
 import org.apache.qpid.server.plugin.PluggableService;
+import org.apache.qpid.server.queue.QueueConsumer;
 
 public class FilterSupport
 {
@@ -119,9 +118,9 @@ public class FilterSupport
     @PluggableService
     public static final class NoLocalFilter implements MessageFilter
     {
-        private final MessageSource _queue;
+        private final Queue<?> _queue;
 
-        private NoLocalFilter(MessageSource queue)
+        private NoLocalFilter(Queue<?> queue)
         {
             _queue = queue;
         }
@@ -135,8 +134,8 @@ public class FilterSupport
         public boolean matches(Filterable message)
         {
 
-            final Collection<? extends ConsumerImpl> consumers = _queue.getConsumers();
-            for(ConsumerImpl c : consumers)
+            final Collection<QueueConsumer<?>> consumers = _queue.getConsumers();
+            for(QueueConsumer<?> c : consumers)
             {
                 if(c.getSessionModel().getConnectionReference() == message.getConnectionReference())
                 {

Added: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/AcquiringMessageInstanceConsumer.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/AcquiringMessageInstanceConsumer.java?rev=1765973&view=auto
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/AcquiringMessageInstanceConsumer.java (added)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/AcquiringMessageInstanceConsumer.java Fri Oct 21 09:32:07 2016
@@ -0,0 +1,36 @@
+/*
+ *
+ * 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.QueueEntry;
+
+public interface AcquiringMessageInstanceConsumer<X extends AcquiringMessageInstanceConsumer<X, T>, T> extends MessageInstanceConsumer
+{
+    MessageInstance.StealableConsumerAcquiredState<X> getOwningState();
+
+    T getTarget();
+
+    void acquisitionRemoved(QueueEntry queueEntry);
+
+    long getConsumerNumber();
+
+    boolean resend(QueueEntry queueEntry);
+}

Propchange: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/AcquiringMessageInstanceConsumer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/BaseMessageInstance.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/BaseMessageInstance.java?rev=1765973&view=auto
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/BaseMessageInstance.java (added)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/BaseMessageInstance.java Fri Oct 21 09:32:07 2016
@@ -0,0 +1,39 @@
+/*
+ *
+ * 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.store.MessageEnqueueRecord;
+import org.apache.qpid.server.store.TransactionLogResource;
+
+public interface BaseMessageInstance
+{
+    boolean getDeliveredToConsumer();
+
+    ServerMessage getMessage();
+
+    TransactionLogResource getOwningResource();
+
+    MessageEnqueueRecord getEnqueueRecord();
+
+    boolean acquire();
+
+    void delete();
+}

Propchange: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/BaseMessageInstance.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/ConsumerOption.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/ConsumerOption.java?rev=1765973&view=auto
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/ConsumerOption.java (added)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/ConsumerOption.java Fri Oct 21 09:32:07 2016
@@ -0,0 +1,31 @@
+/*
+ *
+ * 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;
+
+public enum ConsumerOption
+{
+    ACQUIRES,
+    SEES_REQUEUES,
+    TRANSIENT,
+    EXCLUSIVE,
+    NO_LOCAL,
+    DURABLE
+}

Propchange: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/ConsumerOption.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/MessageDestination.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/MessageDestination.java?rev=1765973&r1=1765972&r2=1765973&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/MessageDestination.java (original)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/MessageDestination.java Fri Oct 21 09:32:07 2016
@@ -44,5 +44,5 @@ public interface MessageDestination exte
                                                                           final String routingAddress,
                                                                           InstanceProperties instanceProperties,
                                                                           ServerTransaction txn,
-                                                                          Action<? super MessageInstance> postEnqueueAction);
+                                                                          Action<? super BaseMessageInstance> postEnqueueAction);
 }

Modified: qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/MessageInfoImpl.java
URL: http://svn.apache.org/viewvc/qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/MessageInfoImpl.java?rev=1765973&r1=1765972&r2=1765973&view=diff
==============================================================================
--- qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/MessageInfoImpl.java (original)
+++ qpid/java/branches/transfer-queue/broker-core/src/main/java/org/apache/qpid/server/message/MessageInfoImpl.java Fri Oct 21 09:32:07 2016
@@ -55,7 +55,7 @@ public class MessageInfoImpl implements
         final AMQMessageHeader messageHeader = message.getMessageHeader();
 
         _deliveredTo = instance.getDeliveredConsumer() == null ? null : String.valueOf(instance.getDeliveredConsumer()
-                                                                                                .getConsumerNumber());
+                                                                                                .getIdentifier());
         _arrivalTime = message.getArrivalTime() == 0L ? null : new Date(message.getArrivalTime());
         _persistent = message.isPersistent();
         _messageId = messageHeader.getMessageId();



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org