Skip to content

Commit 6dbbd93

Browse files
committed
dynamic parameter test case
1 parent f8b8324 commit 6dbbd93

File tree

4 files changed

+64
-1
lines changed

4 files changed

+64
-1
lines changed

spring-boot-data-aggregator-core/src/main/java/io/github/lvyahui8/spring/annotation/DataConsumer.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@
2727
@AliasFor("id")
2828
String value() default "";
2929

30+
/**
31+
* The parameter key required by the method being consumed will be dynamically replaced
32+
*/
33+
DynamicParameter [] dynamicParameters() default {};
34+
3035
/**
3136
* Exception handling, default by global configuration
3237
*/
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package io.github.lvyahui8.spring.annotation;
2+
3+
import java.lang.annotation.*;
4+
5+
/**
6+
7+
* @since 2019/11/6 23:22
8+
*/
9+
@Target({ElementType.PARAMETER})
10+
@Retention(RetentionPolicy.RUNTIME)
11+
@Documented
12+
public @interface DynamicParameter {
13+
/**
14+
* Method originally required parameter key.
15+
*/
16+
String targetKey();
17+
18+
/**
19+
* The new key used to replace the original parameter key
20+
*/
21+
String replacementKey();
22+
}

spring-boot-data-aggregator-core/src/main/java/io/github/lvyahui8/spring/annotation/InvokeParameter.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package io.github.lvyahui8.spring.annotation;
22

3+
import org.springframework.core.annotation.AliasFor;
4+
35
import java.lang.annotation.*;
46

57
/**
@@ -15,5 +17,12 @@
1517
/**
1618
* Manually passed parameter key
1719
*/
18-
String value();
20+
@AliasFor("key")
21+
String value() default "";
22+
23+
/**
24+
* same as value();
25+
*/
26+
@AliasFor("value")
27+
String key() default "";
1928
}

spring-boot-data-aggregator-example/src/test/java/io/github/lvyahui8/spring/example/DataBeanAggregateQueryFacadeTest.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package io.github.lvyahui8.spring.example;
22

3+
import com.google.common.collect.ImmutableMap;
4+
import com.google.common.collect.Lists;
35
import io.github.lvyahui8.spring.aggregate.facade.DataBeanAggregateQueryFacade;
46
import io.github.lvyahui8.spring.aggregate.func.Function2;
57
import io.github.lvyahui8.spring.aggregate.func.Function3;
68
import io.github.lvyahui8.spring.annotation.DataConsumer;
9+
import io.github.lvyahui8.spring.annotation.DynamicParameter;
710
import io.github.lvyahui8.spring.autoconfigure.BeanAggregateProperties;
811
import io.github.lvyahui8.spring.example.context.ExampleAppContext;
912
import io.github.lvyahui8.spring.example.context.RequestContext;
@@ -151,4 +154,28 @@ public Object apply(
151154
RequestContext.removeTenantId();
152155
}
153156
}
157+
158+
@Test
159+
public void testDynamicParameter() throws Exception {
160+
ImmutableMap<String, Object> params = ImmutableMap.<String, Object>builder()
161+
.put("userA_Id", 1)
162+
.put("userB_Id", 2)
163+
.put("userC_Id", 3).build();
164+
Object specialUserCollection = dataBeanAggregateQueryFacade.get(params,
165+
new Function3<User,User,User,Object>() {
166+
@Override
167+
public Object apply(
168+
@DataConsumer(id = "user",
169+
dynamicParameters = {@DynamicParameter(targetKey = "userId" ,replacementKey = "userA_Id")}) User userA,
170+
@DataConsumer(id = "user",
171+
dynamicParameters = {@DynamicParameter(targetKey = "userId" ,replacementKey = "userB_Id")}) User userB,
172+
@DataConsumer(id = "user",
173+
dynamicParameters = {@DynamicParameter(targetKey = "userId" ,replacementKey = "userC_Id")}) User userC) {
174+
return Lists.newArrayList(userA,userB,userC);
175+
}
176+
});
177+
System.out.println(specialUserCollection instanceof List);
178+
System.out.println(specialUserCollection);
179+
}
180+
154181
}

0 commit comments

Comments
 (0)