public class MarshallingMessageConverter extends Object implements MessageConverter, InitializingBean
MessageConverter
that uses a Marshaller
and Unmarshaller
.
Marshals an object to a BytesMessage
, or to a TextMessage
if the
targetType
is set to MessageType.TEXT
.
Unmarshals from a TextMessage
or BytesMessage
to an object.Constructor and Description |
---|
MarshallingMessageConverter()
|
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. |
Modifier and Type | Method and Description |
---|---|
void |
afterPropertiesSet()
Invoked by the containing
BeanFactory after it has set all bean properties
and satisfied BeanFactoryAware , ApplicationContextAware etc. |
Object |
fromMessage(Message message)
This implementation unmarshals the given
Message into an object. |
protected BytesMessage |
marshalToBytesMessage(Object object,
Session session,
Marshaller marshaller)
Marshal the given object to a
BytesMessage . |
protected Message |
marshalToMessage(Object object,
Session session,
Marshaller marshaller,
MessageType targetType)
Template method that allows for custom message marshalling.
|
protected TextMessage |
marshalToTextMessage(Object object,
Session session,
Marshaller marshaller)
Marshal the given object to a
TextMessage . |
void |
setMarshaller(Marshaller marshaller)
Set the
Marshaller to be used by this message converter. |
void |
setTargetType(MessageType targetType)
|
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
TextMessage or
BytesMessage . |
protected Object |
unmarshalFromBytesMessage(BytesMessage message,
Unmarshaller unmarshaller)
Unmarshal the given
BytesMessage into an object. |
protected Object |
unmarshalFromMessage(Message message,
Unmarshaller unmarshaller)
Template method that allows for custom message unmarshalling.
|
protected Object |
unmarshalFromTextMessage(TextMessage message,
Unmarshaller unmarshaller)
Unmarshal the given
TextMessage into an object. |
public MarshallingMessageConverter()
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)
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.
marshaller
- object used as marshaller and unmarshallerIllegalArgumentException
- when marshaller
does not implement the
Unmarshaller
interface as wellpublic MarshallingMessageConverter(Marshaller marshaller, Unmarshaller unmarshaller)
MarshallingMessageConverter
with the
given Marshaller and Unmarshaller.marshaller
- the Marshaller to useunmarshaller
- the Unmarshaller to usepublic void setMarshaller(Marshaller marshaller)
Marshaller
to be used by this message converter.public void setUnmarshaller(Unmarshaller unmarshaller)
Unmarshaller
to be used by this message converter.public void setTargetType(MessageType targetType)
toMessage(Object, Session)
should marshal to
a BytesMessage
or a TextMessage
.
The default is MessageType.BYTES
, i.e. this converter marshals
to a BytesMessage
. Note that the default version of this converter
supports MessageType.BYTES
and MessageType.TEXT
only.
MessageType.BYTES
,
MessageType.TEXT
public void afterPropertiesSet()
InitializingBean
BeanFactory
after it has set all bean properties
and satisfied BeanFactoryAware
, ApplicationContextAware
etc.
This method allows the bean instance to perform validation of its overall configuration and final initialization when all bean properties have been set.
afterPropertiesSet
in interface InitializingBean
public Message toMessage(Object object, Session session) throws JMSException, MessageConversionException
TextMessage
or
BytesMessage
. The desired message type can be defined by setting
the "marshalTo"
property.toMessage
in interface MessageConverter
object
- the object to convertsession
- the Session to use for creating a JMS MessageJMSException
- if thrown by JMS API methodsMessageConversionException
- in case of conversion failuremarshalToTextMessage(java.lang.Object, javax.jms.Session, org.springframework.oxm.Marshaller)
,
marshalToBytesMessage(java.lang.Object, javax.jms.Session, org.springframework.oxm.Marshaller)
public Object fromMessage(Message message) throws JMSException, MessageConversionException
Message
into an object.fromMessage
in interface MessageConverter
message
- the message to convertJMSException
- if thrown by JMS API methodsMessageConversionException
- in case of conversion failureunmarshalFromTextMessage(javax.jms.TextMessage, org.springframework.oxm.Unmarshaller)
,
unmarshalFromBytesMessage(javax.jms.BytesMessage, org.springframework.oxm.Unmarshaller)
protected TextMessage marshalToTextMessage(Object object, Session session, Marshaller marshaller) throws JMSException, IOException, XmlMappingException
TextMessage
.object
- the object to be marshalledsession
- current JMS sessionmarshaller
- the marshaller to useJMSException
- if thrown by JMS methodsIOException
- in case of I/O errorsXmlMappingException
- in case of OXM mapping errorsSession.createTextMessage()
,
Marshaller.marshal(Object, Result)
protected BytesMessage marshalToBytesMessage(Object object, Session session, Marshaller marshaller) throws JMSException, IOException, XmlMappingException
BytesMessage
.object
- the object to be marshalledsession
- current JMS sessionmarshaller
- the marshaller to useJMSException
- if thrown by JMS methodsIOException
- in case of I/O errorsXmlMappingException
- in case of OXM mapping errorsSession.createBytesMessage()
,
Marshaller.marshal(Object, Result)
protected Message marshalToMessage(Object object, Session session, Marshaller marshaller, MessageType targetType) throws JMSException, IOException, XmlMappingException
setTargetType(org.springframework.jms.support.converter.MessageType)
is not MessageType.TEXT
or
MessageType.BYTES
.
The default implementation throws an IllegalArgumentException
.
object
- the object to marshalsession
- the JMS sessionmarshaller
- the marshaller to usetargetType
- the target message type (other than TEXT or BYTES)JMSException
- if thrown by JMS methodsIOException
- in case of I/O errorsXmlMappingException
- in case of OXM mapping errorsprotected Object unmarshalFromTextMessage(TextMessage message, Unmarshaller unmarshaller) throws JMSException, IOException, XmlMappingException
TextMessage
into an object.message
- the messageunmarshaller
- the unmarshaller to useJMSException
- if thrown by JMS methodsIOException
- in case of I/O errorsXmlMappingException
- in case of OXM mapping errorsUnmarshaller.unmarshal(Source)
protected Object unmarshalFromBytesMessage(BytesMessage message, Unmarshaller unmarshaller) throws JMSException, IOException, XmlMappingException
BytesMessage
into an object.message
- the messageunmarshaller
- the unmarshaller to useJMSException
- if thrown by JMS methodsIOException
- in case of I/O errorsXmlMappingException
- in case of OXM mapping errorsUnmarshaller.unmarshal(Source)
protected Object unmarshalFromMessage(Message message, Unmarshaller unmarshaller) throws JMSException, IOException, XmlMappingException
fromMessage(Message)
is invoked with a message
that is not a TextMessage
or BytesMessage
.
The default implementation throws an IllegalArgumentException
.
message
- the messageunmarshaller
- the unmarshaller to useJMSException
- if thrown by JMS methodsIOException
- in case of I/O errorsXmlMappingException
- in case of OXM mapping errors