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 e67e359e1f [incubator-kie-issues#1775] Conditionally overwrite
code-related context properties only if twin system properties are not null
(#3832)
e67e359e1f is described below
commit e67e359e1ffc6f20982be66854d523d94005049a
Author: Gabriele Cardosi <[email protected]>
AuthorDate: Thu Jan 23 11:29:08 2025 +0100
[incubator-kie-issues#1775] Conditionally overwrite code-related context
properties only if twin system properties are not null (#3832)
Co-authored-by: Gabriele-Cardosi <[email protected]>
---
.../kie/kogito/maven/plugin/AbstractKieMojo.java | 30 ++++--
.../kogito/maven/plugin/AbstractKieMojoTest.java | 111 +++++++++++++++++++++
2 files changed, 131 insertions(+), 10 deletions(-)
diff --git
a/kogito-maven-plugin/src/main/java/org/kie/kogito/maven/plugin/AbstractKieMojo.java
b/kogito-maven-plugin/src/main/java/org/kie/kogito/maven/plugin/AbstractKieMojo.java
index 6bab6ec5dd..4027685cbf 100644
---
a/kogito-maven-plugin/src/main/java/org/kie/kogito/maven/plugin/AbstractKieMojo.java
+++
b/kogito-maven-plugin/src/main/java/org/kie/kogito/maven/plugin/AbstractKieMojo.java
@@ -73,19 +73,19 @@ public abstract class AbstractKieMojo extends AbstractMojo {
@Parameter(required = true, defaultValue = "${project.basedir}")
protected File baseDir;
- @Parameter(property = "kogito.codegen.persistence", defaultValue = "true")
+ @Parameter(property = "kogito.codegen.persistence")
protected boolean persistence;
- @Parameter(property = "kogito.codegen.rules", defaultValue = "true")
+ @Parameter(property = "kogito.codegen.rules")
protected String generateRules;
- @Parameter(property = "kogito.codegen.processes", defaultValue = "true")
+ @Parameter(property = "kogito.codegen.processes")
protected String generateProcesses;
- @Parameter(property = "kogito.codegen.decisions", defaultValue = "true")
+ @Parameter(property = "kogito.codegen.decisions")
protected String generateDecisions;
- @Parameter(property = "kogito.codegen.predictions", defaultValue = "true")
+ @Parameter(property = "kogito.codegen.predictions")
protected String generatePredictions;
private Reflections reflections;
@@ -174,11 +174,21 @@ public abstract class AbstractKieMojo extends
AbstractMojo {
}
});
- context.setApplicationProperty(Generator.CONFIG_PREFIX +
RuleCodegen.GENERATOR_NAME, generateRules);
- context.setApplicationProperty(Generator.CONFIG_PREFIX +
ProcessCodegen.GENERATOR_NAME, generateProcesses);
- context.setApplicationProperty(Generator.CONFIG_PREFIX +
PredictionCodegen.GENERATOR_NAME, generatePredictions);
- context.setApplicationProperty(Generator.CONFIG_PREFIX +
DecisionCodegen.GENERATOR_NAME, generateDecisions);
- context.setApplicationProperty(Generator.CONFIG_PREFIX +
PersistenceGenerator.GENERATOR_NAME, Boolean.toString(persistence));
+ overwritePropertiesIfNeeded(context);
+ }
+
+ void overwritePropertiesIfNeeded(KogitoBuildContext context) {
+ overwritePropertyIfNeeded(context, RuleCodegen.GENERATOR_NAME,
generateRules);
+ overwritePropertyIfNeeded(context, ProcessCodegen.GENERATOR_NAME,
generateProcesses);
+ overwritePropertyIfNeeded(context, PredictionCodegen.GENERATOR_NAME,
generatePredictions);
+ overwritePropertyIfNeeded(context, DecisionCodegen.GENERATOR_NAME,
generateDecisions);
+ overwritePropertyIfNeeded(context,
PersistenceGenerator.GENERATOR_NAME, Boolean.toString(persistence));
+ }
+
+ static void overwritePropertyIfNeeded(KogitoBuildContext context, String
generatorName, String propertyValue) {
+ if (propertyValue != null && !propertyValue.isEmpty()) {
+ context.setApplicationProperty(Generator.CONFIG_PREFIX +
generatorName, propertyValue);
+ }
}
private KogitoBuildContext.Builder contextBuilder() {
diff --git
a/kogito-maven-plugin/src/test/java/org/kie/kogito/maven/plugin/AbstractKieMojoTest.java
b/kogito-maven-plugin/src/test/java/org/kie/kogito/maven/plugin/AbstractKieMojoTest.java
new file mode 100644
index 0000000000..4ae94ebf39
--- /dev/null
+++
b/kogito-maven-plugin/src/test/java/org/kie/kogito/maven/plugin/AbstractKieMojoTest.java
@@ -0,0 +1,111 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.kie.kogito.maven.plugin;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Stream;
+
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+import org.kie.kogito.codegen.api.Generator;
+import org.kie.kogito.codegen.api.context.KogitoBuildContext;
+import org.kie.kogito.codegen.decision.DecisionCodegen;
+import org.kie.kogito.codegen.prediction.PredictionCodegen;
+import org.kie.kogito.codegen.process.ProcessCodegen;
+import org.kie.kogito.codegen.process.persistence.PersistenceGenerator;
+import org.kie.kogito.codegen.rules.RuleCodegen;
+
+import static
org.kie.kogito.maven.plugin.AbstractKieMojo.overwritePropertyIfNeeded;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+class AbstractKieMojoTest {
+
+ private static final List<String> generatorNames;
+
+ static {
+ generatorNames = new ArrayList<>();
+ generatorNames.add(RuleCodegen.GENERATOR_NAME);
+ generatorNames.add(ProcessCodegen.GENERATOR_NAME);
+ generatorNames.add(PredictionCodegen.GENERATOR_NAME);
+ generatorNames.add(DecisionCodegen.GENERATOR_NAME);
+ generatorNames.add(PersistenceGenerator.GENERATOR_NAME);
+ }
+
+ @ParameterizedTest
+ @MethodSource("getGeneratorNamesStream")
+ void overwritePropertiesIfNeededWithNull(String generatorName) {
+ String expectedWrittenProperty = Generator.CONFIG_PREFIX +
generatorName;
+ AbstractKieMojo abstractKieMojo = new AbstractKieMojo() {
+ @Override
+ public void execute() throws MojoExecutionException,
MojoFailureException {
+ }
+ };
+ KogitoBuildContext kogitoBuildContextMocked =
mock(KogitoBuildContext.class);
+ abstractKieMojo.overwritePropertiesIfNeeded(kogitoBuildContextMocked);
+ if (generatorName.equals(PersistenceGenerator.GENERATOR_NAME)) {
+ verify(kogitoBuildContextMocked,
times(1)).setApplicationProperty(expectedWrittenProperty, "false"); // being a
boolean property, it default to false
+ } else {
+ verify(kogitoBuildContextMocked,
never()).setApplicationProperty(eq(expectedWrittenProperty), any());
+ }
+ }
+
+ @ParameterizedTest
+ @MethodSource("getGeneratorNamesStream")
+ void overwritePropertyIfNeededWithNotNull(String generatorName) {
+ String propertyValue = "notnull";
+ String expectedWrittenProperty = Generator.CONFIG_PREFIX +
generatorName;
+ KogitoBuildContext kogitoBuildContextMocked =
mock(KogitoBuildContext.class);
+ overwritePropertyIfNeeded(kogitoBuildContextMocked, generatorName,
propertyValue);
+ verify(kogitoBuildContextMocked,
times(1)).setApplicationProperty(expectedWrittenProperty, propertyValue);
+ }
+
+ @ParameterizedTest
+ @MethodSource("getGeneratorNamesStream")
+ void overwritePropertyIfNeededWithEmpty(String generatorName) {
+ String propertyValue = "";
+ String expectedWrittenProperty = Generator.CONFIG_PREFIX +
generatorName;
+ KogitoBuildContext kogitoBuildContextMocked =
mock(KogitoBuildContext.class);
+ overwritePropertyIfNeeded(kogitoBuildContextMocked, generatorName,
propertyValue);
+ verify(kogitoBuildContextMocked,
never()).setApplicationProperty(expectedWrittenProperty, propertyValue);
+ }
+
+ @ParameterizedTest
+ @MethodSource("getGeneratorNamesStream")
+ void overwritePropertyIfNeededWithNull(String generatorName) {
+ String propertyValue = null;
+ String expectedWrittenProperty = Generator.CONFIG_PREFIX +
generatorName;
+ KogitoBuildContext kogitoBuildContextMocked =
mock(KogitoBuildContext.class);
+ overwritePropertyIfNeeded(kogitoBuildContextMocked, generatorName,
propertyValue);
+ verify(kogitoBuildContextMocked,
never()).setApplicationProperty(expectedWrittenProperty, propertyValue);
+ }
+
+ static Stream<String> getGeneratorNamesStream() {
+ return generatorNames.stream();
+ }
+
+}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]