From 50ff815dd98790084d3b6084a2a9493e8dac0191 Mon Sep 17 00:00:00 2001 From: msailes Date: Tue, 30 Mar 2021 13:26:01 +0100 Subject: [PATCH 01/28] GraalVM support for - aws-lambda-java-core - aws-lambda-java-serialization --- .../aws-lambda-java-core/native-image.properties | 1 + .../aws-lambda-java-core/reflect-config.json | 13 +++++++++++++ .../native-image.properties | 1 + .../reflect-config.json | 16 ++++++++++++++++ 4 files changed, 31 insertions(+) create mode 100644 aws-lambda-java-core/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-core/native-image.properties create mode 100644 aws-lambda-java-core/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-core/reflect-config.json create mode 100644 aws-lambda-java-serialization/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-serialization/native-image.properties create mode 100644 aws-lambda-java-serialization/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-serialization/reflect-config.json diff --git a/aws-lambda-java-core/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-core/native-image.properties b/aws-lambda-java-core/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-core/native-image.properties new file mode 100644 index 00000000..462b22b2 --- /dev/null +++ b/aws-lambda-java-core/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-core/native-image.properties @@ -0,0 +1 @@ +Args = -H:ReflectionConfigurationResources=${.}/reflect-config.json \ No newline at end of file diff --git a/aws-lambda-java-core/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-core/reflect-config.json b/aws-lambda-java-core/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-core/reflect-config.json new file mode 100644 index 00000000..29ac805b --- /dev/null +++ b/aws-lambda-java-core/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-core/reflect-config.json @@ -0,0 +1,13 @@ +[ +{ + "name":"com.amazonaws.services.lambda.runtime.LambdaRuntime", + "methods":[{"name":"","parameterTypes":[] }], + "fields":[{"name":"logger"}], + "allPublicMethods":true +}, +{ + "name":"com.amazonaws.services.lambda.runtime.LambdaRuntimeInternal", + "methods":[{"name":"","parameterTypes":[] }], + "allPublicMethods":true +} +] diff --git a/aws-lambda-java-serialization/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-serialization/native-image.properties b/aws-lambda-java-serialization/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-serialization/native-image.properties new file mode 100644 index 00000000..462b22b2 --- /dev/null +++ b/aws-lambda-java-serialization/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-serialization/native-image.properties @@ -0,0 +1 @@ +Args = -H:ReflectionConfigurationResources=${.}/reflect-config.json \ No newline at end of file diff --git a/aws-lambda-java-serialization/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-serialization/reflect-config.json b/aws-lambda-java-serialization/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-serialization/reflect-config.json new file mode 100644 index 00000000..82168100 --- /dev/null +++ b/aws-lambda-java-serialization/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-serialization/reflect-config.json @@ -0,0 +1,16 @@ +[ + { + "name":"com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.deser.Deserializers[]" + }, + { + "name":"com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.ext.Java7HandlersImpl", + "methods":[{"name":"","parameterTypes":[] }] + }, + { + "name":"com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.ext.Java7SupportImpl", + "methods":[{"name":"","parameterTypes":[] }] + }, + { + "name":"com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.ser.Serializers[]" + } +] From ce27b2ec13c04b877a9a5f2e0c8489a923c267fd Mon Sep 17 00:00:00 2001 From: msailes Date: Wed, 31 Mar 2021 10:44:53 +0100 Subject: [PATCH 02/28] native-image support for the events lib --- .../native-image.properties | 1 + .../reflect-config.json | 741 ++++++++++++++++++ 2 files changed, 742 insertions(+) create mode 100644 aws-lambda-java-events/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-events/native-image.properties create mode 100644 aws-lambda-java-events/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-events/reflect-config.json diff --git a/aws-lambda-java-events/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-events/native-image.properties b/aws-lambda-java-events/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-events/native-image.properties new file mode 100644 index 00000000..462b22b2 --- /dev/null +++ b/aws-lambda-java-events/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-events/native-image.properties @@ -0,0 +1 @@ +Args = -H:ReflectionConfigurationResources=${.}/reflect-config.json \ No newline at end of file diff --git a/aws-lambda-java-events/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-events/reflect-config.json b/aws-lambda-java-events/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-events/reflect-config.json new file mode 100644 index 00000000..1751804b --- /dev/null +++ b/aws-lambda-java-events/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-events/reflect-config.json @@ -0,0 +1,741 @@ +[ { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisTimeWindowEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisTimeWindowEvent$KinesisTimeWindowEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.LambdaDestinationEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.LambdaDestinationEvent$LambdaDestinationEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.LambdaDestinationEvent$RequestContext", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoEvent$DatasetRecord", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsInputPreprocessingResponse", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsInputPreprocessingResponse$Record", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsInputPreprocessingResponse$Result", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayCustomAuthorizerEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayCustomAuthorizerEvent$APIGatewayCustomAuthorizerEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayCustomAuthorizerEvent$Identity", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayCustomAuthorizerEvent$RequestContext", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent$RequestIdentity", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent$ProxyRequestContext", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsStreamsInputPreprocessingEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsStreamsInputPreprocessingEvent$Record", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsOutputDeliveryEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsOutputDeliveryEvent$Record", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPResponse", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPResponse$APIGatewayV2HTTPResponseBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.S3Event", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisEvent$KinesisEventRecord", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisEvent$Record", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2WebSocketEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2WebSocketEvent$RequestContext", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2WebSocketEvent$RequestIdentity", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.TimeWindowEventResponse", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.TimeWindowEventResponse$TimeWindowEventResponseBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.TimeWindowEventResponse$BatchItemFailure", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsOutputDeliveryResponse", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsOutputDeliveryResponse$Record", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsOutputDeliveryResponse$Result", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ApplicationLoadBalancerRequestEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ApplicationLoadBalancerRequestEvent$RequestContext", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ApplicationLoadBalancerRequestEvent$Elb", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchResponse", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchResponse$S3BatchResponseBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchResponse$ResultCode", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchResponse$Result", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CodeCommitEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CodeCommitEvent$Record", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CodeCommitEvent$CodeCommit", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CodeCommitEvent$Reference", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.SimpleIAMPolicyResponse", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.SimpleIAMPolicyResponse$SimpleIAMPolicyResponseBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.SQSEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.SQSEvent$SQSMessage", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.SQSEvent$MessageAttribute", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.kinesis.EncryptionType", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.kinesis.Record", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$S3EventNotificationRecord", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$ResponseElementsEntity", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$RequestParametersEntity", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$S3Entity", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$S3ObjectEntity", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$S3BucketEntity", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$UserIdentityEntity", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.dynamodb.StreamViewType", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.dynamodb.AttributeValue", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.dynamodb.OperationType", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.dynamodb.Identity", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.dynamodb.StreamRecord", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.dynamodb.Record", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.TimeWindow", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.TimeWindow$TimeWindowBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.LexEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.LexEvent$CurrentIntent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.LexEvent$Bot", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.SNSEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.SNSEvent$SNSRecord", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.SNSEvent$SNS", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.SNSEvent$MessageAttribute", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2CustomAuthorizerEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2CustomAuthorizerEvent$APIGatewayV2CustomAuthorizerEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2CustomAuthorizerEvent$Http", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2CustomAuthorizerEvent$RequestContext", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsFirehoseInputPreprocessingEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsFirehoseInputPreprocessingEvent$Record", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.DynamodbEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.DynamodbEvent$DynamodbStreamRecord", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.SecretsManagerRotationEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.SecretsManagerRotationEvent$SecretsManagerRotationEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchEvent$S3BatchEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchEvent$Task", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchEvent$Job", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2ProxyResponseEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ScheduledEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent$Record", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent$CF", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent$Response", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent$Request", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent$Config", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent$Header", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2WebSocketResponse", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponse", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponse$IamPolicyResponseBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponse$Statement", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponse$PolicyDocument", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponseV1", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponseV1$IamPolicyResponseV1Builder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponseV1$Statement", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponseV1$PolicyDocument", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ApplicationLoadBalancerResponseEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2ProxyRequestEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CloudWatchLogsEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CloudWatchLogsEvent$AWSLogs", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent$S3ObjectLambdaEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent$UserIdentity", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent$UserRequest", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent$Configuration", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent$GetObjectContext", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.StreamsEventResponse", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.StreamsEventResponse$StreamsEventResponseBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.StreamsEventResponse$BatchItemFailure", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.DynamodbTimeWindowEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.DynamodbTimeWindowEvent$DynamodbTimeWindowEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KafkaEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KafkaEvent$KafkaEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KafkaEvent$TopicPartition", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KafkaEvent$KafkaEventRecord", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.IoTButtonEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CloudFormationCustomResourceEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CloudFormationCustomResourceEvent$CloudFormationCustomResourceEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ConfigEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPEvent$APIGatewayV2HTTPEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPEvent$RequestContext", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ConnectEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ConnectEvent$ConnectEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ConnectEvent$SystemEndpoint", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ConnectEvent$CustomerEndpoint", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ConnectEvent$ContactData", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ConnectEvent$Details", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ActiveMQEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ActiveMQEvent$ActiveMQEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ActiveMQEvent$Destination", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ActiveMQEvent$ActiveMQMessage", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisFirehoseEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisFirehoseEvent$Record", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +} ] \ No newline at end of file From 9e11dabd0d77e6586f24e89b82d140c3a06ea3b3 Mon Sep 17 00:00:00 2001 From: msailes Date: Thu, 1 Apr 2021 09:13:53 +0100 Subject: [PATCH 03/28] reflect-config.json not needed for events lib. --- .../native-image.properties | 1 - .../reflect-config.json | 741 ------------------ 2 files changed, 742 deletions(-) delete mode 100644 aws-lambda-java-events/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-events/native-image.properties delete mode 100644 aws-lambda-java-events/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-events/reflect-config.json diff --git a/aws-lambda-java-events/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-events/native-image.properties b/aws-lambda-java-events/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-events/native-image.properties deleted file mode 100644 index 462b22b2..00000000 --- a/aws-lambda-java-events/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-events/native-image.properties +++ /dev/null @@ -1 +0,0 @@ -Args = -H:ReflectionConfigurationResources=${.}/reflect-config.json \ No newline at end of file diff --git a/aws-lambda-java-events/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-events/reflect-config.json b/aws-lambda-java-events/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-events/reflect-config.json deleted file mode 100644 index 1751804b..00000000 --- a/aws-lambda-java-events/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-events/reflect-config.json +++ /dev/null @@ -1,741 +0,0 @@ -[ { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisTimeWindowEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisTimeWindowEvent$KinesisTimeWindowEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.LambdaDestinationEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.LambdaDestinationEvent$LambdaDestinationEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.LambdaDestinationEvent$RequestContext", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoEvent$DatasetRecord", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsInputPreprocessingResponse", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsInputPreprocessingResponse$Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsInputPreprocessingResponse$Result", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayCustomAuthorizerEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayCustomAuthorizerEvent$APIGatewayCustomAuthorizerEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayCustomAuthorizerEvent$Identity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayCustomAuthorizerEvent$RequestContext", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent$RequestIdentity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent$ProxyRequestContext", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsStreamsInputPreprocessingEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsStreamsInputPreprocessingEvent$Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsOutputDeliveryEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsOutputDeliveryEvent$Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPResponse", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPResponse$APIGatewayV2HTTPResponseBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3Event", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisEvent$KinesisEventRecord", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisEvent$Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2WebSocketEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2WebSocketEvent$RequestContext", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2WebSocketEvent$RequestIdentity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.TimeWindowEventResponse", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.TimeWindowEventResponse$TimeWindowEventResponseBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.TimeWindowEventResponse$BatchItemFailure", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsOutputDeliveryResponse", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsOutputDeliveryResponse$Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsOutputDeliveryResponse$Result", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ApplicationLoadBalancerRequestEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ApplicationLoadBalancerRequestEvent$RequestContext", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ApplicationLoadBalancerRequestEvent$Elb", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchResponse", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchResponse$S3BatchResponseBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchResponse$ResultCode", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchResponse$Result", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CodeCommitEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CodeCommitEvent$Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CodeCommitEvent$CodeCommit", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CodeCommitEvent$Reference", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SimpleIAMPolicyResponse", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SimpleIAMPolicyResponse$SimpleIAMPolicyResponseBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SQSEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SQSEvent$SQSMessage", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SQSEvent$MessageAttribute", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.kinesis.EncryptionType", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.kinesis.Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$S3EventNotificationRecord", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$ResponseElementsEntity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$RequestParametersEntity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$S3Entity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$S3ObjectEntity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$S3BucketEntity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$UserIdentityEntity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.dynamodb.StreamViewType", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.dynamodb.AttributeValue", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.dynamodb.OperationType", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.dynamodb.Identity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.dynamodb.StreamRecord", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.dynamodb.Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.TimeWindow", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.TimeWindow$TimeWindowBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.LexEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.LexEvent$CurrentIntent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.LexEvent$Bot", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SNSEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SNSEvent$SNSRecord", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SNSEvent$SNS", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SNSEvent$MessageAttribute", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2CustomAuthorizerEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2CustomAuthorizerEvent$APIGatewayV2CustomAuthorizerEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2CustomAuthorizerEvent$Http", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2CustomAuthorizerEvent$RequestContext", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsFirehoseInputPreprocessingEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsFirehoseInputPreprocessingEvent$Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.DynamodbEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.DynamodbEvent$DynamodbStreamRecord", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SecretsManagerRotationEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SecretsManagerRotationEvent$SecretsManagerRotationEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchEvent$S3BatchEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchEvent$Task", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchEvent$Job", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2ProxyResponseEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ScheduledEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent$Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent$CF", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent$Response", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent$Request", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent$Config", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent$Header", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2WebSocketResponse", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponse", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponse$IamPolicyResponseBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponse$Statement", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponse$PolicyDocument", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponseV1", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponseV1$IamPolicyResponseV1Builder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponseV1$Statement", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponseV1$PolicyDocument", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ApplicationLoadBalancerResponseEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2ProxyRequestEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudWatchLogsEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudWatchLogsEvent$AWSLogs", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent$S3ObjectLambdaEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent$UserIdentity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent$UserRequest", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent$Configuration", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent$GetObjectContext", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.StreamsEventResponse", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.StreamsEventResponse$StreamsEventResponseBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.StreamsEventResponse$BatchItemFailure", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.DynamodbTimeWindowEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.DynamodbTimeWindowEvent$DynamodbTimeWindowEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KafkaEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KafkaEvent$KafkaEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KafkaEvent$TopicPartition", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KafkaEvent$KafkaEventRecord", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.IoTButtonEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudFormationCustomResourceEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudFormationCustomResourceEvent$CloudFormationCustomResourceEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ConfigEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPEvent$APIGatewayV2HTTPEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPEvent$RequestContext", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ConnectEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ConnectEvent$ConnectEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ConnectEvent$SystemEndpoint", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ConnectEvent$CustomerEndpoint", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ConnectEvent$ContactData", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ConnectEvent$Details", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ActiveMQEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ActiveMQEvent$ActiveMQEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ActiveMQEvent$Destination", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ActiveMQEvent$ActiveMQMessage", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisFirehoseEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisFirehoseEvent$Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -} ] \ No newline at end of file From 71279ee474ba8f2f8e79400339d795ede200170b Mon Sep 17 00:00:00 2001 From: msailes Date: Fri, 4 Jun 2021 13:20:40 +0100 Subject: [PATCH 04/28] added joda datetime --- .../aws-lambda-java-serialization/reflect-config.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/aws-lambda-java-serialization/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-serialization/reflect-config.json b/aws-lambda-java-serialization/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-serialization/reflect-config.json index 82168100..07a1f730 100644 --- a/aws-lambda-java-serialization/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-serialization/reflect-config.json +++ b/aws-lambda-java-serialization/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-serialization/reflect-config.json @@ -12,5 +12,11 @@ }, { "name":"com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.ser.Serializers[]" + }, + { + "name": "org.joda.time.DateTime", + "allDeclaredFields": true, + "allDeclaredMethods": true, + "allDeclaredConstructors": true } ] From 567d59cea0219d7c2f7f12e6637aa0402a4dc9d0 Mon Sep 17 00:00:00 2001 From: msailes Date: Sat, 5 Jun 2021 17:29:14 +0100 Subject: [PATCH 05/28] Adding GraalVM reflect-config.json and tests to catch any regressions. --- aws-lambda-java-events/pom.xml | 12 + .../reflect-config.json | 961 ++++++++++++++++++ .../events/graalvm/GraalVMConfigMaker.java | 85 ++ .../events/graalvm/GraalVMSupportTest.java | 39 + .../events/graalvm/ReflectConfigEntry.java | 66 ++ 5 files changed, 1163 insertions(+) create mode 100644 aws-lambda-java-events/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/reflect-config.json create mode 100644 aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/GraalVMConfigMaker.java create mode 100644 aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/GraalVMSupportTest.java create mode 100644 aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/ReflectConfigEntry.java diff --git a/aws-lambda-java-events/pom.xml b/aws-lambda-java-events/pom.xml index b514e03d..1ecebf22 100644 --- a/aws-lambda-java-events/pom.xml +++ b/aws-lambda-java-events/pom.xml @@ -68,6 +68,18 @@ 2.22.0 test + + commons-io + commons-io + 2.7 + test + + + com.google.guava + guava + 30.1.1-jre + test + org.projectlombok diff --git a/aws-lambda-java-events/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/reflect-config.json b/aws-lambda-java-events/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/reflect-config.json new file mode 100644 index 00000000..75ad6f51 --- /dev/null +++ b/aws-lambda-java-events/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/reflect-config.json @@ -0,0 +1,961 @@ +[ { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisTimeWindowEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisTimeWindowEvent$KinesisTimeWindowEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.LambdaDestinationEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.LambdaDestinationEvent$LambdaDestinationEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.LambdaDestinationEvent$RequestContext", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoEvent$DatasetRecord", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsInputPreprocessingResponse", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsInputPreprocessingResponse$Record", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsInputPreprocessingResponse$Result", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayCustomAuthorizerEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayCustomAuthorizerEvent$APIGatewayCustomAuthorizerEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayCustomAuthorizerEvent$Identity", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayCustomAuthorizerEvent$RequestContext", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent$RequestIdentity", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent$ProxyRequestContext", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsStreamsInputPreprocessingEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsStreamsInputPreprocessingEvent$Record", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolVerifyAuthChallengeResponseEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolVerifyAuthChallengeResponseEvent$CognitoUserPoolVerifyAuthChallengeResponseEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolVerifyAuthChallengeResponseEvent$Response", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolVerifyAuthChallengeResponseEvent$Request", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsOutputDeliveryEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsOutputDeliveryEvent$Record", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPResponse", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPResponse$APIGatewayV2HTTPResponseBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.S3Event", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisEvent$KinesisEventRecord", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisEvent$Record", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2WebSocketEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2WebSocketEvent$RequestContext", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2WebSocketEvent$RequestIdentity", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolCustomMessageEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolCustomMessageEvent$CognitoUserPoolCustomMessageEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolCustomMessageEvent$Response", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolCustomMessageEvent$Request", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.TimeWindowEventResponse", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.TimeWindowEventResponse$TimeWindowEventResponseBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.TimeWindowEventResponse$BatchItemFailure", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsOutputDeliveryResponse", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsOutputDeliveryResponse$Record", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsOutputDeliveryResponse$Result", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ApplicationLoadBalancerRequestEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ApplicationLoadBalancerRequestEvent$RequestContext", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ApplicationLoadBalancerRequestEvent$Elb", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPostConfirmationEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPostConfirmationEvent$CognitoUserPoolPostConfirmationEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPostConfirmationEvent$Request", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchResponse", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchResponse$S3BatchResponseBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchResponse$ResultCode", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchResponse$Result", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CodeCommitEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CodeCommitEvent$Record", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CodeCommitEvent$CodeCommit", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CodeCommitEvent$Reference", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.SimpleIAMPolicyResponse", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.SimpleIAMPolicyResponse$SimpleIAMPolicyResponseBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreTokenGenerationEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreTokenGenerationEvent$CognitoUserPoolPreTokenGenerationEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreTokenGenerationEvent$ClaimsOverrideDetails", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreTokenGenerationEvent$Response", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreTokenGenerationEvent$GroupConfiguration", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreTokenGenerationEvent$Request", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolDefineAuthChallengeEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolDefineAuthChallengeEvent$CognitoUserPoolDefineAuthChallengeEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolDefineAuthChallengeEvent$Response", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolDefineAuthChallengeEvent$ChallengeResult", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolDefineAuthChallengeEvent$Request", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.SQSEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.SQSEvent$SQSMessage", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.SQSEvent$MessageAttribute", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.kinesis.EncryptionType", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.kinesis.Record", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$S3EventNotificationRecord", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$ResponseElementsEntity", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$RequestParametersEntity", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$S3Entity", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$S3ObjectEntity", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$S3BucketEntity", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$UserIdentityEntity", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.dynamodb.StreamViewType", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.dynamodb.AttributeValue", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.dynamodb.OperationType", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.dynamodb.Identity", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.dynamodb.StreamRecord", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.dynamodb.Record", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.TimeWindow", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.models.TimeWindow$TimeWindowBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.LexEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.LexEvent$CurrentIntent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.LexEvent$Bot", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.SNSEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.SNSEvent$SNSRecord", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.SNSEvent$SNS", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.SNSEvent$MessageAttribute", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2CustomAuthorizerEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2CustomAuthorizerEvent$APIGatewayV2CustomAuthorizerEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2CustomAuthorizerEvent$Http", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2CustomAuthorizerEvent$RequestContext", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolEvent$CallerContext", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolEvent$Request", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsFirehoseInputPreprocessingEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsFirehoseInputPreprocessingEvent$Record", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPostAuthenticationEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPostAuthenticationEvent$CognitoUserPoolPostAuthenticationEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPostAuthenticationEvent$Request", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.DynamodbEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.DynamodbEvent$DynamodbStreamRecord", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.SecretsManagerRotationEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.SecretsManagerRotationEvent$SecretsManagerRotationEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchEvent$S3BatchEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchEvent$Task", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchEvent$Job", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2ProxyResponseEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ScheduledEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent$Record", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent$CF", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent$Response", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent$Request", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent$Config", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent$Header", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreSignUpEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreSignUpEvent$CognitoUserPoolPreSignUpEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreSignUpEvent$Response", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreSignUpEvent$Request", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2WebSocketResponse", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponse", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponse$IamPolicyResponseBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponse$Statement", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponse$PolicyDocument", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponseV1", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponseV1$IamPolicyResponseV1Builder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponseV1$Statement", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponseV1$PolicyDocument", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ApplicationLoadBalancerResponseEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2ProxyRequestEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CloudWatchLogsEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CloudWatchLogsEvent$AWSLogs", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolCreateAuthChallengeEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolCreateAuthChallengeEvent$CognitoUserPoolCreateAuthChallengeEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolCreateAuthChallengeEvent$Response", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolCreateAuthChallengeEvent$ChallengeResult", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolCreateAuthChallengeEvent$Request", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent$S3ObjectLambdaEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent$UserIdentity", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent$UserRequest", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent$Configuration", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent$GetObjectContext", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.StreamsEventResponse", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.StreamsEventResponse$StreamsEventResponseBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.StreamsEventResponse$BatchItemFailure", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.DynamodbTimeWindowEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.DynamodbTimeWindowEvent$DynamodbTimeWindowEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreAuthenticationEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreAuthenticationEvent$CognitoUserPoolPreAuthenticationEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreAuthenticationEvent$Request", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KafkaEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KafkaEvent$KafkaEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KafkaEvent$TopicPartition", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KafkaEvent$KafkaEventRecord", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.IoTButtonEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolMigrateUserEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolMigrateUserEvent$CognitoUserPoolMigrateUserEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolMigrateUserEvent$Response", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolMigrateUserEvent$Request", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CloudFormationCustomResourceEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.CloudFormationCustomResourceEvent$CloudFormationCustomResourceEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ConfigEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPEvent$APIGatewayV2HTTPEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPEvent$RequestContext", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ConnectEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ConnectEvent$ConnectEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ConnectEvent$SystemEndpoint", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ConnectEvent$CustomerEndpoint", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ConnectEvent$ContactData", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ConnectEvent$Details", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ActiveMQEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ActiveMQEvent$ActiveMQEventBuilder", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ActiveMQEvent$Destination", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.ActiveMQEvent$ActiveMQMessage", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisFirehoseEvent", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +}, { + "name" : "com.amazonaws.services.lambda.runtime.events.KinesisFirehoseEvent$Record", + "allDeclaredFields" : true, + "allDeclaredMethods" : true, + "allDeclaredConstructors" : true +} ] \ No newline at end of file diff --git a/aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/GraalVMConfigMaker.java b/aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/GraalVMConfigMaker.java new file mode 100644 index 00000000..007558f4 --- /dev/null +++ b/aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/GraalVMConfigMaker.java @@ -0,0 +1,85 @@ +package com.amazonaws.services.lambda.runtime.events.graalvm; + +import com.amazonaws.services.lambda.runtime.events.APIGatewayV2CustomAuthorizerEventTest; +import com.amazonaws.services.lambda.runtime.events.HttpUtils; +import com.amazonaws.services.lambda.runtime.events.IamPolicyResponseTest; +import com.amazonaws.services.lambda.runtime.events.IamPolicyResponseV1Test; +import com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotificationTest; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.common.base.Function; +import com.google.common.collect.ImmutableSet; +import com.google.common.reflect.ClassPath; +import org.apache.commons.io.FileUtils; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +import static java.nio.charset.StandardCharsets.UTF_8; + +/** + * Example Application to generate GraalVM reflect-config.json files from all the classes and subclasses in a package. + * + */ +public class GraalVMConfigMaker { + + public static final String EVENTS_PACKAGE = "com.amazonaws.services.lambda.runtime.events"; + public static final List testClasses = Arrays.asList(GraalVMConfigMaker.class.getName(), + GraalVMSupportTest.class.getName(), + ReflectConfigEntry.class.getName(), + S3EventNotificationTest.class.getName(), + APIGatewayV2CustomAuthorizerEventTest.class.getName(), + HttpUtils.class.getName(), + IamPolicyResponseTest.class.getName(), + IamPolicyResponseV1Test.class.getName()); + + public static void main(String[] args ) + { + GraalVMConfigMaker app = new GraalVMConfigMaker(); + try { + app.run(EVENTS_PACKAGE, "aws-lambda-java-events/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/reflect-config.json"); + } catch (IOException | ClassNotFoundException e) { + e.printStackTrace(); + } + } + + private void run(String packageName, String pathName) throws IOException, ClassNotFoundException { + ClassPath classPath = ClassPath.from(this.getClass().getClassLoader()); + List allEventClasses = getNonTestClassesInPackage(classPath, packageName); + List reflectConfigEntryList = allEventClasses.stream() + .map(ReflectConfigEntry::allTrue) + .collect(Collectors.toList()); + String reflectConfig = new ObjectMapper() + .writerWithDefaultPrettyPrinter() + .writeValueAsString(reflectConfigEntryList); + System.out.println(reflectConfig); + FileUtils.writeStringToFile(new File(pathName), reflectConfig, UTF_8); + } + + public static List getNonTestClassesInPackage(ClassPath classPath, String packageName) throws ClassNotFoundException { + ImmutableSet topLevelClassesRecursive = classPath.getTopLevelClassesRecursive(packageName); + + List reflectConfigEntries = new ArrayList<>(); + + for (ClassPath.ClassInfo classInfo : topLevelClassesRecursive) { + if (notTestClass(classInfo.getName())) { + reflectConfigEntries.add(classInfo.getName()); + } + Class aClass = Class.forName(classInfo.getName()); + Class[] declaredClasses = aClass.getDeclaredClasses(); + for (Class declaredClass : declaredClasses) { + if (notTestClass(classInfo.getName())) { + reflectConfigEntries.add(declaredClass.getName()); + } + } + } + return reflectConfigEntries; + } + + private static boolean notTestClass(String name) { + return !testClasses.contains(name); + } +} diff --git a/aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/GraalVMSupportTest.java b/aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/GraalVMSupportTest.java new file mode 100644 index 00000000..65032b91 --- /dev/null +++ b/aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/GraalVMSupportTest.java @@ -0,0 +1,39 @@ +package com.amazonaws.services.lambda.runtime.events.graalvm; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.common.reflect.ClassPath; +import org.apache.commons.io.FileUtils; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.io.File; +import java.io.IOException; +import java.util.Arrays; +import java.util.List; + +/** + * The aws-lambda-java-events library supports GraalVM by containing a reflect-config.json file. This is located + * src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/reflect-config.json + * + * This config is used my the GraalVM native-image tool in order to load the required classes and methods into the + * native binary it creates. + * + * Any event or response class added to this library needs to be added to this config file. + * + * The standalone class GraalVMConfigMaker located in this package while will generate the file for you. + * + */ +public class GraalVMSupportTest { + + private static final File CONFIG_LOCATION = FileUtils.getFile("src", "main", "resources", "META-INF", "native-image", "com.amazonaws", "aws-lambda-java-events", "reflect-config.json"); + private final ObjectMapper objectMapper = new ObjectMapper(); + + @Test + public void testThatAllEventClassesExistWithinGraalVMReflectConfig() throws IOException, ClassNotFoundException { + ClassPath classPath = ClassPath.from(this.getClass().getClassLoader()); + List nonTestClassesInPackage = GraalVMConfigMaker.getNonTestClassesInPackage(classPath, GraalVMConfigMaker.EVENTS_PACKAGE); + List actualReflectConfigEntries = Arrays.asList(objectMapper.readValue(CONFIG_LOCATION, ReflectConfigEntry[].class)); + + Assertions.assertEquals(nonTestClassesInPackage.size(), actualReflectConfigEntries.size(), "Please add the new event / response to the reflect-config.json"); + } +} diff --git a/aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/ReflectConfigEntry.java b/aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/ReflectConfigEntry.java new file mode 100644 index 00000000..7f8a7f96 --- /dev/null +++ b/aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/ReflectConfigEntry.java @@ -0,0 +1,66 @@ +package com.amazonaws.services.lambda.runtime.events.graalvm; + +public class ReflectConfigEntry { + + private String name; + private boolean allDeclaredFields; + private boolean allDeclaredMethods; + private boolean allDeclaredConstructors; + + public ReflectConfigEntry() { + } + + public ReflectConfigEntry(String name, boolean allDeclaredFields, boolean allDeclaredMethods, boolean allDeclaredConstructors) { + this.name = name; + this.allDeclaredFields = allDeclaredFields; + this.allDeclaredMethods = allDeclaredMethods; + this.allDeclaredConstructors = allDeclaredConstructors; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public boolean isAllDeclaredFields() { + return allDeclaredFields; + } + + public void setAllDeclaredFields(boolean allDeclaredFields) { + this.allDeclaredFields = allDeclaredFields; + } + + public boolean isAllDeclaredMethods() { + return allDeclaredMethods; + } + + public void setAllDeclaredMethods(boolean allDeclaredMethods) { + this.allDeclaredMethods = allDeclaredMethods; + } + + public boolean isAllDeclaredConstructors() { + return allDeclaredConstructors; + } + + public void setAllDeclaredConstructors(boolean allDeclaredConstructors) { + this.allDeclaredConstructors = allDeclaredConstructors; + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("ReflectConfigEntry{"); + sb.append("name='").append(name).append('\''); + sb.append(", allDeclaredFields=").append(allDeclaredFields); + sb.append(", allDeclaredMethods=").append(allDeclaredMethods); + sb.append(", allDeclaredConstructors=").append(allDeclaredConstructors); + sb.append('}'); + return sb.toString(); + } + + public static ReflectConfigEntry allTrue(String name) { + return new ReflectConfigEntry(name, true, true, true); + } +} \ No newline at end of file From c85b0a30e1c97497cc598bc70c209ecb47e2605e Mon Sep 17 00:00:00 2001 From: msailes Date: Thu, 8 Jul 2021 09:45:25 +0100 Subject: [PATCH 06/28] trying out a single graalvm task --- .../workflows/aws-lambda-java-runtime-interface-client.yml | 2 +- aws-lambda-java-runtime-interface-client/Makefile | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/aws-lambda-java-runtime-interface-client.yml b/.github/workflows/aws-lambda-java-runtime-interface-client.yml index 15d5921d..7e2d2fa1 100644 --- a/.github/workflows/aws-lambda-java-runtime-interface-client.yml +++ b/.github/workflows/aws-lambda-java-runtime-interface-client.yml @@ -28,5 +28,5 @@ jobs: # Test Runtime Interface Client - name: Run 'pr' target working-directory: ./aws-lambda-java-runtime-interface-client - run: make pr + run: make test-graalvm diff --git a/aws-lambda-java-runtime-interface-client/Makefile b/aws-lambda-java-runtime-interface-client/Makefile index 6d23db6d..a32b777e 100644 --- a/aws-lambda-java-runtime-interface-client/Makefile +++ b/aws-lambda-java-runtime-interface-client/Makefile @@ -16,6 +16,10 @@ test-smoke: setup-codebuild-agent CODEBUILD_IMAGE_TAG=codebuild-agent test/integration/codebuild-local/test_one.sh test/integration/codebuild/buildspec.os.alpine.yml alpine 3.12 corretto11 CODEBUILD_IMAGE_TAG=codebuild-agent test/integration/codebuild-local/test_one.sh test/integration/codebuild/buildspec.os.amazoncorretto.yml amazoncorretto amazoncorretto 11 +.PHONY: test-graalvm +test-graalvm: setup-codebuild-agent + CODEBUILD_IMAGE_TAG=codebuild-agent test/integration/codebuild-local/test_one.sh test/integration/codebuild/buildspec.os.alpine.yml alpine 3.12 corretto11 + .PHONY: test-integ test-integ: setup-codebuild-agent CODEBUILD_IMAGE_TAG=codebuild-agent test/integration/codebuild-local/test_all.sh test/integration/codebuild From 693bbc8f6d84b6a34e04ebe58a03762a914a024b Mon Sep 17 00:00:00 2001 From: msailes Date: Thu, 8 Jul 2021 09:46:47 +0100 Subject: [PATCH 07/28] trying out a single graalvm task --- .github/workflows/aws-lambda-java-runtime-interface-client.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/aws-lambda-java-runtime-interface-client.yml b/.github/workflows/aws-lambda-java-runtime-interface-client.yml index 7e2d2fa1..126dd47d 100644 --- a/.github/workflows/aws-lambda-java-runtime-interface-client.yml +++ b/.github/workflows/aws-lambda-java-runtime-interface-client.yml @@ -29,4 +29,3 @@ jobs: - name: Run 'pr' target working-directory: ./aws-lambda-java-runtime-interface-client run: make test-graalvm - From ae2af666837a5995705494957ac32ad36cdd0ff1 Mon Sep 17 00:00:00 2001 From: msailes Date: Thu, 8 Jul 2021 09:51:48 +0100 Subject: [PATCH 08/28] add manually running jobs --- .../workflows/aws-lambda-java-runtime-interface-client.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/aws-lambda-java-runtime-interface-client.yml b/.github/workflows/aws-lambda-java-runtime-interface-client.yml index 126dd47d..5199c88d 100644 --- a/.github/workflows/aws-lambda-java-runtime-interface-client.yml +++ b/.github/workflows/aws-lambda-java-runtime-interface-client.yml @@ -12,6 +12,10 @@ on: branches: [ '*' ] paths: - 'aws-lambda-java-runtime-interface-client/**' + workflow_dispatch: + branches: [ '*' ] + paths: + - 'aws-lambda-java-runtime-interface-client/**' jobs: build: From 8a34d28f11492a5decb2b607a054f01240c45848 Mon Sep 17 00:00:00 2001 From: msailes Date: Thu, 8 Jul 2021 09:55:38 +0100 Subject: [PATCH 09/28] add manually running jobs --- .github/workflows/aws-lambda-java-runtime-interface-client.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/aws-lambda-java-runtime-interface-client.yml b/.github/workflows/aws-lambda-java-runtime-interface-client.yml index 5199c88d..9dafc704 100644 --- a/.github/workflows/aws-lambda-java-runtime-interface-client.yml +++ b/.github/workflows/aws-lambda-java-runtime-interface-client.yml @@ -5,7 +5,7 @@ name: Java CI aws-lambda-java-runtime-interface-client on: push: - branches: [ master ] + branches: [ '*' ] paths: - 'aws-lambda-java-runtime-interface-client/**' pull_request: From 602180e5eec440ca7e7e57d42d4b7b20c9038fa2 Mon Sep 17 00:00:00 2001 From: msailes Date: Thu, 8 Jul 2021 09:57:00 +0100 Subject: [PATCH 10/28] add manually running jobs --- aws-lambda-java-runtime-interface-client/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/aws-lambda-java-runtime-interface-client/README.md b/aws-lambda-java-runtime-interface-client/README.md index d8771d2a..55323321 100644 --- a/aws-lambda-java-runtime-interface-client/README.md +++ b/aws-lambda-java-runtime-interface-client/README.md @@ -159,3 +159,4 @@ If you discover a potential security issue in this project we ask that you notif This project is licensed under the Apache-2.0 License. +test \ No newline at end of file From 837b38fb1d404db69144baae8b1c30c4a9c6c297 Mon Sep 17 00:00:00 2001 From: msailes Date: Thu, 8 Jul 2021 10:03:09 +0100 Subject: [PATCH 11/28] quiet maven --- .../buildspec.os.amazoncorretto.yml | 106 ++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 aws-lambda-java-runtime-interface-client/test/integration/codebuild-graalvm/buildspec.os.amazoncorretto.yml diff --git a/aws-lambda-java-runtime-interface-client/test/integration/codebuild-graalvm/buildspec.os.amazoncorretto.yml b/aws-lambda-java-runtime-interface-client/test/integration/codebuild-graalvm/buildspec.os.amazoncorretto.yml new file mode 100644 index 00000000..02068bc1 --- /dev/null +++ b/aws-lambda-java-runtime-interface-client/test/integration/codebuild-graalvm/buildspec.os.amazoncorretto.yml @@ -0,0 +1,106 @@ +version: 0.2 + +env: + variables: + OS_DISTRIBUTION: amazoncorretto + JAVA_BINARY_LOCATION: "/usr/bin/java" +batch: + build-matrix: + static: + ignore-failure: false + env: + type: LINUX_CONTAINER + privileged-mode: true + dynamic: + env: + variables: + DISTRO_VERSION: + - "amazoncorretto" + RUNTIME_VERSION: + - "8" + - "11" +phases: + install: + commands: + - > + if [[ -z "${DOCKERHUB_USERNAME}" && -z "${DOCKERHUB_PASSWORD}" ]]; + then + echo "DockerHub credentials not set as CodeBuild environment variables. Continuing without docker login." + else + echo "Performing DockerHub login . . ." + docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD + fi + pre_build: + commands: + # Install events (dependency of serialization) + - (cd aws-lambda-java-events && mvn install -q) + # Install serialization (dependency of RIC) + - (cd aws-lambda-java-serialization && mvn install -q) + - (cd aws-lambda-java-runtime-interface-client && mvn install -q) + - (cd aws-lambda-java-runtime-interface-client/test/integration/test-handler && mvn install -q) + - export IMAGE_TAG="java-${OS_DISTRIBUTION}-${DISTRO_VERSION}:${RUNTIME_VERSION}" + - echo "Extracting and including Runtime Interface Emulator" + - SCRATCH_DIR=".scratch" + - mkdir "${SCRATCH_DIR}" + - tar -xvf aws-lambda-java-runtime-interface-client/test/integration/resources/aws-lambda-rie.tar.gz --directory "${SCRATCH_DIR}" + - > + cp "aws-lambda-java-runtime-interface-client/test/integration/docker/Dockerfile.function.${OS_DISTRIBUTION}" \ + "${SCRATCH_DIR}/Dockerfile.function.${OS_DISTRIBUTION}.tmp" + - > + echo "COPY ${SCRATCH_DIR}/aws-lambda-rie /usr/bin/aws-lambda-rie" >> \ + "${SCRATCH_DIR}/Dockerfile.function.${OS_DISTRIBUTION}.tmp" + - echo "Building image ${IMAGE_TAG}" + - > + docker build . \ + -f "${SCRATCH_DIR}/Dockerfile.function.${OS_DISTRIBUTION}.tmp" \ + -t "${IMAGE_TAG}" \ + --build-arg RUNTIME_VERSION="${RUNTIME_VERSION}" \ + --build-arg DISTRO_VERSION="${DISTRO_VERSION}" + build: + commands: + - set -x + - echo "Running Image ${IMAGE_TAG}" + - docker network create "${OS_DISTRIBUTION}-network" + - > + docker run \ + --detach \ + -e "JAVA_BINARY_LOCATION=${JAVA_BINARY_LOCATION}" \ + --name "${OS_DISTRIBUTION}-app" \ + --network "${OS_DISTRIBUTION}-network" \ + --entrypoint="" \ + "${IMAGE_TAG}" \ + sh -c '/usr/bin/aws-lambda-rie ${JAVA_BINARY_LOCATION} -jar ./HelloWorld-1.0.jar helloworld.App' + - sleep 2 + - > + docker run \ + --name "${OS_DISTRIBUTION}-tester" \ + --env "TARGET=${OS_DISTRIBUTION}-app" \ + --network "${OS_DISTRIBUTION}-network" \ + --entrypoint="" \ + "${IMAGE_TAG}" \ + sh -c 'curl -X POST "http://${TARGET}:8080/2015-03-31/functions/function/invocations" -d "{}" --max-time 10' + - actual="$(docker logs --tail 1 "${OS_DISTRIBUTION}-tester" | xargs)" + - expected='success' + - | + echo "Response: ${actual}" + if [[ "$actual" != "$expected" ]]; then + echo "fail! runtime: $RUNTIME - expected output $expected - got $actual" + echo "---------Container Logs: ${OS_DISTRIBUTION}-app----------" + echo + docker logs "${OS_DISTRIBUTION}-app" + echo + echo "---------------------------------------------------" + echo "--------Container Logs: ${OS_DISTRIBUTION}-tester--------" + echo + docker logs "${OS_DISTRIBUTION}-tester" + echo + echo "---------------------------------------------------" + exit -1 + fi + finally: + - echo "Cleaning up..." + - docker stop "${OS_DISTRIBUTION}-app" || true + - docker rm --force "${OS_DISTRIBUTION}-app" || true + - docker stop "${OS_DISTRIBUTION}-tester" || true + - docker rm --force "${OS_DISTRIBUTION}-tester" || true + - docker network rm "${OS_DISTRIBUTION}-network" || true \ No newline at end of file From 1e427824baf2ea8abfa8105317e427a2fb6886a5 Mon Sep 17 00:00:00 2001 From: msailes Date: Thu, 8 Jul 2021 10:20:24 +0100 Subject: [PATCH 12/28] graalvm --- .../Makefile | 4 +- .../buildspec.os.amazoncorretto.yml | 4 +- .../integration/graalvm-test-handler/pom.xml | 108 ++++++++++++++++++ .../graalvm-test-handler/src/assembly/zip.xml | 23 ++++ .../src/main/config/bootstrap | 3 + .../src/main/java/helloworld/App.java | 18 +++ 6 files changed, 156 insertions(+), 4 deletions(-) create mode 100644 aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/pom.xml create mode 100644 aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/assembly/zip.xml create mode 100644 aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/config/bootstrap create mode 100644 aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/java/helloworld/App.java diff --git a/aws-lambda-java-runtime-interface-client/Makefile b/aws-lambda-java-runtime-interface-client/Makefile index a32b777e..0746a8e0 100644 --- a/aws-lambda-java-runtime-interface-client/Makefile +++ b/aws-lambda-java-runtime-interface-client/Makefile @@ -5,7 +5,7 @@ target: .PHONY: test test: - mvn test + mvn test -q .PHONY: setup-codebuild-agent setup-codebuild-agent: @@ -34,7 +34,7 @@ pr: test test-smoke .PHONY: build build: - mvn clean install + mvn clean install -q define HELP_MESSAGE diff --git a/aws-lambda-java-runtime-interface-client/test/integration/codebuild-graalvm/buildspec.os.amazoncorretto.yml b/aws-lambda-java-runtime-interface-client/test/integration/codebuild-graalvm/buildspec.os.amazoncorretto.yml index 02068bc1..30d12cff 100644 --- a/aws-lambda-java-runtime-interface-client/test/integration/codebuild-graalvm/buildspec.os.amazoncorretto.yml +++ b/aws-lambda-java-runtime-interface-client/test/integration/codebuild-graalvm/buildspec.os.amazoncorretto.yml @@ -37,7 +37,7 @@ phases: # Install serialization (dependency of RIC) - (cd aws-lambda-java-serialization && mvn install -q) - (cd aws-lambda-java-runtime-interface-client && mvn install -q) - - (cd aws-lambda-java-runtime-interface-client/test/integration/test-handler && mvn install -q) + - (cd aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler && mvn install -P native-image) - export IMAGE_TAG="java-${OS_DISTRIBUTION}-${DISTRO_VERSION}:${RUNTIME_VERSION}" - echo "Extracting and including Runtime Interface Emulator" - SCRATCH_DIR=".scratch" @@ -69,7 +69,7 @@ phases: --network "${OS_DISTRIBUTION}-network" \ --entrypoint="" \ "${IMAGE_TAG}" \ - sh -c '/usr/bin/aws-lambda-rie ${JAVA_BINARY_LOCATION} -jar ./HelloWorld-1.0.jar helloworld.App' + sh -c '/usr/bin/aws-lambda-rie ./hello-binary helloworld.App' - sleep 2 - > docker run \ diff --git a/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/pom.xml b/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/pom.xml new file mode 100644 index 00000000..6e2cd3c1 --- /dev/null +++ b/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/pom.xml @@ -0,0 +1,108 @@ + + 4.0.0 + helloworld + HelloWorld + 1.0 + jar + A sample Hello World. + + 1.8 + 1.8 + + + + + com.amazonaws + aws-lambda-java-runtime-interface-client + 1.1.0 + + + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.1.1 + + + + + package + + shade + + + + + + org.apache.maven.plugins + maven-jar-plugin + + + + com.amazonaws.services.lambda.runtime.api.client.AWSLambda + + + + + + + + + + native-image + + + + org.graalvm.nativeimage + native-image-maven-plugin + 21.1.0 + + + + native-image + + + + + product-binary + com.amazonaws.services.lambda.runtime.api.client.AWSLambda + + --verbose + --no-fallback + --initialize-at-build-time=org.slf4j + --enable-url-protocols=http + -H:+AllowIncompleteClasspath + + + + + org.apache.maven.plugins + maven-assembly-plugin + 3.3.0 + + + zip-assembly + package + + single + + + function + + src/assembly/zip.xml + + false + false + + + + + + + + + + diff --git a/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/assembly/zip.xml b/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/assembly/zip.xml new file mode 100644 index 00000000..3aa812c7 --- /dev/null +++ b/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/assembly/zip.xml @@ -0,0 +1,23 @@ + + lambda-package + + zip + + false + + + ${project.build.directory}${file.separator}product-binary + ${file.separator} + product-binary + 777 + + + src${file.separator}main${file.separator}config${file.separator}bootstrap + ${file.separator} + bootstrap + 777 + + + \ No newline at end of file diff --git a/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/config/bootstrap b/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/config/bootstrap new file mode 100644 index 00000000..15669e72 --- /dev/null +++ b/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/config/bootstrap @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +./product-binary $_HANDLER \ No newline at end of file diff --git a/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/java/helloworld/App.java b/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/java/helloworld/App.java new file mode 100644 index 00000000..a2d0c6a6 --- /dev/null +++ b/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/java/helloworld/App.java @@ -0,0 +1,18 @@ +package helloworld; + +import com.amazonaws.services.lambda.runtime.Context; +import com.amazonaws.services.lambda.runtime.RequestHandler; + +import java.util.Map; + +/** + * Handler for requests to Lambda function. + */ +public class App implements RequestHandler, String>{ + @Override + public String handleRequest(Map event, Context context) + { + String response = new String("success"); + return response; + } +} From 80ea23cac3e3eb77489889243c1fb559ac04a26a Mon Sep 17 00:00:00 2001 From: msailes Date: Thu, 8 Jul 2021 15:18:37 +0100 Subject: [PATCH 13/28] might work --- .../Makefile | 5 +-- .../jni-config.json | 11 ++++++ .../native-image.properties | 4 +++ .../reflect-config.json | 34 +++++++++++++++++++ .../resource-config.json | 8 +++++ .../buildspec.os.amazoncorretto.yml | 9 +++-- .../codebuild-local/Dockerfile.graalvm-agent | 5 +++ .../docker/Dockerfile.function.graalvm | 9 +++++ .../integration/graalvm-test-handler/pom.xml | 2 +- .../graalvm-test-handler/src/assembly/zip.xml | 4 +-- .../src/main/config/bootstrap | 2 +- 11 files changed, 82 insertions(+), 11 deletions(-) create mode 100644 aws-lambda-java-runtime-interface-client/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/jni-config.json create mode 100644 aws-lambda-java-runtime-interface-client/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/native-image.properties create mode 100644 aws-lambda-java-runtime-interface-client/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json create mode 100644 aws-lambda-java-runtime-interface-client/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/resource-config.json create mode 100644 aws-lambda-java-runtime-interface-client/test/integration/codebuild-local/Dockerfile.graalvm-agent create mode 100644 aws-lambda-java-runtime-interface-client/test/integration/docker/Dockerfile.function.graalvm diff --git a/aws-lambda-java-runtime-interface-client/Makefile b/aws-lambda-java-runtime-interface-client/Makefile index 0746a8e0..55a7c81e 100644 --- a/aws-lambda-java-runtime-interface-client/Makefile +++ b/aws-lambda-java-runtime-interface-client/Makefile @@ -17,8 +17,9 @@ test-smoke: setup-codebuild-agent CODEBUILD_IMAGE_TAG=codebuild-agent test/integration/codebuild-local/test_one.sh test/integration/codebuild/buildspec.os.amazoncorretto.yml amazoncorretto amazoncorretto 11 .PHONY: test-graalvm -test-graalvm: setup-codebuild-agent - CODEBUILD_IMAGE_TAG=codebuild-agent test/integration/codebuild-local/test_one.sh test/integration/codebuild/buildspec.os.alpine.yml alpine 3.12 corretto11 +test-graalvm: + docker build -t codebuild-agent - < test/integration/codebuild-local/Dockerfile.graalvm-agent + CODEBUILD_IMAGE_TAG=codebuild-agent test/integration/codebuild-local/test_one.sh test/integration/codebuild-graalvm/buildspec.os.amazoncorretto.yml amazoncorretto amazoncorretto 11 .PHONY: test-integ test-integ: setup-codebuild-agent diff --git a/aws-lambda-java-runtime-interface-client/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/jni-config.json b/aws-lambda-java-runtime-interface-client/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/jni-config.json new file mode 100644 index 00000000..e6c7da3c --- /dev/null +++ b/aws-lambda-java-runtime-interface-client/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/jni-config.json @@ -0,0 +1,11 @@ +[ +{ + "name":"com.amazonaws.services.lambda.runtime.api.client.runtimeapi.LambdaRuntimeClientException", + "methods":[{"name":"","parameterTypes":["java.lang.String","int"] }] +}, +{ + "name":"com.amazonaws.services.lambda.runtime.api.client.runtimeapi.InvocationRequest", + "fields":[{"name":"id"}, {"name":"invokedFunctionArn"}, {"name":"deadlineTimeInMs"}, {"name":"xrayTraceId"}, {"name":"clientContext"}, {"name":"cognitoIdentity"}, {"name":"content"}], + "allPublicMethods":true +} +] diff --git a/aws-lambda-java-runtime-interface-client/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/native-image.properties b/aws-lambda-java-runtime-interface-client/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/native-image.properties new file mode 100644 index 00000000..1ca4a3ca --- /dev/null +++ b/aws-lambda-java-runtime-interface-client/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/native-image.properties @@ -0,0 +1,4 @@ +Args = --initialize-at-build-time=jdk.xml.internal.SecuritySupport \ +-H:ReflectionConfigurationResources=${.}/reflect-config.json \ +-H:JNIConfigurationResources=${.}/jni-config.json \ +-H:ResourceConfigurationResources=${.}/resource-config.json diff --git a/aws-lambda-java-runtime-interface-client/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json b/aws-lambda-java-runtime-interface-client/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json new file mode 100644 index 00000000..630a721e --- /dev/null +++ b/aws-lambda-java-runtime-interface-client/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json @@ -0,0 +1,34 @@ +[ +{ + "name":"com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.deser.Deserializers[]" +}, +{ + "name":"com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.ext.Java7SupportImpl", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.amazonaws.services.lambda.runtime.LambdaRuntime", + "fields":[{"name":"logger"}] +}, +{ + "name":"java.lang.Void", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"java.util.Collections$UnmodifiableMap", + "fields":[{"name":"m"}] +}, +{ + "name":"jdk.internal.module.IllegalAccessLogger", + "fields":[{"name":"logger"}] +}, +{ + "name":"sun.misc.Unsafe", + "fields":[{"name":"theUnsafe"}] +}, +{ + "name":"com.amazonaws.services.lambda.runtime.api.client.runtimeapi.InvocationRequest", + "fields":[{"name":"id"}, {"name":"invokedFunctionArn"}, {"name":"deadlineTimeInMs"}, {"name":"xrayTraceId"}, {"name":"clientContext"}, {"name":"cognitoIdentity"}, {"name":"content"}], + "allPublicMethods":true +} +] diff --git a/aws-lambda-java-runtime-interface-client/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/resource-config.json b/aws-lambda-java-runtime-interface-client/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/resource-config.json new file mode 100644 index 00000000..18f4ba9b --- /dev/null +++ b/aws-lambda-java-runtime-interface-client/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/resource-config.json @@ -0,0 +1,8 @@ +{ + "resources":{ + "includes":[ + {"pattern":"\\Qaws-lambda-runtime-interface-client.glibc.so\\E"}, + {"pattern":"\\Qaws-lambda-runtime-interface-client.musl.so\\E"} + ]}, + "bundles":[] +} diff --git a/aws-lambda-java-runtime-interface-client/test/integration/codebuild-graalvm/buildspec.os.amazoncorretto.yml b/aws-lambda-java-runtime-interface-client/test/integration/codebuild-graalvm/buildspec.os.amazoncorretto.yml index 30d12cff..69588060 100644 --- a/aws-lambda-java-runtime-interface-client/test/integration/codebuild-graalvm/buildspec.os.amazoncorretto.yml +++ b/aws-lambda-java-runtime-interface-client/test/integration/codebuild-graalvm/buildspec.os.amazoncorretto.yml @@ -17,7 +17,6 @@ batch: DISTRO_VERSION: - "amazoncorretto" RUNTIME_VERSION: - - "8" - "11" phases: install: @@ -44,15 +43,15 @@ phases: - mkdir "${SCRATCH_DIR}" - tar -xvf aws-lambda-java-runtime-interface-client/test/integration/resources/aws-lambda-rie.tar.gz --directory "${SCRATCH_DIR}" - > - cp "aws-lambda-java-runtime-interface-client/test/integration/docker/Dockerfile.function.${OS_DISTRIBUTION}" \ - "${SCRATCH_DIR}/Dockerfile.function.${OS_DISTRIBUTION}.tmp" + cp "aws-lambda-java-runtime-interface-client/test/integration/docker/Dockerfile.function.graalvm" \ + "${SCRATCH_DIR}/Dockerfile.function.graalvm.tmp" - > echo "COPY ${SCRATCH_DIR}/aws-lambda-rie /usr/bin/aws-lambda-rie" >> \ - "${SCRATCH_DIR}/Dockerfile.function.${OS_DISTRIBUTION}.tmp" + "${SCRATCH_DIR}/Dockerfile.function.graalvm.tmp" - echo "Building image ${IMAGE_TAG}" - > docker build . \ - -f "${SCRATCH_DIR}/Dockerfile.function.${OS_DISTRIBUTION}.tmp" \ + -f "${SCRATCH_DIR}/Dockerfile.function.graalvm.tmp" \ -t "${IMAGE_TAG}" \ --build-arg RUNTIME_VERSION="${RUNTIME_VERSION}" \ --build-arg DISTRO_VERSION="${DISTRO_VERSION}" diff --git a/aws-lambda-java-runtime-interface-client/test/integration/codebuild-local/Dockerfile.graalvm-agent b/aws-lambda-java-runtime-interface-client/test/integration/codebuild-local/Dockerfile.graalvm-agent new file mode 100644 index 00000000..ad5cbe54 --- /dev/null +++ b/aws-lambda-java-runtime-interface-client/test/integration/codebuild-local/Dockerfile.graalvm-agent @@ -0,0 +1,5 @@ +FROM marksailes/al2-graalvm:11-21.1.0 + +RUN amazon-linux-extras enable docker && \ + yum clean metadata && \ + yum install -y docker tar diff --git a/aws-lambda-java-runtime-interface-client/test/integration/docker/Dockerfile.function.graalvm b/aws-lambda-java-runtime-interface-client/test/integration/docker/Dockerfile.function.graalvm new file mode 100644 index 00000000..81e472f1 --- /dev/null +++ b/aws-lambda-java-runtime-interface-client/test/integration/docker/Dockerfile.function.graalvm @@ -0,0 +1,9 @@ +ARG RUNTIME_VERSION + +FROM amazoncorretto:${RUNTIME_VERSION} + +ADD aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/target/hello-binary . + +ENTRYPOINT ["hello-binary", "helloworld.App"] + +CMD ["helloworld.App"] diff --git a/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/pom.xml b/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/pom.xml index 6e2cd3c1..d5ffc030 100644 --- a/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/pom.xml +++ b/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/pom.xml @@ -67,7 +67,7 @@ - product-binary + hello-binary com.amazonaws.services.lambda.runtime.api.client.AWSLambda --verbose diff --git a/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/assembly/zip.xml b/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/assembly/zip.xml index 3aa812c7..acb1fa47 100644 --- a/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/assembly/zip.xml +++ b/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/assembly/zip.xml @@ -8,9 +8,9 @@ false - ${project.build.directory}${file.separator}product-binary + ${project.build.directory}${file.separator}hello-binary ${file.separator} - product-binary + hello-binary 777 diff --git a/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/config/bootstrap b/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/config/bootstrap index 15669e72..76cc8f83 100644 --- a/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/config/bootstrap +++ b/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/config/bootstrap @@ -1,3 +1,3 @@ #!/usr/bin/env bash -./product-binary $_HANDLER \ No newline at end of file +./hello-binary $_HANDLER \ No newline at end of file From a67cabfb469a4c3886f2f19ed3b6c13b2828505b Mon Sep 17 00:00:00 2001 From: msailes Date: Thu, 8 Jul 2021 15:55:15 +0100 Subject: [PATCH 14/28] app config --- .../META-INF/native-image/native-image.properties | 3 +++ .../META-INF/native-image/reflect-config.json | 11 +++++++++++ 2 files changed, 14 insertions(+) create mode 100644 aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/resources/META-INF/native-image/native-image.properties create mode 100644 aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/resources/META-INF/native-image/reflect-config.json diff --git a/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/resources/META-INF/native-image/native-image.properties b/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/resources/META-INF/native-image/native-image.properties new file mode 100644 index 00000000..cd81623c --- /dev/null +++ b/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/resources/META-INF/native-image/native-image.properties @@ -0,0 +1,3 @@ +Args = --enable-all-security-services \ +--enable-url-protocols=http,https \ +-H:ReflectionConfigurationResources=${.}/reflect-config.json \ No newline at end of file diff --git a/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/resources/META-INF/native-image/reflect-config.json b/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/resources/META-INF/native-image/reflect-config.json new file mode 100644 index 00000000..d01f9378 --- /dev/null +++ b/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/resources/META-INF/native-image/reflect-config.json @@ -0,0 +1,11 @@ +[ + { + "name": "helloworld.App", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + } +] \ No newline at end of file From 187cebf690f98f98570df7a54cba17acc0e4921f Mon Sep 17 00:00:00 2001 From: msailes Date: Mon, 12 Jul 2021 11:26:25 +0100 Subject: [PATCH 15/28] clean up --- .../aws-lambda-java-runtime-interface-client.yml | 8 ++------ aws-lambda-java-runtime-interface-client/Makefile | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/.github/workflows/aws-lambda-java-runtime-interface-client.yml b/.github/workflows/aws-lambda-java-runtime-interface-client.yml index 9dafc704..6b3ab3a6 100644 --- a/.github/workflows/aws-lambda-java-runtime-interface-client.yml +++ b/.github/workflows/aws-lambda-java-runtime-interface-client.yml @@ -5,17 +5,13 @@ name: Java CI aws-lambda-java-runtime-interface-client on: push: - branches: [ '*' ] + branches: [ master ] paths: - 'aws-lambda-java-runtime-interface-client/**' pull_request: branches: [ '*' ] paths: - 'aws-lambda-java-runtime-interface-client/**' - workflow_dispatch: - branches: [ '*' ] - paths: - - 'aws-lambda-java-runtime-interface-client/**' jobs: build: @@ -32,4 +28,4 @@ jobs: # Test Runtime Interface Client - name: Run 'pr' target working-directory: ./aws-lambda-java-runtime-interface-client - run: make test-graalvm + run: make pr diff --git a/aws-lambda-java-runtime-interface-client/Makefile b/aws-lambda-java-runtime-interface-client/Makefile index 55a7c81e..bfcbcbd5 100644 --- a/aws-lambda-java-runtime-interface-client/Makefile +++ b/aws-lambda-java-runtime-interface-client/Makefile @@ -31,7 +31,7 @@ dev: test # Verifications to run before sending a pull request .PHONY: pr -pr: test test-smoke +pr: test test-smoke test-graalvm .PHONY: build build: From c4c86618f2702f2dc8edcafbfee849b75acafb9b Mon Sep 17 00:00:00 2001 From: msailes Date: Mon, 12 Jul 2021 11:29:08 +0100 Subject: [PATCH 16/28] typo --- aws-lambda-java-runtime-interface-client/README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/aws-lambda-java-runtime-interface-client/README.md b/aws-lambda-java-runtime-interface-client/README.md index 55323321..9f489be6 100644 --- a/aws-lambda-java-runtime-interface-client/README.md +++ b/aws-lambda-java-runtime-interface-client/README.md @@ -158,5 +158,3 @@ If you discover a potential security issue in this project we ask that you notif ## License This project is licensed under the Apache-2.0 License. - -test \ No newline at end of file From a81c1fcdf30c4921d5733859d917a2186d1967e4 Mon Sep 17 00:00:00 2001 From: msailes Date: Mon, 12 Jul 2021 16:55:20 +0100 Subject: [PATCH 17/28] removed reference to my dockerfile --- .../codebuild-local/Dockerfile.graalvm-agent | 38 +++++++++++++++++-- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/aws-lambda-java-runtime-interface-client/test/integration/codebuild-local/Dockerfile.graalvm-agent b/aws-lambda-java-runtime-interface-client/test/integration/codebuild-local/Dockerfile.graalvm-agent index ad5cbe54..d265c77f 100644 --- a/aws-lambda-java-runtime-interface-client/test/integration/codebuild-local/Dockerfile.graalvm-agent +++ b/aws-lambda-java-runtime-interface-client/test/integration/codebuild-local/Dockerfile.graalvm-agent @@ -1,5 +1,35 @@ -FROM marksailes/al2-graalvm:11-21.1.0 +FROM amazoncorretto:11 + +RUN yum -y update \ + && yum install -y docker tar gzip bzip2-devel ed gcc gcc-c++ gcc-gfortran \ + less libcurl-devel openssl openssl-devel readline-devel xz-devel \ + zlib-devel glibc-static libcxx libcxx-devel llvm-toolset-7 zlib-static \ + && rm -rf /var/cache/yum +RUN amazon-linux-extras enable docker + +ENV GRAAL_VERSION 21.1.0 +ARG GRAAL_FOLDERNAME graalvm-ce-java11-${GRAAL_VERSION} +ARG GRAAL_FILENAME graalvm-ce-java11-linux-amd64-${GRAAL_VERSION}.tar.gz +RUN curl -4 -L https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-${GRAAL_VERSION}/${GRAAL_FILENAME} | tar -xvz +RUN mv $GRAAL_FOLDERNAME /usr/lib/graalvm +RUN rm -rf $GRAAL_FOLDERNAME + +# Graal maven plugin requires Maven 3.3.x +ENV MVN_VERSION 3.6.3 +ARG MVN_FOLDERNAME apache-maven-${MVN_VERSION} +ARG MVN_FILENAME apache-maven-${MVN_VERSION}-bin.tar.gz +RUN curl -4 -L https://mirrors.ukfast.co.uk/sites/ftp.apache.org/maven/maven-3/${MVN_VERSION}/binaries/${MVN_FILENAME} | tar -xvz +RUN mv $MVN_FOLDERNAME /usr/lib/maven +RUN rm -rf $MVN_FOLDERNAME + +VOLUME /project +WORKDIR /project + +RUN /usr/lib/graalvm/bin/gu install native-image +RUN ln -s /usr/lib/graalvm/bin/native-image /usr/bin/native-image +RUN ln -s /usr/lib/maven/bin/mvn /usr/bin/mvn + +ENV JAVA_HOME /usr/lib/graalvm + +ENTRYPOINT ["sh"] -RUN amazon-linux-extras enable docker && \ - yum clean metadata && \ - yum install -y docker tar From 33060dfab13d78b89389063bd4adb17a0cfb24bb Mon Sep 17 00:00:00 2001 From: msailes Date: Tue, 13 Jul 2021 10:24:59 +0100 Subject: [PATCH 18/28] merged Richard's LambdaEventsGraalVMFeature and removed the GraalVMConfigMaker. --- aws-lambda-java-events/pom.xml | 19 ++-- .../graalvm/LambdaEventsGraalVMFeature.java | 95 +++++++++++++++++++ .../native-image.properties | 3 + .../events/graalvm/GraalVMConfigMaker.java | 85 ----------------- .../events/graalvm/GraalVMSupportTest.java | 39 -------- .../LambdaEventsGraalVMFeatureTest.java | 44 +++++++++ .../events/graalvm/ReflectConfigEntry.java | 66 ------------- 7 files changed, 152 insertions(+), 199 deletions(-) create mode 100644 aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/graalvm/LambdaEventsGraalVMFeature.java create mode 100644 aws-lambda-java-events/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/native-image.properties delete mode 100644 aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/GraalVMConfigMaker.java delete mode 100644 aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/GraalVMSupportTest.java create mode 100644 aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/LambdaEventsGraalVMFeatureTest.java delete mode 100644 aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/ReflectConfigEntry.java diff --git a/aws-lambda-java-events/pom.xml b/aws-lambda-java-events/pom.xml index 1ecebf22..ab17c4e2 100644 --- a/aws-lambda-java-events/pom.xml +++ b/aws-lambda-java-events/pom.xml @@ -50,6 +50,13 @@ 2.6 + + org.graalvm.sdk + graal-sdk + 21.1.0 + compile + + org.junit.jupiter junit-jupiter-engine @@ -69,15 +76,9 @@ test - commons-io - commons-io - 2.7 - test - - - com.google.guava - guava - 30.1.1-jre + io.github.classgraph + classgraph + 4.8.110 test diff --git a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/graalvm/LambdaEventsGraalVMFeature.java b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/graalvm/LambdaEventsGraalVMFeature.java new file mode 100644 index 00000000..fd7eed30 --- /dev/null +++ b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/graalvm/LambdaEventsGraalVMFeature.java @@ -0,0 +1,95 @@ +package com.amazonaws.services.lambda.runtime.graalvm; + +import org.graalvm.nativeimage.hosted.Feature; +import org.graalvm.nativeimage.hosted.RuntimeReflection; + +import java.io.File; +import java.io.IOException; +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.net.URL; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.List; + +public class LambdaEventsGraalVMFeature implements Feature { + + public static final String EVENTS_PACKAGE_NAME = "com.amazonaws.services.lambda.runtime.events"; + + public static List> getClasses(String packageName) + throws ClassNotFoundException, IOException { + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + assert classLoader != null; + String path = packageName.replace('.', '/'); + Enumeration resources = classLoader.getResources(path); + List dirs = new ArrayList<>(); + while (resources.hasMoreElements()) { + URL resource = resources.nextElement(); + dirs.add(new File(resource.getFile())); + } + ArrayList> classes = new ArrayList<>(); + for (File directory : dirs) { + classes.addAll(findClasses(directory, packageName)); + } + return classes; + } + + private static List> findClasses(File directory, String packageName) throws ClassNotFoundException { + List> classes = new ArrayList<>(); + if (!directory.exists()) { + return classes; + } + File[] files = directory.listFiles(); + if(files == null){ + return classes; + } + for (File file : files) { + String fileName = file.getName(); + if (file.isDirectory()) { + assert !fileName.contains("."); + classes.addAll(findClasses(file, packageName + "." + fileName)); + } else if (fileName.endsWith(".class")) { + classes.add(Class.forName(packageName + '.' + fileName.substring(0, fileName.length() - ".class".length()))); + } + } + return classes; + } + + @Override + public void beforeAnalysis(BeforeAnalysisAccess access) { + try { + List> classes = getClasses(EVENTS_PACKAGE_NAME); + for (Class cl : classes) { + System.out.println("Registering class:"+cl.getName()); + registerClass(cl); + registerMethods(cl); + registerFields(cl); + } + } catch (ClassNotFoundException | IOException e) { + e.printStackTrace(); + System.err.println("Failed to automatically load classes from "+ LambdaEventsGraalVMFeature.class.getName()); + System.exit(1); + } + } + + private void registerMethods(Class cl) { + for (Method method : cl.getDeclaredMethods()) { + RuntimeReflection.register(method); + } + } + + private void registerFields(Class cl) { + for (Field field : cl.getDeclaredFields()) { + RuntimeReflection.register(field); + } + } + + private void registerClass(Class cl) { + RuntimeReflection.register(cl); + for (Constructor constructor : cl.getDeclaredConstructors()) { + RuntimeReflection.register(constructor); + } + System.out.println(String.format("\tAdding constructors for %s", cl.getName())); + } +} \ No newline at end of file diff --git a/aws-lambda-java-events/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/native-image.properties b/aws-lambda-java-events/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/native-image.properties new file mode 100644 index 00000000..e8625811 --- /dev/null +++ b/aws-lambda-java-events/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/native-image.properties @@ -0,0 +1,3 @@ +Args = --enable-all-security-services \ +--enable-url-protocols=http,https \ +--features=com.amazonaws.services.lambda.runtime.graalvm.LambdaEventsGraalVMFeature diff --git a/aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/GraalVMConfigMaker.java b/aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/GraalVMConfigMaker.java deleted file mode 100644 index 007558f4..00000000 --- a/aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/GraalVMConfigMaker.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.amazonaws.services.lambda.runtime.events.graalvm; - -import com.amazonaws.services.lambda.runtime.events.APIGatewayV2CustomAuthorizerEventTest; -import com.amazonaws.services.lambda.runtime.events.HttpUtils; -import com.amazonaws.services.lambda.runtime.events.IamPolicyResponseTest; -import com.amazonaws.services.lambda.runtime.events.IamPolicyResponseV1Test; -import com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotificationTest; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.base.Function; -import com.google.common.collect.ImmutableSet; -import com.google.common.reflect.ClassPath; -import org.apache.commons.io.FileUtils; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -import static java.nio.charset.StandardCharsets.UTF_8; - -/** - * Example Application to generate GraalVM reflect-config.json files from all the classes and subclasses in a package. - * - */ -public class GraalVMConfigMaker { - - public static final String EVENTS_PACKAGE = "com.amazonaws.services.lambda.runtime.events"; - public static final List testClasses = Arrays.asList(GraalVMConfigMaker.class.getName(), - GraalVMSupportTest.class.getName(), - ReflectConfigEntry.class.getName(), - S3EventNotificationTest.class.getName(), - APIGatewayV2CustomAuthorizerEventTest.class.getName(), - HttpUtils.class.getName(), - IamPolicyResponseTest.class.getName(), - IamPolicyResponseV1Test.class.getName()); - - public static void main(String[] args ) - { - GraalVMConfigMaker app = new GraalVMConfigMaker(); - try { - app.run(EVENTS_PACKAGE, "aws-lambda-java-events/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/reflect-config.json"); - } catch (IOException | ClassNotFoundException e) { - e.printStackTrace(); - } - } - - private void run(String packageName, String pathName) throws IOException, ClassNotFoundException { - ClassPath classPath = ClassPath.from(this.getClass().getClassLoader()); - List allEventClasses = getNonTestClassesInPackage(classPath, packageName); - List reflectConfigEntryList = allEventClasses.stream() - .map(ReflectConfigEntry::allTrue) - .collect(Collectors.toList()); - String reflectConfig = new ObjectMapper() - .writerWithDefaultPrettyPrinter() - .writeValueAsString(reflectConfigEntryList); - System.out.println(reflectConfig); - FileUtils.writeStringToFile(new File(pathName), reflectConfig, UTF_8); - } - - public static List getNonTestClassesInPackage(ClassPath classPath, String packageName) throws ClassNotFoundException { - ImmutableSet topLevelClassesRecursive = classPath.getTopLevelClassesRecursive(packageName); - - List reflectConfigEntries = new ArrayList<>(); - - for (ClassPath.ClassInfo classInfo : topLevelClassesRecursive) { - if (notTestClass(classInfo.getName())) { - reflectConfigEntries.add(classInfo.getName()); - } - Class aClass = Class.forName(classInfo.getName()); - Class[] declaredClasses = aClass.getDeclaredClasses(); - for (Class declaredClass : declaredClasses) { - if (notTestClass(classInfo.getName())) { - reflectConfigEntries.add(declaredClass.getName()); - } - } - } - return reflectConfigEntries; - } - - private static boolean notTestClass(String name) { - return !testClasses.contains(name); - } -} diff --git a/aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/GraalVMSupportTest.java b/aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/GraalVMSupportTest.java deleted file mode 100644 index 65032b91..00000000 --- a/aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/GraalVMSupportTest.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.amazonaws.services.lambda.runtime.events.graalvm; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.reflect.ClassPath; -import org.apache.commons.io.FileUtils; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -import java.io.File; -import java.io.IOException; -import java.util.Arrays; -import java.util.List; - -/** - * The aws-lambda-java-events library supports GraalVM by containing a reflect-config.json file. This is located - * src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/reflect-config.json - * - * This config is used my the GraalVM native-image tool in order to load the required classes and methods into the - * native binary it creates. - * - * Any event or response class added to this library needs to be added to this config file. - * - * The standalone class GraalVMConfigMaker located in this package while will generate the file for you. - * - */ -public class GraalVMSupportTest { - - private static final File CONFIG_LOCATION = FileUtils.getFile("src", "main", "resources", "META-INF", "native-image", "com.amazonaws", "aws-lambda-java-events", "reflect-config.json"); - private final ObjectMapper objectMapper = new ObjectMapper(); - - @Test - public void testThatAllEventClassesExistWithinGraalVMReflectConfig() throws IOException, ClassNotFoundException { - ClassPath classPath = ClassPath.from(this.getClass().getClassLoader()); - List nonTestClassesInPackage = GraalVMConfigMaker.getNonTestClassesInPackage(classPath, GraalVMConfigMaker.EVENTS_PACKAGE); - List actualReflectConfigEntries = Arrays.asList(objectMapper.readValue(CONFIG_LOCATION, ReflectConfigEntry[].class)); - - Assertions.assertEquals(nonTestClassesInPackage.size(), actualReflectConfigEntries.size(), "Please add the new event / response to the reflect-config.json"); - } -} diff --git a/aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/LambdaEventsGraalVMFeatureTest.java b/aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/LambdaEventsGraalVMFeatureTest.java new file mode 100644 index 00000000..cac321f8 --- /dev/null +++ b/aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/LambdaEventsGraalVMFeatureTest.java @@ -0,0 +1,44 @@ +package com.amazonaws.services.lambda.runtime.events.graalvm; + +import com.amazonaws.services.lambda.runtime.graalvm.LambdaEventsGraalVMFeature; +import io.github.classgraph.ClassGraph; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.DynamicTest; +import org.junit.jupiter.api.TestFactory; + +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; +import java.util.stream.Stream; + +import static com.amazonaws.services.lambda.runtime.graalvm.LambdaEventsGraalVMFeature.EVENTS_PACKAGE_NAME; + +/** + * The aws-lambda-java-events library supports GraalVM by containing a reflect-config.json file. This is located + * src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/reflect-config.json + * + * This config is used my the GraalVM native-image tool in order to load the required classes and methods into the + * native binary it creates. + * + * Any event or response class added to this library needs to be added to this config file. + * + * The standalone class GraalVMConfigMaker located in this package while will generate the file for you. + * + */ +public class LambdaEventsGraalVMFeatureTest { + + @TestFactory + public Stream testEventClassesAreFound() throws IOException, ClassNotFoundException { + + Set> eventClassNames = new HashSet<>(LambdaEventsGraalVMFeature.getClasses(EVENTS_PACKAGE_NAME)); + + return new ClassGraph() + .enableClassInfo() + .acceptPackages(EVENTS_PACKAGE_NAME) + .scan().getAllClasses().stream() + .map(classInfo -> DynamicTest.dynamicTest("Test " + classInfo.getSimpleName(), () -> { + Class eventClass = classInfo.loadClass(); + Assertions.assertTrue(eventClassNames.contains(eventClass)); + })); + } +} \ No newline at end of file diff --git a/aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/ReflectConfigEntry.java b/aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/ReflectConfigEntry.java deleted file mode 100644 index 7f8a7f96..00000000 --- a/aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/ReflectConfigEntry.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.amazonaws.services.lambda.runtime.events.graalvm; - -public class ReflectConfigEntry { - - private String name; - private boolean allDeclaredFields; - private boolean allDeclaredMethods; - private boolean allDeclaredConstructors; - - public ReflectConfigEntry() { - } - - public ReflectConfigEntry(String name, boolean allDeclaredFields, boolean allDeclaredMethods, boolean allDeclaredConstructors) { - this.name = name; - this.allDeclaredFields = allDeclaredFields; - this.allDeclaredMethods = allDeclaredMethods; - this.allDeclaredConstructors = allDeclaredConstructors; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public boolean isAllDeclaredFields() { - return allDeclaredFields; - } - - public void setAllDeclaredFields(boolean allDeclaredFields) { - this.allDeclaredFields = allDeclaredFields; - } - - public boolean isAllDeclaredMethods() { - return allDeclaredMethods; - } - - public void setAllDeclaredMethods(boolean allDeclaredMethods) { - this.allDeclaredMethods = allDeclaredMethods; - } - - public boolean isAllDeclaredConstructors() { - return allDeclaredConstructors; - } - - public void setAllDeclaredConstructors(boolean allDeclaredConstructors) { - this.allDeclaredConstructors = allDeclaredConstructors; - } - - @Override - public String toString() { - final StringBuilder sb = new StringBuilder("ReflectConfigEntry{"); - sb.append("name='").append(name).append('\''); - sb.append(", allDeclaredFields=").append(allDeclaredFields); - sb.append(", allDeclaredMethods=").append(allDeclaredMethods); - sb.append(", allDeclaredConstructors=").append(allDeclaredConstructors); - sb.append('}'); - return sb.toString(); - } - - public static ReflectConfigEntry allTrue(String name) { - return new ReflectConfigEntry(name, true, true, true); - } -} \ No newline at end of file From 9430ae384b8e300f066ad9f5df5a72a4ed137a98 Mon Sep 17 00:00:00 2001 From: msailes Date: Tue, 13 Jul 2021 10:41:49 +0100 Subject: [PATCH 19/28] removing graalvm from the pr make --- aws-lambda-java-runtime-interface-client/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aws-lambda-java-runtime-interface-client/Makefile b/aws-lambda-java-runtime-interface-client/Makefile index bfcbcbd5..55a7c81e 100644 --- a/aws-lambda-java-runtime-interface-client/Makefile +++ b/aws-lambda-java-runtime-interface-client/Makefile @@ -31,7 +31,7 @@ dev: test # Verifications to run before sending a pull request .PHONY: pr -pr: test test-smoke test-graalvm +pr: test test-smoke .PHONY: build build: From 6c7ce8dddd2cc4f4810fae537d32476581f9487a Mon Sep 17 00:00:00 2001 From: msailes Date: Tue, 13 Jul 2021 10:43:04 +0100 Subject: [PATCH 20/28] Adding updated README.md from fafriat --- .../README.md | 224 +++++++++++++++++- 1 file changed, 220 insertions(+), 4 deletions(-) diff --git a/aws-lambda-java-runtime-interface-client/README.md b/aws-lambda-java-runtime-interface-client/README.md index 9f489be6..d01e006c 100644 --- a/aws-lambda-java-runtime-interface-client/README.md +++ b/aws-lambda-java-runtime-interface-client/README.md @@ -2,12 +2,12 @@ We have open-sourced a set of software packages, Runtime Interface Clients (RIC), that implement the Lambda [Runtime API](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html), allowing you to seamlessly extend your preferred - base images to be Lambda compatible. + base images to be Lambda compatible or to implement your own custom Lambda runtime. The Lambda Runtime Interface Client is a lightweight interface that allows your runtime to receive requests from and send requests to the Lambda service. -You can include this package in your preferred base image to make that base image Lambda compatible. +## Usage 1: Deploy your Lambda as a Container Image without native compilation -## Usage +You can include this package in your preferred base image to make that base image Lambda compatible. ### Creating a Docker Image for Lambda with the Runtime Interface Client @@ -70,7 +70,7 @@ pom.xml com.amazonaws aws-lambda-java-runtime-interface-client - 1.1.0 + 1.0.0 @@ -151,6 +151,222 @@ DOCKERHUB_PASSWORD= ``` Recommended way is to set the Docker Hub credentials in CodeBuild job by retrieving them from AWS Secrets Manager. +## Usage 2: Deploy your Lambda with Native Compilation + +You can include this package as a dependency to build your Custom Runtime or to run your Lambda as a Container without any Java Runtime. + +The idea here is to compile natively your java bytecode with [GraalVM](https://www.graalvm.org) [native-image](https://www.graalvm.org/reference-manual/native-image/) to a linux executable file. +In order to ease this native compilation of the Java Runtime Interface Client, the Java RIC jar artifact is now including special configuration files for GraalVM native-image. + +Note: In this example the docker image provided may be used +* For cross compiling only to linux x86-64 and extract the Custom Runtime zip to deploy +* For deploying your Lambda as a Container Image +* For local testing of your Container Image or your native executable. + +### Example: hello-lambda-native project + +Let's take the same Lambda as before: + +src/main/java/example/App.java +```java +package example; + +public class App { + public static String sayHello() { + return "Hello λ!"; + } +} +``` + +This is the needed configuration for native-image for finding the Lambda code: + +src/main/resources/META-INF/native-image/reflect-config.json +```json +[ +{ + "name":"example.App", + "allPublicMethods":true +} +] +``` + +When building a Custom Runtime you need a zip archive containing at root a file named bootstrap that will be the entry point for running your Lambda. In a Container, the same bootstrap file is used as ENTRYPOINT. And finally, it contains also the logic to identify the case of local testing: + +bootstrap +```bash +#!/bin/sh +if [ -z "${AWS_LAMBDA_RUNTIME_API}" ]; then + exec /usr/bin/aws-lambda-rie ./func $1 +else + set -euo pipefail + exec ./func $_HANDLER +fi +``` + +The Dockerfile is slightly more complex to support the three use cases described above: + +Dockerfile +```dockerfile +FROM amazonlinux:2 as base + +FROM base as build +ENV LANG=en_US.UTF-8 +RUN yum update -y && yum install -y gcc gcc-c++ zlib-devel zip tar gzip && yum clean all +RUN curl -4 -L https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.3.0/graalvm-ce-java11-linux-amd64-20.3.0.tar.gz -o /tmp/graalvm.tar.gz \ + && tar -zxf /tmp/graalvm.tar.gz -C /tmp \ + && mv /tmp/graalvm-ce-java11-20.3.0 /usr/lib/graalvm \ + && rm -rf /tmp/* +RUN /usr/lib/graalvm/bin/gu install native-image +ENV PATH=/usr/lib/graalvm/bin:${PATH} +ENV JAVA_HOME=/usr/lib/graalvm +RUN yum install -y maven + +# compile the function +WORKDIR /home/app +ADD . . +RUN mvn package + +COPY bootstrap /home/app/ +# (Optional) Add Lambda Runtime Interface Emulator and use a script in the ENTRYPOINT for simpler local runs +ADD https://github.com/aws/aws-lambda-runtime-interface-emulator/releases/latest/download/aws-lambda-rie /home/app/aws-lambda-rie +RUN native-image -jar target/hello-lambda-native-1.0-SNAPSHOT.jar -H:Name=func --no-fallback +RUN yum install -y zip && yum clean all +RUN chmod 755 aws-lambda-rie +RUN chmod 755 bootstrap +RUN chmod 755 func +RUN zip -j function.zip bootstrap func + +FROM base +WORKDIR /function +COPY --from=build /home/app/func /function/func +COPY --from=build /home/app/bootstrap /function/bootstrap +COPY --from=build /home/app/function.zip /function/function.zip +COPY --from=build /home/app/aws-lambda-rie /usr/bin/aws-lambda-rie +ENTRYPOINT [ "/function/bootstrap" ] +CMD [ "example.App::sayHello" ] +``` + +pom.xml +```xml + + 4.0.0 + example + hello-lambda-native + 1.0-SNAPSHOT + + + 11 + 11 + com.amazonaws.services.lambda.runtime.api.client.AWSLambda + + + + + com.amazonaws + aws-lambda-java-runtime-interface-client + 1.0.0 + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.6.0 + + ${jdk.version} + ${release.version} + UTF-8 + + + + + org.apache.maven.plugins + maven-dependency-plugin + 3.1.2 + + + copy-dependencies + prepare-package + + copy-dependencies + + + + ${project.build.directory}/libs + + + + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.2.0 + + + + true + libs/ + ${exec.mainClass} + + + + + + + + + + +``` + +### Custom Runtime + +just build the image with Docker: + +```bash +docker build -t hello-lambda-native:latest . +``` + +Then extract the Custom Runtime deployable zip bundle with this command: + +```bash +docker cp $(docker create hello-lambda-native:latest):/function/function.zip . +``` + +### Container with native compilation + +just build the image with Docker: + +```bash +docker build -t hello-lambda-native:latest . +``` + +This image can be deployed directly. + +### Local Testing + +just build the image with Docker: + +```bash +docker build -t hello-lambda-native:latest . +``` + +Then you can run the image locally: + +```bash +docker run -p 9000:8080 hello-lambda-native:latest +``` + +And test it from another Terminal/Console with: + +```bash +curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}' +``` + ## Security If you discover a potential security issue in this project we ask that you notify AWS/Amazon Security via our [vulnerability reporting page](http://aws.amazon.com/security/vulnerability-reporting/). Please do **not** create a public github issue. From c5b928f97e86ca81a0695e0244f2a1e3922c39fb Mon Sep 17 00:00:00 2001 From: msailes Date: Tue, 13 Jul 2021 10:49:32 +0100 Subject: [PATCH 21/28] improving the java docs --- .../graalvm/LambdaEventsGraalVMFeature.java | 14 +++++++++++++- .../graalvm/LambdaEventsGraalVMFeatureTest.java | 5 ++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/graalvm/LambdaEventsGraalVMFeature.java b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/graalvm/LambdaEventsGraalVMFeature.java index fd7eed30..57864015 100644 --- a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/graalvm/LambdaEventsGraalVMFeature.java +++ b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/graalvm/LambdaEventsGraalVMFeature.java @@ -13,6 +13,18 @@ import java.util.Enumeration; import java.util.List; +/** + * The aws-lambda-java-events library supports GraalVM by containing a reflect-config.json file. This is located + * src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/reflect-config.json + * + * This config is used by the GraalVM native-image tool in order to load the required classes and methods into the + * native binary it creates. + * + * Any event or response class added to this library needs to be added to this config file. + * + * This implementation of Feature does that by iterating through the events package and registering + * them for runtime reflection. + */ public class LambdaEventsGraalVMFeature implements Feature { public static final String EVENTS_PACKAGE_NAME = "com.amazonaws.services.lambda.runtime.events"; @@ -90,6 +102,6 @@ private void registerClass(Class cl) { for (Constructor constructor : cl.getDeclaredConstructors()) { RuntimeReflection.register(constructor); } - System.out.println(String.format("\tAdding constructors for %s", cl.getName())); + System.out.printf("\tAdding constructors for %s%n", cl.getName()); } } \ No newline at end of file diff --git a/aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/LambdaEventsGraalVMFeatureTest.java b/aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/LambdaEventsGraalVMFeatureTest.java index cac321f8..8b4b281b 100644 --- a/aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/LambdaEventsGraalVMFeatureTest.java +++ b/aws-lambda-java-events/src/test/java/com/amazonaws/services/lambda/runtime/events/graalvm/LambdaEventsGraalVMFeatureTest.java @@ -17,13 +17,12 @@ * The aws-lambda-java-events library supports GraalVM by containing a reflect-config.json file. This is located * src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/reflect-config.json * - * This config is used my the GraalVM native-image tool in order to load the required classes and methods into the + * This config is used by the GraalVM native-image tool in order to load the required classes and methods into the * native binary it creates. * * Any event or response class added to this library needs to be added to this config file. * - * The standalone class GraalVMConfigMaker located in this package while will generate the file for you. - * + * This test asserts that all the classes are included. */ public class LambdaEventsGraalVMFeatureTest { From c9479ad2577a3465104d3b44f804460f67856ddb Mon Sep 17 00:00:00 2001 From: msailes Date: Wed, 14 Jul 2021 08:56:19 +0100 Subject: [PATCH 22/28] adding the Feature for Core --- aws-lambda-java-core/pom.xml | 9 + .../graalvm/LambdaCoreGraalVMFeature.java | 51 + .../native-image.properties | 2 +- .../reflect-config.json | 961 ------------------ .../codebuild-local/Dockerfile.graalvm-agent | 8 +- 5 files changed, 65 insertions(+), 966 deletions(-) create mode 100644 aws-lambda-java-core/src/main/java/com/amazonaws/services/lambda/runtime/graalvm/LambdaCoreGraalVMFeature.java delete mode 100644 aws-lambda-java-events/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/reflect-config.json diff --git a/aws-lambda-java-core/pom.xml b/aws-lambda-java-core/pom.xml index 52d2976f..5f7a4d31 100644 --- a/aws-lambda-java-core/pom.xml +++ b/aws-lambda-java-core/pom.xml @@ -43,6 +43,15 @@ + + + org.graalvm.sdk + graal-sdk + 21.1.0 + compile + + + dev diff --git a/aws-lambda-java-core/src/main/java/com/amazonaws/services/lambda/runtime/graalvm/LambdaCoreGraalVMFeature.java b/aws-lambda-java-core/src/main/java/com/amazonaws/services/lambda/runtime/graalvm/LambdaCoreGraalVMFeature.java new file mode 100644 index 00000000..40ef8540 --- /dev/null +++ b/aws-lambda-java-core/src/main/java/com/amazonaws/services/lambda/runtime/graalvm/LambdaCoreGraalVMFeature.java @@ -0,0 +1,51 @@ +package com.amazonaws.services.lambda.runtime.graalvm; + +import com.amazonaws.services.lambda.runtime.LambdaRuntime; +import com.amazonaws.services.lambda.runtime.LambdaRuntimeInternal; +import org.graalvm.nativeimage.hosted.Feature; +import org.graalvm.nativeimage.hosted.RuntimeReflection; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.HashSet; +import java.util.Set; + +public class LambdaCoreGraalVMFeature implements Feature { + + private static final Set classesForReflectConfig = new HashSet<>(); + + static { + classesForReflectConfig.add(LambdaRuntime.class); + classesForReflectConfig.add(LambdaRuntimeInternal.class); + } + + @Override + public void beforeAnalysis(BeforeAnalysisAccess access) { + for (Class aClass : classesForReflectConfig) { + registerClass(aClass); + registerMethods(aClass); + registerFields(aClass); + } + } + + private void registerMethods(Class cl) { + for (Method method : cl.getDeclaredMethods()) { + RuntimeReflection.register(method); + } + } + + private void registerFields(Class cl) { + for (Field field : cl.getDeclaredFields()) { + RuntimeReflection.register(field); + } + } + + private void registerClass(Class cl) { + RuntimeReflection.register(cl); + for (Constructor constructor : cl.getDeclaredConstructors()) { + RuntimeReflection.register(constructor); + } + System.out.printf("\tAdding constructors for %s%n", cl.getName()); + } +} diff --git a/aws-lambda-java-core/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-core/native-image.properties b/aws-lambda-java-core/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-core/native-image.properties index 462b22b2..184ca275 100644 --- a/aws-lambda-java-core/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-core/native-image.properties +++ b/aws-lambda-java-core/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-core/native-image.properties @@ -1 +1 @@ -Args = -H:ReflectionConfigurationResources=${.}/reflect-config.json \ No newline at end of file +Args = --features=com.amazonaws.services.lambda.runtime.graalvm.LambdaCoreGraalVMFeature \ No newline at end of file diff --git a/aws-lambda-java-events/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/reflect-config.json b/aws-lambda-java-events/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/reflect-config.json deleted file mode 100644 index 75ad6f51..00000000 --- a/aws-lambda-java-events/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/reflect-config.json +++ /dev/null @@ -1,961 +0,0 @@ -[ { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisTimeWindowEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisTimeWindowEvent$KinesisTimeWindowEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.LambdaDestinationEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.LambdaDestinationEvent$LambdaDestinationEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.LambdaDestinationEvent$RequestContext", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoEvent$DatasetRecord", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsInputPreprocessingResponse", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsInputPreprocessingResponse$Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsInputPreprocessingResponse$Result", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayCustomAuthorizerEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayCustomAuthorizerEvent$APIGatewayCustomAuthorizerEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayCustomAuthorizerEvent$Identity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayCustomAuthorizerEvent$RequestContext", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent$RequestIdentity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent$ProxyRequestContext", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsStreamsInputPreprocessingEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsStreamsInputPreprocessingEvent$Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolVerifyAuthChallengeResponseEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolVerifyAuthChallengeResponseEvent$CognitoUserPoolVerifyAuthChallengeResponseEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolVerifyAuthChallengeResponseEvent$Response", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolVerifyAuthChallengeResponseEvent$Request", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsOutputDeliveryEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsOutputDeliveryEvent$Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPResponse", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPResponse$APIGatewayV2HTTPResponseBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3Event", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisEvent$KinesisEventRecord", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisEvent$Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2WebSocketEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2WebSocketEvent$RequestContext", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2WebSocketEvent$RequestIdentity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolCustomMessageEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolCustomMessageEvent$CognitoUserPoolCustomMessageEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolCustomMessageEvent$Response", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolCustomMessageEvent$Request", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.TimeWindowEventResponse", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.TimeWindowEventResponse$TimeWindowEventResponseBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.TimeWindowEventResponse$BatchItemFailure", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsOutputDeliveryResponse", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsOutputDeliveryResponse$Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsOutputDeliveryResponse$Result", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ApplicationLoadBalancerRequestEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ApplicationLoadBalancerRequestEvent$RequestContext", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ApplicationLoadBalancerRequestEvent$Elb", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPostConfirmationEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPostConfirmationEvent$CognitoUserPoolPostConfirmationEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPostConfirmationEvent$Request", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchResponse", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchResponse$S3BatchResponseBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchResponse$ResultCode", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchResponse$Result", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CodeCommitEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CodeCommitEvent$Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CodeCommitEvent$CodeCommit", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CodeCommitEvent$Reference", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SimpleIAMPolicyResponse", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SimpleIAMPolicyResponse$SimpleIAMPolicyResponseBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreTokenGenerationEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreTokenGenerationEvent$CognitoUserPoolPreTokenGenerationEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreTokenGenerationEvent$ClaimsOverrideDetails", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreTokenGenerationEvent$Response", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreTokenGenerationEvent$GroupConfiguration", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreTokenGenerationEvent$Request", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolDefineAuthChallengeEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolDefineAuthChallengeEvent$CognitoUserPoolDefineAuthChallengeEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolDefineAuthChallengeEvent$Response", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolDefineAuthChallengeEvent$ChallengeResult", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolDefineAuthChallengeEvent$Request", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SQSEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SQSEvent$SQSMessage", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SQSEvent$MessageAttribute", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.kinesis.EncryptionType", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.kinesis.Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$S3EventNotificationRecord", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$ResponseElementsEntity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$RequestParametersEntity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$S3Entity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$S3ObjectEntity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$S3BucketEntity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$UserIdentityEntity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.dynamodb.StreamViewType", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.dynamodb.AttributeValue", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.dynamodb.OperationType", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.dynamodb.Identity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.dynamodb.StreamRecord", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.dynamodb.Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.TimeWindow", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.TimeWindow$TimeWindowBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.LexEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.LexEvent$CurrentIntent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.LexEvent$Bot", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SNSEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SNSEvent$SNSRecord", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SNSEvent$SNS", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SNSEvent$MessageAttribute", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2CustomAuthorizerEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2CustomAuthorizerEvent$APIGatewayV2CustomAuthorizerEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2CustomAuthorizerEvent$Http", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2CustomAuthorizerEvent$RequestContext", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolEvent$CallerContext", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolEvent$Request", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsFirehoseInputPreprocessingEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsFirehoseInputPreprocessingEvent$Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPostAuthenticationEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPostAuthenticationEvent$CognitoUserPoolPostAuthenticationEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPostAuthenticationEvent$Request", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.DynamodbEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.DynamodbEvent$DynamodbStreamRecord", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SecretsManagerRotationEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SecretsManagerRotationEvent$SecretsManagerRotationEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchEvent$S3BatchEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchEvent$Task", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchEvent$Job", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2ProxyResponseEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ScheduledEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent$Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent$CF", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent$Response", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent$Request", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent$Config", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent$Header", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreSignUpEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreSignUpEvent$CognitoUserPoolPreSignUpEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreSignUpEvent$Response", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreSignUpEvent$Request", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2WebSocketResponse", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponse", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponse$IamPolicyResponseBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponse$Statement", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponse$PolicyDocument", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponseV1", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponseV1$IamPolicyResponseV1Builder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponseV1$Statement", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponseV1$PolicyDocument", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ApplicationLoadBalancerResponseEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2ProxyRequestEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudWatchLogsEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudWatchLogsEvent$AWSLogs", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolCreateAuthChallengeEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolCreateAuthChallengeEvent$CognitoUserPoolCreateAuthChallengeEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolCreateAuthChallengeEvent$Response", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolCreateAuthChallengeEvent$ChallengeResult", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolCreateAuthChallengeEvent$Request", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent$S3ObjectLambdaEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent$UserIdentity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent$UserRequest", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent$Configuration", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent$GetObjectContext", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.StreamsEventResponse", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.StreamsEventResponse$StreamsEventResponseBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.StreamsEventResponse$BatchItemFailure", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.DynamodbTimeWindowEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.DynamodbTimeWindowEvent$DynamodbTimeWindowEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreAuthenticationEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreAuthenticationEvent$CognitoUserPoolPreAuthenticationEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreAuthenticationEvent$Request", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KafkaEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KafkaEvent$KafkaEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KafkaEvent$TopicPartition", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KafkaEvent$KafkaEventRecord", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.IoTButtonEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolMigrateUserEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolMigrateUserEvent$CognitoUserPoolMigrateUserEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolMigrateUserEvent$Response", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolMigrateUserEvent$Request", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudFormationCustomResourceEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudFormationCustomResourceEvent$CloudFormationCustomResourceEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ConfigEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPEvent$APIGatewayV2HTTPEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPEvent$RequestContext", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ConnectEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ConnectEvent$ConnectEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ConnectEvent$SystemEndpoint", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ConnectEvent$CustomerEndpoint", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ConnectEvent$ContactData", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ConnectEvent$Details", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ActiveMQEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ActiveMQEvent$ActiveMQEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ActiveMQEvent$Destination", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ActiveMQEvent$ActiveMQMessage", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisFirehoseEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisFirehoseEvent$Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -} ] \ No newline at end of file diff --git a/aws-lambda-java-runtime-interface-client/test/integration/codebuild-local/Dockerfile.graalvm-agent b/aws-lambda-java-runtime-interface-client/test/integration/codebuild-local/Dockerfile.graalvm-agent index d265c77f..f53a7e4d 100644 --- a/aws-lambda-java-runtime-interface-client/test/integration/codebuild-local/Dockerfile.graalvm-agent +++ b/aws-lambda-java-runtime-interface-client/test/integration/codebuild-local/Dockerfile.graalvm-agent @@ -8,16 +8,16 @@ RUN yum -y update \ RUN amazon-linux-extras enable docker ENV GRAAL_VERSION 21.1.0 -ARG GRAAL_FOLDERNAME graalvm-ce-java11-${GRAAL_VERSION} -ARG GRAAL_FILENAME graalvm-ce-java11-linux-amd64-${GRAAL_VERSION}.tar.gz +ENV GRAAL_FOLDERNAME graalvm-ce-java11-${GRAAL_VERSION} +ENV GRAAL_FILENAME graalvm-ce-java11-linux-amd64-${GRAAL_VERSION}.tar.gz RUN curl -4 -L https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-${GRAAL_VERSION}/${GRAAL_FILENAME} | tar -xvz RUN mv $GRAAL_FOLDERNAME /usr/lib/graalvm RUN rm -rf $GRAAL_FOLDERNAME # Graal maven plugin requires Maven 3.3.x ENV MVN_VERSION 3.6.3 -ARG MVN_FOLDERNAME apache-maven-${MVN_VERSION} -ARG MVN_FILENAME apache-maven-${MVN_VERSION}-bin.tar.gz +ENV MVN_FOLDERNAME apache-maven-${MVN_VERSION} +ENV MVN_FILENAME apache-maven-${MVN_VERSION}-bin.tar.gz RUN curl -4 -L https://mirrors.ukfast.co.uk/sites/ftp.apache.org/maven/maven-3/${MVN_VERSION}/binaries/${MVN_FILENAME} | tar -xvz RUN mv $MVN_FOLDERNAME /usr/lib/maven RUN rm -rf $MVN_FOLDERNAME From e68cbb1cb836dad90a78ef40413f122a8c5bdfcc Mon Sep 17 00:00:00 2001 From: Richard Davison Date: Wed, 14 Jul 2021 13:28:38 +0200 Subject: [PATCH 23/28] Add GraalVM test for StreamHandler --- .../reflect-config.json | 961 ------------------ .../.gitignore | 1 + .../Makefile | 2 +- .../reflect-config.json | 11 +- .../buildspec.os.amazoncorretto.yml | 43 +- .../codebuild-local/Dockerfile.graalvm-agent | 11 +- .../docker/Dockerfile.function.graalvm | 4 +- .../integration/graalvm-test-handler/pom.xml | 5 + .../src/main/java/helloworld/App.java | 18 - .../java/helloworld/RequestHandlerApp.java | 25 + .../java/helloworld/StreamHandlerApp.java | 33 + .../META-INF/native-image/reflect-config.json | 11 +- 12 files changed, 135 insertions(+), 990 deletions(-) delete mode 100644 aws-lambda-java-events/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/reflect-config.json delete mode 100644 aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/java/helloworld/App.java create mode 100644 aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/java/helloworld/RequestHandlerApp.java create mode 100644 aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/java/helloworld/StreamHandlerApp.java diff --git a/aws-lambda-java-events/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/reflect-config.json b/aws-lambda-java-events/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/reflect-config.json deleted file mode 100644 index 75ad6f51..00000000 --- a/aws-lambda-java-events/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/reflect-config.json +++ /dev/null @@ -1,961 +0,0 @@ -[ { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisTimeWindowEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisTimeWindowEvent$KinesisTimeWindowEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.LambdaDestinationEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.LambdaDestinationEvent$LambdaDestinationEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.LambdaDestinationEvent$RequestContext", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoEvent$DatasetRecord", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsInputPreprocessingResponse", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsInputPreprocessingResponse$Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsInputPreprocessingResponse$Result", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayCustomAuthorizerEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayCustomAuthorizerEvent$APIGatewayCustomAuthorizerEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayCustomAuthorizerEvent$Identity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayCustomAuthorizerEvent$RequestContext", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent$RequestIdentity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent$ProxyRequestContext", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsStreamsInputPreprocessingEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsStreamsInputPreprocessingEvent$Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolVerifyAuthChallengeResponseEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolVerifyAuthChallengeResponseEvent$CognitoUserPoolVerifyAuthChallengeResponseEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolVerifyAuthChallengeResponseEvent$Response", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolVerifyAuthChallengeResponseEvent$Request", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsOutputDeliveryEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsOutputDeliveryEvent$Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPResponse", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPResponse$APIGatewayV2HTTPResponseBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3Event", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisEvent$KinesisEventRecord", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisEvent$Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2WebSocketEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2WebSocketEvent$RequestContext", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2WebSocketEvent$RequestIdentity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolCustomMessageEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolCustomMessageEvent$CognitoUserPoolCustomMessageEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolCustomMessageEvent$Response", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolCustomMessageEvent$Request", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.TimeWindowEventResponse", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.TimeWindowEventResponse$TimeWindowEventResponseBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.TimeWindowEventResponse$BatchItemFailure", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsOutputDeliveryResponse", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsOutputDeliveryResponse$Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsOutputDeliveryResponse$Result", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ApplicationLoadBalancerRequestEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ApplicationLoadBalancerRequestEvent$RequestContext", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ApplicationLoadBalancerRequestEvent$Elb", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPostConfirmationEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPostConfirmationEvent$CognitoUserPoolPostConfirmationEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPostConfirmationEvent$Request", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchResponse", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchResponse$S3BatchResponseBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchResponse$ResultCode", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchResponse$Result", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CodeCommitEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CodeCommitEvent$Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CodeCommitEvent$CodeCommit", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CodeCommitEvent$Reference", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SimpleIAMPolicyResponse", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SimpleIAMPolicyResponse$SimpleIAMPolicyResponseBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreTokenGenerationEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreTokenGenerationEvent$CognitoUserPoolPreTokenGenerationEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreTokenGenerationEvent$ClaimsOverrideDetails", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreTokenGenerationEvent$Response", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreTokenGenerationEvent$GroupConfiguration", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreTokenGenerationEvent$Request", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolDefineAuthChallengeEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolDefineAuthChallengeEvent$CognitoUserPoolDefineAuthChallengeEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolDefineAuthChallengeEvent$Response", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolDefineAuthChallengeEvent$ChallengeResult", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolDefineAuthChallengeEvent$Request", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SQSEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SQSEvent$SQSMessage", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SQSEvent$MessageAttribute", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.kinesis.EncryptionType", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.kinesis.Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$S3EventNotificationRecord", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$ResponseElementsEntity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$RequestParametersEntity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$S3Entity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$S3ObjectEntity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$S3BucketEntity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification$UserIdentityEntity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.dynamodb.StreamViewType", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.dynamodb.AttributeValue", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.dynamodb.OperationType", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.dynamodb.Identity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.dynamodb.StreamRecord", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.dynamodb.Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.TimeWindow", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.models.TimeWindow$TimeWindowBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.LexEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.LexEvent$CurrentIntent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.LexEvent$Bot", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SNSEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SNSEvent$SNSRecord", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SNSEvent$SNS", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SNSEvent$MessageAttribute", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2CustomAuthorizerEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2CustomAuthorizerEvent$APIGatewayV2CustomAuthorizerEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2CustomAuthorizerEvent$Http", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2CustomAuthorizerEvent$RequestContext", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolEvent$CallerContext", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolEvent$Request", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsFirehoseInputPreprocessingEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisAnalyticsFirehoseInputPreprocessingEvent$Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPostAuthenticationEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPostAuthenticationEvent$CognitoUserPoolPostAuthenticationEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPostAuthenticationEvent$Request", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.DynamodbEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.DynamodbEvent$DynamodbStreamRecord", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SecretsManagerRotationEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.SecretsManagerRotationEvent$SecretsManagerRotationEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchEvent$S3BatchEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchEvent$Task", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3BatchEvent$Job", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2ProxyResponseEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ScheduledEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent$Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent$CF", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent$Response", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent$Request", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent$Config", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudFrontEvent$Header", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreSignUpEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreSignUpEvent$CognitoUserPoolPreSignUpEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreSignUpEvent$Response", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreSignUpEvent$Request", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2WebSocketResponse", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponse", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponse$IamPolicyResponseBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponse$Statement", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponse$PolicyDocument", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponseV1", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponseV1$IamPolicyResponseV1Builder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponseV1$Statement", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.IamPolicyResponseV1$PolicyDocument", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ApplicationLoadBalancerResponseEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2ProxyRequestEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudWatchLogsEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudWatchLogsEvent$AWSLogs", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolCreateAuthChallengeEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolCreateAuthChallengeEvent$CognitoUserPoolCreateAuthChallengeEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolCreateAuthChallengeEvent$Response", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolCreateAuthChallengeEvent$ChallengeResult", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolCreateAuthChallengeEvent$Request", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent$S3ObjectLambdaEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent$UserIdentity", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent$UserRequest", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent$Configuration", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.S3ObjectLambdaEvent$GetObjectContext", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.StreamsEventResponse", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.StreamsEventResponse$StreamsEventResponseBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.StreamsEventResponse$BatchItemFailure", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.DynamodbTimeWindowEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.DynamodbTimeWindowEvent$DynamodbTimeWindowEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreAuthenticationEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreAuthenticationEvent$CognitoUserPoolPreAuthenticationEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreAuthenticationEvent$Request", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KafkaEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KafkaEvent$KafkaEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KafkaEvent$TopicPartition", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KafkaEvent$KafkaEventRecord", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.IoTButtonEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolMigrateUserEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolMigrateUserEvent$CognitoUserPoolMigrateUserEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolMigrateUserEvent$Response", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CognitoUserPoolMigrateUserEvent$Request", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudFormationCustomResourceEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.CloudFormationCustomResourceEvent$CloudFormationCustomResourceEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ConfigEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPEvent$APIGatewayV2HTTPEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPEvent$RequestContext", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ConnectEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ConnectEvent$ConnectEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ConnectEvent$SystemEndpoint", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ConnectEvent$CustomerEndpoint", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ConnectEvent$ContactData", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ConnectEvent$Details", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ActiveMQEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ActiveMQEvent$ActiveMQEventBuilder", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ActiveMQEvent$Destination", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.ActiveMQEvent$ActiveMQMessage", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisFirehoseEvent", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -}, { - "name" : "com.amazonaws.services.lambda.runtime.events.KinesisFirehoseEvent$Record", - "allDeclaredFields" : true, - "allDeclaredMethods" : true, - "allDeclaredConstructors" : true -} ] \ No newline at end of file diff --git a/aws-lambda-java-runtime-interface-client/.gitignore b/aws-lambda-java-runtime-interface-client/.gitignore index 73a7f328..9d69fcb7 100644 --- a/aws-lambda-java-runtime-interface-client/.gitignore +++ b/aws-lambda-java-runtime-interface-client/.gitignore @@ -1 +1,2 @@ compile-flags.txt +codebuild.* diff --git a/aws-lambda-java-runtime-interface-client/Makefile b/aws-lambda-java-runtime-interface-client/Makefile index 55a7c81e..585de89e 100644 --- a/aws-lambda-java-runtime-interface-client/Makefile +++ b/aws-lambda-java-runtime-interface-client/Makefile @@ -18,7 +18,7 @@ test-smoke: setup-codebuild-agent .PHONY: test-graalvm test-graalvm: - docker build -t codebuild-agent - < test/integration/codebuild-local/Dockerfile.graalvm-agent + docker build --progress=plain -t codebuild-agent - < test/integration/codebuild-local/Dockerfile.graalvm-agent CODEBUILD_IMAGE_TAG=codebuild-agent test/integration/codebuild-local/test_one.sh test/integration/codebuild-graalvm/buildspec.os.amazoncorretto.yml amazoncorretto amazoncorretto 11 .PHONY: test-integ diff --git a/aws-lambda-java-runtime-interface-client/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json b/aws-lambda-java-runtime-interface-client/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json index 630a721e..3f5968be 100644 --- a/aws-lambda-java-runtime-interface-client/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json +++ b/aws-lambda-java-runtime-interface-client/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json @@ -30,5 +30,14 @@ "name":"com.amazonaws.services.lambda.runtime.api.client.runtimeapi.InvocationRequest", "fields":[{"name":"id"}, {"name":"invokedFunctionArn"}, {"name":"deadlineTimeInMs"}, {"name":"xrayTraceId"}, {"name":"clientContext"}, {"name":"cognitoIdentity"}, {"name":"content"}], "allPublicMethods":true -} +}, + { + "name": "org.joda.time.DateTime", + "allDeclaredConstructors" : true, + "allPublicConstructors" : true, + "allDeclaredMethods" : true, + "allPublicMethods" : true, + "allDeclaredClasses" : true, + "allPublicClasses" : true + } ] diff --git a/aws-lambda-java-runtime-interface-client/test/integration/codebuild-graalvm/buildspec.os.amazoncorretto.yml b/aws-lambda-java-runtime-interface-client/test/integration/codebuild-graalvm/buildspec.os.amazoncorretto.yml index 69588060..68514585 100644 --- a/aws-lambda-java-runtime-interface-client/test/integration/codebuild-graalvm/buildspec.os.amazoncorretto.yml +++ b/aws-lambda-java-runtime-interface-client/test/integration/codebuild-graalvm/buildspec.os.amazoncorretto.yml @@ -68,7 +68,7 @@ phases: --network "${OS_DISTRIBUTION}-network" \ --entrypoint="" \ "${IMAGE_TAG}" \ - sh -c '/usr/bin/aws-lambda-rie ./hello-binary helloworld.App' + sh -c '/usr/bin/aws-lambda-rie ./hello-binary helloworld.RequestHandlerApp' - sleep 2 - > docker run \ @@ -96,6 +96,47 @@ phases: echo "---------------------------------------------------" exit -1 fi + - docker stop "${OS_DISTRIBUTION}-app" || true + - docker rm --force "${OS_DISTRIBUTION}-app" || true + - docker stop "${OS_DISTRIBUTION}-tester" || true + - docker rm --force "${OS_DISTRIBUTION}-tester" || true + - > + docker run \ + --detach \ + -e "JAVA_BINARY_LOCATION=${JAVA_BINARY_LOCATION}" \ + --name "${OS_DISTRIBUTION}-app" \ + --network "${OS_DISTRIBUTION}-network" \ + --entrypoint="" \ + "${IMAGE_TAG}" \ + sh -c '/usr/bin/aws-lambda-rie ./hello-binary helloworld.RequestHandlerApp' + - sleep 2 + - > + docker run \ + --name "${OS_DISTRIBUTION}-tester" \ + --env "TARGET=${OS_DISTRIBUTION}-app" \ + --network "${OS_DISTRIBUTION}-network" \ + --entrypoint="" \ + "${IMAGE_TAG}" \ + sh -c 'curl -X POST "http://${TARGET}:8080/2015-03-31/functions/function/invocations" -d "{}" --max-time 10' + - actual="$(docker logs --tail 1 "${OS_DISTRIBUTION}-tester" | xargs)" + - expected='success' + - | + echo "Response: ${actual}" + if [[ "$actual" != "$expected" ]]; then + echo "fail! runtime: $RUNTIME - expected output $expected - got $actual" + echo "---------Container Logs: ${OS_DISTRIBUTION}-app----------" + echo + docker logs "${OS_DISTRIBUTION}-app" + echo + echo "---------------------------------------------------" + echo "--------Container Logs: ${OS_DISTRIBUTION}-tester--------" + echo + docker logs "${OS_DISTRIBUTION}-tester" + echo + echo "---------------------------------------------------" + exit -1 + fi + finally: - echo "Cleaning up..." - docker stop "${OS_DISTRIBUTION}-app" || true diff --git a/aws-lambda-java-runtime-interface-client/test/integration/codebuild-local/Dockerfile.graalvm-agent b/aws-lambda-java-runtime-interface-client/test/integration/codebuild-local/Dockerfile.graalvm-agent index d265c77f..37aa024b 100644 --- a/aws-lambda-java-runtime-interface-client/test/integration/codebuild-local/Dockerfile.graalvm-agent +++ b/aws-lambda-java-runtime-interface-client/test/integration/codebuild-local/Dockerfile.graalvm-agent @@ -1,23 +1,24 @@ FROM amazoncorretto:11 +RUN amazon-linux-extras enable docker && yum clean metadata RUN yum -y update \ && yum install -y docker tar gzip bzip2-devel ed gcc gcc-c++ gcc-gfortran \ less libcurl-devel openssl openssl-devel readline-devel xz-devel \ zlib-devel glibc-static libcxx libcxx-devel llvm-toolset-7 zlib-static \ && rm -rf /var/cache/yum -RUN amazon-linux-extras enable docker + ENV GRAAL_VERSION 21.1.0 -ARG GRAAL_FOLDERNAME graalvm-ce-java11-${GRAAL_VERSION} -ARG GRAAL_FILENAME graalvm-ce-java11-linux-amd64-${GRAAL_VERSION}.tar.gz +ENV GRAAL_FOLDERNAME graalvm-ce-java11-${GRAAL_VERSION} +ENV GRAAL_FILENAME graalvm-ce-java11-linux-amd64-${GRAAL_VERSION}.tar.gz RUN curl -4 -L https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-${GRAAL_VERSION}/${GRAAL_FILENAME} | tar -xvz RUN mv $GRAAL_FOLDERNAME /usr/lib/graalvm RUN rm -rf $GRAAL_FOLDERNAME # Graal maven plugin requires Maven 3.3.x ENV MVN_VERSION 3.6.3 -ARG MVN_FOLDERNAME apache-maven-${MVN_VERSION} -ARG MVN_FILENAME apache-maven-${MVN_VERSION}-bin.tar.gz +ENV MVN_FOLDERNAME apache-maven-${MVN_VERSION} +ENV MVN_FILENAME apache-maven-${MVN_VERSION}-bin.tar.gz RUN curl -4 -L https://mirrors.ukfast.co.uk/sites/ftp.apache.org/maven/maven-3/${MVN_VERSION}/binaries/${MVN_FILENAME} | tar -xvz RUN mv $MVN_FOLDERNAME /usr/lib/maven RUN rm -rf $MVN_FOLDERNAME diff --git a/aws-lambda-java-runtime-interface-client/test/integration/docker/Dockerfile.function.graalvm b/aws-lambda-java-runtime-interface-client/test/integration/docker/Dockerfile.function.graalvm index 81e472f1..2df60167 100644 --- a/aws-lambda-java-runtime-interface-client/test/integration/docker/Dockerfile.function.graalvm +++ b/aws-lambda-java-runtime-interface-client/test/integration/docker/Dockerfile.function.graalvm @@ -4,6 +4,6 @@ FROM amazoncorretto:${RUNTIME_VERSION} ADD aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/target/hello-binary . -ENTRYPOINT ["hello-binary", "helloworld.App"] +ENTRYPOINT ["hello-binary", "helloworld.RequestHandlerApp"] -CMD ["helloworld.App"] +CMD ["helloworld.RequestHandlerApp"] diff --git a/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/pom.xml b/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/pom.xml index d5ffc030..0f4f6296 100644 --- a/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/pom.xml +++ b/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/pom.xml @@ -17,6 +17,11 @@ aws-lambda-java-runtime-interface-client 1.1.0 + + com.amazonaws + aws-lambda-java-events + 3.9.0 + diff --git a/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/java/helloworld/App.java b/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/java/helloworld/App.java deleted file mode 100644 index a2d0c6a6..00000000 --- a/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/java/helloworld/App.java +++ /dev/null @@ -1,18 +0,0 @@ -package helloworld; - -import com.amazonaws.services.lambda.runtime.Context; -import com.amazonaws.services.lambda.runtime.RequestHandler; - -import java.util.Map; - -/** - * Handler for requests to Lambda function. - */ -public class App implements RequestHandler, String>{ - @Override - public String handleRequest(Map event, Context context) - { - String response = new String("success"); - return response; - } -} diff --git a/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/java/helloworld/RequestHandlerApp.java b/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/java/helloworld/RequestHandlerApp.java new file mode 100644 index 00000000..db521bd8 --- /dev/null +++ b/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/java/helloworld/RequestHandlerApp.java @@ -0,0 +1,25 @@ +package helloworld; + +import com.amazonaws.services.lambda.runtime.Context; +import com.amazonaws.services.lambda.runtime.RequestHandler; + +import java.util.Map; + +/** + * Handler for requests to Lambda function. + */ +public class RequestHandlerApp implements RequestHandler, String>{ + @Override + public String handleRequest(Map event, Context context) + { + try{ + //test to make sure all events are available + Class.forName("com.amazonaws.services.lambda.runtime.events.CloudFrontEvent"); + }catch(Exception e){ + e.printStackTrace(); + return "error"; + } + + return "success"; + } +} diff --git a/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/java/helloworld/StreamHandlerApp.java b/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/java/helloworld/StreamHandlerApp.java new file mode 100644 index 00000000..f8e00906 --- /dev/null +++ b/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/java/helloworld/StreamHandlerApp.java @@ -0,0 +1,33 @@ +package helloworld; + +import com.amazonaws.services.lambda.runtime.Context; +import com.amazonaws.services.lambda.runtime.RequestHandler; +import com.amazonaws.services.lambda.runtime.RequestStreamHandler; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.nio.charset.StandardCharsets; +import java.util.Map; + +/** + * Handler for requests to Lambda function. + */ +public class StreamHandlerApp implements RequestStreamHandler { + + @Override + public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) throws IOException { + try{ + //test to make sure all events are available + Class.forName("com.amazonaws.services.lambda.runtime.events.CloudFrontEvent"); + }catch(Exception e){ + e.printStackTrace(); + outputStream.write("error".getBytes(StandardCharsets.UTF_8)); + outputStream.flush(); + return; + } + + outputStream.write("success".getBytes(StandardCharsets.UTF_8)); + outputStream.flush(); + } +} diff --git a/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/resources/META-INF/native-image/reflect-config.json b/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/resources/META-INF/native-image/reflect-config.json index d01f9378..375c6c10 100644 --- a/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/resources/META-INF/native-image/reflect-config.json +++ b/aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler/src/main/resources/META-INF/native-image/reflect-config.json @@ -1,6 +1,15 @@ [ { - "name": "helloworld.App", + "name": "helloworld.RequestHandlerApp", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "helloworld.StreamHandlerApp", "allDeclaredConstructors": true, "allPublicConstructors": true, "allDeclaredMethods": true, From a266a67abd0fcc3b4f2e347a22db68c557c43133 Mon Sep 17 00:00:00 2001 From: Richard Davison Date: Wed, 14 Jul 2021 13:30:54 +0200 Subject: [PATCH 24/28] ignore .DS_Store --- .gitignore | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index fbdc4bbe..739a59d8 100644 --- a/.gitignore +++ b/.gitignore @@ -21,4 +21,7 @@ dependency-reduced-pom.xml .gradle .settings .classpath -.project \ No newline at end of file +.project + +#MacOS +.DS_Store \ No newline at end of file From 47bbe1edf9ca95771a866053df0480ae5564a923 Mon Sep 17 00:00:00 2001 From: Richard Davison Date: Wed, 14 Jul 2021 16:04:32 +0200 Subject: [PATCH 25/28] Move GraalVM reflect-config.json to GraalVM features --- .../graalvm/LambdaCoreGraalVMFeature.java | 1 - .../pom.xml | 2 +- .../graalvm/LambdaRuntimeGraalVMFeature.java | 48 ++++++++++++++++ .../native-image.properties | 4 +- .../reflect-config.json | 27 +-------- .../buildspec.os.amazoncorretto.yml | 3 +- .../LambdaSerializationGraalVMFeature.java | 55 +++++++++++++++++++ .../native-image.properties | 3 +- 8 files changed, 112 insertions(+), 31 deletions(-) create mode 100644 aws-lambda-java-runtime-interface-client/src/main/java/com/amazonaws/services/lambda/runtime/api/client/graalvm/LambdaRuntimeGraalVMFeature.java create mode 100644 aws-lambda-java-serialization/src/main/java/com/amazonaws/services/lambda/runtime/serialization/graalvm/LambdaSerializationGraalVMFeature.java diff --git a/aws-lambda-java-core/src/main/java/com/amazonaws/services/lambda/runtime/graalvm/LambdaCoreGraalVMFeature.java b/aws-lambda-java-core/src/main/java/com/amazonaws/services/lambda/runtime/graalvm/LambdaCoreGraalVMFeature.java index 40ef8540..11696828 100644 --- a/aws-lambda-java-core/src/main/java/com/amazonaws/services/lambda/runtime/graalvm/LambdaCoreGraalVMFeature.java +++ b/aws-lambda-java-core/src/main/java/com/amazonaws/services/lambda/runtime/graalvm/LambdaCoreGraalVMFeature.java @@ -46,6 +46,5 @@ private void registerClass(Class cl) { for (Constructor constructor : cl.getDeclaredConstructors()) { RuntimeReflection.register(constructor); } - System.out.printf("\tAdding constructors for %s%n", cl.getName()); } } diff --git a/aws-lambda-java-runtime-interface-client/pom.xml b/aws-lambda-java-runtime-interface-client/pom.xml index 68f2e364..1a82d5e7 100644 --- a/aws-lambda-java-runtime-interface-client/pom.xml +++ b/aws-lambda-java-runtime-interface-client/pom.xml @@ -39,7 +39,7 @@ com.amazonaws aws-lambda-java-core - 1.2.0 + 1.2.1 com.amazonaws diff --git a/aws-lambda-java-runtime-interface-client/src/main/java/com/amazonaws/services/lambda/runtime/api/client/graalvm/LambdaRuntimeGraalVMFeature.java b/aws-lambda-java-runtime-interface-client/src/main/java/com/amazonaws/services/lambda/runtime/api/client/graalvm/LambdaRuntimeGraalVMFeature.java new file mode 100644 index 00000000..58b81f5d --- /dev/null +++ b/aws-lambda-java-runtime-interface-client/src/main/java/com/amazonaws/services/lambda/runtime/api/client/graalvm/LambdaRuntimeGraalVMFeature.java @@ -0,0 +1,48 @@ +package com.amazonaws.services.lambda.runtime.api.client.graalvm; + +import com.amazonaws.services.lambda.runtime.api.client.runtimeapi.InvocationRequest; +import org.graalvm.nativeimage.hosted.Feature; +import org.graalvm.nativeimage.hosted.RuntimeReflection; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.HashSet; +import java.util.Set; + +public class LambdaRuntimeGraalVMFeature implements Feature { + + private static final Set classesForReflectConfig = new HashSet<>(); + + static { + classesForReflectConfig.add(InvocationRequest.class); + } + + @Override + public void beforeAnalysis(BeforeAnalysisAccess access) { + for (Class aClass : classesForReflectConfig) { + registerClass(aClass); + registerMethods(aClass); + registerFields(aClass); + } + } + + private void registerMethods(Class cl) { + for (Method method : cl.getDeclaredMethods()) { + RuntimeReflection.register(method); + } + } + + private void registerFields(Class cl) { + for (Field field : cl.getDeclaredFields()) { + RuntimeReflection.register(field); + } + } + + private void registerClass(Class cl) { + RuntimeReflection.register(cl); + for (Constructor constructor : cl.getDeclaredConstructors()) { + RuntimeReflection.register(constructor); + } + } +} diff --git a/aws-lambda-java-runtime-interface-client/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/native-image.properties b/aws-lambda-java-runtime-interface-client/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/native-image.properties index 1ca4a3ca..c1ebbe99 100644 --- a/aws-lambda-java-runtime-interface-client/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/native-image.properties +++ b/aws-lambda-java-runtime-interface-client/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/native-image.properties @@ -1,4 +1,6 @@ Args = --initialize-at-build-time=jdk.xml.internal.SecuritySupport \ -H:ReflectionConfigurationResources=${.}/reflect-config.json \ -H:JNIConfigurationResources=${.}/jni-config.json \ --H:ResourceConfigurationResources=${.}/resource-config.json +-H:ResourceConfigurationResources=${.}/resource-config.json \ +--features=com.amazonaws.services.lambda.runtime.api.client.graalvm.LambdaRuntimeGraalVMFeature + diff --git a/aws-lambda-java-runtime-interface-client/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json b/aws-lambda-java-runtime-interface-client/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json index 3f5968be..80e8c7d3 100644 --- a/aws-lambda-java-runtime-interface-client/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json +++ b/aws-lambda-java-runtime-interface-client/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json @@ -1,15 +1,4 @@ [ -{ - "name":"com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.deser.Deserializers[]" -}, -{ - "name":"com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.ext.Java7SupportImpl", - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"com.amazonaws.services.lambda.runtime.LambdaRuntime", - "fields":[{"name":"logger"}] -}, { "name":"java.lang.Void", "methods":[{"name":"","parameterTypes":[] }] @@ -25,19 +14,5 @@ { "name":"sun.misc.Unsafe", "fields":[{"name":"theUnsafe"}] -}, -{ - "name":"com.amazonaws.services.lambda.runtime.api.client.runtimeapi.InvocationRequest", - "fields":[{"name":"id"}, {"name":"invokedFunctionArn"}, {"name":"deadlineTimeInMs"}, {"name":"xrayTraceId"}, {"name":"clientContext"}, {"name":"cognitoIdentity"}, {"name":"content"}], - "allPublicMethods":true -}, - { - "name": "org.joda.time.DateTime", - "allDeclaredConstructors" : true, - "allPublicConstructors" : true, - "allDeclaredMethods" : true, - "allPublicMethods" : true, - "allDeclaredClasses" : true, - "allPublicClasses" : true - } +} ] diff --git a/aws-lambda-java-runtime-interface-client/test/integration/codebuild-graalvm/buildspec.os.amazoncorretto.yml b/aws-lambda-java-runtime-interface-client/test/integration/codebuild-graalvm/buildspec.os.amazoncorretto.yml index 68514585..70491691 100644 --- a/aws-lambda-java-runtime-interface-client/test/integration/codebuild-graalvm/buildspec.os.amazoncorretto.yml +++ b/aws-lambda-java-runtime-interface-client/test/integration/codebuild-graalvm/buildspec.os.amazoncorretto.yml @@ -34,6 +34,7 @@ phases: # Install events (dependency of serialization) - (cd aws-lambda-java-events && mvn install -q) # Install serialization (dependency of RIC) + - (cd aws-lambda-java-core && mvn install -q) - (cd aws-lambda-java-serialization && mvn install -q) - (cd aws-lambda-java-runtime-interface-client && mvn install -q) - (cd aws-lambda-java-runtime-interface-client/test/integration/graalvm-test-handler && mvn install -P native-image) @@ -108,7 +109,7 @@ phases: --network "${OS_DISTRIBUTION}-network" \ --entrypoint="" \ "${IMAGE_TAG}" \ - sh -c '/usr/bin/aws-lambda-rie ./hello-binary helloworld.RequestHandlerApp' + sh -c '/usr/bin/aws-lambda-rie ./hello-binary helloworld.StreamHandlerApp' - sleep 2 - > docker run \ diff --git a/aws-lambda-java-serialization/src/main/java/com/amazonaws/services/lambda/runtime/serialization/graalvm/LambdaSerializationGraalVMFeature.java b/aws-lambda-java-serialization/src/main/java/com/amazonaws/services/lambda/runtime/serialization/graalvm/LambdaSerializationGraalVMFeature.java new file mode 100644 index 00000000..26a4a8d4 --- /dev/null +++ b/aws-lambda-java-serialization/src/main/java/com/amazonaws/services/lambda/runtime/serialization/graalvm/LambdaSerializationGraalVMFeature.java @@ -0,0 +1,55 @@ +package com.amazonaws.services.lambda.runtime.serialization.graalvm; + +import com.fasterxml.jackson.databind.deser.Deserializers; +import com.fasterxml.jackson.databind.ext.Java7Handlers; +import com.fasterxml.jackson.databind.ext.Java7HandlersImpl; +import com.fasterxml.jackson.databind.ext.Java7SupportImpl; +import com.fasterxml.jackson.databind.ser.Serializers; +import org.graalvm.nativeimage.hosted.Feature; +import org.graalvm.nativeimage.hosted.RuntimeReflection; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.HashSet; +import java.util.Set; + +public class LambdaSerializationGraalVMFeature implements Feature { + + private static final Set classesForReflectConfig = new HashSet<>(); + + static { + classesForReflectConfig.add(Deserializers.class); + classesForReflectConfig.add(Serializers.class); + classesForReflectConfig.add(Java7SupportImpl.class); + classesForReflectConfig.add(Java7HandlersImpl.class); + } + + @Override + public void beforeAnalysis(BeforeAnalysisAccess access) { + for (Class aClass : classesForReflectConfig) { + registerClass(aClass); + registerMethods(aClass); + registerFields(aClass); + } + } + + private void registerMethods(Class cl) { + for (Method method : cl.getDeclaredMethods()) { + RuntimeReflection.register(method); + } + } + + private void registerFields(Class cl) { + for (Field field : cl.getDeclaredFields()) { + RuntimeReflection.register(field); + } + } + + private void registerClass(Class cl) { + RuntimeReflection.register(cl); + for (Constructor constructor : cl.getDeclaredConstructors()) { + RuntimeReflection.register(constructor); + } + } +} diff --git a/aws-lambda-java-serialization/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-serialization/native-image.properties b/aws-lambda-java-serialization/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-serialization/native-image.properties index 462b22b2..3ed2e432 100644 --- a/aws-lambda-java-serialization/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-serialization/native-image.properties +++ b/aws-lambda-java-serialization/src/main/resources/META-INF/native-image/com/amazonaws/aws-lambda-java-serialization/native-image.properties @@ -1 +1,2 @@ -Args = -H:ReflectionConfigurationResources=${.}/reflect-config.json \ No newline at end of file +Args = -H:ReflectionConfigurationResources=${.}/reflect-config.json \ +--features=com.amazonaws.services.lambda.runtime.serialization.graalvm.LambdaSerializationGraalVMFeature \ No newline at end of file From 612c5a9df2526721cc641604774ce1f17a7abfe6 Mon Sep 17 00:00:00 2001 From: msailes Date: Thu, 15 Jul 2021 11:01:56 +0100 Subject: [PATCH 26/28] adding Javadocs to explain the Feature classes. --- .../lambda/runtime/graalvm/LambdaCoreGraalVMFeature.java | 9 +++++++++ .../api/client/graalvm/LambdaRuntimeGraalVMFeature.java | 9 +++++++++ .../graalvm/LambdaSerializationGraalVMFeature.java | 9 +++++++++ 3 files changed, 27 insertions(+) diff --git a/aws-lambda-java-core/src/main/java/com/amazonaws/services/lambda/runtime/graalvm/LambdaCoreGraalVMFeature.java b/aws-lambda-java-core/src/main/java/com/amazonaws/services/lambda/runtime/graalvm/LambdaCoreGraalVMFeature.java index 11696828..1ee8fb9b 100644 --- a/aws-lambda-java-core/src/main/java/com/amazonaws/services/lambda/runtime/graalvm/LambdaCoreGraalVMFeature.java +++ b/aws-lambda-java-core/src/main/java/com/amazonaws/services/lambda/runtime/graalvm/LambdaCoreGraalVMFeature.java @@ -11,6 +11,15 @@ import java.util.HashSet; import java.util.Set; +/** + * This class programmatically registers classes, methods and fields + * to be added to an application when used with GraalVM native-image. + * + * These specific classes are registered because GraalVM can't detect + * them during static analysis. + * + * @see GraalVM native-image + */ public class LambdaCoreGraalVMFeature implements Feature { private static final Set classesForReflectConfig = new HashSet<>(); diff --git a/aws-lambda-java-runtime-interface-client/src/main/java/com/amazonaws/services/lambda/runtime/api/client/graalvm/LambdaRuntimeGraalVMFeature.java b/aws-lambda-java-runtime-interface-client/src/main/java/com/amazonaws/services/lambda/runtime/api/client/graalvm/LambdaRuntimeGraalVMFeature.java index 58b81f5d..1edf9b0e 100644 --- a/aws-lambda-java-runtime-interface-client/src/main/java/com/amazonaws/services/lambda/runtime/api/client/graalvm/LambdaRuntimeGraalVMFeature.java +++ b/aws-lambda-java-runtime-interface-client/src/main/java/com/amazonaws/services/lambda/runtime/api/client/graalvm/LambdaRuntimeGraalVMFeature.java @@ -10,6 +10,15 @@ import java.util.HashSet; import java.util.Set; +/** + * This class programmatically registers classes, methods and fields + * to be added to an application when used with GraalVM native-image. + * + * These specific classes are registered because GraalVM can't detect + * them during static analysis. + * + * @see GraalVM native-image + */ public class LambdaRuntimeGraalVMFeature implements Feature { private static final Set classesForReflectConfig = new HashSet<>(); diff --git a/aws-lambda-java-serialization/src/main/java/com/amazonaws/services/lambda/runtime/serialization/graalvm/LambdaSerializationGraalVMFeature.java b/aws-lambda-java-serialization/src/main/java/com/amazonaws/services/lambda/runtime/serialization/graalvm/LambdaSerializationGraalVMFeature.java index 26a4a8d4..3cc3b004 100644 --- a/aws-lambda-java-serialization/src/main/java/com/amazonaws/services/lambda/runtime/serialization/graalvm/LambdaSerializationGraalVMFeature.java +++ b/aws-lambda-java-serialization/src/main/java/com/amazonaws/services/lambda/runtime/serialization/graalvm/LambdaSerializationGraalVMFeature.java @@ -14,6 +14,15 @@ import java.util.HashSet; import java.util.Set; +/** + * This class programmatically registers classes, methods and fields + * to be added to an application when used with GraalVM native-image. + * + * These specific classes are registered because GraalVM can't detect + * them during static analysis. + * + * @see GraalVM native-image + */ public class LambdaSerializationGraalVMFeature implements Feature { private static final Set classesForReflectConfig = new HashSet<>(); From ff795e64e1f9c568f46f31824e389c5d30fcf34d Mon Sep 17 00:00:00 2001 From: msailes Date: Thu, 15 Jul 2021 11:25:32 +0100 Subject: [PATCH 27/28] adding the compile time graalvm dependency. --- aws-lambda-java-runtime-interface-client/pom.xml | 7 +++++++ aws-lambda-java-serialization/pom.xml | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/aws-lambda-java-runtime-interface-client/pom.xml b/aws-lambda-java-runtime-interface-client/pom.xml index 1a82d5e7..229133c7 100644 --- a/aws-lambda-java-runtime-interface-client/pom.xml +++ b/aws-lambda-java-runtime-interface-client/pom.xml @@ -47,6 +47,13 @@ 1.0.0 + + org.graalvm.sdk + graal-sdk + 21.1.0 + compile + + org.junit.jupiter junit-jupiter-engine diff --git a/aws-lambda-java-serialization/pom.xml b/aws-lambda-java-serialization/pom.xml index bd3444c0..2f4059fe 100644 --- a/aws-lambda-java-serialization/pom.xml +++ b/aws-lambda-java-serialization/pom.xml @@ -52,6 +52,13 @@ 20160810 + + org.graalvm.sdk + graal-sdk + 21.1.0 + compile + + org.junit.jupiter junit-jupiter-engine From c27cb9abfeccb3d052f131c4217ff64cc1fd9cb2 Mon Sep 17 00:00:00 2001 From: msailes Date: Thu, 15 Jul 2021 13:19:20 +0100 Subject: [PATCH 28/28] moving the graalvm sdk to provided. --- aws-lambda-java-core/pom.xml | 2 +- aws-lambda-java-events/pom.xml | 2 +- aws-lambda-java-runtime-interface-client/pom.xml | 2 +- aws-lambda-java-serialization/pom.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/aws-lambda-java-core/pom.xml b/aws-lambda-java-core/pom.xml index 5f7a4d31..18b1312d 100644 --- a/aws-lambda-java-core/pom.xml +++ b/aws-lambda-java-core/pom.xml @@ -48,7 +48,7 @@ org.graalvm.sdk graal-sdk 21.1.0 - compile + provided diff --git a/aws-lambda-java-events/pom.xml b/aws-lambda-java-events/pom.xml index ab17c4e2..77142996 100644 --- a/aws-lambda-java-events/pom.xml +++ b/aws-lambda-java-events/pom.xml @@ -54,7 +54,7 @@ org.graalvm.sdk graal-sdk 21.1.0 - compile + provided diff --git a/aws-lambda-java-runtime-interface-client/pom.xml b/aws-lambda-java-runtime-interface-client/pom.xml index 229133c7..3063698a 100644 --- a/aws-lambda-java-runtime-interface-client/pom.xml +++ b/aws-lambda-java-runtime-interface-client/pom.xml @@ -51,7 +51,7 @@ org.graalvm.sdk graal-sdk 21.1.0 - compile + provided diff --git a/aws-lambda-java-serialization/pom.xml b/aws-lambda-java-serialization/pom.xml index 2f4059fe..8820041f 100644 --- a/aws-lambda-java-serialization/pom.xml +++ b/aws-lambda-java-serialization/pom.xml @@ -56,7 +56,7 @@ org.graalvm.sdk graal-sdk 21.1.0 - compile + provided