Skip to content

Commit 521e8e9

Browse files
committed
Fix imports
AI-Session-Id: 7d0b171a-a576-4317-965f-99fb98c11ba8 AI-Tool: claude-code AI-Model: unknown
1 parent 0a24b56 commit 521e8e9

7 files changed

Lines changed: 87 additions & 11 deletions

File tree

client/src/main/java/io/split/client/CacheUpdaterService.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import io.split.storages.SplitCacheProducer;
1313

1414
import java.util.ArrayList;
15+
import java.util.Arrays;
1516
import java.util.HashSet;
1617
import java.util.List;
1718
import java.util.Map;
@@ -77,9 +78,9 @@ private List<ParsedCondition> getConditions(String splitKey, ParsedSplit split,
7778
private ParsedCondition createWhitelistCondition(String splitKey, Partition partition) {
7879
ParsedCondition parsedCondition = new ParsedCondition(ConditionType.WHITELIST,
7980
new CombiningMatcher(CombiningMatcher.Combiner.AND,
80-
new java.util.ArrayList<>(java.util.Arrays.asList(
81-
new AttributeMatcher(null, new WhitelistMatcher(java.util.Arrays.asList(splitKey)), false)))),
82-
new java.util.ArrayList<>(java.util.Arrays.asList(partition)), splitKey);
81+
new ArrayList<>(Arrays.asList(
82+
new AttributeMatcher(null, new WhitelistMatcher(Arrays.asList(splitKey)), false)))),
83+
new ArrayList<>(Arrays.asList(partition)), splitKey);
8384
return parsedCondition;
8485
}
8586

@@ -89,8 +90,8 @@ private ParsedCondition createRolloutCondition(Partition partition) {
8990
rolloutPartition.size = 0;
9091
ParsedCondition parsedCondition = new ParsedCondition(ConditionType.ROLLOUT,
9192
new CombiningMatcher(CombiningMatcher.Combiner.AND,
92-
new java.util.ArrayList<>(java.util.Arrays.asList(new AttributeMatcher(null, new AllKeysMatcher(), false)))),
93-
new java.util.ArrayList<>(java.util.Arrays.asList(partition, rolloutPartition)), "LOCAL");
93+
new ArrayList<>(Arrays.asList(new AttributeMatcher(null, new AllKeysMatcher(), false)))),
94+
new ArrayList<>(Arrays.asList(partition, rolloutPartition)), "LOCAL");
9495

9596
return parsedCondition;
9697
}
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package io.split.engine.evaluator;
2+
3+
import io.split.client.dtos.ExcludedSegments;
4+
import io.split.engine.experiments.ParsedCondition;
5+
import io.split.engine.experiments.ParsedRuleBasedSegment;
6+
7+
import io.split.storages.RuleBasedSegmentCacheConsumer;
8+
import io.split.storages.SegmentCacheConsumer;
9+
10+
import java.util.Map;
11+
import java.util.Objects;
12+
13+
public class EvaluationContextImp implements EvaluationContext {
14+
private final Evaluator _evaluator;
15+
private final SegmentCacheConsumer _segmentCacheConsumer;
16+
private final RuleBasedSegmentCacheConsumer _ruleBasedSegmentCacheConsumer;
17+
18+
public EvaluationContextImp(Evaluator evaluator, SegmentCacheConsumer segmentCacheConsumer,
19+
RuleBasedSegmentCacheConsumer ruleBasedSegmentCacheConsumer) {
20+
_evaluator = Objects.requireNonNull(evaluator);
21+
_segmentCacheConsumer = Objects.requireNonNull(segmentCacheConsumer);
22+
_ruleBasedSegmentCacheConsumer = Objects.requireNonNull(ruleBasedSegmentCacheConsumer);
23+
}
24+
25+
public Evaluator getEvaluator() {
26+
return _evaluator;
27+
}
28+
29+
public SegmentCacheConsumer getSegmentCache() {
30+
return _segmentCacheConsumer;
31+
}
32+
33+
public RuleBasedSegmentCacheConsumer getRuleBasedSegmentCache() {
34+
return _ruleBasedSegmentCacheConsumer;
35+
}
36+
37+
@Override
38+
public EvaluationResult evaluate(String matchingKey, String bucketingKey, String ruleName, Map<String, Object> attributes) {
39+
EvaluatorImp.TreatmentLabelAndChangeNumber r = _evaluator.evaluateFeature(matchingKey, bucketingKey, ruleName, attributes);
40+
return new EvaluationResult(r.treatment, r.label, r.changeNumber, r.configurations, r.track);
41+
}
42+
43+
@Override
44+
public boolean isInSegment(String segmentName, String key) {
45+
return _segmentCacheConsumer.isInSegment(segmentName, key);
46+
}
47+
48+
@Override
49+
public boolean isInRuleBasedSegment(String segmentName, String key, String bucketingKey, Map<String, Object> attributes) {
50+
ParsedRuleBasedSegment parsedRuleBasedSegment = _ruleBasedSegmentCacheConsumer.get(segmentName);
51+
if (parsedRuleBasedSegment == null) {
52+
return false;
53+
}
54+
if (parsedRuleBasedSegment.excludedKeys().contains(key)) {
55+
return false;
56+
}
57+
for (ExcludedSegments excludedSegment : parsedRuleBasedSegment.excludedSegments()) {
58+
if (excludedSegment.isStandard() && _segmentCacheConsumer.isInSegment(excludedSegment.name, key)) {
59+
return false;
60+
}
61+
if (excludedSegment.isRuleBased() && isInRuleBasedSegment(excludedSegment.name, key, bucketingKey, attributes)) {
62+
return false;
63+
}
64+
}
65+
for (ParsedCondition condition : parsedRuleBasedSegment.parsedConditions()) {
66+
if (condition.matcher().match(key, bucketingKey, attributes, this)) {
67+
return true;
68+
}
69+
}
70+
return false;
71+
}
72+
}

client/src/main/java/io/split/engine/experiments/ParsedRuleBasedSegment.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import io.split.rules.matchers.AttributeMatcher;
55
import io.split.rules.matchers.UserDefinedSegmentMatcher;
66

7+
import java.util.ArrayList;
8+
import java.util.Collections;
79
import java.util.List;
810
import java.util.Set;
911
import java.util.stream.Collectors;
@@ -44,7 +46,7 @@ public ParsedRuleBasedSegment(
4446
List<ExcludedSegments> excludedSegments
4547
) {
4648
_ruleBasedSegment = ruleBasedSegment;
47-
_parsedCondition = java.util.Collections.unmodifiableList(new java.util.ArrayList<>(matcherAndSplits));
49+
_parsedCondition = Collections.unmodifiableList(new ArrayList<>(matcherAndSplits));
4850
_trafficTypeName = trafficTypeName;
4951
_changeNumber = changeNumber;
5052
_excludedKeys = excludedKeys;

client/src/main/java/io/split/engine/experiments/ParsedSplit.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ private static TargetingRule buildTargetingRule(
302302
: Collections.unmodifiableList(prerequisitesMatcher.getPrerequisites());
303303
return new TargetingRule(feature, seed, killed, defaultTreatment, conditions, trafficTypeName,
304304
changeNumber, trafficAllocation, trafficAllocationSeed, algo, configurations,
305-
flagSets == null ? new java.util.HashSet<>() : flagSets, impressionsDisabled, prereqs);
305+
flagSets == null ? new HashSet<>() : flagSets, impressionsDisabled, prereqs);
306306
}
307307

308308
private static io.split.rules.model.Condition toTargetingCondition(ParsedCondition c) {

client/src/main/java/io/split/engine/experiments/ParserUtils.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,8 @@ public static CombiningMatcher toMatcher(MatcherGroup matcherGroup) {
8383
}
8484

8585

86-
private static io.split.rules.model.DataType toRulesDataType(DataType dt) {
87-
return io.split.rules.model.DataType.valueOf(dt.name());
86+
private static DataType toRulesDataType(io.split.client.dtos.DataType dt) {
87+
return DataType.valueOf(dt.name());
8888
}
8989

9090
public static AttributeMatcher toMatcher(Matcher matcher) {

client/src/main/java/io/split/engine/experiments/RuleBasedSegmentParser.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.slf4j.Logger;
77
import org.slf4j.LoggerFactory;
88

9+
import java.util.ArrayList;
910
import java.util.List;
1011

1112
import static io.split.engine.experiments.ParserUtils.checkUnsupportedMatcherExist;
@@ -29,7 +30,7 @@ public ParsedRuleBasedSegment parse(RuleBasedSegment ruleBasedSegment) {
2930
}
3031

3132
private ParsedRuleBasedSegment parseWithoutExceptionHandling(RuleBasedSegment ruleBasedSegment) {
32-
List<ParsedCondition> parsedConditionList = new java.util.ArrayList<>();
33+
List<ParsedCondition> parsedConditionList = new ArrayList<>();
3334
for (Condition condition : ruleBasedSegment.conditions) {
3435
if (checkUnsupportedMatcherExist(condition.matcherGroup.matchers)) {
3536
_log.error("Unsupported matcher type found for rule based segment: " + ruleBasedSegment.name +

client/src/main/java/io/split/engine/experiments/SplitParser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ private ParsedSplit parseWithoutExceptionHandling(Split split) {
8686
split.trafficAllocationSeed,
8787
split.algo,
8888
split.configurations,
89-
split.sets == null ? new java.util.HashSet<>() : split.sets,
89+
split.sets == null ? new HashSet<>() : split.sets,
9090
split.impressionsDisabled,
9191
prerequisites);
9292

0 commit comments

Comments
 (0)