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]

Reply via email to