diff --git a/csv/src/main/java/com/fasterxml/jackson/dataformat/csv/CsvGenerator.java b/csv/src/main/java/com/fasterxml/jackson/dataformat/csv/CsvGenerator.java index bdae6621..853fb29b 100644 --- a/csv/src/main/java/com/fasterxml/jackson/dataformat/csv/CsvGenerator.java +++ b/csv/src/main/java/com/fasterxml/jackson/dataformat/csv/CsvGenerator.java @@ -979,9 +979,8 @@ protected void _releaseBuffers() { * * @since 2.7 */ - protected void _reportMappingError(String msg) throws JsonProcessingException { - throw CsvMappingException.from(this, msg, _schema); -// throw new JsonGenerationException(msg, this); + protected void _reportMappingError(String msg) throws IOException { + throw CsvWriteException.from(this, msg, _schema); } /* diff --git a/csv/src/main/java/com/fasterxml/jackson/dataformat/csv/CsvMappingException.java b/csv/src/main/java/com/fasterxml/jackson/dataformat/csv/CsvMappingException.java index 4bdf19cb..2ea9cda3 100644 --- a/csv/src/main/java/com/fasterxml/jackson/dataformat/csv/CsvMappingException.java +++ b/csv/src/main/java/com/fasterxml/jackson/dataformat/csv/CsvMappingException.java @@ -7,7 +7,11 @@ * content above minimal decoding, based on {@link CsvSchema}. * * @since 2.9 + * + * @deprecated Since 2.13 use sub-class {@link CsvReadException} and {@link CsvWriteException} + * instead */ +@Deprecated public class CsvMappingException extends JsonMappingException { private static final long serialVersionUID = 1L; @@ -24,10 +28,12 @@ public CsvMappingException(CsvGenerator gen, String msg, CsvSchema schema) { _schema = schema; } + @Deprecated // since 2.13: use "CsvReadException.from()" instead public static CsvMappingException from(CsvParser p, String msg, CsvSchema schema) { return new CsvMappingException(p, msg, schema); } + @Deprecated // since 2.13: use "CsvWriteException.from()" instead public static CsvMappingException from(CsvGenerator gen, String msg, CsvSchema schema) { return new CsvMappingException(gen, msg, schema); } 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 eef95e0c..980e0541 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 @@ -104,7 +104,7 @@ public enum Feature ALLOW_COMMENTS(false), /** - * Feature that allows failing (with a {@link CsvMappingException}) in cases + * Feature that allows failing (with a {@link CsvReadException}) in cases * where number of column values encountered is less than number of columns * declared in active schema ("missing columns"). *
@@ -1324,11 +1324,11 @@ protected void _handleEOF() throws JsonParseException {
*
* @since 2.9
*/
- public
+ * In Jackson 2.x this type extends
+ * {@link com.fasterxml.jackson.databind.DatabindException}, but for Jackson 3.0
+ * will become streaming-level exception
+ *
+ * @since 2.13
+ */
+@SuppressWarnings("deprecation")
+public class CsvReadException
+ extends CsvMappingException
+{
+ private static final long serialVersionUID = 1L;
+
+ public CsvReadException(CsvParser p, String msg, CsvSchema schema) {
+ super(p, msg, schema);
+ }
+
+ public static CsvReadException from(CsvParser p, String msg, CsvSchema schema) {
+ return new CsvReadException(p, msg, schema);
+ }
+}
diff --git a/csv/src/main/java/com/fasterxml/jackson/dataformat/csv/CsvWriteException.java b/csv/src/main/java/com/fasterxml/jackson/dataformat/csv/CsvWriteException.java
new file mode 100644
index 00000000..f2aded4f
--- /dev/null
+++ b/csv/src/main/java/com/fasterxml/jackson/dataformat/csv/CsvWriteException.java
@@ -0,0 +1,27 @@
+package com.fasterxml.jackson.dataformat.csv;
+
+/**
+ * Format-specific exception used to indicate problems regarding low-level
+ * generation issues specific to CSV content;
+ * usually problems with field-to-column mapping as defined by {@link CsvSchema}.
+ *
+ * In Jackson 2.x this type extends
+ * {@link com.fasterxml.jackson.databind.DatabindException}, but for Jackson 3.0
+ * will become streaming-level exception
+ *
+ * @since 2.13
+ */
+@SuppressWarnings("deprecation")
+public class CsvWriteException
+ extends CsvMappingException
+{
+ private static final long serialVersionUID = 1L;
+
+ public CsvWriteException(CsvGenerator gen, String msg, CsvSchema schema) {
+ super(gen, msg, schema);
+ }
+
+ public static CsvWriteException from(CsvGenerator gen, String msg, CsvSchema schema) {
+ return new CsvWriteException(gen, msg, schema);
+ }
+}
diff --git a/csv/src/test/java/com/fasterxml/jackson/dataformat/csv/deser/MissingColumnsTest.java b/csv/src/test/java/com/fasterxml/jackson/dataformat/csv/deser/MissingColumnsTest.java
index 4a25f086..7342788e 100644
--- a/csv/src/test/java/com/fasterxml/jackson/dataformat/csv/deser/MissingColumnsTest.java
+++ b/csv/src/test/java/com/fasterxml/jackson/dataformat/csv/deser/MissingColumnsTest.java
@@ -1,13 +1,11 @@
package com.fasterxml.jackson.dataformat.csv.deser;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
import com.fasterxml.jackson.databind.MappingIterator;
import com.fasterxml.jackson.databind.ObjectReader;
-import com.fasterxml.jackson.dataformat.csv.CsvMapper;
-import com.fasterxml.jackson.dataformat.csv.CsvMappingException;
-import com.fasterxml.jackson.dataformat.csv.CsvParser;
-import com.fasterxml.jackson.dataformat.csv.CsvSchema;
-import com.fasterxml.jackson.dataformat.csv.ModuleTestBase;
+
+import com.fasterxml.jackson.dataformat.csv.*;
/**
* Tests for cases where one more of schema-declared columns is
@@ -113,7 +111,7 @@ public void testFailOnMissingColumns() throws Exception
try {
it.nextValue();
fail("Should not pass");
- } catch (CsvMappingException e) {
+ } catch (CsvReadException e) {
verifyException(e, "Not enough column values");
verifyException(e, "expected 3, found 2");
}
@@ -126,7 +124,7 @@ public void testFailOnMissingColumns() throws Exception
try {
it.nextValue();
fail("Should not pass");
- } catch (CsvMappingException e) {
+ } catch (CsvReadException e) {
verifyException(e, "Not enough column values");
verifyException(e, "expected 3, found 1");
}
diff --git a/csv/src/test/java/com/fasterxml/jackson/dataformat/csv/deser/TestFiltering.java b/csv/src/test/java/com/fasterxml/jackson/dataformat/csv/deser/TestFiltering.java
index 7ca57b83..6dd56f21 100644
--- a/csv/src/test/java/com/fasterxml/jackson/dataformat/csv/deser/TestFiltering.java
+++ b/csv/src/test/java/com/fasterxml/jackson/dataformat/csv/deser/TestFiltering.java
@@ -13,7 +13,7 @@
import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
import com.fasterxml.jackson.dataformat.csv.CsvMapper;
-import com.fasterxml.jackson.dataformat.csv.CsvMappingException;
+import com.fasterxml.jackson.dataformat.csv.CsvReadException;
import com.fasterxml.jackson.dataformat.csv.CsvSchema;
import com.fasterxml.jackson.dataformat.csv.ModuleTestBase;
@@ -114,7 +114,8 @@ public void testSchemaWithJsonViewDeserializationFail() throws Exception
try {
MAPPER.readerFor(Bean.class).with(schema).withView(ViewB.class).readValue(input);
fail();
- } catch (CsvMappingException ignore) {
+ } catch (CsvReadException e) {
+ verifyException(e, "Too many entries: expected at most 2");
}
}
diff --git a/csv/src/test/java/com/fasterxml/jackson/dataformat/csv/ser/GeneratorIgnoreUnknown51Test.java b/csv/src/test/java/com/fasterxml/jackson/dataformat/csv/ser/GeneratorIgnoreUnknown51Test.java
index 4cf67223..8a10f1cc 100644
--- a/csv/src/test/java/com/fasterxml/jackson/dataformat/csv/ser/GeneratorIgnoreUnknown51Test.java
+++ b/csv/src/test/java/com/fasterxml/jackson/dataformat/csv/ser/GeneratorIgnoreUnknown51Test.java
@@ -8,8 +8,8 @@
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.dataformat.csv.CsvMapper;
-import com.fasterxml.jackson.dataformat.csv.CsvMappingException;
import com.fasterxml.jackson.dataformat.csv.CsvSchema;
+import com.fasterxml.jackson.dataformat.csv.CsvWriteException;
import com.fasterxml.jackson.dataformat.csv.ModuleTestBase;
public class GeneratorIgnoreUnknown51Test extends ModuleTestBase
@@ -77,7 +77,7 @@ public void testIgnoreEmbeddedObject() throws Exception
try {
mapper.writer(schema).writeValue(sw, myClass);
fail("Should not pass");
- } catch (CsvMappingException e) {
+ } catch (CsvWriteException e) {
verifyException(e, "CSV generator does not support");
verifyException(e, "nested Objects");
}
diff --git a/properties/src/main/java/com/fasterxml/jackson/dataformat/javaprop/impl/WriterBackedGenerator.java b/properties/src/main/java/com/fasterxml/jackson/dataformat/javaprop/impl/WriterBackedGenerator.java
index aff6e5e0..22954ebc 100644
--- a/properties/src/main/java/com/fasterxml/jackson/dataformat/javaprop/impl/WriterBackedGenerator.java
+++ b/properties/src/main/java/com/fasterxml/jackson/dataformat/javaprop/impl/WriterBackedGenerator.java
@@ -75,7 +75,6 @@ public Object getOutputTarget() {
/**********************************************************
*/
- @SuppressWarnings("deprecation")
@Override
public void close() throws IOException
{
@@ -95,7 +94,6 @@ public void close() throws IOException
_releaseBuffers();
}
- @SuppressWarnings("deprecation")
@Override
public void flush() throws IOException
{
diff --git a/release-notes/VERSION-2.x b/release-notes/VERSION-2.x
index f4861d95..b9fc6231 100644
--- a/release-notes/VERSION-2.x
+++ b/release-notes/VERSION-2.x
@@ -10,7 +10,7 @@ Modules:
2.13.0 (not yet released)
-No changes since 2.12
+#240: (csv) Split `CsvMappingException` into `CsvReadException`/`CsvWriteException`
2.12.1 (08-Jan-2021)
diff --git a/yaml/src/main/java/com/fasterxml/jackson/dataformat/yaml/YAMLFactoryBuilder.java b/yaml/src/main/java/com/fasterxml/jackson/dataformat/yaml/YAMLFactoryBuilder.java
index 7828f4d3..235aa641 100644
--- a/yaml/src/main/java/com/fasterxml/jackson/dataformat/yaml/YAMLFactoryBuilder.java
+++ b/yaml/src/main/java/com/fasterxml/jackson/dataformat/yaml/YAMLFactoryBuilder.java
@@ -104,11 +104,11 @@ public YAMLFactoryBuilder configure(YAMLGenerator.Feature f, boolean state) {
/**
* Method for specifying either custom {@link StringQuotingChecker}
* to use instead of default one, or, that default one (see
- * {@link StringQuotingChecker.Default#instance()}) is to be used
+ * {@code StringQuotingChecker.Default.instance()}) is to be used
* (when passing {@code null}
*
* @param sqc Checker to use (if non-null), or {@code null} to use the
- * default one (see {@link StringQuotingChecker.Default#instance()})
+ * default one (see {@code StringQuotingChecker.Default.instance()})
*
* @return This builder instance, to allow chaining
*/
diff --git a/yaml/src/test/java/com/fasterxml/jackson/dataformat/yaml/filter/StreamingDecoratorsTest.java b/yaml/src/test/java/com/fasterxml/jackson/dataformat/yaml/filter/StreamingDecoratorsTest.java
index e8b440dd..cd5b087e 100644
--- a/yaml/src/test/java/com/fasterxml/jackson/dataformat/yaml/filter/StreamingDecoratorsTest.java
+++ b/yaml/src/test/java/com/fasterxml/jackson/dataformat/yaml/filter/StreamingDecoratorsTest.java
@@ -31,7 +31,6 @@ public void testInputDecorators() throws IOException
assertEquals("mum", value.get("secret"));
}
- @SuppressWarnings("unchecked")
public void testOutputDecorators() throws IOException
{
final String PREFIX = "///////";