Enhancement: Allow MergedSpecBuilder title, version and description to be configured #20822 (#20839)

This commit is contained in:
saulgillEST 2025-04-25 09:44:41 +01:00 committed by GitHub
parent 27a705efd5
commit c14c7a0421
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 37 additions and 7 deletions

View File

@ -116,6 +116,24 @@ public class CodeGenMojo extends AbstractMojo {
@Parameter(name = "mergedFileName", property = "openapi.generator.maven.plugin.mergedFileName", defaultValue = "_merged_spec") @Parameter(name = "mergedFileName", property = "openapi.generator.maven.plugin.mergedFileName", defaultValue = "_merged_spec")
private String mergedFileName; private String mergedFileName;
/**
* Name that will appear in the info section of the merged spec
*/
@Parameter(name = "mergedFileInfoName", property = "openapi.generator.maven.plugin.mergedFileInfoName", defaultValue = "merged spec")
private String mergedFileInfoName;
/**
* Description that will appear in the info section of the merged spec
*/
@Parameter(name = "mergedFileInfoDescription", property = "openapi.generator.maven.plugin.mergedFileInfoDescription", defaultValue = "merged spec")
private String mergedFileInfoDescription;
/**
* Version that will appear in the info section of the merged spec
*/
@Parameter(name = "mergedFileInfoVersion", property = "openapi.generator.maven.plugin.mergedFileInfoVersion", defaultValue = "1.0.0")
private String mergedFileInfoVersion;
/** /**
* Git host, e.g. gitlab.com. * Git host, e.g. gitlab.com.
*/ */
@ -545,7 +563,8 @@ public class CodeGenMojo extends AbstractMojo {
} }
if (StringUtils.isNotBlank(inputSpecRootDirectory)) { if (StringUtils.isNotBlank(inputSpecRootDirectory)) {
inputSpec = new MergedSpecBuilder(inputSpecRootDirectory, mergedFileName) inputSpec = new MergedSpecBuilder(inputSpecRootDirectory, mergedFileName,
mergedFileInfoName, mergedFileInfoDescription, mergedFileInfoVersion)
.buildMergedSpec(); .buildMergedSpec();
LOGGER.info("Merge input spec would be used - {}", inputSpec); LOGGER.info("Merge input spec would be used - {}", inputSpec);
} }

View File

@ -25,10 +25,21 @@ public class MergedSpecBuilder {
private final String inputSpecRootDirectory; private final String inputSpecRootDirectory;
private final String mergeFileName; private final String mergeFileName;
private final String mergedFileInfoName;
private final String mergedFileInfoDescription;
private final String mergedFileInfoVersion;
public MergedSpecBuilder(final String rootDirectory, final String mergeFileName) { public MergedSpecBuilder(final String rootDirectory, final String mergeFileName) {
this(rootDirectory, mergeFileName, "merged spec", "merged spec", "1.0.0");
}
public MergedSpecBuilder(final String rootDirectory, final String mergeFileName,
final String mergedFileInfoName, final String mergedFileInfoDescription, final String mergedFileInfoVersion) {
this.inputSpecRootDirectory = rootDirectory; this.inputSpecRootDirectory = rootDirectory;
this.mergeFileName = mergeFileName; this.mergeFileName = mergeFileName;
this.mergedFileInfoName = mergedFileInfoName;
this.mergedFileInfoDescription = mergedFileInfoDescription;
this.mergedFileInfoVersion = mergedFileInfoVersion;
} }
public String buildMergedSpec() { public String buildMergedSpec() {
@ -80,8 +91,8 @@ public class MergedSpecBuilder {
return mergedFilePath.toString(); return mergedFilePath.toString();
} }
private static Map<String, Object> generatedMergedSpec(String openapiVersion, List<SpecWithPaths> allPaths) { private Map<String, Object> generatedMergedSpec(String openapiVersion, List<SpecWithPaths> allPaths) {
Map<String, Object> spec = generateHeader(openapiVersion); Map<String, Object> spec = generateHeader(openapiVersion, mergedFileInfoName, mergedFileInfoDescription, mergedFileInfoVersion);
Map<String, Object> paths = new HashMap<>(); Map<String, Object> paths = new HashMap<>();
spec.put("paths", paths); spec.put("paths", paths);
@ -97,13 +108,13 @@ public class MergedSpecBuilder {
return spec; return spec;
} }
private static Map<String, Object> generateHeader(String openapiVersion) { private static Map<String, Object> generateHeader(String openapiVersion, String title, String description, String version) {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("openapi", openapiVersion); map.put("openapi", openapiVersion);
map.put("info", ImmutableMap.of( map.put("info", ImmutableMap.of(
"title", "merged spec", "title", title,
"description", "merged spec", "description", description,
"version", "1.0.0" "version", version
)); ));
map.put("servers", Collections.singleton( map.put("servers", Collections.singleton(
ImmutableMap.of("url", "http://localhost:8080") ImmutableMap.of("url", "http://localhost:8080")