@Test @SuppressWarnings("unchecked") public void hashtable() { Hashtable<String, String> hashtable = new Hashtable<String, String>(); hashtable.put("TICKER", "VMW"); hashtable.put("PRICE", "103.2"); Message message = converter.toMessage(hashtable, new MessageProperties()); Hashtable<String, String> marhsalledHashtable = (Hashtable<String, String>) converter.fromMessage(message); assertThat("VMW").isEqualTo(marhsalledHashtable.get("TICKER")); assertThat("103.2").isEqualTo(marhsalledHashtable.get("PRICE")); }
@Test public void testNoJsonContentType() { byte[] bytes = "<root><name>foo</name><root/>".getBytes(); MessageProperties messageProperties = new MessageProperties(); Message message = new Message(bytes, messageProperties); Object foo = xmlConverterWithDefaultType.fromMessage(message); assertThat(new String(bytes)).isEqualTo(new String((byte[]) foo)); }
@Test public void simpleTrade() { Message message = converter.toMessage(trade, new MessageProperties()); SimpleTrade marshalledTrade = (SimpleTrade) converter.fromMessage(message); assertThat(trade).isEqualTo(marshalledTrade); }
@Test public void testNoTypeInfo() { byte[] bytes = "<root><name><foo>bar</foo></name></root>".getBytes(); MessageProperties messageProperties = new MessageProperties(); messageProperties.setContentType("application/xml"); Message message = new Message(bytes, messageProperties); Object wrapper = this.converter.fromMessage(message); assertThat(wrapper).isInstanceOf(LinkedHashMap.class); @SuppressWarnings("unchecked") Map<String, Object> map = (Map<String, Object>) wrapper; assertThat(map.get("name")).isInstanceOf(LinkedHashMap.class); }
@Test public void testAmqp330StringArray() { String[] testData = { "test" }; Message message = converter.toMessage(testData, new MessageProperties()); assertThat(testData).containsExactly((String[]) converter.fromMessage(message)); }
@Test public void testInferredGenericTypeInfo() throws Exception { byte[] bytes = "<root><name>foo</name></root>".getBytes(); MessageProperties messageProperties = new MessageProperties(); messageProperties.setContentType("application/xml"); messageProperties.setInferredArgumentType((new ParameterizedTypeReference<List<Foo>>() { }).getType()); Message message = new Message(bytes, messageProperties); Object foo = this.converter.fromMessage(message); assertThat(foo).isInstanceOf(List.class); assertThat(((List<?>) foo).get(0)).isInstanceOf(Foo.class); }
@Test public void testAmqp330ObjectArray() { SimpleTrade[] testData = { trade }; Message message = converter.toMessage(testData, new MessageProperties()); assertThat(testData).containsExactly((SimpleTrade[]) converter.fromMessage(message)); }
@Test public void testDefaultTypeConfig() { byte[] bytes = "<root><name>foo</name></root>".getBytes(); MessageProperties messageProperties = new MessageProperties(); messageProperties.setContentType("application/xml"); Message message = new Message(bytes, messageProperties); Object foo = xmlConverterWithDefaultType.fromMessage(message); assertThat(foo).isInstanceOf(Foo.class); }
@Test public void testInferredGenericMap1() { byte[] bytes = "<root><qux><element><foo><name>bar</name></foo></element></qux></root>".getBytes(); MessageProperties messageProperties = new MessageProperties(); messageProperties.setContentType("application/xml"); messageProperties.setInferredArgumentType( (new ParameterizedTypeReference<Map<String, List<Bar>>>() { }).getType()); Message message = new Message(bytes, messageProperties); Object foo = this.converter.fromMessage(message); assertThat(foo).isInstanceOf(LinkedHashMap.class); @SuppressWarnings("unchecked") Map<String, Object> map = (Map<String, Object>) foo; assertThat(map.get("qux")).isInstanceOf(List.class); Object row = ((List<?>) map.get("qux")).get(0); assertThat(row).isInstanceOf(Bar.class); assertThat(((Bar) row).getFoo()).isEqualTo(new Foo("bar")); }
@Test public void testInferredGenericMap2() { byte[] bytes = "<root><qux><baz><foo><name>bar</name></foo></baz></qux></root>".getBytes(); MessageProperties messageProperties = new MessageProperties(); messageProperties.setContentType("application/xml"); messageProperties.setInferredArgumentType( (new ParameterizedTypeReference<Map<String, Map<String, Bar>>>() { }).getType()); Message message = new Message(bytes, messageProperties); Object foo = this.converter.fromMessage(message); assertThat(foo).isInstanceOf(LinkedHashMap.class); @SuppressWarnings("unchecked") Map<String, Object> map = (Map<String, Object>) foo; assertThat(map.get("qux")).isInstanceOf(Map.class); Object value = ((Map<?, ?>) map.get("qux")).get("baz"); assertThat(value).isInstanceOf(Bar.class); assertThat(((Bar) value).getFoo()).isEqualTo(new Foo("bar")); }
@Test public void nestedBean() { Bar bar = new Bar(); bar.getFoo().setName("spam"); Message message = converter.toMessage(bar, new MessageProperties()); Bar marshalled = (Bar) converter.fromMessage(message); assertThat(bar).isEqualTo(marshalled); }
@Test public void shouldUseClassMapperWhenProvidedOutbound() { DefaultClassMapper classMapper = new DefaultClassMapper(); classMapper.setTrustedPackages(TRUSTED_PACKAGE); converter.setClassMapper(classMapper); Message message = converter.toMessage(trade, new MessageProperties()); SimpleTrade marshalledTrade = (SimpleTrade) converter.fromMessage(message); assertThat(trade).isEqualTo(marshalledTrade); }
@Test public void testInferredTypeInfo() { byte[] bytes = "<root><name>foo</name></root>".getBytes(); MessageProperties messageProperties = new MessageProperties(); messageProperties.setContentType("application/xml"); messageProperties.setInferredArgumentType(Foo.class); Message message = new Message(bytes, messageProperties); Object foo = this.converter.fromMessage(message); assertThat(foo).isInstanceOf(Foo.class); }
@Test public void shouldUseClassMapperWhenProvided() { Message message = converter.toMessage(trade, new MessageProperties()); converter.setClassMapper(new DefaultClassMapper()); ((DefaultClassMapper) this.converter.getClassMapper()).setTrustedPackages(TRUSTED_PACKAGE); SimpleTrade marshalledTrade = (SimpleTrade) converter.fromMessage(message); assertThat(trade).isEqualTo(marshalledTrade); }
@Test public void simpleTradeOverrideMapper() { XmlMapper mapper = new XmlMapper(); mapper.setSerializerFactory(BeanSerializerFactory.instance); converter = new Jackson2XmlMessageConverter(mapper); ((DefaultJackson2JavaTypeMapper) this.converter.getJavaTypeMapper()) .setTrustedPackages(TRUSTED_PACKAGE); Message message = converter.toMessage(trade, new MessageProperties()); SimpleTrade marshalledTrade = (SimpleTrade) converter.fromMessage(message); assertThat(trade).isEqualTo(marshalledTrade); }
@Test public void testDefaultType() { byte[] bytes = "<root><name>foo</name></root>".getBytes(); MessageProperties messageProperties = new MessageProperties(); messageProperties.setContentType("application/xml"); Message message = new Message(bytes, messageProperties); Jackson2XmlMessageConverter converter = new Jackson2XmlMessageConverter(); DefaultClassMapper classMapper = new DefaultClassMapper(); classMapper.setDefaultType(Foo.class); converter.setClassMapper(classMapper); Object foo = converter.fromMessage(message); assertThat(foo).isInstanceOf(Foo.class); }