@Test public void customPayloadConverter() throws JMSException { TextMessage jmsMsg = new StubTextMessage("1224"); this.converter.setPayloadConverter(new TestMessageConverter()); Message<?> msg = (Message<?>) this.converter.fromMessage(jmsMsg); assertEquals(1224L, msg.getPayload()); }
@Test public void messagingMessageConverterCanBeUsed() throws JMSException { MessagingMessageConverter converter = new MessagingMessageConverter(); converter.setPayloadConverter(new UpperCaseMessageConverter()); this.containerFactory.setMessageConverter(converter); testMessageConverterIsUsed(); }
@Override public javax.jms.Message toMessage(Object object, Session session) throws JMSException, MessageConversionException { if (!(object instanceof Message)) { throw new IllegalArgumentException("Could not convert [" + object + "] - only [" + Message.class.getName() + "] is handled by this converter"); } Message<?> input = (Message<?>) object; MessageHeaders headers = input.getHeaders(); Object conversionHint = headers.get(AbstractMessagingTemplate.CONVERSION_HINT_HEADER); javax.jms.Message reply = createMessageForPayload(input.getPayload(), session, conversionHint); this.headerMapper.fromHeaders(headers, reply); return reply; }
@SuppressWarnings("unchecked") @Override public Object fromMessage(javax.jms.Message message) throws JMSException, MessageConversionException { Map<String, Object> mappedHeaders = extractHeaders(message); Object convertedObject = extractPayload(message); MessageBuilder<Object> builder = (convertedObject instanceof org.springframework.messaging.Message ? MessageBuilder.fromMessage((org.springframework.messaging.Message<Object>) convertedObject) : MessageBuilder.withPayload(convertedObject)); return builder.copyHeadersIfAbsent(mappedHeaders).build(); }
@Override public void afterPropertiesSet() { Assert.notNull(this.jmsTemplate, "Property 'connectionFactory' or 'jmsTemplate' is required"); if (!this.converterSet && this.jmsTemplate.getMessageConverter() != null) { ((MessagingMessageConverter) this.jmsMessageConverter) .setPayloadConverter(this.jmsTemplate.getMessageConverter()); } }
protected Message<?> toMessagingMessage(javax.jms.Message jmsMessage) { try { return (Message<?>) getMessagingMessageConverter().fromMessage(jmsMessage); } catch (JMSException ex) { throw new MessageConversionException("Could not convert JMS message", ex); } }
@Test public void customConverterAlwaysTakesPrecedence() { MessageConverter messageConverter = mock(MessageConverter.class); given(this.jmsTemplate.getMessageConverter()).willReturn(messageConverter); MessageConverter customMessageConverter = mock(MessageConverter.class); JmsMessagingTemplate messagingTemplate = new JmsMessagingTemplate(); messagingTemplate.setJmsMessageConverter( new MessagingMessageConverter(customMessageConverter)); messagingTemplate.setJmsTemplate(this.jmsTemplate); messagingTemplate.afterPropertiesSet(); assertPayloadConverter(messagingTemplate, customMessageConverter); }
@Test public void onlyHandlesMessage() throws JMSException { this.thrown.expect(IllegalArgumentException.class); this.converter.toMessage(new Object(), mock(Session.class)); }
@SuppressWarnings("unchecked") @Override public Object fromMessage(javax.jms.Message message) throws JMSException, MessageConversionException { Map<String, Object> mappedHeaders = extractHeaders(message); Object convertedObject = extractPayload(message); MessageBuilder<Object> builder = (convertedObject instanceof org.springframework.messaging.Message ? MessageBuilder.fromMessage((org.springframework.messaging.Message<Object>) convertedObject) : MessageBuilder.withPayload(convertedObject)); return builder.copyHeadersIfAbsent(mappedHeaders).build(); }
@Override public void afterPropertiesSet() { Assert.notNull(this.jmsTemplate, "Property 'connectionFactory' or 'jmsTemplate' is required"); if (!this.converterSet && this.jmsTemplate.getMessageConverter() != null) { ((MessagingMessageConverter) this.jmsMessageConverter) .setPayloadConverter(this.jmsTemplate.getMessageConverter()); } }
protected Message<?> toMessagingMessage(javax.jms.Message jmsMessage) { try { return (Message<?>) getMessagingMessageConverter().fromMessage(jmsMessage); } catch (JMSException ex) { throw new MessageConversionException("Could not convert JMS message", ex); } }
private MessageConverter jmsMessageConverter = new MessagingMessageConverter();
@Test public void simpleObject() throws Exception { Session session = mock(Session.class); Serializable payload = mock(Serializable.class); ObjectMessage jmsMessage = mock(ObjectMessage.class); given(session.createObjectMessage(payload)).willReturn(jmsMessage); this.converter.toMessage(MessageBuilder.withPayload(payload).build(), session); verify(session).createObjectMessage(payload); }
@SuppressWarnings("unchecked") @Override public Object fromMessage(javax.jms.Message message) throws JMSException, MessageConversionException { if (message == null) { return null; } Map<String, Object> mappedHeaders = extractHeaders(message); Object convertedObject = extractPayload(message); MessageBuilder<Object> builder = (convertedObject instanceof org.springframework.messaging.Message) ? MessageBuilder.fromMessage((org.springframework.messaging.Message<Object>) convertedObject) : MessageBuilder.withPayload(convertedObject); return builder.copyHeadersIfAbsent(mappedHeaders).build(); }
@Override public void afterPropertiesSet() { Assert.notNull(this.jmsTemplate, "Property 'connectionFactory' or 'jmsTemplate' is required"); if (!this.converterSet && this.jmsTemplate.getMessageConverter() != null) { ((MessagingMessageConverter) this.jmsMessageConverter) .setPayloadConverter(this.jmsTemplate.getMessageConverter()); } }
/** * Create a JMS message for the specified payload and conversionHint. * The conversion hint is an extra object passed to the {@link MessageConverter}, * e.g. the associated {@code MethodParameter} (may be {@code null}}. * @see MessageConverter#toMessage(Object, Session) * @since 4.3 */ @SuppressWarnings("deprecation") protected javax.jms.Message createMessageForPayload(Object payload, Session session, Object conversionHint) throws JMSException { return createMessageForPayload(payload, session); }
@Override public javax.jms.Message toMessage(Object object, Session session) throws JMSException, MessageConversionException { if (!(object instanceof Message)) { throw new IllegalArgumentException("Could not convert [" + object + "] - only [" + Message.class.getName() + "] is handled by this converter"); } Message<?> input = (Message<?>) object; MessageHeaders headers = input.getHeaders(); Object conversionHint = headers.get(AbstractMessagingTemplate.CONVERSION_HINT_HEADER); javax.jms.Message reply = createMessageForPayload(input.getPayload(), session, conversionHint); this.headerMapper.fromHeaders(headers, reply); return reply; }
@Override public javax.jms.Message toMessage(Object object, Session session) throws JMSException, MessageConversionException { if (!(object instanceof Message)) { throw new IllegalArgumentException("Could not convert [" + object + "] - only [" + Message.class.getName() + "] is handled by this converter"); } Message<?> input = (Message<?>) object; MessageHeaders headers = input.getHeaders(); Object conversionHint = (headers != null ? headers.get( AbstractMessagingTemplate.CONVERSION_HINT_HEADER) : null); javax.jms.Message reply = createMessageForPayload(input.getPayload(), session, conversionHint); this.headerMapper.fromHeaders(headers, reply); return reply; }