Skip to content

Commit 6df678c

Browse files
committed
refactor: replace Collectors.toMap with custom collector for case-insensitive alphabetically ordered file name handling
1 parent b10fbfe commit 6df678c

6 files changed

Lines changed: 27 additions & 17 deletions

File tree

modules/openapi-generator/src/test/java/org/openapitools/codegen/TestUtils.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -182,8 +182,9 @@ public static void assertFileContains(Path path, String... lines) {
182182

183183
/**
184184
* Count occurrences of the given text
185+
*
185186
* @param content content of the file
186-
* @param text text to find
187+
* @param text text to find
187188
* @return
188189
*/
189190
public static int countOccurrences(String content, String text) {
@@ -358,12 +359,24 @@ public static Path newTempFolder() {
358359
/**
359360
* Returns a collector that collects files into a {@link TreeMap} sorted by file name,
360361
* using case-insensitive ordering (but accepting both keys - e.g. "application" and "Application").
361-
* This is used to have files sorted by name (case-insensitive) to simplify lookup during test debugging.
362+
* This is used to have files sorted by name (case-insensitive) to improve developer experience during test debugging.
362363
*/
363364
@NotNull
364365
public static Collector<File, ?, TreeMap<String, File>> collectToCaseInsensitiveOrderedCaseSensitiveKeyMap() {
366+
return collectToCaseInsensitiveOrderedCaseSensitiveKeyMap(File::getName);
367+
}
368+
369+
/**
370+
* Returns a collector that collects files into a {@link TreeMap} sorted by file name,
371+
* using case-insensitive ordering (but accepting both keys - e.g. "application" and "Application").
372+
* This is used to have files sorted by name (case-insensitive) to improve developer experience during test debugging.
373+
*/
374+
@NotNull
375+
public static Collector<File, ?, TreeMap<String, File>> collectToCaseInsensitiveOrderedCaseSensitiveKeyMap(
376+
Function<File, String> keyMapper
377+
) {
365378
return Collectors.toMap(
366-
File::getName,
379+
keyMapper,
367380
Function.identity(),
368381
(existing, replacement) -> {
369382
throw new IllegalStateException("Duplicate key: " + existing);

modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2069,7 +2069,7 @@ private static Map<String, File> generateFromContract(
20692069
.setOutputDir(output.toString());
20702070
consumer.accept(configurator);
20712071
return new DefaultGenerator().opts(configurator.toClientOptInput()).generate()
2072-
.stream().collect(Collectors.toMap(JavaClientCodegenTest::getUniqueName, Function.identity()));
2072+
.stream().collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap(JavaClientCodegenTest::getUniqueName));
20732073
}
20742074

20752075
private static String getUniqueName(File file) {

modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJAXRSSpecServerCodegenTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1251,7 +1251,7 @@ public void testDiscriminatorMappingUsedInJsonTypeName() throws Exception {
12511251

12521252
DefaultGenerator generator = new DefaultGenerator();
12531253
Map<String, File> files = generator.opts(input).generate().stream()
1254-
.collect(Collectors.toMap(File::getName, Function.identity()));
1254+
.collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap());
12551255

12561256
// Parent model uses its own name
12571257
JavaFileAssert.assertThat(files.get("PetRequest.java"))

modules/openapi-generator/src/test/java/org/openapitools/codegen/java/microprofile/JavaMicroprofileServerCodegenTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ public void testClientCanAccessFieldInParent() throws Exception {
253253
List<File> files = new DefaultGenerator().opts(input).generate();
254254

255255
Map<String, File> filesMap = files.stream()
256-
.collect(Collectors.toMap(File::getName, Function.identity()));
256+
.collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap());
257257

258258
validateJavaSourceFiles(files);
259259

modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@
5454
import java.util.List;
5555
import java.util.Map;
5656
import java.util.function.Consumer;
57-
import java.util.stream.Collectors;
5857

5958
import static java.util.stream.Collectors.groupingBy;
6059
import static org.assertj.core.api.Assertions.assertThat;
@@ -65,9 +64,7 @@
6564
import static org.openapitools.codegen.languages.SpringCodegen.*;
6665
import static org.openapitools.codegen.languages.features.DocumentationProviderFeatures.ANNOTATION_LIBRARY;
6766
import static org.openapitools.codegen.languages.features.DocumentationProviderFeatures.DOCUMENTATION_PROVIDER;
68-
import static org.testng.Assert.assertEquals;
69-
import static org.testng.Assert.assertNotNull;
70-
import static org.testng.Assert.fail;
67+
import static org.testng.Assert.*;
7168

7269
public class SpringCodegenTest {
7370

@@ -1107,7 +1104,7 @@ public void shouldGenerateExclusiveMinMaxForOAS31() throws IOException {
11071104
DefaultGenerator generator = new DefaultGenerator();
11081105
generator.setGenerateMetadata(false);
11091106
Map<String, File> files = generator.opts(input).generate().stream()
1110-
.collect(Collectors.toMap(File::getName, Function.identity()));
1107+
.collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap());
11111108

11121109
System.out.println("Generated files:");
11131110
files.keySet().stream().sorted().forEach(System.out::println);
@@ -1379,7 +1376,7 @@ private Map<String, File> generateFiles(SpringCodegen codegen, String filePath)
13791376
generator.setGenerateMetadata(false); // skip metadata generation
13801377
List<File> files = generator.opts(input).generate();
13811378

1382-
return files.stream().collect(Collectors.toMap(e -> e.getName().replace(outputPath, ""), i -> i));
1379+
return files.stream().collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap());
13831380
}
13841381

13851382
/*
@@ -3167,7 +3164,7 @@ private Map<String, File> generateFromContract(String url, String library, Map<S
31673164
generator.setGenerateMetadata(false);
31683165

31693166
return generator.opts(input).generate().stream()
3170-
.collect(Collectors.toMap(this::getUniqueName, Function.identity()));
3167+
.collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap(this::getUniqueName));
31713168
}
31723169

31733170
private String getUniqueName(File file) {
@@ -6542,7 +6539,7 @@ public void shouldImportJackson2JsonDeserializeForUniqueItemsWhenJackson3NotSet(
65426539
generator.setGenerateMetadata(false); // skip metadata generation
65436540

65446541
Map<String, File> files = generator.opts(input).generate().stream()
6545-
.collect(Collectors.toMap(File::getName, Function.identity()));
6542+
.collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap());
65466543

65476544
JavaFileAssert.assertThat(Paths.get(outputPath + "/src/main/java/org/openapitools/model/Pet.java"))
65486545
.hasImports("com.fasterxml.jackson.databind.annotation.JsonDeserialize");
@@ -6571,7 +6568,7 @@ public void shouldImportJackson3JsonDeserializeForUniqueItemsWhenJackson3Set() t
65716568
generator.setGenerateMetadata(false); // skip metadata generation
65726569

65736570
Map<String, File> files = generator.opts(input).generate().stream()
6574-
.collect(Collectors.toMap(File::getName, Function.identity()));
6571+
.collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap());
65756572

65766573
JavaFileAssert.assertThat(Paths.get(outputPath + "/src/main/java/org/openapitools/model/Pet.java"))
65776574
.hasImports("tools.jackson.databind.annotation.JsonDeserialize");
@@ -6600,7 +6597,7 @@ public void shouldNotHaveDocumentationAnnotationWhenUsingLibrarySpringHttpInterf
66006597
generator.setGenerateMetadata(false); // skip metadata generation
66016598

66026599
Map<String, File> files = generator.opts(input).generate().stream()
6603-
.collect(Collectors.toMap(File::getName, Function.identity()));
6600+
.collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap());
66046601

66056602
JavaFileAssert.assertThat(Paths.get(outputPath + "/src/main/java/org/openapitools/api/PetApi.java"))
66066603
.assertMethod("addPet").assertParameter("pet").assertParameterAnnotations().doesNotContainWithName("Parameter");

modules/openapi-generator/src/test/java/org/openapitools/codegen/php/PhpNextgenClientCodegenTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ public void testDiscriminatorUsesModelPackageNamespace() throws Exception {
142142

143143
DefaultGenerator generator = new DefaultGenerator();
144144
Map<String, File> files = generator.opts(input).generate().stream()
145-
.collect(Collectors.toMap(File::getName, Function.identity()));
145+
.collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap());
146146

147147
List<String> objectSerializerContent = Files
148148
.readAllLines(files.get("ObjectSerializer.php").toPath())

0 commit comments

Comments
 (0)