public void loadEventsScript(File eventScript) { if (eventScript == null) { return; } GrailsConsole console = GrailsConsole.getInstance(); try { Class<?> scriptClass = classLoader.parseClass(eventScript); if (scriptClass == null) { console.error("Could not load event script (script may be empty): " + eventScript); return; } Script script = (Script) scriptClass.newInstance(); script.setBinding( new Binding(binding.getVariables()) { @SuppressWarnings("rawtypes") @Override public void setVariable(String var, Object o) { final Matcher matcher = EVENT_NAME_PATTERN.matcher(var); if (matcher.matches() && (o instanceof Closure)) { String eventName = matcher.group(1); List<Closure> hooks = globalEventHooks.get(eventName); if (hooks == null) { hooks = new ArrayList<Closure>(); globalEventHooks.put(eventName, hooks); } hooks.add((Closure<?>) o); } super.setVariable(var, o); } }); script.run(); } catch (Throwable e) { StackTraceUtils.deepSanitize(e); console.error( "Error loading event script from file [" + eventScript + "] " + e.getMessage(), e); } }
public void run() { super.run(); }