You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kie.apache.org by gi...@apache.org on 2024/07/01 07:03:01 UTC
(incubator-kie-kogito-runtimes) branch incubator-kie-issues#1373 created (now 4d104a6dba)
This is an automated email from the ASF dual-hosted git repository.
gitgabrio pushed a change to branch incubator-kie-issues#1373
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-runtimes.git
at 4d104a6dba [incubator-kie-issues#1373] Fixing rest generation config. Add tests
This branch includes the following new commits:
new 4d104a6dba [incubator-kie-issues#1373] Fixing rest generation config. Add tests
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org
(incubator-kie-kogito-runtimes) 01/01: [incubator-kie-issues#1373] Fixing rest generation config. Add tests
Posted by gi...@apache.org.
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 <ga...@ibm.com>
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: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org