public void applyResponse(Response response, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
Fault fault = response.getFault();
if (fault != null) {
FaultInjector faultInjector = buildFaultInjector(httpServletRequest, httpServletResponse);
fault.apply(faultInjector);
httpServletResponse.addHeader(Fault.class.getName(), fault.name());
return;
}
if (response.getStatusMessage() == null) {
httpServletResponse.setStatus(response.getStatus());
} else {
httpServletResponse.setStatus(response.getStatus(), response.getStatusMessage());
}
for (HttpHeader header: response.getHeaders().all()) {
for (String value: header.values()) {
httpServletResponse.addHeader(header.key(), value);
}
}
if (response.shouldAddChunkedDribbleDelay()) {
writeAndTranslateExceptionsWithChunkedDribbleDelay(httpServletResponse, response.getBodyStream(), response.getChunkedDribbleDelay());
} else {
writeAndTranslateExceptions(httpServletResponse, response.getBodyStream());
}
}