From e68dacd51422d0496cd1bab478c53c7953f556ca Mon Sep 17 00:00:00 2001 From: Tatu Saloranta Date: Tue, 25 Sep 2018 22:08:29 -0700 Subject: [PATCH] Fix #108 --- .../com/fasterxml/jackson/dataformat/csv/CsvParser.java | 9 +++++++++ .../jackson/dataformat/csv/impl/CsvDecoder.java | 5 +++-- .../fasterxml/jackson/dataformat/csv/ModuleTestBase.java | 7 ++++++- .../jackson/dataformat/csv/deser/CommentsTest.java | 8 ++++---- release-notes/VERSION-2.x | 2 ++ 5 files changed, 24 insertions(+), 7 deletions(-) diff --git a/csv/src/main/java/com/fasterxml/jackson/dataformat/csv/CsvParser.java b/csv/src/main/java/com/fasterxml/jackson/dataformat/csv/CsvParser.java index 0ca67c90..f1449fc1 100644 --- a/csv/src/main/java/com/fasterxml/jackson/dataformat/csv/CsvParser.java +++ b/csv/src/main/java/com/fasterxml/jackson/dataformat/csv/CsvParser.java @@ -89,6 +89,15 @@ public enum Feature */ ALLOW_TRAILING_COMMA(true), + /** + * Feature that allows accepting "hash comments" by default, similar to + * {@link CsvSchema#withAllowComments(boolean)}. If enabled, such comments + * are by default allowed on all columns of all documents. + * + * @since 2.10 + */ + ALLOW_COMMENTS(false), + /** * Feature that allows failing (with a {@link CsvMappingException}) in cases * where number of column values encountered is less than number of columns diff --git a/csv/src/main/java/com/fasterxml/jackson/dataformat/csv/impl/CsvDecoder.java b/csv/src/main/java/com/fasterxml/jackson/dataformat/csv/impl/CsvDecoder.java index 15755500..0adf177b 100644 --- a/csv/src/main/java/com/fasterxml/jackson/dataformat/csv/impl/CsvDecoder.java +++ b/csv/src/main/java/com/fasterxml/jackson/dataformat/csv/impl/CsvDecoder.java @@ -256,14 +256,15 @@ public class CsvDecoder public CsvDecoder(CsvParser owner, IOContext ctxt, Reader r, CsvSchema schema, TextBuffer textBuffer, int stdFeatures, int csvFeatures) -// boolean autoCloseInput, boolean trimSpaces) { _owner = owner; _ioContext = ctxt; _inputSource = r; _textBuffer = textBuffer; _autoCloseInput = JsonParser.Feature.AUTO_CLOSE_SOURCE.enabledIn(stdFeatures); - _allowComments = JsonParser.Feature.ALLOW_YAML_COMMENTS.enabledIn(stdFeatures); + @SuppressWarnings("deprecation") + final boolean legacy = JsonParser.Feature.ALLOW_YAML_COMMENTS.enabledIn(stdFeatures); + _allowComments = legacy | CsvParser.Feature.ALLOW_COMMENTS.enabledIn(csvFeatures); _trimSpaces = CsvParser.Feature.TRIM_SPACES.enabledIn(csvFeatures); _inputBuffer = ctxt.allocTokenBuffer(); _bufferRecyclable = true; // since we allocated it diff --git a/csv/src/test/java/com/fasterxml/jackson/dataformat/csv/ModuleTestBase.java b/csv/src/test/java/com/fasterxml/jackson/dataformat/csv/ModuleTestBase.java index 5acf53fb..7726bdd9 100644 --- a/csv/src/test/java/com/fasterxml/jackson/dataformat/csv/ModuleTestBase.java +++ b/csv/src/test/java/com/fasterxml/jackson/dataformat/csv/ModuleTestBase.java @@ -87,11 +87,16 @@ protected ModuleTestBase() { } /* Helper methods, setup /********************************************************************** */ - + protected CsvMapper mapperForCsv() { return CsvMapper.builder().build(); } + + protected CsvMapper.Builder mapperBuilder() + { + return CsvMapper.builder(); + } /* /********************************************************** diff --git a/csv/src/test/java/com/fasterxml/jackson/dataformat/csv/deser/CommentsTest.java b/csv/src/test/java/com/fasterxml/jackson/dataformat/csv/deser/CommentsTest.java index cbcbac63..d4bd2918 100644 --- a/csv/src/test/java/com/fasterxml/jackson/dataformat/csv/deser/CommentsTest.java +++ b/csv/src/test/java/com/fasterxml/jackson/dataformat/csv/deser/CommentsTest.java @@ -2,7 +2,6 @@ import java.util.Map; -import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.MappingIterator; import com.fasterxml.jackson.dataformat.csv.*; @@ -123,9 +122,10 @@ public void testCommentsWithHeaderRow() throws Exception // Alternate test to ensure comments may be enabled public void testSimpleCommentsWithDefaultProp() throws Exception { - CsvMapper mapper = mapperForCsv(); - mapper.enable(JsonParser.Feature.ALLOW_YAML_COMMENTS); - mapper.enable(CsvParser.Feature.WRAP_AS_ARRAY); + CsvMapper mapper = mapperBuilder() + .enable(CsvParser.Feature.ALLOW_COMMENTS) // since 2.10 + .enable(CsvParser.Feature.WRAP_AS_ARRAY) + .build(); final String CSV = "# comment!\na,b\n"; MappingIterator it = mapper.readerFor(String[].class) diff --git a/release-notes/VERSION-2.x b/release-notes/VERSION-2.x index f207f88c..4cf742eb 100644 --- a/release-notes/VERSION-2.x +++ b/release-notes/VERSION-2.x @@ -12,6 +12,8 @@ Modules: #101: Use latest SnakeYAML version 1.23 and get rid of deprecated methods (contributed by Andrey S) +#108: Add new `CsvParser.Feature.ALLOW_COMMENTS` to replace deprecated + `JsonParser.Feature.ALLOW_YAML_COMMENTS` 2.9.7 (not yet released)