diff --git a/examples/streaming-example/build.gradle.kts b/examples/streaming-example/build.gradle.kts index 02fbc35cd..cd8b0aa61 100644 --- a/examples/streaming-example/build.gradle.kts +++ b/examples/streaming-example/build.gradle.kts @@ -13,7 +13,7 @@ repositories { } dependencies { - implementation("io.getunleash:unleash-client-java:11.1.0") - implementation("com.launchdarkly:okhttp-eventsource:4.1.1") + implementation("io.getunleash:unleash-client-java:12.2.1-SNAPSHOT") + implementation("com.launchdarkly:okhttp-eventsource:4.2.0") implementation("ch.qos.logback:logback-classic:1.5.18") -} \ No newline at end of file +} diff --git a/examples/streaming-example/gradle/wrapper/gradle-wrapper.properties b/examples/streaming-example/gradle/wrapper/gradle-wrapper.properties index d6e308a63..221c4f982 100644 --- a/examples/streaming-example/gradle/wrapper/gradle-wrapper.properties +++ b/examples/streaming-example/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/examples/streaming-example/src/main/java/io/getunleash/example/StreamingExample.java b/examples/streaming-example/src/main/java/io/getunleash/example/StreamingExample.java index ad6f9e072..b2f70fd60 100644 --- a/examples/streaming-example/src/main/java/io/getunleash/example/StreamingExample.java +++ b/examples/streaming-example/src/main/java/io/getunleash/example/StreamingExample.java @@ -12,40 +12,57 @@ public class StreamingExample { private static Unleash unleash; private static class StreamingEventSubscriber implements UnleashSubscriber { + @Override public void togglesFetched(ClientFeaturesResponse toggleResponse) { System.out.println("[STREAMING EVENT] Features updated"); if (unleash != null) { boolean isEnabled = unleash.isEnabled("streaming_flag"); - System.out.println(" streaming_flag: " + (isEnabled ? "ENABLED" : "DISABLED")); + System.out.println( + " streaming_flag: " + (isEnabled ? "ENABLED" : "DISABLED") + ); + System.out.println( + " test devices flag: " + unleash.isEnabled("devices") + ); } } @Override public void onError(UnleashException unleashException) { - System.err.println("[STREAMING ERROR] " + unleashException.getMessage()); + System.err.println( + "[STREAMING ERROR] " + unleashException.getMessage() + ); } } public static void main(String[] args) { StreamingEventSubscriber subscriber = new StreamingEventSubscriber(); - UnleashConfig config = - UnleashConfig.builder() - .appName("streaming-example") - .instanceId("streaming-example-instance") - .unleashAPI(getOrElse("UNLEASH_API_URL", "https://app.unleash-hosted.com/demo/api")) - .customHttpHeader( - "Authorization", - getOrElse("UNLEASH_API_TOKEN", - "*:development.25a06b75248528f8ca93ce179dcdd141aedfb632231e0d21fd8ff349")) - .experimentalStreamingMode() - .subscriber(subscriber) - .build(); + UnleashConfig config = UnleashConfig.builder() + .appName("streaming-example") + .instanceId("streaming-example-instance") + .unleashAPI( + getOrElse( + "UNLEASH_API_URL", + "https://app.unleash-hosted.com/demo/api" + ) + ) + .customHttpHeader( + "Authorization", + getOrElse( + "UNLEASH_API_TOKEN", + "*:development.25a06b75248528f8ca93ce179dcdd141aedfb632231e0d21fd8ff349" + ) + ) + .experimentalStreamingMode() + .subscriber(subscriber) + .build(); unleash = new DefaultUnleash(config); - System.out.println("Streaming client started. Waiting for events... (Press Ctrl+C to exit)"); + System.out.println( + "Streaming client started. Waiting for events... (Press Ctrl+C to exit)" + ); try { Thread.currentThread().join(); @@ -62,4 +79,4 @@ public static String getOrElse(String key, String defaultValue) { } return value; } -} \ No newline at end of file +} diff --git a/pom.xml b/pom.xml index f4afca2db..bfc30601d 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ UTF-8 - 5.2.2 + 6.1.0 3.27.7 2.13.2 @@ -15,9 +15,9 @@ 5.14.0 1.5.25 5.20.0 - 4.12.0 + 5.3.2 2.0.17 - 3.9.2 + 3.13.2 io.getunleash:unleash-client-java @@ -61,7 +61,7 @@ io.getunleash yggdrasil-engine - 0.5.1 + 1.0.1 com.google.code.gson @@ -70,14 +70,14 @@ com.squareup.okhttp3 - okhttp + okhttp-jvm ${version.okhttp} true com.launchdarkly okhttp-eventsource - 4.1.1 + 4.2.0 diff --git a/src/main/java/io/getunleash/DefaultUnleash.java b/src/main/java/io/getunleash/DefaultUnleash.java index 9ea99fa8d..be8522ef0 100644 --- a/src/main/java/io/getunleash/DefaultUnleash.java +++ b/src/main/java/io/getunleash/DefaultUnleash.java @@ -228,7 +228,8 @@ public List evaluateAllToggles(UnleashContext context) { UnleashContext enhancedContext = context.applyStaticFields(config); FlatResponse response = featureRepository.getVariant(toggleName, enhancedContext); - Optional variantDef = Optional.of(response.value); + Optional variantDef = + Optional.ofNullable(response).map(r -> r.value); Variant variant = YggdrasilAdapters.adapt(variantDef, DISABLED_VARIANT); return new EvaluatedToggle( diff --git a/src/main/java/io/getunleash/metric/OkHttpMetricsSender.java b/src/main/java/io/getunleash/metric/OkHttpMetricsSender.java index 36015f11b..ff888f3bf 100644 --- a/src/main/java/io/getunleash/metric/OkHttpMetricsSender.java +++ b/src/main/java/io/getunleash/metric/OkHttpMetricsSender.java @@ -15,12 +15,7 @@ import java.time.LocalDateTime; import java.util.Objects; import java.util.concurrent.atomic.AtomicLong; -import okhttp3.HttpUrl; -import okhttp3.MediaType; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; +import okhttp3.*; public class OkHttpMetricsSender implements MetricSender { private final UnleashConfig config; diff --git a/src/main/java/io/getunleash/repository/FeatureRepositoryImpl.java b/src/main/java/io/getunleash/repository/FeatureRepositoryImpl.java index 35de8b0ad..8c5aea8be 100644 --- a/src/main/java/io/getunleash/repository/FeatureRepositoryImpl.java +++ b/src/main/java/io/getunleash/repository/FeatureRepositoryImpl.java @@ -60,7 +60,7 @@ public FeatureRepositoryImpl(UnleashConfig unleashConfig, UnleashEngine engine) private void initCollections(UnleashScheduledExecutor executor) { Optional features = this.featureBackupHandler.read(); - if (!features.isPresent() && this.bootstrapper != null) { + if (features.isEmpty() && this.bootstrapper != null) { features = this.bootstrapper.read(); } if (features.isPresent()) {