@Override public void write(byte[] array, int offset, int length) { if (charSequenceBuilder != null) { throw new IllegalStateException( "Can't call write(byte[]) after write(CharSequence) has been called."); } if (dataStream == null) { ByteArrayOutputStream stream = new ByteArrayOutputStream(); dataStream = stream; actions.add(ActionType.DATA.action(res -> writeStream(res, stream))); } dataStream.write(array, offset, length); }
@Override public void write(CharSequence sequence) { if (dataStream != null) { throw new IllegalStateException( "Can't call write(CharSequence) after write(byte[]) has been called."); } if (charSequenceBuilder == null) { StringBuilder builder = new StringBuilder(4096); charSequenceBuilder = builder; actions.add(ActionType.DATA.action(res -> { AppendingStringBuffer responseBuffer = new AppendingStringBuffer(builder); List<IResponseFilter> responseFilters = Application.get() .getRequestCycleSettings() .getResponseFilters(); if (responseFilters != null) { for (IResponseFilter filter : responseFilters) { responseBuffer = filter.filter(responseBuffer); } } res.write(responseBuffer); })); } charSequenceBuilder.append(sequence); }
@Override public void sendError(int sc, String msg) { actions.add(ActionType.NORMAL.action(res -> res.sendError(sc, msg))); }
@Override public void sendRedirect(String url) { actions.add(ActionType.REDIRECT.action(res -> res.sendRedirect(url))); }
@Override public void addHeader(String name, String value) { actions.add(ActionType.HEADER.action(res -> res.addHeader(name, value))); }
@Override public void addCookie(Cookie cookie) { actions.add(ActionType.HEADER.action(res -> res.addCookie(cookie))); }
@Override public void setHeader(String name, String value) { actions.add(ActionType.HEADER.action(res -> res.setHeader(name, value))); }
@Override public void setContentType(String mimeType) { actions.add(ActionType.HEADER.action(res -> res.setContentType(mimeType))); }
@Override public void clearCookie(Cookie cookie) { actions.add(ActionType.HEADER.action(res -> res.clearCookie(cookie))); }
@Override public void flush() { actions.add(ActionType.NORMAL.action(WebResponse::flush)); }
@Override public void setStatus(int sc) { actions.add(ActionType.HEADER.action(res -> res.setStatus(sc))); }
@Override public void disableCaching() { actions.add(ActionType.HEADER.action(WebResponse::disableCaching)); }
@Override public void setContentLength(long length) { actions.add(ActionType.HEADER.action(res -> res.setContentLength(length))); }
@Override public void setDateHeader(String name, Time date) { Args.notNull(date, "date"); actions.add(ActionType.HEADER.action(res -> res.setDateHeader(name, date))); }