use of com.optimizely.ab.config.Attribute 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.Attribute 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.Attribute 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.Attribute in project java-sdk by optimizely.
the class JsonConfigParser method parseAttributes.
private List<Attribute> parseAttributes(JSONArray attributeJson) {
List<Attribute> attributes = new ArrayList<Attribute>(attributeJson.length());
for (Object obj : attributeJson) {
JSONObject attributeObject = (JSONObject) obj;
String id = attributeObject.getString("id");
String key = attributeObject.getString("key");
attributes.add(new Attribute(id, key, attributeObject.optString("segmentId", null)));
}
return attributes;
}
use of com.optimizely.ab.config.Attribute in project java-sdk by optimizely.
the class EventBuilderTest method createConversionEventAndroidClientEngineClientVersion.
/**
* Verify that supplying {@link EventBuilder} with a custom client engine and client version results in conversion
* events being sent with the overriden values.
*/
@Test
public void createConversionEventAndroidClientEngineClientVersion() throws Exception {
EventBuilder builder = new EventBuilder(EventBatch.ClientEngine.ANDROID_SDK, "0.0.0");
Attribute attribute = validProjectConfig.getAttributes().get(0);
EventType eventType = validProjectConfig.getEventTypes().get(0);
Bucketer mockBucketAlgorithm = mock(Bucketer.class);
for (Experiment experiment : validProjectConfig.getExperiments()) {
when(mockBucketAlgorithm.bucket(experiment, userId)).thenReturn(experiment.getVariations().get(0));
}
DecisionService decisionService = new DecisionService(mockBucketAlgorithm, mock(ErrorHandler.class), validProjectConfig, mock(UserProfileService.class));
Map<String, String> attributeMap = Collections.singletonMap(attribute.getKey(), "value");
Map<Experiment, Variation> experimentVariationMap = createExperimentVariationMap(validProjectConfig, decisionService, eventType.getKey(), userId, attributeMap);
LogEvent conversionEvent = builder.createConversionEvent(validProjectConfig, experimentVariationMap, userId, eventType.getId(), eventType.getKey(), attributeMap, Collections.<String, Object>emptyMap());
EventBatch conversion = gson.fromJson(conversionEvent.getBody(), EventBatch.class);
assertThat(conversion.getClientName(), is(EventBatch.ClientEngine.ANDROID_SDK.getClientEngineValue()));
assertThat(conversion.getClientVersion(), is("0.0.0"));
}
Aggregations