in src/main/java/org/apache/maven/plugins/assembly/format/ReaderFormatter.java [106:157]
public static InputStreamTransformer getFileSetTransformers(
final AssemblerConfigurationSource configSource,
final boolean isFiltered,
final Set<String> nonFilteredFileExtensions,
String fileSetLineEnding)
throws AssemblyFormattingException {
final LineEndings lineEndingToUse = LineEndingsUtils.getLineEnding(fileSetLineEnding);
final boolean transformLineEndings = !LineEndings.keep.equals(lineEndingToUse);
if (transformLineEndings || isFiltered) {
return new InputStreamTransformer() {
@Override
public InputStream transform(PlexusIoResource plexusIoResource, InputStream inputStream)
throws IOException {
final String fileName = plexusIoResource.getName();
for (String extension : nonFilteredFileExtensions) {
if (fileName.endsWith('.' + extension)) {
return inputStream;
}
}
InputStream result = inputStream;
if (isFiltered) {
boolean isPropertyFile = AssemblyFileUtils.isPropertyFile(plexusIoResource.getName());
final String encoding = isPropertyFile ? "ISO-8859-1" : configSource.getEncoding();
Reader source = encoding != null
? new InputStreamReader(inputStream, encoding)
: new InputStreamReader(inputStream); // wtf platform encoding ? TODO: Fix this
Reader filtered = createReaderFilter(
source,
configSource.getEscapeString(),
configSource.getDelimiters(),
configSource,
isPropertyFile,
configSource.getAdditionalProperties());
result = ReaderInputStream.builder()
.setReader(filtered)
.setCharset(encoding)
.get();
}
if (transformLineEndings) {
checkifFileTypeIsAppropriateForLineEndingTransformation(plexusIoResource);
result = LineEndingsUtils.lineEndingConverter(result, lineEndingToUse);
}
return result;
}
};
}
return null;
}