Skip to content

Commit a040bce

Browse files
jdimeomichael-o
authored andcommitted
[DOXIASITETOOLS-344] Improve performance of case-sensitive file key checking
This closes #170
1 parent 99363e5 commit a040bce

File tree

1 file changed

+16
-14
lines changed

1 file changed

+16
-14
lines changed

doxia-site-renderer/src/main/java/org/apache/maven/doxia/siterenderer/DefaultSiteRenderer.java

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import java.util.Collection;
3838
import java.util.Collections;
3939
import java.util.Enumeration;
40+
import java.util.HashMap;
4041
import java.util.Iterator;
4142
import java.util.LinkedHashMap;
4243
import java.util.LinkedList;
@@ -208,6 +209,8 @@ private void addModuleFiles(
208209

209210
List<String> allFiles = FileUtils.getFileNames(moduleBasedir, "**/*", excludes, false);
210211

212+
Map<String, String> caseInsensitiveFiles = new HashMap<>();
213+
211214
for (String extension : module.getExtensions()) {
212215
String fullExtension = "." + extension;
213216

@@ -243,23 +246,22 @@ private void addModuleFiles(
243246
// -----------------------------------------------------------------------
244247
// Handle key without case differences
245248
// -----------------------------------------------------------------------
246-
for (Map.Entry<String, DocumentRenderer> entry : files.entrySet()) {
247-
if (entry.getKey().equalsIgnoreCase(key)) {
248-
DocumentRenderingContext originalDocRenderingContext =
249-
entry.getValue().getRenderingContext();
249+
String originalKey = caseInsensitiveFiles.put(key.toLowerCase(Locale.ROOT), key);
250+
if (originalKey != null) {
251+
DocumentRenderingContext originalDocRenderingContext =
252+
files.get(originalKey).getRenderingContext();
250253

251-
File originalDoc = new File(
252-
originalDocRenderingContext.getBasedir(), originalDocRenderingContext.getInputName());
254+
File originalDoc = new File(
255+
originalDocRenderingContext.getBasedir(), originalDocRenderingContext.getInputName());
253256

254-
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
255-
throw new RendererException("File '" + module.getSourceDirectory() + File.separator + doc
256-
+ "' clashes with existing '" + originalDoc + "'.");
257-
}
257+
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
258+
throw new RendererException("File '" + module.getSourceDirectory() + File.separator + doc
259+
+ "' clashes with existing '" + originalDoc + "'.");
260+
}
258261

259-
if (LOGGER.isWarnEnabled()) {
260-
LOGGER.warn("File '" + module.getSourceDirectory() + File.separator + doc
261-
+ "' could clash with existing '" + originalDoc + "'.");
262-
}
262+
if (LOGGER.isWarnEnabled()) {
263+
LOGGER.warn("File '" + module.getSourceDirectory() + File.separator + doc
264+
+ "' could clash with existing '" + originalDoc + "'.");
263265
}
264266
}
265267

0 commit comments

Comments
 (0)