in src/main/java/com/amazonaws/services/cloudtrail/processinglibrary/serializer/AbstractEventSerializer.java [119:182]
public CloudTrailEvent getNextEvent() throws IOException {
CloudTrailEventData eventData = new CloudTrailEventData();
String key;
/* Get next CloudTrailEvent event from log file. When failed to parse a event,
* IOException will be thrown. In this case, the charEnd index the place we
* encountered parsing error. */
// return the starting location of the current token; that is, position of the first character
// from input that starts the current token
int charStart = (int) jsonParser.getTokenLocation().getCharOffset();
while(jsonParser.nextToken() != JsonToken.END_OBJECT) {
key = jsonParser.getCurrentName();
switch (key) {
case "eventVersion":
String eventVersion = jsonParser.nextTextValue();
if (Double.parseDouble(eventVersion) > SUPPORTED_EVENT_VERSION) {
logger.debug(String.format("EventVersion %s is not supported by CloudTrail.", eventVersion));
}
eventData.add(key, eventVersion);
break;
case "userIdentity":
this.parseUserIdentity(eventData);
break;
case "eventTime":
eventData.add(CloudTrailEventField.eventTime.name(), convertToDate(jsonParser.nextTextValue()));
break;
case "eventID":
eventData.add(key, convertToUUID(jsonParser.nextTextValue()));
break;
case "readOnly":
this.parseReadOnly(eventData);
break;
case "resources":
this.parseResources(eventData);
break;
case "managementEvent":
this.parseManagementEvent(eventData);
break;
case "insightDetails":
this.parseInsightDetails(eventData);
break;
case "addendum":
this.parseAddendum(eventData);
break;
case "tlsDetails":
this.parseTlsDetails(eventData);
break;
default:
eventData.add(key, parseDefaultValue(key));
break;
}
}
this.setAccountId(eventData);
// event's last character position in the log file.
int charEnd = (int) jsonParser.getTokenLocation().getCharOffset();
CloudTrailEventMetadata metaData = getMetadata(charStart, charEnd);
return new CloudTrailEvent(eventData, metaData);
}