Skip to content

Commit e4ea124

Browse files
committed
Merge remote-tracking branch 'origin/make-provider-stateless' into make-provider-stateless
2 parents 53dae87 + 8ca0d2d commit e4ea124

16 files changed

+128
-43
lines changed

.github/workflows/merge.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
steps:
2323
- uses: actions/checkout@6d193bf28034eafb982f37bd894289fe649468fc
2424
- name: Set up JDK 8
25-
uses: actions/setup-java@2dfa2011c5b2a0f1489bf9e433881c92c1631f88
25+
uses: actions/setup-java@bcfbca5b713b77435aded8de683c7ee5e79f63cb
2626
with:
2727
java-version: '8'
2828
distribution: 'temurin'

.github/workflows/pullrequest.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@ jobs:
1313
uses: actions/checkout@6d193bf28034eafb982f37bd894289fe649468fc
1414

1515
- name: Set up JDK 8
16-
uses: actions/setup-java@2dfa2011c5b2a0f1489bf9e433881c92c1631f88
16+
uses: actions/setup-java@bcfbca5b713b77435aded8de683c7ee5e79f63cb
1717
with:
1818
java-version: '8'
1919
distribution: 'temurin'
2020
cache: maven
2121

2222
- name: Initialize CodeQL
23-
uses: github/codeql-action/init@8fd294e26a0e458834582b0fe4988d79966c7c0a
23+
uses: github/codeql-action/init@64431c66d0e98a26d34f9485e5f8e317e14956fc
2424
with:
2525
languages: java
2626

@@ -45,4 +45,4 @@ jobs:
4545
verbose: true # optional (default = false)
4646

4747
- name: Perform CodeQL Analysis
48-
uses: github/codeql-action/analyze@8fd294e26a0e458834582b0fe4988d79966c7c0a
48+
uses: github/codeql-action/analyze@64431c66d0e98a26d34f9485e5f8e317e14956fc

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ jobs:
3131
uses: actions/checkout@6d193bf28034eafb982f37bd894289fe649468fc
3232
- name: Set up JDK 8
3333
if: ${{ steps.release.outputs.release_created }}
34-
uses: actions/setup-java@2dfa2011c5b2a0f1489bf9e433881c92c1631f88
34+
uses: actions/setup-java@bcfbca5b713b77435aded8de683c7ee5e79f63cb
3535
with:
3636
java-version: '8'
3737
distribution: 'temurin'

.github/workflows/static-code-scanning.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,12 @@ jobs:
3333

3434
# Initializes the CodeQL tools for scanning.
3535
- name: Initialize CodeQL
36-
uses: github/codeql-action/init@8fd294e26a0e458834582b0fe4988d79966c7c0a
36+
uses: github/codeql-action/init@64431c66d0e98a26d34f9485e5f8e317e14956fc
3737
with:
3838
languages: java
3939

4040
- name: Autobuild
41-
uses: github/codeql-action/autobuild@8fd294e26a0e458834582b0fe4988d79966c7c0a
41+
uses: github/codeql-action/autobuild@64431c66d0e98a26d34f9485e5f8e317e14956fc
4242

4343
- name: Perform CodeQL Analysis
44-
uses: github/codeql-action/analyze@8fd294e26a0e458834582b0fe4988d79966c7c0a
44+
uses: github/codeql-action/analyze@64431c66d0e98a26d34f9485e5f8e317e14956fc

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -490,7 +490,7 @@
490490
<plugin>
491491
<groupId>org.apache.maven.plugins</groupId>
492492
<artifactId>maven-gpg-plugin</artifactId>
493-
<version>3.2.5</version>
493+
<version>3.2.6</version>
494494
<executions>
495495
<execution>
496496
<id>sign-artifacts</id>

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

Lines changed: 5 additions & 16 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-
protected void emit(ProviderEvent event, ProviderEventDetails details) {
56+
public void emit(ProviderEvent event, ProviderEventDetails details) {
5757
if (eventProviderListener != null) {
5858
eventProviderListener.onEmit(event, details);
5959
}
@@ -68,7 +68,7 @@ protected void emit(ProviderEvent event, ProviderEventDetails details) {
6868
*
6969
* @param details The details of the event
7070
*/
71-
protected void emitProviderReady(ProviderEventDetails details) {
71+
public void emitProviderReady(ProviderEventDetails details) {
7272
emit(ProviderEvent.PROVIDER_READY, details);
7373
}
7474

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

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

@@ -99,18 +99,7 @@ protected void emitProviderStale(ProviderEventDetails details) {
9999
*
100100
* @param details The details of the event
101101
*/
102-
protected void emitProviderError(ProviderEventDetails details) {
102+
public void emitProviderError(ProviderEventDetails details) {
103103
emit(ProviderEvent.PROVIDER_ERROR, details);
104104
}
105-
106-
@Override
107-
public boolean equals(Object obj) {
108-
if (obj == null) {
109-
return false;
110-
}
111-
if (obj instanceof FeatureProviderStateManager) {
112-
return this == ((FeatureProviderStateManager) obj).getProvider();
113-
}
114-
return this == obj;
115-
}
116105
}

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

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,11 @@ private <T> FlagEvaluationDetails<T> evaluateFlag(FlagValueType type, String key
146146

147147
details = FlagEvaluationDetails.from(providerEval, key);
148148
if (details.getErrorCode() != null) {
149-
throw ExceptionUtils.instantiateErrorByErrorCode(details.getErrorCode(), details.getErrorMessage());
149+
OpenFeatureError error = ExceptionUtils.instantiateErrorByErrorCode(
150+
details.getErrorCode(),
151+
details.getErrorMessage());
152+
enrichDetailsWithErrorDefaults(defaultValue, details);
153+
hookSupport.errorHooks(type, afterHookContext, error, mergedHooks, hints);
150154
} else {
151155
hookSupport.afterHooks(type, afterHookContext, details, mergedHooks, hints);
152156
}
@@ -160,8 +164,7 @@ private <T> FlagEvaluationDetails<T> evaluateFlag(FlagValueType type, String key
160164
details.setErrorCode(ErrorCode.GENERAL);
161165
}
162166
details.setErrorMessage(e.getMessage());
163-
details.setValue(defaultValue);
164-
details.setReason(Reason.ERROR.toString());
167+
enrichDetailsWithErrorDefaults(defaultValue, details);
165168
hookSupport.errorHooks(type, afterHookContext, e, mergedHooks, hints);
166169
} finally {
167170
hookSupport.afterAllHooks(type, afterHookContext, mergedHooks, hints);
@@ -170,6 +173,11 @@ private <T> FlagEvaluationDetails<T> evaluateFlag(FlagValueType type, String key
170173
return details;
171174
}
172175

176+
private static <T> void enrichDetailsWithErrorDefaults(T defaultValue, FlagEvaluationDetails<T> details) {
177+
details.setValue(defaultValue);
178+
details.setReason(Reason.ERROR.toString());
179+
}
180+
173181
/**
174182
* Merge invocation contexts with API, transaction and client contexts.
175183
* Does not merge before context.

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,9 @@ private void prepareAndInitializeProvider(String domain,
184184

185185
private FeatureProviderStateManager getExistingStateManagerForProvider(FeatureProvider provider) {
186186
for (FeatureProviderStateManager stateManager : stateManagers.values()) {
187-
if (stateManager.hasSameProvider(provider)) return stateManager;
187+
if (stateManager.hasSameProvider(provider)) {
188+
return stateManager;
189+
}
188190
}
189191
FeatureProviderStateManager defaultFeatureProviderStateManager = defaultStateManger.get();
190192
if (defaultFeatureProviderStateManager.hasSameProvider(provider)) {

src/main/java/dev/openfeature/sdk/exceptions/FlagNotFoundError.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,11 @@
44
import lombok.Getter;
55
import lombok.experimental.StandardException;
66

7-
@SuppressWarnings("checkstyle:MissingJavadocType")
7+
@SuppressWarnings({"checkstyle:MissingJavadocType", "squid:S110"})
88
@StandardException
9-
public class FlagNotFoundError extends OpenFeatureError {
9+
public class FlagNotFoundError extends OpenFeatureErrorWithoutStacktrace {
1010
private static final long serialVersionUID = 1L;
11-
@Getter private final ErrorCode errorCode = ErrorCode.FLAG_NOT_FOUND;
11+
@Getter
12+
private final ErrorCode errorCode = ErrorCode.FLAG_NOT_FOUND;
1213

13-
@Override
14-
public synchronized Throwable fillInStackTrace() {
15-
return this;
16-
}
1714
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package dev.openfeature.sdk.exceptions;
2+
3+
import lombok.experimental.StandardException;
4+
5+
@SuppressWarnings("checkstyle:MissingJavadocType")
6+
@StandardException
7+
public abstract class OpenFeatureErrorWithoutStacktrace extends OpenFeatureError {
8+
private static final long serialVersionUID = 1L;
9+
10+
@Override
11+
public synchronized Throwable fillInStackTrace() {
12+
return this;
13+
}
14+
}

0 commit comments

Comments
 (0)