/** * Specify the MessageConverter to use for turning request messages into * {@link org.springframework.remoting.support.RemoteInvocation} objects, * as well as {@link org.springframework.remoting.support.RemoteInvocationResult} * objects into response messages. * <p>Default is a {@link org.springframework.jms.support.converter.SimpleMessageConverter}, * using a standard JMS {@link javax.jms.ObjectMessage} for each invocation / * invocation result object. * <p>Custom implementations may generally adapt Serializables into * special kinds of messages, or might be specifically tailored for * translating RemoteInvocation(Result)s into specific kinds of messages. */ public void setMessageConverter(@Nullable MessageConverter messageConverter) { this.messageConverter = (messageConverter != null ? messageConverter : new SimpleMessageConverter()); }
/** * Specify the {@link MessageConverter} to use for turning * {@link org.springframework.remoting.support.RemoteInvocation} * objects into request messages, as well as response messages into * {@link org.springframework.remoting.support.RemoteInvocationResult} objects. * <p>Default is a {@link SimpleMessageConverter}, using a standard JMS * {@link javax.jms.ObjectMessage} for each invocation / invocation result * object. * <p>Custom implementations may generally adapt {@link java.io.Serializable} * objects into special kinds of messages, or might be specifically tailored for * translating {@code RemoteInvocation(Result)s} into specific kinds of messages. */ public void setMessageConverter(@Nullable MessageConverter messageConverter) { this.messageConverter = (messageConverter != null ? messageConverter : new SimpleMessageConverter()); }
/** * Initialize the default implementations for the template's strategies: * DynamicDestinationResolver and SimpleMessageConverter. * @see #setDestinationResolver * @see #setMessageConverter * @see org.springframework.jms.support.destination.DynamicDestinationResolver * @see org.springframework.jms.support.converter.SimpleMessageConverter */ protected void initDefaultStrategies() { setMessageConverter(new SimpleMessageConverter()); }
/** * Create an instance with a default payload converter. * @see org.springframework.jms.support.converter.SimpleMessageConverter * @see org.springframework.jms.support.SimpleJmsHeaderMapper */ public MessagingMessageConverter() { this(new SimpleMessageConverter(), new SimpleJmsHeaderMapper()); }
@Test(expected = MessageConversionException.class) public void testToMessageThrowsExceptionIfGivenIncompatibleObjectToConvert() throws Exception { new SimpleMessageConverter().toMessage(new Object(), null); }
@Test(expected = MessageConversionException.class) public void testToMessageThrowsExceptionIfGivenNullObjectToConvert() throws Exception { new SimpleMessageConverter().toMessage(null, null); }
@Test public void testFromMessageSimplyReturnsMessageAsIsIfSuppliedWithMessage() throws JMSException { Message message = mock(Message.class); SimpleMessageConverter converter = new SimpleMessageConverter(); Object msg = converter.fromMessage(message); assertSame(message, msg); }
@Test public void testMapConversionWhereMapHasNNullForKey() throws JMSException { MapMessage message = mock(MapMessage.class); Session session = mock(Session.class); given(session.createMapMessage()).willReturn(message); Map<Object, String> content = new HashMap<>(1); content.put(null, "value1"); SimpleMessageConverter converter = new SimpleMessageConverter(); try { converter.toMessage(content, session); fail("expected MessageConversionException"); } catch (MessageConversionException ex) { /* expected */ } }
@Test public void testMapConversionWhereMapHasNonStringTypesForKeys() throws JMSException { MapMessage message = mock(MapMessage.class); Session session = mock(Session.class); given(session.createMapMessage()).willReturn(message); Map<Integer, String> content = new HashMap<>(1); content.put(1, "value1"); SimpleMessageConverter converter = new SimpleMessageConverter(); try { converter.toMessage(content, session); fail("expected MessageConversionException"); } catch (MessageConversionException ex) { /* expected */ } }
@Test public void testToMessageSimplyReturnsMessageAsIsIfSuppliedWithMessage() throws JMSException { Session session = mock(Session.class); ObjectMessage message = mock(ObjectMessage.class); SimpleMessageConverter converter = new SimpleMessageConverter(); Message msg = converter.toMessage(message, session); assertSame(message, msg); }
@Test public void testStringConversion() throws JMSException { Session session = mock(Session.class); TextMessage message = mock(TextMessage.class); String content = "test"; given(session.createTextMessage(content)).willReturn(message); given(message.getText()).willReturn(content); SimpleMessageConverter converter = new SimpleMessageConverter(); Message msg = converter.toMessage(content, session); assertEquals(content, converter.fromMessage(msg)); }
@Test public void testSerializableConversion() throws JMSException { Session session = mock(Session.class); ObjectMessage message = mock(ObjectMessage.class); Integer content = new Integer(5); given(session.createObjectMessage(content)).willReturn(message); given(message.getObject()).willReturn(content); SimpleMessageConverter converter = new SimpleMessageConverter(); Message msg = converter.toMessage(content, session); assertEquals(content, converter.fromMessage(msg)); }
@Test public void testConverter() throws Exception { JmsTemplate template = createTemplate(); template.setConnectionFactory(this.connectionFactory); template.setMessageConverter(new SimpleMessageConverter()); String s = "Hello world"; MessageProducer messageProducer = mock(MessageProducer.class); TextMessage textMessage = mock(TextMessage.class); given(this.session.createProducer(this.queue)).willReturn(messageProducer); given(this.session.createTextMessage("Hello world")).willReturn(textMessage); template.convertAndSend(this.queue, s); verify(messageProducer).send(textMessage); verify(messageProducer).close(); if (useTransactedTemplate()) { verify(this.session).commit(); } verify(this.session).close(); verify(this.connection).close(); }
protected void doTestJmsException(JMSException original, Class<? extends JmsException> thrownExceptionClass) throws Exception { JmsTemplate template = createTemplate(); template.setConnectionFactory(this.connectionFactory); template.setMessageConverter(new SimpleMessageConverter()); String s = "Hello world"; MessageProducer messageProducer = mock(MessageProducer.class); TextMessage textMessage = mock(TextMessage.class); reset(this.session); given(this.session.createProducer(this.queue)).willReturn(messageProducer); given(this.session.createTextMessage("Hello world")).willReturn(textMessage); willThrow(original).given(messageProducer).send(textMessage); try { template.convertAndSend(this.queue, s); fail("Should have thrown JmsException"); } catch (JmsException wrappedEx) { // expected assertEquals(thrownExceptionClass, wrappedEx.getClass()); assertEquals(original, wrappedEx.getCause()); } verify(messageProducer).close(); verify(this.session).close(); verify(this.connection).close(); }
@Before public void setup() throws JMSException { Mockito.reset(this.mockJmsTemplate); TextMessage message = mock(TextMessage.class); willReturn(new SimpleMessageConverter()) .given(this.mockJmsTemplate).getMessageConverter(); willReturn(message) .given(this.mockJmsTemplate).receiveSelected(isNull()); willAnswer((Answer<String>) invocation -> testMessageHolder.get()) .given(message).getText(); }
@Test public void testMapConversion() throws JMSException { Session session = mock(Session.class); MapMessage message = mock(MapMessage.class); Map<String, String> content = new HashMap<>(2); content.put("key1", "value1"); content.put("key2", "value2"); given(session.createMapMessage()).willReturn(message); given(message.getMapNames()).willReturn(Collections.enumeration(content.keySet())); given(message.getObject("key1")).willReturn("value1"); given(message.getObject("key2")).willReturn("value2"); SimpleMessageConverter converter = new SimpleMessageConverter(); Message msg = converter.toMessage(content, session); assertEquals(content, converter.fromMessage(msg)); verify(message).setObject("key1", "value1"); verify(message).setObject("key2", "value2"); }
@Test public void testByteArrayConversion() throws JMSException { Session session = mock(Session.class); BytesMessage message = mock(BytesMessage.class); byte[] content = "test".getBytes(); final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(content); given(session.createBytesMessage()).willReturn(message); given(message.getBodyLength()).willReturn((long) content.length); given(message.readBytes(any(byte[].class))).willAnswer(new Answer<Integer>() { @Override public Integer answer(InvocationOnMock invocation) throws Throwable { return byteArrayInputStream.read((byte[]) invocation.getArguments()[0]); } }); SimpleMessageConverter converter = new SimpleMessageConverter(); Message msg = converter.toMessage(content, session); assertEquals(content.length, ((byte[]) converter.fromMessage(msg)).length); verify(message).writeBytes(content); }
/** * Initialize the default implementations for the template's strategies: * DynamicDestinationResolver and SimpleMessageConverter. * @see #setDestinationResolver * @see #setMessageConverter * @see org.springframework.jms.support.destination.DynamicDestinationResolver * @see org.springframework.jms.support.converter.SimpleMessageConverter */ protected void initDefaultStrategies() { setMessageConverter(new SimpleMessageConverter()); }
/** * Initialize the default implementations for the template's strategies: * DynamicDestinationResolver and SimpleMessageConverter. * @see #setDestinationResolver * @see #setMessageConverter * @see org.springframework.jms.support.destination.DynamicDestinationResolver * @see org.springframework.jms.support.converter.SimpleMessageConverter */ protected void initDefaultStrategies() { setMessageConverter(new SimpleMessageConverter()); }
@Override public void afterPropertiesSet() { simpleMessageConverter = new EventMessageConverter(new SimpleMessageConverter()); xmlMarshaller = new ExtendableJaxb2Marshaller(); xmlMessageConverter = new EventMessageConverter(new MarshallingMessageConverter(xmlMarshaller)); }