summaryrefslogtreecommitdiff
path: root/module/ri-engine/src/main/java/io/trygvis/rules/engine/DbIo.java
diff options
context:
space:
mode:
Diffstat (limited to 'module/ri-engine/src/main/java/io/trygvis/rules/engine/DbIo.java')
-rw-r--r--module/ri-engine/src/main/java/io/trygvis/rules/engine/DbIo.java41
1 files changed, 26 insertions, 15 deletions
diff --git a/module/ri-engine/src/main/java/io/trygvis/rules/engine/DbIo.java b/module/ri-engine/src/main/java/io/trygvis/rules/engine/DbIo.java
index d3d309a..e2abd5a 100644
--- a/module/ri-engine/src/main/java/io/trygvis/rules/engine/DbIo.java
+++ b/module/ri-engine/src/main/java/io/trygvis/rules/engine/DbIo.java
@@ -14,9 +14,10 @@ import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator;
import org.drools.core.common.DefaultFactHandle;
import org.drools.core.factmodel.GeneratedFact;
import org.kie.api.KieBase;
-import org.kie.api.definition.type.FactType;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.rule.FactHandle;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.FileWriter;
@@ -27,6 +28,8 @@ import java.util.function.Function;
@SuppressWarnings("unchecked")
public class DbIo {
+ private final Logger logger = LoggerFactory.getLogger(getClass());
+
private final ObjectMapper mapper;
private static final List<String> prioritizedKeys = List.of("key", "name", "fqdn");
@@ -268,9 +271,9 @@ public class DbIo {
}
}
- private static class DbClassLoader extends ClassLoader {
- private final KieBase kieBase;
+ private class DbClassLoader extends ClassLoader {
private final KieContainer container;
+ private final KieBase kieBase;
public DbClassLoader(KieContainer container, KieBase kieBase) {
this.container = container;
@@ -279,35 +282,43 @@ public class DbIo {
@Override
public Class<?> loadClass(String name) throws ClassNotFoundException {
+ logger.info("Loading class {}", name);
try {
- return super.loadClass(name);
+ var klass = super.loadClass(name);
+ logger.info("Found class in super classloader");
+ return klass;
} catch (ClassNotFoundException e) {
var i = name.lastIndexOf('.');
- String pkg, klass;
+ String pkg, simpleName;
if (i == -1) {
pkg = null;
- klass = name;
+ simpleName = name;
} else {
pkg = name.substring(0, i);
- klass = name.substring(i + 1);
+ simpleName = name.substring(i + 1);
}
try {
- return container.getClassLoader().loadClass(name);
+ var klass = container.getClassLoader().loadClass(name);
+ logger.info("Found class in container's classloader");
+ return klass;
} catch (ClassNotFoundException ignore) {
}
- FactType clazz = null;
try {
- clazz = kieBase.getFactType(pkg, klass);
+ logger.info("pkg = {}", pkg);
+ logger.info("simpleName = {}", simpleName);
+ var clazz = kieBase.getFactType(pkg, simpleName);
+ if (clazz != null) {
+ logger.info("Found class as a FactType");
+ return clazz.getFactClass();
+ }
} catch (UnsupportedOperationException ignore) {
- System.out.println("AcmeClassLoader.loadClass: " + name);
- }
- if (clazz == null) {
- throw e;
}
- return clazz.getFactClass();
+ logger.warn("Class not found: {}", name);
+
+ throw e;
}
}
}