@Override public void render(final Object object, final Renderer.Context ctx) throws Exception { if (object instanceof File) { File file = (java.io.File) object; ctx.type(MediaType.byFile(file).orElse(MediaType.octetstream)); ctx.send(new FileInputStream(file)); } } },
@Override public void render(final View view, final Context ctx) throws Exception { String name = view.name() + suffix; JadeTemplate template = jadeConfiguration.getTemplate(name); Map<String, Object> locals = ctx.locals(); Map<String, Object> hash = new HashMap<>(); hash.put("_vname", view.name()); hash.put("_vpath", name); // Locale: Locale locale = (Locale) locals.getOrDefault("locale", ctx.locale()); hash.put("locale", locale); // locals & model hash.putAll(locals); hash.putAll(view.model()); String output = jadeConfiguration.renderTemplate(template, hash); ctx.type(MediaType.html).send(output); }
@Override public void render(final Object object, final Renderer.Context ctx) throws Exception { if (!(object instanceof View)) { ctx.type(MediaType.html); ctx.send(object.toString()); } } };
@SuppressWarnings({"rawtypes", "unchecked" }) @Override public void render(final Object value, final Context ctx) throws Exception { Object model = value; /** View? */ if (value instanceof View) { View view = (View) value; String path = path(Route.normalize(prefix + "/" + view.name() + suffix)); Map data = view.model(); model = Rocker.template(path).bind(data); } /** RockerModel: */ if (model instanceof RockerModel) { ArrayOfByteArraysOutput output = ((RockerModel) model).render(ArrayOfByteArraysOutput.FACTORY, template -> { if (template instanceof RequestRockerTemplate) { RequestRockerTemplate rrt = (RequestRockerTemplate) template; rrt.locals = ctx.locals(); } }); ctx.type(MediaType.html) .length(output.getByteLength()) // FIXME: make more efficient. Context should provide a way to send partial results .send(Channels.newInputStream(output.asReadableByteChannel())); } }
@Override public void render(final View view, final Renderer.Context ctx) throws Exception { String vname = view.name(); TemplateSource source = handlebars.getLoader().sourceAt(vname); Template template = handlebars.compile(source); Map<String, Object> locals = ctx.locals(); locals.putIfAbsent("_vname", vname); locals.putIfAbsent("_vpath", source.filename()); // Locale: Locale locale = (Locale) locals.getOrDefault("locale", ctx.locale()); locals.put("locale", locale); com.github.jknack.handlebars.Context context = com.github.jknack.handlebars.Context .newBuilder(view.model()) // merge request locals (req+sessions locals) .combine(locals) .resolver(resolvers) .build(); // rendering it ctx.type(MediaType.html) .send(template.apply(context)); }
@SuppressWarnings({"rawtypes", "unchecked" }) @Override public void render(final View view, final Context ctx) throws FileNotFoundException, Exception { String vname = view.name(); Map<String, Object> vars = ctx.locals(); vars.putIfAbsent("_vname", vname); // Locale: Locale locale = (Locale) vars.getOrDefault("locale", ctx.locale()); Map model = view.model(); vars.forEach(model::putIfAbsent); model.putIfAbsent("xss", new Thlxss(env)); IContext thlctx = new org.thymeleaf.context.Context(locale, model); String output = this.engine.process(vname, thlctx); ctx.type(MediaType.html) .send(output); }
@Override public void render(final Object object, final Context ctx) throws Exception { if (ctx.accepts(this.type)) { ctx.type(this.type) .send(jsonb.toJson(object)); } }
@Override public void render(final Object object, final Renderer.Context ctx) throws Exception { if (object instanceof FileChannel) { ctx.type(MediaType.octetstream); ctx.send((FileChannel) object); } } },
@Override public void render(final Object object, final Renderer.Context ctx) throws Exception { if (object instanceof Reader) { ctx.type(MediaType.html) .send((Reader) object); } } },
@Override public void render(final Object object, final Renderer.Context ctx) throws Exception { if (object instanceof InputStream) { InputStream in = (InputStream) object; ctx.type(MediaType.octetstream) .send(in); } } },
@Override default void render(final Object value, final Renderer.Context ctx) throws Exception { if (value instanceof View) { View view = (View) value; ctx.type(MediaType.html); render(view, ctx); } }
@Override protected void renderValue(final Object value, final Renderer.Context ctx) throws Exception { if (value instanceof CharSequence) { ctx.type(type).send(value.toString()); } else { super.renderValue(value, ctx); } }
@Override public void render(final Object object, final Renderer.Context ctx) throws Exception { if (object instanceof byte[]) { ctx.type(MediaType.octetstream) .send((byte[]) object); } } },
@Override public void render(Object value, Context ctx) throws Exception { if (value instanceof CharSequence) { ctx.type(type).send(value.toString()); } else { super.render(value, ctx); } } }
/** * Set the <code>Content-Type</code> header IF and ONLY IF, no <code>Content-Type</code> was set * yet. * * @param type A suggested type to use if one is missing. * @return This context. */ default Context type(final String type) { return type(MediaType.valueOf(type)); }
@Override public void render(final Object object, final Context ctx) throws Exception { if (ctx.accepts(this.type)) { ctx.type(this.type) .send(gson.toJson(object)); } }
@Override public void render(final Object object, final Renderer.Context ctx) throws Exception { if (object instanceof CharBuffer) { CharBuffer buffer = (CharBuffer) object; ctx.type(MediaType.html) .send(buffer); } } },
@Override public void render(final Object value, final Context ctx) throws Exception { if (value instanceof Asset) { Asset resource = ((Asset) value); ctx.type(resource.type()) .length(resource.length()) .send(resource.stream()); } } },
@Override public void render(final Object object, final Renderer.Context ctx) throws Exception { if (object instanceof ByteBuffer) { ByteBuffer buffer = (ByteBuffer) object; ctx.type(MediaType.octetstream) .send(buffer); } } },
@Override public void render(final Object value, final Renderer.Context ctx) throws Exception { if (ctx.accepts(type) && mapper.canSerialize(value.getClass())) { ctx.type(type); renderValue(value, ctx); } }