private static EngineInfo initDmnEngineFromResource(URL resourceUrl) {
EngineInfo dmnEngineInfo = dmnEngineInfosByResourceUrl.get(resourceUrl.toString());
if (dmnEngineInfo != null) {
dmnEngineInfos.remove(dmnEngineInfo);
if (dmnEngineInfo.getException() == null) {
String dmnEngineName = dmnEngineInfo.getName();
dmnEngines.remove(dmnEngineName);
dmnEngineInfosByName.remove(dmnEngineName);
}
dmnEngineInfosByResourceUrl.remove(dmnEngineInfo.getResourceUrl());
}
String resourceUrlString = resourceUrl.toString();
try {
LOGGER.info("initializing dmn engine for resource {}", resourceUrl);
DmnEngine dmnEngine = buildDmnEngine(resourceUrl);
String dmnEngineName = dmnEngine.getName();
LOGGER.info("initialised dmn engine {}", dmnEngineName);
dmnEngineInfo = new EngineInfo(dmnEngineName, resourceUrlString, null);
dmnEngines.put(dmnEngineName, dmnEngine);
dmnEngineInfosByName.put(dmnEngineName, dmnEngineInfo);
} catch (Throwable e) {
LOGGER.error("Exception while initializing dmn engine: {}", e.getMessage(), e);
dmnEngineInfo = new EngineInfo(null, resourceUrlString, ExceptionUtils.getStackTrace(e));
}
dmnEngineInfosByResourceUrl.put(resourceUrlString, dmnEngineInfo);
dmnEngineInfos.add(dmnEngineInfo);
return dmnEngineInfo;
}