提交 33394597 编写于 作者: T tianqiao

3.2.6 代码更新

上级 cca66460
......@@ -128,4 +128,8 @@ public Object execute(InstructionSet[] instructionSets,IExpressContext<String,Ob
## 3.2.5版本[2021-8-23]
(1)支持强大的数组符号访问属性功能(List,Map,Array):ArrayPorpertyMixTest
(2)支持lambda表达式,stream方式操作集合书写更高效(List,Map):LambdaTest
(3)解决数组类型的方法匹配bug:ArrayMisType
\ No newline at end of file
(3)解决数组类型的方法匹配bug:ArrayMisType
## 3.2.6版本[2021-11-24]
(1)彻底解决ExpressRunner重入问题,可以嵌套使用:RecursivelyRunnerTest
(2)重磅特性:通过@QLAlias对字段和方法上添加注解,实现中文字段和中文方法调用:QLAliasTest
\ No newline at end of file
......@@ -6,7 +6,7 @@
<groupId>com.alibaba</groupId>
<artifactId>QLExpress</artifactId>
<packaging>jar</packaging>
<version>3.2.5</version>
<version>3.2.6</version>
<name>QLExpress</name>
<description>QLExpress is a powerful, lightweight, dynamic language for the Java platform aimed at improving developers’ productivity in different business scenes.</description>
<url>https://github.com/alibaba/QLExpress</url>
......
......@@ -36,7 +36,7 @@ import static java.lang.annotation.ElementType.*;
*
*/
@Inherited
@Target({TYPE, FIELD, METHOD})
@Target({TYPE, FIELD, METHOD, PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface QLAlias {
/**
......
......@@ -57,14 +57,13 @@ public class QLAliasUtils {
if(result == null){
fieldsCache.put(key, void.class);
}else{
((Field)result).setAccessible(true);
fieldsCache.put(key,result);
}
}else if(result == void.class){
result = null;
}
return (Field)result;
}
}
public static Field findQLAliasFields(Class baseClass, String propertyName) {
......
......@@ -12,7 +12,7 @@ import static org.junit.Assert.assertTrue;
* @author tianqiao@come-future.com
* 2021-11-15 5:51 下午
*/
public class AnnotationTest {
public class QLAliasTest {
@Test
public void testQLAlias() throws Exception {
......@@ -27,6 +27,8 @@ public class AnnotationTest {
"患者.生日()==患者.生日","true",//get方法和字段名字一样是不冲突的
"患者.患者姓名 + ' 今年 '+ 患者.获取年龄() +' 岁'","老王 今年 34 岁",//任意方法的注解
};
//1、测试对象的方法,字段上的别名标签
IExpressContext<String, Object> context = new DefaultContext<String, Object>();
Person person = new Patient();
person.setName("老王");
......@@ -39,7 +41,7 @@ public class AnnotationTest {
assertTrue((""+result).equals(exps[i+1]));
}
//业务调用也可以通过对象的QLAlias直接来自动产生系统变量
//2、外部业务调用方也可以利用类、参数的QLAlias注解,自动注入ExpressContext
QLAliasContext context2 = new QLAliasContext();
context2.putAutoParams(person);//等价于context2.put("患者", person);
for (int i=0;i<exps.length;i+=2) {
......
......@@ -7,6 +7,9 @@ import org.junit.Test;
import java.lang.reflect.Method;
/**
* 可重入性单元测试
*/
public class RecursivelyRunnerTest {
static ExpressRunner runner = new ExpressRunner();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册