1 package io.getunleash.strategy;
2
3 import io.getunleash.UnleashContext;
4 import java.util.Map;
5 import java.util.Optional;
6
7
18 public final class GradualRolloutUserIdStrategy implements Strategy {
19 protected static final String PERCENTAGE = "percentage";
20 protected static final String GROUP_ID = "groupId";
21
22 private static final String NAME = "gradualRolloutUserId";
23
24 @Override
25 public String getName() {
26 return NAME;
27 }
28
29 @Override
30 public boolean isEnabled(Map<String, String> parameters) {
31 return false;
32 }
33
34 @Override
35 public boolean isEnabled(final Map<String, String> parameters, UnleashContext unleashContext) {
36 Optional<String> userId = unleashContext.getUserId();
37
38 if (!userId.isPresent()) {
39 return false;
40 }
41
42 final int percentage = StrategyUtils.getPercentage(parameters.get(PERCENTAGE));
43 final String groupId = parameters.getOrDefault(GROUP_ID, "");
44
45 final int normalizedUserId = StrategyUtils.getNormalizedNumber(userId.get(), groupId, 0);
46
47 return percentage > 0 && normalizedUserId <= percentage;
48 }
49 }
50