11package dev .openfeature .sdk ;
22
3- import dev .openfeature .sdk .HookContextWithoutData .HookContextWithoutDataBuilder ;
3+ import lombok .Builder ;
4+ import lombok .NonNull ;
5+ import lombok .Value ;
6+ import lombok .With ;
47
58/**
6- * A interface to hold immutable context that {@link Hook} instances use.
9+ * A data class to hold immutable context that {@link Hook} instances use.
10+ *
11+ * @param <T> the type for the flag being evaluated
712 */
8- public interface HookContext <T > {
13+ @ Value
14+ @ Builder
15+ @ With
16+ public class HookContext <T > {
17+ @ NonNull String flagKey ;
18+
19+ @ NonNull FlagValueType type ;
20+
21+ @ NonNull T defaultValue ;
22+
23+ @ NonNull EvaluationContext ctx ;
24+
25+ ClientMetadata clientMetadata ;
26+ Metadata providerMetadata ;
27+
928 /**
10- * Builds a {@link HookContextWithoutData } instances from request data.
29+ * Builds a {@link HookContext } instances from request data.
1130 *
1231 * @param key feature flag key
1332 * @param type flag value type
@@ -17,39 +36,21 @@ public interface HookContext<T> {
1736 * @param defaultValue Fallback value
1837 * @param <T> type that the flag is evaluating against
1938 * @return resulting context for hook
20- * @deprecated this should not be instantiated outside the SDK anymore
2139 */
22- @ Deprecated
23- static <T > HookContext <T > from (
40+ public static <T > HookContext <T > from (
2441 String key ,
2542 FlagValueType type ,
2643 ClientMetadata clientMetadata ,
2744 Metadata providerMetadata ,
2845 EvaluationContext ctx ,
2946 T defaultValue ) {
30- return new HookContextWithoutData <>(key , type , defaultValue , ctx , clientMetadata , providerMetadata );
31- }
32-
33- /**
34- * Returns a builder for our default HookContext object.
35- */
36- static <T > HookContextWithoutDataBuilder <T > builder () {
37- return HookContextWithoutData .<T >builder ();
38- }
39-
40- String getFlagKey ();
41-
42- FlagValueType getType ();
43-
44- T getDefaultValue ();
45-
46- EvaluationContext getCtx ();
47-
48- ClientMetadata getClientMetadata ();
49-
50- Metadata getProviderMetadata ();
51-
52- default HookData getHookData () {
53- return null ;
47+ return HookContext .<T >builder ()
48+ .flagKey (key )
49+ .type (type )
50+ .clientMetadata (clientMetadata )
51+ .providerMetadata (providerMetadata )
52+ .ctx (ctx )
53+ .defaultValue (defaultValue )
54+ .build ();
5455 }
5556}
0 commit comments