fix #2695 use error_code
This commit is contained in:
parent
3eeb8cb839
commit
b4b47d6b01
1 changed files with 43 additions and 5 deletions
|
@ -15,11 +15,21 @@
|
|||
*/
|
||||
package org.codelibs.fess.mylasta.direction.sponsor;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
import java.util.UUID;
|
||||
import java.util.function.Supplier;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.codelibs.core.lang.StringUtil;
|
||||
import org.codelibs.fess.Constants;
|
||||
import org.codelibs.fess.app.web.api.ApiResult;
|
||||
import org.codelibs.fess.app.web.api.ApiResult.ApiErrorResponse;
|
||||
import org.codelibs.fess.app.web.api.ApiResult.Status;
|
||||
import org.codelibs.fess.util.ComponentUtil;
|
||||
import org.dbflute.optional.OptionalThing;
|
||||
import org.lastaflute.web.api.ApiFailureHook;
|
||||
import org.lastaflute.web.api.ApiFailureResource;
|
||||
|
@ -32,6 +42,8 @@ import org.lastaflute.web.response.JsonResponse;
|
|||
*/
|
||||
public class FessApiFailureHook implements ApiFailureHook { // #change_it for handling API failure
|
||||
|
||||
private static final Logger logger = LogManager.getLogger(FessApiFailureHook.class);
|
||||
|
||||
// ===================================================================================
|
||||
// Definition
|
||||
// ==========
|
||||
|
@ -82,10 +94,36 @@ public class FessApiFailureHook implements ApiFailureHook { // #change_it for ha
|
|||
if (!resource.getMessageList().isEmpty()) {
|
||||
return resource.getMessageList().stream().collect(Collectors.joining(" "));
|
||||
}
|
||||
if (cause != null) {
|
||||
return cause.getMessage();
|
||||
}
|
||||
return "Unknown error";
|
||||
}
|
||||
|
||||
if (cause == null) {
|
||||
return "Unknown error";
|
||||
}
|
||||
|
||||
final Supplier<String> stacktraceString = () -> {
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
if (StringUtil.isBlank(cause.getMessage())) {
|
||||
sb.append(cause.getClass().getName());
|
||||
} else {
|
||||
sb.append(cause.getMessage());
|
||||
}
|
||||
try (final StringWriter sw = new StringWriter(); final PrintWriter pw = new PrintWriter(sw)) {
|
||||
cause.printStackTrace(pw);
|
||||
pw.flush();
|
||||
sb.append(" [ ").append(sw.toString()).append(" ]");
|
||||
} catch (final IOException ignore) {}
|
||||
return sb.toString();
|
||||
};
|
||||
|
||||
if (Constants.TRUE.equalsIgnoreCase(ComponentUtil.getFessConfig().getApiJsonResponseExceptionIncluded())) {
|
||||
return stacktraceString.get();
|
||||
}
|
||||
|
||||
final String errorCode = UUID.randomUUID().toString();
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("[{}] {}", errorCode, stacktraceString.get().replace("\n", "\\n"));
|
||||
} else {
|
||||
logger.warn("[{}] {}", errorCode, cause.getMessage());
|
||||
}
|
||||
return "error_code:" + errorCode;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue