Skip to content

Commit c18c2a9

Browse files
committed
fixup: debug, not info
Signed-off-by: Todd Baert <[email protected]>
1 parent 569b838 commit c18c2a9

File tree

3 files changed

+34
-29
lines changed

3 files changed

+34
-29
lines changed

src/main/java/dev/openfeature/sdk/HookSupport.java

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,28 @@
1717
@SuppressWarnings({ "unchecked", "rawtypes" })
1818
class HookSupport {
1919

20-
public void errorHooks(FlagValueType flagValueType, HookContext hookCtx, Exception e, List<Hook> hooks,
20+
public EvaluationContext beforeHooks(FlagValueType flagValueType, HookContext hookCtx, List<Hook> hooks,
2121
Map<String, Object> hints) {
22-
executeHooks(flagValueType, hooks, "error", hook -> hook.error(hookCtx, e, hints));
22+
Stream<EvaluationContext> result = callBeforeHooks(flagValueType, hookCtx, hooks, hints);
23+
return hookCtx.getCtx().merge(
24+
result.reduce(hookCtx.getCtx(), (EvaluationContext accumulated, EvaluationContext current) -> {
25+
return accumulated.merge(current);
26+
}));
27+
}
28+
29+
public void afterHooks(FlagValueType flagValueType, HookContext hookContext, FlagEvaluationDetails details,
30+
List<Hook> hooks, Map<String, Object> hints) {
31+
executeHooksUnchecked(flagValueType, hooks, hook -> hook.after(hookContext, details, hints));
2332
}
2433

2534
public void afterAllHooks(FlagValueType flagValueType, HookContext hookCtx, List<Hook> hooks,
2635
Map<String, Object> hints) {
2736
executeHooks(flagValueType, hooks, "finally", hook -> hook.finallyAfter(hookCtx, hints));
2837
}
2938

30-
public void afterHooks(FlagValueType flagValueType, HookContext hookContext, FlagEvaluationDetails details,
31-
List<Hook> hooks, Map<String, Object> hints) {
32-
executeHooksUnchecked(flagValueType, hooks, hook -> hook.after(hookContext, details, hints));
39+
public void errorHooks(FlagValueType flagValueType, HookContext hookCtx, Exception e, List<Hook> hooks,
40+
Map<String, Object> hints) {
41+
executeHooks(flagValueType, hooks, "error", hook -> hook.error(hookCtx, e, hints));
3342
}
3443

3544
private <T> void executeHooks(
@@ -44,6 +53,17 @@ private <T> void executeHooks(
4453
}
4554
}
4655

56+
// before, error, and finally hooks shouldn't throw
57+
private <T> void executeChecked(Hook<T> hook, Consumer<Hook<T>> hookCode, String hookMethod) {
58+
try {
59+
hookCode.accept(hook);
60+
} catch (Exception exception) {
61+
log.error("Unhandled exception when running {} hook {} (only 'after' hooks should throw)", hookMethod,
62+
hook.getClass(), exception);
63+
}
64+
}
65+
66+
// after hooks can throw in order to do validation
4767
private <T> void executeHooksUnchecked(
4868
FlagValueType flagValueType, List<Hook> hooks,
4969
Consumer<Hook<T>> hookCode) {
@@ -55,23 +75,6 @@ private <T> void executeHooksUnchecked(
5575
}
5676
}
5777

58-
private <T> void executeChecked(Hook<T> hook, Consumer<Hook<T>> hookCode, String hookMethod) {
59-
try {
60-
hookCode.accept(hook);
61-
} catch (Exception exception) {
62-
log.error("Exception when running {} hooks {}", hookMethod, hook.getClass(), exception);
63-
}
64-
}
65-
66-
public EvaluationContext beforeHooks(FlagValueType flagValueType, HookContext hookCtx, List<Hook> hooks,
67-
Map<String, Object> hints) {
68-
Stream<EvaluationContext> result = callBeforeHooks(flagValueType, hookCtx, hooks, hints);
69-
return hookCtx.getCtx().merge(
70-
result.reduce(hookCtx.getCtx(), (EvaluationContext accumulated, EvaluationContext current) -> {
71-
return accumulated.merge(current);
72-
}));
73-
}
74-
7578
private Stream<EvaluationContext> callBeforeHooks(FlagValueType flagValueType, HookContext hookCtx,
7679
List<Hook> hooks, Map<String, Object> hints) {
7780
// These traverse backwards from normal.

src/main/java/dev/openfeature/sdk/hooks/logging/LoggingHook.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,15 @@ public class LoggingHook implements Hook<Object> {
3535

3636
/**
3737
* Construct a new LoggingHook.
38+
* Flag evaluation data is logged at debug and error in before/after stages and error stages, respectively.
3839
*/
3940
public LoggingHook() {
4041
this(false);
4142
}
4243

4344
/**
4445
* Construct a new LoggingHook.
46+
* Flag evaluation data is logged at debug and error in before/after stages and error stages, respectively.
4547
* @param includeEvaluationContext include a serialized evaluation context in the log message (defaults to false)
4648
*/
4749
public LoggingHook(boolean includeEvaluationContext) {
@@ -50,7 +52,7 @@ public LoggingHook(boolean includeEvaluationContext) {
5052

5153
@Override
5254
public Optional<EvaluationContext> before(HookContext<Object> hookContext, Map<String, Object> hints) {
53-
LoggingEventBuilder builder = log.atInfo();
55+
LoggingEventBuilder builder = log.atDebug();
5456
addCommonProps(builder, hookContext);
5557
builder.log("Before stage");
5658

@@ -60,7 +62,7 @@ public Optional<EvaluationContext> before(HookContext<Object> hookContext, Map<S
6062
@Override
6163
public void after(HookContext<Object> hookContext, FlagEvaluationDetails<Object> details,
6264
Map<String, Object> hints) {
63-
LoggingEventBuilder builder = log.atInfo()
65+
LoggingEventBuilder builder = log.atDebug()
6466
.addKeyValue(REASON_KEY, details.getReason())
6567
.addKeyValue(VARIANT_KEY, details.getVariant())
6668
.addKeyValue(VALUE_KEY, details.getValue());

src/test/java/dev/openfeature/sdk/hooks/logging/LoggingHookTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public String getName() {
6262
logger = mock(Logger.class);
6363
mockBuilder = mock(LoggingEventBuilder.class);
6464
when(mockBuilder.addKeyValue(anyString(), anyString())).thenReturn(mockBuilder);
65-
when(logger.atInfo()).thenReturn(mockBuilder);
65+
when(logger.atDebug()).thenReturn(mockBuilder);
6666
when(logger.atError()).thenReturn(mockBuilder);
6767
LoggerMock.setMock(LoggingHook.class, logger);
6868
}
@@ -73,7 +73,7 @@ void beforeLogsAllPropsExceptEvaluationContext() {
7373
LoggingHook hook = new LoggingHook();
7474
hook.before(hookContext, null);
7575

76-
verify(logger).atInfo();
76+
verify(logger).atDebug();
7777
verifyCommonProps(mockBuilder);
7878
verify(mockBuilder, never()).addKeyValue(anyString(), any(EvaluationContext.class));
7979
verify(mockBuilder).log(argThat((String s) -> s.contains("Before")));
@@ -85,7 +85,7 @@ void beforeLogsAllPropsAndEvaluationContext() {
8585
LoggingHook hook = new LoggingHook(true);
8686
hook.before(hookContext, null);
8787

88-
verify(logger).atInfo();
88+
verify(logger).atDebug();
8989
verifyCommonProps(mockBuilder);
9090
verify(mockBuilder).addKeyValue(contains(LoggingHook.EVALUATION_CONTEXT_KEY), any(EvaluationContext.class));
9191
verify(mockBuilder).log(argThat((String s) -> s.contains("Before")));
@@ -98,7 +98,7 @@ void afterLogsAllPropsExceptEvaluationContext() {
9898
FlagEvaluationDetails<Object> details = FlagEvaluationDetails.builder().reason(REASON).variant(VARIANT).value(VALUE).build();
9999
hook.after(hookContext, details, null);
100100

101-
verify(logger).atInfo();
101+
verify(logger).atDebug();
102102
verifyAfterProps(mockBuilder);
103103
verifyCommonProps(mockBuilder);
104104
verify(mockBuilder, never()).addKeyValue(anyString(), any(EvaluationContext.class));
@@ -112,7 +112,7 @@ void afterLogsAllPropsAndEvaluationContext() {
112112
FlagEvaluationDetails<Object> details = FlagEvaluationDetails.builder().reason(REASON).variant(VARIANT).value(VALUE).build();
113113
hook.after(hookContext, details, null);
114114

115-
verify(logger).atInfo();
115+
verify(logger).atDebug();
116116
verifyAfterProps(mockBuilder);
117117
verifyCommonProps(mockBuilder);
118118
verify(mockBuilder).addKeyValue(contains(LoggingHook.EVALUATION_CONTEXT_KEY), any(EvaluationContext.class));

0 commit comments

Comments
 (0)