protected final void renderHeader(XContentBuilder builder, Params params) throws IOException { boolean hasHeader = false; for (String key : headers.keySet()) { if (key.startsWith("es.")) { continue; } if (hasHeader == false) { builder.startObject("header"); hasHeader = true; } List<String> values = headers.get(key); xContentHeader(builder, key, values); } if (hasHeader) { builder.endObject(); } }
@Override public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { Throwable ex = ExceptionsHelper.unwrapCause(this); if (ex != this) { toXContent(builder, params, this); } else { builder.field("type", getExceptionName()); builder.field("reason", getMessage()); for (String key : headers.keySet()) { if (key.startsWith("es.")) { List<String> values = headers.get(key); xContentHeader(builder, key.substring("es.".length()), values); } } innerToXContent(builder, params); renderHeader(builder, params); if (params.paramAsBoolean( REST_EXCEPTION_SKIP_STACK_TRACE, REST_EXCEPTION_SKIP_STACK_TRACE_DEFAULT) == false) { builder.field("stack_trace", ExceptionsHelper.stackTrace(this)); } } return builder; }