Add FormatterRegistry addPrinter/addParser methods

Update `FormatterRegistry` with `addPrinter` and `addParser` methods
that can be used to register Printer or Parser implementations in a
similar way to the existing `addFormatter` method.

Closes gh-23110
This commit is contained in:
Phillip Webb
2019-06-11 14:45:04 -07:00
parent a89bfffd8c
commit 5e505ce3a9
3 changed files with 61 additions and 9 deletions

View File

@@ -346,8 +346,25 @@ public class FormattingConversionServiceTests {
@Test
public void introspectedFormatter() throws ParseException {
formattingService.addFormatter(new NumberStyleFormatter());
assertThat(formattingService.convert(null, TypeDescriptor.valueOf(String.class), TypeDescriptor.valueOf(Integer.class))).isNull();
formattingService.addFormatter(new NumberStyleFormatter("#,#00.0#"));
assertThat(formattingService.convert(123, String.class)).isEqualTo("123.0");
assertThat(formattingService.convert("123.0", Integer.class)).isEqualTo(123);
}
@Test
public void introspectedPrinter() throws ParseException {
formattingService.addPrinter(new NumberStyleFormatter("#,#00.0#"));
assertThat(formattingService.convert(123, String.class)).isEqualTo("123.0");
assertThatExceptionOfType(ConversionFailedException.class).isThrownBy(() ->
assertThat(formattingService.convert("123.0", Integer.class)).isNull())
.withCauseInstanceOf(NumberFormatException.class);
}
@Test
public void introspectedParser() throws ParseException {
formattingService.addParser(new NumberStyleFormatter("#,#00.0#"));
assertThat(formattingService.convert("123.0", Integer.class)).isEqualTo(123);
assertThat(formattingService.convert(123, String.class)).isEqualTo("123");
}
@Test