@Bean // Serialize message content to json using TextMessage public MessageConverter jacksonJmsMessageConverter() { MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter(); converter.setTargetType(MessageType.TEXT); converter.setTypeIdPropertyName("_type"); return converter; }
@Test public void toTextMessageWithMap() throws Exception { converter.setTargetType(MessageType.TEXT); TextMessage textMessageMock = mock(TextMessage.class); Map<String, String> toBeMarshalled = new HashMap<>(); toBeMarshalled.put("foo", "bar"); given(sessionMock.createTextMessage(isA(String.class))).willReturn(textMessageMock); converter.toMessage(toBeMarshalled, sessionMock); verify(textMessageMock).setStringProperty("__typeid__", HashMap.class.getName()); }
@Test public void toTextMessageWithObject() throws Exception { converter.setTargetType(MessageType.TEXT); TextMessage textMessageMock = mock(TextMessage.class); Date toBeMarshalled = new Date(); given(sessionMock.createTextMessage(isA(String.class))).willReturn(textMessageMock); converter.toMessage(toBeMarshalled, sessionMock); verify(textMessageMock).setStringProperty("__typeid__", Date.class.getName()); }
@Test public void toTextMessageWithJsonViewClass() throws JMSException { converter.setTargetType(MessageType.TEXT); TextMessage textMessageMock = mock(TextMessage.class); MyAnotherBean bean = new MyAnotherBean("test", "lengthy description"); given(sessionMock.createTextMessage(isA(String.class))).willReturn(textMessageMock); converter.toMessage(bean, sessionMock, Summary.class); verify(textMessageMock).setStringProperty("__typeid__", MyAnotherBean.class.getName()); verify(sessionMock).createTextMessage("{\"name\":\"test\"}"); }
private void testToTextMessageWithReturnType(MethodParameter returnType) throws JMSException, NoSuchMethodException { converter.setTargetType(MessageType.TEXT); TextMessage textMessageMock = mock(TextMessage.class); MyAnotherBean bean = new MyAnotherBean("test", "lengthy description"); given(sessionMock.createTextMessage(isA(String.class))).willReturn(textMessageMock); converter.toMessage(bean, sessionMock, returnType); verify(textMessageMock).setStringProperty("__typeid__", MyAnotherBean.class.getName()); }
@Test public void toTextMessageWithAnotherJsonViewClass() throws JMSException { converter.setTargetType(MessageType.TEXT); TextMessage textMessageMock = mock(TextMessage.class); MyAnotherBean bean = new MyAnotherBean("test", "lengthy description"); given(sessionMock.createTextMessage(isA(String.class))).willReturn(textMessageMock); converter.toMessage(bean, sessionMock, Full.class); verify(textMessageMock).setStringProperty("__typeid__", MyAnotherBean.class.getName()); verify(sessionMock).createTextMessage("{\"name\":\"test\",\"description\":\"lengthy description\"}"); }
public TextMessage testReplyWithJackson(String methodName, String replyContent) throws JMSException { Queue replyDestination = mock(Queue.class); Session session = mock(Session.class); MessageProducer messageProducer = mock(MessageProducer.class); TextMessage responseMessage = mock(TextMessage.class); given(session.createTextMessage(replyContent)).willReturn(responseMessage); given(session.createProducer(replyDestination)).willReturn(messageProducer); MessagingMessageListenerAdapter listener = getPayloadInstance("Response", methodName, Message.class); MappingJackson2MessageConverter messageConverter = new MappingJackson2MessageConverter(); messageConverter.setTargetType(MessageType.TEXT); listener.setMessageConverter(messageConverter); listener.setDefaultResponseDestination(replyDestination); listener.onMessage(mock(javax.jms.Message.class), session); verify(session, times(0)).createQueue(anyString()); verify(session).createTextMessage(replyContent); verify(messageProducer).send(responseMessage); verify(messageProducer).close(); return responseMessage; }
@Test public void testJsonHeaderMapping() throws JMSException { MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter(); converter.setTargetType(MessageType.TEXT); converter.setTypeIdPropertyName("javatype"); Session session = Mockito.mock(Session.class); Mockito.doAnswer(invocation -> new StubTextMessage(invocation.getArgument(0))).when(session) .createTextMessage(Mockito.anyString()); javax.jms.Message request = converter.toMessage(new Foo(), session); DefaultJmsHeaderMapper mapper = new DefaultJmsHeaderMapper(); Map<String, Object> headers = mapper.toHeaders(request); javax.jms.Message reply = converter.toMessage("foo", session); mapper.fromHeaders(new MessageHeaders(headers), reply); Object result = converter.fromMessage(reply); assertThat(result, instanceOf(String.class)); }
@Bean public MessageConverter jacksonJmsMessageConverter() { MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter(); converter.setTargetType(MessageType.TEXT); converter.setTypeIdPropertyName("_type"); return converter; } }
@Bean public MessageConverter jacksonJmsMessageConverter(ObjectMapper aObjectMapper) { MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter(); converter.setObjectMapper(aObjectMapper); converter.setTargetType(MessageType.TEXT); converter.setTypeIdPropertyName("_type"); return converter; }