Browse Source

修复配置抛出异常无效的BUG

mxd 4 năm trước cách đây
mục cha
commit
cdbaa284be

+ 1 - 1
src/main/java/org/ssssssss/magicapi/controller/MagicAPIController.java

@@ -18,7 +18,7 @@ import java.util.Optional;
 /**
  * 接口相关操作
  */
-public class MagicAPIController extends MagicController {
+public class MagicAPIController extends MagicController implements MagicExceptionHandler {
 
 	private final ApiServiceProvider magicApiService;
 

+ 0 - 54
src/main/java/org/ssssssss/magicapi/controller/MagicConfigController.java

@@ -1,54 +0,0 @@
-package org.ssssssss.magicapi.controller;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.ssssssss.magicapi.config.MagicConfiguration;
-import org.ssssssss.magicapi.config.MagicDynamicDataSource;
-import org.ssssssss.magicapi.model.JsonBean;
-import org.ssssssss.magicapi.modules.SQLModule;
-import org.ssssssss.magicapi.provider.MagicAPIService;
-import org.ssssssss.script.MagicResourceLoader;
-import org.ssssssss.script.MagicScriptEngine;
-import org.ssssssss.script.ScriptClass;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-public class MagicConfigController extends MagicController {
-
-	public MagicConfigController(MagicConfiguration configuration) {
-		super(configuration);
-		// 给前端添加代码提示
-		MagicScriptEngine.addScriptClass(SQLModule.class);
-		MagicScriptEngine.addScriptClass(MagicAPIService.class);
-	}
-
-	/**
-	 * 获取所有class
-	 */
-	@RequestMapping("/classes")
-	@ResponseBody
-	public JsonBean<Map<String, Object>> classes() {
-		Map<String, ScriptClass> classMap = MagicScriptEngine.getScriptClassMap();
-		classMap.putAll(MagicResourceLoader.getModules());
-		Map<String, Object> values = new HashMap<>();
-		values.put("classes", classMap);
-		values.put("extensions", MagicScriptEngine.getExtensionScriptClass());
-		values.put("functions", MagicScriptEngine.getFunctions());
-		return new JsonBean<>(values);
-	}
-
-	/**
-	 * 获取单个class
-	 *
-	 * @param className 类名
-	 */
-	@RequestMapping("/class")
-	@ResponseBody
-	public JsonBean<List<ScriptClass>> clazz(String className) {
-		return new JsonBean<>(MagicScriptEngine.getScriptClass(className));
-	}
-}

+ 0 - 13
src/main/java/org/ssssssss/magicapi/controller/MagicController.java

@@ -37,19 +37,6 @@ public class MagicController implements JsonCodeConstants {
 		this.configuration = configuration;
 	}
 
-	@ExceptionHandler(Exception.class)
-	@ResponseBody
-	public Object exceptionHandler(Exception e) {
-		logger.error("magic-api调用接口出错", e);
-		return new JsonBean<>(-1, e.getMessage());
-	}
-
-	@ExceptionHandler(InvalidArgumentException.class)
-	@ResponseBody
-	public Object exceptionHandler(InvalidArgumentException e) {
-		return new JsonBean<>(e.getCode(), e.getMessage());
-	}
-
 	public void doValid(HttpServletRequest request, Valid valid) {
 		if (valid != null) {
 			if (!valid.readonly() && configuration.getWorkspace().readonly()) {

+ 26 - 0
src/main/java/org/ssssssss/magicapi/controller/MagicExceptionHandler.java

@@ -0,0 +1,26 @@
+package org.ssssssss.magicapi.controller;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.ssssssss.magicapi.exception.InvalidArgumentException;
+import org.ssssssss.magicapi.model.JsonBean;
+
+public interface MagicExceptionHandler {
+
+	final Logger logger = LoggerFactory.getLogger(MagicExceptionHandler.class);
+
+	@ExceptionHandler(Exception.class)
+	@ResponseBody
+	default Object exceptionHandler(Exception e) {
+		logger.error("magic-api调用接口出错", e);
+		return new JsonBean<>(-1, e.getMessage());
+	}
+
+	@ExceptionHandler(InvalidArgumentException.class)
+	@ResponseBody
+	default Object exceptionHandler(InvalidArgumentException e) {
+		return new JsonBean<>(e.getCode(), e.getMessage());
+	}
+}

+ 1 - 1
src/main/java/org/ssssssss/magicapi/controller/MagicFunctionController.java

@@ -14,7 +14,7 @@ import org.ssssssss.magicapi.utils.IoUtils;
 
 import java.util.List;
 
-public class MagicFunctionController extends MagicController {
+public class MagicFunctionController extends MagicController implements MagicExceptionHandler {
 
 	private final FunctionServiceProvider functionService;
 

+ 1 - 1
src/main/java/org/ssssssss/magicapi/controller/MagicGroupController.java

@@ -16,7 +16,7 @@ import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
 
-public class MagicGroupController extends MagicController {
+public class MagicGroupController extends MagicController implements MagicExceptionHandler {
 
 	private final GroupServiceProvider groupServiceProvider;
 

+ 39 - 5
src/main/java/org/ssssssss/magicapi/controller/MagicWorkbenchController.java

@@ -21,11 +21,16 @@ import org.ssssssss.magicapi.interceptor.RequestInterceptor;
 import org.ssssssss.magicapi.logging.MagicLoggerContext;
 import org.ssssssss.magicapi.model.*;
 import org.ssssssss.magicapi.modules.ResponseModule;
+import org.ssssssss.magicapi.modules.SQLModule;
 import org.ssssssss.magicapi.provider.GroupServiceProvider;
+import org.ssssssss.magicapi.provider.MagicAPIService;
 import org.ssssssss.magicapi.provider.StoreServiceProvider;
 import org.ssssssss.magicapi.utils.JsonUtils;
 import org.ssssssss.magicapi.utils.MD5Utils;
 import org.ssssssss.magicapi.utils.PathUtils;
+import org.ssssssss.script.MagicResourceLoader;
+import org.ssssssss.script.MagicScriptEngine;
+import org.ssssssss.script.ScriptClass;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -38,12 +43,41 @@ import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
-public class MagicWorkbenchController extends MagicController {
+public class MagicWorkbenchController extends MagicController implements MagicExceptionHandler {
 
 	private static final Logger logger = LoggerFactory.getLogger(MagicWorkbenchController.class);
 
 	public MagicWorkbenchController(MagicConfiguration configuration) {
 		super(configuration);
+		// 给前端添加代码提示
+		MagicScriptEngine.addScriptClass(SQLModule.class);
+		MagicScriptEngine.addScriptClass(MagicAPIService.class);
+	}
+
+	/**
+	 * 获取所有class
+	 */
+	@RequestMapping("/classes")
+	@ResponseBody
+	public JsonBean<Map<String, Object>> classes() {
+		Map<String, ScriptClass> classMap = MagicScriptEngine.getScriptClassMap();
+		classMap.putAll(MagicResourceLoader.getModules());
+		Map<String, Object> values = new HashMap<>();
+		values.put("classes", classMap);
+		values.put("extensions", MagicScriptEngine.getExtensionScriptClass());
+		values.put("functions", MagicScriptEngine.getFunctions());
+		return new JsonBean<>(values);
+	}
+
+	/**
+	 * 获取单个class
+	 *
+	 * @param className 类名
+	 */
+	@RequestMapping("/class")
+	@ResponseBody
+	public JsonBean<List<ScriptClass>> clazz(String className) {
+		return new JsonBean<>(MagicScriptEngine.getScriptClass(className));
 	}
 
 	/**
@@ -87,7 +121,7 @@ public class MagicWorkbenchController extends MagicController {
 		if (configuration.getEditorConfig() != null) {
 			try {
 				String path = configuration.getEditorConfig();
-				if(path.startsWith(ResourceUtils.CLASSPATH_URL_PREFIX)){
+				if (path.startsWith(ResourceUtils.CLASSPATH_URL_PREFIX)) {
 					path = path.substring(ResourceUtils.CLASSPATH_URL_PREFIX.length());
 					return responseBuilder.body(new InputStreamResource(new ClassPathResource(path).getInputStream()));
 				}
@@ -142,7 +176,7 @@ public class MagicWorkbenchController extends MagicController {
 		}
 		for (Group group : groups) {
 			Resource groupResource = groupServiceProvider.getGroupResource(group.getId());
-			if (groupResource!= null && groupResource.exists()) {
+			if (groupResource != null && groupResource.exists()) {
 				groupServiceProvider.update(group);
 			} else {
 				groupServiceProvider.insert(group);
@@ -150,8 +184,8 @@ public class MagicWorkbenchController extends MagicController {
 		}
 		Resource backups = configuration.getWorkspace().getDirectory("backups");
 		// 保存
-		write(configuration.getMagicApiService(),backups,apiInfos);
-		write(configuration.getFunctionServiceProvider(),backups,functionInfos);
+		write(configuration.getMagicApiService(), backups, apiInfos);
+		write(configuration.getFunctionServiceProvider(), backups, functionInfos);
 		// 重新注册
 		configuration.getMappingHandlerMapping().registerAllMapping();
 		configuration.getMagicFunctionManager().registerAllFunction();

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

@@ -116,8 +116,8 @@ public class RequestHandler extends MagicController {
 
 	private <T extends BaseDefinition> Object doValidate(RequestEntity requestEntity, String comment, List<T> validateParameters, Map<String, Object> parameters) {
 		for (BaseDefinition parameter : validateParameters) {
-			String requestValue = StringUtils.defaultIfBlank(Objects.toString(parameters.get(parameter.getName()),EMPTY), Objects.toString(parameter.getDefaultValue(), EMPTY));
-			if(StringUtils.isBlank(requestValue)){
+			String requestValue = StringUtils.defaultIfBlank(Objects.toString(parameters.get(parameter.getName()), EMPTY), Objects.toString(parameter.getDefaultValue(), EMPTY));
+			if (StringUtils.isBlank(requestValue)) {
 				if (!parameter.isRequired()) {
 					continue;
 				}