mxd преди 4 години
родител
ревизия
ccb1c70948

+ 10 - 22
src/main/java/org/ssssssss/magicapi/context/RequestContext.java

@@ -1,40 +1,28 @@
 package org.ssssssss.magicapi.context;
 
+import org.ssssssss.magicapi.model.RequestEntity;
+
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 
 public class RequestContext {
 
-	private static final ThreadLocal<RequestAttribute> REQUEST_ATTRIBUTE_THREAD_LOCAL = new InheritableThreadLocal<>();
+	private static final ThreadLocal<RequestEntity> REQUEST_ENTITY_THREAD_LOCAL = new InheritableThreadLocal<>();
 
-	public static void setRequestAttribute(HttpServletRequest request, HttpServletResponse response) {
-		REQUEST_ATTRIBUTE_THREAD_LOCAL.set(new RequestAttribute(request, response));
+	public static void setRequestEntity(RequestEntity requestEntity) {
+		REQUEST_ENTITY_THREAD_LOCAL.set(requestEntity);
 	}
 
 	public static HttpServletRequest getHttpServletRequest() {
-		RequestAttribute requestAttribute = REQUEST_ATTRIBUTE_THREAD_LOCAL.get();
-		return requestAttribute == null ? null : requestAttribute.request;
+		RequestEntity requestEntity = REQUEST_ENTITY_THREAD_LOCAL.get();
+		return requestEntity == null ? null : requestEntity.getRequest();
 	}
 
-	public static HttpServletResponse getHttpServletResponse() {
-		RequestAttribute requestAttribute = REQUEST_ATTRIBUTE_THREAD_LOCAL.get();
-		return requestAttribute == null ? null : requestAttribute.response;
+	public static RequestEntity getRequestEntity(){
+		return REQUEST_ENTITY_THREAD_LOCAL.get();
 	}
 
 	public static void remove() {
-		REQUEST_ATTRIBUTE_THREAD_LOCAL.remove();
+		REQUEST_ENTITY_THREAD_LOCAL.remove();
 	}
 
-
-	private static class RequestAttribute {
-
-		private final HttpServletRequest request;
-
-		private final HttpServletResponse response;
-
-		public RequestAttribute(HttpServletRequest request, HttpServletResponse response) {
-			this.request = request;
-			this.response = response;
-		}
-	}
 }

+ 2 - 3
src/main/java/org/ssssssss/magicapi/controller/RequestHandler.java

@@ -36,7 +36,6 @@ import org.ssssssss.script.MagicScriptDebugContext;
 import org.ssssssss.script.exception.MagicScriptAssertException;
 import org.ssssssss.script.exception.MagicScriptException;
 import org.ssssssss.script.functions.ObjectConvertExtension;
-import org.ssssssss.script.functions.StreamExtension;
 import org.ssssssss.script.parsing.Span;
 import org.ssssssss.script.parsing.ast.literal.BooleanLiteral;
 import org.ssssssss.script.reflection.JavaInvoker;
@@ -264,7 +263,7 @@ public class RequestHandler extends MagicController {
 	private Object invokeRequest(RequestEntity requestEntity) throws Throwable {
 		HttpServletRequest request = requestEntity.getRequest();
 		try {
-			RequestContext.setRequestAttribute(request, requestEntity.getResponse());
+			RequestContext.setRequestEntity(requestEntity);
 			Object result = ScriptManager.executeScript(requestEntity.getApiInfo().getScript(), requestEntity.getMagicScriptContext());
 			Object value = result;
 			// 执行后置拦截器
@@ -384,7 +383,7 @@ public class RequestHandler extends MagicController {
 			MagicLoggerContext.remove(sessionId);
 		});
 		context.onStart(() -> {
-			RequestContext.setRequestAttribute(request, requestEntity.getResponse());
+			RequestContext.setRequestEntity(requestEntity);
 			MagicLoggerContext.SESSION.set(sessionId);
 			logger.info("Create Console Session : {}", sessionId);
 		});

+ 11 - 1
src/main/java/org/ssssssss/magicapi/interceptor/SQLInterceptor.java

@@ -1,5 +1,6 @@
 package org.ssssssss.magicapi.interceptor;
 
+import org.ssssssss.magicapi.model.RequestEntity;
 import org.ssssssss.magicapi.modules.BoundSql;
 
 /**
@@ -8,8 +9,17 @@ import org.ssssssss.magicapi.modules.BoundSql;
 public interface SQLInterceptor {
 
 	/**
-	 * 执行SQL之前
+	 * 1.1.1 新增,
 	 */
+	default void preHandle(BoundSql boundSql, RequestEntity requestEntity) {
+		preHandle(boundSql);
+	}
+
+
+	/**
+	 * @see SQLInterceptor#preHandle(BoundSql, RequestEntity)
+	 */
+	@Deprecated
 	void preHandle(BoundSql boundSql);
 
 }

+ 2 - 1
src/main/java/org/ssssssss/magicapi/modules/BoundSql.java

@@ -1,6 +1,7 @@
 package org.ssssssss.magicapi.modules;
 
 import org.ssssssss.magicapi.cache.SqlCache;
+import org.ssssssss.magicapi.context.RequestContext;
 import org.ssssssss.magicapi.interceptor.SQLInterceptor;
 import org.ssssssss.script.MagicScriptContext;
 import org.ssssssss.script.functions.StreamExtension;
@@ -156,7 +157,7 @@ public class BoundSql {
 	 * 获取缓存值
 	 */
 	<T> T getCacheValue(List<SQLInterceptor> interceptors, Supplier<T> supplier) {
-		interceptors.forEach(interceptor -> interceptor.preHandle(this));
+		interceptors.forEach(interceptor -> interceptor.preHandle(this, RequestContext.getRequestEntity()));
 		return getCacheValue(this.getSql(), this.getParameters(), supplier);
 	}
 }