diff --git a/.github/workflows/merge.yml b/.github/workflows/merge.yml
index e278b3b4..0709f406 100644
--- a/.github/workflows/merge.yml
+++ b/.github/workflows/merge.yml
@@ -32,7 +32,7 @@ jobs:
server-password: ${{ secrets.OSSRH_PASSWORD }}
- name: Cache local Maven repository
- uses: actions/cache@a3f5edc2378b2e43203912210dc88effa160f032
+ uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
diff --git a/.github/workflows/pullrequest.yml b/.github/workflows/pullrequest.yml
index c771202e..8ccc6ab7 100644
--- a/.github/workflows/pullrequest.yml
+++ b/.github/workflows/pullrequest.yml
@@ -31,7 +31,7 @@ jobs:
languages: java
- name: Cache local Maven repository
- uses: actions/cache@a3f5edc2378b2e43203912210dc88effa160f032
+ uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
@@ -39,7 +39,7 @@ jobs:
${{ runner.os }}-maven-
- name: Build with Maven
- run: mvn --batch-mode --update-snapshots verify # -P integration-test - add this back once we have a compatible flagd
+ run: mvn --batch-mode --update-snapshots verify -P integration-test
- name: Upload coverage to Codecov
uses: codecov/codecov-action@e0fbd592d323cb2991fb586fdd260734fcb41fcb
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index 64c0d41e..5675f452 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1 +1 @@
-{".":"0.3.0"}
\ No newline at end of file
+{".":"0.3.1"}
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 91c28a74..271e6d8f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,12 @@
# Changelog
+## [0.3.1](https://github.com/open-feature/java-sdk/compare/v0.3.0...v0.3.1) (2022-10-13)
+
+
+### Bug Fixes
+
+* merge eval context ([#149](https://github.com/open-feature/java-sdk/issues/149)) ([fad0f35](https://github.com/open-feature/java-sdk/commit/fad0f35fc8a6469672ef67820f1850f20741b66a))
+
## [0.3.0](https://github.com/open-feature/java-sdk/compare/v0.2.2...v0.3.0) (2022-10-13)
diff --git a/README.md b/README.md
index d50baea2..6b786c7c 100644
--- a/README.md
+++ b/README.md
@@ -66,7 +66,7 @@ class MyClass {
dev.openfeature
sdk
- 0.3.0
+ 0.3.1
```
@@ -90,7 +90,7 @@ If you would like snapshot builds, this is the relevant repository information:
```groovy
dependencies {
- implementation 'dev.openfeature:sdk:0.3.0'
+ implementation 'dev.openfeature:sdk:0.3.1'
}
```
diff --git a/pom.xml b/pom.xml
index 53284bd2..d8b5b4bb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
dev.openfeature
sdk
- 0.3.0
+ 0.3.1
UTF-8
@@ -137,6 +137,13 @@
31.1-jre
test
+
+
+ dev.openfeature.contrib.providers
+ flagd
+ 0.4.1
+ test
+
diff --git a/src/main/java/dev/openfeature/sdk/OpenFeatureClient.java b/src/main/java/dev/openfeature/sdk/OpenFeatureClient.java
index 3759ecea..827c9215 100644
--- a/src/main/java/dev/openfeature/sdk/OpenFeatureClient.java
+++ b/src/main/java/dev/openfeature/sdk/OpenFeatureClient.java
@@ -118,7 +118,7 @@ private FlagEvaluationDetails evaluateFlag(FlagValueType type, String key
apiContext = openfeatureApi.getEvaluationContext() != null
? openfeatureApi.getEvaluationContext()
: new MutableContext();
- clientContext = openfeatureApi.getEvaluationContext() != null
+ clientContext = this.getEvaluationContext() != null
? this.getEvaluationContext()
: new MutableContext();
diff --git a/src/test/java/dev/openfeature/sdk/OpenFeatureClientTest.java b/src/test/java/dev/openfeature/sdk/OpenFeatureClientTest.java
index eab962ac..f4c6f100 100644
--- a/src/test/java/dev/openfeature/sdk/OpenFeatureClientTest.java
+++ b/src/test/java/dev/openfeature/sdk/OpenFeatureClientTest.java
@@ -29,4 +29,30 @@ void shouldNotThrowExceptionIfHookHasDifferentTypeArgumentThanHookContext() {
assertThat(actual.getValue()).isTrue();
assertThat(TEST_LOGGER.getLoggingEvents()).filteredOn(event -> event.getLevel().equals(Level.ERROR)).isEmpty();
}
+
+ @Test
+ void mergeContextTest() {
+ TEST_LOGGER.clear();
+
+ String flag = "feature key";
+ boolean defaultValue = false;
+ String targetingKey = "targeting key";
+ EvaluationContext ctx = new MutableContext(targetingKey);
+
+ OpenFeatureAPI api = mock(OpenFeatureAPI.class);
+ FeatureProvider mockProvider = mock(FeatureProvider.class);
+ // this makes it so that true is returned only if the targeting key set at the client level is honored
+ when(mockProvider.getBooleanEvaluation(
+ eq(flag), eq(defaultValue), argThat(
+ context -> context.getTargetingKey().equals(targetingKey)))).thenReturn(ProviderEvaluation.builder()
+ .value(true).build());
+ when(api.getProvider()).thenReturn(mockProvider);
+
+ OpenFeatureClient client = new OpenFeatureClient(api, "name", "version");
+ client.setEvaluationContext(ctx);
+
+ FlagEvaluationDetails result = client.getBooleanDetails(flag, defaultValue);
+
+ assertThat(result.getValue()).isTrue();
+ }
}
diff --git a/src/test/java/dev/openfeature/sdk/integration/StepDefinitions.java b/src/test/java/dev/openfeature/sdk/integration/StepDefinitions.java
index 3513bddc..892dc34f 100644
--- a/src/test/java/dev/openfeature/sdk/integration/StepDefinitions.java
+++ b/src/test/java/dev/openfeature/sdk/integration/StepDefinitions.java
@@ -3,7 +3,7 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
-// import dev.openfeature.contrib.providers.flagd.FlagdProvider;
+import dev.openfeature.contrib.providers.flagd.FlagdProvider;
import dev.openfeature.sdk.Client;
import dev.openfeature.sdk.FlagEvaluationDetails;
import dev.openfeature.sdk.MutableStructure;
@@ -45,7 +45,7 @@ public class StepDefinitions {
@BeforeAll()
public static void setup() {
- // OpenFeatureAPI.getInstance().setProvider(new FlagdProvider());
+ OpenFeatureAPI.getInstance().setProvider(new FlagdProvider());
client = OpenFeatureAPI.getInstance().getClient();
}
diff --git a/test-harness b/test-harness
index e7379cd0..5153eac7 160000
--- a/test-harness
+++ b/test-harness
@@ -1 +1 @@
-Subproject commit e7379cd0070f8907cacdc535184f8f626bf25e01
+Subproject commit 5153eac71dc47413da4326bdb49a94e573b99578
diff --git a/version.txt b/version.txt
index 0d91a54c..9e11b32f 100644
--- a/version.txt
+++ b/version.txt
@@ -1 +1 @@
-0.3.0
+0.3.1