This is an automated email from the ASF dual-hosted git repository. gitgabrio pushed a commit to branch incubator-kie-issues#1373 in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-runtimes.git
commit 4d104a6dba1861c7ce1310605f85859b5396af18 Author: Gabriele-Cardosi <[email protected]> AuthorDate: Mon Jul 1 09:02:55 2024 +0200 [incubator-kie-issues#1373] Fixing rest generation config. Add tests --- .../context/KogitoApplicationPropertyProvider.java | 7 +++ .../context/impl/AbstractKogitoBuildContext.java | 5 ++ .../kogito/codegen/core/ApplicationGenerator.java | 22 +++++--- .../codegen/core/ApplicationGeneratorTest.java | 61 ++++++++++++++++++++++ ...KogitoQuarkusApplicationPropertiesProvider.java | 5 ++ 5 files changed, 94 insertions(+), 6 deletions(-) diff --git a/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/KogitoApplicationPropertyProvider.java b/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/KogitoApplicationPropertyProvider.java index 6aceefe760..aefc03e19f 100644 --- a/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/KogitoApplicationPropertyProvider.java +++ b/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/KogitoApplicationPropertyProvider.java @@ -47,6 +47,11 @@ public interface KogitoApplicationPropertyProvider { public <T> Optional<T> getApplicationProperty(String property, Class<T> clazz) { return Optional.ofNullable(convert(properties.getProperty(property), clazz)); } + + @Override + public void removeApplicationProperty(String key) { + properties.remove(key); + } }; } @@ -57,4 +62,6 @@ public interface KogitoApplicationPropertyProvider { Collection<String> getApplicationProperties(); void setApplicationProperty(String key, String value); + + void removeApplicationProperty(String key); } diff --git a/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/impl/AbstractKogitoBuildContext.java b/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/impl/AbstractKogitoBuildContext.java index d46cfdb118..f8cb06a9a0 100644 --- a/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/impl/AbstractKogitoBuildContext.java +++ b/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/impl/AbstractKogitoBuildContext.java @@ -155,6 +155,11 @@ public abstract class AbstractKogitoBuildContext implements KogitoBuildContext { applicationProperties.setApplicationProperty(key, value); } + @Override + public void removeApplicationProperty(String key) { + applicationProperties.removeApplicationProperty(key); + } + @Override public String getPackageName() { return packageName; diff --git a/kogito-codegen-modules/kogito-codegen-core/src/main/java/org/kie/kogito/codegen/core/ApplicationGenerator.java b/kogito-codegen-modules/kogito-codegen-core/src/main/java/org/kie/kogito/codegen/core/ApplicationGenerator.java index 5b8facb99d..c6ca89f05f 100644 --- a/kogito-codegen-modules/kogito-codegen-core/src/main/java/org/kie/kogito/codegen/core/ApplicationGenerator.java +++ b/kogito-codegen-modules/kogito-codegen-core/src/main/java/org/kie/kogito/codegen/core/ApplicationGenerator.java @@ -41,7 +41,9 @@ import org.kie.kogito.codegen.api.context.KogitoBuildContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import static org.drools.codegen.common.DroolsModelBuildContext.KOGITO_GENERATE_REST; import static org.kie.kogito.codegen.api.Generator.REST_TYPE; +import static org.kie.kogito.codegen.api.context.KogitoBuildContext.generateRESTConfigurationKeyForResource; import static org.kie.kogito.codegen.core.CustomDashboardGeneratedUtils.loadCustomGrafanaDashboardsList; public class ApplicationGenerator { @@ -49,7 +51,8 @@ public class ApplicationGenerator { private static final Logger LOGGER = LoggerFactory.getLogger(ApplicationGenerator.class); public static final String APPLICATION_CLASS_NAME = "Application"; - private static final GeneratedFileType APPLICATION_SECTION_TYPE = GeneratedFileType.of("APPLICATION_SECTION", GeneratedFileType.Category.SOURCE); + private static final GeneratedFileType APPLICATION_SECTION_TYPE = GeneratedFileType.of("APPLICATION_SECTION", + GeneratedFileType.Category.SOURCE); private final ApplicationContainerGenerator applicationMainGenerator; private ApplicationConfigGenerator applicationConfigGenerator; @@ -95,8 +98,11 @@ public class ApplicationGenerator { public List<GeneratedFile> generateComponents() { return generators.stream() - .flatMap(gen -> gen.generate().stream()) - .filter(this::filterGeneratedFile) + .flatMap(gen -> { + boolean keepRestFile = keepRestFile(gen); + return gen.generate().stream() + .filter(generatedFile -> filterGeneratedFile(generatedFile, keepRestFile)); + }) .collect(Collectors.toList()); } @@ -112,8 +118,12 @@ public class ApplicationGenerator { return applicationMainGenerator.generate(); } - private boolean filterGeneratedFile(GeneratedFile generatedFile) { - boolean keepFile = context.hasRESTGloballyAvailable() || !REST_TYPE.equals(generatedFile.type()); + boolean keepRestFile(Generator generator) { + return context.hasRESTForGenerator(generator); + } + + private boolean filterGeneratedFile(GeneratedFile generatedFile, boolean keepRestFile) { + boolean keepFile = keepRestFile || !REST_TYPE.equals(generatedFile.type()); if (!keepFile) { LOGGER.warn("Skipping file because REST is disabled: " + generatedFile.relativePath()); } @@ -134,7 +144,7 @@ public class ApplicationGenerator { /** * Method to wire Generator with ApplicationGenerator if enabled - * + * * @param generator * @param <G> * @return diff --git a/kogito-codegen-modules/kogito-codegen-core/src/test/java/org/kie/kogito/codegen/core/ApplicationGeneratorTest.java b/kogito-codegen-modules/kogito-codegen-core/src/test/java/org/kie/kogito/codegen/core/ApplicationGeneratorTest.java index ee642d44ab..46b3019230 100644 --- a/kogito-codegen-modules/kogito-codegen-core/src/test/java/org/kie/kogito/codegen/core/ApplicationGeneratorTest.java +++ b/kogito-codegen-modules/kogito-codegen-core/src/test/java/org/kie/kogito/codegen/core/ApplicationGeneratorTest.java @@ -37,6 +37,7 @@ import com.github.javaparser.ast.expr.MethodCallExpr; import static org.assertj.core.api.Assertions.assertThat; import static org.kie.kogito.codegen.api.Generator.REST_TYPE; +import static org.kie.kogito.codegen.api.context.KogitoBuildContext.generateRESTConfigurationKeyForResource; public class ApplicationGeneratorTest { @@ -168,6 +169,66 @@ public class ApplicationGeneratorTest { } } + @ParameterizedTest + @MethodSource("org.kie.kogito.codegen.api.utils.KogitoContextTestUtils#contextBuilders") + public void keepRestFile(KogitoBuildContext.Builder contextBuilder) { + final KogitoBuildContext context = contextBuilder.build(); + final ApplicationGenerator appGenerator = new ApplicationGenerator(context); + final MockGenerator restGenerator = new MockGenerator(context, true); + final String generateRESTConfigurationKeyForResource = generateRESTConfigurationKeyForResource(restGenerator.name()); + + assertThat(appGenerator.registerGeneratorIfEnabled(restGenerator)) + .isNotEmpty(); + assertThat(appGenerator.getGenerators()).hasSize(1); + + if (context.hasRESTForGenerator(restGenerator)) { + // globally and engine-specific disable REST + context.setApplicationProperty(KogitoBuildContext.KOGITO_GENERATE_REST, "false"); + context.setApplicationProperty(generateRESTConfigurationKeyForResource, "false"); + assertThat(appGenerator.keepRestFile(restGenerator)).isFalse(); + + // globally disable REST, engine-specific enable REST + context.setApplicationProperty(KogitoBuildContext.KOGITO_GENERATE_REST, "false"); + context.setApplicationProperty(generateRESTConfigurationKeyForResource, "true"); + assertThat(appGenerator.keepRestFile(restGenerator)).isFalse(); + + // globally enable REST, engine-specific disable REST + context.setApplicationProperty(KogitoBuildContext.KOGITO_GENERATE_REST, "true"); + context.setApplicationProperty(generateRESTConfigurationKeyForResource, "false"); + assertThat(appGenerator.keepRestFile(restGenerator)).isFalse(); + + // globally and engine-specific enable REST + context.setApplicationProperty(KogitoBuildContext.KOGITO_GENERATE_REST, "true"); + context.setApplicationProperty(generateRESTConfigurationKeyForResource, "true"); + assertThat(appGenerator.keepRestFile(restGenerator)).isTrue(); + + // engine-specific enable REST + context.removeApplicationProperty(KogitoBuildContext.KOGITO_GENERATE_REST); + context.setApplicationProperty(generateRESTConfigurationKeyForResource, "true"); + assertThat(appGenerator.keepRestFile(restGenerator)).isTrue(); + + // engine-specific disable REST + context.removeApplicationProperty(KogitoBuildContext.KOGITO_GENERATE_REST); + context.setApplicationProperty(generateRESTConfigurationKeyForResource, "false"); + assertThat(appGenerator.keepRestFile(restGenerator)).isFalse(); + + // globally enable REST + context.setApplicationProperty(KogitoBuildContext.KOGITO_GENERATE_REST, "true"); + context.removeApplicationProperty(generateRESTConfigurationKeyForResource); + assertThat(appGenerator.keepRestFile(restGenerator)).isTrue(); + + // globally disable REST + context.setApplicationProperty(KogitoBuildContext.KOGITO_GENERATE_REST, "false"); + context.removeApplicationProperty(generateRESTConfigurationKeyForResource); + assertThat(appGenerator.keepRestFile(restGenerator)).isFalse(); + + // defaults + context.removeApplicationProperty(KogitoBuildContext.KOGITO_GENERATE_REST); + context.removeApplicationProperty(generateRESTConfigurationKeyForResource); + assertThat(appGenerator.keepRestFile(restGenerator)).isTrue(); + } + } + private void assertCompilationUnit(final CompilationUnit compilationUnit, final boolean checkCDI) { assertThat(compilationUnit).isNotNull(); diff --git a/quarkus/extensions/kogito-quarkus-extension-common/kogito-quarkus-common-deployment/src/main/java/org/kie/kogito/quarkus/common/deployment/KogitoQuarkusApplicationPropertiesProvider.java b/quarkus/extensions/kogito-quarkus-extension-common/kogito-quarkus-common-deployment/src/main/java/org/kie/kogito/quarkus/common/deployment/KogitoQuarkusApplicationPropertiesProvider.java index c0ac45589d..a64c114c24 100644 --- a/quarkus/extensions/kogito-quarkus-extension-common/kogito-quarkus-common-deployment/src/main/java/org/kie/kogito/quarkus/common/deployment/KogitoQuarkusApplicationPropertiesProvider.java +++ b/quarkus/extensions/kogito-quarkus-extension-common/kogito-quarkus-common-deployment/src/main/java/org/kie/kogito/quarkus/common/deployment/KogitoQuarkusApplicationPropertiesProvider.java @@ -48,4 +48,9 @@ public class KogitoQuarkusApplicationPropertiesProvider implements KogitoApplica public void setApplicationProperty(String key, String value) { System.setProperty(key, value); } + + @Override + public void removeApplicationProperty(String key) { + System.clearProperty(key); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
