This is an automated email from the ASF dual-hosted git repository.
gitgabrio pushed a commit to branch main
in repository
https://gitbox.apache.org/repos/asf/incubator-kie-kogito-runtimes.git
The following commit(s) were added to refs/heads/main by this push:
new b73eba84eb [incubator-kie-issues#1373] Fixing rest generation config.
(#3584)
b73eba84eb is described below
commit b73eba84eb54d7901ede3591cf67f39320ebbcf4
Author: Gabriele Cardosi <[email protected]>
AuthorDate: Thu Jul 18 11:37:24 2024 +0200
[incubator-kie-issues#1373] Fixing rest generation config. (#3584)
* [incubator-kie-issues#1373] Fixing rest generation config. Add tests
* [incubator-kie-issues#1373] Minor fix
---------
Co-authored-by: Gabriele-Cardosi <[email protected]>
---
.../context/KogitoApplicationPropertyProvider.java | 7 +++
.../context/impl/AbstractKogitoBuildContext.java | 5 ++
.../kogito/codegen/core/ApplicationGenerator.java | 20 ++++---
.../codegen/core/ApplicationGeneratorTest.java | 61 ++++++++++++++++++++++
...KogitoQuarkusApplicationPropertiesProvider.java | 5 ++
5 files changed, 92 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..f239870d5a 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
@@ -49,7 +49,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 +96,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 +116,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 +142,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]