use of com.optimizely.ab.config.Group 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);
}
}
use of com.optimizely.ab.config.Group 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);
}
}
use of com.optimizely.ab.config.Group in project java-sdk by optimizely.
the class JsonSimpleConfigParser method parseGroups.
private List<Group> parseGroups(JSONArray groupJson) {
List<Group> groups = new ArrayList<Group>(groupJson.size());
for (Object obj : groupJson) {
JSONObject groupObject = (JSONObject) obj;
String id = (String) groupObject.get("id");
String policy = (String) groupObject.get("policy");
List<Experiment> experiments = parseExperiments((JSONArray) groupObject.get("experiments"), id);
List<TrafficAllocation> trafficAllocations = parseTrafficAllocation((JSONArray) groupObject.get("trafficAllocation"));
groups.add(new Group(id, policy, experiments, trafficAllocations));
}
return groups;
}
use of com.optimizely.ab.config.Group 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);
}
use of com.optimizely.ab.config.Group in project java-sdk by optimizely.
the class JsonConfigParser method parseGroups.
private List<Group> parseGroups(JSONArray groupJson) {
List<Group> groups = new ArrayList<Group>(groupJson.length());
for (Object obj : groupJson) {
JSONObject groupObject = (JSONObject) obj;
String id = groupObject.getString("id");
String policy = groupObject.getString("policy");
List<Experiment> experiments = parseExperiments(groupObject.getJSONArray("experiments"), id);
List<TrafficAllocation> trafficAllocations = parseTrafficAllocation(groupObject.getJSONArray("trafficAllocation"));
groups.add(new Group(id, policy, experiments, trafficAllocations));
}
return groups;
}
Aggregations