Commit Graph

126 Commits

Author SHA1 Message Date
christian.lutnik 3691b52e43 Fix failing test
Signed-off-by: christian.lutnik <christian.lutnik@dynatrace.com>
2025-02-11 15:23:32 +01:00
chrfwow ae85278c30
feat: Add evaluation details to finally hook stage #1246 (#1262)
Signed-off-by: christian.lutnik <christian.lutnik@dynatrace.com>
Co-authored-by: Todd Baert <todd.baert@dynatrace.com>
2025-01-09 16:12:14 -05:00
Simon Schrottner 64ec68bcf5
build: change checkstyle to google code format, plus adding spotless (#1264)
Signed-off-by: Simon Schrottner <simon.schrottner@dynatrace.com>
2025-01-03 19:06:22 +01:00
warber 64ad644bdb
feat: add tracking as per spec (#1228)
feat: add tracking as per spec

---------

Signed-off-by: Bernd Warmuth <bernd.warmuth@dynatrace.com>
2024-12-06 10:19:36 -05:00
warber 473be8659c
test: Update gherkin test sub module (#1236)
Signed-off-by: Bernd Warmuth <bernd.warmuth@dynatrace.com>
2024-12-05 16:10:49 +00:00
Todd Baert fd7659a46f
perf: reduce hashmap allocations (#1178)
* chore: reduce hashmap allocations

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
2024-10-24 08:41:55 -04:00
Todd Baert 0009e23c7b
chore: improve benchmark realism; add more context (#1182)
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
2024-10-23 12:33:02 -04:00
Todd Baert d6d284b6a3
chore: flaky test (#1169)
chore: blocking set-provider in test

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
2024-10-18 10:10:28 -04:00
Todd Baert 473a05784c chore: fix another flaky test
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
2024-10-15 13:47:12 -04:00
Todd Baert 457da96e7b chore: fix flaky test
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
2024-10-15 12:36:36 -04:00
Todd Baert 90088188c9
perf: add heap benchmark and reduce allocations (#1156)
* chore: add heap benchmark and reduce allocations

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
2024-10-15 09:47:51 -04:00
chrfwow 1b1e527e78
feat: make provider interface "stateless"; SDK maintains provider state (#1096)
* Make provider interface "stateless", SDK maintains provider state

Signed-off-by: christian.lutnik <christian.lutnik@dynatrace.com>
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
Co-authored-by: christian.lutnik <christian.lutnik@dynatrace.com>
Co-authored-by: Todd Baert <todd.baert@dynatrace.com>
2024-09-23 12:45:34 -04:00
Simon Schrottner 6fc0b90610
feat: error resolution flow control without exceptions (#1095)
* Allowing flowcontrol with out exceptions

So far we used exception to handle our flowcontrol, but
Exceptions are costly. In the end we enriched our
evaluation Details with errorCode and errorMessage.
This can be also handled by the providers if desired,
to reduce the execution footprint in errornous cases,
which do not have to be exceptions.

Eg FlagNotFound - it might be the case, but in performance
critical environments, an exception rather than a normal
return, can cause overhead and can be already too costly.

Signed-off-by: Simon Schrottner <simon.schrottner@dynatrace.com>

* fix: adding reason, and removing stacktraces from errors

Signed-off-by: Simon Schrottner <simon.schrottner@dynatrace.com>

* Update src/main/java/dev/openfeature/sdk/exceptions/TypeMismatchError.java

Co-authored-by: Justin Abrahms <justin@abrah.ms>
Signed-off-by: Simon Schrottner <simon.schrottner@dynatrace.com>

---------

Signed-off-by: Simon Schrottner <simon.schrottner@dynatrace.com>
Co-authored-by: Justin Abrahms <justin@abrah.ms>
2024-09-17 09:15:43 -04:00
Todd Baert 037826fe1b
feat: add logging hook, rm logging from evaluation (#1084)
* feat: add logging hook, rm logging from evaluation

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

* fixup: remove public

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

* fixup: debug, not info

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

* fixup: move comment

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

* fixup: underscoes

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

* fixup: add to readme

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

---------

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
2024-09-05 12:33:51 -04:00
Todd Baert 35d4cc23c8
chore: various non-functional refactors (#1066)
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
2024-08-26 09:16:10 -04:00
Ryan Prayogo b7ed041eed
fix: Use ConcurrentHashMap for InMemoryProvider (#1057)
* fix: Use ConcurrentHashMap for InMemoryProvider

Signed-off-by: Ryan Prayogo <57620+ryanprayogo@users.noreply.github.com>

* fix: make the flags field variable final

Signed-off-by: Ryan Prayogo <57620+ryanprayogo@users.noreply.github.com>

* chore: Use Collections.singletonList instead of Arrays.asList

Signed-off-by: Ryan Prayogo <57620+ryanprayogo@users.noreply.github.com>

* chore: Update javadoc and parameter name

Signed-off-by: Ryan Prayogo <57620+ryanprayogo@users.noreply.github.com>

* fixup: await verify

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

* fixup: remove test, key diffing

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

---------

Signed-off-by: Ryan Prayogo <57620+ryanprayogo@users.noreply.github.com>
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
Co-authored-by: Todd Baert <todd.baert@dynatrace.com>
Co-authored-by: Michael Beemer <beeme1mr@users.noreply.github.com>
2024-08-22 15:48:45 -04:00
Todd Baert dbf967a860
fix: updated context not passed to all hooks (#1049)
* fix: updated context not passed to all hooks

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

* fixup: checkstyle

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

---------

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
2024-08-20 15:33:34 -04:00
Todd Baert 4126b511fb
chore: javadoc and tests for api, context (#942)
* chore: javadoc and tests for api, context

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

* fixup: lint

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

---------

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
2024-06-14 10:14:49 -04:00
jarebudev 5c0aaaa8bc
feat: implement domain scoping (#934)
* initial changes for implementing domain scoping

Signed-off-by: jarebudev <23311805+jarebudev@users.noreply.github.com>

* completed the rest of the renaming and tidying up

Signed-off-by: jarebudev <23311805+jarebudev@users.noreply.github.com>

* applied code review suggested changes

Signed-off-by: jarebudev <23311805+jarebudev@users.noreply.github.com>

* introdcue a dedicated interface for client metadata

Signed-off-by: Kavindu Dodanduwa <kavindudodanduwa@gmail.com>

* add deprecated default getName to be backward compatible as much as possible

Signed-off-by: Kavindu Dodanduwa <kavindudodanduwa@gmail.com>

---------

Signed-off-by: jarebudev <23311805+jarebudev@users.noreply.github.com>
Signed-off-by: Kavindu Dodanduwa <kavindudodanduwa@gmail.com>
Co-authored-by: Kavindu Dodanduwa <Kavindu-Dodan@users.noreply.github.com>
Co-authored-by: Kavindu Dodanduwa <kavindudodanduwa@gmail.com>
2024-06-11 09:49:46 -07:00
jarebudev dbfeb72bc5
fix: run error hook when provider returns error code (#951)
Signed-off-by: jarebudev <23311805+jarebudev@users.noreply.github.com>
2024-05-30 16:47:23 -04:00
Dave 1a46aea242
fix: PMD warnings with new version (#936)
* chore(deps): update dependency org.apache.maven.plugins:maven-pmd-plugin to v3.22.0

* removed redundancy from eventdetails, SuppressWarnings in OpenfeatureAPI and Client

Signed-off-by: DBlanchard88 <davidblanchard88@gmail.com>

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

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

---------

Signed-off-by: DBlanchard88 <davidblanchard88@gmail.com>
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Todd Baert <todd.baert@dynatrace.com>
2024-05-15 13:18:33 -04:00
Dave cd7470dd7a
fix: removed javax.nullable annotations (#921)
removing nullable annotation

Signed-off-by: DBlanchard88 <davidblanchard88@gmail.com>
Co-authored-by: Todd Baert <todd.baert@dynatrace.com>
2024-05-03 10:50:24 -07:00
Dave d69cf5d49b
fix: consistent method chainability (#913)
* mutablecontext settargetkey now return(s) this method chainable

Signed-off-by: DBlanchard88 <davidblanchard88@gmail.com>

* addHooks & setEvaluationContext are now chainable

Signed-off-by: DBlanchard88 <davidblanchard88@gmail.com>

* OpenFeatureAPI setEvaluationContext new chainable

Signed-off-by: DBlanchard88 <davidblanchard88@gmail.com>

* Update src/test/java/dev/openfeature/sdk/MutableContextTest.java

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

---------

Signed-off-by: DBlanchard88 <davidblanchard88@gmail.com>
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
Co-authored-by: Todd Baert <todd.baert@dynatrace.com>
2024-05-02 12:04:09 -04:00
jarebudev 8dec14fbea
fix: shutdown method blocks until task executor shutdown completes (#873)
* shutdown method blocks until task executor shutdown completes

Signed-off-by: jarebudev <23311805+jarebudev@users.noreply.github.com>

* addressed sonar issue with not handling interrupt during waiting

Signed-off-by: jarebudev <23311805+jarebudev@users.noreply.github.com>

---------

Signed-off-by: jarebudev <23311805+jarebudev@users.noreply.github.com>
Co-authored-by: Michael Beemer <beeme1mr@users.noreply.github.com>
Co-authored-by: Todd Baert <todd.baert@dynatrace.com>
2024-04-06 07:47:42 -04:00
Sviatoslav Sharaev de5aa6420f
feat: context propagation (#848)
Signed-off-by: Sviatoslav Sharaev <sviatoslav.sharaev@gmail.com>
Co-authored-by: Kavindu Dodanduwa <Kavindu-Dodan@users.noreply.github.com>
2024-03-28 21:17:22 -04:00
Kavindu Dodanduwa 46d04feb4b
chore: improve contrib guide (#863)
* improve contribution guide and remove deprecation

Signed-off-by: Kavindu Dodanduwa <kavindudodanduwa@gmail.com>

* revert mockito bump

Signed-off-by: Kavindu Dodanduwa <kavindudodanduwa@gmail.com>

* revert proposed change

Signed-off-by: Kavindu Dodanduwa <kavindudodanduwa@gmail.com>

---------

Signed-off-by: Kavindu Dodanduwa <kavindudodanduwa@gmail.com>
2024-03-28 09:45:16 -04:00
Adam Roberts d51cacbff6
fix: issue #859 (#860)
* fix: issue #859 Added failing tests

Signed-off-by: Adam Roberts <adam.roberts@collibra.com>

* fix: issue #859 Fixed the logic to allow the tests to pass by copying the passed in attributes

Signed-off-by: Adam Roberts <adam.roberts@collibra.com>

---------

Signed-off-by: Adam Roberts <adam.roberts@collibra.com>
2024-03-22 11:15:16 -07:00
Liran M 48a196c50d
fix: missing targeting key should return null (#849)
* missing targeting key should return null

Problem:
getTargetingKey of missing targeting key causing NullPointerException
Solution:
getTargetingKey of missing targeting key returns null

Signed-off-by: liran2000 <liran2000@gmail.com>

* add MutableContextTest for test coverage

Signed-off-by: liran2000 <liran2000@gmail.com>

---------

Signed-off-by: liran2000 <liran2000@gmail.com>
Co-authored-by: Todd Baert <todd.baert@dynatrace.com>
2024-03-22 10:41:56 -04:00
Kavindu Dodanduwa f7a9d57421
fix: improve targetingKey handling in the context (#805)
improve targeting key handling

Signed-off-by: Kavindu Dodanduwa <kavindudodanduwa@gmail.com>
2024-02-14 15:17:58 -08:00
Kavindu Dodanduwa 6c8657d520
chore: various improvements as suggested by sonar (#797)
* various improvements as suggested by sonar

Signed-off-by: Kavindu Dodanduwa <kavindudodanduwa@gmail.com>

* revert clonable change

Signed-off-by: Kavindu Dodanduwa <kavindudodanduwa@gmail.com>

---------

Signed-off-by: Kavindu Dodanduwa <kavindudodanduwa@gmail.com>
2024-02-13 08:39:45 -08:00
Todd Baert da47b7f9c0
fix: setProviderAndWait must throw (#794)
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
2024-02-08 15:19:20 -05:00
Giovanni Liva 36f5832727
perf: improve error handling (#739)
* perf: improve error handling

Signed-off-by: Giovanni Liva <giovanni.liva@dynatrace.com>

* add synchronized keyword

Signed-off-by: Giovanni Liva <giovanni.liva@dynatrace.com>

---------

Signed-off-by: Giovanni Liva <giovanni.liva@dynatrace.com>
Co-authored-by: Todd Baert <todd.baert@dynatrace.com>
2023-12-22 12:56:48 -05:00
Kavindu Dodanduwa 3319e55870
fix: tolerate duplicate provider registrations (#725)
* fix provider mulitple regiration issue

Signed-off-by: Kavindu Dodanduwa <kavindudodanduwa@gmail.com>

* fix lint

Signed-off-by: Kavindu Dodanduwa <kavindudodanduwa@gmail.com>

* fix tests

Signed-off-by: Kavindu Dodanduwa <kavindudodanduwa@gmail.com>

* improve test and add check for unused imports

Signed-off-by: Kavindu Dodanduwa <kavindudodanduwa@gmail.com>

---------

Signed-off-by: Kavindu Dodanduwa <kavindudodanduwa@gmail.com>
2023-12-12 12:43:14 -08:00
Todd Baert 3ab330a759
fix: null handling with Structure, Value (#663)
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Beemer <beeme1mr@users.noreply.github.com>
Co-authored-by: Giovanni Liva <giovanni.liva@dynatrace.com>
2023-10-24 14:46:26 -04:00
Todd Baert fe5a20f2c3
feat: implement spec 0.7.0 changes (#655)
* feat: implement spec 0.7.0 changes

* run any event handler immediately if the provider is in the associated state, not just ready
* add providerName to event details
* add STALE provider state
* update/add associated tests
* also fixed spec/test associations mismatches from previous changes

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
Co-authored-by: Thiyagu GK <thiyagu103@gmail.com>
2023-10-23 10:04:52 -04:00
Todd Baert 8c595b0227
fix: RejectedExecutionException on shutdown (#652)
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
2023-10-12 16:15:48 -04:00
Kavindu Dodanduwa c66b99579f
fix: make executor threads deamon (#601)
* make executor threads deamon

Signed-off-by: Kavindu Dodanduwa <kavindudodanduwa@gmail.com>

* unify annotation usage

Signed-off-by: Kavindu Dodanduwa <kavindudodanduwa@gmail.com>

---------

Signed-off-by: Kavindu Dodanduwa <kavindudodanduwa@gmail.com>
2023-09-08 11:54:01 -07:00
Liran M d063bf292c
fix: NPE on named provider init/shutdown (#595)
* fix NPE on named provider init
* add condition for not calling shutdown on null old provider

Signed-off-by: liran2000 <liran2000@gmail.com>
2023-09-07 16:11:58 -04:00
Liran M 506e89fd34
feat: add method to set provider and block during init (#563)
* feat: spec 1.1.8 - setProviderAndWait

The API SHOULD provide functions to set a provider and wait for the initialize function to return or throw

Signed-off-by: liran2000 <liran2000@gmail.com>

* remove method overloading from package private class

Signed-off-by: liran2000 <liran2000@gmail.com>

* add test case for spec 2.4.5

Signed-off-by: liran2000 <liran2000@gmail.com>

* minor updates

Signed-off-by: liran2000 <liran2000@gmail.com>

---------

Signed-off-by: liran2000 <liran2000@gmail.com>
Co-authored-by: Todd Baert <todd.baert@dynatrace.com>
Co-authored-by: Michael Beemer <beeme1mr@users.noreply.github.com>
2023-08-28 15:43:59 -04:00
Todd Baert 1f28921fec
chore: fix jacoco coverage minimum, throw in memory provider (#561)
chore: fix codecov, throw in memory provider

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
2023-08-16 12:37:21 -04:00
Liran M a741568762
feat: In-memory provider for e2e testing and minimal usage (#546)
* Adds InMemoryProvider to enable simple testing and basic usage

Signed-off-by: liran2000 <liran2000@gmail.com>
Co-authored-by: Todd Baert <todd.baert@dynatrace.com>
2023-08-15 15:04:55 -04:00
Kavindu Dodanduwa fb42a92e9b
fix: ability to set provider after shutdown (#556)
* fix shutdown

Signed-off-by: Kavindu Dodanduwa <kavindudodanduwa@gmail.com>

* Grammer fix for code comment 

Signed-off-by: Kavindu Dodanduwa <Kavindu-Dodan@users.noreply.github.com>

---------

Signed-off-by: Kavindu Dodanduwa <kavindudodanduwa@gmail.com>
Signed-off-by: Kavindu Dodanduwa <Kavindu-Dodan@users.noreply.github.com>
2023-08-11 13:48:14 -04:00
Todd Baert 37fd2be673
fix: getState now mandatory on EventProvider (#531)
* fix: getState mandatory on EventProvider

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

* fixup: update test class

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

* Update src/test/java/dev/openfeature/sdk/EventProviderTest.java

Co-authored-by: Giovanni Liva <giovanni.liva@dynatrace.com>
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

---------

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
Co-authored-by: Giovanni Liva <giovanni.liva@dynatrace.com>
2023-08-04 15:45:25 -04:00
Todd Baert 8789f90d33
chore: fix race with events tests (#545)
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
2023-08-04 15:31:39 -04:00
Thomas Poignant 6253aee3b3
fix: Implement equals for the ImmutableMetadata object (#512) 2023-07-17 16:52:00 +02:00
Todd Baert bad5b0a7f5
feat: events (#476)
* feat: events

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

* fixup: fix bad import, fix test

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

* fixup: add more coverage of internal

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

* fixup: remove unused imports

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

* fixup: unsed imports

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

* fixup: make inner static

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

* fixup: more tests, run ready immediately

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

* fixup: improve reliability of error tests

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

* Update src/main/java/dev/openfeature/sdk/OpenFeatureAPI.java

Co-authored-by: Giovanni Liva <giovanni.liva@dynatrace.com>
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

* fixup: review feedback, add comments

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

* fixup: add provider repo tests, fitest warnings

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

* Update src/main/java/dev/openfeature/sdk/OpenFeatureAPI.java

Co-authored-by: Kavindu Dodanduwa <Kavindu-Dodan@users.noreply.github.com>
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

* fixup: shorten javadoc links, shutdown tasks, use methods refs

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

* fixup: flaky test

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

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

Co-authored-by: Justin Abrahms <jabrahms@ebay.com>
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

* fixup: feedback from justin

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

* fixup: improve javadoc

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

* fixup: test race condition fixes

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>

---------

Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
Co-authored-by: Giovanni Liva <giovanni.liva@dynatrace.com>
Co-authored-by: Kavindu Dodanduwa <Kavindu-Dodan@users.noreply.github.com>
Co-authored-by: Justin Abrahms <jabrahms@ebay.com>
2023-07-12 09:22:16 -07:00
Todd Baert 693721e36c
feat: add empty constructors to data classes (#491)
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
2023-06-28 10:40:10 -04:00
Todd Baert ecfeddf0f6
chore: rename flag metadata (#478)
Signed-off-by: Todd Baert <todd.baert@dynatrace.com>
2023-06-16 13:53:31 -04:00
Kavindu Dodanduwa 93dde1d259
chore: expose get value for metadata (#468)
expose get value for metadata

Signed-off-by: Kavindu Dodanduwa <kavindudodanduwa@gmail.com>
Co-authored-by: Justin Abrahms <jabrahms@ebay.com>
2023-06-09 07:57:08 -07:00
Kavindu Dodanduwa 3ed40a3887
feat: add flag metadata (#459)
Signed-off-by: Kavindu Dodanduwa <kavindudodanduwa@gmail.com>
2023-06-06 21:44:49 -04:00