-
Notifications
You must be signed in to change notification settings - Fork 48
Master Feature Grid
carterpage edited this page May 9, 2012
·
62 revisions
1. Introduction (0/0 - N/A - 1 Deferred) | |
---|---|
1.4.4 JTA | |
A JMS provider can optionally support distributed transactions via JTA. This happens in the Session object. | Deferred |
2. Architecture (1/1 - 100%) | |
2.8. Multi-threading | |
JMS Requires that the following object support concurrent use: Destination, ConnectionFactory, Connection | Code reviewed here, here, here, here, here, here, here, here, and here; also covered here |
3. Message Model (37/37 - 100% - 1.5 Deferred) | |
3.2. Goals | |
Support messages containing Java objects | Covered |
Support messages containing XML | Covered by testXmlMessage() |
3.4. JMS Headers | |
3.4.1. JMSDestination | Covered |
3.4.2. JMSDeliveryMode | Covered |
3.4.3. JMSMessageID | Covered |
3.4.4. JMSTimestamp | Covered |
3.4.5. JMSCorrelationID | Covered |
3.4.6. JMSReplyTo | Covered |
3.4.7. JMSRedelivered | Covered for internal replay of messages. Deferred support for message reset. (Can be implemented with SQS attribute ApproximateReceiveCount). |
3.4.8. JMSType | Covered |
3.4.9. JMSExpiration | Covered |
3.4.10. JMSPriority | Covered, but expediting is not implemented |
3.4.12. Overriding Headers | Covered |
3.5. Message Properties | |
3.5.1. Property Names | Covered |
3.5.2. Property Values: Can be boolean, byte, short, int, long, float, double, and String | Covered |
3.5.3. Using Properties: If a client attempts to set properties after a message is received _MessageNotWriteableException_ is thrown. | Covered |
3.5.4. Property Value Conversion | Covered |
3.5.5. Property Values as Objects | Covered |
3.5.6. Property Iteration | Covered |
3.5.7. Clearing a Message's Property Values | Covered |
3.5.8. Nonexistent Properties | Covered |
3.5.9. JMS Defined Properties | Covered |
3.5.10. Provider-Specific Properties | Covered |
3.6. Message Acknowledgement | See 4.4.11 |
3.8. Message Selection | Deferred |
3.10. Changing the Value of a Received Message | Covered |
3.11. JMS Message Body | |
StreamMessage | Covered |
MapMessage | Covered |
TextMessage | Covered |
ObjectMessage | Covered |
BytesMessage | Covered |
3.11.1. Clearing a Message Body | Covered |
3.11.2. Read-Only Message Body | Covered |
3.11.3. Conversions provided by StreamMessage and MapMessage | Covered here and here |
3.11.4. Messages for Non-JMS Clients | Covered in 3.11 *Message tests |
3.12. Provider Implementations of JMS Message Interfaces | |
A provider must be prepared to accept, from a client, a message whose implementation is not one of its own | Covered here, here, here, here, and here. |
All of the methods for setting object values in body and properties must be implemented to copy their input objects into the message. | Covered |
The value of an input object is allowed to be null and will return null when accessed (with the exception of BytesMessage body, which must throw NullPointerException when writing a null) | Covered |
All read methods must return a copy of the accessed message objects. | Covered |
4. JMS Common Facilities (21/21 - 100% - 5 Deferred) | |
4.2. Administered Objects: JMS defines two administered objects, Destination and ConnectionFactory. Both must implement Referenceable and Serializable | Covered here and here |
4.3. Connection | |
4.3.1. Authentication: Client authentication happens in Connection creation | Covered |
4.3.2. Client Identifier | Covered |
4.3.3. Connection Setup | Covered |
4.3.4. Pausing Delivery of Incoming Messags | Covered |
4.3.5. Closing a Connection | Covered |
4.3.6. Sessions | See 4.4 |
4.3.7. ConnectionMetaData | Covered here and here |
4.3.8. ExceptionListener | Covered |
4.4. Session | |
4.4.1. Closing a Session | Covered |
4.4.3. Creating Temporary Destinations | Covered here and here |
4.4.4. Creating Destination Objects | Covered |
4.4.7. Transactions | Covered |
4.4.8. Distributed Transactions | Deferred |
4.4.9. Multiple Sessions | See 5.8 and 6.11 |
4.4.10. Message Order | |
4.4.10.1. Order of Message Receipt: FIFO guaranteed for a given session. Collect statistics to measure risk. Eventually provide optional magic to enforce. | SQS does NOT guarantee. Collect stats. Further improvement deferred. |
4.4.10.2. Order of Message Sends: Messages of higher priority may jump ahead of previous lower priority messages | Deferred |
4.4.11. Message Acknowledgement | Covered |
4.4.12. Duplicate Delivery of Messages: Never produce duplicates. Collect statistics to measure risk. Eventually optional magic can enfoce. | SQS does NOT guarantee. Collect stats. Further improvement deferred. |
4.4.13. Duplicate Production of Messages: No client error can cause a provider to duplicate a message | Deferred - SessionTransactionTest.testAmbiguousWriteCommit() |
4.5. MessageConsumer | |
4.5.1. Synchronous Delivery | Covered |
4.5.2. Asynchronous Delivery | Covered |
4.6. MessageProducer | Covered |
4.7. Message Delivery Mode | All messages will be treated as PERSISTENT |
4.8. Message Time-To-Live | See 3.4.9 |
4.11. Method Inheritance across Messaging Domains | Covered |
5. JMS Point-to-Point Model (7/7 - 100% - Deferred) | |
5.1. Overview | |
A queue can contain a mixture of messages | Covered |
PTP domain-specific interfaces and the common interfaces must be guaranteed the same behavior | Covered |
5.4. Temporary Queue | Covered |
5.5. QueueConnectionFactory | Covered |
5.6. QueueConnection | Covered |
5.7. QueueSession | Covered |
5.8. QueueReceiver | Covered |
5.9. QueueBrowser | Deferred |
6. JMS Publish/Subscribe Model (10/10 - 100% - 1 Deferred) | |
6.1. Overview: Pub/Sub domain-specific interfaces and the common interfaces must be guaranteed the same behavior | Covered |
6.3. Durable Subscriptions | Covered |
6.5. Topic: Provide optional topic groups and heirarchies | Deferred |
6.6. TemporaryTopic | Covered |
6.7. TopicConnectionFactory | Covered |
6.8. TopicConnection | Covered |
6.9. TopicSession | Covered (but still need to test unsubscribe()) |
6.10. TopicPublisher | Covered |
6.11. TopicSubscriber | Covered (not complete) |
6.11.1. Durable TopicSubscriber | Covered here and here |
6.15. Reliability | Covered |
7. JMS Exceptions (9/9 - 100% - 3 Deferred) | |
IllegalStateException | Covered here, here, here, here, and here |
JMSSecurityException | Covered |
InvalidClientIDException | Covered |
InvalidDestinationException | Covered |
InvalidSelectorException | Deferred |
MessageEOFException | Covered here and here. |
MessageFormatException | Covered here, here, and here. |
MessageNotReadableException | Covered here and here |
MessageNotWriteableException | Covered here and here |
ResourceAllocationException | Covered |
TransactionInProgressException | Deferred |
TransactionRolledBackException | Deferred until 4.4.13 |
8. JMS Application Server Facilities (0/0 - N/A - 5 Deferred) | |
8.2. Concurrent Processing of a Subscription's Messages | |
8.2.1. Session: setMessageListener(), getMessageListener(), and run() | Deferred |
8.2.4. ConnectionConsumer | Deferred |
8.3. XAConnectionFactory | Deferred |
8.4. XAConnection | Deferred |
8.5. XASession | Deferred |