in qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsMessageTransformation.java [114:175]
public static JmsMessage transformMessage(JmsConnection connection, Message message) throws JMSException {
JmsMessage jmsMessage = null;
JmsMessageFactory factory = connection.getMessageFactory();
if (message instanceof BytesMessage) {
BytesMessage bytesMsg = (BytesMessage) message;
bytesMsg.reset();
JmsBytesMessage msg = factory.createBytesMessage();
try {
for (;;) {
// Reads a byte from the message stream until the stream is empty
msg.writeByte(bytesMsg.readByte());
}
} catch (MessageEOFException e) {
// Indicates all the bytes have been read from the source.
}
jmsMessage = msg;
} else if (message instanceof MapMessage) {
MapMessage mapMsg = (MapMessage) message;
JmsMapMessage msg = factory.createMapMessage();
Enumeration<?> iter = mapMsg.getMapNames();
while (iter.hasMoreElements()) {
String name = iter.nextElement().toString();
msg.setObject(name, mapMsg.getObject(name));
}
jmsMessage = msg;
} else if (message instanceof ObjectMessage) {
ObjectMessage objMsg = (ObjectMessage) message;
JmsObjectMessage msg = factory.createObjectMessage();
msg.setObject(objMsg.getObject());
jmsMessage = msg;
} else if (message instanceof StreamMessage) {
StreamMessage streamMessage = (StreamMessage) message;
streamMessage.reset();
JmsStreamMessage msg = factory.createStreamMessage();
Object obj = null;
try {
while ((obj = streamMessage.readObject()) != null) {
msg.writeObject(obj);
}
} catch (MessageEOFException e) {
// Indicates all the stream values have been read from the source.
}
jmsMessage = msg;
} else if (message instanceof TextMessage) {
TextMessage textMsg = (TextMessage) message;
JmsTextMessage msg = factory.createTextMessage();
msg.setText(textMsg.getText());
jmsMessage = msg;
} else {
jmsMessage = factory.createMessage();
}
copyProperties(connection, message, jmsMessage);
return jmsMessage;
}