@Test public void fromTextMessageAsObject() throws Exception { TextMessage textMessageMock = mock(TextMessage.class); Map<String, String> unmarshalled = Collections.singletonMap("foo", "bar"); String text = "{\"foo\":\"bar\"}"; given(textMessageMock.getStringProperty("__typeid__")).willReturn(Object.class.getName()); given(textMessageMock.getText()).willReturn(text); Object result = converter.fromMessage(textMessageMock); assertEquals("Invalid result", result, unmarshalled); }
@Test public void fromTextMessageAsMap() throws Exception { TextMessage textMessageMock = mock(TextMessage.class); Map<String, String> unmarshalled = Collections.singletonMap("foo", "bar"); String text = "{\"foo\":\"bar\"}"; given(textMessageMock.getStringProperty("__typeid__")).willReturn(HashMap.class.getName()); given(textMessageMock.getText()).willReturn(text); Object result = converter.fromMessage(textMessageMock); assertEquals("Invalid result", result, unmarshalled); }
@Test public void fromTextMessage() throws Exception { TextMessage textMessageMock = mock(TextMessage.class); MyBean unmarshalled = new MyBean("bar"); String text = "{\"foo\":\"bar\"}"; given(textMessageMock.getStringProperty("__typeid__")).willReturn(MyBean.class.getName()); given(textMessageMock.getText()).willReturn(text); MyBean result = (MyBean)converter.fromMessage(textMessageMock); assertEquals("Invalid result", result, unmarshalled); }
@Test public void fromTextMessageWithUnknownProperty() throws Exception { TextMessage textMessageMock = mock(TextMessage.class); MyBean unmarshalled = new MyBean("bar"); String text = "{\"foo\":\"bar\", \"unknownProperty\":\"value\"}"; given(textMessageMock.getStringProperty("__typeid__")).willReturn(MyBean.class.getName()); given(textMessageMock.getText()).willReturn(text); MyBean result = (MyBean)converter.fromMessage(textMessageMock); assertEquals("Invalid result", result, unmarshalled); }
@Test public void fromBytesMessage() throws Exception { BytesMessage bytesMessageMock = mock(BytesMessage.class); Map<String, String> unmarshalled = Collections.singletonMap("foo", "bar"); byte[] bytes = "{\"foo\":\"bar\"}".getBytes(); final ByteArrayInputStream byteStream = new ByteArrayInputStream(bytes); given(bytesMessageMock.getStringProperty("__typeid__")).willReturn(Object.class.getName()); given(bytesMessageMock.propertyExists("__encoding__")).willReturn(false); given(bytesMessageMock.getBodyLength()).willReturn(new Long(bytes.length)); given(bytesMessageMock.readBytes(any(byte[].class))).willAnswer( new Answer<Integer>() { @Override public Integer answer(InvocationOnMock invocation) throws Throwable { return byteStream.read((byte[]) invocation.getArguments()[0]); } }); Object result = converter.fromMessage(bytesMessageMock); assertEquals("Invalid result", result, unmarshalled); }
@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)); }