reverting litmus client to java 11
Signed-off-by: chandresh pancholi <chandresh.pancholi@navi.com>
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -29,3 +29,5 @@ litmus-util/litmus-util.iml
|
||||
litmus-util/target
|
||||
|
||||
target
|
||||
log
|
||||
.descriptions.json
|
||||
|
||||
@@ -33,17 +33,25 @@ public class FlexibleRolloutStrategy implements Strategy {
|
||||
}
|
||||
|
||||
private Optional<String> resolveStickiness(String stickiness, LitmusContext context) {
|
||||
return switch (stickiness) {
|
||||
case "userId" -> context.getUserId();
|
||||
case "sessionId" -> context.getSessionId();
|
||||
case "deviceId" -> context.getDeviceId();
|
||||
case "appVersionCode" -> context.getAppVersionCode();
|
||||
case "osType" -> context.getOsType();
|
||||
case "random" -> Optional.of(randomGenerator.get());
|
||||
case "default" -> Optional.of(context.getUserId()
|
||||
switch (stickiness) {
|
||||
case "userId":
|
||||
return context.getUserId();
|
||||
case "sessionId":
|
||||
return context.getSessionId();
|
||||
case "deviceId":
|
||||
return context.getDeviceId();
|
||||
case "appVersionCode":
|
||||
return context.getAppVersionCode();
|
||||
case "osType":
|
||||
return context.getOsType();
|
||||
case "random":
|
||||
return Optional.of(randomGenerator.get());
|
||||
case "default":
|
||||
return Optional.of(context.getUserId()
|
||||
.orElse(context.getSessionId().orElse(this.randomGenerator.get())));
|
||||
default -> context.getByName(stickiness);
|
||||
};
|
||||
default:
|
||||
return context.getByName(stickiness);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -12,19 +12,34 @@ import java.util.function.Predicate;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
public final class VariantUtil {
|
||||
private VariantUtil() {}
|
||||
|
||||
private VariantUtil() {
|
||||
}
|
||||
|
||||
private static Predicate<VariantOverride> overrideMatchesContext(LitmusContext context) {
|
||||
return (override) -> {
|
||||
Optional<String> contextValue;
|
||||
switch (override.getContextName()) {
|
||||
case "userId" -> contextValue = context.getUserId();
|
||||
case "sessionId" -> contextValue = context.getSessionId();
|
||||
case "remoteAddress" -> contextValue = context.getRemoteAddress();
|
||||
case "appVersionCode" -> contextValue = context.getAppVersionCode();
|
||||
case "osType" -> contextValue = context.getOsType();
|
||||
case "deviceId" -> contextValue = context.getDeviceId();
|
||||
default -> contextValue = Optional.ofNullable(context.getProperties().get(override.getContextName()));
|
||||
case "userId":
|
||||
contextValue = context.getUserId();
|
||||
break;
|
||||
case "sessionId":
|
||||
contextValue = context.getSessionId();
|
||||
break;
|
||||
case "remoteAddress":
|
||||
contextValue = context.getRemoteAddress();
|
||||
break;
|
||||
case "appVersionCode":
|
||||
contextValue = context.getAppVersionCode();
|
||||
break;
|
||||
case "osType":
|
||||
contextValue = context.getOsType();
|
||||
break;
|
||||
case "deviceId":
|
||||
contextValue = context.getDeviceId();
|
||||
break;
|
||||
default:
|
||||
contextValue = Optional.ofNullable(context.getProperties().get(override.getContextName()));
|
||||
}
|
||||
return override.getValues().contains(contextValue.orElse(""));
|
||||
};
|
||||
|
||||
@@ -11,9 +11,7 @@ import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class LitmusProxyContainer {
|
||||
private final LitmusProxyConfig litmusProxyConfig;
|
||||
public record LitmusProxyContainer(LitmusProxyConfig litmusProxyConfig) {
|
||||
|
||||
@Bean
|
||||
public Litmus litmus(RequestMetadata requestMetadata) {
|
||||
|
||||
@@ -12,10 +12,8 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/v1/proxy")
|
||||
@RequiredArgsConstructor
|
||||
@Log4j2
|
||||
public class LitmusProxyController {
|
||||
private final Litmus litmus;
|
||||
public record LitmusProxyController(Litmus litmus) {
|
||||
|
||||
@GetMapping(value = "/experiment", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<?> fetch(@RequestParam("name") String experimentName) {
|
||||
@@ -24,4 +22,11 @@ public class LitmusProxyController {
|
||||
return ResponseEntity.ok(result);
|
||||
}
|
||||
|
||||
@GetMapping(value = "/variant", produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<?> fetchVariants(@RequestParam("name") String variantName) {
|
||||
var variant = litmus.getVariant(variantName);
|
||||
|
||||
return ResponseEntity.ok(variant);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.navi.medici.provider;
|
||||
|
||||
import com.navi.medici.config.LitmusConfig;
|
||||
import com.navi.medici.context.LitmusContext;
|
||||
import com.navi.medici.interceptor.RequestMetadata;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
@@ -9,17 +10,12 @@ import org.springframework.web.context.annotation.RequestScope;
|
||||
@Component
|
||||
@RequestScope
|
||||
@Log4j2
|
||||
public class CustomLitmusProxyContextProvider implements LitmusContextProvider {
|
||||
|
||||
private final RequestMetadata requestMetadata;
|
||||
|
||||
public CustomLitmusProxyContextProvider(RequestMetadata requestMetadata) {
|
||||
this.requestMetadata = requestMetadata;
|
||||
}
|
||||
public record CustomLitmusProxyContextProvider(RequestMetadata requestMetadata) implements LitmusContextProvider {
|
||||
|
||||
@Override
|
||||
public LitmusContext getContext() {
|
||||
return LitmusContext.builder()
|
||||
.userId(requestMetadata.customerId().orElseGet(() -> ""))
|
||||
.clickStreamPayload(requestMetadata.getClickStreamData())
|
||||
.appVersionCode(requestMetadata.getAppVersionCode().orElse(""))
|
||||
.osType(requestMetadata.getOsVersion().orElse(""))
|
||||
|
||||
Reference in New Issue
Block a user