Search in sources :

Example 1 with EventType

use of com.optimizely.ab.config.EventType 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 EventType

use of com.optimizely.ab.config.EventType 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 3 with EventType

use of com.optimizely.ab.config.EventType 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 4 with EventType

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

the class JsonConfigParser method parseEvents.

private List<EventType> parseEvents(JSONArray eventJson) {
    List<EventType> events = new ArrayList<EventType>(eventJson.length());
    for (Object obj : eventJson) {
        JSONObject eventObject = (JSONObject) obj;
        List<String> experimentIds = parseExperimentIds(eventObject.getJSONArray("experimentIds"));
        String id = eventObject.getString("id");
        String key = eventObject.getString("key");
        events.add(new EventType(id, key, experimentIds));
    }
    return events;
}
Also used : JSONObject(org.json.JSONObject) EventType(com.optimizely.ab.config.EventType) ArrayList(java.util.ArrayList) JSONObject(org.json.JSONObject)

Example 5 with EventType

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

the class JsonSimpleConfigParser method parseEvents.

private List<EventType> parseEvents(JSONArray eventJson) {
    List<EventType> events = new ArrayList<EventType>(eventJson.size());
    for (Object obj : eventJson) {
        JSONObject eventObject = (JSONObject) obj;
        JSONArray experimentIdsJson = (JSONArray) eventObject.get("experimentIds");
        List<String> experimentIds = parseExperimentIds(experimentIdsJson);
        String id = (String) eventObject.get("id");
        String key = (String) eventObject.get("key");
        events.add(new EventType(id, key, experimentIds));
    }
    return events;
}
Also used : JSONObject(org.json.simple.JSONObject) EventType(com.optimizely.ab.config.EventType) ArrayList(java.util.ArrayList) JSONArray(org.json.simple.JSONArray) JSONObject(org.json.simple.JSONObject)

Aggregations

EventType (com.optimizely.ab.config.EventType)37 Experiment (com.optimizely.ab.config.Experiment)29 LogEvent (com.optimizely.ab.event.LogEvent)29 Test (org.junit.Test)28 Variation (com.optimizely.ab.config.Variation)22 HashMap (java.util.HashMap)18 Matchers.anyString (org.mockito.Matchers.anyString)16 EventBuilder (com.optimizely.ab.event.internal.EventBuilder)14 Attribute (com.optimizely.ab.config.Attribute)12 Map (java.util.Map)10 ImmutableMap (com.google.common.collect.ImmutableMap)9 Bucketer (com.optimizely.ab.bucketing.Bucketer)9 EventBuilderTest.createExperimentVariationMap (com.optimizely.ab.event.internal.EventBuilderTest.createExperimentVariationMap)9 DecisionService (com.optimizely.ab.bucketing.DecisionService)8 ProjectConfig (com.optimizely.ab.config.ProjectConfig)8 NoOpErrorHandler (com.optimizely.ab.error.NoOpErrorHandler)7 EventBatch (com.optimizely.ab.event.internal.payload.EventBatch)7 UserProfileService (com.optimizely.ab.bucketing.UserProfileService)6 ArrayList (java.util.ArrayList)6 ErrorHandler (com.optimizely.ab.error.ErrorHandler)5