mxd vor 4 Jahren
Ursprung
Commit
d608ec1159

+ 3 - 3
src/main/java/org/ssssssss/magicapi/adapter/DialectAdapter.java

@@ -11,14 +11,14 @@ import java.util.concurrent.ConcurrentHashMap;
 
 public class DialectAdapter {
 
-	private static Logger logger = LoggerFactory.getLogger(DialectAdapter.class);
+	private static final Logger logger = LoggerFactory.getLogger(DialectAdapter.class);
 
-	private List<Dialect> dialectList = new ArrayList<>();
+	private final List<Dialect> dialectList = new ArrayList<>();
 
 	/**
 	 * 缓存已解析的方言
 	 */
-	private Map<String, Dialect> dialectMap = new ConcurrentHashMap<>();
+	private final Map<String, Dialect> dialectMap = new ConcurrentHashMap<>();
 
 	public DialectAdapter() {
 		add(new MySQLDialect());

+ 6 - 6
src/main/java/org/ssssssss/magicapi/cache/DefaultSqlCache.java

@@ -7,13 +7,13 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
 
 public class DefaultSqlCache extends LinkedHashMap<String, DefaultSqlCache.ExpireNode<Object>> implements SqlCache {
 
-    private String separator = ":";
+    private final String separator = ":";
 
-    private int capacity;
+    private final int capacity;
 
-    private long expire;
+    private final long expire;
 
-    private ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+    private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
 
     public DefaultSqlCache(int capacity, long expire) {
         super((int) Math.ceil(capacity / 0.75) + 1, 0.75f, true);
@@ -118,9 +118,9 @@ public class DefaultSqlCache extends LinkedHashMap<String, DefaultSqlCache.Expir
      */
     static class ExpireNode<V> {
         long expire;
-        Object value;
+        V value;
 
-        ExpireNode(long expire, Object value) {
+        ExpireNode(long expire, V value) {
             this.expire = expire;
             this.value = value;
         }

+ 0 - 1
src/main/java/org/ssssssss/magicapi/cache/SqlCache.java

@@ -31,7 +31,6 @@ public interface SqlCache {
 	 *
 	 * @param name 名字
 	 * @param key  key
-	 * @return
 	 */
 	<T> T get(String name, String key);
 

+ 2 - 4
src/main/java/org/ssssssss/magicapi/config/MagicConfiguration.java

@@ -39,12 +39,10 @@ public class MagicConfiguration {
 	 */
 	private String editorConfig;
 
-	private final String tokenKey = "Magic-Token";
-
 	/**
 	 * 拦截器
 	 */
-	private List<RequestInterceptor> requestInterceptors = new ArrayList<>();
+	private final List<RequestInterceptor> requestInterceptors = new ArrayList<>();
 
 	/**
 	 * 接口查询Service
@@ -148,7 +146,7 @@ public class MagicConfiguration {
 	}
 
 	public String getTokenKey() {
-		return tokenKey;
+		return "Magic-Token";
 	}
 
 	public List<RequestInterceptor> getRequestInterceptors() {

+ 4 - 3
src/main/java/org/ssssssss/magicapi/config/MagicFunctionManager.java

@@ -4,6 +4,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.ssssssss.magicapi.model.FunctionInfo;
 import org.ssssssss.magicapi.model.Group;
+import org.ssssssss.magicapi.model.Parameter;
 import org.ssssssss.magicapi.model.TreeNode;
 import org.ssssssss.magicapi.provider.FunctionServiceProvider;
 import org.ssssssss.magicapi.provider.GroupServiceProvider;
@@ -42,15 +43,15 @@ public class MagicFunctionManager {
 		MagicResourceLoader.addFunctionLoader((path) -> {
 			FunctionInfo info = mappings.get(path);
 			if (info != null) {
-				List<String> parameterNames = info.getParameterNames();
+				List<Parameter> parameters = info.getParameters();
 				return (Function<Object[], Object>) objects -> {
 					MagicScriptContext context = MagicScriptContext.get();
 					try {
 						MagicScriptContext functionContext = new MagicScriptContext(context.getRootVariables());
 						MagicScriptContext.set(functionContext);
 						if (objects != null) {
-							for (int i = 0, len = objects.length, size = parameterNames.size(); i < len && i < size; i++) {
-								functionContext.set(parameterNames.get(i), objects[i]);
+							for (int i = 0, len = objects.length, size = parameters.size(); i < len && i < size; i++) {
+								functionContext.set(parameters.get(i).getName(), objects[i]);
 							}
 						}
 						return ScriptManager.executeScript(info.getScript(), functionContext);

+ 4 - 4
src/main/java/org/ssssssss/magicapi/context/CookieContext.java

@@ -9,7 +9,7 @@ import java.util.HashMap;
  */
 public class CookieContext extends HashMap<String,String> {
 
-    private Cookie[] cookies;
+    private final Cookie[] cookies;
 
     public CookieContext(HttpServletRequest request){
         this.cookies = request.getCookies();
@@ -17,9 +17,9 @@ public class CookieContext extends HashMap<String,String> {
 
     @Override
     public String get(Object key) {
-        for (int i = 0; i < cookies.length; i++) {
-            if(cookies[i].getName().equalsIgnoreCase("" + key)){
-                return cookies[i].getValue();
+        for (Cookie cookie : cookies) {
+            if (cookie.getName().equalsIgnoreCase("" + key)) {
+                return cookie.getValue();
             }
         }
         return null;

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

@@ -26,11 +26,11 @@ public class RequestContext {
 	}
 
 
-	private static class RequestAttribute{
+	private static class RequestAttribute {
 
-		private HttpServletRequest request;
+		private final HttpServletRequest request;
 
-		private HttpServletResponse response;
+		private final HttpServletResponse response;
 
 		public RequestAttribute(HttpServletRequest request, HttpServletResponse response) {
 			this.request = request;

+ 1 - 1
src/main/java/org/ssssssss/magicapi/context/SessionContext.java

@@ -8,7 +8,7 @@ import java.util.HashMap;
  */
 public class SessionContext extends HashMap<String,Object> {
 
-    private HttpSession session;
+    private final HttpSession session;
 
     public SessionContext(HttpSession session){
         this.session = session;

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

@@ -1,6 +1,7 @@
 package org.ssssssss.magicapi.controller;
 
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.ssssssss.magicapi.config.MagicConfiguration;
@@ -60,12 +61,12 @@ public class MagicFunctionController extends MagicController {
 	@RequestMapping("/function/save")
 	@ResponseBody
 	@Valid(readonly = false, authorization = RequestInterceptor.Authorization.SAVE)
-	public JsonBean<String> save(FunctionInfo functionInfo) {
+	public JsonBean<String> save(@RequestBody FunctionInfo functionInfo) {
 		notBlank(functionInfo.getName(), FUNCTION_NAME_REQUIRED);
 		isTrue(IoUtils.validateFileName(functionInfo.getName()), NAME_INVALID);
 		notBlank(functionInfo.getPath(), FUNCTION_PATH_REQUIRED);
 		notBlank(functionInfo.getScript(), SCRIPT_REQUIRED);
-		isTrue(configuration.getMagicFunctionManager().hasRegister(functionInfo), FUNCTION_PATH_CONFLICT);
+		isTrue(!configuration.getMagicFunctionManager().hasRegister(functionInfo), FUNCTION_PATH_CONFLICT);
 
 		if (StringUtils.isBlank(functionInfo.getId())) {
 			isTrue(!functionService.exists(functionInfo), FUNCTION_ALREADY_EXISTS.format(functionInfo.getPath()));

+ 3 - 3
src/main/java/org/ssssssss/magicapi/logging/Log4j2LoggerContext.java

@@ -33,14 +33,14 @@ public class Log4j2LoggerContext implements MagicLoggerContext{
 		MagicLog4j2Appender appender = new MagicLog4j2Appender("Magic", logger.getFilter(), layout);
 		appender.start();
 		configuration.addAppender(appender);
-		logger.addAppender(appender,logger.getLevel(),logger.getFilter());
+		logger.addAppender(appender, logger.getLevel(), logger.getFilter());
 		context.updateLoggers(configuration);
 	}
 
-	class MagicLog4j2Appender extends AbstractAppender{
+	static class MagicLog4j2Appender extends AbstractAppender {
 
 		MagicLog4j2Appender(String name, Filter filter, Layout<? extends Serializable> layout) {
-			super(name, filter, layout,true, Property.EMPTY_ARRAY);
+			super(name, filter, layout, true, Property.EMPTY_ARRAY);
 		}
 
 		@Override

+ 9 - 9
src/main/java/org/ssssssss/magicapi/logging/Log4jLoggerContext.java

@@ -20,17 +20,17 @@ public class Log4jLoggerContext implements MagicLoggerContext {
         magicLog4jAppender.setLayout(patternLayout);
         logger.addAppender(magicLog4jAppender);
     }
-     class MagicLog4jAppender  extends AppenderSkeleton{
+     static class MagicLog4jAppender extends AppenderSkeleton {
 
 
-        @Override
-        protected void append(LoggingEvent event) {
-            LogInfo logInfo = new LogInfo();
-            logInfo.setLevel(event.getLevel().toString().toLowerCase());
-            logInfo.setMessage(String.valueOf(event.getMessage()));
-            ThrowableInformation throwableInformation = event.getThrowableInformation();
-            if (throwableInformation != null) {
-                logInfo.setThrowable(throwableInformation.getThrowable());
+         @Override
+         protected void append(LoggingEvent event) {
+             LogInfo logInfo = new LogInfo();
+             logInfo.setLevel(event.getLevel().toString().toLowerCase());
+             logInfo.setMessage(String.valueOf(event.getMessage()));
+             ThrowableInformation throwableInformation = event.getThrowableInformation();
+             if (throwableInformation != null) {
+                 logInfo.setThrowable(throwableInformation.getThrowable());
             }
             MagicLoggerContext.println(logInfo);
         }

+ 2 - 2
src/main/java/org/ssssssss/magicapi/logging/LogbackLoggerContext.java

@@ -23,7 +23,7 @@ public class LogbackLoggerContext implements MagicLoggerContext{
 		logger.addAppender(appender);
 	}
 
-	class MagicLogbackAppender extends UnsynchronizedAppenderBase<ILoggingEvent> {
+	static class MagicLogbackAppender extends UnsynchronizedAppenderBase<ILoggingEvent> {
 
 		@Override
 		protected void append(ILoggingEvent event) {
@@ -31,7 +31,7 @@ public class LogbackLoggerContext implements MagicLoggerContext{
 			logInfo.setLevel(event.getLevel().levelStr.toLowerCase());
 			logInfo.setMessage(event.getFormattedMessage());
 			ThrowableProxy throwableProxy = (ThrowableProxy) event.getThrowableProxy();
-			if(throwableProxy != null){
+			if (throwableProxy != null) {
 				logInfo.setThrowable(throwableProxy.getThrowable());
 			}
 			MagicLoggerContext.println(logInfo);

+ 13 - 0
src/main/java/org/ssssssss/magicapi/model/BaseDefinition.java

@@ -29,6 +29,11 @@ public class BaseDefinition {
 	 */
 	private DataType dataType;
 
+	/**
+	 * 类型,函数专用
+	 */
+	private String type;
+
 	/**
 	 * 默认值
 	 */
@@ -129,6 +134,14 @@ public class BaseDefinition {
 		this.expression = expression;
 	}
 
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
 	@Override
 	public boolean equals(Object o) {
 		if (this == o) return true;

+ 14 - 20
src/main/java/org/ssssssss/magicapi/model/FunctionInfo.java

@@ -1,12 +1,11 @@
 package org.ssssssss.magicapi.model;
 
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.core.type.TypeReference;
+import org.ssssssss.magicapi.utils.JsonUtils;
 
 import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
-import java.util.stream.Collectors;
 
 public class FunctionInfo extends MagicEntity {
 
@@ -14,13 +13,11 @@ public class FunctionInfo extends MagicEntity {
 
 	private String description;
 
-	private String parameter;
-
 	private String returnType;
 
 	private String mappingPath;
 
-	private List<String> parameterNames = Collections.emptyList();
+	private List<Parameter> parameters = Collections.emptyList();
 
 	public String getDescription() {
 		return description;
@@ -30,16 +27,10 @@ public class FunctionInfo extends MagicEntity {
 		this.description = description;
 	}
 
-	public String getParameter() {
-		return parameter;
-	}
-
 	public void setParameter(String parameter) {
-		this.parameter = parameter;
 		try {
-			this.parameterNames = new ObjectMapper().readTree(parameter).findValues("name")
-					.stream().map(JsonNode::asText)
-					.collect(Collectors.toList());
+			this.parameters = JsonUtils.readValue(Objects.toString(parameter, "[]"), new TypeReference<List<Parameter>>() {
+			});
 		} catch (Throwable ignored) {
 		}
 	}
@@ -60,10 +51,6 @@ public class FunctionInfo extends MagicEntity {
 		this.mappingPath = mappingPath;
 	}
 
-	public List<String> getParameterNames() {
-		return parameterNames;
-	}
-
 	public String getReturnType() {
 		return returnType;
 	}
@@ -72,6 +59,13 @@ public class FunctionInfo extends MagicEntity {
 		this.returnType = returnType;
 	}
 
+	public List<Parameter> getParameters() {
+		return parameters;
+	}
+
+	public void setParameters(List<Parameter> parameters) {
+		this.parameters = parameters;
+	}
 
 	@Override
 	public boolean equals(Object o) {
@@ -84,13 +78,13 @@ public class FunctionInfo extends MagicEntity {
 				Objects.equals(name, functionInfo.name) &&
 				Objects.equals(groupId, functionInfo.groupId) &&
 				Objects.equals(description, functionInfo.description) &&
-				Objects.equals(parameter, functionInfo.parameter) &&
+				Objects.equals(parameters, functionInfo.parameters) &&
 				Objects.equals(returnType, functionInfo.returnType);
 	}
 
 
 	@Override
 	public int hashCode() {
-		return Objects.hash(id, path, script, name, groupId, parameter, description, returnType);
+		return Objects.hash(id, path, script, name, groupId, parameters, description, returnType);
 	}
 }

+ 5 - 5
src/main/java/org/ssssssss/magicapi/modules/AssertModule.java

@@ -20,7 +20,7 @@ public class AssertModule implements MagicModule {
 	 * @param message 状态说明
 	 */
 	@Comment("判断值不能为空")
-	public static void notNull(@Comment("值") Object value, @Comment("判断失败时的code") int code, @Comment("判断失败时的说明") String message) {
+	public void notNull(@Comment("值") Object value, @Comment("判断失败时的code") int code, @Comment("判断失败时的说明") String message) {
 		if (value == null) {
 			throw new MagicScriptAssertException(code, message);
 		}
@@ -34,7 +34,7 @@ public class AssertModule implements MagicModule {
 	 * @param message 状态说明
 	 */
 	@Comment("判断值不能为Empty")
-	public static void notEmpty(@Comment("值") String value, @Comment("判断失败时的code") int code, @Comment("判断失败时的说明") String message) {
+	public void notEmpty(@Comment("值") String value, @Comment("判断失败时的code") int code, @Comment("判断失败时的说明") String message) {
 		if (StringUtils.isEmpty(value)) {
 			throw new MagicScriptAssertException(code, message);
 		}
@@ -48,7 +48,7 @@ public class AssertModule implements MagicModule {
 	 * @param message 状态说明
 	 */
 	@Comment("判断值不能为Blank")
-	public static void notBlank(@Comment("值") String value, @Comment("判断失败时的code") int code, @Comment("判断失败时的说明") String message) {
+	public void notBlank(@Comment("值") String value, @Comment("判断失败时的code") int code, @Comment("判断失败时的说明") String message) {
 		if (StringUtils.isBlank(value)) {
 			throw new MagicScriptAssertException(code, message);
 		}
@@ -62,7 +62,7 @@ public class AssertModule implements MagicModule {
 	 * @param message 状态说明
 	 */
 	@Comment("正则判断")
-	public static void regx(@Comment("值") String value, String pattern, @Comment("判断失败时的code") int code, @Comment("判断失败时的说明") String message) {
+	public void regx(@Comment("值") String value, String pattern, @Comment("判断失败时的code") int code, @Comment("判断失败时的说明") String message) {
 		if (value == null || !Pattern.compile(pattern).matcher(value).matches()) {
 			throw new MagicScriptAssertException(code, message);
 		}
@@ -76,7 +76,7 @@ public class AssertModule implements MagicModule {
 	 * @param message 状态说明
 	 */
 	@Comment("判断值是否为true")
-	public static void isTrue(@Comment("值") boolean value, @Comment("判断失败时的code") int code, @Comment("判断失败时的说明") String message) {
+	public void isTrue(@Comment("值") boolean value, @Comment("判断失败时的code") int code, @Comment("判断失败时的说明") String message) {
 		if (!value) {
 			throw new MagicScriptAssertException(code, message);
 		}

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

@@ -6,7 +6,7 @@ import org.ssssssss.script.annotation.Comment;
 
 public class EnvModule implements MagicModule {
 
-	private Environment environment;
+	private final Environment environment;
 
 	public EnvModule(Environment environment) {
 		this.environment = environment;

+ 1 - 18
src/main/java/org/ssssssss/magicapi/modules/SQLModule.java

@@ -31,40 +31,28 @@ import java.util.function.Function;
  */
 public class SQLModule extends HashMap<String, SQLModule> implements MagicModule {
 
-	@UnableCall
 	private MagicDynamicDataSource dynamicDataSource;
 
-	@UnableCall
 	private DataSourceNode dataSourceNode;
 
-	@UnableCall
 	private PageProvider pageProvider;
 
-	@UnableCall
 	private ResultProvider resultProvider;
 
-	@UnableCall
 	private ColumnMapperAdapter columnMapperAdapter;
 
-	@UnableCall
 	private DialectAdapter dialectAdapter;
 
-	@UnableCall
 	private RowMapper<Map<String, Object>> columnMapRowMapper;
 
-	@UnableCall
 	private Function<String, String> rowMapColumnMapper;
 
-	@UnableCall
 	private SqlCache sqlCache;
 
-	@UnableCall
 	private String cacheName;
 
-	@UnableCall
 	private List<SQLInterceptor> sqlInterceptors;
 
-	@UnableCall
 	private long ttl;
 
 	public SQLModule() {
@@ -153,7 +141,6 @@ public class SQLModule extends HashMap<String, SQLModule> implements MagicModule
 	 * 开启事务,在一个回调中进行操作
 	 *
 	 * @param function 回调函数
-	 * @return
 	 */
 	@Comment("开启事务,并在回调中处理")
 	public Object transaction(@Comment("回调函数,如:()=>{....}") Function<?, ?> function) {
@@ -170,8 +157,6 @@ public class SQLModule extends HashMap<String, SQLModule> implements MagicModule
 
 	/**
 	 * 开启事务,手动提交和回滚
-	 *
-	 * @return
 	 */
 	@Comment("开启事务,返回事务对象")
 	public Transaction transaction() {
@@ -183,7 +168,6 @@ public class SQLModule extends HashMap<String, SQLModule> implements MagicModule
 	 *
 	 * @param cacheName 缓存名
 	 * @param ttl       过期时间
-	 * @return
 	 */
 	@Comment("使用缓存")
 	public SQLModule cache(@Comment("缓存名") String cacheName, @Comment("过期时间") long ttl) {
@@ -200,7 +184,6 @@ public class SQLModule extends HashMap<String, SQLModule> implements MagicModule
 	 * 使用缓存(采用默认缓存时间)
 	 *
 	 * @param cacheName 缓冲名
-	 * @return
 	 */
 	@Comment("使用缓存,过期时间采用默认配置")
 	public SQLModule cache(@Comment("缓存名") String cacheName) {
@@ -345,7 +328,7 @@ public class SQLModule extends HashMap<String, SQLModule> implements MagicModule
 		BoundSql boundSql = new BoundSql(sql, this.sqlCache, this.cacheName, this.ttl);
 		return boundSql.getCacheValue(this.sqlInterceptors, () -> {
 			List<Map<String, Object>> list = dataSourceNode.getJdbcTemplate().query(boundSql.getSql(), this.columnMapRowMapper, boundSql.getParameters());
-			return list != null && list.size() > 0 ? list.get(0) : null;
+			return list.size() > 0 ? list.get(0) : null;
 		});
 	}
 

+ 2 - 6
src/main/java/org/ssssssss/magicapi/modules/Transaction.java

@@ -5,20 +5,16 @@ import org.springframework.transaction.TransactionDefinition;
 import org.springframework.transaction.TransactionStatus;
 import org.springframework.transaction.support.DefaultTransactionDefinition;
 import org.ssssssss.script.annotation.Comment;
-import org.ssssssss.script.annotation.UnableCall;
 
 /**
  * 事务模块
  */
 public class Transaction {
 
-	@UnableCall
-	private DataSourceTransactionManager dataSourceTransactionManager;
+	private final DataSourceTransactionManager dataSourceTransactionManager;
 
-	@UnableCall
-	private TransactionStatus transactionStatus;
+	private final TransactionStatus transactionStatus;
 
-	@UnableCall
 	private static final TransactionDefinition TRANSACTION_DEFINITION = new DefaultTransactionDefinition();
 
 	public Transaction(DataSourceTransactionManager dataSourceTransactionManager) {