Skip to content

Commit 437048c

Browse files
committed
update
1 parent 4e2c479 commit 437048c

File tree

5 files changed

+5
-311
lines changed

5 files changed

+5
-311
lines changed

.vscode/settings.json

-3
This file was deleted.

core-api/src/main/java/com/optimizely/ab/Optimizely.java

+1-234
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/****************************************************************************
2-
* Copyright 2016-2023, Optimizely, Inc. and contributors *
2+
* Copyright 2016-2024, Optimizely, Inc. and contributors *
33
* *
44
* Licensed under the Apache License, Version 2.0 (the "License"); *
55
* you may not use this file except in compliance with the License. *
@@ -42,7 +42,6 @@
4242
import javax.annotation.Nonnull;
4343
import javax.annotation.Nullable;
4444
import javax.annotation.concurrent.ThreadSafe;
45-
import javax.xml.catalog.CatalogFeatures.Feature;
4645

4746
import java.io.Closeable;
4847
import java.util.*;
@@ -1193,111 +1192,6 @@ private OptimizelyUserContext createUserContextCopy(@Nonnull String userId, @Non
11931192
return new OptimizelyUserContext(this, userId, attributes, Collections.EMPTY_MAP, null, false);
11941193
}
11951194

1196-
// OptimizelyDecision decide(@Nonnull OptimizelyUserContext user,
1197-
// @Nonnull String key,
1198-
// @Nonnull List<OptimizelyDecideOption> options) {
1199-
//
1200-
// ProjectConfig projectConfig = getProjectConfig();
1201-
// if (projectConfig == null) {
1202-
// return OptimizelyDecision.newErrorDecision(key, user, DecisionMessage.SDK_NOT_READY.reason());
1203-
// }
1204-
//
1205-
// FeatureFlag flag = projectConfig.getFeatureKeyMapping().get(key);
1206-
// if (flag == null) {
1207-
// return OptimizelyDecision.newErrorDecision(key, user, DecisionMessage.FLAG_KEY_INVALID.reason(key));
1208-
// }
1209-
//
1210-
// String userId = user.getUserId();
1211-
// Map<String, Object> attributes = user.getAttributes();
1212-
// Boolean decisionEventDispatched = false;
1213-
// List<OptimizelyDecideOption> allOptions = getAllOptions(options);
1214-
// DecisionReasons decisionReasons = DefaultDecisionReasons.newInstance(allOptions);
1215-
//
1216-
// Map<String, ?> copiedAttributes = new HashMap<>(attributes);
1217-
// FeatureDecision flagDecision;
1218-
//
1219-
// // Check Forced Decision
1220-
// OptimizelyDecisionContext optimizelyDecisionContext = new OptimizelyDecisionContext(flag.getKey(), null);
1221-
// DecisionResponse<Variation> forcedDecisionVariation = decisionService.validatedForcedDecision(optimizelyDecisionContext, projectConfig, user);
1222-
// decisionReasons.merge(forcedDecisionVariation.getReasons());
1223-
// if (forcedDecisionVariation.getResult() != null) {
1224-
// flagDecision = new FeatureDecision(null, forcedDecisionVariation.getResult(), FeatureDecision.DecisionSource.FEATURE_TEST);
1225-
// } else {
1226-
// // Regular decision
1227-
// DecisionResponse<FeatureDecision> decisionVariation = decisionService.getVariationForFeature(
1228-
// flag,
1229-
// user,
1230-
// projectConfig,
1231-
// allOptions);
1232-
// flagDecision = decisionVariation.getResult();
1233-
// decisionReasons.merge(decisionVariation.getReasons());
1234-
// }
1235-
//
1236-
// Boolean flagEnabled = false;
1237-
// if (flagDecision.variation != null) {
1238-
// if (flagDecision.variation.getFeatureEnabled()) {
1239-
// flagEnabled = true;
1240-
// }
1241-
// }
1242-
// logger.info("Feature \"{}\" is enabled for user \"{}\"? {}", key, userId, flagEnabled);
1243-
//
1244-
// Map<String, Object> variableMap = new HashMap<>();
1245-
// if (!allOptions.contains(OptimizelyDecideOption.EXCLUDE_VARIABLES)) {
1246-
// DecisionResponse<Map<String, Object>> decisionVariables = getDecisionVariableMap(
1247-
// flag,
1248-
// flagDecision.variation,
1249-
// flagEnabled);
1250-
// variableMap = decisionVariables.getResult();
1251-
// decisionReasons.merge(decisionVariables.getReasons());
1252-
// }
1253-
// OptimizelyJSON optimizelyJSON = new OptimizelyJSON(variableMap);
1254-
//
1255-
// FeatureDecision.DecisionSource decisionSource = FeatureDecision.DecisionSource.ROLLOUT;
1256-
// if (flagDecision.decisionSource != null) {
1257-
// decisionSource = flagDecision.decisionSource;
1258-
// }
1259-
//
1260-
// List<String> reasonsToReport = decisionReasons.toReport();
1261-
// String variationKey = flagDecision.variation != null ? flagDecision.variation.getKey() : null;
1262-
// // TODO: add ruleKey values when available later. use a copy of experimentKey until then.
1263-
// // add to event metadata as well (currently set to experimentKey)
1264-
// String ruleKey = flagDecision.experiment != null ? flagDecision.experiment.getKey() : null;
1265-
//
1266-
// if (!allOptions.contains(OptimizelyDecideOption.DISABLE_DECISION_EVENT)) {
1267-
// decisionEventDispatched = sendImpression(
1268-
// projectConfig,
1269-
// flagDecision.experiment,
1270-
// userId,
1271-
// copiedAttributes,
1272-
// flagDecision.variation,
1273-
// key,
1274-
// decisionSource.toString(),
1275-
// flagEnabled);
1276-
// }
1277-
//
1278-
// DecisionNotification decisionNotification = DecisionNotification.newFlagDecisionNotificationBuilder()
1279-
// .withUserId(userId)
1280-
// .withAttributes(copiedAttributes)
1281-
// .withFlagKey(key)
1282-
// .withEnabled(flagEnabled)
1283-
// .withVariables(variableMap)
1284-
// .withVariationKey(variationKey)
1285-
// .withRuleKey(ruleKey)
1286-
// .withReasons(reasonsToReport)
1287-
// .withDecisionEventDispatched(decisionEventDispatched)
1288-
// .build();
1289-
// notificationCenter.send(decisionNotification);
1290-
//
1291-
// return new OptimizelyDecision(
1292-
// variationKey,
1293-
// flagEnabled,
1294-
// optimizelyJSON,
1295-
// ruleKey,
1296-
// key,
1297-
// user,
1298-
// reasonsToReport);
1299-
// }
1300-
//
13011195
Optional<FeatureDecision> getForcedDecision(@Nonnull String flagKey,
13021196
@Nonnull DecisionReasons decisionReasons,
13031197
@Nonnull ProjectConfig projectConfig,
@@ -1313,7 +1207,6 @@ Optional<FeatureDecision> getForcedDecision(@Nonnull String flagKey,
13131207
return Optional.empty();
13141208
}
13151209

1316-
// TODO: UPS refactor cleanup
13171210
OptimizelyDecision decide(@Nonnull OptimizelyUserContext user,
13181211
@Nonnull String key,
13191212
@Nonnull List<OptimizelyDecideOption> options) {
@@ -1322,106 +1215,6 @@ OptimizelyDecision decide(@Nonnull OptimizelyUserContext user,
13221215
return OptimizelyDecision.newErrorDecision(key, user, DecisionMessage.SDK_NOT_READY.reason());
13231216
}
13241217
return decideForKeys(user, Arrays.asList(key), options).get(key);
1325-
1326-
// ProjectConfig projectConfig = getProjectConfig();
1327-
// if (projectConfig == null) {
1328-
// return OptimizelyDecision.newErrorDecision(key, user, DecisionMessage.SDK_NOT_READY.reason());
1329-
// }
1330-
//
1331-
// FeatureFlag flag = projectConfig.getFeatureKeyMapping().get(key);
1332-
// if (flag == null) {
1333-
// return OptimizelyDecision.newErrorDecision(key, user, DecisionMessage.FLAG_KEY_INVALID.reason(key));
1334-
// }
1335-
//
1336-
// String userId = user.getUserId();
1337-
// Map<String, Object> attributes = user.getAttributes();
1338-
// Boolean decisionEventDispatched = false;
1339-
// List<OptimizelyDecideOption> allOptions = getAllOptions(options);
1340-
// DecisionReasons decisionReasons = DefaultDecisionReasons.newInstance(allOptions);
1341-
//
1342-
// Map<String, ?> copiedAttributes = new HashMap<>(attributes);
1343-
// FeatureDecision flagDecision;
1344-
//
1345-
// // Check Forced Decision
1346-
// OptimizelyDecisionContext optimizelyDecisionContext = new OptimizelyDecisionContext(flag.getKey(), null);
1347-
// DecisionResponse<Variation> forcedDecisionVariation = decisionService.validatedForcedDecision(optimizelyDecisionContext, projectConfig, user);
1348-
// decisionReasons.merge(forcedDecisionVariation.getReasons());
1349-
// if (forcedDecisionVariation.getResult() != null) {
1350-
// flagDecision = new FeatureDecision(null, forcedDecisionVariation.getResult(), FeatureDecision.DecisionSource.FEATURE_TEST);
1351-
// } else {
1352-
// // Regular decision
1353-
// DecisionResponse<FeatureDecision> decisionVariation = decisionService.getVariationForFeature(
1354-
// flag,
1355-
// user,
1356-
// projectConfig,
1357-
// allOptions);
1358-
// flagDecision = decisionVariation.getResult();
1359-
// decisionReasons.merge(decisionVariation.getReasons());
1360-
// }
1361-
//
1362-
// Boolean flagEnabled = false;
1363-
// if (flagDecision.variation != null) {
1364-
// if (flagDecision.variation.getFeatureEnabled()) {
1365-
// flagEnabled = true;
1366-
// }
1367-
// }
1368-
// logger.info("Feature \"{}\" is enabled for user \"{}\"? {}", key, userId, flagEnabled);
1369-
//
1370-
// Map<String, Object> variableMap = new HashMap<>();
1371-
// if (!allOptions.contains(OptimizelyDecideOption.EXCLUDE_VARIABLES)) {
1372-
// DecisionResponse<Map<String, Object>> decisionVariables = getDecisionVariableMap(
1373-
// flag,
1374-
// flagDecision.variation,
1375-
// flagEnabled);
1376-
// variableMap = decisionVariables.getResult();
1377-
// decisionReasons.merge(decisionVariables.getReasons());
1378-
// }
1379-
// OptimizelyJSON optimizelyJSON = new OptimizelyJSON(variableMap);
1380-
//
1381-
// FeatureDecision.DecisionSource decisionSource = FeatureDecision.DecisionSource.ROLLOUT;
1382-
// if (flagDecision.decisionSource != null) {
1383-
// decisionSource = flagDecision.decisionSource;
1384-
// }
1385-
//
1386-
// List<String> reasonsToReport = decisionReasons.toReport();
1387-
// String variationKey = flagDecision.variation != null ? flagDecision.variation.getKey() : null;
1388-
// // TODO: add ruleKey values when available later. use a copy of experimentKey until then.
1389-
// // add to event metadata as well (currently set to experimentKey)
1390-
// String ruleKey = flagDecision.experiment != null ? flagDecision.experiment.getKey() : null;
1391-
//
1392-
// if (!allOptions.contains(OptimizelyDecideOption.DISABLE_DECISION_EVENT)) {
1393-
// decisionEventDispatched = sendImpression(
1394-
// projectConfig,
1395-
// flagDecision.experiment,
1396-
// userId,
1397-
// copiedAttributes,
1398-
// flagDecision.variation,
1399-
// key,
1400-
// decisionSource.toString(),
1401-
// flagEnabled);
1402-
// }
1403-
//
1404-
// DecisionNotification decisionNotification = DecisionNotification.newFlagDecisionNotificationBuilder()
1405-
// .withUserId(userId)
1406-
// .withAttributes(copiedAttributes)
1407-
// .withFlagKey(key)
1408-
// .withEnabled(flagEnabled)
1409-
// .withVariables(variableMap)
1410-
// .withVariationKey(variationKey)
1411-
// .withRuleKey(ruleKey)
1412-
// .withReasons(reasonsToReport)
1413-
// .withDecisionEventDispatched(decisionEventDispatched)
1414-
// .build();
1415-
// notificationCenter.send(decisionNotification);
1416-
//
1417-
// return new OptimizelyDecision(
1418-
// variationKey,
1419-
// flagEnabled,
1420-
// optimizelyJSON,
1421-
// ruleKey,
1422-
// key,
1423-
// user,
1424-
// reasonsToReport);
14251218
}
14261219

14271220
private OptimizelyDecision createOptimizelyDecision(
@@ -1505,7 +1298,6 @@ private OptimizelyDecision createOptimizelyDecision(
15051298
reasonsToReport);
15061299
}
15071300

1508-
// TODO: UPS refactor cleanup
15091301
Map<String, OptimizelyDecision> decideForKeys(@Nonnull OptimizelyUserContext user,
15101302
@Nonnull List<String> keys,
15111303
@Nonnull List<OptimizelyDecideOption> options) {
@@ -1570,31 +1362,6 @@ Map<String, OptimizelyDecision> decideForKeys(@Nonnull OptimizelyUserContext use
15701362

15711363
return decisionMap;
15721364
}
1573-
1574-
// Map<String, OptimizelyDecision> decideForKeys(@Nonnull OptimizelyUserContext user,
1575-
// @Nonnull List<String> keys,
1576-
// @Nonnull List<OptimizelyDecideOption> options) {
1577-
// Map<String, OptimizelyDecision> decisionMap = new HashMap<>();
1578-
//
1579-
// ProjectConfig projectConfig = getProjectConfig();
1580-
// if (projectConfig == null) {
1581-
// logger.error("Optimizely instance is not valid, failing isFeatureEnabled call.");
1582-
// return decisionMap;
1583-
// }
1584-
//
1585-
// if (keys.isEmpty()) return decisionMap;
1586-
//
1587-
// List<OptimizelyDecideOption> allOptions = getAllOptions(options);
1588-
//
1589-
// for (String key : keys) {
1590-
// OptimizelyDecision decision = decide(user, key, options);
1591-
// if (!allOptions.contains(OptimizelyDecideOption.ENABLED_FLAGS_ONLY) || decision.getEnabled()) {
1592-
// decisionMap.put(key, decision);
1593-
// }
1594-
// }
1595-
//
1596-
// return decisionMap;
1597-
// }
15981365

15991366
Map<String, OptimizelyDecision> decideAll(@Nonnull OptimizelyUserContext user,
16001367
@Nonnull List<OptimizelyDecideOption> options) {

core-api/src/main/java/com/optimizely/ab/bucketing/DecisionService.java

+2-51
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/****************************************************************************
2-
* Copyright 2017-2022, Optimizely, Inc. and contributors *
2+
* Copyright 2017-2022, 2024, Optimizely, Inc. and contributors *
33
* *
44
* Licensed under the Apache License, Version 2.0 (the "License"); *
55
* you may not use this file except in compliance with the License. *
@@ -203,31 +203,6 @@ public DecisionResponse<FeatureDecision> getVariationForFeature(@Nonnull Feature
203203
@Nonnull OptimizelyUserContext user,
204204
@Nonnull ProjectConfig projectConfig,
205205
@Nonnull List<OptimizelyDecideOption> options) {
206-
// DecisionReasons reasons = DefaultDecisionReasons.newInstance();
207-
//
208-
// DecisionResponse<FeatureDecision> decisionVariationResponse = getVariationFromExperiment(projectConfig, featureFlag, user, options);
209-
// reasons.merge(decisionVariationResponse.getReasons());
210-
//
211-
// FeatureDecision decision = decisionVariationResponse.getResult();
212-
// if (decision != null) {
213-
// return new DecisionResponse(decision, reasons);
214-
// }
215-
//
216-
// DecisionResponse<FeatureDecision> decisionFeatureResponse = getVariationForFeatureInRollout(featureFlag, user, projectConfig);
217-
// reasons.merge(decisionFeatureResponse.getReasons());
218-
// decision = decisionFeatureResponse.getResult();
219-
//
220-
// String message;
221-
// if (decision.variation == null) {
222-
// message = reasons.addInfo("The user \"%s\" was not bucketed into a rollout for feature flag \"%s\".",
223-
// user.getUserId(), featureFlag.getKey());
224-
// } else {
225-
// message = reasons.addInfo("The user \"%s\" was bucketed into a rollout for feature flag \"%s\".",
226-
// user.getUserId(), featureFlag.getKey());
227-
// }
228-
// logger.info(message);
229-
//
230-
// return new DecisionResponse(decision, reasons);
231206
return getVariationsForFeatureList(Arrays.asList(featureFlag), user, projectConfig, options).get(0);
232207
}
233208

@@ -329,30 +304,6 @@ public List<DecisionResponse<FeatureDecision>> getVariationsForFeatureList(@Non
329304
}
330305

331306
return decisions;
332-
333-
// DecisionResponse<FeatureDecision> decisionVariationResponse = getVariationFromExperiment(projectConfig, featureFlag, user, options);
334-
// reasons.merge(decisionVariationResponse.getReasons());
335-
//
336-
// FeatureDecision decision = decisionVariationResponse.getResult();
337-
// if (decision != null) {
338-
// return new DecisionResponse(decision, reasons);
339-
// }
340-
341-
// DecisionResponse<FeatureDecision> decisionFeatureResponse = getVariationForFeatureInRollout(featureFlag, user, projectConfig);
342-
// reasons.merge(decisionFeatureResponse.getReasons());
343-
// decision = decisionFeatureResponse.getResult();
344-
//
345-
// String message;
346-
// if (decision.variation == null) {
347-
// message = reasons.addInfo("The user \"%s\" was not bucketed into a rollout for feature flag \"%s\".",
348-
// user.getUserId(), featureFlag.getKey());
349-
// } else {
350-
// message = reasons.addInfo("The user \"%s\" was bucketed into a rollout for feature flag \"%s\".",
351-
// user.getUserId(), featureFlag.getKey());
352-
// }
353-
// logger.info(message);
354-
//
355-
// return new DecisionResponse(decision, reasons);
356307
}
357308

358309
@Nonnull
@@ -788,7 +739,7 @@ public DecisionResponse<Variation> getForcedVariation(@Nonnull Experiment experi
788739
}
789740

790741

791-
public DecisionResponse<Variation> getVariationFromExperimentRule(@Nonnull ProjectConfig projectConfig,
742+
private DecisionResponse<Variation> getVariationFromExperimentRule(@Nonnull ProjectConfig projectConfig,
792743
@Nonnull String flagKey,
793744
@Nonnull Experiment rule,
794745
@Nonnull OptimizelyUserContext user,

core-api/src/test/java/com/optimizely/ab/OptimizelyUserContextTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/**
22
*
3-
* Copyright 2021-2023, Optimizely and contributors
3+
* Copyright 2021-2024, Optimizely and contributors
44
*
55
* Licensed under the Apache License, Version 2.0 (the "License");
66
* you may not use this file except in compliance with the License.

0 commit comments

Comments
 (0)