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]