public class

MarshallingMessageConverter

extends Object
implements InitializingBean MessageConverter
java.lang.Object
   ↳ org.springframework.jms.support.converter.MarshallingMessageConverter

Class Overview

Spring JMS MessageConverter that uses a Marshaller and Unmarshaller. Marshals an object to a BytesMessage, or to a TextMessage if the marshalTo is set to TEXT. Unmarshals from a TextMessage or BytesMessage to an object.

Summary

Public Constructors
MarshallingMessageConverter()
Construct a new MarshallingMessageConverter with no Marshaller or Unmarshaller set.
MarshallingMessageConverter(Marshaller marshaller)
Construct a new MarshallingMessageConverter with the given Marshaller set.
MarshallingMessageConverter(Marshaller marshaller, Unmarshaller unmarshaller)
Construct a new MarshallingMessageConverter with the given Marshaller and Unmarshaller.
Public Methods
void afterPropertiesSet()
Invoked by a BeanFactory after it has set all bean properties supplied (and satisfied BeanFactoryAware and ApplicationContextAware).
Object fromMessage(Message message)
This implementation unmarshals the given Message into an object.
void setMarshaller(Marshaller marshaller)
Set the Marshaller to be used by this message converter.
void setTargetType(MessageType targetType)
Specify whether toMessage(Object, Session) should marshal to a BytesMessage or a TextMessage.
void setUnmarshaller(Unmarshaller unmarshaller)
Set the Unmarshaller to be used by this message converter.
Message toMessage(Object object, Session session)
This implementation marshals the given object to a javax.jms.TextMessage or javax.jms.BytesMessage.
Protected Methods
BytesMessage marshalToBytesMessage(Object object, Session session, Marshaller marshaller)
Marshal the given object to a BytesMessage.
Message marshalToMessage(Object object, Session session, Marshaller marshaller, MessageType targetType)
Template method that allows for custom message marshalling.
TextMessage marshalToTextMessage(Object object, Session session, Marshaller marshaller)
Marshal the given object to a TextMessage.
Object unmarshalFromBytesMessage(BytesMessage message, Unmarshaller unmarshaller)
Unmarshal the given BytesMessage into an object.
Object unmarshalFromMessage(Message message, Unmarshaller unmarshaller)
Template method that allows for custom message unmarshalling.
Object unmarshalFromTextMessage(TextMessage message, Unmarshaller unmarshaller)
Unmarshal the given TextMessage into an object.
[Expand]
Inherited Methods
From class java.lang.Object
From interface org.springframework.beans.factory.InitializingBean
From interface org.springframework.jms.support.converter.MessageConverter

Public Constructors

public MarshallingMessageConverter ()

Construct a new MarshallingMessageConverter with no Marshaller or Unmarshaller set. The marshaller must be set after construction by invoking setMarshaller(Marshaller) and setUnmarshaller(Unmarshaller) .

public MarshallingMessageConverter (Marshaller marshaller)

Construct a new MarshallingMessageConverter with the given Marshaller set.

If the given Marshaller also implements the Unmarshaller interface, it is used for both marshalling and unmarshalling. Otherwise, an exception is thrown.

Note that all Marshaller implementations in Spring also implement the Unmarshaller interface, so that you can safely use this constructor.

Parameters
marshaller object used as marshaller and unmarshaller
Throws
IllegalArgumentException when marshaller does not implement the Unmarshaller interface as well

public MarshallingMessageConverter (Marshaller marshaller, Unmarshaller unmarshaller)

Construct a new MarshallingMessageConverter with the given Marshaller and Unmarshaller.

Parameters
marshaller the Marshaller to use
unmarshaller the Unmarshaller to use

Public Methods

public void afterPropertiesSet ()

Invoked by a BeanFactory after it has set all bean properties supplied (and satisfied BeanFactoryAware and ApplicationContextAware).

This method allows the bean instance to perform initialization only possible when all bean properties have been set and to throw an exception in the event of misconfiguration.

public Object fromMessage (Message message)

This implementation unmarshals the given Message into an object.

Parameters
message the message to convert
Returns
  • the converted Java object
Throws
JMSException
MessageConversionException

public void setMarshaller (Marshaller marshaller)

Set the Marshaller to be used by this message converter.

public void setTargetType (MessageType targetType)

Specify whether toMessage(Object, Session) should marshal to a BytesMessage or a TextMessage.

The default is BYTES, i.e. this converter marshals to a BytesMessage. Note that the default version of this converter supports BYTES and TEXT only.

See Also

public void setUnmarshaller (Unmarshaller unmarshaller)

Set the Unmarshaller to be used by this message converter.

public Message toMessage (Object object, Session session)

This implementation marshals the given object to a javax.jms.TextMessage or javax.jms.BytesMessage. The desired message type can be defined by setting the "marshalTo" property.

Parameters
object the object to convert
session the Session to use for creating a JMS Message
Returns
  • the JMS Message
Throws
JMSException
MessageConversionException

Protected Methods

protected BytesMessage marshalToBytesMessage (Object object, Session session, Marshaller marshaller)

Marshal the given object to a BytesMessage.

Parameters
object the object to be marshalled
session current JMS session
marshaller the marshaller to use
Returns
  • the resulting message
Throws
if thrown by JMS methods
IOException in case of I/O errors
XmlMappingException in case of OXM mapping errors
JMSException
See Also

protected Message marshalToMessage (Object object, Session session, Marshaller marshaller, MessageType targetType)

Template method that allows for custom message marshalling. Invoked when setTargetType(MessageType) is not TEXT or BYTES.

The default implementation throws an IllegalArgumentException.

Parameters
object the object to marshal
session the JMS session
marshaller the marshaller to use
targetType the target message type (other than TEXT or BYTES)
Returns
  • the resulting message
Throws
if thrown by JMS methods
IOException in case of I/O errors
XmlMappingException in case of OXM mapping errors
JMSException

protected TextMessage marshalToTextMessage (Object object, Session session, Marshaller marshaller)

Marshal the given object to a TextMessage.

Parameters
object the object to be marshalled
session current JMS session
marshaller the marshaller to use
Returns
  • the resulting message
Throws
if thrown by JMS methods
IOException in case of I/O errors
XmlMappingException in case of OXM mapping errors
JMSException
See Also

protected Object unmarshalFromBytesMessage (BytesMessage message, Unmarshaller unmarshaller)

Unmarshal the given BytesMessage into an object.

Parameters
message the message
unmarshaller the unmarshaller to use
Returns
  • the unmarshalled object
Throws
if thrown by JMS methods
IOException in case of I/O errors
XmlMappingException in case of OXM mapping errors
JMSException

protected Object unmarshalFromMessage (Message message, Unmarshaller unmarshaller)

Template method that allows for custom message unmarshalling. Invoked when fromMessage(Message) is invoked with a message that is not a TextMessage or BytesMessage.

The default implemenetation throws an IllegalArgumentException.

Parameters
message the message
unmarshaller the unmarshaller to use
Returns
  • the unmarshalled object
Throws
if thrown by JMS methods
IOException in case of I/O errors
XmlMappingException in case of OXM mapping errors
JMSException

protected Object unmarshalFromTextMessage (TextMessage message, Unmarshaller unmarshaller)

Unmarshal the given TextMessage into an object.

Parameters
message the message
unmarshaller the unmarshaller to use
Returns
  • the unmarshalled object
Throws
if thrown by JMS methods
IOException in case of I/O errors
XmlMappingException in case of OXM mapping errors
JMSException