diff --git a/release-notes/VERSION-2.x b/release-notes/VERSION-2.x index c91bd77a..19d94204 100644 --- a/release-notes/VERSION-2.x +++ b/release-notes/VERSION-2.x @@ -16,7 +16,9 @@ Active Maintainers: 2.15.0 (not yet released) -- +#373: Positive numbers with plus sign not quoted correctly with + `ALWAYS_QUOTE_NUMBERS_AS_STRINGS` + (requested by @dyadyaJora) 2.14.2 (28-Jan-2023) diff --git a/yaml/src/main/java/com/fasterxml/jackson/dataformat/yaml/YAMLGenerator.java b/yaml/src/main/java/com/fasterxml/jackson/dataformat/yaml/YAMLGenerator.java index a2be3b06..e7073c95 100644 --- a/yaml/src/main/java/com/fasterxml/jackson/dataformat/yaml/YAMLGenerator.java +++ b/yaml/src/main/java/com/fasterxml/jackson/dataformat/yaml/YAMLGenerator.java @@ -217,7 +217,7 @@ private Feature(boolean defaultState) { protected final static long MIN_INT_AS_LONG = (long) Integer.MIN_VALUE; protected final static long MAX_INT_AS_LONG = (long) Integer.MAX_VALUE; - protected final static Pattern PLAIN_NUMBER_P = Pattern.compile("-?[0-9]*(\\.[0-9]*)?"); + protected final static Pattern PLAIN_NUMBER_P = Pattern.compile("[+-]?[0-9]*(\\.[0-9]*)?"); protected final static String TAG_BINARY = Tag.BINARY.toString(); /* diff --git a/yaml/src/test/java/com/fasterxml/jackson/dataformat/yaml/ser/GeneratorWithMinimizeTest.java b/yaml/src/test/java/com/fasterxml/jackson/dataformat/yaml/ser/GeneratorWithMinimizeTest.java index 834802fb..706fd063 100644 --- a/yaml/src/test/java/com/fasterxml/jackson/dataformat/yaml/ser/GeneratorWithMinimizeTest.java +++ b/yaml/src/test/java/com/fasterxml/jackson/dataformat/yaml/ser/GeneratorWithMinimizeTest.java @@ -177,6 +177,8 @@ public void testLiteralStringsMultiLine() throws Exception public void testQuoteNumberStoredAsString() throws Exception { + // [dataformats-text#182] + YAMLFactory f = new YAMLFactory(); // verify default settings assertFalse(f.isEnabled(YAMLGenerator.Feature.MINIMIZE_QUOTES)); @@ -206,6 +208,11 @@ public void testQuoteNumberStoredAsString() throws Exception yaml = mapper.writeValueAsString(Collections.singletonMap("key", "-60.25")).trim(); assertEquals("---\n" + "key: \"-60.25\"", yaml); + + // [dataformats-text#373] + yaml = mapper.writeValueAsString(Collections.singletonMap("key", "+125")).trim(); + assertEquals("---\n" + + "key: \"+125\"", yaml); } public void testNonQuoteNumberStoredAsString() throws Exception