[ https://issues.apache.org/jira/browse/NIFI-4882?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16401692#comment-16401692 ]
ASF GitHub Bot commented on NIFI-4882: -------------------------------------- Github user ijokarumawak commented on a diff in the pull request: https://github.com/apache/nifi/pull/2473#discussion_r175002310 --- Diff: nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/csv/TestCSVRecordReader.java --- @@ -124,6 +324,24 @@ public void testSimpleParse() throws IOException, MalformedRecordException { } } + @Test + public void testSimpleParseCustomDate() throws IOException, MalformedRecordException { + final List<RecordField> fields = getDefaultFields(); + fields.replaceAll(f -> f.getFieldName().equals("balance") ? new RecordField("balance", doubleDataType) : f); + + final RecordSchema schema = new SimpleRecordSchema(fields); + + try (final InputStream fis = new FileInputStream(new File("src/test/resources/csv/single-bank-account.csv")); + final CSVRecordReader reader = createReader(fis, schema, format)) { --- End diff -- From the method name, I assume you wanted to pass custom date format to call the newly added createReader method with specified format here. Is that correct? Probably we need to add a date field in the test data, e.g. birth date or updated_timestamp. > CSVRecordReader should utilize specified date/time/timestamp format at its > convertSimpleIfPossible method > --------------------------------------------------------------------------------------------------------- > > Key: NIFI-4882 > URL: https://issues.apache.org/jira/browse/NIFI-4882 > Project: Apache NiFi > Issue Type: Bug > Components: Extensions > Reporter: Koji Kawamura > Assignee: Derek Straka > Priority: Major > > CSVRecordReader.convertSimpleIfPossible method is used by ValidateRecord. The > method does not coerce values to the target schema field type if the raw > string representation in the input CSV file is not compatible. > The type compatibility check is implemented as follows. But it does not use > user specified date/time/timestamp format: > {code} > // This will return 'false' for input '01/01/1900' when user > specified custom format 'MM/dd/YYYY' > if (DataTypeUtils.isCompatibleDataType(trimmed, dataType)) { > // The LAZY_DATE_FORMAT should be used to check > compatibility, too. > return DataTypeUtils.convertType(trimmed, dataType, > LAZY_DATE_FORMAT, LAZY_TIME_FORMAT, LAZY_TIMESTAMP_FORMAT, fieldName); > } else { > return value; > } > {code} > If input date strings have different format than the default format > 'yyyy-MM-dd', then ValidateRecord processor can not validate input records. > JacksonCSVRecordReader has the identical methods with CSVRecordReader. Those > classes should have an abstract class. -- This message was sent by Atlassian JIRA (v7.6.3#76005)