private boolean checkForDuplicate()

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