Skip to content

Commit ba8f6bc

Browse files
committed
extract common code
Signed-off-by: christian.lutnik <[email protected]>
1 parent b5a443f commit ba8f6bc

File tree

3 files changed

+33
-40
lines changed

3 files changed

+33
-40
lines changed

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

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
import java.util.ArrayList;
44
import java.util.Collection;
5+
import java.util.HashSet;
56
import java.util.List;
7+
import java.util.Map;
68
import java.util.Optional;
79
import java.util.concurrent.ConcurrentLinkedQueue;
810
import lombok.extern.slf4j.Slf4j;
@@ -156,4 +158,26 @@ public <T> void executeAfterAllHooks(HookSupportData data, FlagEvaluationDetails
156158
}
157159
}
158160
}
161+
162+
static void addHooks(Map<FlagValueType, ConcurrentLinkedQueue<Hook>> hookMap, Hook... hooksToAdd) {
163+
var types = FlagValueType.values();
164+
for (int i = 0; i < hooksToAdd.length; i++) {
165+
var current = hooksToAdd[i];
166+
for (int j = 0; j < types.length; j++) {
167+
var type = types[j];
168+
if (current.supportsFlagValueType(type)) {
169+
hookMap.get(type).add(current);
170+
}
171+
}
172+
}
173+
}
174+
175+
static ArrayList<Hook> getAllUniqueHooks(Map<FlagValueType, ConcurrentLinkedQueue<Hook>> hookMap) {
176+
// Hooks can be duplicated if they support multiple FlagValueTypes
177+
var allHooks = new HashSet<Hook>();
178+
for (var queue : hookMap.values()) {
179+
allHooks.addAll(queue);
180+
}
181+
return new ArrayList<>(allHooks);
182+
}
159183
}

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

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
import dev.openfeature.sdk.exceptions.OpenFeatureError;
44
import dev.openfeature.sdk.internal.AutoCloseableLock;
55
import dev.openfeature.sdk.internal.AutoCloseableReentrantReadWriteLock;
6-
import java.util.ArrayList;
7-
import java.util.HashSet;
86
import java.util.List;
97
import java.util.Optional;
108
import java.util.Set;
@@ -308,16 +306,7 @@ public FeatureProvider getProvider(String domain) {
308306
* @param hooks The hook to add.
309307
*/
310308
public void addHooks(Hook... hooks) {
311-
var types = FlagValueType.values();
312-
for (int i = 0; i < hooks.length; i++) {
313-
var current = hooks[i];
314-
for (int j = 0; j < types.length; j++) {
315-
var type = types[j];
316-
if (current.supportsFlagValueType(type)) {
317-
this.apiHooks.get(type).add(current);
318-
}
319-
}
320-
}
309+
HookSupport.addHooks(apiHooks, hooks);
321310
}
322311

323312
/**
@@ -326,12 +315,7 @@ public void addHooks(Hook... hooks) {
326315
* @return A list of {@link Hook}s.
327316
*/
328317
public List<Hook> getHooks() {
329-
// Hooks can be duplicated if they support multiple FlagValueTypes
330-
var allHooks = new HashSet<Hook>();
331-
for (var queue : this.apiHooks.values()) {
332-
allHooks.addAll(queue);
333-
}
334-
return new ArrayList<>(allHooks);
318+
return HookSupport.getAllUniqueHooks(apiHooks);
335319
}
336320

337321
/**

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

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,8 @@
77
import dev.openfeature.sdk.exceptions.ProviderNotReadyError;
88
import dev.openfeature.sdk.internal.ObjectUtils;
99
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
10-
import java.util.ArrayList;
1110
import java.util.Collections;
1211
import java.util.HashMap;
13-
import java.util.HashSet;
1412
import java.util.List;
1513
import java.util.Map;
1614
import java.util.Objects;
@@ -31,11 +29,11 @@
3129
*/
3230
@Slf4j
3331
@SuppressWarnings({
34-
"PMD.DataflowAnomalyAnalysis",
35-
"PMD.BeanMembersShouldSerialize",
36-
"PMD.UnusedLocalVariable",
37-
"unchecked",
38-
"rawtypes"
32+
"PMD.DataflowAnomalyAnalysis",
33+
"PMD.BeanMembersShouldSerialize",
34+
"PMD.UnusedLocalVariable",
35+
"unchecked",
36+
"rawtypes"
3937
})
4038
@Deprecated() // TODO: eventually we will make this non-public. See issue #872
4139
public class OpenFeatureClient implements Client {
@@ -130,16 +128,7 @@ public void track(String trackingEventName, EvaluationContext context, TrackingE
130128
*/
131129
@Override
132130
public OpenFeatureClient addHooks(Hook... hooks) {
133-
var types = FlagValueType.values();
134-
for (int i = 0; i < hooks.length; i++) {
135-
var current = hooks[i];
136-
for (int j = 0; j < types.length; j++) {
137-
var type = types[j];
138-
if (current.supportsFlagValueType(type)) {
139-
this.clientHooks.get(type).add(current);
140-
}
141-
}
142-
}
131+
HookSupport.addHooks(clientHooks, hooks);
143132
return this;
144133
}
145134

@@ -148,11 +137,7 @@ public OpenFeatureClient addHooks(Hook... hooks) {
148137
*/
149138
@Override
150139
public List<Hook> getHooks() {
151-
var allHooks = new HashSet<Hook>();
152-
for (var queue : this.clientHooks.values()) {
153-
allHooks.addAll(queue);
154-
}
155-
return new ArrayList<>(allHooks);
140+
return HookSupport.getAllUniqueHooks(clientHooks);
156141
}
157142

158143
/**

0 commit comments

Comments
 (0)