From 20fded3718a2accebaa694daef667db1ae5bc27e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 31 Oct 2025 19:23:52 +0000 Subject: [PATCH 1/5] Bump org.owasp:dependency-check-maven from 12.1.6 to 12.1.8 Bumps [org.owasp:dependency-check-maven](https://github.com/dependency-check/DependencyCheck) from 12.1.6 to 12.1.8. - [Release notes](https://github.com/dependency-check/DependencyCheck/releases) - [Changelog](https://github.com/dependency-check/DependencyCheck/blob/main/CHANGELOG.md) - [Commits](https://github.com/dependency-check/DependencyCheck/compare/v12.1.6...v12.1.8) --- updated-dependencies: - dependency-name: org.owasp:dependency-check-maven dependency-version: 12.1.8 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 22278d1..97c3af6 100644 --- a/pom.xml +++ b/pom.xml @@ -73,7 +73,7 @@ org.owasp dependency-check-maven - 12.1.6 + 12.1.8 41aa3456-48f3-466a-a8ea-db1e84caba36 7 From 4c8054e1e0b844b40812c448022cea83b6dcb741 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 31 Oct 2025 19:25:30 +0000 Subject: [PATCH 2/5] Bump dev.openfeature:sdk from 1.18.1 to 1.18.2 Bumps [dev.openfeature:sdk](https://github.com/open-feature/java-sdk) from 1.18.1 to 1.18.2. - [Release notes](https://github.com/open-feature/java-sdk/releases) - [Changelog](https://github.com/open-feature/java-sdk/blob/main/CHANGELOG.md) - [Commits](https://github.com/open-feature/java-sdk/compare/v1.18.1...v1.18.2) --- updated-dependencies: - dependency-name: dev.openfeature:sdk dependency-version: 1.18.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 22278d1..b58c464 100644 --- a/pom.xml +++ b/pom.xml @@ -58,7 +58,7 @@ dev.openfeature sdk - 1.18.1 + 1.18.2 From 9b048a56c839ba9b03fb593efb4169c2ce484255 Mon Sep 17 00:00:00 2001 From: Emmanuel Zamora Date: Wed, 5 Nov 2025 17:50:30 -0300 Subject: [PATCH 3/5] [FME-10575] add block until ready to client init --- pom.xml | 18 +++++++++++------ .../io/split/openfeature/SplitProvider.java | 13 ++++++++++++ .../java/io/split/openfeature/ClientTest.java | 6 +++++- .../split/openfeature/SplitProviderTest.java | 20 +++++++++++-------- 4 files changed, 42 insertions(+), 15 deletions(-) diff --git a/pom.xml b/pom.xml index 22278d1..86e4678 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ 4.0.0 io.split.openfeature split-openfeature-provider - 1.2.1 + 1.2.2 split-openfeature-provider-java Split OpenFeature Java Provider www.split.io @@ -166,13 +166,19 @@ org.apache.maven.plugins maven-gpg-plugin 3.2.8 + + + --pinentry-mode + loopback + + - sign-artifacts - verify - - sign - + sign-artifacts + verify + + sign + diff --git a/src/main/java/io/split/openfeature/SplitProvider.java b/src/main/java/io/split/openfeature/SplitProvider.java index 67c43cf..d7927af 100644 --- a/src/main/java/io/split/openfeature/SplitProvider.java +++ b/src/main/java/io/split/openfeature/SplitProvider.java @@ -17,15 +17,20 @@ import io.split.client.SplitClient; import io.split.client.api.SplitResult; import io.split.openfeature.utils.Serialization; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.time.Instant; import java.time.format.DateTimeParseException; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.concurrent.TimeoutException; import java.util.stream.Collectors; public class SplitProvider implements FeatureProvider { + private static final Logger _log = LoggerFactory.getLogger(SplitProvider.class); private static final String NAME = "Split"; @@ -33,6 +38,14 @@ public class SplitProvider implements FeatureProvider { public SplitProvider(SplitClient splitClient) { client = splitClient; + try { + this.client.blockUntilReady(); + } catch (InterruptedException e) { + _log.error("Interrupted Exception: ", e); + Thread.currentThread().interrupt(); + } catch (TimeoutException e) { + throw new GeneralError("Error occurred initializing the client.", e); + } } public SplitProvider(String apiKey) { diff --git a/src/test/java/io/split/openfeature/ClientTest.java b/src/test/java/io/split/openfeature/ClientTest.java index 9dd966a..667d33b 100644 --- a/src/test/java/io/split/openfeature/ClientTest.java +++ b/src/test/java/io/split/openfeature/ClientTest.java @@ -36,7 +36,11 @@ public class ClientTest { public void init() { openFeatureAPI = OpenFeatureAPI.getInstance(); try { - SplitClientConfig config = SplitClientConfig.builder().splitFile("src/test/resources/split.yaml").build(); + SplitClientConfig config = SplitClientConfig + .builder() + .splitFile("src/test/resources/split.yaml") + .setBlockUntilReadyTimeout(10000) + .build(); splitClient = SplitFactoryBuilder.build("localhost", config).client(); openFeatureAPI.setProviderAndWait(new SplitProvider(splitClient)); } catch (URISyntaxException | IOException e) { diff --git a/src/test/java/io/split/openfeature/SplitProviderTest.java b/src/test/java/io/split/openfeature/SplitProviderTest.java index 14f4575..5282bc8 100644 --- a/src/test/java/io/split/openfeature/SplitProviderTest.java +++ b/src/test/java/io/split/openfeature/SplitProviderTest.java @@ -20,6 +20,7 @@ import java.time.Instant; import java.util.List; import java.util.Map; +import java.util.concurrent.TimeoutException; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -470,10 +471,10 @@ public void evalStructureErrorTest() { } @Test - public void trackWithDetailsTest() { + public void trackWithDetailsTest() throws InterruptedException, TimeoutException { SplitProvider provider = new SplitProvider(mockSplitClient); - + verify(mockSplitClient).blockUntilReady(); EvaluationContext ctx = new MutableContext(key).add("trafficType", "user"); TrackingEventDetails details = new MutableTrackingEventDetails(42.5) .add("plan", new Value("pro")) @@ -491,18 +492,19 @@ public void trackWithDetailsTest() { } @Test - public void trackTargetingKeyErrorTest() { + public void trackTargetingKeyErrorTest() throws InterruptedException, TimeoutException { // Tracking without targetingKey should throw error SplitProvider provider = new SplitProvider(mockSplitClient); EvaluationContext ctx = new MutableContext().add("trafficType", "user"); assertThrows(dev.openfeature.sdk.exceptions.TargetingKeyMissingError.class, () -> provider.track("purchase", ctx, null)); - verifyNoInteractions(mockSplitClient); + verify(mockSplitClient).blockUntilReady(); + verifyNoMoreInteractions(mockSplitClient); } @Test - public void trackEventNameErrorTest() { + public void trackEventNameErrorTest() throws InterruptedException, TimeoutException { // Tracking without eventName should throw error SplitProvider provider = new SplitProvider(mockSplitClient); EvaluationContext ctx = new MutableContext(key).add("trafficType", "user"); @@ -510,11 +512,12 @@ public void trackEventNameErrorTest() { GeneralError ex = assertThrows(GeneralError.class, () -> provider.track(" ", ctx, null)); // blank name assertTrue(ex.getMessage().toLowerCase().contains("eventname")); - verifyNoInteractions(mockSplitClient); + verify(mockSplitClient).blockUntilReady(); + verifyNoMoreInteractions(mockSplitClient); } @Test - public void trackTrafficTypeErrorTest() { + public void trackTrafficTypeErrorTest() throws InterruptedException, TimeoutException { // Tracking without trafficType should throw error SplitProvider provider = new SplitProvider(mockSplitClient); EvaluationContext ctx = new MutableContext(key); @@ -522,7 +525,8 @@ public void trackTrafficTypeErrorTest() { GeneralError ex = assertThrows(GeneralError.class, () -> provider.track("purchase", ctx, null)); assertTrue(ex.getMessage().toLowerCase().contains("traffictype")); - verifyNoInteractions(mockSplitClient); + verify(mockSplitClient).blockUntilReady(); + verifyNoMoreInteractions(mockSplitClient); } @Test From f5f2636bd28df50bfa9532bee9a2401730a1589d Mon Sep 17 00:00:00 2001 From: Emmanuel Zamora Date: Wed, 5 Nov 2025 17:51:46 -0300 Subject: [PATCH 4/5] fix identation --- pom.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 86e4678..82c544b 100644 --- a/pom.xml +++ b/pom.xml @@ -174,11 +174,11 @@ - sign-artifacts - verify - - sign - + sign-artifacts + verify + + sign + From a96745951fd1acd1138cb8db96e193a40e677bbe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 6 Nov 2025 14:34:04 +0000 Subject: [PATCH 5/5] Bump io.split.client:java-client from 4.18.1 to 4.18.2 Bumps [io.split.client:java-client](https://github.com/splitio/java-client) from 4.18.1 to 4.18.2. - [Changelog](https://github.com/splitio/java-client/blob/master/CHANGES.txt) - [Commits](https://github.com/splitio/java-client/compare/4.18.1...4.18.2) --- updated-dependencies: - dependency-name: io.split.client:java-client dependency-version: 4.18.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 29e52b0..69608af 100644 --- a/pom.xml +++ b/pom.xml @@ -47,7 +47,7 @@ io.split.client java-client - 4.18.1 + 4.18.2 org.mockito