Class DefaultPahoMessageConverter

java.lang.Object
org.springframework.integration.mqtt.support.DefaultPahoMessageConverter
All Implemented Interfaces:
Aware, BeanFactoryAware, MqttMessageConverter, MessageConverter

public class DefaultPahoMessageConverter extends Object implements MqttMessageConverter, BeanFactoryAware
Default implementation for mapping to/from Messages.
Since:
4.0
Author:
Gary Russell, Artem Bilan
  • Constructor Details

    • DefaultPahoMessageConverter

      public DefaultPahoMessageConverter()
      Construct a converter with default options (qos=0, retain=false, charset=UTF-8).
    • DefaultPahoMessageConverter

      public DefaultPahoMessageConverter(int defaultQos, boolean defaultRetained)
      Construct a converter to create outbound messages with the supplied default qos and retain settings and a UTF-8 charset for converting outbound String payloads to byte[] and inbound byte[] to String (unless payloadAdBytes is true).
      Parameters:
      defaultQos - the default qos.
      defaultRetained - the default retained.
    • DefaultPahoMessageConverter

      public DefaultPahoMessageConverter(String charset)
      Construct a converter with default options (qos=0, retain=false) and the supplied charset.
      Parameters:
      charset - the charset used to convert outbound String payloads to byte[] and inbound byte[] to String (unless payloadAdBytes is true).
      Since:
      4.1.2
    • DefaultPahoMessageConverter

      public DefaultPahoMessageConverter(int defaultQos, boolean defaultRetained, String charset)
      Construct a converter to create outbound messages with the supplied default qos and retain settings and the supplied charset.
      Parameters:
      defaultQos - the default qos.
      defaultRetained - the default retained.
      charset - the charset used to convert outbound String payloads to byte[] and inbound byte[] to String (unless payloadAdBytes is true).
    • DefaultPahoMessageConverter

      public DefaultPahoMessageConverter(int defaultQos, MessageProcessor<Integer> qosProcessor, boolean defaultRetained, MessageProcessor<Boolean> retainedProcessor)
      Construct a converter to create outbound messages with the supplied default qos and retained message processors and a UTF-8 charset for converting outbound String payloads to byte[] and inbound byte[] to String (unless payloadAdBytes is true).
      Parameters:
      defaultQos - the default qos.
      qosProcessor - a message processor to determine the qos.
      defaultRetained - the default retained.
      retainedProcessor - a message processor to determine the retained flag.
      Since:
      5.0
    • DefaultPahoMessageConverter

      public DefaultPahoMessageConverter(int defaultQos, MessageProcessor<Integer> qosProcessor, boolean defaultRetained, MessageProcessor<Boolean> retainedProcessor, String charset)
      Construct a converter to create outbound messages with the supplied default qos and retain settings and the supplied charset.
      Parameters:
      defaultQos - the default qos.
      qosProcessor - a message processor to determine the qos.
      defaultRetained - the default retained.
      retainedProcessor - a message processor to determine the retained flag.
      charset - the charset used to convert outbound String payloads to byte[] and inbound byte[] to String (unless payloadAdBytes is true).
      Since:
      5.0
  • Method Details

    • setBeanFactory

      public final void setBeanFactory(BeanFactory beanFactory)
      Specified by:
      setBeanFactory in interface BeanFactoryAware
    • getBeanFactory

      protected BeanFactory getBeanFactory()
    • getMessageBuilderFactory

      protected MessageBuilderFactory getMessageBuilderFactory()
    • setPayloadAsBytes

      public void setPayloadAsBytes(boolean payloadAsBytes)
      True if the converter should not convert the message payload to a String. Ignored if a BytesMessageMapper is provided.
      Parameters:
      payloadAsBytes - The payloadAsBytes to set.
      See Also:
    • isPayloadAsBytes

      public boolean isPayloadAsBytes()
    • setBytesMessageMapper

      public void setBytesMessageMapper(BytesMessageMapper bytesMessageMapper)
      Set a BytesMessageMapper to use when mapping byte[]. setPayloadAsBytes(boolean) is ignored when a BytesMessageMapper is provided.
      Parameters:
      bytesMessageMapper - the mapper.
      Since:
      5.0
      See Also:
    • toMessage

      public Message<?> toMessage(Object mqttMessage, MessageHeaders headers)
      Specified by:
      toMessage in interface MessageConverter
    • toMessageBuilder

      public AbstractIntegrationMessageBuilder<?> toMessageBuilder(String topic, org.eclipse.paho.client.mqttv3.MqttMessage mqttMessage)
      Description copied from interface: MqttMessageConverter
      Convert to a message builder.
      Specified by:
      toMessageBuilder in interface MqttMessageConverter
      Parameters:
      topic - the topic.
      mqttMessage - the MQTT message.
      Returns:
      the builder.
    • fromMessage

      public org.eclipse.paho.client.mqttv3.MqttMessage fromMessage(Message<?> message, Class<?> targetClass)
      Specified by:
      fromMessage in interface MessageConverter
    • mqttBytesToPayload

      protected Object mqttBytesToPayload(org.eclipse.paho.client.mqttv3.MqttMessage mqttMessage)
      Subclasses can override this method to convert the byte[] to a payload. The default implementation creates a String (default) or byte[].
      Parameters:
      mqttMessage - The inbound message.
      Returns:
      The payload for the Spring integration message
    • messageToMqttBytes

      protected byte[] messageToMqttBytes(Message<?> message)
      Subclasses can override this method to convert the payload to a byte[]. The default implementation accepts a byte[] or String payload. If a BytesMessageMapper is provided, conversion to byte[] is delegated to it, so any payload that it can handle is supported.
      Parameters:
      message - The outbound Message.
      Returns:
      The byte[] which will become the payload of the MQTT Message.