private void execute(Writer writer, Callable callable) throws Exception { Object call = callable.call(); execute(writer, call == null ? null : oh.stringify(call)); }
@Override public Writer execute(Writer writer, final List<Object> scopes) { try { final Object object = get(scopes); if (object != null) { if (object instanceof Function) { handleFunction(writer, (Function) object, scopes); } else if (object instanceof Callable) { return handleCallable(writer, (Callable) object, scopes); } else { execute(writer, oh.stringify(object)); } } return super.execute(writer, scopes); } catch (Exception e) { throw new MustacheException("Failed to get value for " + name, e, tc); } }
@Override protected Function<String, String> createFunction(Object resolved) { return s -> { if (s == null) { return null; } else if (resolved instanceof Iterable) { StringJoiner joiner = new StringJoiner(delimiter); for (Object o : (Iterable) resolved) { joiner.add(oh.stringify(o)); } return joiner.toString(); } return s; }; }
@Override protected Function<String, String> createFunction(Object resolved) { return s -> { if (s == null) { return null; } else if (resolved instanceof Iterable) { StringJoiner joiner = new StringJoiner(delimiter); for (Object o : (Iterable) resolved) { joiner.add(oh.stringify(o)); } return joiner.toString(); } return s; }; }
private void execute(Writer writer, Callable callable) throws Exception { Object call = callable.call(); execute(writer, call == null ? null : oh.stringify(call)); }
@Override public Object apply(Object s) { if (s == null) { return null; } else if (resolved instanceof Iterable) { StringBuilder joiner = new StringBuilder(); Iterator it = ((Iterable) resolved).iterator(); while (it.hasNext()) { joiner.append(oh.stringify(it.next())); if (it.hasNext()) { joiner.append(delimiter); } } return joiner.toString(); } return s; } };
protected Writer handleCallable(Writer writer, final Callable callable, final List<Object> scopes) throws Exception { if (les == null) { Object call = callable.call(); execute(writer, call == null ? null : oh.stringify(call)); return super.execute(writer, scopes); } else { // Flush the current writer try { writer.flush(); } catch (IOException e) { throw new MustacheException("Failed to flush writer", e, tc); } final LatchedWriter latchedWriter = new LatchedWriter(writer); final Writer finalWriter = writer; les.execute(() -> { try { Object call = callable.call(); execute(finalWriter, call == null ? null : oh.stringify(call)); latchedWriter.done(); } catch (Throwable e) { latchedWriter.failed(e); } }); return super.execute(latchedWriter, scopes); } }
@Override public Writer execute(Writer writer, final List<Object> scopes) { try { final Object object = get(scopes); if (object != null) { if (object instanceof Function) { handleFunction(writer, (Function) object, scopes); } else if (object instanceof Callable) { return handleCallable(writer, (Callable) object, scopes); } else { execute(writer, oh.stringify(object)); } } return super.execute(writer, scopes); } catch (Exception e) { throw new MustacheException("Failed to get value for " + name, e, tc); } }
@Override public Writer execute(Writer writer, final List<Object> scopes) { try { final Object object = get(scopes); if (object != null) { if (object instanceof Function) { handleFunction(writer, (Function) object, scopes); } else if (object instanceof Callable) { return handleCallable(writer, (Callable) object, scopes); } else { execute(writer, oh.stringify(object)); } } return super.execute(writer, scopes); } catch (Exception e) { throw new MustacheException("Failed to get value for " + name, e, tc); } }
@Override public String apply(Object s) { if (resolved == null) { return null; } try (XContentBuilder builder = XContentBuilder.builder(XContentType.JSON.xContent())) { if (resolved instanceof Iterable) { builder.startArray(); for (Object o : (Iterable) resolved) { builder.value(o); } builder.endArray(); } else if (resolved instanceof Map) { builder.map((Map<String, ?>) resolved); } else { // Do not handle as JSON return oh.stringify(resolved); } return builder.string(); } catch (IOException e) { throw new MustacheException("Failed to convert object to JSON", e); } } };
@Override @SuppressWarnings("unchecked") protected Function<String, String> createFunction(Object resolved) { return s -> { if (resolved == null) { return null; } try (XContentBuilder builder = XContentBuilder.builder(XContentType.JSON.xContent())) { if (resolved == null) { builder.nullValue(); } else if (resolved instanceof Iterable) { builder.startArray(); for (Object o : (Iterable) resolved) { builder.value(o); } builder.endArray(); } else if (resolved instanceof Map) { builder.map((Map<String, ?>) resolved); } else { // Do not handle as JSON return oh.stringify(resolved); } return Strings.toString(builder); } catch (IOException e) { throw new MustacheException("Failed to convert object to JSON", e); } }; }
@Override @SuppressWarnings("unchecked") protected Function<String, String> createFunction(Object resolved) { return s -> { if (resolved == null) { return null; } try (XContentBuilder builder = XContentBuilder.builder(XContentType.JSON.xContent())) { if (resolved == null) { builder.nullValue(); } else if (resolved instanceof Iterable) { builder.startArray(); for (Object o : (Iterable) resolved) { builder.value(o); } builder.endArray(); } else if (resolved instanceof Map) { builder.map((Map<String, ?>) resolved); } else { // Do not handle as JSON return oh.stringify(resolved); } return Strings.toString(builder); } catch (IOException e) { throw new MustacheException("Failed to convert object to JSON", e); } }; }