in src/main/java/org/apache/jackrabbit/filevault/maven/packaging/mojo/GenerateMetadataMojo.java [791:858]
private void computeImportPackage() throws IOException {
TreeMap<String, Attrs> importParams = new TreeMap<>();
if (generatedImportPackage.exists()) {
String importPackageStr = FileUtils.fileRead(generatedImportPackage);
if (importPackageStr.length() > 0) {
importParams.putAll(new Parameters(importPackageStr));
}
}
// override computed patterns
if (importPackage != null) {
getLog().debug("merging analyzer-packages with:\n" + importPackage + "\n");
for (Map.Entry<String, Attrs> entry : new Parameters(importPackage).entrySet()) {
boolean delete = false;
String pkg = entry.getKey();
if ("-*".equals(pkg)) {
importParams.clear();
continue;
}
if (pkg.charAt(0) == '-') {
pkg = pkg.substring(1);
delete = true;
}
if (pkg.endsWith("*")) {
String pkgDot = pkg.substring(0, pkg.length() - 1);
if (!pkgDot.endsWith(".")) {
// matches both, the packages and sub packages
pkg = pkgDot;
pkgDot = pkg + ".";
}
Iterator<Map.Entry<String, Attrs>> iter = importParams.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry<String, Attrs> e = iter.next();
String pkgName = e.getKey();
if (pkgName.equals(pkg) || pkgName.startsWith(pkgDot)) {
if (delete) {
iter.remove();
} else {
e.setValue(entry.getValue());
}
}
}
} else {
if (delete) {
importParams.remove(pkg);
} else {
importParams.put(pkg, entry.getValue());
}
}
}
}
importPackage = Processor.printClauses(importParams);
if (!importPackage.isEmpty()) {
getLog().info("Merged detected packages from analyzer with 'importPackage':");
for (Map.Entry<String, Attrs> e: importParams.entrySet()) {
StringBuilder report = new StringBuilder();
report.append(" ").append(e.getKey());
try {
Processor.printClause(e.getValue(), report);
} catch (IOException e1) {
throw new IllegalStateException("Internal error while generating report", e1);
}
getLog().info(report);
}
getLog().info("");
}
}