diff --git a/README.md b/README.md index dff52327..e65b4c06 100644 --- a/README.md +++ b/README.md @@ -78,14 +78,14 @@ Add the following Maven dependency in your project's pom.xml file: io.harness ff-java-server-sdk - 1.6.0 + 1.6.1 ``` #### Gradle ``` -implementation 'io.harness:ff-java-server-sdk:1.6.0' +implementation 'io.harness:ff-java-server-sdk:1.6.1' ``` ### Code Sample diff --git a/examples/src/main/java/io/harness/ff/examples/GettingStarted.java b/examples/src/main/java/io/harness/ff/examples/GettingStarted.java index 513d2e2b..0a8ba0ca 100644 --- a/examples/src/main/java/io/harness/ff/examples/GettingStarted.java +++ b/examples/src/main/java/io/harness/ff/examples/GettingStarted.java @@ -67,4 +67,4 @@ private static String getEnvOrDefault(String key, String defaultValue) { } return value; } -} \ No newline at end of file +} diff --git a/settings.gradle b/settings.gradle index 404a7b1a..091df4c0 100644 --- a/settings.gradle +++ b/settings.gradle @@ -4,7 +4,7 @@ dependencyResolutionManagement { versionCatalogs { libs { // main sdk version - version('sdk', '1.6.0'); + version('sdk', '1.6.1'); // sdk deps version('okhttp3', '4.12.0') diff --git a/src/main/java/io/harness/cf/client/api/Evaluator.java b/src/main/java/io/harness/cf/client/api/Evaluator.java index 7f9cfb49..6731960a 100644 --- a/src/main/java/io/harness/cf/client/api/Evaluator.java +++ b/src/main/java/io/harness/cf/client/api/Evaluator.java @@ -226,7 +226,6 @@ private boolean isTargetIncludedOrExcludedInSegment(List segmentList, Ta // New style rules, if sent by BE prefer those first List newServingRules = segment.getServingRules(); if (newServingRules != null && !newServingRules.isEmpty()) { - newServingRules.sort(Comparator.comparing(GroupServingRule::getPriority)); for (GroupServingRule servingRule : newServingRules) { if (evaluateClausesV2(servingRule.getClauses(), target)) { diff --git a/src/main/java/io/harness/cf/client/api/StorageRepository.java b/src/main/java/io/harness/cf/client/api/StorageRepository.java index eec02b82..840c3e45 100644 --- a/src/main/java/io/harness/cf/client/api/StorageRepository.java +++ b/src/main/java/io/harness/cf/client/api/StorageRepository.java @@ -3,11 +3,9 @@ import io.harness.cf.client.common.Cache; import io.harness.cf.client.common.Storage; import io.harness.cf.client.common.Utils; -import io.harness.cf.model.Clause; -import io.harness.cf.model.FeatureConfig; -import io.harness.cf.model.Segment; -import io.harness.cf.model.ServingRule; +import io.harness.cf.model.*; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; import java.util.Optional; import lombok.NonNull; @@ -131,6 +129,10 @@ public void setSegment(@NonNull String identifier, @NonNull Segment segment) { log.debug("Segment {} already exists", identifier); return; } + + // Sort the serving rules before storing the segment + sortSegmentServingRules(segment); + final String segmentKey = formatSegmentKey(identifier); if (store != null) { store.set(segmentKey, segment); @@ -196,6 +198,12 @@ protected boolean isSegmentOutdated(@NonNull String identifier, @NonNull Segment return false; } + private void sortSegmentServingRules(Segment segment) { + if (segment.getServingRules() != null && segment.getServingRules().size() > 1) { + segment.getServingRules().sort(Comparator.comparing(GroupServingRule::getPriority)); + } + } + @NonNull protected String formatFlagKey(@NonNull String identifier) { return String.format("flags/%s", identifier);