in apache-rat-core/src/main/java/org/apache/rat/annotation/AbstractLicenseAppender.java [343:418]
private boolean attachLicense(final Writer writer, final File document,
final boolean expectsHashPling,
final boolean expectsAtEcho,
final boolean expectsPackage,
final boolean expectsXMLDecl,
final boolean expectsPhpPI,
final boolean expectsMSVSSF)
throws IOException {
boolean written = false;
FileInputStream fis = null;
BufferedReader br = null;
try {
fis = new FileInputStream(document);
BOMInputStream bos = BOMInputStream.builder().setInputStream(fis).get();
br = new BufferedReader(new InputStreamReader(bos, StandardCharsets.UTF_8));
if (!expectsHashPling
&& !expectsAtEcho
&& !expectsPackage
&& !expectsXMLDecl
&& !expectsPhpPI
&& !expectsMSVSSF) {
written = true;
writer.write(getLicenseHeader(document));
writer.write(LINE_SEP);
}
String line;
boolean first = true;
while ((line = br.readLine()) != null) {
if (first && expectsHashPling) {
written = true;
doFirstLine(document, writer, line, "#!");
} else if (first && expectsAtEcho) {
written = true;
doFirstLine(document, writer, line, "@echo");
} else if (first && expectsMSVSSF) {
written = true;
if (line.isEmpty()) {
line = passThroughReadNext(writer, line, br);
}
if (line.startsWith("Microsoft Visual Studio Solution"
+ " File")) {
line = passThroughReadNext(writer, line, br);
}
doFirstLine(document, writer, line, "# Visual ");
} else {
writer.write(line);
writer.write(LINE_SEP);
}
if (expectsPackage && line.startsWith("package ")) {
written = true;
writer.write(LINE_SEP);
writer.write(getLicenseHeader(document));
writer.write(LINE_SEP);
} else if (expectsXMLDecl && line.startsWith("<?xml ")) {
written = true;
writer.write(LINE_SEP);
writer.write(getLicenseHeader(document));
writer.write(LINE_SEP);
} else if (expectsPhpPI && line.startsWith("<?php")) {
written = true;
writer.write(LINE_SEP);
writer.write(getLicenseHeader(document));
writer.write(LINE_SEP);
}
first = false;
}
} finally {
IOUtils.closeQuietly(br);
IOUtils.closeQuietly(fis);
IOUtils.closeQuietly(writer);
}
return written;
}