Commit Graph

81 Commits

Author SHA1 Message Date
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
Lars Opitz 5f173ff860
feat: add initialize and shutdown behavior (#456)
Signed-off-by: Lars Opitz <Lars@Lars-Opitz.de>
Co-authored-by: Todd Baert <toddbaert@gmail.com>
2023-06-06 21:36:47 -04:00
Justin Abrahms d4c43d74bc
feat: Support mapping a client to a given provider. (#388)
* Support mapping a client to a given provider.

Signed-off-by: Justin Abrahms <justin@abrah.ms>

* Add a few javadocs.

Signed-off-by: Justin Abrahms <justin@abrah.ms>

* Special case the null client name

Signed-off-by: Justin Abrahms <justin@abrah.ms>

* Add some missing test cases.

Signed-off-by: Justin Abrahms <justin@abrah.ms>

* Moving to an object map unwraps the values.

Signed-off-by: Justin Abrahms <justin@abrah.ms>

* Fix equality test.

Signed-off-by: Justin Abrahms <justin@abrah.ms>

* Carry targeting key when copying over null object.

Signed-off-by: Justin Abrahms <justin@abrah.ms>

* Test provider name, not object equality.

Signed-off-by: Justin Abrahms <justin@abrah.ms>

* Client-based getProvider is now an overload; Use read lock, not write lock.

Signed-off-by: Justin Abrahms <justin@abrah.ms>

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

Co-authored-by: Lars Opitz <lars@lars-opitz.de>
Signed-off-by: Justin Abrahms <justin@abrah.ms>

* Simplify locking logic around providers.

There's no such thing as "API without a provider set" anymore. We now default to NoOpProvider in the API (not client).

Signed-off-by: Justin Abrahms <justin@abrah.ms>

* Add a few missing tests

Signed-off-by: Justin Abrahms <justin@abrah.ms>

---------

Signed-off-by: Justin Abrahms <justin@abrah.ms>
Co-authored-by: Lars Opitz <lars@lars-opitz.de>
Co-authored-by: Michael Beemer <beeme1mr@users.noreply.github.com>
2023-05-19 15:27:31 -07:00
Kavindu Dodanduwa d8e7d9e10c
fix: validate list content to be values (#350)
validate list content

Signed-off-by: Kavindu Dodanduwa <kavindudodanduwa@gmail.com>
Co-authored-by: Justin Abrahms <jabrahms@ebay.com>
2023-03-22 16:46:53 +00:00
apulbere 0a27a77fc1
fix: handling of double and integer (#316)
Signed-off-by: apulbere <apulbere@yahoo.com>
2023-03-08 08:49:05 -05:00
Ryan Lamb 464820d5da
fix: Do not throw null reference exception accessing a missing item. (#300)
Signed-off-by: Ryan Lamb <4955475+kinyoklion@users.noreply.github.com>
2023-02-16 12:20:51 -08:00
Thiyagu GK d78c99ce16
feat: remove the deprecated setTargetingKey method in EvaluationContext. (#290)
remove the deprecated setTargetingKey method in EvaluationContext.

Signed-off-by: thiyagu06 <thiyagu103@gmail.com>
2023-02-10 15:32:34 -05:00
Javier Collado bd4e12e16f
fix: MutableContext and ImmutableContext merge are made recursive (#280)
MutableContext and ImmutableContext merge are made recursive

Signed-off-by: Javier Collado <javicv@gmail.com>
Co-authored-by: Thiyagu GK <thiyagu103@gmail.com>
Co-authored-by: Todd Baert <toddbaert@gmail.com>
Co-authored-by: Michael Beemer <beeme1mr@users.noreply.github.com>
2023-02-08 12:22:43 -05:00
Kavindu Dodanduwa 93499975d0
fix: improve error logs for evaluation failure (#276)
improve error logs for evaluation failure

Signed-off-by: Kavindu Dodanduwa <kavindudodanduwa@gmail.com>
2023-02-03 11:36:51 -05:00
Thiyagu GK 6c14d87c2e
feat: added implementation of immutable evaluation context (#210)
added immutable context implementation

Signed-off-by: thiyagu06 <thiyagu103@gmail.com>
Co-authored-by: Todd Baert <toddbaert@gmail.com>
2023-01-30 23:29:50 -05:00
Todd Baert d069a8fa9d
feat: add STATIC, CACHED reasons (#240)
feat: add STATIC, CACHED reasons.

Signed-off-by: Todd Baert <toddbaert@gmail.com>

Signed-off-by: Todd Baert <toddbaert@gmail.com>
2023-01-19 07:18:52 +00:00
Todd Baert 1a40c97d23
chore: fix issues with compilation on later JDKs (#178)
chore: fix compile/lint issues on  8+

Signed-off-by: Todd Baert <toddbaert@gmail.com>

Signed-off-by: Todd Baert <toddbaert@gmail.com>
2022-11-20 23:25:45 -08:00
Robert Grassian fad0f35fc8
fix: merge eval context (#149)
fix merge eval context

Signed-off-by: Robert Grassian <robert.grassian@split.io>

Signed-off-by: Robert Grassian <robert.grassian@split.io>
2022-10-13 16:24:25 -07:00
Todd Baert 2192932863
feat!: add rw locks to client/api, hook accessor name (#131)
* fix: add read/write locks to client/api

Signed-off-by: Todd Baert <toddbaert@gmail.com>

* dont lock entire evaluation

Signed-off-by: Todd Baert <toddbaert@gmail.com>

* add tests

Signed-off-by: Todd Baert <toddbaert@gmail.com>

* fixup comment

Signed-off-by: Todd Baert <toddbaert@gmail.com>

* fixup pom comment

Signed-off-by: Todd Baert <toddbaert@gmail.com>

* increase lock granularity, imporove tests

Signed-off-by: Todd Baert <toddbaert@gmail.com>

* fix spotbugs

Signed-off-by: Todd Baert <toddbaert@gmail.com>

* remove commented test

Signed-off-by: Todd Baert <toddbaert@gmail.com>

Signed-off-by: Todd Baert <toddbaert@gmail.com>
2022-10-11 22:43:50 +00:00
Todd Baert e9732b582d
feat!: use evaluation context interface (#112)
* POC - use evaluation context interface

Signed-off-by: Todd Baert <toddbaert@gmail.com>

* make .merge non-static

Signed-off-by: Todd Baert <toddbaert@gmail.com>

* improve naming

Signed-off-by: Todd Baert <toddbaert@gmail.com>

* add @override

Signed-off-by: Todd Baert <toddbaert@gmail.com>

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

Co-authored-by: Justin Abrahms <jabrahms@ebay.com>
Signed-off-by: Todd Baert <toddbaert@gmail.com>

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

Co-authored-by: Justin Abrahms <jabrahms@ebay.com>
Signed-off-by: Todd Baert <toddbaert@gmail.com>

* address PR feedback

Signed-off-by: Todd Baert <toddbaert@gmail.com>

Signed-off-by: Todd Baert <toddbaert@gmail.com>
Co-authored-by: Justin Abrahms <jabrahms@ebay.com>
2022-10-06 05:32:29 +00:00
Justin Abrahms 6eeeddd2ea
refactor!: Change the package name. Everyone knows it's java (or it doesn't matter) (#111)
* Change the package name. Everyone knows it's java (or it doesn't matter)

Fixes #82

Signed-off-by: Justin Abrahms <justin@abrah.ms>

* Missed 2 strings

Signed-off-by: Justin Abrahms <justin@abrah.ms>

* remove broken flagd import until changes absorbed

Signed-off-by: Todd Baert <toddbaert@gmail.com>

Signed-off-by: Justin Abrahms <justin@abrah.ms>
Signed-off-by: Todd Baert <toddbaert@gmail.com>
Co-authored-by: Todd Baert <toddbaert@gmail.com>
2022-10-05 11:46:04 -07:00
Todd Baert 84f220d813
feat!: errorCode as enum, reason as string (#80)
* feat!: errorCode as enum, reason as string

- makes errorCode an enum
- makes reason a string
- adds errorMessage to resolution/evaluation details
2022-09-30 12:41:48 -04:00
Thomas Poignant 2eec1a5519
feat: Add asObjectMap to get the EvaluationContext as Map<String,Object> (#75)
* Add asObjectMap to get the EvaluationContext as Map<String,Object>

Signed-off-by: Thomas Poignant <thomas.poignant@gofeatureflag.org>

* Fix liniting issue

Signed-off-by: Thomas Poignant <thomas.poignant@gofeatureflag.org>

* fix PMD issue

Signed-off-by: Thomas Poignant <thomas.poignant@gofeatureflag.org>

Signed-off-by: Thomas Poignant <thomas.poignant@gofeatureflag.org>
2022-09-16 15:17:58 +01:00
Robert Grassian 81ab0710ea
fix: isList check in Value checks type of list (#70)
* isList check of Value checks type of list

Signed-off-by: Robert Grassian <robert.grassian@split.io>

* test for empty list

Signed-off-by: Robert Grassian <robert.grassian@split.io>

Signed-off-by: Robert Grassian <robert.grassian@split.io>
2022-09-13 15:09:59 -07:00
Todd Baert 60fad0507a
Throw on invalid values
Signed-off-by: Todd Baert <toddbaert@gmail.com>
2022-09-09 13:59:18 -04:00
Todd Baert 5d262470e8
feat!: use value for object resolver
Signed-off-by: Todd Baert <toddbaert@gmail.com>
2022-09-09 11:27:29 -04:00
Todd Baert 3e62414222
feat!: use instant not zoneddatetime
Signed-off-by: Todd Baert <toddbaert@gmail.com>
2022-09-09 10:46:00 -04:00
Todd Baert 0152a1eef9
feat: add object to value wrapper
Signed-off-by: Todd Baert <toddbaert@gmail.com>
2022-09-09 10:44:12 -04:00
Todd Baert 4fa0a08389
!feat: Make evaluation context setters consistent
Signed-off-by: Todd Baert <toddbaert@gmail.com>
2022-09-08 11:14:29 -04:00
Todd Baert 7e6259c14f
breaking: store all numbers as doubles
Signed-off-by: Todd Baert <toddbaert@gmail.com>
2022-09-07 12:31:40 -04:00
Justin Abrahms 50225388af
Remove unused parameter 2022-08-29 10:53:40 -07:00
Justin Abrahms 4ec5258d95
Remove flag eval options from provider API 2022-08-29 10:50:54 -07:00
Todd Baert 3cf5a6ffbb
fix: update provider object eval, T -> Structure
Signed-off-by: Todd Baert <toddbaert@gmail.com>
2022-08-28 11:43:41 -04:00
Justin Abrahms 4662444f7a
PMD fixes
Signed-off-by: Justin Abrahms <justin@abrah.ms>
2022-08-26 09:36:43 -07:00
Justin Abrahms c86b4c1886
Docs for Value
Clear up warning of parameterized types.

Signed-off-by: Justin Abrahms <justin@abrah.ms>
2022-08-26 08:56:04 -07:00