2
2
3
3
import java .util .ArrayList ;
4
4
import java .util .Collections ;
5
- import java .util .HashMap ;
6
5
import java .util .List ;
7
6
import java .util .Map ;
8
7
import java .util .Optional ;
9
8
import java .util .function .BiConsumer ;
10
- import java .util .function .Consumer ;
11
9
import lombok .RequiredArgsConstructor ;
12
10
import lombok .extern .slf4j .Slf4j ;
13
11
import org .apache .commons .lang3 .tuple .Pair ;
18
16
class HookSupport {
19
17
20
18
public EvaluationContext beforeHooks (
21
- FlagValueType flagValueType , HookContext hookCtx , List <Pair <Hook , HookData >> hookDataPairs , Map <String , Object > hints ) {
19
+ FlagValueType flagValueType ,
20
+ HookContext hookCtx ,
21
+ List <Pair <Hook , HookData >> hookDataPairs ,
22
+ Map <String , Object > hints ) {
22
23
return callBeforeHooks (flagValueType , hookCtx , hookDataPairs , hints );
23
24
}
24
25
@@ -28,7 +29,8 @@ public void afterHooks(
28
29
FlagEvaluationDetails details ,
29
30
List <Pair <Hook , HookData >> hookDataPairs ,
30
31
Map <String , Object > hints ) {
31
- executeHooksUnchecked (flagValueType , hookDataPairs , hookContext , (hook , ctx ) -> hook .after (ctx , details , hints ));
32
+ executeHooksUnchecked (
33
+ flagValueType , hookDataPairs , hookContext , (hook , ctx ) -> hook .after (ctx , details , hints ));
32
34
}
33
35
34
36
public void afterAllHooks (
@@ -37,7 +39,12 @@ public void afterAllHooks(
37
39
FlagEvaluationDetails details ,
38
40
List <Pair <Hook , HookData >> hookDataPairs ,
39
41
Map <String , Object > hints ) {
40
- executeHooks (flagValueType , hookDataPairs , hookCtx , "finally" , (hook , ctx ) -> hook .finallyAfter (ctx , details , hints ));
42
+ executeHooks (
43
+ flagValueType ,
44
+ hookDataPairs ,
45
+ hookCtx ,
46
+ "finally" ,
47
+ (hook , ctx ) -> hook .finallyAfter (ctx , details , hints ));
41
48
}
42
49
43
50
public void errorHooks (
@@ -58,7 +65,11 @@ public List<Pair<Hook, HookData>> getHookDataPairs(List<Hook> hooks) {
58
65
}
59
66
60
67
private <T > void executeHooks (
61
- FlagValueType flagValueType , List <Pair <Hook , HookData >> hookDataPairs , HookContext hookContext , String hookMethod , BiConsumer <Hook <T >, HookContext > hookCode ) {
68
+ FlagValueType flagValueType ,
69
+ List <Pair <Hook , HookData >> hookDataPairs ,
70
+ HookContext hookContext ,
71
+ String hookMethod ,
72
+ BiConsumer <Hook <T >, HookContext > hookCode ) {
62
73
if (hookDataPairs != null ) {
63
74
for (Pair <Hook , HookData > hookDataPair : hookDataPairs ) {
64
75
Hook hook = hookDataPair .getLeft ();
@@ -71,7 +82,12 @@ private <T> void executeHooks(
71
82
}
72
83
73
84
// before, error, and finally hooks shouldn't throw
74
- private <T > void executeChecked (Hook <T > hook , HookData hookData , HookContext hookContext , BiConsumer <Hook <T >, HookContext > hookCode , String hookMethod ) {
85
+ private <T > void executeChecked (
86
+ Hook <T > hook ,
87
+ HookData hookData ,
88
+ HookContext hookContext ,
89
+ BiConsumer <Hook <T >, HookContext > hookCode ,
90
+ String hookMethod ) {
75
91
try {
76
92
var hookCtxWithData = hookContext .withHookData (hookData );
77
93
hookCode .accept (hook , hookCtxWithData );
@@ -85,7 +101,11 @@ private <T> void executeChecked(Hook<T> hook, HookData hookData, HookContext hoo
85
101
}
86
102
87
103
// after hooks can throw in order to do validation
88
- private <T > void executeHooksUnchecked (FlagValueType flagValueType , List <Pair <Hook , HookData >> hookDataPairs , HookContext hookContext , BiConsumer <Hook <T >, HookContext > hookCode ) {
104
+ private <T > void executeHooksUnchecked (
105
+ FlagValueType flagValueType ,
106
+ List <Pair <Hook , HookData >> hookDataPairs ,
107
+ HookContext hookContext ,
108
+ BiConsumer <Hook <T >, HookContext > hookCode ) {
89
109
if (hookDataPairs != null ) {
90
110
for (Pair <Hook , HookData > hookDataPair : hookDataPairs ) {
91
111
Hook hook = hookDataPair .getLeft ();
@@ -99,7 +119,10 @@ private <T> void executeHooksUnchecked(FlagValueType flagValueType, List<Pair<Ho
99
119
}
100
120
101
121
private EvaluationContext callBeforeHooks (
102
- FlagValueType flagValueType , HookContext hookCtx , List <Pair <Hook , HookData >> hookDataPairs , Map <String , Object > hints ) {
122
+ FlagValueType flagValueType ,
123
+ HookContext hookCtx ,
124
+ List <Pair <Hook , HookData >> hookDataPairs ,
125
+ Map <String , Object > hints ) {
103
126
// These traverse backwards from normal.
104
127
List <Pair <Hook , HookData >> reversedHooks = new ArrayList <>(hookDataPairs );
105
128
Collections .reverse (reversedHooks );
0 commit comments