Add support for multiple files via pattern in MultiResourceItemReaderBuilder #5071
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.
It resolves #5056
The method name intentionally uses
filesPatterninstead ofresourcesPattern, since in most cases the target resources are file-based. Internally,MultiResourceItemReaderBuilder.build()resolves resources usingPathMatchingResourcePatternResolver.getResources(String)with a "file:" prefix, which aligns naturally with this naming choice.I also attempted to add a test case to cover the catch block in the following code segment:
However, I could not find a case that would actually trigger this block.
When no files are found for the specified pattern,
PathMatchingResourcePatternResolversimply returns an emptyResource[]rather than throwing an exception.I considered making the builder throw an exception when the resolved
Resource[]has zero length, but decided it would be more appropriate to delegate such behavior toMultiResourceItemReaderor its internal delegate. For example,FlatFileItemReaderdetermines whether to throw an exception for missing files based on its strict property.