Skip to content

Commit 667946f

Browse files
committed
fixup: use pojo instead of triconsumer
Signed-off-by: Todd Baert <[email protected]>
1 parent 0c148a6 commit 667946f

File tree

8 files changed

+1346
-1219
lines changed

8 files changed

+1346
-1219
lines changed

Diff for: providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/FlagdProvider.java

+6-7
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package dev.openfeature.contrib.providers.flagd;
22

33
import java.util.Collections;
4-
import java.util.List;
54
import java.util.Map;
65

76
import dev.openfeature.contrib.providers.flagd.resolver.Resolver;
7+
import dev.openfeature.contrib.providers.flagd.resolver.common.ConnectionEvent;
88
import dev.openfeature.contrib.providers.flagd.resolver.grpc.GrpcResolver;
99
import dev.openfeature.contrib.providers.flagd.resolver.grpc.cache.Cache;
1010
import dev.openfeature.contrib.providers.flagd.resolver.process.InProcessResolver;
@@ -145,17 +145,16 @@ private boolean isConnected() {
145145
return this.connected;
146146
}
147147

148-
private void onConnectionEvent(boolean newConnectedState, List<String> changedFlagKeys,
149-
Map<String, Object> syncMetadata) {
148+
private void onConnectionEvent(ConnectionEvent connectionEvent) {
150149
boolean previous = connected;
151-
boolean current = newConnectedState;
152-
this.connected = newConnectedState;
153-
this.syncMetadata = syncMetadata;
150+
boolean current = connected = connectionEvent.isConnected();
151+
syncMetadata = connectionEvent.getSyncMetadata();
154152

155153
// configuration changed
156154
if (initialized && previous && current) {
157155
log.debug("Configuration changed");
158-
ProviderEventDetails details = ProviderEventDetails.builder().flagsChanged(changedFlagKeys)
156+
ProviderEventDetails details = ProviderEventDetails.builder()
157+
.flagsChanged(connectionEvent.getFlagsChanged())
159158
.message("configuration changed").build();
160159
this.emitProviderConfigurationChanged(details);
161160
return;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package dev.openfeature.contrib.providers.flagd.resolver.common;
2+
3+
import java.util.Collections;
4+
import java.util.List;
5+
import java.util.Map;
6+
7+
import lombok.AllArgsConstructor;
8+
import lombok.Getter;
9+
10+
/**
11+
* Event payload for a
12+
* {@link dev.openfeature.contrib.providers.flagd.resolver.Resolver} connection
13+
* state change event.
14+
*/
15+
@AllArgsConstructor
16+
public class ConnectionEvent {
17+
@Getter
18+
private final boolean connected;
19+
private final List<String> flagsChanged;
20+
private final Map<String, Object> syncMetadata;
21+
22+
/**
23+
* Construct a new ConnectionEvent.
24+
*
25+
* @param connected status of the connection
26+
*/
27+
public ConnectionEvent(boolean connected) {
28+
this(connected, Collections.emptyList(), Collections.emptyMap());
29+
}
30+
31+
/**
32+
* Construct a new ConnectionEvent.
33+
*
34+
* @param connected status of the connection
35+
* @param flagsChanged list of flags changed
36+
*/
37+
public ConnectionEvent(boolean connected, List<String> flagsChanged) {
38+
this(connected, flagsChanged, Collections.emptyMap());
39+
}
40+
41+
/**
42+
* Construct a new ConnectionEvent.
43+
*
44+
* @param connected status of the connection
45+
* @param syncMetadata sync.getMetadata
46+
*/
47+
public ConnectionEvent(boolean connected, Map<String, Object> syncMetadata) {
48+
this(connected, Collections.emptyList(), syncMetadata);
49+
}
50+
51+
/**
52+
* Get changed flags.
53+
*
54+
* @return an unmodifiable view of the changed flags
55+
*/
56+
public List<String> getFlagsChanged() {
57+
return Collections.unmodifiableList(flagsChanged);
58+
}
59+
60+
/**
61+
* Get changed sync metadata.
62+
*
63+
* @return an unmodifiable view of the sync metadata
64+
*/
65+
public Map<String, Object> getSyncMetadata() {
66+
return Collections.unmodifiableMap(syncMetadata);
67+
}
68+
}

Diff for: providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/resolver/grpc/GrpcConnector.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,19 @@
22

33
import java.util.Collections;
44
import java.util.List;
5-
import java.util.Map;
65
import java.util.Random;
76
import java.util.concurrent.TimeUnit;
7+
import java.util.function.Consumer;
88
import java.util.function.Supplier;
99

1010
import dev.openfeature.contrib.providers.flagd.FlagdOptions;
1111
import dev.openfeature.contrib.providers.flagd.resolver.common.ChannelBuilder;
12+
import dev.openfeature.contrib.providers.flagd.resolver.common.ConnectionEvent;
1213
import dev.openfeature.contrib.providers.flagd.resolver.common.Util;
1314
import dev.openfeature.contrib.providers.flagd.resolver.grpc.cache.Cache;
1415
import dev.openfeature.flagd.grpc.evaluation.Evaluation.EventStreamRequest;
1516
import dev.openfeature.flagd.grpc.evaluation.Evaluation.EventStreamResponse;
1617
import dev.openfeature.flagd.grpc.evaluation.ServiceGrpc;
17-
import dev.openfeature.sdk.internal.TriConsumer;
1818
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
1919
import io.grpc.ManagedChannel;
2020
import io.grpc.stub.StreamObserver;
@@ -38,7 +38,7 @@ public class GrpcConnector {
3838
private final long deadline;
3939

4040
private final Cache cache;
41-
private final TriConsumer<Boolean, List<String>, Map<String, Object>> onConnectionEvent;
41+
private final Consumer<ConnectionEvent> onConnectionEvent;
4242
private final Supplier<Boolean> connectedSupplier;
4343

4444
private int eventStreamAttempt = 1;
@@ -56,7 +56,7 @@ public class GrpcConnector {
5656
* @param onConnectionEvent lambda which handles changes in the connection/stream
5757
*/
5858
public GrpcConnector(final FlagdOptions options, final Cache cache, final Supplier<Boolean> connectedSupplier,
59-
TriConsumer<Boolean, List<String>, Map<String, Object>> onConnectionEvent) {
59+
Consumer<ConnectionEvent> onConnectionEvent) {
6060
this.channel = ChannelBuilder.nettyChannel(options);
6161
this.serviceStub = ServiceGrpc.newStub(channel);
6262
this.serviceBlockingStub = ServiceGrpc.newBlockingStub(channel);
@@ -105,7 +105,7 @@ public void shutdown() throws Exception {
105105
this.channel.awaitTermination(this.deadline, TimeUnit.MILLISECONDS);
106106
log.warn(String.format("Unable to shut down channel by %d deadline", this.deadline));
107107
}
108-
this.onConnectionEvent.accept(false, Collections.emptyList(), Collections.emptyMap());
108+
this.onConnectionEvent.accept(new ConnectionEvent(false, Collections.emptyList(), Collections.emptyMap()));
109109
}
110110
}
111111

@@ -166,6 +166,6 @@ private void onConnectionEvent(final boolean connected, final List<String> chang
166166
this.eventStreamRetryBackoff = this.startEventStreamRetryBackoff;
167167
}
168168
// chain to initiator
169-
this.onConnectionEvent.accept(connected, changedFlags, Collections.emptyMap());
169+
this.onConnectionEvent.accept(new ConnectionEvent(connected, changedFlags));
170170
}
171171
}

Diff for: providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/resolver/grpc/GrpcResolver.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
import static dev.openfeature.contrib.providers.flagd.resolver.common.Convert.getField;
66
import static dev.openfeature.contrib.providers.flagd.resolver.common.Convert.getFieldDescriptor;
77

8-
import java.util.List;
98
import java.util.Map;
9+
import java.util.function.Consumer;
1010
import java.util.function.Function;
1111
import java.util.function.Supplier;
1212

@@ -16,6 +16,7 @@
1616
import dev.openfeature.contrib.providers.flagd.Config;
1717
import dev.openfeature.contrib.providers.flagd.FlagdOptions;
1818
import dev.openfeature.contrib.providers.flagd.resolver.Resolver;
19+
import dev.openfeature.contrib.providers.flagd.resolver.common.ConnectionEvent;
1920
import dev.openfeature.contrib.providers.flagd.resolver.grpc.cache.Cache;
2021
import dev.openfeature.contrib.providers.flagd.resolver.grpc.strategy.ResolveFactory;
2122
import dev.openfeature.contrib.providers.flagd.resolver.grpc.strategy.ResolveStrategy;
@@ -33,7 +34,6 @@
3334
import dev.openfeature.sdk.exceptions.OpenFeatureError;
3435
import dev.openfeature.sdk.exceptions.ParseError;
3536
import dev.openfeature.sdk.exceptions.TypeMismatchError;
36-
import dev.openfeature.sdk.internal.TriConsumer;
3737
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
3838
import io.grpc.Status.Code;
3939
import io.grpc.StatusRuntimeException;
@@ -61,7 +61,7 @@ public final class GrpcResolver implements Resolver {
6161
* @param onConnectionEvent lambda which handles changes in the connection/stream
6262
*/
6363
public GrpcResolver(final FlagdOptions options, final Cache cache, final Supplier<Boolean> connectedSupplier,
64-
final TriConsumer<Boolean, List<String>, Map<String, Object>> onConnectionEvent) {
64+
final Consumer<ConnectionEvent> onConnectionEvent) {
6565
this.cache = cache;
6666
this.connectedSupplier = connectedSupplier;
6767
this.strategy = ResolveFactory.getStrategy(options);

Diff for: providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/resolver/process/InProcessResolver.java

+8-10
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,12 @@
22

33
import static dev.openfeature.contrib.providers.flagd.resolver.process.model.FeatureFlag.EMPTY_TARGETING_STRING;
44

5-
import java.util.Collections;
6-
import java.util.List;
7-
import java.util.Map;
5+
import java.util.function.Consumer;
86
import java.util.function.Supplier;
97

108
import dev.openfeature.contrib.providers.flagd.FlagdOptions;
119
import dev.openfeature.contrib.providers.flagd.resolver.Resolver;
10+
import dev.openfeature.contrib.providers.flagd.resolver.common.ConnectionEvent;
1211
import dev.openfeature.contrib.providers.flagd.resolver.common.Util;
1312
import dev.openfeature.contrib.providers.flagd.resolver.process.model.FeatureFlag;
1413
import dev.openfeature.contrib.providers.flagd.resolver.process.storage.FlagStore;
@@ -27,7 +26,6 @@
2726
import dev.openfeature.sdk.Value;
2827
import dev.openfeature.sdk.exceptions.ParseError;
2928
import dev.openfeature.sdk.exceptions.TypeMismatchError;
30-
import dev.openfeature.sdk.internal.TriConsumer;
3129
import lombok.extern.slf4j.Slf4j;
3230

3331
/**
@@ -38,7 +36,7 @@
3836
@Slf4j
3937
public class InProcessResolver implements Resolver {
4038
private final Storage flagStore;
41-
private final TriConsumer<Boolean, List<String>, Map<String, Object>> onConnectionEvent;
39+
private final Consumer<ConnectionEvent> onConnectionEvent;
4240
private final Operator operator;
4341
private final long deadline;
4442
private final ImmutableMetadata metadata;
@@ -56,7 +54,7 @@ public class InProcessResolver implements Resolver {
5654
* connection/stream
5755
*/
5856
public InProcessResolver(FlagdOptions options, final Supplier<Boolean> connectedSupplier,
59-
TriConsumer<Boolean, List<String>, Map<String, Object>> onConnectionEvent) {
57+
Consumer<ConnectionEvent> onConnectionEvent) {
6058
this.flagStore = new FlagStore(getConnector(options));
6159
this.deadline = options.getDeadline();
6260
this.onConnectionEvent = onConnectionEvent;
@@ -79,11 +77,11 @@ public void init() throws Exception {
7977
final StorageStateChange storageStateChange = flagStore.getStateQueue().take();
8078
switch (storageStateChange.getStorageState()) {
8179
case OK:
82-
onConnectionEvent.accept(true, storageStateChange.getChangedFlagsKeys(),
83-
storageStateChange.getSyncMetadata());
80+
onConnectionEvent.accept(new ConnectionEvent(true, storageStateChange.getChangedFlagsKeys(),
81+
storageStateChange.getSyncMetadata()));
8482
break;
8583
case ERROR:
86-
onConnectionEvent.accept(false, Collections.emptyList(), Collections.emptyMap());
84+
onConnectionEvent.accept(new ConnectionEvent(false));
8785
break;
8886
default:
8987
log.info(String.format("Storage emitted unhandled status: %s",
@@ -109,7 +107,7 @@ public void init() throws Exception {
109107
*/
110108
public void shutdown() throws InterruptedException {
111109
flagStore.shutdown();
112-
onConnectionEvent.accept(false, Collections.emptyList(), Collections.emptyMap());
110+
onConnectionEvent.accept(new ConnectionEvent(false));
113111
}
114112

115113
/**

0 commit comments

Comments
 (0)