in log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java [204:237]
private static void exportIndex(
final Path outputDirectory,
final Path changelogDirectory,
final Set<ChangelogExporterTemplate> indexTemplates,
final List<ChangelogRelease> changelogReleases,
final List<Integer> changelogEntryCounts) {
final Object indexTemplateData = Collections.singletonMap(
"releases",
IntStream.range(0, changelogReleases.size())
.boxed()
.sorted(Comparator.reverseOrder())
.map(releaseIndex -> {
final ChangelogRelease changelogRelease = changelogReleases.get(releaseIndex);
final int changelogEntryCount = changelogEntryCounts.get(releaseIndex);
Map<String, Object> changelogReleaseData = new LinkedHashMap<>();
changelogReleaseData.put("version", changelogRelease.version);
changelogReleaseData.put("date", changelogRelease.date);
changelogReleaseData.put("changelogEntryCount", changelogEntryCount);
return (Object) changelogReleaseData;
})
.collect(Collectors.toList()));
indexTemplates.forEach(indexTemplate -> {
final Path indexTemplateSourceFile = changelogDirectory.resolve(indexTemplate.sourceFileName);
if (Files.exists(indexTemplateSourceFile)) {
final String indexTemplateSourceName = templateName(changelogDirectory, indexTemplateSourceFile);
final Path indexTemplateTargetFile = outputDirectory.resolve(indexTemplate.targetFileName);
FreeMarkerUtils.render(
changelogDirectory, indexTemplateSourceName, indexTemplateData, indexTemplateTargetFile);
} else if (indexTemplate.failIfNotFound) {
final String message = String.format("could not find template file: `%s`", indexTemplateSourceFile);
throw new IllegalStateException(message);
}
});
}