|
@@ -1,76 +1,76 @@
|
|
|
-package com.gxzc.zen.common.config.json
|
|
|
-
|
|
|
-import com.gxzc.zen.common.config.json.annotation.ZenJsonFilter
|
|
|
-import org.springframework.beans.factory.config.BeanPostProcessor
|
|
|
-import org.springframework.core.MethodParameter
|
|
|
-import org.springframework.http.MediaType
|
|
|
-import org.springframework.http.server.ServletServerHttpRequest
|
|
|
-import org.springframework.http.server.ServletServerHttpResponse
|
|
|
-import org.springframework.stereotype.Component
|
|
|
-import org.springframework.web.context.request.NativeWebRequest
|
|
|
-import org.springframework.web.method.support.HandlerMethodReturnValueHandler
|
|
|
-import org.springframework.web.method.support.ModelAndViewContainer
|
|
|
-import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter
|
|
|
-import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice
|
|
|
-import javax.servlet.http.HttpServletRequest
|
|
|
-import javax.servlet.http.HttpServletResponse
|
|
|
-
|
|
|
-
|
|
|
-/**
|
|
|
- * 自定义Json返回值序列化
|
|
|
- * @author NorthLan
|
|
|
- * @date 2018/3/12
|
|
|
- * @url https://noahlan.com
|
|
|
- */
|
|
|
-@Component
|
|
|
-class ZenJsonResultHandler : HandlerMethodReturnValueHandler, BeanPostProcessor {
|
|
|
- var advices = mutableListOf<ResponseBodyAdvice<Any>>()
|
|
|
-
|
|
|
- override fun supportsReturnType(returnType: MethodParameter): Boolean {
|
|
|
- return returnType.getMethodAnnotation(ZenJsonFilter::class.java) != null
|
|
|
- }
|
|
|
-
|
|
|
- override fun handleReturnValue(returnValue: Any, returnType: MethodParameter, mavContainer: ModelAndViewContainer, webRequest: NativeWebRequest) {
|
|
|
+//package com.gxzc.zen.common.config.json
|
|
|
+//
|
|
|
+//import com.gxzc.zen.common.config.json.annotation.ZenFilter
|
|
|
+//import org.springframework.beans.factory.config.BeanPostProcessor
|
|
|
+//import org.springframework.core.MethodParameter
|
|
|
+//import org.springframework.http.MediaType
|
|
|
+//import org.springframework.http.server.ServletServerHttpRequest
|
|
|
+//import org.springframework.http.server.ServletServerHttpResponse
|
|
|
+//import org.springframework.stereotype.Component
|
|
|
+//import org.springframework.web.context.request.NativeWebRequest
|
|
|
+//import org.springframework.web.method.support.HandlerMethodReturnValueHandler
|
|
|
+//import org.springframework.web.method.support.ModelAndViewContainer
|
|
|
+//import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter
|
|
|
+//import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice
|
|
|
+//import javax.servlet.http.HttpServletRequest
|
|
|
+//import javax.servlet.http.HttpServletResponse
|
|
|
+//
|
|
|
+//
|
|
|
+///**
|
|
|
+// * 自定义Json返回值序列化
|
|
|
+// * @author NorthLan
|
|
|
+// * @date 2018/3/12
|
|
|
+// * @url https://noahlan.com
|
|
|
+// */
|
|
|
+//@Component
|
|
|
+//class ZenJsonResultHandler : HandlerMethodReturnValueHandler, BeanPostProcessor {
|
|
|
+// var advices = mutableListOf<ResponseBodyAdvice<Any>>()
|
|
|
+//
|
|
|
+// override fun supportsReturnType(returnType: MethodParameter): Boolean {
|
|
|
+// return returnType.getMethodAnnotation(ZenFilter::class.java) != null
|
|
|
+// }
|
|
|
+//
|
|
|
+// override fun handleReturnValue(returnValue: Any, returnType: MethodParameter, mavContainer: ModelAndViewContainer, webRequest: NativeWebRequest) {
|
|
|
// mavContainer.isRequestHandled = true
|
|
|
-
|
|
|
- var newReturnValue: Any = returnValue
|
|
|
- advices.forEach {
|
|
|
- if (it.supports(returnType, null)) {
|
|
|
- newReturnValue = it.beforeBodyWrite(returnValue, returnType, MediaType.APPLICATION_JSON_UTF8, null,
|
|
|
- ServletServerHttpRequest(webRequest.getNativeRequest(HttpServletRequest::class.java)),
|
|
|
- ServletServerHttpResponse(webRequest.getNativeResponse(HttpServletResponse::class.java)))
|
|
|
- }
|
|
|
- }
|
|
|
- val response = webRequest.getNativeResponse(HttpServletResponse::class.java)
|
|
|
- val annotations = returnType.methodAnnotations
|
|
|
- val jsonSerializer = ZenJsonSerializer()
|
|
|
- annotations.forEach {
|
|
|
- if (it is ZenJsonFilter) {
|
|
|
- jsonSerializer.filter(it)
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- response.contentType = MediaType.APPLICATION_JSON_UTF8_VALUE
|
|
|
- response.writer.write(jsonSerializer.toJson(newReturnValue))
|
|
|
- }
|
|
|
-
|
|
|
- override fun postProcessBeforeInitialization(bean: Any, beanName: String): Any {
|
|
|
- return bean
|
|
|
- }
|
|
|
-
|
|
|
- @Suppress("UNCHECKED_CAST")
|
|
|
- override fun postProcessAfterInitialization(bean: Any, beanName: String): Any {
|
|
|
- if (bean is ResponseBodyAdvice<*>) {
|
|
|
- advices.add(bean as ResponseBodyAdvice<Any>)
|
|
|
- } else if (bean is RequestMappingHandlerAdapter) {
|
|
|
- val handlers = ArrayList(bean.returnValueHandlers)
|
|
|
- val handler = handlers.firstOrNull { it is ZenJsonResultHandler }?.let { it as ZenJsonResultHandler }
|
|
|
- handler?.let {
|
|
|
- handlers.remove(it)
|
|
|
- handlers.add(0, it)
|
|
|
- bean.returnValueHandlers = handlers // 修改排序到第一位
|
|
|
- }
|
|
|
- }
|
|
|
- return bean
|
|
|
- }
|
|
|
-}
|
|
|
+//
|
|
|
+// var newReturnValue: Any = returnValue
|
|
|
+// advices.forEach {
|
|
|
+// if (it.supports(returnType, null)) {
|
|
|
+// newReturnValue = it.beforeBodyWrite(returnValue, returnType, MediaType.APPLICATION_JSON_UTF8, null,
|
|
|
+// ServletServerHttpRequest(webRequest.getNativeRequest(HttpServletRequest::class.java)),
|
|
|
+// ServletServerHttpResponse(webRequest.getNativeResponse(HttpServletResponse::class.java)))
|
|
|
+// }
|
|
|
+// }
|
|
|
+// val response = webRequest.getNativeResponse(HttpServletResponse::class.java)
|
|
|
+// val annotations = returnType.methodAnnotations
|
|
|
+// val jsonSerializer = ZenJsonSerializer()
|
|
|
+// annotations.forEach {
|
|
|
+// if (it is ZenFilter) {
|
|
|
+// jsonSerializer.filter(it)
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// response.contentType = MediaType.APPLICATION_JSON_UTF8_VALUE
|
|
|
+// response.writer.write(jsonSerializer.toJson(newReturnValue))
|
|
|
+// }
|
|
|
+//
|
|
|
+// override fun postProcessBeforeInitialization(bean: Any, beanName: String): Any {
|
|
|
+// return bean
|
|
|
+// }
|
|
|
+//
|
|
|
+// @Suppress("UNCHECKED_CAST")
|
|
|
+// override fun postProcessAfterInitialization(bean: Any, beanName: String): Any {
|
|
|
+// if (bean is ResponseBodyAdvice<*>) {
|
|
|
+// advices.add(bean as ResponseBodyAdvice<Any>)
|
|
|
+// } else if (bean is RequestMappingHandlerAdapter) {
|
|
|
+// val handlers = ArrayList(bean.returnValueHandlers)
|
|
|
+// val handler = handlers.firstOrNull { it is ZenJsonResultHandler }?.let { it as ZenJsonResultHandler }
|
|
|
+// handler?.let {
|
|
|
+// handlers.remove(it)
|
|
|
+// handlers.add(0, it)
|
|
|
+// bean.returnValueHandlers = handlers // 修改排序到第一位
|
|
|
+// }
|
|
|
+// }
|
|
|
+// return bean
|
|
|
+// }
|
|
|
+//}
|