private String eval(String name, String def) { ClassLoader previous = setCRaSHLoader(); try { GroovyShell shell = getGroovyShell(); Object ret = shell.getContext().getVariable(name); if (ret instanceof Closure) { log.log(Level.FINEST, "Invoking " + name + " closure"); Closure c = (Closure)ret; ret = c.call(); } else if (ret == null) { log.log(Level.FINEST, "No " + name + " will use empty"); return def; } return String.valueOf(ret); } catch (Exception e) { log.log(Level.SEVERE, "Could not get a " + name + " message, will use empty", e); return def; } finally { setPreviousLoader(previous); } }