diff --git a/.github/workflows/cflite_batch.yml b/.github/workflows/cflite_batch.yml index bbbdd231..c4bceed0 100644 --- a/.github/workflows/cflite_batch.yml +++ b/.github/workflows/cflite_batch.yml @@ -24,13 +24,13 @@ jobs: steps: - name: Build Fuzzers (${{ matrix.sanitizer }}) id: build - uses: google/clusterfuzzlite/actions/build_fuzzers@v1 + uses: google/clusterfuzzlite/actions/build_fuzzers@1e163f06cba7820da5154ac9fe1a32d7fe6f73a3 # v1 with: language: jvm sanitizer: ${{ matrix.sanitizer }} - name: Run Fuzzers (${{ matrix.sanitizer }}) id: run - uses: google/clusterfuzzlite/actions/run_fuzzers@v1 + uses: google/clusterfuzzlite/actions/run_fuzzers@1e163f06cba7820da5154ac9fe1a32d7fe6f73a3 # v1 with: github-token: ${{ secrets.GITHUB_TOKEN }} fuzz-seconds: 3600 diff --git a/.github/workflows/merge.yml b/.github/workflows/merge.yml index d300c6da..03fb4491 100644 --- a/.github/workflows/merge.yml +++ b/.github/workflows/merge.yml @@ -20,9 +20,9 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@bf085276cecdb0cc76fbbe0687a5a0e786646936 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c - name: Set up JDK 8 - uses: actions/setup-java@19eeec562b37d29a1ad055b7de9c280bd0906d8d + uses: actions/setup-java@8f12c5c4d1ebd18bf4b7a51a1b0b912633f0bc61 with: java-version: '8' distribution: 'temurin' @@ -32,7 +32,7 @@ jobs: server-password: ${{ secrets.OSSRH_PASSWORD }} - name: Cache local Maven repository - uses: actions/cache@e2d614414f9efb4e3358bd4f3092a6406b2e4a32 + uses: actions/cache@2b5a782c6414f96354f95902141714b127692d1e with: path: ~/.m2/repository key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} diff --git a/.github/workflows/pullrequest.yml b/.github/workflows/pullrequest.yml index 02721d0e..fdefe2e1 100644 --- a/.github/workflows/pullrequest.yml +++ b/.github/workflows/pullrequest.yml @@ -16,22 +16,22 @@ jobs: steps: - name: Check out the code - uses: actions/checkout@bf085276cecdb0cc76fbbe0687a5a0e786646936 + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c - name: Set up JDK 8 - uses: actions/setup-java@19eeec562b37d29a1ad055b7de9c280bd0906d8d + uses: actions/setup-java@8f12c5c4d1ebd18bf4b7a51a1b0b912633f0bc61 with: java-version: '8' distribution: 'temurin' cache: maven - name: Initialize CodeQL - uses: github/codeql-action/init@a631f4b0160a57d549a79d3bd5c377cefdd8518f + uses: github/codeql-action/init@a58e90a9daf2aac731400f56d005f2b324a2c5b8 with: languages: java - name: Cache local Maven repository - uses: actions/cache@e2d614414f9efb4e3358bd4f3092a6406b2e4a32 + uses: actions/cache@2b5a782c6414f96354f95902141714b127692d1e with: path: ~/.m2/repository key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} @@ -51,4 +51,4 @@ jobs: verbose: true # optional (default = false) - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@a631f4b0160a57d549a79d3bd5c377cefdd8518f + uses: github/codeql-action/analyze@a58e90a9daf2aac731400f56d005f2b324a2c5b8 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 40a0dc03..517b1be0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -19,7 +19,7 @@ jobs: # Release-please creates a PR that tracks all changes steps: - - uses: google-github-actions/release-please-action@ed61e76296090fba410e2a73f43463f717504028 + - uses: google-github-actions/release-please-action@514bc6cdae71484c998108f2136a8f5e4c62b9b9 id: release with: command: manifest @@ -29,10 +29,10 @@ jobs: # These steps are only run if this was a merged release-please PR - name: checkout if: ${{ steps.release.outputs.releases_created }} - uses: actions/checkout@bf085276cecdb0cc76fbbe0687a5a0e786646936 + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c - name: Set up JDK 8 if: ${{ steps.release.outputs.releases_created }} - uses: actions/setup-java@19eeec562b37d29a1ad055b7de9c280bd0906d8d + uses: actions/setup-java@8f12c5c4d1ebd18bf4b7a51a1b0b912633f0bc61 with: java-version: '8' distribution: 'temurin' diff --git a/.github/workflows/static-code-scanning.yaml b/.github/workflows/static-code-scanning.yaml index b584ae49..42085389 100644 --- a/.github/workflows/static-code-scanning.yaml +++ b/.github/workflows/static-code-scanning.yaml @@ -29,16 +29,16 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@bf085276cecdb0cc76fbbe0687a5a0e786646936 + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@a631f4b0160a57d549a79d3bd5c377cefdd8518f + uses: github/codeql-action/init@a58e90a9daf2aac731400f56d005f2b324a2c5b8 with: languages: java - name: Autobuild - uses: github/codeql-action/autobuild@a631f4b0160a57d549a79d3bd5c377cefdd8518f + uses: github/codeql-action/autobuild@a58e90a9daf2aac731400f56d005f2b324a2c5b8 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@a631f4b0160a57d549a79d3bd5c377cefdd8518f + uses: github/codeql-action/analyze@a58e90a9daf2aac731400f56d005f2b324a2c5b8 diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 0b8585c7..077bc02a 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1 +1 @@ -{".":"1.0.1"} \ No newline at end of file +{".":"1.1.0"} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 3a1e0aec..e42f88ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,20 @@ # Changelog +## [1.1.0](https://github.com/open-feature/java-sdk/compare/v1.0.1...v1.1.0) (2023-01-24) + + +### Features + +* add STATIC, CACHED reasons ([#240](https://github.com/open-feature/java-sdk/issues/240)) ([d069a8f](https://github.com/open-feature/java-sdk/commit/d069a8fa9d7c1795f6713f4b331657119e6f7d8f)) +* add STATIC, CACHED reasons. ([d069a8f](https://github.com/open-feature/java-sdk/commit/d069a8fa9d7c1795f6713f4b331657119e6f7d8f)) + + +### Bug Fixes + +* **deps:** update dependency io.cucumber:cucumber-bom to v7.10.0 ([#195](https://github.com/open-feature/java-sdk/issues/195)) ([0544597](https://github.com/open-feature/java-sdk/commit/0544597511471a2c10fbe2a3296de5629730ea7c)) +* **deps:** update dependency io.cucumber:cucumber-bom to v7.11.0 ([#208](https://github.com/open-feature/java-sdk/issues/208)) ([6103dd2](https://github.com/open-feature/java-sdk/commit/6103dd2d39adceaaeeb0f63de6fb10437be3a743)) +* **deps:** update junit5 monorepo ([#230](https://github.com/open-feature/java-sdk/issues/230)) ([67b15c6](https://github.com/open-feature/java-sdk/commit/67b15c6e104fe7539f7a197810be28d69634cbfc)) + ## [1.0.1](https://github.com/open-feature/java-sdk/compare/v1.0.0...v1.0.1) (2022-11-30) diff --git a/README.md b/README.md index dae9848b..76c7883f 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ For complete documentation, visit: https://docs.openfeature.dev/docs/category/co dev.openfeature sdk - 1.0.1 + 1.1.0 ``` @@ -92,7 +92,7 @@ If you would like snapshot builds, this is the relevant repository information: ```groovy dependencies { - implementation 'dev.openfeature:sdk:1.0.1' + implementation 'dev.openfeature:sdk:1.1.0' } ``` @@ -118,7 +118,15 @@ We are also present on the `#openfeature` channel in the [CNCF slack](https://sl ### Integration tests -The continuous integration runs a set of [gherkin integration tests](https://github.com/open-feature/test-harness/blob/main/features/evaluation.feature) using [`flagd`](https://github.com/open-feature/flagd). These tests do not run with the default maven profile. If you'd like to run them locally, you can start the flagd testbed with `docker run -p 8013:8013 ghcr.io/open-feature/flagd-testbed:latest` and then run `mvn test -P integration-test`. +The continuous integration runs a set of [gherkin integration tests](https://github.com/open-feature/test-harness/blob/main/features/evaluation.feature) using [`flagd`](https://github.com/open-feature/flagd). These tests do not run with the default maven profile. If you'd like to run them locally, you can start the flagd testbed with + +``` +docker run -p 8013:8013 ghcr.io/open-feature/flagd-testbed:latest +``` +and then run +``` +mvn test -P integration-test +``` ## Releasing diff --git a/pom.xml b/pom.xml index d7f878e2..83599d96 100644 --- a/pom.xml +++ b/pom.xml @@ -4,13 +4,13 @@ dev.openfeature sdk - 1.0.1 + 1.1.0 UTF-8 1.8 ${maven.compiler.source} - 5.9.1 + 5.9.2 **/integration/*.java @@ -66,7 +66,7 @@ org.mockito mockito-core - 4.9.0 + 4.11.0 test @@ -80,7 +80,7 @@ org.assertj assertj-core - 3.23.1 + 3.24.2 test @@ -115,7 +115,7 @@ org.junit.platform junit-platform-suite - 1.9.1 + 1.9.2 test @@ -141,7 +141,7 @@ dev.openfeature.contrib.providers flagd - 0.5.3 + 0.5.6 test @@ -152,7 +152,7 @@ io.cucumber cucumber-bom - 7.9.0 + 7.11.0 pom import @@ -160,7 +160,7 @@ org.junit junit-bom - 5.9.1 + 5.9.2 pom import @@ -189,7 +189,7 @@ org.cyclonedx cyclonedx-maven-plugin - 2.7.3 + 2.7.4 library 1.3 @@ -214,7 +214,7 @@ maven-dependency-plugin - 3.3.0 + 3.5.0 verify @@ -402,7 +402,7 @@ org.apache.maven.plugins maven-pmd-plugin - 3.19.0 + 3.20.0 run-pmd @@ -450,7 +450,7 @@ org.apache.maven.plugins maven-checkstyle-plugin - 3.2.0 + 3.2.1 checkstyle.xml UTF-8 @@ -519,6 +519,7 @@ exec + cp diff --git a/renovate.json b/renovate.json index 39a2b6e9..62574107 100644 --- a/renovate.json +++ b/renovate.json @@ -1,6 +1,26 @@ { "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": [ - "config:base" + "config:base", + "helpers:pinGitHubActionDigests" + ], + "packageRules": [ + { + "matchUpdateTypes": ["minor", "patch"], + "matchCurrentVersion": "!/^0/", + "automerge": true + }, + { + "matchManagers": ["github-actions"], + "automerge": true + } + ], + "regexManagers": [ + { + "fileMatch": ["^README.md$", "^.github/workflows/pullrequest.yml$"], + "matchStrings": ["ghcr\\.io\\/open-feature\\/flagd-testbed:(?.*?)\\n"], + "depNameTemplate": "open-feature/test-harness", + "datasourceTemplate": "github-releases" + } ] } diff --git a/src/main/java/dev/openfeature/sdk/Reason.java b/src/main/java/dev/openfeature/sdk/Reason.java index 497fd66d..f962a213 100644 --- a/src/main/java/dev/openfeature/sdk/Reason.java +++ b/src/main/java/dev/openfeature/sdk/Reason.java @@ -4,5 +4,5 @@ * Predefined resolution reasons. */ public enum Reason { - DISABLED, SPLIT, TARGETING_MATCH, DEFAULT, UNKNOWN, ERROR + DISABLED, SPLIT, TARGETING_MATCH, DEFAULT, UNKNOWN, CACHED, STATIC, ERROR } diff --git a/src/test/java/dev/openfeature/sdk/integration/StepDefinitions.java b/src/test/java/dev/openfeature/sdk/integration/StepDefinitions.java index 10d72c09..1fe886dd 100644 --- a/src/test/java/dev/openfeature/sdk/integration/StepDefinitions.java +++ b/src/test/java/dev/openfeature/sdk/integration/StepDefinitions.java @@ -6,13 +6,13 @@ import dev.openfeature.contrib.providers.flagd.FlagdProvider; import dev.openfeature.sdk.Client; import dev.openfeature.sdk.FlagEvaluationDetails; -import dev.openfeature.sdk.MutableStructure; import dev.openfeature.sdk.MutableContext; import dev.openfeature.sdk.OpenFeatureAPI; import dev.openfeature.sdk.Reason; import dev.openfeature.sdk.Structure; import dev.openfeature.sdk.Value; import io.cucumber.java.BeforeAll; +import io.cucumber.java.en.Given; import io.cucumber.java.en.Then; import io.cucumber.java.en.When; @@ -44,7 +44,9 @@ public class StepDefinitions { private FlagEvaluationDetails typeErrorDetails; @BeforeAll() + @Given("an openfeature client is registered with cache disabled") public static void setup() { + // TODO: when the FlagdProvider is updated to support caching, we might need to disable it here for this test to work as expected. FlagdProvider provider = new FlagdProvider(); provider.setDeadline(3000); // set a generous deadline, to prevent timeouts in actions OpenFeatureAPI.getInstance().setProvider(provider); @@ -249,7 +251,7 @@ public void a_non_existent_string_flag_with_key_is_evaluated_with_details_and_a_ notFoundDetails = client.getStringDetails(notFoundFlagKey, notFoundDefaultValue); } - @Then("then the default string value should be returned") + @Then("the default string value should be returned") public void then_the_default_string_value_should_be_returned() { assertEquals(notFoundDefaultValue, notFoundDetails.getValue()); } @@ -270,7 +272,7 @@ public void a_string_flag_with_key_is_evaluated_as_an_integer_with_details_and_a typeErrorDetails = client.getIntegerDetails(typeErrorFlagKey, typeErrorDefaultValue); } - @Then("then the default integer value should be returned") + @Then("the default integer value should be returned") public void then_the_default_integer_value_should_be_returned() { assertEquals(typeErrorDefaultValue, typeErrorDetails.getValue()); } diff --git a/test-harness b/test-harness index 5153eac7..2d4c63c8 160000 --- a/test-harness +++ b/test-harness @@ -1 +1 @@ -Subproject commit 5153eac71dc47413da4326bdb49a94e573b99578 +Subproject commit 2d4c63c800aa3af172cf09176325d93124153cde diff --git a/version.txt b/version.txt index 7dea76ed..9084fa2f 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.0.1 +1.1.0