Search in sources :

Example 1 with LiveVariable

use of com.optimizely.ab.config.LiveVariable in project java-sdk by optimizely.

the class JsonSimpleConfigParser method parseProjectConfig.

@Override
public ProjectConfig parseProjectConfig(@Nonnull String json) throws ConfigParseException {
    try {
        JSONParser parser = new JSONParser();
        JSONObject rootObject = (JSONObject) parser.parse(json);
        String accountId = (String) rootObject.get("accountId");
        String projectId = (String) rootObject.get("projectId");
        String revision = (String) rootObject.get("revision");
        String version = (String) rootObject.get("version");
        int datafileVersion = Integer.parseInt(version);
        List<Experiment> experiments = parseExperiments((JSONArray) rootObject.get("experiments"));
        List<Attribute> attributes;
        attributes = parseAttributes((JSONArray) rootObject.get("attributes"));
        List<EventType> events = parseEvents((JSONArray) rootObject.get("events"));
        List<Audience> audiences = parseAudiences((JSONArray) parser.parse(rootObject.get("audiences").toString()));
        List<Group> groups = parseGroups((JSONArray) rootObject.get("groups"));
        boolean anonymizeIP = false;
        List<LiveVariable> liveVariables = null;
        if (datafileVersion >= Integer.parseInt(ProjectConfig.Version.V3.toString())) {
            liveVariables = parseLiveVariables((JSONArray) rootObject.get("variables"));
            anonymizeIP = (Boolean) rootObject.get("anonymizeIP");
        }
        List<FeatureFlag> featureFlags = null;
        List<Rollout> rollouts = null;
        if (datafileVersion >= Integer.parseInt(ProjectConfig.Version.V4.toString())) {
            featureFlags = parseFeatureFlags((JSONArray) rootObject.get("featureFlags"));
            rollouts = parseRollouts((JSONArray) rootObject.get("rollouts"));
        }
        return new ProjectConfig(accountId, anonymizeIP, projectId, revision, version, attributes, audiences, events, experiments, featureFlags, groups, liveVariables, rollouts);
    } catch (Exception e) {
        throw new ConfigParseException("Unable to parse datafile: " + json, e);
    }
}
Also used : Group(com.optimizely.ab.config.Group) UserAttribute(com.optimizely.ab.config.audience.UserAttribute) Attribute(com.optimizely.ab.config.Attribute) EventType(com.optimizely.ab.config.EventType) FeatureFlag(com.optimizely.ab.config.FeatureFlag) Rollout(com.optimizely.ab.config.Rollout) Audience(com.optimizely.ab.config.audience.Audience) Experiment(com.optimizely.ab.config.Experiment) JSONArray(org.json.simple.JSONArray) LiveVariable(com.optimizely.ab.config.LiveVariable) ParseException(org.json.simple.parser.ParseException) ProjectConfig(com.optimizely.ab.config.ProjectConfig) JSONObject(org.json.simple.JSONObject) JSONParser(org.json.simple.parser.JSONParser)

Example 2 with LiveVariable

use of com.optimizely.ab.config.LiveVariable in project java-sdk by optimizely.

the class JsonConfigParser method parseFeatureFlags.

private List<FeatureFlag> parseFeatureFlags(JSONArray featureFlagJson) {
    List<FeatureFlag> featureFlags = new ArrayList<FeatureFlag>(featureFlagJson.length());
    for (Object obj : featureFlagJson) {
        JSONObject featureFlagObject = (JSONObject) obj;
        String id = featureFlagObject.getString("id");
        String key = featureFlagObject.getString("key");
        String layerId = featureFlagObject.getString("rolloutId");
        List<String> experimentIds = parseExperimentIds(featureFlagObject.getJSONArray("experimentIds"));
        List<LiveVariable> variables = parseLiveVariables(featureFlagObject.getJSONArray("variables"));
        featureFlags.add(new FeatureFlag(id, key, layerId, experimentIds, variables));
    }
    return featureFlags;
}
Also used : JSONObject(org.json.JSONObject) ArrayList(java.util.ArrayList) FeatureFlag(com.optimizely.ab.config.FeatureFlag) JSONObject(org.json.JSONObject) LiveVariable(com.optimizely.ab.config.LiveVariable)

Example 3 with LiveVariable

use of com.optimizely.ab.config.LiveVariable in project java-sdk by optimizely.

the class JsonConfigParser method parseProjectConfig.

@Override
public ProjectConfig parseProjectConfig(@Nonnull String json) throws ConfigParseException {
    try {
        JSONObject rootObject = new JSONObject(json);
        String accountId = rootObject.getString("accountId");
        String projectId = rootObject.getString("projectId");
        String revision = rootObject.getString("revision");
        String version = rootObject.getString("version");
        int datafileVersion = Integer.parseInt(version);
        List<Experiment> experiments = parseExperiments(rootObject.getJSONArray("experiments"));
        List<Attribute> attributes;
        attributes = parseAttributes(rootObject.getJSONArray("attributes"));
        List<EventType> events = parseEvents(rootObject.getJSONArray("events"));
        List<Audience> audiences = parseAudiences(rootObject.getJSONArray("audiences"));
        List<Group> groups = parseGroups(rootObject.getJSONArray("groups"));
        boolean anonymizeIP = false;
        List<LiveVariable> liveVariables = null;
        if (datafileVersion >= Integer.parseInt(ProjectConfig.Version.V3.toString())) {
            liveVariables = parseLiveVariables(rootObject.getJSONArray("variables"));
            anonymizeIP = rootObject.getBoolean("anonymizeIP");
        }
        List<FeatureFlag> featureFlags = null;
        List<Rollout> rollouts = null;
        if (datafileVersion >= Integer.parseInt(ProjectConfig.Version.V4.toString())) {
            featureFlags = parseFeatureFlags(rootObject.getJSONArray("featureFlags"));
            rollouts = parseRollouts(rootObject.getJSONArray("rollouts"));
        }
        return new ProjectConfig(accountId, anonymizeIP, projectId, revision, version, attributes, audiences, events, experiments, featureFlags, groups, liveVariables, rollouts);
    } catch (Exception e) {
        throw new ConfigParseException("Unable to parse datafile: " + json, e);
    }
}
Also used : Group(com.optimizely.ab.config.Group) UserAttribute(com.optimizely.ab.config.audience.UserAttribute) Attribute(com.optimizely.ab.config.Attribute) EventType(com.optimizely.ab.config.EventType) Audience(com.optimizely.ab.config.audience.Audience) Experiment(com.optimizely.ab.config.Experiment) FeatureFlag(com.optimizely.ab.config.FeatureFlag) LiveVariable(com.optimizely.ab.config.LiveVariable) ProjectConfig(com.optimizely.ab.config.ProjectConfig) JSONObject(org.json.JSONObject) Rollout(com.optimizely.ab.config.Rollout)

Example 4 with LiveVariable

use of com.optimizely.ab.config.LiveVariable in project java-sdk by optimizely.

the class ProjectConfigJacksonDeserializer method deserialize.

@Override
public ProjectConfig deserialize(JsonParser parser, DeserializationContext context) throws IOException {
    ObjectMapper mapper = new ObjectMapper();
    SimpleModule module = new SimpleModule();
    module.addDeserializer(Audience.class, new AudienceJacksonDeserializer());
    module.addDeserializer(Group.class, new GroupJacksonDeserializer());
    mapper.registerModule(module);
    JsonNode node = parser.getCodec().readTree(parser);
    String accountId = node.get("accountId").textValue();
    String projectId = node.get("projectId").textValue();
    String revision = node.get("revision").textValue();
    String version = node.get("version").textValue();
    int datafileVersion = Integer.parseInt(version);
    List<Group> groups = mapper.readValue(node.get("groups").toString(), new TypeReference<List<Group>>() {
    });
    List<Experiment> experiments = mapper.readValue(node.get("experiments").toString(), new TypeReference<List<Experiment>>() {
    });
    List<Attribute> attributes;
    attributes = mapper.readValue(node.get("attributes").toString(), new TypeReference<List<Attribute>>() {
    });
    List<EventType> events = mapper.readValue(node.get("events").toString(), new TypeReference<List<EventType>>() {
    });
    List<Audience> audiences = mapper.readValue(node.get("audiences").toString(), new TypeReference<List<Audience>>() {
    });
    boolean anonymizeIP = false;
    List<LiveVariable> liveVariables = null;
    if (datafileVersion >= Integer.parseInt(ProjectConfig.Version.V3.toString())) {
        liveVariables = mapper.readValue(node.get("variables").toString(), new TypeReference<List<LiveVariable>>() {
        });
        anonymizeIP = node.get("anonymizeIP").asBoolean();
    }
    List<FeatureFlag> featureFlags = null;
    List<Rollout> rollouts = null;
    if (datafileVersion >= Integer.parseInt(ProjectConfig.Version.V4.toString())) {
        featureFlags = mapper.readValue(node.get("featureFlags").toString(), new TypeReference<List<FeatureFlag>>() {
        });
        rollouts = mapper.readValue(node.get("rollouts").toString(), new TypeReference<List<Rollout>>() {
        });
    }
    return new ProjectConfig(accountId, anonymizeIP, projectId, revision, version, attributes, audiences, events, experiments, featureFlags, groups, liveVariables, rollouts);
}
Also used : Group(com.optimizely.ab.config.Group) Attribute(com.optimizely.ab.config.Attribute) EventType(com.optimizely.ab.config.EventType) FeatureFlag(com.optimizely.ab.config.FeatureFlag) JsonNode(com.fasterxml.jackson.databind.JsonNode) List(java.util.List) TypeReference(com.fasterxml.jackson.core.type.TypeReference) Rollout(com.optimizely.ab.config.Rollout) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) Audience(com.optimizely.ab.config.audience.Audience) Experiment(com.optimizely.ab.config.Experiment) LiveVariable(com.optimizely.ab.config.LiveVariable) ProjectConfig(com.optimizely.ab.config.ProjectConfig) SimpleModule(com.fasterxml.jackson.databind.module.SimpleModule)

Example 5 with LiveVariable

use of com.optimizely.ab.config.LiveVariable in project java-sdk by optimizely.

the class JsonSimpleConfigParser method parseLiveVariables.

private List<LiveVariable> parseLiveVariables(JSONArray liveVariablesJson) {
    List<LiveVariable> liveVariables = new ArrayList<LiveVariable>(liveVariablesJson.size());
    for (Object obj : liveVariablesJson) {
        JSONObject liveVariableObject = (JSONObject) obj;
        String id = (String) liveVariableObject.get("id");
        String key = (String) liveVariableObject.get("key");
        String defaultValue = (String) liveVariableObject.get("defaultValue");
        VariableType type = VariableType.fromString((String) liveVariableObject.get("type"));
        VariableStatus status = VariableStatus.fromString((String) liveVariableObject.get("status"));
        liveVariables.add(new LiveVariable(id, key, defaultValue, status, type));
    }
    return liveVariables;
}
Also used : VariableStatus(com.optimizely.ab.config.LiveVariable.VariableStatus) JSONObject(org.json.simple.JSONObject) VariableType(com.optimizely.ab.config.LiveVariable.VariableType) ArrayList(java.util.ArrayList) JSONObject(org.json.simple.JSONObject) LiveVariable(com.optimizely.ab.config.LiveVariable)

Aggregations

LiveVariable (com.optimizely.ab.config.LiveVariable)12 FeatureFlag (com.optimizely.ab.config.FeatureFlag)8 Experiment (com.optimizely.ab.config.Experiment)5 ArrayList (java.util.ArrayList)5 Attribute (com.optimizely.ab.config.Attribute)4 EventType (com.optimizely.ab.config.EventType)4 Group (com.optimizely.ab.config.Group)4 ProjectConfig (com.optimizely.ab.config.ProjectConfig)4 Rollout (com.optimizely.ab.config.Rollout)4 Audience (com.optimizely.ab.config.audience.Audience)4 List (java.util.List)3 JSONObject (org.json.JSONObject)3 JSONObject (org.json.simple.JSONObject)3 FeatureDecision (com.optimizely.ab.bucketing.FeatureDecision)2 VariableStatus (com.optimizely.ab.config.LiveVariable.VariableStatus)2 VariableType (com.optimizely.ab.config.LiveVariable.VariableType)2 UserAttribute (com.optimizely.ab.config.audience.UserAttribute)2 Type (java.lang.reflect.Type)2 JSONArray (org.json.simple.JSONArray)2 Test (org.junit.Test)2