diff --git a/pom.xml b/pom.xml
index f7d48ea9..dfdfcabc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,7 +15,7 @@
com.codingapi.springboot
springboot-parent
- 2.10.52
+ 2.10.53
https://github.com/codingapi/springboot-framewrok
springboot-parent
diff --git a/springboot-starter-data-authorization/pom.xml b/springboot-starter-data-authorization/pom.xml
index 58ecf4bf..c914d90d 100644
--- a/springboot-starter-data-authorization/pom.xml
+++ b/springboot-starter-data-authorization/pom.xml
@@ -6,7 +6,7 @@
springboot-parent
com.codingapi.springboot
- 2.10.52
+ 2.10.53
springboot-starter-data-authorization
diff --git a/springboot-starter-data-fast/pom.xml b/springboot-starter-data-fast/pom.xml
index 4dde9e58..bfef311b 100644
--- a/springboot-starter-data-fast/pom.xml
+++ b/springboot-starter-data-fast/pom.xml
@@ -5,7 +5,7 @@
springboot-parent
com.codingapi.springboot
- 2.10.52
+ 2.10.53
4.0.0
diff --git a/springboot-starter-flow/pom.xml b/springboot-starter-flow/pom.xml
index a5396fe2..adaeeb9a 100644
--- a/springboot-starter-flow/pom.xml
+++ b/springboot-starter-flow/pom.xml
@@ -6,7 +6,7 @@
springboot-parent
com.codingapi.springboot
- 2.10.52
+ 2.10.53
springboot-starter-flow
diff --git a/springboot-starter-script/pom.xml b/springboot-starter-script/pom.xml
index 7751f460..0957b26c 100644
--- a/springboot-starter-script/pom.xml
+++ b/springboot-starter-script/pom.xml
@@ -6,7 +6,7 @@
com.codingapi.springboot
springboot-parent
- 2.10.52
+ 2.10.53
springboot-starter-script
diff --git a/springboot-starter-script/src/main/java/com/codingapi/springboot/script/meta/GroovyMetadata.java b/springboot-starter-script/src/main/java/com/codingapi/springboot/script/meta/GroovyMetadata.java
index 5c8a45ce..2f73ecf3 100644
--- a/springboot-starter-script/src/main/java/com/codingapi/springboot/script/meta/GroovyMetadata.java
+++ b/springboot-starter-script/src/main/java/com/codingapi/springboot/script/meta/GroovyMetadata.java
@@ -57,6 +57,16 @@ public GroovyMetadata(GroovyScript groovyScript) {
}
+ public GroovyMetadata(String mainMethod,String returnType, String description) {
+ this.returnType = returnType;
+ this.description = description;
+ this.mainMethod = mainMethod;
+ this.types = new HashMap<>();
+ this.requests = new ArrayList<>();
+ this.binds = new ArrayList<>();
+ }
+
+
/**
* 增加请求参数数据对象
*
diff --git a/springboot-starter-script/src/main/java/com/codingapi/springboot/script/strategy/GroovyMetadataGenerateStrategyContext.java b/springboot-starter-script/src/main/java/com/codingapi/springboot/script/strategy/GroovyMetadataGenerateStrategyContext.java
index 7b737d84..84372d6f 100644
--- a/springboot-starter-script/src/main/java/com/codingapi/springboot/script/strategy/GroovyMetadataGenerateStrategyContext.java
+++ b/springboot-starter-script/src/main/java/com/codingapi/springboot/script/strategy/GroovyMetadataGenerateStrategyContext.java
@@ -21,11 +21,18 @@ private GroovyMetadataGenerateStrategyContext() {
this.strategies = new ArrayList<>();
}
- public void addLoadStrategy(GroovyMetadataGenerateStrategy strategy) {
+ public void addGenerateStrategy(GroovyMetadataGenerateStrategy strategy) {
this.strategies.add(strategy);
}
+ /**
+ * 清空策略
+ */
+ public void clear(){
+ this.strategies.clear();
+ }
+
public GroovyMetadata generate(GroovyScript groovyScript) {
for (GroovyMetadataGenerateStrategy strategy : this.strategies) {
if (strategy.support(groovyScript)) {
diff --git a/springboot-starter-script/src/main/java/com/codingapi/springboot/script/strategy/GroovyTypeFixStrategyContext.java b/springboot-starter-script/src/main/java/com/codingapi/springboot/script/strategy/GroovyTypeFixStrategyContext.java
index e0708c12..e8ed6a8e 100644
--- a/springboot-starter-script/src/main/java/com/codingapi/springboot/script/strategy/GroovyTypeFixStrategyContext.java
+++ b/springboot-starter-script/src/main/java/com/codingapi/springboot/script/strategy/GroovyTypeFixStrategyContext.java
@@ -22,6 +22,12 @@ public void addFixStrategy(GroovyTypeFixStrategy gateway) {
this.strategies.add(gateway);
}
+ /**
+ * 清空策略
+ */
+ public void clear(){
+ this.strategies.clear();
+ }
public void fix(GroovyScript groovyScript, Class> clazz, GroovyType groovyType) {
for (GroovyTypeFixStrategy strategy : strategies) {
diff --git a/springboot-starter-script/src/main/java/com/codingapi/springboot/script/strategy/ScriptTypeMappingContext.java b/springboot-starter-script/src/main/java/com/codingapi/springboot/script/strategy/ScriptTypeMappingContext.java
index e4a53be7..c9e30e33 100644
--- a/springboot-starter-script/src/main/java/com/codingapi/springboot/script/strategy/ScriptTypeMappingContext.java
+++ b/springboot-starter-script/src/main/java/com/codingapi/springboot/script/strategy/ScriptTypeMappingContext.java
@@ -28,6 +28,13 @@ public void addMapping(ScriptTypeMapping mapping){
}
+ /**
+ * 清空策略
+ */
+ public void clear(){
+ this.mappings.clear();
+ }
+
/**
* 映射
diff --git a/springboot-starter-script/src/test/java/com/codingapi/springboot/script/GroovyScriptRuntimeContextTest.java b/springboot-starter-script/src/test/java/com/codingapi/springboot/script/GroovyScriptRuntimeContextTest.java
index beefbf1f..96a681f6 100644
--- a/springboot-starter-script/src/test/java/com/codingapi/springboot/script/GroovyScriptRuntimeContextTest.java
+++ b/springboot-starter-script/src/test/java/com/codingapi/springboot/script/GroovyScriptRuntimeContextTest.java
@@ -3,13 +3,25 @@
import com.alibaba.fastjson.JSON;
import com.codingapi.springboot.script.meta.GroovyMetadata;
import com.codingapi.springboot.script.request.MyScriptRequest;
+import com.codingapi.springboot.script.strategy.GroovyMetadataGenerateStrategyContext;
+import com.codingapi.springboot.script.strategy.GroovyTypeFixStrategyContext;
+import com.codingapi.springboot.script.strategy.ScriptTypeMappingContext;
import org.apache.groovy.util.Maps;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
class GroovyScriptRuntimeContextTest {
+
+ @BeforeEach
+ void beforeRun(){
+ GroovyMetadataGenerateStrategyContext.getInstance().clear();
+ GroovyTypeFixStrategyContext.getInstance().clear();
+ ScriptTypeMappingContext.getInstance().clear();
+ }
+
@Test
void voidInvoke() {
diff --git a/springboot-starter-script/src/test/java/com/codingapi/springboot/script/GroovyStrategyTest.java b/springboot-starter-script/src/test/java/com/codingapi/springboot/script/GroovyStrategyTest.java
new file mode 100644
index 00000000..17dcf4e1
--- /dev/null
+++ b/springboot-starter-script/src/test/java/com/codingapi/springboot/script/GroovyStrategyTest.java
@@ -0,0 +1,125 @@
+package com.codingapi.springboot.script;
+
+import com.alibaba.fastjson.JSON;
+import com.codingapi.springboot.script.meta.GroovyFunction;
+import com.codingapi.springboot.script.meta.GroovyMetadata;
+import com.codingapi.springboot.script.meta.GroovyType;
+import com.codingapi.springboot.script.request.MyScriptRequest;
+import com.codingapi.springboot.script.strategy.*;
+import org.apache.groovy.util.Maps;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+public class GroovyStrategyTest {
+
+
+ @BeforeEach
+ void beforeRun(){
+ GroovyMetadataGenerateStrategyContext.getInstance().clear();
+ GroovyTypeFixStrategyContext.getInstance().clear();
+ ScriptTypeMappingContext.getInstance().clear();
+ }
+
+ @Test
+ void test1(){
+ String script = "def run(request){return request.count;}";
+
+ ScriptTypeMappingContext.getInstance().addMapping(new ScriptTypeMapping() {
+ @Override
+ public boolean support(Class> target) {
+ return Integer.class.equals(target);
+ }
+
+ @Override
+ public Class> mapping(Class> target) {
+ return int.class;
+ }
+ });
+
+
+ GroovyTypeFixStrategyContext.getInstance().addFixStrategy(new GroovyTypeFixStrategy() {
+ @Override
+ public boolean support(Class> clazz) {
+ return MyScriptRequest.class.equals(clazz);
+ }
+
+ @Override
+ public void fix(GroovyScript groovyScript, GroovyType groovyType) {
+ GroovyFunction groovyFunction = new GroovyFunction();
+ groovyFunction.setReturnType("int");
+ groovyFunction.setName("hi");
+ groovyFunction.setDescription("测试");
+ groovyType.addFunction(groovyFunction);
+ }
+ });
+
+
+ GroovyScript groovyScript =
+ GroovyScript.builder("metaTest")
+ .script(script)
+ .description("这是一个run函数,返回的格式为int类型。")
+ .method("run")
+ .tag("123")
+ .returnType(Integer.class)
+ .requests(Maps.of("request", MyScriptRequest.class))
+ .build();
+
+ GroovyMetadata metadata = groovyScript.toMetadata();
+ System.out.println(JSON.toJSONString(metadata));
+ assertEquals(1, metadata.getRequests().size());
+ assertEquals("int",metadata.getReturnType());
+ assertEquals(3,metadata.getType("MyScriptRequest").getFunctions().size());
+
+ MyScriptRequest request = new MyScriptRequest(100);
+ long t1 = System.currentTimeMillis();
+ int result = groovyScript.invoke(request);
+ long t2 = System.currentTimeMillis();
+ System.out.println("groovy time:" + (t2 - t1));
+ assertEquals(100, result);
+ }
+
+
+
+ @Test
+ void test2(){
+ String script = "def run(request){return request.count;}";
+
+ GroovyMetadataGenerateStrategyContext.getInstance().addGenerateStrategy(new GroovyMetadataGenerateStrategy() {
+ @Override
+ public boolean support(GroovyScript script) {
+ return true;
+ }
+
+ @Override
+ public GroovyMetadata generate(GroovyScript script) {
+ return new GroovyMetadata("hello","int","hello");
+ }
+ });
+
+
+ GroovyScript groovyScript =
+ GroovyScript.builder("metaTest")
+ .script(script)
+ .description("这是一个run函数,返回的格式为int类型。")
+ .method("run")
+ .tag("123")
+ .returnType(Integer.class)
+ .requests(Maps.of("request", MyScriptRequest.class))
+ .build();
+
+ GroovyMetadata metadata = groovyScript.toMetadata();
+ System.out.println(JSON.toJSONString(metadata));
+ assertEquals("int",metadata.getReturnType());
+ assertEquals("hello",metadata.getDescription());
+ assertEquals("hello",metadata.getMainMethod());
+
+ MyScriptRequest request = new MyScriptRequest(100);
+ long t1 = System.currentTimeMillis();
+ int result = groovyScript.invoke(request);
+ long t2 = System.currentTimeMillis();
+ System.out.println("groovy time:" + (t2 - t1));
+ assertEquals(100, result);
+ }
+}
diff --git a/springboot-starter-script/src/test/java/com/codingapi/springboot/script/TransactionGroovyScriptRuntimeContextTest.java b/springboot-starter-script/src/test/java/com/codingapi/springboot/script/TransactionGroovyScriptRuntimeContextTest.java
index 93295be0..bdf13401 100644
--- a/springboot-starter-script/src/test/java/com/codingapi/springboot/script/TransactionGroovyScriptRuntimeContextTest.java
+++ b/springboot-starter-script/src/test/java/com/codingapi/springboot/script/TransactionGroovyScriptRuntimeContextTest.java
@@ -3,7 +3,11 @@
import com.codingapi.springboot.script.entity.MyTest;
import com.codingapi.springboot.script.repository.MyTestRepository;
import com.codingapi.springboot.script.request.MyScriptRequest;
+import com.codingapi.springboot.script.strategy.GroovyMetadataGenerateStrategyContext;
+import com.codingapi.springboot.script.strategy.GroovyTypeFixStrategyContext;
+import com.codingapi.springboot.script.strategy.ScriptTypeMappingContext;
import org.apache.groovy.util.Maps;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@@ -21,6 +25,13 @@ class TransactionGroovyScriptRuntimeContextTest {
@Autowired
private MyTestRepository myTestRepository;
+ @BeforeEach
+ void beforeRun(){
+ GroovyMetadataGenerateStrategyContext.getInstance().clear();
+ GroovyTypeFixStrategyContext.getInstance().clear();
+ ScriptTypeMappingContext.getInstance().clear();
+ }
+
@Test
void transactionCommitRun() {
diff --git a/springboot-starter-security/pom.xml b/springboot-starter-security/pom.xml
index b1e2fca9..0c69a141 100644
--- a/springboot-starter-security/pom.xml
+++ b/springboot-starter-security/pom.xml
@@ -6,7 +6,7 @@
com.codingapi.springboot
springboot-parent
- 2.10.52
+ 2.10.53
springboot-starter-security
diff --git a/springboot-starter/pom.xml b/springboot-starter/pom.xml
index 63cd7b72..1761b906 100644
--- a/springboot-starter/pom.xml
+++ b/springboot-starter/pom.xml
@@ -5,7 +5,7 @@
com.codingapi.springboot
springboot-parent
- 2.10.52
+ 2.10.53
springboot-starter