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]

Reply via email to