private Map<String, CompiledScript> loadAndCompile(List<Event> events) throws RuntimeException { Map<String, CompiledScript> compiledScriptMap = new HashMap<>(); for (Event event : events) { File jsFile = new File("./scripts/" + event.getScript()); CompiledScript compile = null; try { compile = engine.compile(FileUtils.readFileToString(jsFile)); } catch (ScriptException | IOException e) { LOGGER.error("Compile error: " + e.getMessage()); } compiledScriptMap.put(event.getScript(), compile); } return compiledScriptMap; }
private void reloadService() throws RuntimeException { LOGGER.info("Reload event service"); // unsubscribe current events for (Event event : events) { jsonMessaging.unsubscribe(event.getSubject()); LOGGER.debug("Unsubscribe from subject: " + event.getSubject()); } events = Ebean.find(Event.class).findList(); // subscribe to events from db for (Event event : events) { jsonMessaging.subscribe(event.getSubject()); LOGGER.debug("Subscribe from subject: " + event.getSubject()); } // take pause to save/remove new entity try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } // load all scripts, compile and put into map compiledScriptMap = loadAndCompile(events); LOGGER.info("Reload event service done"); }
} else { for (Event event : events) { if (envelope.getSubject().equals(event.getSubject()) || wildCardMatch(event.getSubject(), envelope.getSubject())) { LOGGER.debug("Run compiled script: " + event.getScript()); CompiledScript script = compiledScriptMap.get(event.getScript()); LOGGER.error("Error! Script " + event.getScript() + " is NULL!"); LOGGER.error("Error in script scripts/command/" + event.getScript() + ": " + e.toString()); e.printStackTrace();
jsonMessaging.subscribe(event.getSubject()); LOGGER.debug("Subscribe to subject: " + event.getSubject());