public StringMessageConverter(Charset defaultCharset) { super(new MimeType("text", "plain", defaultCharset)); Assert.notNull(defaultCharset, "Default Charset must not be null"); this.defaultCharset = defaultCharset; }
/** * Create a {@code CharSequenceEncoder} that supports all MIME types. */ public static CharSequenceEncoder allMimeTypes() { return new CharSequenceEncoder(new MimeType("text", "plain", DEFAULT_CHARSET), MimeTypeUtils.ALL); }
/** * Create a {@code CharSequenceEncoder} that supports only "text/plain". */ public static CharSequenceEncoder textPlainOnly() { return new CharSequenceEncoder(new MimeType("text", "plain", DEFAULT_CHARSET)); }
/** * Create a {@code StringDecoder} for {@code "text/plain"}. * @param delimiters delimiter strings to use to split the input stream * @param stripDelimiter whether to remove delimiters from the resulting * input strings */ public static StringDecoder textPlainOnly(List<String> delimiters, boolean stripDelimiter) { return new StringDecoder(delimiters, stripDelimiter, new MimeType("text", "plain", DEFAULT_CHARSET)); }
/** * Create a {@code StringDecoder} that supports all MIME types. * @param delimiters delimiter strings to use to split the input stream * @param stripDelimiter whether to remove delimiters from the resulting * input strings */ public static StringDecoder allMimeTypes(List<String> delimiters, boolean stripDelimiter) { return new StringDecoder(delimiters, stripDelimiter, new MimeType("text", "plain", DEFAULT_CHARSET), MimeTypeUtils.ALL); }
/** * Construct a {@code MappingJackson2MessageConverter} supporting * the {@code application/json} MIME type with {@code UTF-8} character set. */ public MappingJackson2MessageConverter() { super(new MimeType("application", "json", StandardCharsets.UTF_8)); this.objectMapper = initObjectMapper(); }
@Test(expected = IllegalArgumentException.class) public void slashInSubtype() { new MimeType("text", "/"); }
@Test(expected = UnsupportedOperationException.class) public void encodableMimeTypesIsImmutable() { MimeType textJavascript = new MimeType("text", "javascript", StandardCharsets.UTF_8); Jackson2JsonEncoder encoder = new Jackson2JsonEncoder(new ObjectMapper(), textJavascript); encoder.getMimeTypes().add(new MimeType("text", "ecmascript")); }
@Test(expected = UnsupportedOperationException.class) public void decodableMimeTypesIsImmutable() { MimeType textJavascript = new MimeType("text", "javascript", StandardCharsets.UTF_8); Jackson2JsonDecoder decoder = new Jackson2JsonDecoder(new ObjectMapper(), textJavascript); decoder.getMimeTypes().add(new MimeType("text", "ecmascript")); }
@Test // SPR-15866 public void canDecodeWithProvidedMimeType() { MimeType textJavascript = new MimeType("text", "javascript", StandardCharsets.UTF_8); Jackson2JsonDecoder decoder = new Jackson2JsonDecoder(new ObjectMapper(), textJavascript); assertEquals(Collections.singletonList(textJavascript), decoder.getDecodableMimeTypes()); }
@Test // SPR-15866 public void canEncodeWithCustomMimeType() { MimeType textJavascript = new MimeType("text", "javascript", StandardCharsets.UTF_8); Jackson2JsonEncoder encoder = new Jackson2JsonEncoder(new ObjectMapper(), textJavascript); assertEquals(Collections.singletonList(textJavascript), encoder.getEncodableMimeTypes()); }
@Test public void toMessageUtf16() { MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter(); MimeType contentType = new MimeType("application", "json", StandardCharsets.UTF_16BE); Map<String, Object> map = new HashMap<>(); map.put(MessageHeaders.CONTENT_TYPE, contentType); MessageHeaders headers = new MessageHeaders(map); String payload = "H\u00e9llo W\u00f6rld"; Message<?> message = converter.toMessage(payload, headers); assertEquals("\"" + payload + "\"", new String((byte[]) message.getPayload(), StandardCharsets.UTF_16BE)); assertEquals(contentType, message.getHeaders().get(MessageHeaders.CONTENT_TYPE)); }
@Test public void testToString() { MimeType mimeType = new MimeType("text", "plain"); String result = mimeType.toString(); assertEquals("Invalid toString() returned", "text/plain", result); }
@Test // SPR-12724 public void mimetypesParametrizedConstructor() { MimeType jsonMimetype = new MimeType("application", "json", StandardCharsets.UTF_8); MimeType xmlMimetype = new MimeType("application", "xml", StandardCharsets.UTF_8); MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter(jsonMimetype, xmlMimetype); assertThat(converter.getSupportedMimeTypes(), contains(jsonMimetype, xmlMimetype)); assertFalse(converter.getObjectMapper().getDeserializationConfig() .isEnabled(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)); }
@Test public void toMessageUtf16String() { MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter(); converter.setSerializedPayloadClass(String.class); MimeType contentType = new MimeType("application", "json", StandardCharsets.UTF_16BE); Map<String, Object> map = new HashMap<>(); map.put(MessageHeaders.CONTENT_TYPE, contentType); MessageHeaders headers = new MessageHeaders(map); String payload = "H\u00e9llo W\u00f6rld"; Message<?> message = converter.toMessage(payload, headers); assertEquals("\"" + payload + "\"", message.getPayload()); assertEquals(contentType, message.getHeaders().get(MessageHeaders.CONTENT_TYPE)); }
@Test public void fromMessageCharset() { String payload = "H\u00e9llo W\u00f6rld"; Message<byte[]> message = MessageBuilder.withPayload(payload.getBytes(StandardCharsets.ISO_8859_1)) .setHeader(MessageHeaders.CONTENT_TYPE, new MimeType("text", "plain", StandardCharsets.ISO_8859_1)).build(); assertEquals(payload, this.converter.fromMessage(message, String.class)); }
@Test public void defaultConstructor() { MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter(); assertThat(converter.getSupportedMimeTypes(), contains(new MimeType("application", "json", StandardCharsets.UTF_8))); assertFalse(converter.getObjectMapper().getDeserializationConfig() .isEnabled(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)); }
@Test // SPR-12724 public void mimetypeParametrizedConstructor() { MimeType mimetype = new MimeType("application", "xml", StandardCharsets.UTF_8); MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter(mimetype); assertThat(converter.getSupportedMimeTypes(), contains(mimetype)); assertFalse(converter.getObjectMapper().getDeserializationConfig() .isEnabled(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)); }
@Test public void convertAndSendPayloadAndMutableHeadersToDestination() { MessageHeaderAccessor accessor = new MessageHeaderAccessor(); accessor.setHeader("foo", "bar"); accessor.setLeaveMutable(true); MessageHeaders messageHeaders = accessor.getMessageHeaders(); this.template.setMessageConverter(new StringMessageConverter()); this.template.convertAndSend("somewhere", "payload", messageHeaders); MessageHeaders actual = this.template.message.getHeaders(); assertSame(messageHeaders, actual); assertEquals(new MimeType("text", "plain", StandardCharsets.UTF_8), actual.get(MessageHeaders.CONTENT_TYPE)); assertEquals("bar", actual.get("foo")); }