@SneakyThrows private Map<String, EqlBlock> load(final EqlResourceLoader eqlResourceLoader, final String sqlClassPath) { val dataId = sqlClassPath.replaceAll("/", "."); try { return fileCache.get(sqlClassPath, () -> { val manager = new DiamondManager("EQL", dataId); manager.addDiamondListener(diamondStone -> EqlResourceLoaderHelper.updateBlockCache(diamondStone.getContent(), eqlResourceLoader, sqlClassPath, sqlCache, fileCache)); val sqlContent = manager.getDiamond(); if (sqlContent == null) { log.warn("classpath sql {} not found", dataId); return Optional.absent(); } return Optional.of(EqlResourceLoaderHelper.updateFileCache( sqlContent, eqlResourceLoader, sqlClassPath, eqlLazyLoad)); }).orNull(); } catch (ExecutionException e) { throw Throwables.getRootCause(e); } }
@Override public void onLoad() { diamondManager = new DiamondManager(EQL_CONFIG_GROUP_NAME, connectionName); val eqlConfig = new DefaultEqlConfigDecorator(this); diamondListener = diamondStone -> EqlConfigManager.invalidateCache(eqlConfig); diamondManager.addDiamondListener(diamondListener); }
@Override public void afterPropertiesSet() throws Exception { DiamondManager diamondManager = new DiamondManager(getGroup(), getDataId()); String triggers = diamondManager.getDiamond(); List<TriggerBean> triggerBeans = parseTriggers(triggers); addTriggerBeans(triggerBeans); diamondManager.addDiamondListener(new DiamondListenerAdapter() { @Override public void accept(DiamondStone diamondStone) { deleteOldTriggers(); String triggers = diamondStone.getContent(); List<TriggerBean> triggerBeans = parseTriggers(triggers); addTriggerBeans(triggerBeans); } }); }