package com.qianwen.core.excel.extend.aop; import java.util.List; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.qianwen.core.excel.extend.annotation.ResponseExcel; import com.qianwen.core.excel.extend.handler.SheetWriteHandler; import org.springframework.core.MethodParameter; import org.springframework.util.Assert; import org.springframework.web.context.request.NativeWebRequest; import org.springframework.web.method.support.HandlerMethodReturnValueHandler; import org.springframework.web.method.support.ModelAndViewContainer; /* loaded from: blade-starter-excel-9.3.0.0-SNAPSHOT.jar:org/springblade/core/excel/extend/aop/ResponseExcelReturnValueHandler.class */ public class ResponseExcelReturnValueHandler implements HandlerMethodReturnValueHandler { private static final Logger log = LoggerFactory.getLogger(ResponseExcelReturnValueHandler.class); private final List sheetWriteHandlerList; public ResponseExcelReturnValueHandler(final List sheetWriteHandlerList) { this.sheetWriteHandlerList = sheetWriteHandlerList; } public boolean supportsReturnType(MethodParameter parameter) { return parameter.getMethodAnnotation(ResponseExcel.class) != null; } public void handleReturnValue(Object o, MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest nativeWebRequest) throws Exception { HttpServletResponse response = (HttpServletResponse) nativeWebRequest.getNativeResponse(HttpServletResponse.class); Assert.state(response != null, "No HttpServletResponse"); ResponseExcel responseExcel = (ResponseExcel) parameter.getMethodAnnotation(ResponseExcel.class); Assert.state(responseExcel != null, "No @ResponseExcel"); mavContainer.setRequestHandled(true); this.sheetWriteHandlerList.stream().filter(handler -> { return handler.support(o); }).findFirst().ifPresent(handler2 -> { handler2.export(o, response, responseExcel); }); } }