in doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.java [261:298]
private boolean checkForDuplicate(
DocumentRenderingContext newDocRenderingContext,
Map<String, DocumentRenderer> existingDocumentRenderers,
boolean skipDuplicates)
throws RendererException {
DuplicateCallback duplicateCallback = (message) -> {
if (skipDuplicates) {
LOGGER.debug(message + " (ignored due to flag 'skipDuplicates').");
} else {
throw new RendererException(message + ".");
}
return true;
};
DuplicateCallback caseInsensitiveDuplicateCallback = (message) -> {
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
return duplicateCallback.onDuplicate(message);
} else {
if (LOGGER.isWarnEnabled()) {
LOGGER.warn(message + " in case a case-insensitive filesystem is used.");
}
return false;
}
};
if (!checkForDuplicate(newDocRenderingContext, existingDocumentRenderers::get, duplicateCallback)) {
// also check for case-insensitive duplicates
return checkForDuplicate(
newDocRenderingContext,
key -> existingDocumentRenderers.entrySet().stream()
.filter(e -> e.getKey().equalsIgnoreCase(key))
.findFirst()
.map(Entry::getValue)
.orElse(null),
caseInsensitiveDuplicateCallback);
}
return true;
}