protected void renderValue(final Object value, final Renderer.Context ctx) throws Exception { // use UTF-8 and get byte version final byte[] bytes; if (value instanceof JacksonView) { final JacksonView viewResponse = (JacksonView) value; bytes = mapper .writerWithView(viewResponse.view) .writeValueAsBytes(viewResponse.data); } else { bytes = mapper.writeValueAsBytes(value); } ctx.length(bytes.length) .send(bytes); }
protected void renderValue(final Object value, final Renderer.Context ctx) throws Exception { // use UTF-8 and get byte version final byte[] bytes; if (value instanceof JacksonView) { final JacksonView viewResponse = (JacksonView) value; bytes = mapper .writerWithView(viewResponse.view) .writeValueAsBytes(viewResponse.data); } else { bytes = mapper.writeValueAsBytes(value); } ctx.length(bytes.length) .send(bytes); }
@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 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()); } } },
@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 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()); } } },