From 96878898cbfe9d187e1c0da000db0f7dd943888c Mon Sep 17 00:00:00 2001 From: Kavindu Dodanduwa Date: Fri, 22 Mar 2024 14:51:35 -0700 Subject: [PATCH 1/3] improve contribution guide and remove deprecation Signed-off-by: Kavindu Dodanduwa --- CONTRIBUTING.md | 4 ++- pom.xml | 2 +- .../openfeature/sdk/OpenFeatureClient.java | 10 ++---- .../dev/openfeature/sdk/HookSpecTest.java | 35 +++++++++---------- .../sdk/fixtures/HookFixtures.java | 6 +++- 5 files changed, 29 insertions(+), 28 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8acd316a8..81d5d4625 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -8,7 +8,9 @@ be a jerk. We're not keen on vendor-specific stuff in this library, but if there are changes that need to happen in the spec to enable vendor-specific stuff in user code or other extension points, check out [the spec](https://github.com/open-feature/spec). -Any contributions you make are expected to be tested with unit tests. You can validate these work with `gradle test`, or the automation itself will run them for you when you make a PR. +Any contributions you make are expected to be tested with unit tests. You can validate these work with `mvn test`. +Further, it is recommended to verify code styling and static code analysis with `mvn verify -P !deploy`. +Regardless, the automation itself will run them for you when you open a PR. Your code is supposed to work with Java 8+. diff --git a/pom.xml b/pom.xml index 1a3a0faa4..03e6716e0 100644 --- a/pom.xml +++ b/pom.xml @@ -67,7 +67,7 @@ org.mockito mockito-core - 4.11.0 + 5.11.0 test diff --git a/src/main/java/dev/openfeature/sdk/OpenFeatureClient.java b/src/main/java/dev/openfeature/sdk/OpenFeatureClient.java index 05d79d02d..01925f431 100644 --- a/src/main/java/dev/openfeature/sdk/OpenFeatureClient.java +++ b/src/main/java/dev/openfeature/sdk/OpenFeatureClient.java @@ -34,17 +34,13 @@ public class OpenFeatureClient implements Client { private EvaluationContext evaluationContext; /** - * Deprecated public constructor. Use OpenFeature.API.getClient() instead. - * + * Create an OpenFeature client. For internal use only. + * * @param openFeatureAPI Backing global singleton * @param name Name of the client (used by observability tools). * @param version Version of the client (used by observability tools). - * @deprecated Do not use this constructor. It's for internal use only. - * Clients created using it will not run event handlers. - * Use the OpenFeatureAPI's getClient factory method instead. */ - @Deprecated() // TODO: eventually we will make this non-public - public OpenFeatureClient(OpenFeatureAPI openFeatureAPI, String name, String version) { + OpenFeatureClient(OpenFeatureAPI openFeatureAPI, String name, String version) { this.openfeatureApi = openFeatureAPI; this.name = name; this.version = version; diff --git a/src/test/java/dev/openfeature/sdk/HookSpecTest.java b/src/test/java/dev/openfeature/sdk/HookSpecTest.java index def331db2..d0e173b2a 100644 --- a/src/test/java/dev/openfeature/sdk/HookSpecTest.java +++ b/src/test/java/dev/openfeature/sdk/HookSpecTest.java @@ -1,5 +1,21 @@ package dev.openfeature.sdk; +import dev.openfeature.sdk.fixtures.HookFixtures; +import dev.openfeature.sdk.testutils.FeatureProviderTestUtils; +import lombok.SneakyThrows; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.InOrder; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; + import static org.assertj.core.api.Assertions.assertThatCode; import static org.assertj.core.api.Assertions.fail; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -13,23 +29,6 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import dev.openfeature.sdk.testutils.FeatureProviderTestUtils; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.Test; -import org.mockito.ArgumentCaptor; -import org.mockito.InOrder; - -import dev.openfeature.sdk.fixtures.HookFixtures; -import lombok.SneakyThrows; - class HookSpecTest implements HookFixtures { @AfterEach void emptyApiHooks() { @@ -500,7 +499,7 @@ public void finallyAfter(HookContext ctx, Map hints) { .hook(hook) .build()); - ArgumentCaptor captor = ArgumentCaptor.forClass(MutableContext.class); + ArgumentCaptor captor = ArgumentCaptor.forClass(ImmutableContext.class); verify(provider).getBooleanEvaluation(any(), any(), captor.capture()); EvaluationContext ec = captor.getValue(); assertEquals("works", ec.getValue("test").asString()); diff --git a/src/test/java/dev/openfeature/sdk/fixtures/HookFixtures.java b/src/test/java/dev/openfeature/sdk/fixtures/HookFixtures.java index 1d1de1efa..9886c3834 100644 --- a/src/test/java/dev/openfeature/sdk/fixtures/HookFixtures.java +++ b/src/test/java/dev/openfeature/sdk/fixtures/HookFixtures.java @@ -1,6 +1,10 @@ package dev.openfeature.sdk.fixtures; -import dev.openfeature.sdk.*; +import dev.openfeature.sdk.BooleanHook; +import dev.openfeature.sdk.DoubleHook; +import dev.openfeature.sdk.Hook; +import dev.openfeature.sdk.IntegerHook; +import dev.openfeature.sdk.StringHook; import static org.mockito.Mockito.spy; From f9bb574f7444faeed07ef0cd0866cc6b2efbfc51 Mon Sep 17 00:00:00 2001 From: Kavindu Dodanduwa Date: Fri, 22 Mar 2024 14:59:42 -0700 Subject: [PATCH 2/3] revert mockito bump Signed-off-by: Kavindu Dodanduwa --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 03e6716e0..1a3a0faa4 100644 --- a/pom.xml +++ b/pom.xml @@ -67,7 +67,7 @@ org.mockito mockito-core - 5.11.0 + 4.11.0 test From fa60f7579468ac92de25c590b3eda1d517dbffb7 Mon Sep 17 00:00:00 2001 From: Kavindu Dodanduwa Date: Wed, 27 Mar 2024 11:46:53 -0700 Subject: [PATCH 3/3] revert proposed change Signed-off-by: Kavindu Dodanduwa --- src/main/java/dev/openfeature/sdk/OpenFeatureClient.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/dev/openfeature/sdk/OpenFeatureClient.java b/src/main/java/dev/openfeature/sdk/OpenFeatureClient.java index 01925f431..e839bf9f9 100644 --- a/src/main/java/dev/openfeature/sdk/OpenFeatureClient.java +++ b/src/main/java/dev/openfeature/sdk/OpenFeatureClient.java @@ -34,13 +34,17 @@ public class OpenFeatureClient implements Client { private EvaluationContext evaluationContext; /** - * Create an OpenFeature client. For internal use only. + * Deprecated public constructor. Use OpenFeature.API.getClient() instead. * * @param openFeatureAPI Backing global singleton * @param name Name of the client (used by observability tools). * @param version Version of the client (used by observability tools). + * @deprecated Do not use this constructor. It's for internal use only. + * Clients created using it will not run event handlers. + * Use the OpenFeatureAPI's getClient factory method instead. */ - OpenFeatureClient(OpenFeatureAPI openFeatureAPI, String name, String version) { + @Deprecated() // TODO: eventually we will make this non-public. See issue #872 + public OpenFeatureClient(OpenFeatureAPI openFeatureAPI, String name, String version) { this.openfeatureApi = openFeatureAPI; this.name = name; this.version = version;