feat(REQ-2516): 完善记录异常逻辑
This commit is contained in:
parent
4e99047398
commit
b05ba57a7d
@ -27,4 +27,8 @@ public interface ExceptionResultHandler<T extends Throwable, R extends Result> {
|
||||
default boolean isRecursive() {
|
||||
return false;
|
||||
}
|
||||
|
||||
default boolean shouldFilter(ExceptionResultHandler<? extends Throwable, ? extends Result> handler, Throwable e) {
|
||||
return handler.getExceptionClass().isAssignableFrom(e.getClass());
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,6 +4,8 @@ import feign.RequestInterceptor;
|
||||
import feign.RequestTemplate;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.slf4j.MDC;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.web.context.request.RequestContextHolder;
|
||||
import org.springframework.web.context.request.ServletRequestAttributes;
|
||||
|
||||
@ -21,6 +23,7 @@ import static cn.axzo.framework.web.exception.BasicRecordExceptionHandler.MICRO_
|
||||
*/
|
||||
public class FeignRecordExceptionInterceptor implements RequestInterceptor {
|
||||
private static final Logger log = LoggerFactory.getLogger(FeignRecordExceptionInterceptor.class);
|
||||
|
||||
@Override
|
||||
public void apply(RequestTemplate template) {
|
||||
HttpServletRequest originalRequest = getOriginalRequest();
|
||||
@ -35,12 +38,19 @@ public class FeignRecordExceptionInterceptor implements RequestInterceptor {
|
||||
|
||||
private void setRequestParams(RequestTemplate template, HttpServletRequest originalRequest) {
|
||||
String[] packageNames = originalRequest.getParameterValues(MICRO_SERVER_RECORD_ERROR_GET_PARAM_NAME);
|
||||
if (Objects.isNull(packageNames) || packageNames.length == 0) {
|
||||
packageNames = StringUtils.commaDelimitedListToStringArray(MDC.get(MICRO_SERVER_RECORD_ERROR_GET_PARAM_NAME));
|
||||
}
|
||||
template.query(MICRO_SERVER_RECORD_ERROR_GET_PARAM_NAME, packageNames);
|
||||
}
|
||||
|
||||
private static void setXMetaDataTag(RequestTemplate template, HttpServletRequest originalRequest) {
|
||||
// 需要传递外部传入的标识
|
||||
template.header(MICRO_SERVER_RECORD_ERROR_HEADER_NAME, originalRequest.getHeader(MICRO_SERVER_RECORD_ERROR_HEADER_NAME));
|
||||
String headerValue = originalRequest.getHeader(MICRO_SERVER_RECORD_ERROR_HEADER_NAME);
|
||||
if (!StringUtils.hasText(headerValue)) {
|
||||
headerValue = MDC.get(MICRO_SERVER_RECORD_ERROR_HEADER_NAME);
|
||||
}
|
||||
template.header(MICRO_SERVER_RECORD_ERROR_HEADER_NAME, headerValue);
|
||||
}
|
||||
|
||||
public static HttpServletRequest getOriginalRequest() {
|
||||
|
||||
@ -1,8 +1,5 @@
|
||||
package cn.axzo.framework.web.filter;
|
||||
|
||||
import cn.axzo.framework.validator.constraints.UTF8;
|
||||
import com.google.common.collect.Lists;
|
||||
import jdk.nashorn.internal.runtime.JSONFunctions;
|
||||
import org.slf4j.MDC;
|
||||
import org.springframework.core.Ordered;
|
||||
import org.springframework.core.PriorityOrdered;
|
||||
@ -14,7 +11,6 @@ import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
|
||||
import static cn.axzo.framework.web.exception.BasicRecordExceptionHandler.MICRO_SERVER_RECORD_ERROR_GET_PARAM_NAME;
|
||||
import static cn.axzo.framework.web.exception.BasicRecordExceptionHandler.MICRO_SERVER_RECORD_ERROR_HEADER_NAME;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user