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