NIFI-9458 Replace SimpleDateFormat with DateTimeFormatter #8248
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
NIFI-9458 Replaces direct use of java.text.SimpleDateFormat with java.time.format.DateTimeFormatter across component utilities and test classes.
SimpleDateFormat
handles parsing and formatting instances of java.util.Date but it lacks features such as nanosecond precision, and can be subject to subtle conversion issues with time zone offsets.DateTimeFormatter
provides parsing and formatting for newerjava.time
classes, which provide greater precision than other types likejava.sql.Time
andjava.sql.Timestamp
.Pattern characters for
DateTimeFormatter
are largely similar toSimpleDateFormat
, with several additional characters supporting nanoseconds and optional boundaries. Some formatting patterns are more strict, which could lead to parsing failures on some existing custom formats. This is a primary reason for including these changes as part of the NiFi 2.0 release version.Functional changes include removing date and time handling methods from the
DataTypeUtils
class and adding newFieldConverter
implementations in the samenifi-record
module. The newStandardFieldConverterRegistry
provides an abstraction for retrieving registered instances ofFieldConverter
based on the expected output field type. TheFieldConverter
interface approach provides a more maintainable and focused approach to object conversion while theFieldConverterRegistry
provides a similar level of reference convenience. Instances ofDateTimeFormatter
are thread-safe, unlikeSimpleDateFormat
, which enables instance caching inside theStandardFieldConverterRegistry
.Tracking
Please complete the following tracking steps prior to pull request creation.
Issue Tracking
Pull Request Tracking
NIFI-00000
NIFI-00000
Pull Request Formatting
main
branchVerification
Please indicate the verification steps performed prior to pull request creation.
Build
mvn clean install -P contrib-check
Licensing
LICENSE
andNOTICE
filesDocumentation