From 2efd3da2051481557594dee62b08cbe65fd4dd2f Mon Sep 17 00:00:00 2001 From: Mattias-Sehlstedt <60173714+Mattias-Sehlstedt@users.noreply.github.com> Date: Tue, 15 Sep 2026 22:51:30 +0200 Subject: [PATCH] docs(generator): log file path collision warnings with detailed message --- .../java/org/openapitools/codegen/DefaultGenerator.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java index b750ee2167bb..497d45078fec 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultGenerator.java @@ -66,6 +66,10 @@ @SuppressWarnings("rawtypes") public class DefaultGenerator implements Generator { + private static final String FILE_PATH_COLLISION_LOG = "FILEPATH_COLLISION"; + private static final String FILE_PATH_COLLISION_LOG_MESSAGE = + FILE_PATH_COLLISION_LOG + ": File path collision detected. Files may be overwritten by later-processed collisions. " + + "Use 'modelNameMappings' or another name mapping to resolve file name collisions."; private static final String METADATA_DIR = ".openapi-generator"; protected final Logger LOGGER = LoggerFactory.getLogger(DefaultGenerator.class); private final boolean dryRun; @@ -1461,7 +1465,9 @@ private File processTemplateToFile(Map templateData, String temp // O(1) case-insensitive duplicate check via a pre-lowercased shadow set if (!seenFilesLower.add(absoluteTarget.toString().toLowerCase(Locale.ROOT))) { - LOGGER.warn("Duplicate file path detected. Not all operating systems can handle case sensitive file paths. path={}", absoluteTarget); + once(LOGGER).warn(FILE_PATH_COLLISION_LOG_MESSAGE); + LOGGER.warn("Duplicate file path detected. Not all operating systems can handle case sensitive file paths, see log '{}' for more information. path={}", + FILE_PATH_COLLISION_LOG, absoluteTarget); } return this.templateProcessor.write(templateData, templateName, target); } else {