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 745a23f7fc [incubator-kie-issues#1066] Implement usage of namespace 
inside href for unnamed imports (#5830)
745a23f7fc is described below

commit 745a23f7fc8bd7a31ed56c3a45ddcf2a9e1184ac
Author: Gabriele Cardosi <[email protected]>
AuthorDate: Tue Apr 9 07:29:46 2024 +0200

    [incubator-kie-issues#1066] Implement usage of namespace inside href for 
unnamed imports (#5830)
    
    * [incubator-kie-issues#1066] Soring both default and imported id for 
unnamed imports
    
    * [incubator-kie-issues#1066] Implementing tests with and without namespace 
in href
    
    ---------
    
    Co-authored-by: Gabriele-Cardosi <[email protected]>
---
 .../java/org/kie/dmn/core/impl/DMNModelImpl.java   | 29 +++++-----
 .../java/org/kie/dmn/core/impl/DMNRuntimeImpl.java |  5 +-
 .../java/org/kie/dmn/core/DMNCompilerTest.java     | 55 +++++++++++--------
 .../dmn/core/compiler/UnnamedImportUtilsTest.java  | 62 +++++++++++++++-------
 .../valid_models/DMNv1_5/Imported_Model_Unamed.dmn |  6 ++-
 ...rting_EmptyNamed_Model_With_Href_Namespace.dmn} | 11 ++--
 ...ng_EmptyNamed_Model_Without_Href_Namespace.dmn} |  5 --
 .../dmn/validation/v1_5/DMN15ValidationsTest.java  | 25 ++++++---
 8 files changed, 117 insertions(+), 81 deletions(-)

diff --git 
a/kie-dmn/kie-dmn-core/src/main/java/org/kie/dmn/core/impl/DMNModelImpl.java 
b/kie-dmn/kie-dmn-core/src/main/java/org/kie/dmn/core/impl/DMNModelImpl.java
index f7a45a44d3..d100cbbc85 100644
--- a/kie-dmn/kie-dmn-core/src/main/java/org/kie/dmn/core/impl/DMNModelImpl.java
+++ b/kie-dmn/kie-dmn-core/src/main/java/org/kie/dmn/core/impl/DMNModelImpl.java
@@ -23,6 +23,7 @@ import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -167,16 +168,12 @@ public class DMNModelImpl
             return node.getName();
         } else {
             Optional<String> lookupAlias = 
getImportAliasFor(node.getModelNamespace(), node.getModelName());
-            if (lookupAlias.isPresent()) {
-                return lookupAlias.get() + "." + node.getName();
-            } else {
-                return null;
-            }
+            return lookupAlias.map(s -> s + "." + node.getName()).orElse(null);
         }
     }
 
     public void addInput(InputDataNode idn) {
-        inputs.put(computeDRGElementModelLocalId(idn), idn);
+        computeDRGElementModelLocalId(idn).forEach(id -> inputs.put(id, idn));
     }
 
     @Override
@@ -199,24 +196,24 @@ public class DMNModelImpl
 
     @Override
     public Set<InputDataNode> getInputs() {
-        return this.inputs.values().stream().collect( 
Collectors.toCollection(LinkedHashSet::new) );
+        return new LinkedHashSet<>(this.inputs.values());
     }
 
     public void addDecision(DecisionNode dn) {
-        decisions.put(computeDRGElementModelLocalId(dn), dn);
+        computeDRGElementModelLocalId(dn).forEach(id -> decisions.put(id, dn));
     }
 
-    private String computeDRGElementModelLocalId(DMNNode node) {
+    private List<String> computeDRGElementModelLocalId(DMNNode node) {
         // incubator-kie-issues#852: The idea is to not treat the anonymous 
models as import, but to "merge" them with original opne,
         // Here, if the node comes from an unnamed imported model, then it is 
stored only with its id, to be looked for
         // as if defined in the model itself
         if (node.getModelNamespace().equals(definitions.getNamespace())) {
-            return node.getId();
+            return Collections.singletonList(node.getId());
         } else if (isInUnnamedImport(node, this)) {
             // the node is an unnamed import
-            return node.getId();
+            return Arrays.asList(node.getId(), node.getModelNamespace() + "#" 
+ node.getId());
         } else {
-            return node.getModelNamespace() + "#" + node.getId();
+            return Collections.singletonList(node.getModelNamespace() + "#" + 
node.getId());
         }
     }
 
@@ -241,7 +238,7 @@ public class DMNModelImpl
 
     @Override
     public Set<DecisionNode> getDecisions() {
-        return 
this.decisions.values().stream().collect(Collectors.toCollection(LinkedHashSet::new));
+        return new LinkedHashSet<>(this.decisions.values());
     }
 
     @Override
@@ -265,7 +262,7 @@ public class DMNModelImpl
     }
 
     public void addDecisionService(DecisionServiceNode dsn) {
-        decisionServices.put(computeDRGElementModelLocalId(dsn), dsn);
+        computeDRGElementModelLocalId(dsn).forEach(id -> 
decisionServices.put(id, dsn));
     }
 
     public DecisionServiceNode getDecisionServiceById(String id) {
@@ -286,11 +283,11 @@ public class DMNModelImpl
 
     @Override
     public Collection<DecisionServiceNode> getDecisionServices() {
-        return 
this.decisionServices.values().stream().collect(Collectors.toCollection(LinkedHashSet::new));
+        return new LinkedHashSet<>(this.decisionServices.values());
     }
 
     public void addBusinessKnowledgeModel(BusinessKnowledgeModelNode bkm) {
-        bkms.put(computeDRGElementModelLocalId(bkm), bkm);
+        computeDRGElementModelLocalId(bkm).forEach(id -> bkms.put(id, bkm));
     }
 
     @Override
diff --git 
a/kie-dmn/kie-dmn-core/src/main/java/org/kie/dmn/core/impl/DMNRuntimeImpl.java 
b/kie-dmn/kie-dmn-core/src/main/java/org/kie/dmn/core/impl/DMNRuntimeImpl.java
index 85ccf42b78..12a3eebea5 100644
--- 
a/kie-dmn/kie-dmn-core/src/main/java/org/kie/dmn/core/impl/DMNRuntimeImpl.java
+++ 
b/kie-dmn/kie-dmn-core/src/main/java/org/kie/dmn/core/impl/DMNRuntimeImpl.java
@@ -461,7 +461,10 @@ public class DMNRuntimeImpl
     private boolean isNodeValueDefined(DMNResultImpl result, DMNNode 
callerNode, DMNNode node) {
         if 
(node.getModelNamespace().equals(result.getContext().scopeNamespace().orElse(result.getModel().getNamespace())))
 {
             return result.getContext().isDefined(node.getName());
-        } else {
+        }  else if (isInUnnamedImport(node, (DMNModelImpl) result.getModel())) 
{
+            // the node is an unnamed import
+            return result.getContext().isDefined(node.getName());
+    } else {
             Optional<String> importAlias = 
callerNode.getModelImportAliasFor(node.getModelNamespace(), 
node.getModelName());
             if (importAlias.isPresent()) {
                 Object aliasContext = 
result.getContext().get(importAlias.get());
diff --git 
a/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/DMNCompilerTest.java 
b/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/DMNCompilerTest.java
index c52ba8da6d..55ef34f927 100644
--- a/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/DMNCompilerTest.java
+++ b/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/DMNCompilerTest.java
@@ -273,8 +273,18 @@ public class DMNCompilerTest extends BaseVariantTest {
     }
 
     @Test
-    public void testEmptyNamedModelImport() {
-        final DMNRuntime runtime = 
createRuntimeWithAdditionalResources("valid_models/DMNv1_5/Importing_EmptyNamed_Model.dmn",
+    public void testEmptyNamedModelImportWithHrefNamespace() {
+        
commonValidateUnnamedImport("valid_models/DMNv1_5/Importing_EmptyNamed_Model_With_Href_Namespace.dmn",
 "valid_models/DMNv1_5/Imported_Model_Unamed.dmn");
+    }
+
+    @Test
+    public void testEmptyNamedModelImportWithoutHrefNamespace() {
+        
commonValidateUnnamedImport("valid_models/DMNv1_5/Importing_EmptyNamed_Model_Without_Href_Namespace.dmn",
 "valid_models/DMNv1_5/Imported_Model_Unamed.dmn");
+    }
+
+    @Test
+    public void testOverridingEmptyNamedModelImport() {
+        final DMNRuntime runtime = 
createRuntimeWithAdditionalResources("valid_models/DMNv1_5/Importing_OverridingEmptyNamed_Model.dmn",
                                                                         
this.getClass(),
                                                                         
"valid_models/DMNv1_5/Imported_Model_Unamed.dmn");
 
@@ -286,7 +296,7 @@ public class DMNCompilerTest extends BaseVariantTest {
         }
 
         final DMNModel importingModel = 
runtime.getModel("http://www.trisotech.com/dmn/definitions/_f79aa7a4-f9a3-410a-ac95-bea496edabgc";,
-                                                   "Importing empty-named 
Model");
+                                                         "Importing 
empty-named Model");
         assertThat(importingModel).isNotNull();
         for (final DMNMessage message : importingModel.getMessages()) {
             LOG.debug("{}", message);
@@ -319,10 +329,26 @@ public class DMNCompilerTest extends BaseVariantTest {
     }
 
     @Test
-    public void testOverridingEmptyNamedModelImport() {
-        final DMNRuntime runtime = 
createRuntimeWithAdditionalResources("valid_models/DMNv1_5/Importing_OverridingEmptyNamed_Model.dmn",
+    public void testWrongComparisonOps() {
+        final DMNRuntime runtime = createRuntime("WrongComparisonOps.dmn", 
this.getClass());
+        final DMNModel dmnModel = 
runtime.getModel("http://www.trisotech.com/definitions/_a937d093-86d3-4306-8db8-1e7a33588b68";,
 "Drawing 1");
+        assertThat(dmnModel).isNotNull();
+        
assertThat(dmnModel.hasErrors()).as(DMNRuntimeUtil.formatMessages(dmnModel.getMessages())).isFalse();
+        
assertThat(dmnModel.getMessages()).as(DMNRuntimeUtil.formatMessages(dmnModel.getMessages())).hasSize(4);
+        
assertThat(dmnModel.getMessages(DMNMessage.Severity.WARN)).as(DMNRuntimeUtil.formatMessages(dmnModel.getMessages())).hasSize(4);
+        assertThat(dmnModel.getMessages(DMNMessage.Severity.WARN)
+                           .stream()
+                           .filter(m -> 
m.getSourceId().equals("_d72d6fab-1e67-4fe7-9c12-54800d6fe294") ||
+                                        
m.getSourceId().equals("_2390dd99-094d-4f97-aecc-9cccb697ce05") ||
+                                        
m.getSourceId().equals("_0c292d34-498e-4b08-ae99-3c694197b69f") ||
+                                        
m.getSourceId().equals("_21c7d800-b806-4b2e-9a10-00828de7f2d2"))
+                           
.count()).as(DMNRuntimeUtil.formatMessages(dmnModel.getMessages())).isEqualTo(4L);
+    }
+
+    private void commonValidateUnnamedImport(String importingModelRef, String 
importedModelRef) {
+        final DMNRuntime runtime = 
createRuntimeWithAdditionalResources(importingModelRef,
                                                                         
this.getClass(),
-                                                                        
"valid_models/DMNv1_5/Imported_Model_Unamed.dmn");
+                                                                        
importedModelRef);
 
         final DMNModel importedModel = 
runtime.getModel("http://www.trisotech.com/dmn/definitions/_f27bb64b-6fc7-4e1f-9848-11ba35e0df44";,
                                                         "Imported Model");
@@ -363,21 +389,4 @@ public class DMNCompilerTest extends BaseVariantTest {
             assertThat(allProperties).containsEntry("Imported Greeting", 
"Hello John!");
         }
     }
-
-    @Test
-    public void testWrongComparisonOps() {
-        final DMNRuntime runtime = createRuntime("WrongComparisonOps.dmn", 
this.getClass());
-        final DMNModel dmnModel = 
runtime.getModel("http://www.trisotech.com/definitions/_a937d093-86d3-4306-8db8-1e7a33588b68";,
 "Drawing 1");
-        assertThat(dmnModel).isNotNull();
-        
assertThat(dmnModel.hasErrors()).as(DMNRuntimeUtil.formatMessages(dmnModel.getMessages())).isFalse();
-        
assertThat(dmnModel.getMessages()).as(DMNRuntimeUtil.formatMessages(dmnModel.getMessages())).hasSize(4);
-        
assertThat(dmnModel.getMessages(DMNMessage.Severity.WARN)).as(DMNRuntimeUtil.formatMessages(dmnModel.getMessages())).hasSize(4);
-        assertThat(dmnModel.getMessages(DMNMessage.Severity.WARN)
-                           .stream()
-                           .filter(m -> 
m.getSourceId().equals("_d72d6fab-1e67-4fe7-9c12-54800d6fe294") ||
-                                        
m.getSourceId().equals("_2390dd99-094d-4f97-aecc-9cccb697ce05") ||
-                                        
m.getSourceId().equals("_0c292d34-498e-4b08-ae99-3c694197b69f") ||
-                                        
m.getSourceId().equals("_21c7d800-b806-4b2e-9a10-00828de7f2d2"))
-                           
.count()).as(DMNRuntimeUtil.formatMessages(dmnModel.getMessages())).isEqualTo(4L);
-    }
 }
diff --git 
a/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/compiler/UnnamedImportUtilsTest.java
 
b/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/compiler/UnnamedImportUtilsTest.java
index e4e9309a97..2f317557a5 100644
--- 
a/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/compiler/UnnamedImportUtilsTest.java
+++ 
b/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/compiler/UnnamedImportUtilsTest.java
@@ -26,23 +26,15 @@ import static 
org.kie.dmn.core.compiler.UnnamedImportUtils.isInUnnamedImport;
 public class UnnamedImportUtilsTest {
 
     @Test
-    public void isInUnnamedImportTrue() {
-        final DMNRuntime runtime = 
DMNRuntimeUtil.createRuntimeWithAdditionalResources("valid_models/DMNv1_5/Importing_EmptyNamed_Model"
 +
-                                                                               
                ".dmn",
-                                                                               
        this.getClass(),
-                                                                               
        "valid_models/DMNv1_5/Imported_Model_Unamed.dmn");
+    public void isInUnnamedImportTrueWithHrefNamespace() {
+        
commonIsInUnnamedImportTrue("valid_models/DMNv1_5/Importing_EmptyNamed_Model_With_Href_Namespace.dmn",
+                                    
"valid_models/DMNv1_5/Imported_Model_Unamed.dmn");
+    }
 
-        final DMNModel importedModel = 
runtime.getModel("http://www.trisotech.com/dmn/definitions/_f27bb64b-6fc7-4e1f-9848-11ba35e0df44";,
-                                                        "Imported Model");
-        assertThat(importedModel).isNotNull();
-        final DMNModelImpl importingModel = 
(DMNModelImpl)runtime.getModel("http://www.trisotech.com/dmn/definitions/_f79aa7a4-f9a3-410a-ac95-bea496edabgc";,
-                                                             "Importing 
empty-named Model");
-        assertThat(importingModel).isNotNull();
-        importedModel.getDecisions().forEach(node -> 
assertTrue(isInUnnamedImport(node, importingModel)));
-        importedModel.getBusinessKnowledgeModels().forEach(node -> 
assertTrue(isInUnnamedImport(node, importingModel)));
-        importedModel.getDecisionServices().forEach(node -> 
assertTrue(isInUnnamedImport(node, importingModel)));
-        importedModel.getInputs().forEach(node -> 
assertTrue(isInUnnamedImport(node, importingModel)));
-        importedModel.getItemDefinitions().forEach(node -> 
assertTrue(isInUnnamedImport(node, importingModel)));
+    @Test
+    public void isInUnnamedImportTrueWithoutHrefNamespace() {
+        
commonIsInUnnamedImportTrue("valid_models/DMNv1_5/Importing_EmptyNamed_Model_Without_Href_Namespace.dmn",
+                                    
"valid_models/DMNv1_5/Imported_Model_Unamed.dmn");
     }
 
     @Test
@@ -81,10 +73,42 @@ public class UnnamedImportUtilsTest {
     }
 
     @Test
-    public void addIfNotPresentFalse() throws IOException {
-        final DMNRuntime runtime = 
DMNRuntimeUtil.createRuntimeWithAdditionalResources("valid_models/DMNv1_5/Importing_EmptyNamed_Model.dmn",
+    public void addIfNotPresentFalseWithHrefNamespace() throws IOException {
+        
commonAddIfNotPresentFalse("valid_models/DMNv1_5/Importing_EmptyNamed_Model_With_Href_Namespace.dmn",
+                                    
"valid_models/DMNv1_5/Imported_Model_Unamed.dmn");
+    }
+
+    @Test
+    public void addIfNotPresentFalseWithoutHrefNamespace() throws IOException {
+        
commonAddIfNotPresentFalse("valid_models/DMNv1_5/Importing_EmptyNamed_Model_Without_Href_Namespace.dmn",
+                                    
"valid_models/DMNv1_5/Imported_Model_Unamed.dmn");
+    }
+
+    private void commonIsInUnnamedImportTrue(String importingModelRef, String 
importedModelRef) {
+        final DMNRuntime runtime = 
DMNRuntimeUtil.createRuntimeWithAdditionalResources(importingModelRef,
                                                                                
        this.getClass(),
-                                                                               
        "valid_models/DMNv1_5/Imported_Model_Unamed.dmn");
+                                                                               
        importedModelRef);
+
+        final DMNModel importedModel = 
runtime.getModel("http://www.trisotech.com/dmn/definitions/_f27bb64b-6fc7-4e1f"; 
+
+                                                                
"-9848-11ba35e0df44",
+                                                        "Imported Model");
+        assertThat(importedModel).isNotNull();
+        final DMNModelImpl importingModel = (DMNModelImpl) 
runtime.getModel("http://www.trisotech"; +
+                                                                               
     ".com/dmn/definitions/_f79aa7a4" +
+                                                                               
     "-f9a3-410a-ac95-bea496edabgc",
+                                                                            
"Importing empty-named Model");
+        assertThat(importingModel).isNotNull();
+        importedModel.getDecisions().forEach(node -> 
assertTrue(isInUnnamedImport(node, importingModel)));
+        importedModel.getBusinessKnowledgeModels().forEach(node -> 
assertTrue(isInUnnamedImport(node, importingModel)));
+        importedModel.getDecisionServices().forEach(node -> 
assertTrue(isInUnnamedImport(node, importingModel)));
+        importedModel.getInputs().forEach(node -> 
assertTrue(isInUnnamedImport(node, importingModel)));
+        importedModel.getItemDefinitions().forEach(node -> 
assertTrue(isInUnnamedImport(node, importingModel)));
+    }
+
+    private void commonAddIfNotPresentFalse(String importingModelRef, String 
importedModelRef) throws IOException {
+        final DMNRuntime runtime = 
DMNRuntimeUtil.createRuntimeWithAdditionalResources(importingModelRef,
+                                                                               
        this.getClass(),
+                                                                               
        importedModelRef);
         final DMNModelImpl importingModel = 
(DMNModelImpl)runtime.getModel("http://www.trisotech.com/dmn/definitions/_f79aa7a4-f9a3-410a-ac95-bea496edabgc";,
                                                                            
"Importing empty-named Model");
         assertThat(importingModel).isNotNull();
diff --git 
a/kie-dmn/kie-dmn-test-resources/src/test/resources/valid_models/DMNv1_5/Imported_Model_Unamed.dmn
 
b/kie-dmn/kie-dmn-test-resources/src/test/resources/valid_models/DMNv1_5/Imported_Model_Unamed.dmn
index 2c900040e2..e8a79c6e53 100644
--- 
a/kie-dmn/kie-dmn-test-resources/src/test/resources/valid_models/DMNv1_5/Imported_Model_Unamed.dmn
+++ 
b/kie-dmn/kie-dmn-test-resources/src/test/resources/valid_models/DMNv1_5/Imported_Model_Unamed.dmn
@@ -23,7 +23,11 @@
       <dmn:typeRef>number</dmn:typeRef>
     </dmn:itemComponent>
   </dmn:itemDefinition>
-
+     <dmn:inputData id="_51190b90-924d-479b-872b-4c6f3486c2cb" name="A Person">
+        <dmn:variable id="_44a44de4-c0ab-408e-9ba9-983d8ec2f6b5"
+                           name="A Person"
+                           typeRef="tPerson"/>
+     </dmn:inputData>
   <dmn:inputData id="_51190b90-924d-479b-872b-4c6f3486c2de" name="An Imported 
Person">
     <dmn:variable id="_44a44de4-c0ab-408e-9ba9-983d8ec2f6c6"
                        name="An Imported Person"
diff --git 
a/kie-dmn/kie-dmn-test-resources/src/test/resources/valid_models/DMNv1_5/Importing_EmptyNamed_Model.dmn
 
b/kie-dmn/kie-dmn-test-resources/src/test/resources/valid_models/DMNv1_5/Importing_EmptyNamed_Model_With_Href_Namespace.dmn
similarity index 89%
copy from 
kie-dmn/kie-dmn-test-resources/src/test/resources/valid_models/DMNv1_5/Importing_EmptyNamed_Model.dmn
copy to 
kie-dmn/kie-dmn-test-resources/src/test/resources/valid_models/DMNv1_5/Importing_EmptyNamed_Model_With_Href_Namespace.dmn
index 6bcd6e1838..de77003182 100644
--- 
a/kie-dmn/kie-dmn-test-resources/src/test/resources/valid_models/DMNv1_5/Importing_EmptyNamed_Model.dmn
+++ 
b/kie-dmn/kie-dmn-test-resources/src/test/resources/valid_models/DMNv1_5/Importing_EmptyNamed_Model_With_Href_Namespace.dmn
@@ -23,17 +23,12 @@
                     drools:modelName="Imported Model"
                     
triso:fileId="eyJmIjp7InNrdSI6IjEwMmM0MDQ3LTg5NjctNGI3ZS1hODgxLTBhY2ZkNWJjOTAwMiIsIm5hbWUiOiJJbXBvcnRlZCBNb2RlbCJ9fQ=="
                     triso:fileName="Edson Tirelli/Imported Model"/>
-   <dmn:inputData id="_51190b90-924d-479b-872b-4c6f3486c2cb" name="A Person">
-      <dmn:variable id="_44a44de4-c0ab-408e-9ba9-983d8ec2f6b5"
-                         name="A Person"
-                         typeRef="tPerson"/>
-   </dmn:inputData>
    <dmn:decision id="_bf4a9628-15ae-4887-97f2-7099426cb60f" name="Local 
Greeting">
       <dmn:variable id="_ecc6e0bb-a0af-4e99-aac6-5b8bed09c538"
                          name="Local Greeting"
                          typeRef="string"/>
       <dmn:informationRequirement>
-         <dmn:requiredInput href="#_51190b90-924d-479b-872b-4c6f3486c2cb"/>
+         <dmn:requiredInput 
href="http://www.trisotech.com/dmn/definitions/_f27bb64b-6fc7-4e1f-9848-11ba35e0df44#_51190b90-924d-479b-872b-4c6f3486c2cb"/>
       </dmn:informationRequirement>
      <dmn:knowledgeRequirement>
        <dmn:requiredKnowledge href="#_42543811-b499-4608-b784-6c6f294b1c59"/>
@@ -50,10 +45,10 @@
                        name="Imported Greeting"
                        typeRef="string"/>
     <dmn:informationRequirement>
-      <dmn:requiredInput href="#_51190b90-924d-479b-872b-4c6f3486c2cb"/>
+      <dmn:requiredInput 
href="http://www.trisotech.com/dmn/definitions/_f27bb64b-6fc7-4e1f-9848-11ba35e0df44#_51190b90-924d-479b-872b-4c6f3486c2cb"/>
     </dmn:informationRequirement>
     <dmn:knowledgeRequirement>
-      <dmn:requiredKnowledge href="#_32543811-b499-4608-b784-6c6f294b1c58"/>
+      <dmn:requiredKnowledge 
href="http://www.trisotech.com/dmn/definitions/_f27bb64b-6fc7-4e1f-9848-11ba35e0df44#_32543811-b499-4608-b784-6c6f294b1c58"/>
     </dmn:knowledgeRequirement>
     <dmn:literalExpression 
xmlns:triso="http://www.trisotech.com/2015/triso/modeling";
                                 id="_d7e6836b-8491-487a-a653-5735daa85be2"
diff --git 
a/kie-dmn/kie-dmn-test-resources/src/test/resources/valid_models/DMNv1_5/Importing_EmptyNamed_Model.dmn
 
b/kie-dmn/kie-dmn-test-resources/src/test/resources/valid_models/DMNv1_5/Importing_EmptyNamed_Model_Without_Href_Namespace.dmn
similarity index 94%
rename from 
kie-dmn/kie-dmn-test-resources/src/test/resources/valid_models/DMNv1_5/Importing_EmptyNamed_Model.dmn
rename to 
kie-dmn/kie-dmn-test-resources/src/test/resources/valid_models/DMNv1_5/Importing_EmptyNamed_Model_Without_Href_Namespace.dmn
index 6bcd6e1838..eb567f30bb 100644
--- 
a/kie-dmn/kie-dmn-test-resources/src/test/resources/valid_models/DMNv1_5/Importing_EmptyNamed_Model.dmn
+++ 
b/kie-dmn/kie-dmn-test-resources/src/test/resources/valid_models/DMNv1_5/Importing_EmptyNamed_Model_Without_Href_Namespace.dmn
@@ -23,11 +23,6 @@
                     drools:modelName="Imported Model"
                     
triso:fileId="eyJmIjp7InNrdSI6IjEwMmM0MDQ3LTg5NjctNGI3ZS1hODgxLTBhY2ZkNWJjOTAwMiIsIm5hbWUiOiJJbXBvcnRlZCBNb2RlbCJ9fQ=="
                     triso:fileName="Edson Tirelli/Imported Model"/>
-   <dmn:inputData id="_51190b90-924d-479b-872b-4c6f3486c2cb" name="A Person">
-      <dmn:variable id="_44a44de4-c0ab-408e-9ba9-983d8ec2f6b5"
-                         name="A Person"
-                         typeRef="tPerson"/>
-   </dmn:inputData>
    <dmn:decision id="_bf4a9628-15ae-4887-97f2-7099426cb60f" name="Local 
Greeting">
       <dmn:variable id="_ecc6e0bb-a0af-4e99-aac6-5b8bed09c538"
                          name="Local Greeting"
diff --git 
a/kie-dmn/kie-dmn-validation/src/test/java/org/kie/dmn/validation/v1_5/DMN15ValidationsTest.java
 
b/kie-dmn/kie-dmn-validation/src/test/java/org/kie/dmn/validation/v1_5/DMN15ValidationsTest.java
index 57a94b747a..77f7aebe50 100644
--- 
a/kie-dmn/kie-dmn-validation/src/test/java/org/kie/dmn/validation/v1_5/DMN15ValidationsTest.java
+++ 
b/kie-dmn/kie-dmn-validation/src/test/java/org/kie/dmn/validation/v1_5/DMN15ValidationsTest.java
@@ -75,14 +75,15 @@ public class DMN15ValidationsTest {
     }
 
     @Test
-    public void unnamedImportValidation() {
-        String importedModelFileName = 
"valid_models/DMNv1_5/Imported_Model_Unamed.dmn";
-        String importingModelFileName = 
"valid_models/DMNv1_5/Importing_EmptyNamed_Model.dmn";
-        String modelName = "Importing empty-named Model";
-        String modelNamespace = 
"http://www.trisotech.com/dmn/definitions/_f79aa7a4-f9a3-410a-ac95-bea496edabgc";;
-        validate(importedModelFileName, importingModelFileName);
-        Map<String, Object> inputData = Map.of("A Person", 
prototype(entry("name", "Hugh"), entry("age", 32)));
-        evaluate(modelNamespace, modelName, importingModelFileName, inputData, 
importedModelFileName);
+    public void unnamedImportValidationWithHrefNamespace() {
+        
commonUnnamedImportValidation("valid_models/DMNv1_5/Importing_EmptyNamed_Model_With_Href_Namespace.dmn",
+                                      
"valid_models/DMNv1_5/Imported_Model_Unamed.dmn");
+    }
+
+    @Test
+    public void unnamedImportValidationWithoutHrefNamespace() {
+        
commonUnnamedImportValidation("valid_models/DMNv1_5/Importing_EmptyNamed_Model_Without_Href_Namespace.dmn",
+                                      
"valid_models/DMNv1_5/Imported_Model_Unamed.dmn");
     }
 
     @Test
@@ -131,6 +132,14 @@ public class DMN15ValidationsTest {
         evaluate(modelNamespace, modelName, modelFileName, inputData);
     }
 
+    private void commonUnnamedImportValidation(String importingModelRef, 
String importedModelRef) {
+        String modelName = "Importing empty-named Model";
+        String modelNamespace = 
"http://www.trisotech.com/dmn/definitions/_f79aa7a4-f9a3-410a-ac95-bea496edabgc";;
+        validate(importingModelRef, importedModelRef);
+        Map<String, Object> inputData = Map.of("A Person", 
prototype(entry("name", "Hugh"), entry("age", 32)));
+        evaluate(modelNamespace, modelName, importingModelRef, inputData, 
importedModelRef);
+    }
+
     private void validate(String modelFileName, String... otherFileNames) {
         List<String> allModelsFileNames = new ArrayList<>();
         allModelsFileNames.add(modelFileName);


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

Reply via email to