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 1143117f35 [incubator-kie-issues#2003] DMN Engine: Some DMNs work 
differently with different values on the "xmlns" and "namespace"  (#6379)
1143117f35 is described below

commit 1143117f357b1953e3ccb1d8f9c1d8dda549d380
Author: Gabriele Cardosi <[email protected]>
AuthorDate: Mon Jun 23 09:48:29 2025 +0200

    [incubator-kie-issues#2003] DMN Engine: Some DMNs work differently with 
different values on the "xmlns" and "namespace"  (#6379)
    
    * [incubator-kie-issues#2003] WIP - refactoring - tests working.
    
    * [incubator-kie-issues#2003] Cleanup. Verified TCK - no regression
    
    * [incubator-kie-issues#2003] Cleanup leftover comments
    
    ---------
    
    Co-authored-by: Gabriele-Cardosi <[email protected]>
---
 .../compiler/ItemDefinitionDependenciesSorter.java |  3 +--
 .../java/org/kie/dmn/model/api/Definitions.java    | 21 +++++++++++++++--
 .../java/org/kie/dmn/model/v1_1/TDefinitions.java  | 26 +---------------------
 .../java/org/kie/dmn/model/v1_2/TDefinitions.java  | 22 +-----------------
 .../java/org/kie/dmn/model/v1_3/TDefinitions.java  | 22 +-----------------
 .../java/org/kie/dmn/model/v1_4/TDefinitions.java  | 21 +----------------
 .../java/org/kie/dmn/model/v1_5/TDefinitions.java  | 21 +----------------
 7 files changed, 25 insertions(+), 111 deletions(-)

diff --git 
a/kie-dmn/kie-dmn-core/src/main/java/org/kie/dmn/core/compiler/ItemDefinitionDependenciesSorter.java
 
b/kie-dmn/kie-dmn-core/src/main/java/org/kie/dmn/core/compiler/ItemDefinitionDependenciesSorter.java
index 3d13c5777f..e98e45f6ac 100644
--- 
a/kie-dmn/kie-dmn-core/src/main/java/org/kie/dmn/core/compiler/ItemDefinitionDependenciesSorter.java
+++ 
b/kie-dmn/kie-dmn-core/src/main/java/org/kie/dmn/core/compiler/ItemDefinitionDependenciesSorter.java
@@ -1,4 +1,4 @@
-/**
+/*
  * 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
@@ -59,7 +59,6 @@ public class ItemDefinitionDependenciesSorter {
      */
     private void dfVisit(ItemDefinition node, List<ItemDefinition> allNodes, 
Collection<ItemDefinition> visited, List<ItemDefinition> dfv) {
         visited.add(node);
-
         List<ItemDefinition> neighbours = allNodes.stream()
                                                   .filter(n -> 
!n.getName().equals(node.getName())) // filter out `node`
                                                   .filter(n -> 
recurseFind(node, new QName(modelNamespace, n.getName()))) // I pick from 
allNodes, those referenced by this `node`. Only neighbours of `node`, because N 
is referenced by NODE.
diff --git 
a/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/api/Definitions.java 
b/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/api/Definitions.java
index 6da01eb9e6..4005f8f9eb 100644
--- a/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/api/Definitions.java
+++ b/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/api/Definitions.java
@@ -1,4 +1,4 @@
-/**
+/*
  * 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
@@ -21,6 +21,7 @@ package org.kie.dmn.model.api;
 import java.util.List;
 
 import javax.xml.XMLConstants;
+import javax.xml.namespace.QName;
 
 import org.kie.dmn.model.api.dmndi.DMNDI;
 
@@ -49,7 +50,11 @@ public interface Definitions extends NamedElement {
      * Utility method to ensure any QName references contained inside the 
ItemDefinitions have the namespace correctly valorized, also accordingly to the 
prefix.
      * (Even in the case of {@link XMLConstants.DEFAULT_NS_PREFIX} it will 
take the DMN model namespace for the no-prefix accordingly.)
      */
-    void normalize();
+    default void normalize() {
+        for (ItemDefinition itemDefinition : this.getItemDefinition()) {
+            processQNameURIs(itemDefinition, this.getNamespace());
+        }
+    }
 
     String getExpressionLanguage();
 
@@ -81,4 +86,16 @@ public interface Definitions extends NamedElement {
      */
     void setDMNDI(DMNDI value);
 
+    private static void processQNameURIs(ItemDefinition iDef, String 
defaultNamespace) {
+        final QName typeRef = iDef.getTypeRef();
+        if (typeRef != null && 
XMLConstants.NULL_NS_URI.equals(typeRef.getNamespaceURI())) {
+            String prefix = typeRef.getPrefix();
+            final String namespace = prefix != null && !prefix.isEmpty() ? 
iDef.getNamespaceURI(prefix) : defaultNamespace;
+            iDef.setTypeRef(new QName(namespace, typeRef.getLocalPart(), 
typeRef.getPrefix()));
+        }
+        for (ItemDefinition comp : iDef.getItemComponent()) {
+            processQNameURIs(comp, defaultNamespace);
+        }
+    }
+
 }
diff --git 
a/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/v1_1/TDefinitions.java 
b/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/v1_1/TDefinitions.java
index 9822828835..44bc880189 100644
--- 
a/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/v1_1/TDefinitions.java
+++ 
b/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/v1_1/TDefinitions.java
@@ -1,4 +1,4 @@
-/**
+/*
  * 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
@@ -22,9 +22,6 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
-import javax.xml.XMLConstants;
-import javax.xml.namespace.QName;
-
 import org.kie.dmn.model.api.Artifact;
 import org.kie.dmn.model.api.BusinessContextElement;
 import org.kie.dmn.model.api.DRGElement;
@@ -197,27 +194,6 @@ public class TDefinitions extends TNamedElement implements 
Definitions {
                '}';
     }
 
-    /**
-     * Utility method to ensure any QName references contained inside the 
ItemDefinitions have the namespace correctly valorized, also accordingly to the 
prefix.
-     * (Even in the case of {@link XMLConstants.DEFAULT_NS_PREFIX} it will 
take the DMN model namespace for the no-prefix accordingly.)
-     */
-    public void normalize() {
-        for (ItemDefinition itemDefinition : this.getItemDefinition()) {
-            processQNameURIs(itemDefinition);
-        }
-    }
-
-    private static void processQNameURIs(ItemDefinition iDef) {
-        final QName typeRef = iDef.getTypeRef();
-        if (typeRef != null && 
XMLConstants.NULL_NS_URI.equals(typeRef.getNamespaceURI())) {
-            final String namespace = iDef.getNamespaceURI(typeRef.getPrefix());
-            iDef.setTypeRef(new QName(namespace, typeRef.getLocalPart(), 
typeRef.getPrefix()));
-        }
-        for (ItemDefinition comp : iDef.getItemComponent()) {
-            processQNameURIs(comp);
-        }
-    }
-
     @Override
     public DMNDI getDMNDI() {
         throw new UnsupportedOperationException("not on 1.1");
diff --git 
a/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/v1_2/TDefinitions.java 
b/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/v1_2/TDefinitions.java
index b37704bbc4..0a790d1100 100644
--- 
a/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/v1_2/TDefinitions.java
+++ 
b/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/v1_2/TDefinitions.java
@@ -1,4 +1,4 @@
-/**
+/*
  * 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
@@ -22,9 +22,6 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
-import javax.xml.XMLConstants;
-import javax.xml.namespace.QName;
-
 import org.kie.dmn.model.api.Artifact;
 import org.kie.dmn.model.api.BusinessContextElement;
 import org.kie.dmn.model.api.DRGElement;
@@ -178,21 +175,4 @@ public class TDefinitions extends TNamedElement implements 
Definitions {
     public List<DecisionService> getDecisionService() {
         return 
drgElement.stream().filter(DecisionService.class::isInstance).map(DecisionService.class::cast).collect(Collectors.toList());
     }
-
-    public void normalize() {
-        for (ItemDefinition itemDefinition : this.getItemDefinition()) {
-            processQNameURIs(itemDefinition);
-        }
-    }
-
-    private static void processQNameURIs(ItemDefinition iDef) {
-        final QName typeRef = iDef.getTypeRef();
-        if (typeRef != null && 
XMLConstants.NULL_NS_URI.equals(typeRef.getNamespaceURI())) {
-            final String namespace = iDef.getNamespaceURI(typeRef.getPrefix());
-            iDef.setTypeRef(new QName(namespace, typeRef.getLocalPart(), 
typeRef.getPrefix()));
-        }
-        for (ItemDefinition comp : iDef.getItemComponent()) {
-            processQNameURIs(comp);
-        }
-    }
 }
diff --git 
a/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/v1_3/TDefinitions.java 
b/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/v1_3/TDefinitions.java
index a618e8cf61..1bbfb40d1d 100644
--- 
a/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/v1_3/TDefinitions.java
+++ 
b/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/v1_3/TDefinitions.java
@@ -1,4 +1,4 @@
-/**
+/*
  * 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
@@ -22,9 +22,6 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
-import javax.xml.XMLConstants;
-import javax.xml.namespace.QName;
-
 import org.kie.dmn.model.api.Artifact;
 import org.kie.dmn.model.api.BusinessContextElement;
 import org.kie.dmn.model.api.DRGElement;
@@ -178,21 +175,4 @@ public class TDefinitions extends TNamedElement implements 
Definitions {
     public List<DecisionService> getDecisionService() {
         return 
drgElement.stream().filter(DecisionService.class::isInstance).map(DecisionService.class::cast).collect(Collectors.toList());
     }
-
-    public void normalize() {
-        for (ItemDefinition itemDefinition : this.getItemDefinition()) {
-            processQNameURIs(itemDefinition);
-        }
-    }
-
-    private static void processQNameURIs(ItemDefinition iDef) {
-        final QName typeRef = iDef.getTypeRef();
-        if (typeRef != null && 
XMLConstants.NULL_NS_URI.equals(typeRef.getNamespaceURI())) {
-            final String namespace = iDef.getNamespaceURI(typeRef.getPrefix());
-            iDef.setTypeRef(new QName(namespace, typeRef.getLocalPart(), 
typeRef.getPrefix()));
-        }
-        for (ItemDefinition comp : iDef.getItemComponent()) {
-            processQNameURIs(comp);
-        }
-    }
 }
diff --git 
a/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/v1_4/TDefinitions.java 
b/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/v1_4/TDefinitions.java
index 1b35c1c00e..4173379c8e 100644
--- 
a/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/v1_4/TDefinitions.java
+++ 
b/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/v1_4/TDefinitions.java
@@ -1,4 +1,4 @@
-/**
+/*
  * 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
@@ -22,9 +22,6 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
-import javax.xml.XMLConstants;
-import javax.xml.namespace.QName;
-
 import org.kie.dmn.model.api.Artifact;
 import org.kie.dmn.model.api.BusinessContextElement;
 import org.kie.dmn.model.api.DRGElement;
@@ -179,20 +176,4 @@ public class TDefinitions extends TNamedElement implements 
Definitions {
         return 
drgElement.stream().filter(DecisionService.class::isInstance).map(DecisionService.class::cast).collect(Collectors.toList());
     }
 
-    public void normalize() {
-        for (ItemDefinition itemDefinition : this.getItemDefinition()) {
-            processQNameURIs(itemDefinition);
-        }
-    }
-
-    private static void processQNameURIs(ItemDefinition iDef) {
-        final QName typeRef = iDef.getTypeRef();
-        if (typeRef != null && 
XMLConstants.NULL_NS_URI.equals(typeRef.getNamespaceURI())) {
-            final String namespace = iDef.getNamespaceURI(typeRef.getPrefix());
-            iDef.setTypeRef(new QName(namespace, typeRef.getLocalPart(), 
typeRef.getPrefix()));
-        }
-        for (ItemDefinition comp : iDef.getItemComponent()) {
-            processQNameURIs(comp);
-        }
-    }
 }
diff --git 
a/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/v1_5/TDefinitions.java 
b/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/v1_5/TDefinitions.java
index ea108d1b44..4f1920f139 100644
--- 
a/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/v1_5/TDefinitions.java
+++ 
b/kie-dmn/kie-dmn-model/src/main/java/org/kie/dmn/model/v1_5/TDefinitions.java
@@ -1,4 +1,4 @@
-/**
+/*
  * 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
@@ -28,8 +28,6 @@ import org.kie.dmn.model.api.Import;
 import org.kie.dmn.model.api.ItemDefinition;
 import org.kie.dmn.model.api.dmndi.DMNDI;
 
-import javax.xml.XMLConstants;
-import javax.xml.namespace.QName;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -176,21 +174,4 @@ public class TDefinitions extends TNamedElement implements 
Definitions {
     public List<DecisionService> getDecisionService() {
         return 
drgElement.stream().filter(DecisionService.class::isInstance).map(DecisionService.class::cast).collect(Collectors.toList());
     }
-
-    public void normalize() {
-        for (ItemDefinition itemDefinition : this.getItemDefinition()) {
-            processQNameURIs(itemDefinition);
-        }
-    }
-
-    private static void processQNameURIs(ItemDefinition iDef) {
-        final QName typeRef = iDef.getTypeRef();
-        if (typeRef != null && 
XMLConstants.NULL_NS_URI.equals(typeRef.getNamespaceURI())) {
-            final String namespace = iDef.getNamespaceURI(typeRef.getPrefix());
-            iDef.setTypeRef(new QName(namespace, typeRef.getLocalPart(), 
typeRef.getPrefix()));
-        }
-        for (ItemDefinition comp : iDef.getItemComponent()) {
-            processQNameURIs(comp);
-        }
-    }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to