From 01f83c6f1e491d2b622ed60b7f3501ed3ba26e70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Reyners=20Ga=C3=ABtan?= Date: Fri, 13 Sep 2024 11:48:59 +0200 Subject: [PATCH 1/2] feat: Add support for http protocols option with flagsmith client MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Reyners Gaëtan --- providers/flagsmith/pom.xml | 2 +- .../FlagsmithClientConfigurer.java | 11 +++++++---- .../FlagsmithProviderOptions.java | 13 +++++++++++++ .../FlagsmithProviderTest.java | 4 ++++ 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/providers/flagsmith/pom.xml b/providers/flagsmith/pom.xml index 16791e0b2..dd40f9302 100644 --- a/providers/flagsmith/pom.xml +++ b/providers/flagsmith/pom.xml @@ -30,7 +30,7 @@ com.flagsmith flagsmith-java-client - 7.4.1 + 7.4.2 diff --git a/providers/flagsmith/src/main/java/dev.openfeature.contrib.providers.flagsmith/FlagsmithClientConfigurer.java b/providers/flagsmith/src/main/java/dev.openfeature.contrib.providers.flagsmith/FlagsmithClientConfigurer.java index 66c6d06f5..ea069f683 100644 --- a/providers/flagsmith/src/main/java/dev.openfeature.contrib.providers.flagsmith/FlagsmithClientConfigurer.java +++ b/providers/flagsmith/src/main/java/dev.openfeature.contrib.providers.flagsmith/FlagsmithClientConfigurer.java @@ -2,6 +2,7 @@ import com.flagsmith.FlagsmithClient; import com.flagsmith.config.FlagsmithCacheConfig; +import com.flagsmith.config.FlagsmithConfig; import com.flagsmith.config.Retry; import dev.openfeature.contrib.providers.flagsmith.exceptions.InvalidCacheOptionsException; import dev.openfeature.contrib.providers.flagsmith.exceptions.InvalidOptionsException; @@ -88,10 +89,8 @@ private static FlagsmithCacheConfig initializeCacheConfig(FlagsmithProviderOptio * @param options The options used to create the provider * @return a FlagsmithConfig object with the FlagsmithClient settings */ - private static com.flagsmith.config.FlagsmithConfig initializeConfig( - FlagsmithProviderOptions options) { - com.flagsmith.config.FlagsmithConfig.Builder flagsmithConfig = com.flagsmith.config.FlagsmithConfig - .newBuilder(); + private static FlagsmithConfig initializeConfig(FlagsmithProviderOptions options) { + FlagsmithConfig.Builder flagsmithConfig = FlagsmithConfig.newBuilder(); // Set client level configuration settings if (options.getBaseUri() != null) { @@ -136,6 +135,10 @@ private static com.flagsmith.config.FlagsmithConfig initializeConfig( flagsmithConfig.withEnableAnalytics(options.isEnableAnalytics()); } + if (options.getSupportedProtocols() != null && !options.getSupportedProtocols().isEmpty()) { + flagsmithConfig.withSupportedProtocols(options.getSupportedProtocols()); + } + return flagsmithConfig.build(); } diff --git a/providers/flagsmith/src/main/java/dev.openfeature.contrib.providers.flagsmith/FlagsmithProviderOptions.java b/providers/flagsmith/src/main/java/dev.openfeature.contrib.providers.flagsmith/FlagsmithProviderOptions.java index 623884ce4..57ce4ef73 100644 --- a/providers/flagsmith/src/main/java/dev.openfeature.contrib.providers.flagsmith/FlagsmithProviderOptions.java +++ b/providers/flagsmith/src/main/java/dev.openfeature.contrib.providers.flagsmith/FlagsmithProviderOptions.java @@ -2,8 +2,13 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import com.flagsmith.config.FlagsmithConfig.Protocol; +import java.util.Arrays; import java.util.HashMap; +import java.util.List; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + import lombok.Builder; import lombok.Getter; import javax.net.ssl.SSLSocketFactory; @@ -183,4 +188,12 @@ public class FlagsmithProviderOptions { */ @Builder.Default private boolean usingBooleanConfigValue = false; + + /** + * Set the list of supported protocols that should be used. + * Optional. + * Default: All the enum protocols from FlagsmithConfig. + */ + @Builder.Default + private List supportedProtocols = Arrays.stream(Protocol.values()).collect(Collectors.toList()); } \ No newline at end of file diff --git a/providers/flagsmith/src/test/java/dev.openfeature.contrib.providers.flagsmith/FlagsmithProviderTest.java b/providers/flagsmith/src/test/java/dev.openfeature.contrib.providers.flagsmith/FlagsmithProviderTest.java index ddeee839e..74ab12d9c 100644 --- a/providers/flagsmith/src/test/java/dev.openfeature.contrib.providers.flagsmith/FlagsmithProviderTest.java +++ b/providers/flagsmith/src/test/java/dev.openfeature.contrib.providers.flagsmith/FlagsmithProviderTest.java @@ -2,6 +2,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; +import com.flagsmith.config.FlagsmithConfig; import dev.openfeature.contrib.providers.flagsmith.exceptions.InvalidCacheOptionsException; import dev.openfeature.contrib.providers.flagsmith.exceptions.InvalidOptionsException; import dev.openfeature.sdk.EvaluationContext; @@ -16,6 +17,8 @@ import java.lang.reflect.Method; import java.nio.file.Files; import java.nio.file.Paths; +import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; @@ -191,6 +194,7 @@ void shouldInitializeProviderWhenAllOptionsSet() { .environmentRefreshIntervalSeconds(1) .enableAnalytics(true) .usingBooleanConfigValue(false) + .supportedProtocols(Collections.singletonList(FlagsmithConfig.Protocol.HTTP_1_1)) .build(); assertDoesNotThrow(() -> new FlagsmithProvider(options)); } From a9c5f6c47309eb1c22ff65e9bb43efbb283b5668 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Reyners=20Ga=C3=ABtan?= Date: Fri, 13 Sep 2024 14:11:59 +0200 Subject: [PATCH 2/2] fix(pmd): unnecessary qualifier for FlagsmithConfig MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Reyners Gaëtan --- .../FlagsmithClientConfigurer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/providers/flagsmith/src/main/java/dev.openfeature.contrib.providers.flagsmith/FlagsmithClientConfigurer.java b/providers/flagsmith/src/main/java/dev.openfeature.contrib.providers.flagsmith/FlagsmithClientConfigurer.java index ea069f683..d6a0005b3 100644 --- a/providers/flagsmith/src/main/java/dev.openfeature.contrib.providers.flagsmith/FlagsmithClientConfigurer.java +++ b/providers/flagsmith/src/main/java/dev.openfeature.contrib.providers.flagsmith/FlagsmithClientConfigurer.java @@ -36,7 +36,7 @@ static FlagsmithClient initializeProvider(FlagsmithProviderOptions options) { flagsmithBuilder.withCache(flagsmithCacheConfig); } - com.flagsmith.config.FlagsmithConfig flagsmithConfig = initializeConfig(options); + final FlagsmithConfig flagsmithConfig = initializeConfig(options); flagsmithBuilder.withConfiguration(flagsmithConfig); return flagsmithBuilder.build();