Class AMQPMessageIdHelper


  • public class AMQPMessageIdHelper
    extends java.lang.Object
    Helper class for identifying and converting message-id and correlation-id values between the AMQP types and the Strings values used by JMS.

    AMQP messages allow for 4 types of message-id/correlation-id: message-id-string, message-id-binary, message-id-uuid, or message-id-ulong. In order to accept or return a string representation of these for interoperability with other AMQP clients, the following encoding can be used after removing or before adding the "ID:" prefix used for a JMSMessageID value:
    "AMQP_BINARY:<hex representation of binary content>"
    "AMQP_UUID:<string representation of uuid>"
    "AMQP_ULONG:<string representation of ulong>"
    "AMQP_STRING:<string>"

    The AMQP_STRING encoding exists only for escaping message-id-string values that happen to begin with one of the encoding prefixes (including AMQP_STRING itself). It MUST NOT be used otherwise.

    When provided a string for conversion which attempts to identify itself as an encoded binary, uuid, or ulong but can't be converted into the indicated format, an exception will be thrown.

    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.String convertBinaryToHexString​(byte[] bytes)
      Convert the provided binary into a hex-string representation where each character represents 4 bits of the provided binary, i.e each byte requires two characters.
      byte[] convertHexStringToBinary​(java.lang.String hexString)
      Convert the provided hex-string into a binary representation where each byte represents two characters of the hex string.
      boolean hasMessageIdPrefix​(java.lang.String string)
      Checks whether the given string begins with "ID:" prefix used to denote a JMSMessageID
      java.lang.String toCorrelationIdString​(java.lang.Object idObject)  
      java.lang.Object toIdObject​(java.lang.String origId)
      Takes the provided id string and return the appropriate amqp messageId style object.
      java.lang.String toMessageIdString​(java.lang.Object idObject)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • AMQPMessageIdHelper

        public AMQPMessageIdHelper()
    • Method Detail

      • hasMessageIdPrefix

        public boolean hasMessageIdPrefix​(java.lang.String string)
        Checks whether the given string begins with "ID:" prefix used to denote a JMSMessageID
        Parameters:
        string - the string to check
        Returns:
        true if and only id the string begins with "ID:"
      • toMessageIdString

        public java.lang.String toMessageIdString​(java.lang.Object idObject)
      • toCorrelationIdString

        public java.lang.String toCorrelationIdString​(java.lang.Object idObject)
      • toIdObject

        public java.lang.Object toIdObject​(java.lang.String origId)
                                    throws ActiveMQAMQPIllegalStateException
        Takes the provided id string and return the appropriate amqp messageId style object. Converts the type based on any relevant encoding information found as a prefix.
        Parameters:
        origId - the object to be converted
        Returns:
        the AMQP messageId style object
        Throws:
        ActiveMQAMQPIllegalStateException - if the provided baseId String indicates an encoded type but can't be converted to that type.
      • convertHexStringToBinary

        public byte[] convertHexStringToBinary​(java.lang.String hexString)
                                        throws java.lang.IllegalArgumentException
        Convert the provided hex-string into a binary representation where each byte represents two characters of the hex string. The hex characters may be upper or lower case.
        Parameters:
        hexString - string to convert
        Returns:
        a byte array containing the binary representation
        Throws:
        java.lang.IllegalArgumentException - if the provided String is a non-even length or contains non-hex characters
      • convertBinaryToHexString

        public java.lang.String convertBinaryToHexString​(byte[] bytes)
        Convert the provided binary into a hex-string representation where each character represents 4 bits of the provided binary, i.e each byte requires two characters. The returned hex characters are upper-case.
        Parameters:
        bytes - binary to convert
        Returns:
        a String containing a hex representation of the bytes