This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new ee4f599156f8 CAMEL-24167: camel-csv - Fix format option silently
ignored (#24816)
ee4f599156f8 is described below
commit ee4f599156f8b04f8d423125e43d1cf42161810a
Author: Federico Mariani <[email protected]>
AuthorDate: Fri Jul 17 14:48:12 2026 +0200
CAMEL-24167: camel-csv - Fix format option silently ignored (#24816)
Co-authored-by: Claude Opus 4.6 (1M context) <[email protected]>
---
.../apache/camel/dataformat/csv/CsvDataFormat.java | 17 +++++++++++++++--
.../camel/dataformat/csv/CsvDataFormatTest.java | 20 ++++++++++++++++++++
2 files changed, 35 insertions(+), 2 deletions(-)
diff --git
a/components/camel-csv/src/main/java/org/apache/camel/dataformat/csv/CsvDataFormat.java
b/components/camel-csv/src/main/java/org/apache/camel/dataformat/csv/CsvDataFormat.java
index 102206f50f97..5e443a58c644 100644
---
a/components/camel-csv/src/main/java/org/apache/camel/dataformat/csv/CsvDataFormat.java
+++
b/components/camel-csv/src/main/java/org/apache/camel/dataformat/csv/CsvDataFormat.java
@@ -105,8 +105,8 @@ public class CsvDataFormat extends ServiceSupport
implements DataFormat, DataFor
protected void doInit() throws Exception {
super.doInit();
- if (csvFormat == null && format != null) {
- csvFormat = CSVFormat.valueOf(format);
+ if (format != null) {
+ csvFormat = resolveFormat(format);
}
if (csvFormat == null) {
csvFormat = CSVFormat.DEFAULT;
@@ -121,6 +121,19 @@ public class CsvDataFormat extends ServiceSupport
implements DataFormat, DataFor
// noop
}
+ private static CSVFormat resolveFormat(String name) {
+ // The model advertises uppercase names (EXCEL, INFORMIX_UNLOAD) but
+ // commons-csv Predefined uses CamelCase (Excel, InformixUnload).
+ // Match by stripping underscores and comparing case-insensitively.
+ String normalized = name.replace("_", "");
+ for (CSVFormat.Predefined p : CSVFormat.Predefined.values()) {
+ if (p.name().equalsIgnoreCase(normalized)) {
+ return p.getFormat();
+ }
+ }
+ throw new IllegalArgumentException("Unknown CSV format: " + name);
+ }
+
CSVFormat getActiveFormat() {
CSVFormat answer = csvFormat;
diff --git
a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvDataFormatTest.java
b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvDataFormatTest.java
index d556fd5042df..43de12188773 100644
---
a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvDataFormatTest.java
+++
b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvDataFormatTest.java
@@ -80,6 +80,26 @@ public class CsvDataFormatTest {
}
}
+ @Test
+ void shouldResolveFormatByName() throws IOException {
+ try (CsvDataFormat dataFormat = new CsvDataFormat()) {
+ dataFormat.setFormat("MYSQL");
+ dataFormat.start();
+ assertEquals(CSVFormat.MYSQL, dataFormat.getCsvFormat());
+ assertEquals("\t",
dataFormat.getActiveFormat().getDelimiterString());
+ }
+ }
+
+ @Test
+ void shouldResolveFormatByNameCaseInsensitive() throws IOException {
+ try (CsvDataFormat dataFormat = new CsvDataFormat()) {
+ dataFormat.setFormat("EXCEL");
+ dataFormat.start();
+ assertEquals(CSVFormat.EXCEL, dataFormat.getCsvFormat());
+ assertEquals(CSVFormat.EXCEL, dataFormat.getActiveFormat());
+ }
+ }
+
@Test
void shouldDisableCommentMarker() throws IOException {
try (CsvDataFormat defDataFormat = new CsvDataFormat(); CsvDataFormat
dataFormat = defDataFormat