Skip to content

Commit c87ad56

Browse files
inputSpec should not be mandatory when inputSpecRootDirectory is set (#18000)
* Fix inputSpec to not be mandatory in maven plugin * Add unit tests
1 parent 5d959ee commit c87ad56

File tree

2 files changed

+41
-3
lines changed

2 files changed

+41
-3
lines changed

modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/CodeGenMojo.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -115,14 +115,14 @@ public class CodeGenMojo extends AbstractMojo {
115115
/**
116116
* Location of the OpenAPI spec, as URL or file.
117117
*/
118-
@Parameter(name = "inputSpec", property = "openapi.generator.maven.plugin.inputSpec", required = true)
119-
private String inputSpec;
118+
@Parameter(name = "inputSpec", property = "openapi.generator.maven.plugin.inputSpec")
119+
protected String inputSpec;
120120

121121
/**
122122
* Local root folder with spec files
123123
*/
124124
@Parameter(name = "inputSpecRootDirectory", property = "openapi.generator.maven.plugin.inputSpecRootDirectory")
125-
private String inputSpecRootDirectory;
125+
protected String inputSpecRootDirectory;
126126

127127
/**
128128
* Name of the file that will contain all merged specs
@@ -557,6 +557,11 @@ public void setBuildContext(BuildContext buildContext) {
557557

558558
@Override
559559
public void execute() throws MojoExecutionException {
560+
if (StringUtils.isBlank(inputSpec) && StringUtils.isBlank(inputSpecRootDirectory)) {
561+
LOGGER.error("inputSpec or inputSpecRootDirectory must be specified");
562+
throw new MojoExecutionException("inputSpec or inputSpecRootDirectory must be specified");
563+
}
564+
560565
if (StringUtils.isNotBlank(inputSpecRootDirectory)) {
561566
inputSpec = new MergedSpecBuilder(inputSpecRootDirectory, mergedFileName)
562567
.buildMergedSpec();

modules/openapi-generator-maven-plugin/src/test/java/org/openapitools/codegen/plugin/CodeGenMojoTest.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package org.openapitools.codegen.plugin;
1818

19+
import static org.junit.Assert.assertThrows;
20+
1921
import java.io.File;
2022
import java.nio.file.Files;
2123
import java.nio.file.Path;
@@ -31,6 +33,7 @@
3133
import org.apache.maven.execution.MavenExecutionRequest;
3234
import org.apache.maven.execution.MavenSession;
3335
import org.apache.maven.plugin.MojoExecution;
36+
import org.apache.maven.plugin.MojoExecutionException;
3437
import org.apache.maven.project.MavenProject;
3538
import org.apache.maven.project.ProjectBuilder;
3639
import org.apache.maven.project.ProjectBuildingRequest;
@@ -181,6 +184,36 @@ public void testCollapsedSpecAddedToArtifacts() throws Exception {
181184
assertEquals(1, matchingArtifacts.size());
182185
}
183186

187+
public void testAnyInputSpecMustBeProvided() throws Exception {
188+
// GIVEN
189+
Path folder = Files.createTempDirectory("test");
190+
CodeGenMojo mojo = loadMojo(folder.toFile(), "src/test/resources/default", "executionId");
191+
mojo.inputSpec = null;
192+
mojo.inputSpecRootDirectory = null;
193+
194+
// WHEN
195+
MojoExecutionException e = assertThrows(MojoExecutionException.class, mojo::execute);
196+
197+
// THEN
198+
assertEquals("inputSpec or inputSpecRootDirectory must be specified", e.getMessage());
199+
}
200+
201+
public void testInputSpecRootDirectoryDoesNotRequireInputSpec() throws Exception {
202+
// GIVEN
203+
Path folder = Files.createTempDirectory("test");
204+
CodeGenMojo mojo = loadMojo(folder.toFile(), "src/test/resources/default", "executionId");
205+
mojo.inputSpec = null;
206+
mojo.inputSpecRootDirectory = "src/test/resources/default";
207+
208+
// WHEN
209+
mojo.execute();
210+
211+
// THEN
212+
/* Check the hash file was created */
213+
final Path hashFolder = folder.resolve("target/generated-sources/common-maven/remote-openapi/.openapi-generator");
214+
assertTrue(hashFolder.resolve("_merged_spec.yaml-executionId.sha256").toFile().exists());
215+
}
216+
184217
protected CodeGenMojo loadMojo(File temporaryFolder, String projectRoot) throws Exception {
185218
return loadMojo(temporaryFolder, projectRoot, "default");
186219
}

0 commit comments

Comments
 (0)