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 810dba0b17 Incubator kie issues#1973 (#6367)
810dba0b17 is described below

commit 810dba0b1798c2aa44cc601c6979f7e8e3cc95f0
Author: Gabriele Cardosi <[email protected]>
AuthorDate: Tue Jul 1 09:48:47 2025 +0200

    Incubator kie issues#1973 (#6367)
    
    * [incubator-kie-issues#1973] Refactoring DMN efesto compiler services and 
related tests
    
    * [incubator-kie-issues#1973] Propagating validation messages inside 
GeneratedModelResource
    
    * [incubator-kie-issues#1973] Fixing serialization issue
    
    * [incubator-kie-issues#1973] Clean up as per PR suggestion
    
    ---------
    
    Co-authored-by: Gabriele-Cardosi <[email protected]>
---
 .../common/api/model/GeneratedModelResource.java   |  15 ++-
 .../model/EfestoCallableOutputModelContainer.java  |  11 +-
 .../core/utils/CompilationManagerUtils.java        |   5 +-
 .../org/kie/dmn/api/identifiers/DmnIdFactory.java  |   5 -
 .../identifiers/LocalCompilationSourceIdDmn.java   |  11 +-
 .../compiler/model/DmnCompilationContext.java      |  33 +++++-
 .../compiler/model/DmnCompilationContextImpl.java  |  59 +++++++++-
 .../compiler/model/EfestoCallableOutputDMN.java    |  16 ++-
 .../service/AbstractKieCompilerServiceDMN.java     | 116 +++++++++++++++++-
 .../service/KieCompilerServiceDMNFile.java         |  76 ++++--------
 .../service/KieCompilerServiceDMNFileSet.java      |  62 ++--------
 .../service/KieCompilerServiceDMNInputStream.java  |  56 +++------
 .../service/KieCompilerServiceDMNResourceSet.java  |  62 ++--------
 .../service/KieCompilerServiceDMNString.java       |  59 ++++------
 .../efesto/compiler/utils/DmnCompilerUtils.java    |  15 ++-
 .../service/AbstractKieCompilerServiceDMNTest.java | 129 ++++++++++++++++++++-
 .../service/KieCompilerServiceDMNFileSetTest.java  |  56 +++++++++
 .../service/KieCompilerServiceDMNFileTest.java     | 100 +---------------
 .../KieCompilerServiceDMNInputStreamTest.java      |  61 ++--------
 .../service/KieCompilerServiceDMNResourceTest.java |  80 ++-----------
 .../service/KieCompilerServiceDMNStringTest.java   |  53 +++++++++
 21 files changed, 590 insertions(+), 490 deletions(-)

diff --git 
a/efesto/efesto-core/efesto-common-api/src/main/java/org/kie/efesto/common/api/model/GeneratedModelResource.java
 
b/efesto/efesto-core/efesto-common-api/src/main/java/org/kie/efesto/common/api/model/GeneratedModelResource.java
index 32958a7b78..13c5831dcd 100644
--- 
a/efesto/efesto-core/efesto-common-api/src/main/java/org/kie/efesto/common/api/model/GeneratedModelResource.java
+++ 
b/efesto/efesto-core/efesto-common-api/src/main/java/org/kie/efesto/common/api/model/GeneratedModelResource.java
@@ -25,8 +25,8 @@ import org.kie.efesto.common.api.identifiers.ModelLocalUriId;
 /**
  * A <code>GeneratedResource</code> meant to be directly executed, with a 
<b>full reference name (frn)</b> identifier
  */
-@JsonIgnoreProperties(value = { "compiledModel" })
-public final class GeneratedModelResource<T> implements GeneratedResource {
+@JsonIgnoreProperties(value = { "compiledModel", "additionalInfo" })
+public final class GeneratedModelResource<T, E> implements GeneratedResource {
 
 
     private static final long serialVersionUID = 6588314882989626752L;
@@ -40,14 +40,17 @@ public final class GeneratedModelResource<T> implements 
GeneratedResource {
 
     private final T compiledModel;
 
+    private final E additionalInfo;
+
     public GeneratedModelResource() {
-        this(null, null, null);
+        this(null, null, null, null);
     }
 
-    public GeneratedModelResource(ModelLocalUriId modelLocalUriId, String 
modelSource, T compiledModel) {
+    public GeneratedModelResource(ModelLocalUriId modelLocalUriId, String 
modelSource, T compiledModel, E additionalInfo) {
         this.modelLocalUriId = modelLocalUriId;
         this.modelSource = modelSource;
         this.compiledModel = compiledModel;
+        this.additionalInfo = additionalInfo;
     }
 
     public ModelLocalUriId getModelLocalUriId() {
@@ -62,6 +65,10 @@ public final class GeneratedModelResource<T> implements 
GeneratedResource {
         return compiledModel;
     }
 
+    public E getAdditionalInfo() {
+        return additionalInfo;
+    }
+
     @Override
     public int hashCode() {
         return Objects.hash(modelLocalUriId);
diff --git 
a/efesto/efesto-core/efesto-compilation-manager/efesto-compilation-manager-api/src/main/java/org/kie/efesto/compilationmanager/api/model/EfestoCallableOutputModelContainer.java
 
b/efesto/efesto-core/efesto-compilation-manager/efesto-compilation-manager-api/src/main/java/org/kie/efesto/compilationmanager/api/model/EfestoCallableOutputModelContainer.java
index c7ebd7e676..2632dff8d1 100644
--- 
a/efesto/efesto-core/efesto-compilation-manager/efesto-compilation-manager-api/src/main/java/org/kie/efesto/compilationmanager/api/model/EfestoCallableOutputModelContainer.java
+++ 
b/efesto/efesto-core/efesto-compilation-manager/efesto-compilation-manager-api/src/main/java/org/kie/efesto/compilationmanager/api/model/EfestoCallableOutputModelContainer.java
@@ -23,16 +23,19 @@ import 
org.kie.efesto.common.api.identifiers.ModelLocalUriId;
 /**
  * A <code>EfestoCallableOutput</code> containing model source (e.g. for DMN 
execution)
  */
-public abstract class EfestoCallableOutputModelContainer<T> implements 
EfestoCallableOutput {
+public abstract class EfestoCallableOutputModelContainer<T, E> implements 
EfestoCallableOutput {
 
     private final ModelLocalUriId modelLocalUriId;
     private final String modelSource;
     private final T compiledModel;
+    private final E additionalInfo;
 
-    protected EfestoCallableOutputModelContainer(ModelLocalUriId 
modelLocalUriId, String modelSource, T compiledModel) {
+
+    protected EfestoCallableOutputModelContainer(ModelLocalUriId 
modelLocalUriId, String modelSource, T compiledModel, E additionalInfo) {
         this.modelLocalUriId = modelLocalUriId;
         this.modelSource = modelSource;
         this.compiledModel = compiledModel;
+        this.additionalInfo = additionalInfo;
     }
 
     @Override
@@ -47,4 +50,8 @@ public abstract class EfestoCallableOutputModelContainer<T> 
implements EfestoCal
     public T getCompiledModel() {
         return compiledModel;
     }
+
+    public E getAdditionalInfo() {
+        return additionalInfo;
+    }
 }
diff --git 
a/efesto/efesto-core/efesto-compilation-manager/efesto-compilation-manager-core/src/main/java/org/kie/efesto/compilationmanager/core/utils/CompilationManagerUtils.java
 
b/efesto/efesto-core/efesto-compilation-manager/efesto-compilation-manager-core/src/main/java/org/kie/efesto/compilationmanager/core/utils/CompilationManagerUtils.java
index 65fd258367..8b2f15e726 100644
--- 
a/efesto/efesto-core/efesto-compilation-manager/efesto-compilation-manager-core/src/main/java/org/kie/efesto/compilationmanager/core/utils/CompilationManagerUtils.java
+++ 
b/efesto/efesto-core/efesto-compilation-manager/efesto-compilation-manager-core/src/main/java/org/kie/efesto/compilationmanager/core/utils/CompilationManagerUtils.java
@@ -153,7 +153,10 @@ public class CompilationManagerUtils {
         } else if (compilationOutput instanceof 
EfestoCallableOutputClassesContainer efestoCallableOutputClassesContainer) {
             return new 
GeneratedExecutableResource(efestoCallableOutputClassesContainer.getModelLocalUriId(),
 efestoCallableOutputClassesContainer.getFullClassNames());
         } else if (compilationOutput instanceof 
EfestoCallableOutputModelContainer efestoCallableOutputModelContainer) {
-            return new 
GeneratedModelResource(efestoCallableOutputModelContainer.getModelLocalUriId(), 
efestoCallableOutputModelContainer.getModelSource(), 
efestoCallableOutputModelContainer.getCompiledModel());
+            return new 
GeneratedModelResource(efestoCallableOutputModelContainer.getModelLocalUriId(),
+                                              
efestoCallableOutputModelContainer.getModelSource(),
+                                              
efestoCallableOutputModelContainer.getCompiledModel(),
+                                              
efestoCallableOutputModelContainer.getAdditionalInfo());
         } else {
             throw new KieCompilerServiceException("Unmanaged type " + 
compilationOutput.getClass().getName());
         }
diff --git 
a/kie-dmn/kie-dmn-efesto-api/src/main/java/org/kie/dmn/api/identifiers/DmnIdFactory.java
 
b/kie-dmn/kie-dmn-efesto-api/src/main/java/org/kie/dmn/api/identifiers/DmnIdFactory.java
index f849f241d9..4ac4de19fe 100644
--- 
a/kie-dmn/kie-dmn-efesto-api/src/main/java/org/kie/dmn/api/identifiers/DmnIdFactory.java
+++ 
b/kie-dmn/kie-dmn-efesto-api/src/main/java/org/kie/dmn/api/identifiers/DmnIdFactory.java
@@ -18,8 +18,6 @@
  */
 package org.kie.dmn.api.identifiers;
 
-import org.kie.efesto.common.api.identifiers.LocalUri;
-
 public class DmnIdFactory implements DmnComponentRoot {
 
     public LocalComponentIdDmn get(String fileName, String modelName) {
@@ -27,9 +25,6 @@ public class DmnIdFactory implements DmnComponentRoot {
     }
 
     public LocalCompilationSourceIdDmn get(String fileName) {
-        if (fileName.contains(LocalUri.SLASH)) {
-            fileName = fileName.substring(fileName.lastIndexOf(LocalUri.SLASH) 
+ 1);
-        }
         if (fileName.contains(".")) {
             fileName = fileName.substring(0, fileName.lastIndexOf('.'));
         }
diff --git 
a/kie-dmn/kie-dmn-efesto-api/src/main/java/org/kie/dmn/api/identifiers/LocalCompilationSourceIdDmn.java
 
b/kie-dmn/kie-dmn-efesto-api/src/main/java/org/kie/dmn/api/identifiers/LocalCompilationSourceIdDmn.java
index 177a2f332c..5ba1e9bd50 100644
--- 
a/kie-dmn/kie-dmn-efesto-api/src/main/java/org/kie/dmn/api/identifiers/LocalCompilationSourceIdDmn.java
+++ 
b/kie-dmn/kie-dmn-efesto-api/src/main/java/org/kie/dmn/api/identifiers/LocalCompilationSourceIdDmn.java
@@ -32,7 +32,7 @@ public class LocalCompilationSourceIdDmn extends 
ModelLocalUriId implements Id {
     private final String fileName;
 
     public LocalCompilationSourceIdDmn(String fileName) {
-        super(LocalUri.Root.append(PREFIX).append(fileName));
+        super(getLocalUri(fileName));
         this.fileName = fileName;
     }
 
@@ -60,4 +60,13 @@ public class LocalCompilationSourceIdDmn extends 
ModelLocalUriId implements Id {
         return super.hashCode();
     }
 
+    static LocalUri getLocalUri(String fileName) {
+        LocalUri toReturn = LocalUri.Root.append(PREFIX);
+        String[] parts = fileName.split(LocalUri.SLASH);
+        for (String part : parts) {
+            toReturn = toReturn.append(part);
+        }
+        return toReturn;
+    }
+
 }
diff --git 
a/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/model/DmnCompilationContext.java
 
b/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/model/DmnCompilationContext.java
index 305c7b2b9f..f8e4332569 100644
--- 
a/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/model/DmnCompilationContext.java
+++ 
b/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/model/DmnCompilationContext.java
@@ -21,9 +21,9 @@ package org.kie.dmn.efesto.compiler.model;
 import java.util.Set;
 import org.kie.dmn.core.compiler.DMNProfile;
 import org.kie.dmn.core.compiler.RuntimeTypeCheckOption;
+import org.kie.dmn.validation.DMNValidator;
 import org.kie.efesto.common.api.model.EfestoCompilationContext;
 import 
org.kie.efesto.compilationmanager.core.model.EfestoCompilationContextImpl;
-import 
org.kie.efesto.compilationmanager.core.model.EfestoCompilationContextUtils;
 import org.kie.internal.builder.KnowledgeBuilderConfiguration;
 import org.kie.memorycompiler.KieMemoryCompiler;
 
@@ -31,26 +31,47 @@ import org.kie.memorycompiler.KieMemoryCompiler;
 public interface DmnCompilationContext extends EfestoCompilationContext {
 
     static DmnCompilationContext buildWithParentClassLoader(ClassLoader 
parentClassLoader) {
-        return new DmnCompilationContextImpl(new 
KieMemoryCompiler.MemoryCompilerClassLoader(parentClassLoader));
+        return DmnCompilationContextImpl.builder(new 
KieMemoryCompiler.MemoryCompilerClassLoader(parentClassLoader)).build();
     }
 
     static DmnCompilationContext 
buildWithMemoryCompilerClassLoader(KieMemoryCompiler.MemoryCompilerClassLoader 
memoryCompilerClassLoader) {
-        return new DmnCompilationContextImpl(memoryCompilerClassLoader);
+        return 
DmnCompilationContextImpl.builder(memoryCompilerClassLoader).build();
     }
 
     static DmnCompilationContext 
buildWithEfestoCompilationContext(EfestoCompilationContextImpl context) {
-        return (DmnCompilationContext) 
EfestoCompilationContextUtils.buildFromContext(context, 
DmnCompilationContextImpl.class);
+        return DmnCompilationContextImpl.builder(context)
+                .build();
     }
 
-    static DmnCompilationContext buildWithParentClassLoader(ClassLoader 
parentClassLoader, Set<DMNProfile> customDMNProfiles,
+    static DmnCompilationContext 
buildWithEfestoCompilationContext(EfestoCompilationContextImpl context,
+                                                                   
Set<DMNProfile> customDMNProfiles,
+                                                                   
Set<DMNValidator.Validation> validations,
+                                                                   
RuntimeTypeCheckOption runtimeTypeCheckOption) {
+        return DmnCompilationContextImpl.builder(context)
+                .withCustomDMNProfiles(customDMNProfiles)
+                .withValidations(validations)
+                .withRuntimeTypeCheckOption(runtimeTypeCheckOption)
+                .build();
+    }
+
+
+    static DmnCompilationContext buildWithParentClassLoader(ClassLoader 
parentClassLoader,
+                                                            Set<DMNProfile> 
customDMNProfiles,
+                                                            
Set<DMNValidator.Validation> validations,
                                                             
RuntimeTypeCheckOption runtimeTypeCheckOption) {
-        return new DmnCompilationContextImpl(new 
KieMemoryCompiler.MemoryCompilerClassLoader(parentClassLoader), 
customDMNProfiles, runtimeTypeCheckOption);
+        return DmnCompilationContextImpl.builder(new 
KieMemoryCompiler.MemoryCompilerClassLoader(parentClassLoader))
+                .withCustomDMNProfiles(customDMNProfiles)
+                .withValidations(validations)
+                .withRuntimeTypeCheckOption(runtimeTypeCheckOption)
+                .build();
     }
 
     KnowledgeBuilderConfiguration newKnowledgeBuilderConfiguration();
 
     Set<DMNProfile> getCustomDMNProfiles();
 
+    Set<DMNValidator.Validation> getValidations();
+
     RuntimeTypeCheckOption getRuntimeTypeCheckOption();
 
     ClassLoader getContextClassloader();
diff --git 
a/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/model/DmnCompilationContextImpl.java
 
b/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/model/DmnCompilationContextImpl.java
index a5abcefdf2..e06d0c7274 100644
--- 
a/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/model/DmnCompilationContextImpl.java
+++ 
b/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/model/DmnCompilationContextImpl.java
@@ -18,29 +18,44 @@
  */
 package org.kie.dmn.efesto.compiler.model;
 
+import java.util.Collections;
 import java.util.Set;
 import org.kie.dmn.core.compiler.DMNProfile;
 import org.kie.dmn.core.compiler.RuntimeTypeCheckOption;
+import org.kie.dmn.validation.DMNValidator;
 import 
org.kie.efesto.compilationmanager.core.model.EfestoCompilationContextImpl;
+import 
org.kie.efesto.compilationmanager.core.model.EfestoCompilationContextUtils;
 import org.kie.internal.builder.KnowledgeBuilderConfiguration;
 import org.kie.internal.builder.KnowledgeBuilderFactory;
 import org.kie.memorycompiler.KieMemoryCompiler;
 
 @SuppressWarnings("rawtypes")
-
 public class DmnCompilationContextImpl extends EfestoCompilationContextImpl 
implements DmnCompilationContext {
 
     private Set<DMNProfile> customDMNProfiles;
+    private Set<DMNValidator.Validation> validations;
     private RuntimeTypeCheckOption runtimeTypeCheckOption;
 
+
+    public static Builder builder(KieMemoryCompiler.MemoryCompilerClassLoader 
memoryCompilerClassLoader) {
+        return new Builder(memoryCompilerClassLoader);
+    }
+
+    public static Builder builder(EfestoCompilationContextImpl context) {
+        return new Builder(context);
+    }
+
     public 
DmnCompilationContextImpl(KieMemoryCompiler.MemoryCompilerClassLoader 
memoryCompilerClassLoader) {
-        this(memoryCompilerClassLoader, null, null);
+        this(memoryCompilerClassLoader, null, null, null);
     }
 
-    public 
DmnCompilationContextImpl(KieMemoryCompiler.MemoryCompilerClassLoader 
memoryCompilerClassLoader, Set<DMNProfile> customDMNProfiles,
+    private 
DmnCompilationContextImpl(KieMemoryCompiler.MemoryCompilerClassLoader 
memoryCompilerClassLoader,
+                                     Set<DMNProfile> customDMNProfiles,
+                                     Set<DMNValidator.Validation> validations,
                                      RuntimeTypeCheckOption 
runtimeTypeCheckOption) {
         super(memoryCompilerClassLoader, false);
         this.customDMNProfiles = customDMNProfiles;
+        this.validations = validations;
         this.runtimeTypeCheckOption = runtimeTypeCheckOption;
     }
 
@@ -54,6 +69,11 @@ public class DmnCompilationContextImpl extends 
EfestoCompilationContextImpl impl
         return customDMNProfiles;
     }
 
+    @Override
+    public Set<DMNValidator.Validation> getValidations() {
+        return validations != null ? Collections.unmodifiableSet(validations) 
: Collections.emptySet();
+    }
+
     @Override
     public RuntimeTypeCheckOption getRuntimeTypeCheckOption() {
         return runtimeTypeCheckOption;
@@ -63,4 +83,37 @@ public class DmnCompilationContextImpl extends 
EfestoCompilationContextImpl impl
     public ClassLoader getContextClassloader() {
         return memoryCompilerClassLoader;
     }
+
+    public static class Builder {
+
+        private final DmnCompilationContextImpl compilationContext;
+
+        private Builder(KieMemoryCompiler.MemoryCompilerClassLoader 
memoryCompilerClassLoader) {
+            this.compilationContext = new 
DmnCompilationContextImpl(memoryCompilerClassLoader);
+        }
+
+        private Builder(EfestoCompilationContextImpl context) {
+            this.compilationContext = (DmnCompilationContextImpl) 
EfestoCompilationContextUtils.buildFromContext(context, 
DmnCompilationContextImpl.class);
+        }
+
+        public Builder withCustomDMNProfiles(Set<DMNProfile> 
customDMNProfiles) {
+            compilationContext.customDMNProfiles = customDMNProfiles;
+            return this;
+        }
+
+        public Builder withValidations(Set<DMNValidator.Validation> 
validations) {
+            compilationContext.validations = validations;
+            return this;
+        }
+
+        public Builder withRuntimeTypeCheckOption(RuntimeTypeCheckOption 
runtimeTypeCheckOption) {
+            compilationContext.runtimeTypeCheckOption = runtimeTypeCheckOption;
+            return this;
+        }
+
+        public DmnCompilationContextImpl build() {
+            return compilationContext;
+        }
+
+    }
 }
diff --git 
a/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/model/EfestoCallableOutputDMN.java
 
b/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/model/EfestoCallableOutputDMN.java
index 0a4c9c7c99..a7c4b701a9 100644
--- 
a/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/model/EfestoCallableOutputDMN.java
+++ 
b/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/model/EfestoCallableOutputDMN.java
@@ -18,6 +18,7 @@
  */
 package org.kie.dmn.efesto.compiler.model;
 
+import org.kie.dmn.api.core.DMNMessage;
 import org.kie.dmn.api.core.DMNModel;
 import org.kie.dmn.api.identifiers.DmnIdFactory;
 import org.kie.dmn.api.identifiers.KieDmnComponentRoot;
@@ -28,25 +29,28 @@ import 
org.kie.efesto.compilationmanager.api.model.EfestoCallableOutputModelCont
 import java.util.Collections;
 import java.util.List;
 
-public class EfestoCallableOutputDMN extends 
EfestoCallableOutputModelContainer<DMNModel> {
+public class EfestoCallableOutputDMN extends 
EfestoCallableOutputModelContainer<DMNModel, List<DMNMessage>> {
 
-    public EfestoCallableOutputDMN(String fileName, String modelName, String 
modelSource, DMNModel dmnModel) {
-        super(new EfestoAppRoot()
+    public EfestoCallableOutputDMN(String fileName, String modelName, String 
modelSource, DMNModel dmnModel, List<DMNMessage> validationMessages) {
+        this(new EfestoAppRoot()
                 .get(KieDmnComponentRoot.class)
                 .get(DmnIdFactory.class)
                 .get(fileName, modelName),
               modelSource,
-              dmnModel);
+              dmnModel, validationMessages);
+
     }
 
-    public EfestoCallableOutputDMN(ModelLocalUriId modelLocalUriId, String 
modelSource, DMNModel dmnModel) {
+    public EfestoCallableOutputDMN(ModelLocalUriId modelLocalUriId, String 
modelSource, DMNModel dmnModel, List<DMNMessage> validationMessages) {
         super(modelLocalUriId,
               modelSource,
-              dmnModel);
+              dmnModel,
+              validationMessages);
     }
 
     @Override
     public List<String> getFullClassNames() {
         return Collections.emptyList();
     }
+
 }
diff --git 
a/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/service/AbstractKieCompilerServiceDMN.java
 
b/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/service/AbstractKieCompilerServiceDMN.java
index dfb8a6a887..ffe9653696 100644
--- 
a/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/service/AbstractKieCompilerServiceDMN.java
+++ 
b/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/service/AbstractKieCompilerServiceDMN.java
@@ -18,23 +18,42 @@
  */
 package org.kie.dmn.efesto.compiler.service;
 
-import java.util.Arrays;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.drools.io.ByteArrayResource;
+import org.kie.api.io.Resource;
+import org.kie.dmn.api.core.DMNMessage;
+import org.kie.dmn.api.core.DMNModel;
 import org.kie.dmn.api.identifiers.DmnIdFactory;
 import org.kie.dmn.api.identifiers.KieDmnComponentRoot;
 import org.kie.dmn.api.identifiers.LocalCompilationSourceIdDmn;
 import org.kie.dmn.core.compiler.profiles.ExtendedDMNProfile;
+import org.kie.dmn.efesto.compiler.model.DmnCompilationContext;
+import org.kie.dmn.efesto.compiler.utils.DmnCompilerUtils;
 import org.kie.dmn.validation.DMNValidator;
 import org.kie.dmn.validation.DMNValidatorFactory;
 import org.kie.efesto.common.api.identifiers.EfestoAppRoot;
 import org.kie.efesto.common.api.model.EfestoCompilationContext;
 import org.kie.efesto.common.core.storage.ContextStorage;
+import 
org.kie.efesto.compilationmanager.api.exceptions.KieCompilerServiceException;
 import org.kie.efesto.compilationmanager.api.model.EfestoCompilationOutput;
 import org.kie.efesto.compilationmanager.api.service.KieCompilerService;
+import 
org.kie.efesto.compilationmanager.core.model.EfestoCompilationContextImpl;
+import org.slf4j.Logger;
 
+import static 
org.kie.dmn.efesto.compiler.utils.DmnCompilerUtils.getCleanedFilenameForURI;
 
-public abstract class AbstractKieCompilerServiceDMN implements 
KieCompilerService<EfestoCompilationOutput, EfestoCompilationContext> {
-
-    static final DMNValidator validator = 
DMNValidatorFactory.newValidator(Arrays.asList(new ExtendedDMNProfile()));
+@SuppressWarnings({"uncheck", "rawtypes"})
+public abstract class AbstractKieCompilerServiceDMN implements 
KieCompilerService<EfestoCompilationOutput,
+        EfestoCompilationContext> {
 
     @Override
     public boolean hasCompilationSource(String fileName) {
@@ -59,4 +78,93 @@ public abstract class AbstractKieCompilerServiceDMN 
implements KieCompilerServic
         return "dmn";
     }
 
+    protected DmnCompilationContext 
getDmnCompilationContext(EfestoCompilationContext context) {
+        return context instanceof DmnCompilationContext dmnCompilationContext 
? dmnCompilationContext :
+                
DmnCompilationContext.buildWithEfestoCompilationContext((EfestoCompilationContextImpl)
 context);
+    }
+
+    protected List<DMNMessage> validateDMN(EfestoCompilationContext context, 
Collection<Resource> resources) {
+        DmnCompilationContext dmnCompilationContext = 
getDmnCompilationContext(context);
+        if (dmnCompilationContext.getValidations() == null || 
dmnCompilationContext.getValidations().isEmpty()) {
+            return Collections.emptyList();
+        } else {
+            return DMNValidatorFactory.newValidator(List.of(new 
ExtendedDMNProfile()))
+                    
.validateUsing(dmnCompilationContext.getValidations().toArray(new 
DMNValidator.Validation[]{}))
+                    .theseModels(resources.toArray(new Resource[]{}));
+        }
+    }
+
+    protected List<EfestoCompilationOutput> 
getListEfestoCompilationOutput(List<ModelSourceTuple> modelSourceTuples,
+                                                                           
DmnCompilationContext dmnContext,
+                                                                           
Logger logger) {
+        try {
+            Map<LocalCompilationSourceIdDmn, ModelSourceTuple> 
mappedModelSourceTuple = new HashMap<>();
+            List<Resource> resources = new ArrayList<>();
+            for (ModelSourceTuple modelSourceTuple : modelSourceTuples) {
+                LocalCompilationSourceIdDmn key = 
getLocalCompilationSourceIdDmnFromModelSourceTuple(modelSourceTuple);
+                if (mappedModelSourceTuple.containsKey(key)) {
+                    logger.warn("Duplicate LocalCompilationSourceIdDmn key {} 
for model {}  ", key,
+                                modelSourceTuple.model);
+                } else {
+                    mappedModelSourceTuple.put(key, modelSourceTuple);
+                    resources.add(new 
ByteArrayResource(modelSourceTuple.source.getBytes(StandardCharsets.UTF_8)));
+                }
+            }
+            List<EfestoCompilationOutput> toReturn = new ArrayList<>();
+            List<DMNMessage> validationMessages = validateDMN(dmnContext, 
resources);
+            mappedModelSourceTuple.values()
+                    .forEach(modelSourceTuple -> {
+                        DMNModel dmnModel = modelSourceTuple.model;
+                        String modelSource = modelSourceTuple.source;
+                        File dmnFile = new 
File(dmnModel.getResource().getSourcePath());
+                        
toReturn.add(DmnCompilerUtils.getDefaultEfestoCompilationOutput(getCleanedFilenameForURI(dmnFile),
+                                                                               
         dmnModel.getName(),
+                                                                               
         modelSource,
+                                                                               
         dmnModel,
+                                                                               
         validationMessages));
+                    });
+            storeMappedModelTuple(mappedModelSourceTuple);
+            return toReturn;
+        } catch (Exception e) {
+            throw new KieCompilerServiceException(e);
+        }
+    }
+
+    protected void storeMappedModelTuple(Map<LocalCompilationSourceIdDmn, 
ModelSourceTuple> mappedModelTuple) {
+        mappedModelTuple.forEach((localCompilationSourceIdDmn, 
modelSourceTuple) ->
+                                         
ContextStorage.putEfestoCompilationSource(localCompilationSourceIdDmn,
+                                                                               
    modelSourceTuple.source));
+    }
+
+    protected LocalCompilationSourceIdDmn 
getLocalCompilationSourceIdDmnFromModelSourceTuple(ModelSourceTuple 
modelSourceTuple) {
+        String fileName = modelSourceTuple.model.getResource().getSourcePath();
+        fileName = getCleanedFilenameForURI(fileName);
+        return new EfestoAppRoot()
+                .get(KieDmnComponentRoot.class)
+                .get(DmnIdFactory.class)
+                .get(fileName);
+    }
+
+    protected ModelSourceTuple readDMNModel(DMNModel toRead) {
+        return new ModelSourceTuple(toRead, 
readResource(toRead.getResource()));
+    }
+
+    private String readResource(Resource toRead) {
+        try (InputStream is = toRead.getInputStream()) {
+            return new String(is.readAllBytes(), StandardCharsets.UTF_8);
+        } catch (IOException e) {
+            throw new KieCompilerServiceException(e);
+        }
+    }
+
+    protected static class ModelSourceTuple {
+
+        protected final DMNModel model;
+        protected final String source;
+
+        public ModelSourceTuple(DMNModel model, String source) {
+            this.model = model;
+            this.source = source;
+        }
+    }
 }
diff --git 
a/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNFile.java
 
b/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNFile.java
index 23b2ad3006..af1a669969 100644
--- 
a/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNFile.java
+++ 
b/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNFile.java
@@ -18,37 +18,25 @@
  */
 package org.kie.dmn.efesto.compiler.service;
 
-import org.kie.dmn.api.core.DMNMessage;
+import java.io.File;
+import java.util.List;
+import java.util.Set;
 import org.kie.dmn.api.core.DMNModel;
-import org.kie.dmn.api.identifiers.DmnIdFactory;
-import org.kie.dmn.api.identifiers.KieDmnComponentRoot;
-import org.kie.dmn.api.identifiers.LocalCompilationSourceIdDmn;
-import org.kie.dmn.efesto.compiler.utils.DmnCompilerUtils;
-import org.kie.dmn.validation.DMNValidator;
-import org.kie.efesto.common.api.identifiers.EfestoAppRoot;
-import org.kie.efesto.common.api.io.MemoryFile;
-import org.kie.efesto.common.core.storage.ContextStorage;
-import 
org.kie.efesto.compilationmanager.api.exceptions.EfestoCompilationManagerException;
-import 
org.kie.efesto.compilationmanager.api.exceptions.KieCompilerServiceException;
+import org.kie.dmn.efesto.compiler.model.DmnCompilationContext;
 import org.kie.efesto.common.api.model.EfestoCompilationContext;
+import 
org.kie.efesto.compilationmanager.api.exceptions.KieCompilerServiceException;
 import org.kie.efesto.compilationmanager.api.model.EfestoCompilationOutput;
 import org.kie.efesto.compilationmanager.api.model.EfestoFileResource;
 import org.kie.efesto.compilationmanager.api.model.EfestoResource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
-import java.io.File;
-import java.io.IOException;
-import java.io.StringReader;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.util.Collections;
-import java.util.List;
-
-import static 
org.kie.dmn.efesto.compiler.utils.DmnCompilerUtils.getCleanedFilenameForURI;
-import static org.kie.dmn.efesto.compiler.utils.DmnCompilerUtils.getDMNModel;
-
+import static 
org.kie.dmn.efesto.compiler.utils.DmnCompilerUtils.getDMNModelsFromFiles;
 
 public class KieCompilerServiceDMNFile extends AbstractKieCompilerServiceDMN {
 
+    private static final Logger LOGGER = 
LoggerFactory.getLogger(KieCompilerServiceDMNFile.class);
+
     @Override
     @SuppressWarnings( "rawtypes")
     public boolean canManageResource(EfestoResource toProcess) {
@@ -63,39 +51,17 @@ public class KieCompilerServiceDMNFile extends 
AbstractKieCompilerServiceDMN {
                                                                 
this.getClass().getName(),
                                                                 
toProcess.getClass().getName()));
         }
-        EfestoFileResource fileResource = (EfestoFileResource) toProcess;
-        File dmnFile = fileResource.getContent();
-        String modelSource;
-        try {
-            modelSource = dmnFile instanceof MemoryFile memoryFile ? new 
String(memoryFile.getContent(), StandardCharsets.UTF_8) : ( 
Files.readString(dmnFile.toPath()));
-
-        } catch (IOException e) {
-            throw new KieCompilerServiceException(String.format("%s failed to 
read content of %s",
-                                                                
this.getClass().getName(),
-                                                                
fileResource.getContent()));
-        }
-        List<DMNMessage> messages = validator.validate(new 
StringReader(modelSource),
-                                                       
DMNValidator.Validation.VALIDATE_SCHEMA,
-                                                       
DMNValidator.Validation.VALIDATE_MODEL,
-                                                       
DMNValidator.Validation.VALIDATE_COMPILATION,
-                                                       
DMNValidator.Validation.ANALYZE_DECISION_TABLE);
-        // see https://github.com/apache/incubator-kie-issues/issues/1619
-//        if (DmnCompilerUtils.hasError(messages)) {
-//            return Collections.emptyList();
-//        }
-        try {
-            String fileName = getCleanedFilenameForURI(dmnFile);
-            LocalCompilationSourceIdDmn localCompilationSourceIdDmn = new 
EfestoAppRoot()
-                    .get(KieDmnComponentRoot.class)
-                    .get(DmnIdFactory.class)
-                    .get(fileName);
-            
ContextStorage.putEfestoCompilationSource(localCompilationSourceIdDmn, 
modelSource);
-            DMNModel dmnModel = getDMNModel(modelSource);
-            return 
Collections.singletonList(DmnCompilerUtils.getDefaultEfestoCompilationOutput(fileName,
-                    dmnModel.getName(),
-                    modelSource, dmnModel));
-        } catch (Exception e) {
-            throw new EfestoCompilationManagerException(e);
+        if (!(context instanceof DmnCompilationContext dmnContext)) {
+            throw new KieCompilerServiceException(String.format("Wrong %s 
context parameter for from %s",
+                                                                
context.getClass().getName(),
+                                                                
this.getClass().getName()));
         }
+        EfestoFileResource fileResource = (EfestoFileResource) toProcess;
+        Set<File> dmnFiles = Set.of(fileResource.getContent());
+        List<DMNModel> dmnModels = getDMNModelsFromFiles(dmnFiles, 
dmnContext.getCustomDMNProfiles(), dmnContext.getRuntimeTypeCheckOption(), 
dmnContext.getContextClassloader());
+        List<ModelSourceTuple> modelSourceTuples = dmnModels.stream()
+                .map(this::readDMNModel)
+                .toList();
+        return getListEfestoCompilationOutput(modelSourceTuples, dmnContext, 
LOGGER);
     }
 }
diff --git 
a/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNFileSet.java
 
b/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNFileSet.java
index 9f4072a10e..218b6b7342 100644
--- 
a/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNFileSet.java
+++ 
b/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNFileSet.java
@@ -19,39 +19,32 @@
 package org.kie.dmn.efesto.compiler.service;
 
 import java.io.File;
-import java.io.IOException;
-import java.nio.file.Files;
 import java.util.List;
 import java.util.Set;
 import org.kie.dmn.api.core.DMNModel;
-import org.kie.dmn.api.identifiers.DmnIdFactory;
-import org.kie.dmn.api.identifiers.KieDmnComponentRoot;
-import org.kie.dmn.api.identifiers.LocalCompilationSourceIdDmn;
 import org.kie.dmn.efesto.compiler.model.DmnCompilationContext;
-import org.kie.dmn.efesto.compiler.utils.DmnCompilerUtils;
-import org.kie.efesto.common.api.identifiers.EfestoAppRoot;
 import org.kie.efesto.common.api.model.EfestoCompilationContext;
-import org.kie.efesto.common.core.storage.ContextStorage;
-import 
org.kie.efesto.compilationmanager.api.exceptions.EfestoCompilationManagerException;
 import 
org.kie.efesto.compilationmanager.api.exceptions.KieCompilerServiceException;
 import org.kie.efesto.compilationmanager.api.model.EfestoCompilationOutput;
 import org.kie.efesto.compilationmanager.api.model.EfestoFileSetResource;
 import org.kie.efesto.compilationmanager.api.model.EfestoResource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
-import static 
org.kie.dmn.efesto.compiler.utils.DmnCompilerUtils.getCleanedFilenameForURI;
 import static 
org.kie.dmn.efesto.compiler.utils.DmnCompilerUtils.getDMNModelsFromFiles;
 
+@SuppressWarnings("rawtypes")
 public class KieCompilerServiceDMNFileSet extends 
AbstractKieCompilerServiceDMN {
 
+    private static final Logger LOGGER = 
LoggerFactory.getLogger(KieCompilerServiceDMNFileSet.class);
+
     @Override
-    @SuppressWarnings( "rawtypes")
     public boolean canManageResource(EfestoResource toProcess) {
         return toProcess instanceof EfestoFileSetResource 
efestoFileSetResource &&
                 
efestoFileSetResource.getModelLocalUriId().model().equalsIgnoreCase("dmn");
     }
 
     @Override
-    @SuppressWarnings( "rawtypes")
     public List<EfestoCompilationOutput> processResource(EfestoResource 
toProcess, EfestoCompilationContext context) {
         if (!canManageResource(toProcess)) {
             throw new KieCompilerServiceException(String.format("%s can not 
process %s",
@@ -65,43 +58,12 @@ public class KieCompilerServiceDMNFileSet extends 
AbstractKieCompilerServiceDMN
         }
         EfestoFileSetResource fileSetResource = (EfestoFileSetResource) 
toProcess;
         Set<File> dmnFiles = fileSetResource.getContent();
-        try {
-            List<DMNModel> dmnModels = getDMNModelsFromFiles(dmnFiles, 
dmnContext.getCustomDMNProfiles(), dmnContext.getRuntimeTypeCheckOption(), 
dmnContext.getContextClassloader());
-            storeSources(dmnFiles);
-            return dmnModels.stream()
-                    .map(
-                    dmnModel -> {
-                        File dmnFile = new 
File(dmnModel.getResource().getSourcePath());
-                        String modelSource = readFile(dmnFile);
-                        return 
DmnCompilerUtils.getDefaultEfestoCompilationOutput(getCleanedFilenameForURI(dmnFile),
-                                                                           
dmnModel.getName(),
-                                                                               
   modelSource,
-                                                                           
dmnModel);
-                    })
-                    .toList();
-
-        } catch (Exception e) {
-            throw new EfestoCompilationManagerException(e);
-        }
-    }
-
-    private void storeSources(Set<File> dmnFiles) {
-        dmnFiles.forEach(file -> {
-            String fileName = file.getName();
-            LocalCompilationSourceIdDmn localCompilationSourceIdDmn = new 
EfestoAppRoot()
-                    .get(KieDmnComponentRoot.class)
-                    .get(DmnIdFactory.class)
-                    .get(fileName);
-            String modelSource = readFile(file);
-            
ContextStorage.putEfestoCompilationSource(localCompilationSourceIdDmn, 
modelSource);
-        });
-    }
-
-    private String readFile(File toRead) {
-        try {
-            return Files.readString(toRead.toPath());
-        } catch (IOException e) {
-            throw new KieCompilerServiceException(e);
-        }
+        List<DMNModel> dmnModels = getDMNModelsFromFiles(dmnFiles, 
dmnContext.getCustomDMNProfiles(),
+                                                         
dmnContext.getRuntimeTypeCheckOption(),
+                                                         
dmnContext.getContextClassloader());
+        List<ModelSourceTuple> modelSourceTuples = dmnModels.stream()
+                .map(this::readDMNModel)
+                .toList();
+        return getListEfestoCompilationOutput(modelSourceTuples, dmnContext, 
LOGGER);
     }
 }
diff --git 
a/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNInputStream.java
 
b/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNInputStream.java
index f4c8c47f4c..a7e0176412 100644
--- 
a/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNInputStream.java
+++ 
b/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNInputStream.java
@@ -18,26 +18,17 @@
  */
 package org.kie.dmn.efesto.compiler.service;
 
-import org.kie.dmn.api.core.DMNMessage;
-import org.kie.dmn.api.core.DMNModel;
-import org.kie.dmn.api.identifiers.DmnIdFactory;
-import org.kie.dmn.api.identifiers.KieDmnComponentRoot;
-import org.kie.dmn.api.identifiers.LocalCompilationSourceIdDmn;
-import org.kie.dmn.efesto.compiler.utils.DmnCompilerUtils;
-import org.kie.dmn.validation.DMNValidator;
-import org.kie.efesto.common.api.identifiers.EfestoAppRoot;
-import org.kie.efesto.common.core.storage.ContextStorage;
-import 
org.kie.efesto.compilationmanager.api.exceptions.KieCompilerServiceException;
+import java.nio.charset.StandardCharsets;
+import java.util.Collections;
+import java.util.List;
+import org.kie.dmn.efesto.compiler.model.DmnCompilationContext;
 import org.kie.efesto.common.api.model.EfestoCompilationContext;
+import 
org.kie.efesto.compilationmanager.api.exceptions.KieCompilerServiceException;
 import org.kie.efesto.compilationmanager.api.model.EfestoCompilationOutput;
 import org.kie.efesto.compilationmanager.api.model.EfestoInputStreamResource;
 import org.kie.efesto.compilationmanager.api.model.EfestoResource;
-
-import java.io.StringReader;
-import java.nio.charset.StandardCharsets;
-import java.util.Collections;
-import java.util.List;
-import java.util.stream.Collectors;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import static 
org.kie.dmn.efesto.compiler.utils.DmnCompilerUtils.getCleanedFilenameForURI;
 import static org.kie.dmn.efesto.compiler.utils.DmnCompilerUtils.getDMNModel;
@@ -45,8 +36,11 @@ import static 
org.kie.dmn.efesto.compiler.utils.DmnCompilerUtils.getDMNModel;
 /**
  * For the moment being, use this for DMN "validation", since DMN does not 
have a code-generation phase
  */
+@SuppressWarnings("rawtypes")
 public class KieCompilerServiceDMNInputStream extends 
AbstractKieCompilerServiceDMN {
 
+    private static final Logger LOGGER = 
LoggerFactory.getLogger(KieCompilerServiceDMNInputStream.class);
+
     @Override
     public boolean canManageResource(EfestoResource toProcess) {
         return toProcess instanceof EfestoInputStreamResource 
efestoInputStreamResource && 
efestoInputStreamResource.getModelType().equalsIgnoreCase("dmn");
@@ -59,6 +53,11 @@ public class KieCompilerServiceDMNInputStream extends 
AbstractKieCompilerService
                                                                 
this.getClass().getName(),
                                                                 
toProcess.getClass().getName()));
         }
+        if (!(context instanceof DmnCompilationContext dmnContext)) {
+            throw new KieCompilerServiceException(String.format("Wrong %s 
context parameter for from %s",
+                                                                
context.getClass().getName(),
+                                                                
this.getClass().getName()));
+        }
         EfestoInputStreamResource inputStreamResource = 
(EfestoInputStreamResource) toProcess;
         String modelSource;
         try {
@@ -66,27 +65,8 @@ public class KieCompilerServiceDMNInputStream extends 
AbstractKieCompilerService
         } catch (Exception e) {
             throw new KieCompilerServiceException(String.format("Unable to 
read content from %s", toProcess), e);
         }
-        List<DMNMessage> messages = validator.validate(new 
StringReader(modelSource),
-                DMNValidator.Validation.VALIDATE_SCHEMA,
-                DMNValidator.Validation.VALIDATE_MODEL,
-                DMNValidator.Validation.VALIDATE_COMPILATION,
-                DMNValidator.Validation.ANALYZE_DECISION_TABLE);
-        if (DmnCompilerUtils.hasError(messages)) {
-            String errors = 
messages.stream().map(DMNMessage::getText).collect(Collectors.joining("\n"));
-            throw new KieCompilerServiceException(String.format("Validation 
errors from %s:%n%s", ((EfestoInputStreamResource) toProcess).getFileName(), 
errors));
-
-        } else {
-            String fileName = 
getCleanedFilenameForURI(inputStreamResource.getFileName());
-            LocalCompilationSourceIdDmn localCompilationSourceIdDmn = new 
EfestoAppRoot()
-                    .get(KieDmnComponentRoot.class)
-                    .get(DmnIdFactory.class)
-                    .get(fileName);
-            
ContextStorage.putEfestoCompilationSource(localCompilationSourceIdDmn, 
modelSource);
-            DMNModel dmnModel = getDMNModel(modelSource);
-            return 
Collections.singletonList(DmnCompilerUtils.getDefaultEfestoCompilationOutput(fileName,
-                    dmnModel.getName(),
-                    modelSource,
-                    dmnModel));
-        }
+        String fileName = 
getCleanedFilenameForURI(inputStreamResource.getFileName());
+        List<ModelSourceTuple> modelSourceTuples = 
Collections.singletonList(new ModelSourceTuple(getDMNModel(modelSource, 
fileName), modelSource));
+        return getListEfestoCompilationOutput(modelSourceTuples, dmnContext, 
LOGGER);
     }
 }
diff --git 
a/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNResourceSet.java
 
b/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNResourceSet.java
index 35eae06278..625275ef09 100644
--- 
a/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNResourceSet.java
+++ 
b/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNResourceSet.java
@@ -18,47 +18,33 @@
  */
 package org.kie.dmn.efesto.compiler.service;
 
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import org.kie.api.io.Resource;
 import org.kie.dmn.api.core.DMNModel;
-import org.kie.dmn.api.identifiers.DmnIdFactory;
-import org.kie.dmn.api.identifiers.KieDmnComponentRoot;
-import org.kie.dmn.api.identifiers.LocalCompilationSourceIdDmn;
 import org.kie.dmn.efesto.compiler.model.DMNResourceSetResource;
 import org.kie.dmn.efesto.compiler.model.DmnCompilationContext;
-import org.kie.dmn.efesto.compiler.utils.DmnCompilerUtils;
-import org.kie.efesto.common.api.identifiers.EfestoAppRoot;
 import org.kie.efesto.common.api.model.EfestoCompilationContext;
-import org.kie.efesto.common.core.storage.ContextStorage;
-import 
org.kie.efesto.compilationmanager.api.exceptions.EfestoCompilationManagerException;
 import 
org.kie.efesto.compilationmanager.api.exceptions.KieCompilerServiceException;
 import org.kie.efesto.compilationmanager.api.model.EfestoCompilationOutput;
 import org.kie.efesto.compilationmanager.api.model.EfestoResource;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import static 
org.kie.dmn.efesto.compiler.utils.DmnCompilerUtils.getCleanedFilenameForURI;
 import static 
org.kie.dmn.efesto.compiler.utils.DmnCompilerUtils.getDMNModelsFromResources;
 
+@SuppressWarnings("rawtypes")
 public class KieCompilerServiceDMNResourceSet extends 
AbstractKieCompilerServiceDMN {
 
     private static final Logger LOGGER = 
LoggerFactory.getLogger(KieCompilerServiceDMNResourceSet.class);
 
     @Override
-    @SuppressWarnings("rawtypes")
     public boolean canManageResource(EfestoResource toProcess) {
         return toProcess instanceof DMNResourceSetResource 
dmnFileSystemResourceSetResource &&
                 
dmnFileSystemResourceSetResource.getModelLocalUriId().model().equalsIgnoreCase("dmn");
     }
 
     @Override
-    @SuppressWarnings("rawtypes")
     public List<EfestoCompilationOutput> processResource(EfestoResource 
toProcess, EfestoCompilationContext context) {
         if (!canManageResource(toProcess)) {
             throw new KieCompilerServiceException(String.format("%s can not 
process %s",
@@ -70,42 +56,14 @@ public class KieCompilerServiceDMNResourceSet extends 
AbstractKieCompilerService
                                                                 
context.getClass().getName(),
                                                                 
this.getClass().getName()));
         }
-        DMNResourceSetResource dmnFileSystemResourceSetResource = 
(DMNResourceSetResource) toProcess;
-        Collection<Resource> dmnResources = 
dmnFileSystemResourceSetResource.getContent();
-        try {
-            List<DMNModel> dmnModels = getDMNModelsFromResources(dmnResources, 
dmnContext.getCustomDMNProfiles(),
-                                                                 
dmnContext.getRuntimeTypeCheckOption(),
-                                                                 
dmnContext.getContextClassloader());
-            List<EfestoCompilationOutput> toReturn = new ArrayList<>();
-            dmnModels.forEach(dmnModel -> {
-                String modelSource = readResource(dmnModel.getResource());
-                storeSource(modelSource, dmnModel.getName());
-                File dmnFile = new 
File(dmnModel.getResource().getSourcePath());
-                
toReturn.add(DmnCompilerUtils.getDefaultEfestoCompilationOutput(getCleanedFilenameForURI(dmnFile),
-                                                                               
 dmnModel.getName(),
-                                                                               
 modelSource,
-                                                                               
 dmnModel));
-            });
-            return toReturn;
-        } catch (Exception e) {
-            LOGGER.error("ERROR", e);
-            throw new EfestoCompilationManagerException(e);
-        }
-    }
-
-    private void storeSource(String modelSource, String modelName) {
-        LocalCompilationSourceIdDmn localCompilationSourceIdDmn = new 
EfestoAppRoot()
-                .get(KieDmnComponentRoot.class)
-                .get(DmnIdFactory.class)
-                .get(modelName);
-        ContextStorage.putEfestoCompilationSource(localCompilationSourceIdDmn, 
modelSource);
-    }
-
-    private String readResource(Resource toRead) {
-        try (InputStream is = toRead.getInputStream()) {
-            return new String(is.readAllBytes(), StandardCharsets.UTF_8);
-        } catch (IOException e) {
-            throw new KieCompilerServiceException(e);
-        }
+        DMNResourceSetResource dmnResourceSetResource = 
(DMNResourceSetResource) toProcess;
+        Collection<Resource> dmnResources = 
dmnResourceSetResource.getContent();
+        List<DMNModel> dmnModels = getDMNModelsFromResources(dmnResources, 
dmnContext.getCustomDMNProfiles(),
+                                                             
dmnContext.getRuntimeTypeCheckOption(),
+                                                             
dmnContext.getContextClassloader());
+        List<ModelSourceTuple> modelSourceTuples = dmnModels.stream()
+                .map(this::readDMNModel)
+                .toList();
+        return getListEfestoCompilationOutput(modelSourceTuples, dmnContext, 
LOGGER);
     }
 }
diff --git 
a/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNString.java
 
b/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNString.java
index ba4b89e16e..6f50fc0f7b 100644
--- 
a/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNString.java
+++ 
b/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNString.java
@@ -18,21 +18,14 @@
  */
 package org.kie.dmn.efesto.compiler.service;
 
-import java.io.StringReader;
+import java.net.URLDecoder;
+import java.nio.charset.StandardCharsets;
 import java.util.Collections;
 import java.util.List;
-import org.kie.dmn.api.core.DMNMessage;
-import org.kie.dmn.api.core.DMNModel;
-import org.kie.dmn.api.identifiers.DmnIdFactory;
-import org.kie.dmn.api.identifiers.KieDmnComponentRoot;
-import org.kie.dmn.api.identifiers.LocalCompilationSourceIdDmn;
-import org.kie.dmn.efesto.compiler.utils.DmnCompilerUtils;
-import org.kie.dmn.validation.DMNValidator;
-import org.kie.efesto.common.api.identifiers.EfestoAppRoot;
+import org.kie.dmn.efesto.compiler.model.DmnCompilationContext;
+import org.kie.efesto.common.api.identifiers.LocalUri;
 import org.kie.efesto.common.api.identifiers.ModelLocalUriId;
 import org.kie.efesto.common.api.model.EfestoCompilationContext;
-import org.kie.efesto.common.core.storage.ContextStorage;
-import 
org.kie.efesto.compilationmanager.api.exceptions.EfestoCompilationManagerException;
 import 
org.kie.efesto.compilationmanager.api.exceptions.KieCompilerServiceException;
 import org.kie.efesto.compilationmanager.api.model.EfestoCompilationOutput;
 import org.kie.efesto.compilationmanager.api.model.EfestoResource;
@@ -40,51 +33,41 @@ import 
org.kie.efesto.compilationmanager.api.model.EfestoStringResource;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import static 
org.kie.dmn.efesto.compiler.utils.DmnCompilerUtils.getCleanedFilenameForURI;
 import static org.kie.dmn.efesto.compiler.utils.DmnCompilerUtils.getDMNModel;
 
+@SuppressWarnings("rawtypes")
 public class KieCompilerServiceDMNString extends AbstractKieCompilerServiceDMN 
{
 
     private static final Logger LOGGER = 
LoggerFactory.getLogger(KieCompilerServiceDMNString.class);
 
     @Override
-    @SuppressWarnings( "rawtypes")
     public boolean canManageResource(EfestoResource toProcess) {
-        return toProcess instanceof EfestoStringResource && 
((EfestoStringResource) 
toProcess).getModelLocalUriId().model().equalsIgnoreCase("dmn");
+        return toProcess instanceof EfestoStringResource efestoStringResource 
&& efestoStringResource.getModelLocalUriId().model().equalsIgnoreCase("dmn");
     }
 
     @Override
-    @SuppressWarnings( "rawtypes")
     public List<EfestoCompilationOutput> processResource(EfestoResource 
toProcess, EfestoCompilationContext context) {
         if (!canManageResource(toProcess)) {
             throw new KieCompilerServiceException(String.format("%s can not 
process %s",
                                                                 
this.getClass().getName(),
                                                                 
toProcess.getClass().getName()));
         }
+        if (!(context instanceof DmnCompilationContext dmnContext)) {
+            throw new KieCompilerServiceException(String.format("Wrong %s 
context parameter for from %s",
+                                                                
context.getClass().getName(),
+                                                                
this.getClass().getName()));
+        }
         EfestoStringResource stringResource = (EfestoStringResource) toProcess;
         String modelSource = stringResource.getContent();
-        List<DMNMessage> messages = validator.validate(new 
StringReader(modelSource),
-                                                       
DMNValidator.Validation.VALIDATE_SCHEMA,
-                                                       
DMNValidator.Validation.VALIDATE_MODEL,
-                                                       
DMNValidator.Validation.VALIDATE_COMPILATION,
-                                                       
DMNValidator.Validation.ANALYZE_DECISION_TABLE);
-        // see https://github.com/apache/incubator-kie-issues/issues/1619
-//        if (DmnCompilerUtils.hasError(messages)) {
-//            return Collections.emptyList();
-//        }
-        try {
-            ModelLocalUriId modelLocalUriId 
=stringResource.getModelLocalUriId();
-            String basePath = modelLocalUriId.basePath();
-            String fileName = basePath.substring(0, basePath.lastIndexOf("/"));
-            LocalCompilationSourceIdDmn localCompilationSourceIdDmn = new 
EfestoAppRoot()
-                    .get(KieDmnComponentRoot.class)
-                    .get(DmnIdFactory.class)
-                    .get(fileName);
-            
ContextStorage.putEfestoCompilationSource(localCompilationSourceIdDmn, 
modelSource);
-            DMNModel dmnModel = getDMNModel(modelSource);
-            return 
Collections.singletonList(DmnCompilerUtils.getDefaultEfestoCompilationOutput(modelLocalUriId,
-                    modelSource, dmnModel));
-        } catch (Exception e) {
-            throw new EfestoCompilationManagerException(e);
-        }
+        ModelLocalUriId modelLocalUriId = stringResource.getModelLocalUriId();
+
+        String parentComponent = 
((LocalUri.LocalUriPathComponent)modelLocalUriId.asLocalUri().parent()).getComponent();
+        String basePath = parentComponent.equals(modelLocalUriId.model()) ? 
modelLocalUriId.basePath() : parentComponent;
+        String fileName =  URLDecoder.decode(basePath, StandardCharsets.UTF_8);
+        fileName = getCleanedFilenameForURI(fileName);
+        List<ModelSourceTuple> modelSourceTuples =
+                Collections.singletonList(new 
ModelSourceTuple(getDMNModel(modelSource, fileName), modelSource));
+        return getListEfestoCompilationOutput(modelSourceTuples, dmnContext, 
LOGGER);
     }
 }
diff --git 
a/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/utils/DmnCompilerUtils.java
 
b/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/utils/DmnCompilerUtils.java
index d28bb6d0de..bd6c8fc6cb 100644
--- 
a/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/utils/DmnCompilerUtils.java
+++ 
b/kie-dmn/kie-dmn-efesto-compilation/src/main/java/org/kie/dmn/efesto/compiler/utils/DmnCompilerUtils.java
@@ -57,16 +57,21 @@ public class DmnCompilerUtils {
         return dmnMessages.stream().anyMatch(dmnMessage -> 
dmnMessage.getLevel().equals(Message.Level.ERROR));
     }
 
-    public static EfestoCompilationOutput 
getDefaultEfestoCompilationOutput(String fileName, String modelName, String 
modelSource, DMNModel dmnModel) {
-        return new EfestoCallableOutputDMN(fileName, modelName, modelSource, 
dmnModel);
+    public static EfestoCompilationOutput 
getDefaultEfestoCompilationOutput(String fileName, String modelName, String 
modelSource, DMNModel dmnModel, List<DMNMessage> validationMessages) {
+        return new EfestoCallableOutputDMN(fileName, modelName, modelSource, 
dmnModel, validationMessages);
     }
 
-    public static EfestoCompilationOutput 
getDefaultEfestoCompilationOutput(ModelLocalUriId modelLocalUriId, String 
modelSource, DMNModel dmnModel) {
-        return new EfestoCallableOutputDMN(modelLocalUriId, modelSource, 
dmnModel);
+    public static EfestoCompilationOutput 
getDefaultEfestoCompilationOutput(ModelLocalUriId modelLocalUriId, String 
modelSource, DMNModel dmnModel, List<DMNMessage> validationMessages) {
+        return new EfestoCallableOutputDMN(modelLocalUriId, modelSource, 
dmnModel, validationMessages);
     }
 
-    public static DMNModel getDMNModel(String modelSource) {
+    public static DMNModel getDMNModel(String modelSource, String fileName) {
         Resource modelResource = ResourceFactory.newReaderResource(new 
StringReader(modelSource), "UTF-8");
+        modelResource.setSourcePath(fileName);
+        return getDMNModel(modelResource);
+    }
+
+    public static DMNModel getDMNModel(Resource modelResource) {
         DMNRuntime dmnRuntime = 
DMNRuntimeBuilder.fromDefaults().buildConfiguration()
                 
.fromResources(Collections.singletonList(modelResource)).getOrElseThrow(RuntimeException::new);
         return dmnRuntime.getModels().get(0);
diff --git 
a/kie-dmn/kie-dmn-efesto-compilation/src/test/java/org/kie/dmn/efesto/compiler/service/AbstractKieCompilerServiceDMNTest.java
 
b/kie-dmn/kie-dmn-efesto-compilation/src/test/java/org/kie/dmn/efesto/compiler/service/AbstractKieCompilerServiceDMNTest.java
index a8f7fdb9e3..9f158a586f 100644
--- 
a/kie-dmn/kie-dmn-efesto-compilation/src/test/java/org/kie/dmn/efesto/compiler/service/AbstractKieCompilerServiceDMNTest.java
+++ 
b/kie-dmn/kie-dmn-efesto-compilation/src/test/java/org/kie/dmn/efesto/compiler/service/AbstractKieCompilerServiceDMNTest.java
@@ -22,23 +22,32 @@ import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
-
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+import org.junit.jupiter.api.Test;
+import org.kie.dmn.api.identifiers.LocalComponentIdDmn;
 import org.kie.dmn.core.pmml.EfestoPMMLUtils;
 import org.kie.dmn.efesto.compiler.model.DmnCompilationContext;
 import org.kie.dmn.efesto.compiler.model.DmnCompilationContextImpl;
+import org.kie.dmn.efesto.compiler.model.EfestoCallableOutputDMN;
+import org.kie.dmn.validation.DMNValidator;
 import org.kie.efesto.common.api.identifiers.ModelLocalUriId;
 import org.kie.efesto.common.api.io.MemoryFile;
 import org.kie.efesto.common.api.model.EfestoCompilationContext;
 import org.kie.efesto.common.core.storage.ContextStorage;
 import 
org.kie.efesto.compilationmanager.api.exceptions.EfestoCompilationManagerException;
+import org.kie.efesto.compilationmanager.api.model.EfestoCompilationOutput;
 import org.kie.efesto.compilationmanager.api.model.EfestoInputStreamResource;
+import org.kie.efesto.compilationmanager.api.model.EfestoResource;
 import org.kie.efesto.compilationmanager.api.service.CompilationManager;
 import org.kie.efesto.compilationmanager.api.service.KieCompilerService;
 import 
org.kie.efesto.compilationmanager.core.model.EfestoCompilationContextImpl;
 import 
org.kie.efesto.compilationmanager.core.model.EfestoCompilationContextUtils;
 
+import static org.assertj.core.api.Assertions.assertThat;
 
-@SuppressWarnings("rawtypes")
+@SuppressWarnings({"rawtypes", "unchecked"})
 public abstract class AbstractKieCompilerServiceDMNTest {
 
     private static final String VALID_MODELS = "valid_models";
@@ -46,6 +55,10 @@ public abstract class AbstractKieCompilerServiceDMNTest {
     private static final String VALID_MODELS_DMN1 = String.format("%s%s", 
VALID_MODELS, DMN_1);
     private static final String VALID_MODELS_DMN1_PMML = 
String.format("%s%s/pmml", VALID_MODELS, DMN_1);
 
+    private static final String INVALID_MODELS = "invalid_models";
+    private static final String DMN_5 = "/DMNv1_5";
+    private static final String INVALID_MODELS_DMN5 = String.format("%s%s", 
INVALID_MODELS, DMN_5);
+
     protected static final String DMN_MODEL_NAME = "loan";
     protected static final String DMN_FILE_NAME = "loan";
     protected static final String DMN_NAMESPACE = 
"https://kiegroup.org/dmn/_79B69A7F-5A25-4B53-BD6A-3216EDC246ED";;
@@ -54,6 +67,14 @@ public abstract class AbstractKieCompilerServiceDMNTest {
     protected static final String DMN_FULL_PATH_FILE_NAME_NO_SUFFIX = 
String.format("%s/%s", VALID_MODELS_DMN1, DMN_FILE_NAME);
     protected static MemoryFile dmnFile;
 
+    protected static final String DMN_INVALID_MODEL_NAME = 
"DMN_9A35369C-E843-446F-A720-2A41B827FB8D";
+    protected static final String DMN_INVALID_FILE_NAME = "DMN-Invalid";
+    protected static final String DMN_INVALID_NAMESPACE = 
"https://kie.org/dmn/_C41C5BB7-C6D3-44AC-AA11-8C6669A1067C";;
+    protected static final String DMN_INVALID_FULL_FILE_NAME = 
String.format("%s.dmn", DMN_INVALID_FILE_NAME);
+    protected static final String DMN_INVALID_FULL_PATH_FILE_NAME = 
String.format("%s/%s", INVALID_MODELS_DMN5,  DMN_INVALID_FULL_FILE_NAME);
+    protected static final String DMN_INVALID_FULL_PATH_FILE_NAME_NO_SUFFIX = 
String.format("%s/%s", INVALID_MODELS_DMN5, DMN_INVALID_FILE_NAME);
+    protected static MemoryFile dmnInvalidFile;
+
     protected static final String DMN_PMML_MODEL_NAME = "TestRegressionDMN";
     protected static final String DMN_PMML_FILE_NAME = "KiePMMLRegression";
 
@@ -71,13 +92,113 @@ public abstract class AbstractKieCompilerServiceDMNTest {
 
     protected static KieCompilerService kieCompilationService;
     protected static DmnCompilationContext dmnCompilationContext;
+    protected static DmnCompilationContext dmnValidatingCompilationContext;
     private static final CompilationManager compilationManager =
             
org.kie.efesto.compilationmanager.api.utils.SPIUtils.getCompilationManager(false).orElseThrow(()
 -> new EfestoCompilationManagerException("Failed to find an instance of 
CompilationManager: please check classpath and dependencies"));
 
 
+    protected static EfestoResource toProcessDmn;
+    protected static EfestoResource toProcessInvalidDmn;
+    protected static EfestoResource toProcessDmnPmml;
+    protected static EfestoResource notToProcessDmn;
+    protected static EfestoResource notToProcessDmnPmml;
+
+
+    @Test
+    void  canManageResourceDmn() {
+        
assertThat(kieCompilationService.canManageResource(toProcessDmn)).isTrue();
+        
assertThat(kieCompilationService.canManageResource(notToProcessDmn)).isFalse();
+    }
+
+    @Test
+    void  canManageResourceDmnPmml() {
+        
assertThat(kieCompilationService.canManageResource(toProcessDmnPmml)).isTrue();
+        
assertThat(kieCompilationService.canManageResource(notToProcessDmnPmml)).isFalse();
+    }
+
+    @Test
+    void  processResourceDmn() {
+        List<EfestoCompilationOutput> retrieved = 
kieCompilationService.processResource(toProcessDmn,
+                                                                               
         dmnCompilationContext);
+        assertThat(retrieved).isNotNull().hasSize(1);
+        EfestoCompilationOutput retrievedOutput = retrieved.get(0);
+        
assertThat(retrievedOutput).isNotNull().isExactlyInstanceOf(EfestoCallableOutputDMN.class);
+        EfestoCallableOutputDMN callableOutput = (EfestoCallableOutputDMN) 
retrievedOutput;
+        ModelLocalUriId modelLocalUriId = callableOutput.getModelLocalUriId();
+        
assertThat(modelLocalUriId).isExactlyInstanceOf(LocalComponentIdDmn.class);
+        LocalComponentIdDmn localComponentIdDmn = (LocalComponentIdDmn) 
modelLocalUriId;
+        
assertThat(localComponentIdDmn.getFileName()).isEqualTo(DMN_FULL_PATH_FILE_NAME_NO_SUFFIX);
+        assertThat(localComponentIdDmn.getName()).isEqualTo(DMN_MODEL_NAME);
+    }
+
+    @Test
+    void  processResourceDmnPmml() {
+        List<EfestoCompilationOutput> retrieved = 
kieCompilationService.processResource(toProcessDmnPmml,
+                                                                               
         dmnCompilationContext);
+        assertThat(retrieved).isNotNull().hasSize(1);
+        EfestoCompilationOutput retrievedOutput = retrieved.get(0);
+        
assertThat(retrievedOutput).isNotNull().isExactlyInstanceOf(EfestoCallableOutputDMN.class);
+        EfestoCallableOutputDMN callableOutput = (EfestoCallableOutputDMN) 
retrievedOutput;
+        ModelLocalUriId modelLocalUriId = callableOutput.getModelLocalUriId();
+        
assertThat(modelLocalUriId).isExactlyInstanceOf(LocalComponentIdDmn.class);
+        LocalComponentIdDmn localComponentIdDmn = (LocalComponentIdDmn) 
modelLocalUriId;
+        
assertThat(localComponentIdDmn.getFileName()).isEqualTo(DMN_PMML_FULL_PATH_FILE_NAME_NO_SUFFIX);
+        
assertThat(localComponentIdDmn.getName()).isEqualTo(DMN_PMML_MODEL_NAME);
+    }
+
+    @Test
+    void  hasCompilationSourceDmn() {
+        kieCompilationService.processResource(toProcessDmn,
+                                              dmnCompilationContext);
+        
assertThat(kieCompilationService.hasCompilationSource(DMN_FULL_PATH_FILE_NAME_NO_SUFFIX)).isTrue();
+    }
+
+    @Test
+    void hasCompilationSourceDmnPmml() {
+        kieCompilationService.processResource(toProcessDmnPmml,
+                                              dmnCompilationContext);
+        
assertThat(kieCompilationService.hasCompilationSource(DMN_PMML_FULL_PATH_FILE_NAME)).isTrue();
+    }
+
+    @Test
+    void getCompilationSourceDmn() {
+        kieCompilationService.processResource(toProcessDmn,
+                                              dmnCompilationContext);
+        String retrieved = 
kieCompilationService.getCompilationSource(DMN_FULL_PATH_FILE_NAME_NO_SUFFIX);
+        assertThat(retrieved).isNotNull();
+        String expected = new String(dmnFile.getContent(), 
StandardCharsets.UTF_8);
+        assertThat(retrieved).isEqualTo(expected);
+    }
+
+    @Test
+    void getCompilationSourceDmnPmml() {
+        kieCompilationService.processResource(toProcessDmnPmml,
+                                              dmnCompilationContext);
+        String retrieved = 
kieCompilationService.getCompilationSource(DMN_PMML_FULL_PATH_FILE_NAME_NO_SUFFIX);
+        assertThat(retrieved).isNotNull();
+        String expected = new String(dmnPmmlFile.getContent(), 
StandardCharsets.UTF_8);
+        assertThat(retrieved).isEqualTo(expected);
+    }
+
+    @Test
+    void withoutValidationWrongModel() {
+        List<?> retrievedList = 
kieCompilationService.processResource(toProcessInvalidDmn,
+                                              dmnCompilationContext);
+        
assertThat(retrievedList).isNotNull().hasSize(1).anyMatch(EfestoCallableOutputDMN.class::isInstance);
+        assertThat(((EfestoCallableOutputDMN) 
retrievedList.get(0)).getAdditionalInfo()).isNotNull().isEmpty();
+    }
+
+    @Test
+    void withValidationWrongModel() {
+        List<?> retrievedList = 
kieCompilationService.processResource(toProcessInvalidDmn,
+                                                                      
dmnValidatingCompilationContext);
+        
assertThat(retrievedList).isNotNull().hasSize(1).anyMatch(EfestoCallableOutputDMN.class::isInstance);
+        assertThat(((EfestoCallableOutputDMN) 
retrievedList.get(0)).getAdditionalInfo()).isNotNull().hasSize(1);
+    }
 
     protected static void commonSetUp() {
         dmnFile = getMemoryFile(DMN_FULL_PATH_FILE_NAME);
+        dmnInvalidFile = getMemoryFile(DMN_INVALID_FULL_PATH_FILE_NAME);
         pmmlFile = getMemoryFile(PMML_FULL_PATH_FILE_NAME);
         dmnPmmlFile = getMemoryFile(DMN_PMML_FULL_PATH_FILE_NAME);
         EfestoCompilationContext pmmlCompilationContext = 
EfestoCompilationContextUtils.buildWithParentClassLoader(Thread.currentThread().getContextClassLoader());
@@ -88,6 +209,10 @@ public abstract class AbstractKieCompilerServiceDMNTest {
         ContextStorage.putEfestoCompilationContext(getPmmlModelLocalUriId(), 
pmmlCompilationContext);
         ContextStorage.putEfestoCompilationSource(getPmmlModelLocalUriId(), 
new String( pmmlFile.getContent(), StandardCharsets.UTF_8));
         dmnCompilationContext = (DmnCompilationContext) 
EfestoCompilationContextUtils.buildFromContext((EfestoCompilationContextImpl) 
pmmlCompilationContext, DmnCompilationContextImpl.class);
+        dmnValidatingCompilationContext = 
DmnCompilationContext.buildWithEfestoCompilationContext((EfestoCompilationContextImpl)
 pmmlCompilationContext,
+                                                                               
                                           Collections.EMPTY_SET,
+                                                                               
                                           
Set.of(DMNValidator.Validation.values()),
+                                                                               
                                           null);
     }
 
     private static MemoryFile getMemoryFile(String fullFilePath) {
diff --git 
a/kie-dmn/kie-dmn-efesto-compilation/src/test/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNFileSetTest.java
 
b/kie-dmn/kie-dmn-efesto-compilation/src/test/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNFileSetTest.java
new file mode 100644
index 0000000000..21b1f0e649
--- /dev/null
+++ 
b/kie-dmn/kie-dmn-efesto-compilation/src/test/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNFileSetTest.java
@@ -0,0 +1,56 @@
+/*
+ * 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.dmn.efesto.compiler.service;
+
+import java.util.Set;
+import org.junit.jupiter.api.BeforeAll;
+import org.kie.dmn.api.identifiers.DmnIdFactory;
+import org.kie.dmn.api.identifiers.KieDmnComponentRoot;
+import org.kie.efesto.common.api.identifiers.EfestoAppRoot;
+import org.kie.efesto.common.api.identifiers.ModelLocalUriId;
+import org.kie.efesto.compilationmanager.api.model.EfestoFileResource;
+import org.kie.efesto.compilationmanager.api.model.EfestoFileSetResource;
+
+class KieCompilerServiceDMNFileSetTest extends 
AbstractKieCompilerServiceDMNTest {
+
+    @BeforeAll
+    static void setUp() {
+        kieCompilationService = new KieCompilerServiceDMNFileSet();
+        commonSetUp();
+        ModelLocalUriId toProcessDmnId = new EfestoAppRoot()
+                .get(KieDmnComponentRoot.class)
+                .get(DmnIdFactory.class)
+                .get(DMN_FILE_NAME);
+        toProcessDmn = new EfestoFileSetResource(Set.of(dmnFile), 
toProcessDmnId);
+        ModelLocalUriId toProcessInvalidDmnId = new EfestoAppRoot()
+                .get(KieDmnComponentRoot.class)
+                .get(DmnIdFactory.class)
+                .get(DMN_INVALID_FILE_NAME);
+        toProcessInvalidDmn = new 
EfestoFileSetResource(Set.of(dmnInvalidFile), toProcessInvalidDmnId);
+
+        ModelLocalUriId toProcessDmnPmmlId = new EfestoAppRoot()
+                .get(KieDmnComponentRoot.class)
+                .get(DmnIdFactory.class)
+                .get(DMN_PMML_FILE_NAME);
+        toProcessDmnPmml = new EfestoFileSetResource(Set.of(dmnPmmlFile), 
toProcessDmnPmmlId);
+
+        notToProcessDmn = new EfestoFileResource(dmnFile);
+        notToProcessDmnPmml = new EfestoFileResource(dmnPmmlFile);
+    }
+}
\ No newline at end of file
diff --git 
a/kie-dmn/kie-dmn-efesto-compilation/src/test/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNFileTest.java
 
b/kie-dmn/kie-dmn-efesto-compilation/src/test/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNFileTest.java
index 2f5277a6ae..100076e6d2 100644
--- 
a/kie-dmn/kie-dmn-efesto-compilation/src/test/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNFileTest.java
+++ 
b/kie-dmn/kie-dmn-efesto-compilation/src/test/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNFileTest.java
@@ -20,113 +20,23 @@ package org.kie.dmn.efesto.compiler.service;
 
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
-import java.util.List;
-
 import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
-import org.kie.dmn.api.identifiers.LocalComponentIdDmn;
-import org.kie.dmn.efesto.compiler.model.EfestoCallableOutputDMN;
-import org.kie.efesto.common.api.identifiers.ModelLocalUriId;
-import org.kie.efesto.compilationmanager.api.model.EfestoCompilationOutput;
 import org.kie.efesto.compilationmanager.api.model.EfestoFileResource;
 import org.kie.efesto.compilationmanager.api.model.EfestoInputStreamResource;
 
-import static org.assertj.core.api.Assertions.assertThat;
-
-
-@SuppressWarnings("unchecked")
 class KieCompilerServiceDMNFileTest extends AbstractKieCompilerServiceDMNTest {
 
-    private static EfestoFileResource toProcessDmn;
-    private static EfestoFileResource toProcessDmnPmml;
 
     @BeforeAll
     static void setUp() {
         kieCompilationService = new KieCompilerServiceDMNFile();
         commonSetUp();
         toProcessDmn = new EfestoFileResource(dmnFile);
+        toProcessInvalidDmn = new EfestoFileResource(dmnInvalidFile);
         toProcessDmnPmml = new EfestoFileResource(dmnPmmlFile);
+        InputStream notToProcessDmnIs = new 
ByteArrayInputStream(dmnFile.getContent());
+        notToProcessDmn = new EfestoInputStreamResource(notToProcessDmnIs, 
DMN_FULL_PATH_FILE_NAME);
+        InputStream notToProcessDmnPmmlIs = new ByteArrayInputStream( 
dmnPmmlFile.getContent());
+        notToProcessDmnPmml = new 
EfestoInputStreamResource(notToProcessDmnPmmlIs, DMN_PMML_FULL_PATH_FILE_NAME);
     }
-
-    @Test
-    void  canManageResourceDmn() {
-        
assertThat(kieCompilationService.canManageResource(toProcessDmn)).isTrue();
-        InputStream is = new ByteArrayInputStream(dmnFile.getContent());
-        EfestoInputStreamResource notToProcess = new 
EfestoInputStreamResource(is, DMN_FULL_PATH_FILE_NAME);
-        
assertThat(kieCompilationService.canManageResource(notToProcess)).isFalse();
-    }
-
-    @Test
-    void  canManageResourceDmnPmml() {
-        
assertThat(kieCompilationService.canManageResource(toProcessDmnPmml)).isTrue();
-        InputStream is = new ByteArrayInputStream( dmnPmmlFile.getContent());
-        EfestoInputStreamResource notToProcess = new 
EfestoInputStreamResource(is, DMN_PMML_FULL_PATH_FILE_NAME);
-        
assertThat(kieCompilationService.canManageResource(notToProcess)).isFalse();
-    }
-
-    @Test
-    void  processResourceDmn() {
-        List<EfestoCompilationOutput> retrieved = 
kieCompilationService.processResource(toProcessDmn,
-                                                                               
         dmnCompilationContext);
-        assertThat(retrieved).isNotNull().hasSize(1);
-        EfestoCompilationOutput retrievedOutput = retrieved.get(0);
-        
assertThat(retrievedOutput).isNotNull().isExactlyInstanceOf(EfestoCallableOutputDMN.class);
-        EfestoCallableOutputDMN callableOutput = (EfestoCallableOutputDMN) 
retrievedOutput;
-        ModelLocalUriId modelLocalUriId = callableOutput.getModelLocalUriId();
-        
assertThat(modelLocalUriId).isExactlyInstanceOf(LocalComponentIdDmn.class);
-        LocalComponentIdDmn localComponentIdDmn = (LocalComponentIdDmn) 
modelLocalUriId;
-        
assertThat(localComponentIdDmn.getFileName()).isEqualTo(DMN_FULL_PATH_FILE_NAME_NO_SUFFIX);
-        assertThat(localComponentIdDmn.getName()).isEqualTo(DMN_MODEL_NAME);
-    }
-
-    @Test
-    void  processResourceDmnPmml() {
-        List<EfestoCompilationOutput> retrieved = 
kieCompilationService.processResource(toProcessDmnPmml,
-                                                                               
         dmnCompilationContext);
-        assertThat(retrieved).isNotNull().hasSize(1);
-        EfestoCompilationOutput retrievedOutput = retrieved.get(0);
-        
assertThat(retrievedOutput).isNotNull().isExactlyInstanceOf(EfestoCallableOutputDMN.class);
-        EfestoCallableOutputDMN callableOutput = (EfestoCallableOutputDMN) 
retrievedOutput;
-        ModelLocalUriId modelLocalUriId = callableOutput.getModelLocalUriId();
-        
assertThat(modelLocalUriId).isExactlyInstanceOf(LocalComponentIdDmn.class);
-        LocalComponentIdDmn localComponentIdDmn = (LocalComponentIdDmn) 
modelLocalUriId;
-        
assertThat(localComponentIdDmn.getFileName()).isEqualTo(DMN_PMML_FULL_PATH_FILE_NAME_NO_SUFFIX);
-        
assertThat(localComponentIdDmn.getName()).isEqualTo(DMN_PMML_MODEL_NAME);
-    }
-
-    @Test
-    void  hasCompilationSourceDmn() {
-        kieCompilationService.processResource(toProcessDmn,
-                                              dmnCompilationContext);
-        
assertThat(kieCompilationService.hasCompilationSource(DMN_FULL_PATH_FILE_NAME)).isTrue();
-    }
-
-    @Test
-    void hasCompilationSourceDmnPmml() {
-        kieCompilationService.processResource(toProcessDmnPmml,
-                                              dmnCompilationContext);
-        
assertThat(kieCompilationService.hasCompilationSource(DMN_PMML_FULL_PATH_FILE_NAME)).isTrue();
-    }
-
-    @Test
-    void getCompilationSourceDmn() {
-        kieCompilationService.processResource(toProcessDmn,
-                                              dmnCompilationContext);
-        String retrieved = 
kieCompilationService.getCompilationSource(DMN_FULL_PATH_FILE_NAME);
-        assertThat(retrieved).isNotNull();
-        String expected = new String(dmnFile.getContent(), 
StandardCharsets.UTF_8);
-        assertThat(retrieved).isEqualTo(expected);
-    }
-
-    @Test
-    void getCompilationSourceDmnPmml() {
-        kieCompilationService.processResource(toProcessDmnPmml,
-                                              dmnCompilationContext);
-        String retrieved = 
kieCompilationService.getCompilationSource(DMN_PMML_FULL_PATH_FILE_NAME);
-        assertThat(retrieved).isNotNull();
-        String expected = new String(dmnPmmlFile.getContent(), 
StandardCharsets.UTF_8);
-        assertThat(retrieved).isEqualTo(expected);
-    }
-
 }
\ No newline at end of file
diff --git 
a/kie-dmn/kie-dmn-efesto-compilation/src/test/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNInputStreamTest.java
 
b/kie-dmn/kie-dmn-efesto-compilation/src/test/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNInputStreamTest.java
index ac45b36f77..6167ba06dc 100644
--- 
a/kie-dmn/kie-dmn-efesto-compilation/src/test/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNInputStreamTest.java
+++ 
b/kie-dmn/kie-dmn-efesto-compilation/src/test/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNInputStreamTest.java
@@ -20,77 +20,32 @@ package org.kie.dmn.efesto.compiler.service;
 
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
-import java.util.List;
-
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.kie.dmn.api.identifiers.LocalComponentIdDmn;
-import org.kie.dmn.efesto.compiler.model.DmnCompilationContext;
-import org.kie.dmn.efesto.compiler.model.EfestoCallableOutputDMN;
-import org.kie.efesto.common.api.identifiers.ModelLocalUriId;
-import org.kie.efesto.compilationmanager.api.model.EfestoCompilationOutput;
 import org.kie.efesto.compilationmanager.api.model.EfestoFileResource;
 import org.kie.efesto.compilationmanager.api.model.EfestoInputStreamResource;
 
-import static org.assertj.core.api.Assertions.assertThat;
-
-@SuppressWarnings("unchecked")
 class KieCompilerServiceDMNInputStreamTest extends 
AbstractKieCompilerServiceDMNTest {
 
-    private static EfestoInputStreamResource toProcess;
 
     @BeforeAll
     static void setUp() {
         kieCompilationService = new KieCompilerServiceDMNInputStream();
         commonSetUp();
+        notToProcessDmn = new EfestoFileResource(dmnFile);
+        notToProcessDmnPmml = new EfestoFileResource(dmnPmmlFile);
     }
 
     @BeforeEach
     void init() {
-        InputStream is = new ByteArrayInputStream(dmnFile.getContent());
-        toProcess = new EfestoInputStreamResource(is,  
DMN_FULL_PATH_FILE_NAME);
-    }
+        InputStream toProcessDmnIs = new 
ByteArrayInputStream(dmnFile.getContent());
+        toProcessDmn = new EfestoInputStreamResource(toProcessDmnIs,  
DMN_FULL_PATH_FILE_NAME);
 
-    @Test
-    void canManageResource() {
-        
assertThat(kieCompilationService.canManageResource(toProcess)).isTrue();
-        EfestoFileResource notToProcess = new EfestoFileResource(dmnFile);
-        
assertThat(kieCompilationService.canManageResource(notToProcess)).isFalse();
-    }
+        InputStream toProcessDmnPmmlIs = new 
ByteArrayInputStream(dmnPmmlFile.getContent());
+        toProcessDmnPmml = new EfestoInputStreamResource(toProcessDmnPmmlIs,  
DMN_PMML_FULL_PATH_FILE_NAME);
 
-    @Test
-    void processResource() {
-        List<EfestoCompilationOutput> retrieved = 
kieCompilationService.processResource(toProcess,
-                                                                               
         
DmnCompilationContext.buildWithParentClassLoader(Thread.currentThread().getContextClassLoader()));
-        assertThat(retrieved).isNotNull().hasSize(1);
-        EfestoCompilationOutput retrievedOutput = retrieved.get(0);
-        
assertThat(retrievedOutput).isNotNull().isExactlyInstanceOf(EfestoCallableOutputDMN.class);
-        EfestoCallableOutputDMN callableOutput = (EfestoCallableOutputDMN) 
retrievedOutput;
-        ModelLocalUriId modelLocalUriId = callableOutput.getModelLocalUriId();
-        
assertThat(modelLocalUriId).isExactlyInstanceOf(LocalComponentIdDmn.class);
-        LocalComponentIdDmn localComponentIdDmn = (LocalComponentIdDmn) 
modelLocalUriId;
-        
assertThat(localComponentIdDmn.getFileName()).isEqualTo(DMN_FULL_PATH_FILE_NAME_NO_SUFFIX);
-        assertThat(localComponentIdDmn.getName()).isEqualTo(DMN_MODEL_NAME);
+        InputStream toProcessInvalidDmnIs = new 
ByteArrayInputStream(dmnInvalidFile.getContent());
+        toProcessInvalidDmn = new 
EfestoInputStreamResource(toProcessInvalidDmnIs,  
DMN_INVALID_FULL_PATH_FILE_NAME);
     }
 
-    @Test
-    void hasCompilationSource() {
-        kieCompilationService.processResource(toProcess,
-                                              
DmnCompilationContext.buildWithParentClassLoader(Thread.currentThread().getContextClassLoader()));
-        
assertThat(kieCompilationService.hasCompilationSource(DMN_FULL_FILE_NAME)).isTrue();
-    }
-
-    @Test
-    void getCompilationSource() {
-        kieCompilationService.processResource(toProcess,
-                                              
DmnCompilationContext.buildWithParentClassLoader(Thread.currentThread().getContextClassLoader()));
-        String retrieved = 
kieCompilationService.getCompilationSource(DMN_FULL_FILE_NAME);
-        assertThat(retrieved).isNotNull();
-        String expected = new String(dmnFile.getContent(), 
StandardCharsets.UTF_8);
-        assertThat(retrieved).isEqualTo(expected);
-    }
-
-
 }
\ No newline at end of file
diff --git 
a/kie-dmn/kie-dmn-efesto-compilation/src/test/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNResourceTest.java
 
b/kie-dmn/kie-dmn-efesto-compilation/src/test/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNResourceTest.java
index 94c1c310ff..cdf71b7bf8 100644
--- 
a/kie-dmn/kie-dmn-efesto-compilation/src/test/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNResourceTest.java
+++ 
b/kie-dmn/kie-dmn-efesto-compilation/src/test/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNResourceTest.java
@@ -18,90 +18,30 @@
  */
 package org.kie.dmn.efesto.compiler.service;
 
-import java.nio.charset.StandardCharsets;
-import java.util.List;
 import java.util.Set;
 import org.drools.io.ByteArrayResource;
 import org.drools.io.FileSystemResource;
 import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
 import org.kie.api.io.Resource;
-import org.kie.dmn.api.identifiers.LocalComponentIdDmn;
 import org.kie.dmn.efesto.compiler.model.DMNResourceSetResource;
-import org.kie.dmn.efesto.compiler.model.EfestoCallableOutputDMN;
 import org.kie.efesto.common.api.identifiers.LocalUri;
 import org.kie.efesto.common.api.identifiers.ModelLocalUriId;
-import org.kie.efesto.compilationmanager.api.model.EfestoCompilationOutput;
-import org.kie.efesto.compilationmanager.api.model.EfestoFileSetResource;
 
-import static org.assertj.core.api.Assertions.assertThat;
-
-@SuppressWarnings("unchecked")
 class KieCompilerServiceDMNResourceTest extends 
AbstractKieCompilerServiceDMNTest {
 
-    private static Resource toProcessDmn;
-    private static Resource toProcessDmnPmml;
-    private static DMNResourceSetResource toProcess;
-    private static ModelLocalUriId dmnModelLocalUriId;
-
     @BeforeAll
     static void setUp() {
         kieCompilationService = new KieCompilerServiceDMNResourceSet();
         commonSetUp();
-        toProcessDmn = new FileSystemResource(dmnFile);
-        toProcessDmnPmml = new ByteArrayResource(dmnPmmlFile.getContent());
-        toProcessDmnPmml.setSourcePath(DMN_PMML_FULL_PATH_FILE_NAME_NO_SUFFIX);
-        dmnModelLocalUriId = new 
ModelLocalUriId(LocalUri.Root.append("dmn").append(DMN_MODEL_NAME));
-        toProcess = new DMNResourceSetResource(Set.of(toProcessDmn, 
toProcessDmnPmml), dmnModelLocalUriId);
-    }
-
-    @Test
-    void canManageResourceSet() {
-        
assertThat(kieCompilationService.canManageResource(toProcess)).isTrue();
-        EfestoFileSetResource notToProcess = new 
EfestoFileSetResource(Set.of(dmnFile, dmnPmmlFile), dmnModelLocalUriId);
-        
assertThat(kieCompilationService.canManageResource(notToProcess)).isFalse();
-    }
-
-
-    @Test
-    void processResourceSet() {
-        List<EfestoCompilationOutput> retrieved = 
kieCompilationService.processResource(toProcess,
-                                                                               
         dmnCompilationContext);
-        assertThat(retrieved).isNotNull().hasSize(2);
-        retrieved.forEach(retrievedOutput -> {
-            
assertThat(retrievedOutput).isNotNull().isExactlyInstanceOf(EfestoCallableOutputDMN.class);
-            EfestoCallableOutputDMN callableOutput = (EfestoCallableOutputDMN) 
retrievedOutput;
-            ModelLocalUriId modelLocalUriId = 
callableOutput.getModelLocalUriId();
-            
assertThat(modelLocalUriId).isExactlyInstanceOf(LocalComponentIdDmn.class);
-            LocalComponentIdDmn localComponentIdDmn = (LocalComponentIdDmn) 
modelLocalUriId;
-            String fileName = localComponentIdDmn.getFileName();
-            String name = localComponentIdDmn.getName();
-            assertThat((fileName.equals(DMN_FULL_PATH_FILE_NAME_NO_SUFFIX) && 
name.equals(DMN_MODEL_NAME)) ||
-                               
(fileName.equals(DMN_PMML_FULL_PATH_FILE_NAME_NO_SUFFIX) && 
name.equals(DMN_PMML_MODEL_NAME)))
-                    .isTrue();
-        });
-    }
-
-    @Test
-    void hasCompilationSource() {
-        kieCompilationService.processResource(toProcess,
-                                              dmnCompilationContext);
-        
assertThat(kieCompilationService.hasCompilationSource(DMN_FULL_PATH_FILE_NAME)).isTrue();
-        
assertThat(kieCompilationService.hasCompilationSource(DMN_PMML_MODEL_NAME)).isTrue();
+        Resource dmnResource = new FileSystemResource(dmnFile);
+        Resource dmnPmmlResources = new 
ByteArrayResource(dmnPmmlFile.getContent());
+        Resource dmnInvalidResource = new FileSystemResource(dmnInvalidFile);
+        dmnPmmlResources.setSourcePath(DMN_PMML_FULL_PATH_FILE_NAME_NO_SUFFIX);
+        ModelLocalUriId dmnModelLocalUriId = new 
ModelLocalUriId(LocalUri.Root.append("dmn").append(DMN_MODEL_NAME));
+        toProcessDmn = new DMNResourceSetResource(Set.of(dmnResource), 
dmnModelLocalUriId);
+        ModelLocalUriId dmnPmmlModelLocalUriId = new 
ModelLocalUriId(LocalUri.Root.append("dmn").append(DMN_PMML_MODEL_NAME));
+        toProcessDmnPmml = new 
DMNResourceSetResource(Set.of(dmnPmmlResources), dmnPmmlModelLocalUriId);
+        ModelLocalUriId dmnInvalidModelLocalUriId = new 
ModelLocalUriId(LocalUri.Root.append("dmn").append(DMN_INVALID_MODEL_NAME));
+        toProcessInvalidDmn = new 
DMNResourceSetResource(Set.of(dmnInvalidResource), dmnInvalidModelLocalUriId);
     }
-
-    @Test
-    void getCompilationSource() {
-        kieCompilationService.processResource(toProcess,
-                                              dmnCompilationContext);
-        String retrieved = 
kieCompilationService.getCompilationSource(DMN_FULL_PATH_FILE_NAME);
-        assertThat(retrieved).isNotNull();
-        String expected = new String(dmnFile.getContent(), 
StandardCharsets.UTF_8);
-        assertThat(retrieved).isEqualTo(expected);
-        retrieved = 
kieCompilationService.getCompilationSource(DMN_PMML_MODEL_NAME);
-        assertThat(retrieved).isNotNull();
-        expected = new String(dmnPmmlFile.getContent(), 
StandardCharsets.UTF_8);
-        assertThat(retrieved).isEqualTo(expected);
-    }
-
 }
\ No newline at end of file
diff --git 
a/kie-dmn/kie-dmn-efesto-compilation/src/test/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNStringTest.java
 
b/kie-dmn/kie-dmn-efesto-compilation/src/test/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNStringTest.java
new file mode 100644
index 0000000000..8f16663cd2
--- /dev/null
+++ 
b/kie-dmn/kie-dmn-efesto-compilation/src/test/java/org/kie/dmn/efesto/compiler/service/KieCompilerServiceDMNStringTest.java
@@ -0,0 +1,53 @@
+/*
+ * 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.dmn.efesto.compiler.service;
+
+import org.junit.jupiter.api.BeforeAll;
+import org.kie.dmn.api.identifiers.DmnIdFactory;
+import org.kie.dmn.api.identifiers.KieDmnComponentRoot;
+import org.kie.efesto.common.api.identifiers.EfestoAppRoot;
+import org.kie.efesto.common.api.identifiers.ModelLocalUriId;
+import org.kie.efesto.compilationmanager.api.model.EfestoStringResource;
+
+class KieCompilerServiceDMNStringTest extends 
AbstractKieCompilerServiceDMNTest {
+
+
+    @BeforeAll
+    static void setUp() {
+        kieCompilationService = new KieCompilerServiceDMNString();
+        commonSetUp();
+        ModelLocalUriId toProcessDmnId = new EfestoAppRoot()
+                .get(KieDmnComponentRoot.class)
+                .get(DmnIdFactory.class)
+                .get(DMN_FULL_PATH_FILE_NAME_NO_SUFFIX, DMN_MODEL_NAME);
+        toProcessDmn = new EfestoStringResource(new 
String(dmnFile.getContent()), toProcessDmnId);
+
+        ModelLocalUriId toProcessInvalidDmnId = new EfestoAppRoot()
+                .get(KieDmnComponentRoot.class)
+                .get(DmnIdFactory.class)
+                .get(DMN_INVALID_FULL_PATH_FILE_NAME, DMN_INVALID_MODEL_NAME);
+        toProcessInvalidDmn = new EfestoStringResource(new 
String(dmnInvalidFile.getContent()), toProcessInvalidDmnId);
+
+        ModelLocalUriId toProcessDmnPmmlId = new EfestoAppRoot()
+                .get(KieDmnComponentRoot.class)
+                .get(DmnIdFactory.class)
+                .get(DMN_PMML_FULL_PATH_FILE_NAME, DMN_PMML_MODEL_NAME);
+        toProcessDmnPmml = new EfestoStringResource(new 
String(dmnPmmlFile.getContent()), toProcessDmnPmmlId);
+    }
+}
\ No newline at end of file


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


Reply via email to