Skip to content

Commit 872a9ba

Browse files
committed
Restore remaining checkNotNull guards dropped during matchers migration
Guards for STARTS_WITH, ENDS_WITH, CONTAINS_STRING, MATCHES_STRING, EQUAL_TO_SEMVER, GREATER_THAN_OR_EQUAL_TO_SEMVER, LESS_THAN_OR_EQUAL_TO_SEMVER, IN_LIST_SEMVER, BETWEEN_SEMVER, IN_RULE_BASED_SEGMENT, and the final delegate null check were lost when matchers were migrated from io.split.engine.matchers to io.split.rules.matchers. Also restores checkNotNull with message for IN_SPLIT_TREATMENT and EQUAL_TO_BOOLEAN (previously replaced with manual NPE throws). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> AI-Session-Id: 588a98fd-ba49-4318-8286-5fb79f9efaca AI-Tool: claude-code AI-Model: unknown
1 parent 5b8bc94 commit 872a9ba

1 file changed

Lines changed: 18 additions & 4 deletions

File tree

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

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -145,50 +145,64 @@ public static AttributeMatcher toMatcher(Matcher matcher) {
145145
delegate = new ContainsAnyOfSetMatcher(matcher.whitelistMatcherData.whitelist);
146146
break;
147147
case STARTS_WITH:
148+
checkNotNull(matcher.whitelistMatcherData);
148149
delegate = new StartsWithAnyOfMatcher(matcher.whitelistMatcherData.whitelist);
149150
break;
150151
case ENDS_WITH:
152+
checkNotNull(matcher.whitelistMatcherData);
151153
delegate = new EndsWithAnyOfMatcher(matcher.whitelistMatcherData.whitelist);
152154
break;
153155
case CONTAINS_STRING:
156+
checkNotNull(matcher.whitelistMatcherData);
154157
delegate = new ContainsAnyOfMatcher(matcher.whitelistMatcherData.whitelist);
155158
break;
156159
case MATCHES_STRING:
160+
checkNotNull(matcher.stringMatcherData);
157161
delegate = new RegularExpressionMatcher(matcher.stringMatcherData);
158162
break;
159163
case IN_SPLIT_TREATMENT:
160-
if (matcher.dependencyMatcherData == null) throw new NullPointerException(
161-
"MatcherType is " + matcher.matcherType + ". matcher.dependencyMatcherData() MUST NOT BE null");
164+
checkNotNull(matcher.dependencyMatcherData,
165+
"MatcherType is " + matcher.matcherType
166+
+ ". matcher.dependencyMatcherData() MUST NOT BE null");
162167
delegate = new DependencyMatcher(matcher.dependencyMatcherData.split, matcher.dependencyMatcherData.treatments);
163168
break;
164169
case EQUAL_TO_BOOLEAN:
165-
if (matcher.booleanMatcherData == null) throw new NullPointerException(
166-
"MatcherType is " + matcher.matcherType + ". matcher.booleanMatcherData() MUST NOT BE null");
170+
checkNotNull(matcher.booleanMatcherData,
171+
"MatcherType is " + matcher.matcherType
172+
+ ". matcher.booleanMatcherData() MUST NOT BE null");
167173
delegate = new BooleanMatcher(matcher.booleanMatcherData);
168174
break;
169175
case EQUAL_TO_SEMVER:
176+
checkNotNull(matcher.stringMatcherData, "stringMatcherData is required for EQUAL_TO_SEMVER matcher type");
170177
delegate = new EqualToSemverMatcher(matcher.stringMatcherData);
171178
break;
172179
case GREATER_THAN_OR_EQUAL_TO_SEMVER:
180+
checkNotNull(matcher.stringMatcherData, "stringMatcherData is required for GREATER_THAN_OR_EQUAL_TO_SEMVER matcher type");
173181
delegate = new GreaterThanOrEqualToSemverMatcher(matcher.stringMatcherData);
174182
break;
175183
case LESS_THAN_OR_EQUAL_TO_SEMVER:
184+
checkNotNull(matcher.stringMatcherData, "stringMatcherData is required for LESS_THAN_OR_EQUAL_SEMVER matcher type");
176185
delegate = new LessThanOrEqualToSemverMatcher(matcher.stringMatcherData);
177186
break;
178187
case IN_LIST_SEMVER:
188+
checkNotNull(matcher.whitelistMatcherData, "whitelistMatcherData is required for IN_LIST_SEMVER matcher type");
179189
delegate = new InListSemverMatcher(matcher.whitelistMatcherData.whitelist);
180190
break;
181191
case BETWEEN_SEMVER:
192+
checkNotNull(matcher.betweenStringMatcherData, "betweenStringMatcherData is required for BETWEEN_SEMVER matcher type");
182193
delegate = new BetweenSemverMatcher(matcher.betweenStringMatcherData.start, matcher.betweenStringMatcherData.end);
183194
break;
184195
case IN_RULE_BASED_SEGMENT:
196+
checkNotNull(matcher.userDefinedSegmentMatcherData);
185197
String ruleBasedSegmentName = matcher.userDefinedSegmentMatcherData.segmentName;
186198
delegate = new RuleBasedSegmentMatcher(ruleBasedSegmentName);
187199
break;
188200
default:
189201
throw new IllegalArgumentException("Unknown matcher type: " + matcher.matcherType);
190202
}
191203

204+
checkNotNull(delegate, "We were not able to create a matcher for: " + matcher.matcherType);
205+
192206
String attribute = null;
193207
if (matcher.keySelector != null && matcher.keySelector.attribute != null) {
194208
attribute = matcher.keySelector.attribute;

0 commit comments

Comments
 (0)