Merge pull request #883 from clebertsuconic/master-fix

https://bugzilla.redhat.com/show_bug.cgi?id=915760 - debug is too verbos...
HORNETQ-1146 use XMLUtils.* to ensure trimming.
Fixes https://community.jboss.org/message/799295
Merge pull request #884 from FranciscoBorges/configuration

HORNETQ-1146 use XMLUtils.* to ensure trimming.
https://issues.jboss.org/browse/HORNETQ-1137 Optimization on queue-delivery, After this change we are not holding a lock on the queue while the consumer is delivering the packet to the client
also  Fixing groupIterator.remove as that would cause concurrentModificationException on the groupMaps
Merge pull request #889 from clebertsuconic/master

Optimization on queue.delivery . Delivery packet being done outside of lock.
Fix schema, and test (schema) validation of conf files.
Improve gitignore
Merge pull request #890 from FranciscoBorges/schema

Fix schema, and test (schema) validation of conf files.
https://bugzilla.redhat.com/show_bug.cgi?id=916525 - changing concurrent maps as requested by QA
fixing intermittent test failure
Merge pull request #892 from clebertsuconic/master

small fixes
improving hanging test and tidy up on the Queue API to couple with flush timeout externally
Merge pull request #893 from clebertsuconic/master

changing timeout API and improving tests
HQ1104 STOMP 1.2 support

Implementation of STOMP version 1.2 support in HornetQ

Here is the STOMP V1.2 spec.
http://stomp.github.com/stomp-specification-1.2.html

STOMP v1.2 doesn't have much difference from v1.1. So it could be easily added to HornetQ based on the current code base with the following changes:

1. Refactor existing STOMP 1.0/1.1 code to improve code reusability.
2. Add the few new features mainly stated in the spec (see section 'Changes in the Protocol').
3. add an simple example
4. document update
5. tests

Below are details of general Stomp request processing

All incoming/outgoing bytes from/to a stomp client are processed by StompProtocolManager class. The StompProtocolManager creates a StompConnection for each client connection request.

Stomp version for each connection is determined during connection time, and so is the authentication.

Once connected, a StompConnection has a VersionedStompFrameHandler initiated. The VersionedStompFrameHandler has mainly two tasks:

task 1 : it uses a version specific decoder to decode stomp bytes into StompFrames
task 2 : it processes the decoded StompFrames and sends responses to client if needed.

Here is a summary of the VersionedStompFrameHandlers/decoders for each version

Stomp 1.0: StompFrameHandlerV10/StompDecoder
Stomp 1.1: StompFrameHandlerV11/StompDecoderV11
Stomp 1.2: StompFrameHandlerV12/StompDecoderV12

Here classes of higher versions usually inherits those of lower versions to maximize code reuse.

Message requests are converted into HornetQ core semantics and actually processed by the core layer.  Internally we have a StompSession to wrap a core session to do the work. It can be shown briefly using the following flow:

=(incoming bytes)==>StompProtocolManager==>StompConnection==>StompDecoder == (Stomp frames) ==> FrameHandler ==>StompSession ==> Core

Messages are sent to client in the following flow:

Core ==(core message)==>StompSession==>FrameHandler==(stomp frames)==>StompProtocolManager==>StompConnection===(physical network)==>client

Testing

We have a simple testing client to simulate STOMP clients. Related tests are in the following classes:

StompTest
ExtraStompTest
StompV11Test
StomeV12Test
Merge pull request #891 from gaohoward/br_STOMP12_HQ1104

HQ1104 STOMP 1.2 support
A few doc related updates
Merge pull request #894 from jbertram/master

Doc updates
I added a new test to check null values.
Merge pull request #895 from diegolovison/master

I added a new test to check null value.
Fix typo in method name.