in aws-lambda-java-serialization/src/main/java/com/amazonaws/services/lambda/runtime/serialization/events/serializers/S3EventSerializer.java [278:304]
private <A, B, C, D, E, F, G> A deserializeEventNotificationRecord(JSONObject jsonObject,
Class<A> eventNotificationRecordClass,
Class<B> s3EntityClass,
Class<C> s3BucketClass,
Class<D> s3ObjectClass,
Class<E> requestParametersClass,
Class<F> responseElementsClass,
Class<G> userIdentityClass) {
if (jsonObject == null) {
jsonObject = new JSONObject();
}
String awsRegion = jsonObject.optString("awsRegion");
String eventName = jsonObject.optString("eventName");
String eventSource = jsonObject.optString("eventSource");
String eventTime = jsonObject.optString("eventTime");
String eventVersion = jsonObject.optString("eventVersion");
E requestParameters = deserializeRequestParameters(jsonObject.optJSONObject("requestParameters"), requestParametersClass);
F responseElements = deserializeResponseElements(jsonObject.optJSONObject("responseElements"), responseElementsClass);
B s3 = deserializeS3Entity(jsonObject.optJSONObject("s3"), s3EntityClass, s3BucketClass, s3ObjectClass, userIdentityClass);
G userIdentity = deserializeUserIdentity(jsonObject.optJSONObject("userIdentity"), userIdentityClass);
Functions.R9<A, String, String, String, String, String, E, F, B, G> constructor =
ReflectUtil.loadConstuctor9(eventNotificationRecordClass, true, String.class, String.class,
String.class, String.class, String.class, requestParametersClass, responseElementsClass,
s3EntityClass, userIdentityClass);
return constructor.call(awsRegion, eventName, eventSource, eventTime, eventVersion, requestParameters,
responseElements, s3, userIdentity);
}