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-drools.git
The following commit(s) were added to refs/heads/main by this push:
new b76dd6c55d [Incubator kie issues#2158] Fix errors in implicit
conversion for list type (#6538)
b76dd6c55d is described below
commit b76dd6c55d9671af900841d3d584953d989e9200
Author: AthiraHari77 <[email protected]>
AuthorDate: Fri Dec 5 14:54:21 2025 +0530
[Incubator kie issues#2158] Fix errors in implicit conversion for list type
(#6538)
* [incubator-kie-issues#2158]fix tck issues
* [incubator-kie-issues#2158]fix tck issues
* [incubator-kie-issues#2158]fix tck issues
* [incubator-kie-issues#2158] update code changes
* [incubator-kie-issues#2158] code refactoring
* [incubator-kie-issues#2158] code refactoring
* [incubator-kie-issues#2158] code refactoring
* [incubator-kie-issues#2158] update tests
* [incubator-kie-issues#2158] update tests
* [incubator-kie-issues#2158] fix review comments
---------
Co-authored-by: athira <[email protected]>
---
.../java/org/kie/dmn/core/util/CoerceUtil.java | 6 +++++
.../test/java/org/kie/dmn/core/DMNRuntimeTest.java | 2 +-
.../java/org/kie/dmn/core/util/CoerceUtilTest.java | 26 ++++++++++++++++++++++
.../dmn/legacy/tests/core/v1_1/DMNRuntimeTest.java | 3 ++-
4 files changed, 35 insertions(+), 2 deletions(-)
diff --git
a/kie-dmn/kie-dmn-core/src/main/java/org/kie/dmn/core/util/CoerceUtil.java
b/kie-dmn/kie-dmn-core/src/main/java/org/kie/dmn/core/util/CoerceUtil.java
index 0d11c67c5d..478c5621e6 100644
--- a/kie-dmn/kie-dmn-core/src/main/java/org/kie/dmn/core/util/CoerceUtil.java
+++ b/kie-dmn/kie-dmn-core/src/main/java/org/kie/dmn/core/util/CoerceUtil.java
@@ -20,6 +20,7 @@ package org.kie.dmn.core.util;
import java.time.LocalDate;
import java.util.Collection;
+import java.util.Collections;
import org.kie.dmn.api.core.DMNType;
import org.kie.dmn.core.impl.SimpleTypeImpl;
@@ -48,6 +49,11 @@ public class CoerceUtil {
// and vice-versa
return ((Collection) valueToCoerce).toArray()[0];
}
+ if (requiredType.isCollection() && !(valueToCoerce instanceof
Collection) &&
+ (!(requiredType instanceof SimpleTypeImpl simpleType)
+ || simpleType.getFeelType() != BuiltInType.UNKNOWN)) {
+ return Collections.singletonList(valueToCoerce);
+ }
if (valueToCoerce instanceof LocalDate localDate &&
requiredType instanceof SimpleTypeImpl simpleType &&
simpleType.getFeelType() == BuiltInType.DATE_TIME) {
diff --git
a/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/DMNRuntimeTest.java
b/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/DMNRuntimeTest.java
index 0f1b2e2949..07325af152 100644
--- a/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/DMNRuntimeTest.java
+++ b/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/DMNRuntimeTest.java
@@ -2343,7 +2343,7 @@ public class DMNRuntimeTest extends
BaseInterpretedVsCompiledTest {
.isTrue();
final DMNContext result = dmnResult.getContext();
- assertThat(result.get("Decide Vowel a")).isEqualTo("a");
+ assertThat(result.get("Decide Vowel
a")).isEqualTo(Collections.singletonList("a"));
assertThat(result.get("Decide BAD")).isNull();
}
diff --git
a/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/util/CoerceUtilTest.java
b/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/util/CoerceUtilTest.java
index 6873f979df..c9a77c9ae2 100644
---
a/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/util/CoerceUtilTest.java
+++
b/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/util/CoerceUtilTest.java
@@ -167,6 +167,32 @@ class CoerceUtilTest {
assertThat(retrieved).isEqualTo(item);
}
+ @Test
+ void testCoerceValueToCollection() {
+ Object item = "TESTED_OBJECT";
+ Object value = Collections.singletonList(item);
+ DMNType requiredType = new
SimpleTypeImpl("http://www.omg.org/spec/DMN/20180521/FEEL/",
+ "string",
+ null,
+ true,
+ null,
+ null,
+ null,
+ BuiltInType.STRING);
+ Object retrieved = CoerceUtil.actualCoerceValue(requiredType, item);
+ assertThat(retrieved).isNotNull();
+ assertThat(retrieved).isEqualTo(value);
+ }
+
+ @Test
+ void testCoerceUnknownType() {
+ Object item = "TESTED_OBJECT";
+ DMNType requiredType =
SimpleTypeImpl.UNKNOWN_DMNTYPE("http://www.omg.org/spec/DMN/20180521/FEEL/");
+ Object retrieved = CoerceUtil.actualCoerceValue(requiredType, item);
+ assertThat(retrieved).isNotNull();
+ assertThat(retrieved).isEqualTo(item);
+ }
+
@Test
void actualCoerceValueDateToDateTime() {
Object value = LocalDate.now();
diff --git
a/kie-dmn/kie-dmn-legacy-tests/src/test/java/org/kie/dmn/legacy/tests/core/v1_1/DMNRuntimeTest.java
b/kie-dmn/kie-dmn-legacy-tests/src/test/java/org/kie/dmn/legacy/tests/core/v1_1/DMNRuntimeTest.java
index db9cf9007e..64439878d7 100644
---
a/kie-dmn/kie-dmn-legacy-tests/src/test/java/org/kie/dmn/legacy/tests/core/v1_1/DMNRuntimeTest.java
+++
b/kie-dmn/kie-dmn-legacy-tests/src/test/java/org/kie/dmn/legacy/tests/core/v1_1/DMNRuntimeTest.java
@@ -30,6 +30,7 @@ import java.time.chrono.ChronoPeriod;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -2045,7 +2046,7 @@ public class DMNRuntimeTest extends BaseDMN1_1VariantTest
{
.anyMatch(m ->
m.getSourceId().equals("_b2205027-d06c-41b5-8419-e14b501e14a6"))).isTrue();
final DMNContext result = dmnResult.getContext();
- assertThat(result.get("Decide Vowel a")).isEqualTo("a");
+ assertThat(result.get("Decide Vowel
a")).isEqualTo(Collections.singletonList("a"));
assertThat(result.get("Decide BAD")).isNull();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]