ctdConverter.addDelegate("my/ct", converter); mapped = MappingUtils.mapMessage(requestMessage, ctdConverter, headerMapper, defaultDeliveryMode, headersMappedLast);
@Test public void testDelegationOutbound() { ContentTypeDelegatingMessageConverter converter = new ContentTypeDelegatingMessageConverter(); Jackson2JsonMessageConverter messageConverter = new Jackson2JsonMessageConverter(ContentTypeDelegatingMessageConverterTests.class.getPackage().getName()); converter.addDelegate("foo/bar", messageConverter); converter.addDelegate(MessageProperties.CONTENT_TYPE_JSON, messageConverter); MessageProperties props = new MessageProperties(); Foo foo = new Foo(); foo.setFoo("bar"); Message message = converter.toMessage(foo, props); assertEquals(MessageProperties.CONTENT_TYPE_SERIALIZED_OBJECT, message.getMessageProperties().getContentType()); Object converted = converter.fromMessage(message); assertThat(converted, instanceOf(Foo.class)); props.setContentType("foo/bar"); message = converter.toMessage(foo, props); assertEquals(MessageProperties.CONTENT_TYPE_JSON, message.getMessageProperties().getContentType()); assertEquals("{\"foo\":\"bar\"}", new String(message.getBody())); converted = converter.fromMessage(message); assertThat(converted, instanceOf(Foo.class)); converter = new ContentTypeDelegatingMessageConverter(null); // no default try { converter.toMessage(foo, props); fail("Expected exception"); } catch (Exception e) { assertThat(e, instanceOf(MessageConversionException.class)); assertThat(e.getMessage(), containsString("No delegate converter")); } }