diff --git a/src/main/java/org/codelibs/fess/api/json/JsonApiManager.java b/src/main/java/org/codelibs/fess/api/json/JsonApiManager.java index af06491e4..5dd1c52b0 100644 --- a/src/main/java/org/codelibs/fess/api/json/JsonApiManager.java +++ b/src/main/java/org/codelibs/fess/api/json/JsonApiManager.java @@ -51,7 +51,6 @@ import org.codelibs.fess.util.DocumentUtil; import org.codelibs.fess.util.FacetResponse; import org.codelibs.fess.util.FacetResponse.Field; import org.dbflute.optional.OptionalThing; -import org.elasticsearch.ExceptionsHelper; import org.elasticsearch.common.xcontent.ToXContent; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentFactory; @@ -148,9 +147,12 @@ public class JsonApiManager extends BaseJsonApiManager { final List> documentItems = data.getDocumentItems(); final FacetResponse facetResponse = data.getFacetResponse(); final GeoInfo geoInfo = params.getGeoInfo(); + final String queryId = data.getQueryId(); buf.append("\"q\":"); buf.append(escapeJson(query)); + buf.append(",\"query_id\":"); + buf.append(escapeJson(queryId)); buf.append(",\"exec_time\":"); buf.append(execTime); buf.append(",\"query_time\":"); @@ -272,7 +274,32 @@ public class JsonApiManager extends BaseJsonApiManager { final XContentBuilder builder = XContentFactory.jsonBuilder(); return geoInfo.toQueryBuilder().toXContent(builder, ToXContent.EMPTY_PARAMS).string(); } catch (final Exception e) { - return "{\"error\":\"" + ExceptionsHelper.detailedMessage(e) + "\"}"; + return "{\"error\":\"" + detailedMessage(e) + "\"}"; + } + } + + protected String detailedMessage(Throwable t) { + if (t == null) { + return "Unknown"; + } + if (t.getCause() != null) { + StringBuilder sb = new StringBuilder(); + while (t != null) { + sb.append(t.getClass().getSimpleName()); + if (t.getMessage() != null) { + sb.append("["); + sb.append(t.getMessage()); + sb.append("]"); + } + sb.append("; "); + t = t.getCause(); + if (t != null) { + sb.append("nested: "); + } + } + return sb.toString(); + } else { + return t.getClass().getSimpleName() + "[" + t.getMessage() + "]"; } }