Skip to content

Commit aa86600

Browse files
Fix #40 - Add verbose codegen configuration and instructions for maven runs (#61)
Signed-off-by: Ricardo Zanini <[email protected]>
1 parent 7c170dd commit aa86600

File tree

10 files changed

+55
-23
lines changed

10 files changed

+55
-23
lines changed

README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,16 @@ public class PetResource {
101101

102102
See the [integration-tests](integration-tests) module for more information of how to use this extension. Please be advised that the extension is on experimental, early development stage.
103103

104+
## Logging
105+
106+
Since the most part of this extension work is in the `generate-code` execution phase of the Quarkus Maven's plugin, the log configuration must be set in the Maven context. When building your project, add `-Dorg.slf4j.simpleLogger.log.org.openapitools=off` to the `mvn` command to reduce the internal generator noise. For example:
107+
108+
```shell
109+
mvn clean install -Dorg.slf4j.simpleLogger.log.org.openapitools=off
110+
```
111+
112+
For more information, see the [Maven Logging Configuration](https://maven.apache.org/maven-logging.html) guide.
113+
104114
## Authentication Support
105115

106116
If your OpenAPI specification file has `securitySchemes` [definitions](https://spec.openapis.org/oas/v3.1.0#security-scheme-object), the inner generator

deployment/src/main/java/io/quarkiverse/openapi/generator/deployment/SpecConfig.java renamed to deployment/src/main/java/io/quarkiverse/openapi/generator/deployment/CodegenConfig.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,16 @@
99
import io.smallrye.config.common.utils.StringUtil;
1010

1111
// This configuration is read in codegen phase (before build time), the annotation is for document purposes and avoiding quarkus warns
12-
@ConfigRoot(name = SpecConfig.BUILD_TIME_CONFIG_PREFIX, phase = ConfigPhase.BUILD_TIME)
13-
public class SpecConfig {
12+
@ConfigRoot(name = CodegenConfig.CODEGEN_TIME_CONFIG_PREFIX, phase = ConfigPhase.BUILD_TIME)
13+
public class CodegenConfig {
14+
15+
static final String CODEGEN_TIME_CONFIG_PREFIX = "openapi-generator.codegen";
1416

15-
static final String BUILD_TIME_CONFIG_PREFIX = "openapi-generator.codegen";
1617
public static final String API_PKG_SUFFIX = ".api";
1718
public static final String MODEL_PKG_SUFFIX = ".model";
19+
public static final String VERBOSE_PROPERTY_NAME = "quarkus." + CODEGEN_TIME_CONFIG_PREFIX + ".verbose";
1820
// package visibility for unit tests
19-
static final String BUILD_TIME_SPEC_PREFIX_FORMAT = "quarkus." + BUILD_TIME_CONFIG_PREFIX + ".spec.%s";
21+
static final String BUILD_TIME_SPEC_PREFIX_FORMAT = "quarkus." + CODEGEN_TIME_CONFIG_PREFIX + ".spec.%s";
2022
private static final String BASE_PACKAGE_PROP_FORMAT = "%s.base-package";
2123
private static final String SKIP_FORM_MODEL_PROP_FORMAT = "%s.skip-form-model";
2224

@@ -26,6 +28,12 @@ public class SpecConfig {
2628
@ConfigItem(name = "spec")
2729
public Map<String, SpecItemConfig> specItem;
2830

31+
/**
32+
* Whether to log the internal generator codegen process in the default output or not.
33+
*/
34+
@ConfigItem(name = "verbose", defaultValue = "false")
35+
public boolean verbose;
36+
2937
public static String resolveApiPackage(final String basePackage) {
3038
return String.format("%s%s", basePackage, API_PKG_SUFFIX);
3139
}

deployment/src/main/java/io/quarkiverse/openapi/generator/deployment/codegen/ModelCodegenConfigParser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package io.quarkiverse.openapi.generator.deployment.codegen;
22

3-
import static io.quarkiverse.openapi.generator.deployment.SpecConfig.resolveModelPackage;
3+
import static io.quarkiverse.openapi.generator.deployment.CodegenConfig.resolveModelPackage;
44

55
import java.util.HashMap;
66
import java.util.List;

deployment/src/main/java/io/quarkiverse/openapi/generator/deployment/codegen/OpenApiGeneratorCodeGenBase.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package io.quarkiverse.openapi.generator.deployment.codegen;
22

3-
import static io.quarkiverse.openapi.generator.deployment.SpecConfig.getResolvedBasePackagePropertyName;
4-
import static io.quarkiverse.openapi.generator.deployment.SpecConfig.getSkipFormModelPropertyName;
3+
import static io.quarkiverse.openapi.generator.deployment.CodegenConfig.VERBOSE_PROPERTY_NAME;
4+
import static io.quarkiverse.openapi.generator.deployment.CodegenConfig.getResolvedBasePackagePropertyName;
5+
import static io.quarkiverse.openapi.generator.deployment.CodegenConfig.getSkipFormModelPropertyName;
56

67
import java.io.IOException;
78
import java.nio.file.Files;
89
import java.nio.file.Path;
10+
import java.util.Optional;
911
import java.util.stream.Stream;
1012

1113
import org.eclipse.microprofile.config.Config;
@@ -59,9 +61,11 @@ public boolean trigger(CodeGenContext context) throws CodeGenException {
5961
protected void generate(Config config, final Path openApiFilePath, final Path outDir) {
6062
// TODO: do not generate if the output dir has generated files and the openapi file has the same checksum of the previous run
6163
final String basePackage = getResolvedBasePackagePropertyName(openApiFilePath);
62-
64+
final Optional<Boolean> verbose = config.getOptionalValue(VERBOSE_PROPERTY_NAME, Boolean.class);
6365
final OpenApiClientGeneratorWrapper generator = new OpenApiClientGeneratorWrapper(
64-
openApiFilePath.normalize(), outDir)
66+
openApiFilePath.normalize(),
67+
outDir,
68+
verbose.orElse(false))
6569
.withModelCodeGenConfiguration(ModelCodegenConfigParser.parse(config, basePackage))
6670
.withCircuitBreakerConfiguration(CircuitBreakerConfigurationParser.parse(
6771
config));

deployment/src/main/java/io/quarkiverse/openapi/generator/deployment/codegen/SpecInputModel.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
import org.eclipse.microprofile.config.spi.ConfigSource;
1212

13-
import io.quarkiverse.openapi.generator.deployment.SpecConfig;
13+
import io.quarkiverse.openapi.generator.deployment.CodegenConfig;
1414
import io.smallrye.config.PropertiesConfigSource;
1515

1616
public class SpecInputModel {
@@ -33,7 +33,7 @@ public SpecInputModel(final String filename, final InputStream inputStream) {
3333
*/
3434
public SpecInputModel(final String filename, final InputStream inputStream, final String basePackageName) {
3535
this(filename, inputStream);
36-
this.codegenProperties.put(SpecConfig.getResolvedBasePackagePropertyName(Path.of(filename)), basePackageName);
36+
this.codegenProperties.put(CodegenConfig.getResolvedBasePackagePropertyName(Path.of(filename)), basePackageName);
3737
}
3838

3939
public String getFileName() {

deployment/src/main/java/io/quarkiverse/openapi/generator/deployment/wrapper/OpenApiClientGeneratorWrapper.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package io.quarkiverse.openapi.generator.deployment.wrapper;
22

3-
import static io.quarkiverse.openapi.generator.deployment.SpecConfig.getSanitizedFileName;
4-
import static io.quarkiverse.openapi.generator.deployment.SpecConfig.resolveApiPackage;
5-
import static io.quarkiverse.openapi.generator.deployment.SpecConfig.resolveModelPackage;
3+
import static io.quarkiverse.openapi.generator.deployment.CodegenConfig.getSanitizedFileName;
4+
import static io.quarkiverse.openapi.generator.deployment.CodegenConfig.resolveApiPackage;
5+
import static io.quarkiverse.openapi.generator.deployment.CodegenConfig.resolveModelPackage;
66
import static java.lang.Boolean.FALSE;
77
import static java.lang.Boolean.TRUE;
88

@@ -25,7 +25,7 @@
2525
*/
2626
public class OpenApiClientGeneratorWrapper {
2727

28-
private static final String VERBOSE = "verbose";
28+
public static final String VERBOSE = "verbose";
2929
private static final String ONCE_LOGGER = "org.openapitools.codegen.utils.oncelogger.enabled";
3030
private static final String DEFAULT_PACKAGE = "org.openapi.quarkus";
3131

@@ -36,7 +36,7 @@ public class OpenApiClientGeneratorWrapper {
3636
private String apiPackage = "";
3737
private String modelPackage = "";
3838

39-
public OpenApiClientGeneratorWrapper(final Path specFilePath, final Path outputDir) {
39+
public OpenApiClientGeneratorWrapper(final Path specFilePath, final Path outputDir, final boolean verbose) {
4040
// do not generate docs nor tests
4141
GlobalSettings.setProperty(CodegenConstants.API_DOCS, FALSE.toString());
4242
GlobalSettings.setProperty(CodegenConstants.API_TESTS, FALSE.toString());
@@ -47,8 +47,8 @@ public OpenApiClientGeneratorWrapper(final Path specFilePath, final Path outputD
4747
GlobalSettings.setProperty(CodegenConstants.MODELS, "");
4848
GlobalSettings.setProperty(CodegenConstants.SUPPORTING_FILES, "");
4949
// logging
50-
GlobalSettings.setProperty(VERBOSE, FALSE.toString());
51-
GlobalSettings.setProperty(ONCE_LOGGER, TRUE.toString());
50+
GlobalSettings.setProperty(VERBOSE, String.valueOf(verbose));
51+
GlobalSettings.setProperty(ONCE_LOGGER, verbose ? FALSE.toString() : TRUE.toString());
5252

5353
this.configurator = new QuarkusCodegenConfigurator();
5454
this.configurator.setInputSpec(specFilePath.toString());

deployment/src/main/java/io/quarkiverse/openapi/generator/deployment/wrapper/QuarkusJavaClientCodegen.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.io.File;
44

55
import org.openapitools.codegen.SupportingFile;
6+
import org.openapitools.codegen.config.GlobalSettings;
67
import org.openapitools.codegen.languages.JavaClientCodegen;
78
import org.openapitools.codegen.utils.ProcessUtils;
89
import org.openapitools.codegen.utils.URLPathUtils;
@@ -77,4 +78,12 @@ public void preprocessOpenAPI(OpenAPI openAPI) {
7778
// add the default server url to the context
7879
additionalProperties.put(DEFAULT_SERVER_URL, URLPathUtils.getServerURL(this.openAPI, serverVariableOverrides()));
7980
}
81+
82+
@Override
83+
public void postProcess() {
84+
final boolean verbose = Boolean.parseBoolean(GlobalSettings.getProperty(OpenApiClientGeneratorWrapper.VERBOSE));
85+
if (verbose) {
86+
super.postProcess();
87+
}
88+
}
8089
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
quarkus.log.category."org.openapitools".level=OFF

deployment/src/test/java/io/quarkiverse/openapi/generator/deployment/SpecConfigTest.java renamed to deployment/src/test/java/io/quarkiverse/openapi/generator/deployment/CodegenConfigTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
11
package io.quarkiverse.openapi.generator.deployment;
22

3-
import static io.quarkiverse.openapi.generator.deployment.SpecConfig.BUILD_TIME_SPEC_PREFIX_FORMAT;
3+
import static io.quarkiverse.openapi.generator.deployment.CodegenConfig.BUILD_TIME_SPEC_PREFIX_FORMAT;
44
import static org.junit.jupiter.api.Assertions.assertEquals;
55

66
import java.nio.file.Path;
77

88
import org.junit.jupiter.api.Test;
99

10-
class SpecConfigTest {
10+
class CodegenConfigTest {
1111

1212
@Test
1313
void verifySpaceEncoding() {
14-
final String resolvedPrefix = SpecConfig
14+
final String resolvedPrefix = CodegenConfig
1515
.getBuildTimeSpecPropertyPrefix(Path.of("/home/myuser/luke/my test openapi.json"));
1616
assertEquals(resolvedPrefix, String.format(BUILD_TIME_SPEC_PREFIX_FORMAT, "my_test_openapi_json"));
1717
}
1818

1919
@Test
2020
void withSingleFileName() {
21-
final String resolvedPrefix = SpecConfig.getBuildTimeSpecPropertyPrefix(Path.of("my test openapi.json"));
21+
final String resolvedPrefix = CodegenConfig.getBuildTimeSpecPropertyPrefix(Path.of("my test openapi.json"));
2222
assertEquals(resolvedPrefix, String.format(BUILD_TIME_SPEC_PREFIX_FORMAT, "my_test_openapi_json"));
2323
}
2424

deployment/src/test/java/io/quarkiverse/openapi/generator/deployment/wrapper/OpenApiClientGeneratorWrapperTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ private OpenApiClientGeneratorWrapper createGeneratorWrapper(String specFileName
221221
.of(requireNonNull(this.getClass().getResource(String.format("/openapi/%s", specFileName))).toURI());
222222
final Path targetPath = Paths.get(getTargetDir(), "openapi-gen");
223223

224-
return new OpenApiClientGeneratorWrapper(openApiSpec, targetPath);
224+
return new OpenApiClientGeneratorWrapper(openApiSpec, targetPath, false);
225225
}
226226

227227
private String getTargetDir() throws URISyntaxException {

0 commit comments

Comments
 (0)