@Override public <T> T getDynamicStoneCache(String group, String dataId, Object... dynamics) { return (T) new DiamondManager(group, dataId).getDynamicCache(dynamics); }
@Override public <T> T getCache(String group, String dataId) { return (T) new DiamondManager(group, dataId).getCache(); }
@Override public void onRemoval() { diamondManager.removeDiamondListener(diamondListener); } }
@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 String getStone(String group, String dataId) { String diamond = new DiamondManager(group, dataId).getDiamond(); if (diamond == null) return null; return DiamondSubstituter.substitute(diamond, true, group, dataId, null); }
@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); } }); }