public static InputStreamTransformer getFileSetTransformers()

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;
    }