Skip to content

Commit e3c1d30

Browse files
committed
reduce visibility of emit methods, add error code to ProviderEventDetails
Signed-off-by: christian.lutnik <[email protected]>
1 parent 7d89d52 commit e3c1d30

File tree

5 files changed

+26
-13
lines changed

5 files changed

+26
-13
lines changed

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ void detach() {
5353
* @param event The event type
5454
* @param details The details of the event
5555
*/
56-
public void emit(ProviderEvent event, ProviderEventDetails details) {
56+
protected void emit(ProviderEvent event, ProviderEventDetails details) {
5757
if (eventProviderListener != null) {
5858
eventProviderListener.onEmit(event, details);
5959
}
@@ -68,7 +68,7 @@ public void emit(ProviderEvent event, ProviderEventDetails details) {
6868
*
6969
* @param details The details of the event
7070
*/
71-
public void emitProviderReady(ProviderEventDetails details) {
71+
protected void emitProviderReady(ProviderEventDetails details) {
7272
emit(ProviderEvent.PROVIDER_READY, details);
7373
}
7474

@@ -79,7 +79,7 @@ public void emitProviderReady(ProviderEventDetails details) {
7979
*
8080
* @param details The details of the event
8181
*/
82-
public void emitProviderConfigurationChanged(ProviderEventDetails details) {
82+
protected void emitProviderConfigurationChanged(ProviderEventDetails details) {
8383
emit(ProviderEvent.PROVIDER_CONFIGURATION_CHANGED, details);
8484
}
8585

@@ -89,7 +89,7 @@ public void emitProviderConfigurationChanged(ProviderEventDetails details) {
8989
*
9090
* @param details The details of the event
9191
*/
92-
public void emitProviderStale(ProviderEventDetails details) {
92+
protected void emitProviderStale(ProviderEventDetails details) {
9393
emit(ProviderEvent.PROVIDER_STALE, details);
9494
}
9595

@@ -99,7 +99,7 @@ public void emitProviderStale(ProviderEventDetails details) {
9999
*
100100
* @param details The details of the event
101101
*/
102-
public void emitProviderError(ProviderEventDetails details) {
102+
protected void emitProviderError(ProviderEventDetails details) {
103103
emit(ProviderEvent.PROVIDER_ERROR, details);
104104
}
105105

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,5 @@ public class ProviderEventDetails {
1313
private List<String> flagsChanged;
1414
private String message;
1515
private ImmutableMetadata eventMetadata;
16+
private ErrorCode errorCode;
1617
}

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,11 @@ public boolean equals(Object obj) {
8181
@Override
8282
public void onEmit(ProviderEvent event, ProviderEventDetails details) {
8383
if (ProviderEvent.PROVIDER_ERROR.equals(event)) {
84-
state = ProviderState.ERROR;
84+
if (details != null && details.getErrorCode() == ErrorCode.PROVIDER_FATAL) {
85+
state = ProviderState.FATAL;
86+
} else {
87+
state = ProviderState.ERROR;
88+
}
8589
} else if (ProviderEvent.PROVIDER_STALE.equals(event)) {
8690
state = ProviderState.STALE;
8791
} else if (ProviderEvent.PROVIDER_READY.equals(event)) {

src/test/java/dev/openfeature/sdk/StatefulFeatureProviderTest.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,10 +129,24 @@ void shouldSetTheStateToStaleWhenAStaleEventIsEmitted() {
129129
@Test
130130
void shouldSetTheStateToErrorWhenAnErrorEventIsEmitted() {
131131
assertThat(wrapper.getState()).isEqualTo(ProviderState.NOT_READY);
132-
wrapper.onEmit(ProviderEvent.PROVIDER_ERROR, null);
132+
wrapper.onEmit(
133+
ProviderEvent.PROVIDER_ERROR,
134+
ProviderEventDetails.builder().errorCode(ErrorCode.GENERAL).build()
135+
);
133136
assertThat(wrapper.getState()).isEqualTo(ProviderState.ERROR);
134137
}
135138

139+
@Specification(number = "5.3.5", text = "If the provider emits an event, the value of the client's provider status MUST be updated accordingly.")
140+
@Test
141+
void shouldSetTheStateToFatalWhenAFatalErrorEventIsEmitted() {
142+
assertThat(wrapper.getState()).isEqualTo(ProviderState.NOT_READY);
143+
wrapper.onEmit(
144+
ProviderEvent.PROVIDER_ERROR,
145+
ProviderEventDetails.builder().errorCode(ErrorCode.PROVIDER_FATAL).build()
146+
);
147+
assertThat(wrapper.getState()).isEqualTo(ProviderState.FATAL);
148+
}
149+
136150
static class TestDelegate extends EventProvider {
137151
private final AtomicInteger initCalled = new AtomicInteger();
138152
private final AtomicInteger shutdownCalled = new AtomicInteger();

src/test/java/dev/openfeature/sdk/providers/memory/InMemoryProviderTest.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,6 @@ void beforeEach() {
4545
.build());
4646
}
4747

48-
@SneakyThrows
49-
@Test
50-
void eventsTest() {
51-
verify(provider, times(2)).emitProviderConfigurationChanged(any());
52-
}
53-
5448
@Test
5549
void getBooleanEvaluation() {
5650
assertTrue(client.getBooleanValue("boolean-flag", false));

0 commit comments

Comments
 (0)