public void processResource()

in src/main/java/org/apache/maven/plugins/shade/resource/ApacheNoticeResourceTransformer.java [90:170]


    public void processResource(String resource, InputStream is, List<Relocator> relocators, long time)
            throws IOException {
        if (entries.isEmpty()) {
            String year = new SimpleDateFormat("yyyy").format(new Date());
            if (!inceptionYear.equals(year)) {
                year = inceptionYear + "-" + year;
            }

            // add headers
            if (addHeader) {
                entries.add(preamble1 + projectName + preamble2);
            } else {
                entries.add("");
            }
            // fake second entry, we'll look for a real one later
            entries.add(projectName + "\nCopyright " + year + " " + organizationName + "\n");
            entries.add(preamble3 + organizationName + " (" + organizationURL + ").\n");
        }

        BufferedReader reader;
        if (encoding != null && !encoding.isEmpty()) {
            reader = new BufferedReader(new InputStreamReader(is, encoding));
        } else {
            reader = new BufferedReader(new InputStreamReader(is));
        }

        String line = reader.readLine();
        StringBuilder sb = new StringBuilder();
        Set<String> currentOrg = null;
        int lineCount = 0;
        while (line != null) {
            String trimedLine = line.trim();

            if (!trimedLine.startsWith("//")) {
                if (trimedLine.length() > 0) {
                    if (trimedLine.startsWith("- ")) {
                        // resource-bundle 1.3 mode
                        if (lineCount == 1
                                && sb.toString().contains("This product includes/uses software(s) developed by")) {
                            currentOrg = organizationEntries.get(sb.toString().trim());
                            if (currentOrg == null) {
                                currentOrg = new TreeSet<>();
                                organizationEntries.put(sb.toString().trim(), currentOrg);
                            }
                            sb = new StringBuilder();
                        } else if (sb.length() > 0 && currentOrg != null) {
                            currentOrg.add(sb.toString());
                            sb = new StringBuilder();
                        }
                    }
                    sb.append(line).append("\n");
                    lineCount++;
                } else {
                    String ent = sb.toString();
                    if (ent.startsWith(projectName) && ent.contains("Copyright ")) {
                        copyright = ent;
                    }
                    if (currentOrg == null) {
                        entries.add(ent);
                    } else {
                        currentOrg.add(ent);
                    }
                    sb = new StringBuilder();
                    lineCount = 0;
                    currentOrg = null;
                }
            }

            line = reader.readLine();
        }
        if (sb.length() > 0) {
            if (currentOrg == null) {
                entries.add(sb.toString());
            } else {
                currentOrg.add(sb.toString());
            }
        }
        if (time > this.time) {
            this.time = time;
        }
    }