Skip to content

Commit 5bd0bd8

Browse files
committed
-changes contract of Hook.supportsFlagValueType to take in current evaluated feature flag
1 parent 95d0126 commit 5bd0bd8

File tree

6 files changed

+14
-19
lines changed

6 files changed

+14
-19
lines changed

lib/src/main/java/dev/openfeature/javasdk/BooleanHook.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
public interface BooleanHook extends Hook<Boolean> {
44

55
@Override
6-
default FlagValueType supportsFlagValueType() {
7-
return FlagValueType.BOOLEAN;
6+
default boolean supportsFlagValueType(FlagValueType flagValueType) {
7+
return FlagValueType.BOOLEAN == flagValueType;
88
}
99
}

lib/src/main/java/dev/openfeature/javasdk/Hook.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ default void error(HookContext<T> ctx, Exception error, Map<String, Object> hint
4949
default void finallyAfter(HookContext<T> ctx, Map<String, Object> hints) {
5050
}
5151

52-
default FlagValueType supportsFlagValueType() {
53-
return FlagValueType.OBJECT;
52+
default boolean supportsFlagValueType(FlagValueType flagValueType) {
53+
return true;
5454
}
5555
}

lib/src/main/java/dev/openfeature/javasdk/HookSupport.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ private <T> void executeHooks(
3737
}
3838

3939
private boolean isHookCompatible(FlagValueType flagValueType, Hook hook) {
40-
return hook.supportsFlagValueType() == flagValueType || hook.supportsFlagValueType() == FlagValueType.OBJECT;
40+
return hook.supportsFlagValueType(flagValueType);
4141
}
4242

4343
private <T> void executeHooksUnchecked(

lib/src/main/java/dev/openfeature/javasdk/IntegerHook.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
public interface IntegerHook extends Hook<Integer> {
44

55
@Override
6-
default FlagValueType supportsFlagValueType() {
7-
return FlagValueType.INTEGER;
6+
default boolean supportsFlagValueType(FlagValueType flagValueType) {
7+
return FlagValueType.INTEGER == flagValueType;
88
}
99
}

lib/src/main/java/dev/openfeature/javasdk/StringHook.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
public interface StringHook extends Hook<String> {
44

55
@Override
6-
default FlagValueType supportsFlagValueType() {
7-
return FlagValueType.STRING;
6+
default boolean supportsFlagValueType(FlagValueType flagValueType) {
7+
return FlagValueType.STRING == flagValueType;
88
}
99
}

lib/src/test/java/dev/openfeature/javasdk/DeveloperExperienceTest.java

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package dev.openfeature.javasdk;
22

3+
import dev.openfeature.javasdk.fixtures.HookFixtures;
34
import org.junit.jupiter.api.Test;
45
import org.mockito.Mockito;
56

@@ -10,7 +11,7 @@
1011

1112

1213
@SuppressWarnings("unchecked")
13-
class DeveloperExperienceTest {
14+
class DeveloperExperienceTest implements HookFixtures {
1415
transient String flagKey = "mykey";
1516
@Test void simpleBooleanFlag() {
1617
OpenFeatureAPI api = OpenFeatureAPI.getInstance();
@@ -21,7 +22,7 @@ class DeveloperExperienceTest {
2122
}
2223

2324
@Test void clientHooks() {
24-
Hook<Boolean> exampleHook = createBooleanHook();
25+
Hook<Boolean> exampleHook = mockBooleanHook();
2526

2627
OpenFeatureAPI api = OpenFeatureAPI.getInstance();
2728
api.setProvider(new NoOpProvider());
@@ -32,15 +33,9 @@ class DeveloperExperienceTest {
3233
assertFalse(retval);
3334
}
3435

35-
private Hook<Boolean> createBooleanHook() {
36-
Hook hook = mock(Hook.class);
37-
when(hook.supportsFlagValueType()).thenReturn(FlagValueType.BOOLEAN);
38-
return hook;
39-
}
40-
4136
@Test void evalHooks() {
42-
Hook<Boolean> clientHook = createBooleanHook();
43-
Hook<Boolean> evalHook = createBooleanHook();
37+
Hook<Boolean> clientHook = mockBooleanHook();
38+
Hook<Boolean> evalHook = mockBooleanHook();
4439

4540
OpenFeatureAPI api = OpenFeatureAPI.getInstance();
4641
api.setProvider(new NoOpProvider());

0 commit comments

Comments
 (0)