Refactoring of the AMQP protocol stack to allow for more flexibility in
adding support for some additional AMQP semantics and group together
common functionality handling to avoid having to fix simillar issues in
multiple places.
Test that a receiver can also create temporary destinations when it has
a Source configured as dynamic, also test that link close destroys the
temporary destinations.
Fix and tests for filter handling on attach. We only support JMS
selector and NoLocal type filters for receivers so only report those
back, all others are dropped to indicate we will not honor them.
Functional client with added tests to start to cover various
expectations of an AMQP broker and some tests for expectations of a JMS
mapping compliant broker.
Use the type descriptor and not the key, also check object type since
Map from Proton is not enforcing. Remove some dead code and uneeded
mutex locks for id generation.
Add support for JMS mapping compliant temp topic and temp queue creation
as well as responding correctly to authorization errors if the
connection has no rights to create them. Also cleans up code to use a
consistent createDestination implementation that uses the names only and
not attempt to interpret the client only destination annotations.
Fix tests to always set an client ID for the durable subscription cases,
the legacy client doesn't seem to care but the new one will throw an
exception if not set.
Clean up the durable subscription unsubscribe handling to be in line
with the AMQP JMS mapping spec and switch to the QPid 0.32-SNAPSHOT
build for now to allow us to track and other changes we might want to
feed back there before release.
Direct all the JMSClient tests to use the indirect calls to create their
connection, the Joram tests are a bit harder to make generic and can
wait for now.
First pass removes most direct usages of the qpid client bits and cleans
up some tests so that they all start to use the common test support
class features.
Add a connect check in the inactivity monitor to account for opened
connections that might drop but not be spotted, in the case where the
connect frame is lost this can lead to connections that aren't fully
opened and won't be cleaned up until the broker detects the socket has
failed.
By default the connection timer is set to 30 seconds, if no connect
frame is read by then the connection is dropped. The broker can be
configured via the 'transport.connectAttemptTimeout' URI option, a value
time while messages are produced and consumed. Older ActiveMQ releases
seemed to have an issue in this area due to the Proton-J library used.
Test should help to ensure this does not reappear.