Skip to content

Commit

Permalink
Add some validations for server configs
Browse files Browse the repository at this point in the history
  • Loading branch information
mcruzdev committed Dec 26, 2024
1 parent 6553a9e commit 92908f4
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -46,16 +46,20 @@ private Path getInputBaseDir(final Path sourceDir, final Config config) {

@Override
public boolean shouldRun(Path sourceDir, Config config) {
if (config.getOptionalValue(CodegenConfig.getSpecPropertyName(), String.class).isEmpty()) {
return false;
boolean specIsPresent = config.getOptionalValue(CodegenConfig.getSpecPropertyName(), String.class).isPresent();
if (!specIsPresent) {
log.warn("The {} property is not present, the code generation will be ignored",
CodegenConfig.getSpecPropertyName());
}
Path path = getInputBaseDir(sourceDir, config);
return Files.isDirectory(path);
return specIsPresent;
}

@Override
public boolean trigger(CodeGenContext context) throws CodeGenException {
final Path openApiDir = getInputBaseDir(context.inputDir(), context.config());

validateOpenApiDir(context, openApiDir);

final Path outDir = context.outDir();
final ApicurioCodegenWrapper apicurioCodegenWrapper = new ApicurioCodegenWrapper(
context.config(), outDir.toFile());
Expand Down Expand Up @@ -92,6 +96,19 @@ public boolean trigger(CodeGenContext context) throws CodeGenException {
return true;
}

private static void validateOpenApiDir(CodeGenContext context, Path openApiDir) throws CodeGenException {
if (!Files.exists(openApiDir)) {
throw new CodeGenException(
"The OpenAPI input base directory does not exist, please, create the directory on " + context.inputDir());
}

if (!Files.isDirectory(openApiDir)) {
throw new CodeGenException(
"The OpenAPI input base directory is not a directory, please, create the directory on "
+ context.inputDir());
}
}

private File convertToJSON(Path yamlPath) throws CodeGenException {
try {
ObjectMapper yamlReader = new ObjectMapper(new YAMLFactory());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

import org.apache.commons.io.FileUtils;
import org.eclipse.microprofile.config.Config;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;

Expand Down Expand Up @@ -60,4 +61,14 @@ public void testInputDir() throws CodeGenException {
Path.of("target/generated-test-sources/inputDir/io/petstore/PetResource.java")));
}

@Test
public void shouldGenerateAnErrorWhenInputDirIsNotExist() throws CodeGenException {
Config config = MockConfigUtils.getTestConfig("doesNotExistDir.application.properties");
CodeGenContext codeGenContext = new CodeGenContext(null, Path.of(OUT_DIR, "inputDir"), WORK_DIR,
INPUT_DIR, false, config, true);
ApicurioOpenApiServerCodegen apicurioOpenApiServerCodegen = new ApicurioOpenApiServerCodegen();

Assertions.assertThrows(CodeGenException.class, () -> apicurioOpenApiServerCodegen.trigger(codeGenContext));
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
quarkus.openapi.generator.spec=petstore-openapi-2.json
quarkus.openapi.generator.base-package=io.petstore

0 comments on commit 92908f4

Please sign in to comment.