ChinchuAjith commented on code in PR #6267:
URL: 
https://github.com/apache/incubator-kie-drools/pull/6267#discussion_r2007321188


##########
kie-dmn/kie-dmn-core/src/main/java/org/kie/dmn/core/compiler/DMNImportsUtil.java:
##########
@@ -130,4 +141,123 @@ public static ImportType whichImportType(Import 
importElement) {
                 return ImportType.UNKNOWN;
         }
     }
+
+    /**
+     * Method to resolve the dmn models based on the import type
+     * @param i : object of the Import interface which represents an imported 
resource in a DMN model
+     * @param dmnModels : List of decision models
+     * @param model : represents a DMN model, which includes all the necessary 
components like decision tables and other elements defined in the DMN standard.
+     * @param toMerge : This is a list that will hold DMN models that are to 
be merged later
+     */
+    static void resolveDMNImportType(Import i, Collection<DMNModel> dmnModels, 
DMNModelImpl model, List<DMNModel> toMerge) {
+        Either<String, DMNModel> resolvedResult = 
DMNImportsUtil.resolveImportDMN(i, dmnModels, (DMNModel m) -> new 
QName(m.getNamespace(), m.getName()));
+        DMNModel located = resolvedResult.cata(msg -> {
+            MsgUtil.reportMessage(LOGGER,
+                    DMNMessage.Severity.ERROR,
+                    i,
+                    model,
+                    null,
+                    null,
+                    Msg.IMPORT_NOT_FOUND_FOR_NODE,
+                    msg,
+                    i);
+            return null;
+        }, Function.identity());
+        checkLocatedDMNModel(i, located, model, toMerge);
+
+    }
+
+    /**
+     * Method to import the dmn model to the default namespace
+     * @param i : represents an import object, and it has a name 
(i.getName()). If the name is available, it will be used as the import alias.
+     * @param located : it is a DMN model that has been locate
+     * @param model : it is the target DMN model where the import or merge is 
being applied
+     * @param toMerge : This is a list that will hold DMN models that are to 
be merged later, instead of being directly imported.
+     */
+    static void checkLocatedDMNModel(Import i, DMNModel located, DMNModelImpl 
model, List<DMNModel> toMerge) {
+        if (located != null) {
+            String importAlias = 
Optional.ofNullable(i.getName()).orElse(located.getName());
+            // incubator-kie-issues#852: The idea is to not treat the 
anonymous models as import, but to "merge" them
+            //  with original one,
+            // because otherwise we would have to deal with clashing name 
aliases, or similar issues
+            if (importAlias != null && !importAlias.isEmpty()) {
+                model.setImportAliasForNS(importAlias, located.getNamespace(), 
located.getName());
+                importFromModel(model, located, importAlias);
+            } else {
+                toMerge.add(located);
+            }
+        }
+    }
+
+    /**
+     * Reolve model with import type as PMML
+     * @param model : represents a DMN model, which includes all the necessary 
components like decision tables and other elements defined in the DMN standard.
+     * @param i : object of the Import interface which represents an imported 
resource in a DMN model
+     * @param relativeResolver : is a functional interface used to resolve 
relative paths to resources
+     * @param dmnCompilerConfig : object of the DMNCompilerConfigurationImpl 
which is used to configure how the DMN models should be processed and compiled 
by the DMN engine.
+     */
+    static void resolvePMMLImportType(DMNModelImpl model, Import i, 
Function<String, Reader> relativeResolver, DMNCompilerConfigurationImpl 
dmnCompilerConfig) {
+        ClassLoader rootClassLoader = dmnCompilerConfig.getRootClassLoader();
+        Resource relativeResource = resolveRelativeResource(rootClassLoader, 
model, i, i, relativeResolver);
+        resolvePMMLImportType(model, i, relativeResource, dmnCompilerConfig);
+    }
+
+    /**
+     * Static methods to resolve the pmml models

Review Comment:
   Updated



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


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

Reply via email to