getMessages() {
+ return messages;
+ }
+ }
+
+ private void logMessages(LambdaLogger logger) {
+ logger.log("trace", LogLevel.TRACE);
+ logger.log("debug", LogLevel.DEBUG);
+ logger.log("info", LogLevel.INFO);
+ logger.log("warn", LogLevel.WARN);
+ logger.log("error", LogLevel.ERROR);
+ logger.log("fatal", LogLevel.FATAL);
+ }
+
+ @Test
+ public void testWithoutFiltering() {
+ TestLogger logger = new TestLogger(LogLevel.UNDEFINED, LogFormat.TEXT);
+ logMessages(logger);
+
+ assertEquals(6, logger.getMessages().size());
+ }
+
+ @Test
+ public void testWithFiltering() {
+ TestLogger logger = new TestLogger(LogLevel.WARN, LogFormat.TEXT);
+ logMessages(logger);
+
+ assertEquals(3, logger.getMessages().size());
+ }
+
+ @Test
+ public void testUndefinedLogLevelWithFiltering() {
+ TestLogger logger = new TestLogger(LogLevel.WARN, LogFormat.TEXT);
+ logger.log("undefined");
+
+ assertEquals(1, logger.getMessages().size());
+ }
+
+ @Test
+ public void testFormattingLogMessages() {
+ TestLogger logger = new TestLogger(LogLevel.INFO, LogFormat.TEXT);
+ logger.log("test message", LogLevel.INFO);
+
+ assertEquals(1, logger.getMessages().size());
+ assertEquals("[INFO] test message", new String(logger.getMessages().get(0)));
+ }
+}
diff --git a/aws-lambda-java-runtime-interface-client/src/test/java/com/amazonaws/services/lambda/runtime/api/client/logging/FrameTypeTest.java b/aws-lambda-java-runtime-interface-client/src/test/java/com/amazonaws/services/lambda/runtime/api/client/logging/FrameTypeTest.java
new file mode 100644
index 000000000..65078790c
--- /dev/null
+++ b/aws-lambda-java-runtime-interface-client/src/test/java/com/amazonaws/services/lambda/runtime/api/client/logging/FrameTypeTest.java
@@ -0,0 +1,39 @@
+package com.amazonaws.services.lambda.runtime.api.client.logging;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import org.junit.jupiter.api.Test;
+
+import com.amazonaws.services.lambda.runtime.logging.LogLevel;
+import com.amazonaws.services.lambda.runtime.logging.LogFormat;
+
+public class FrameTypeTest {
+
+ @Test
+ public void logFrames() {
+ assertHexEquals(
+ 0xa55a0003,
+ FrameType.getValue(LogLevel.UNDEFINED, LogFormat.TEXT)
+ );
+
+ assertHexEquals(
+ 0xa55a001b,
+ FrameType.getValue(LogLevel.FATAL, LogFormat.TEXT)
+ );
+ }
+
+
+ /**
+ * Helper function to make it easier to debug failing test.
+ *
+ * @param expected Expected value as int
+ * @param actual Actual value as int
+ */
+ private void assertHexEquals(int expected, int actual) {
+ assertEquals(
+ Integer.toHexString(expected),
+ Integer.toHexString(actual)
+ );
+ }
+
+}
diff --git a/aws-lambda-java-runtime-interface-client/src/test/java/com/amazonaws/services/lambda/runtime/api/client/logging/FramedTelemetryLogSinkTest.java b/aws-lambda-java-runtime-interface-client/src/test/java/com/amazonaws/services/lambda/runtime/api/client/logging/FramedTelemetryLogSinkTest.java
index e8dbb73bb..e3e68a693 100644
--- a/aws-lambda-java-runtime-interface-client/src/test/java/com/amazonaws/services/lambda/runtime/api/client/logging/FramedTelemetryLogSinkTest.java
+++ b/aws-lambda-java-runtime-interface-client/src/test/java/com/amazonaws/services/lambda/runtime/api/client/logging/FramedTelemetryLogSinkTest.java
@@ -20,6 +20,9 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
+import com.amazonaws.services.lambda.runtime.logging.LogLevel;
+import com.amazonaws.services.lambda.runtime.logging.LogFormat;
+
public class FramedTelemetryLogSinkTest {
private static final int DEFAULT_BUFFER_SIZE = 256;
@@ -35,13 +38,16 @@ private long timestamp() {
@Test
public void logSingleFrame() throws IOException {
- byte[] message = "hello world\nsomething on a new line!\n".getBytes();
+ byte[] message = "{\"message\": \"hello world\nsomething on a new line!\"}".getBytes();
+ LogLevel logLevel = LogLevel.ERROR;
+ LogFormat logFormat = LogFormat.JSON;
+
File tmpFile = tmpFolder.resolve("pipe").toFile();
FileOutputStream fos = new FileOutputStream(tmpFile);
FileDescriptor fd = fos.getFD();
long before = timestamp();
try (FramedTelemetryLogSink logSink = new FramedTelemetryLogSink(fd)) {
- logSink.log(message);
+ logSink.log(logLevel, logFormat, message);
}
long after = timestamp();
@@ -54,7 +60,7 @@ public void logSingleFrame() throws IOException {
// first 4 bytes indicate the type
int type = buf.getInt();
- assertEquals(FrameType.LOG.getValue(), type);
+ assertEquals(FrameType.getValue(logLevel, logFormat), type);
// next 4 bytes indicate the length of the message
int len = buf.getInt();
@@ -71,7 +77,7 @@ public void logSingleFrame() throws IOException {
assertArrayEquals(message, actual);
// rest of buffer should be empty
- while(buf.hasRemaining())
+ while (buf.hasRemaining())
assertEquals(ZERO_BYTE, buf.get());
}
@@ -79,13 +85,16 @@ public void logSingleFrame() throws IOException {
public void logMultipleFrames() throws IOException {
byte[] firstMessage = "hello world\nsomething on a new line!".getBytes();
byte[] secondMessage = "hello again\nhere's another message\n".getBytes();
+ LogLevel logLevel = LogLevel.ERROR;
+ LogFormat logFormat = LogFormat.TEXT;
+
File tmpFile = tmpFolder.resolve("pipe").toFile();
FileOutputStream fos = new FileOutputStream(tmpFile);
FileDescriptor fd = fos.getFD();
long before = timestamp();
try (FramedTelemetryLogSink logSink = new FramedTelemetryLogSink(fd)) {
- logSink.log(firstMessage);
- logSink.log(secondMessage);
+ logSink.log(logLevel, logFormat, firstMessage);
+ logSink.log(logLevel, logFormat, secondMessage);
}
long after = timestamp();
@@ -96,10 +105,10 @@ public void logMultipleFrames() throws IOException {
// reset the position to the start
buf.position(0);
- for(byte[] message : Arrays.asList(firstMessage, secondMessage)) {
+ for (byte[] message : Arrays.asList(firstMessage, secondMessage)) {
// first 4 bytes indicate the type
int type = buf.getInt();
- assertEquals(FrameType.LOG.getValue(), type);
+ assertEquals(FrameType.getValue(logLevel, logFormat), type);
// next 4 bytes indicate the length of the message
int len = buf.getInt();
@@ -117,7 +126,7 @@ public void logMultipleFrames() throws IOException {
}
// rest of buffer should be empty
- while(buf.hasRemaining())
+ while (buf.hasRemaining())
assertEquals(ZERO_BYTE, buf.get());
}
@@ -125,7 +134,7 @@ public void logMultipleFrames() throws IOException {
* The implementation of FramedTelemetryLogSink was based on java.nio.channels.WritableByteChannel which would
* throw ClosedByInterruptException if Thread.currentThread.interrupt() was called. The implementation was changed
* and this test ensures that logging works even if the current thread was interrupted.
- *
+ *
* https://t.corp.amazon.com/0304370986/
*/
@Test
@@ -138,7 +147,7 @@ public void interruptedThread() throws IOException {
try (FramedTelemetryLogSink logSink = new FramedTelemetryLogSink(fd)) {
Thread.currentThread().interrupt();
- logSink.log(message);
+ logSink.log(LogLevel.ERROR, LogFormat.TEXT, message);
}
byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
@@ -150,8 +159,8 @@ public void interruptedThread() throws IOException {
assertEquals(expectedBytes, readBytes);
- for(int i = 0; i < message.length; i++) {
- assertEquals(buffer[i + headerSizeBytes], message[i]);
+ for (int i = 0; i < message.length; i++) {
+ assertEquals(message[i], buffer[i + headerSizeBytes]);
}
} finally {
// clear interrupted status of the current thread
diff --git a/aws-lambda-java-runtime-interface-client/src/test/java/com/amazonaws/services/lambda/runtime/api/client/logging/JsonLogFormatterTest.java b/aws-lambda-java-runtime-interface-client/src/test/java/com/amazonaws/services/lambda/runtime/api/client/logging/JsonLogFormatterTest.java
new file mode 100644
index 000000000..8630d5fe6
--- /dev/null
+++ b/aws-lambda-java-runtime-interface-client/src/test/java/com/amazonaws/services/lambda/runtime/api/client/logging/JsonLogFormatterTest.java
@@ -0,0 +1,57 @@
+package com.amazonaws.services.lambda.runtime.api.client.logging;
+
+import com.amazonaws.services.lambda.runtime.api.client.api.LambdaContext;
+import com.amazonaws.services.lambda.runtime.serialization.PojoSerializer;
+import com.amazonaws.services.lambda.runtime.serialization.factories.GsonFactory;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+import com.amazonaws.services.lambda.runtime.logging.LogLevel;
+
+public class JsonLogFormatterTest {
+
+ @Test
+ void testFormattingWithoutLambdaContext() {
+ assertFormatsString("test log", LogLevel.WARN, null);
+ }
+
+ @Test
+ void testFormattingWithLambdaContext() {
+ LambdaContext context = new LambdaContext(
+ 0,
+ 0,
+ "request-id",
+ null,
+ null,
+ "function-name",
+ null,
+ null,
+ "function-arn",
+ null
+ );
+ assertFormatsString("test log", LogLevel.WARN, context);
+ }
+
+ void assertFormatsString(String message, LogLevel logLevel, LambdaContext context) {
+ JsonLogFormatter logFormatter = new JsonLogFormatter();
+ if (context != null) {
+ logFormatter.setLambdaContext(context);
+ }
+ String output = logFormatter.format(message, logLevel);
+
+ PojoSerializer serializer = GsonFactory.getInstance().getSerializer(StructuredLogMessage.class);
+ assert_expected_log_message(serializer.fromJson(output), message, logLevel, context);
+ }
+
+ void assert_expected_log_message(StructuredLogMessage result, String message, LogLevel logLevel, LambdaContext context) {
+ assertEquals(message, result.message);
+ assertEquals(logLevel, result.level);
+ assertNotNull(result.timestamp);
+
+ if (context != null) {
+ assertEquals(context.getAwsRequestId(), result.AWSRequestId);
+ }
+ }
+}
diff --git a/aws-lambda-java-runtime-interface-client/src/test/java/com/amazonaws/services/lambda/runtime/api/client/logging/StdOutLogSinkTest.java b/aws-lambda-java-runtime-interface-client/src/test/java/com/amazonaws/services/lambda/runtime/api/client/logging/StdOutLogSinkTest.java
index 83399646b..b1bbefc4c 100644
--- a/aws-lambda-java-runtime-interface-client/src/test/java/com/amazonaws/services/lambda/runtime/api/client/logging/StdOutLogSinkTest.java
+++ b/aws-lambda-java-runtime-interface-client/src/test/java/com/amazonaws/services/lambda/runtime/api/client/logging/StdOutLogSinkTest.java
@@ -10,6 +10,9 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
+import com.amazonaws.services.lambda.runtime.logging.LogFormat;
+import com.amazonaws.services.lambda.runtime.logging.LogLevel;
+
public class StdOutLogSinkTest {
private final PrintStream originalOutPrintStream = System.out;
@@ -35,6 +38,20 @@ public void testSingleLog() {
assertEquals("hello\nworld", bos.toString());
}
+ @Test
+ public void testSingleLogWithLogLevel() {
+ System.setOut(capturedOutPrintStream);
+ try {
+ try (StdOutLogSink logSink = new StdOutLogSink()) {
+ logSink.log(LogLevel.ERROR, LogFormat.TEXT, "hello\nworld".getBytes());
+ }
+ } finally {
+ System.setOut(originalOutPrintStream);
+ }
+
+ assertEquals("hello\nworld", bos.toString());
+ }
+
@Test
public void testContextLoggerWithStdoutLogSink_logBytes() {
System.setOut(capturedOutPrintStream);
diff --git a/aws-lambda-java-runtime-interface-client/src/test/java/com/amazonaws/services/lambda/runtime/api/client/logging/TextLogFormatterTest.java b/aws-lambda-java-runtime-interface-client/src/test/java/com/amazonaws/services/lambda/runtime/api/client/logging/TextLogFormatterTest.java
new file mode 100644
index 000000000..598074a3b
--- /dev/null
+++ b/aws-lambda-java-runtime-interface-client/src/test/java/com/amazonaws/services/lambda/runtime/api/client/logging/TextLogFormatterTest.java
@@ -0,0 +1,25 @@
+package com.amazonaws.services.lambda.runtime.api.client.logging;
+
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import com.amazonaws.services.lambda.runtime.logging.LogLevel;
+
+class TextLogFormatterTest {
+ @Test
+ void testFormattingStringWithLogLevel() {
+ assertFormatsString("test log", LogLevel.WARN, "[WARN] test log");
+ }
+
+ @Test
+ void testFormattingStringWithoutLogLevel() {
+ assertFormatsString("test log", LogLevel.UNDEFINED, "test log");
+ }
+
+ void assertFormatsString(String input, LogLevel logLevel, String expected) {
+ LogFormatter logFormatter = new TextLogFormatter();
+ String output = logFormatter.format(input, logLevel);
+ assertEquals(expected, output);
+ }
+}
\ No newline at end of file
From 0290728c4359e55e666d2921018a6c5393b7c301 Mon Sep 17 00:00:00 2001
From: Alexander Smirnov <75367056+smirnoal@users.noreply.github.com>
Date: Tue, 29 Aug 2023 13:22:46 +0100
Subject: [PATCH 010/130] Stage release 2.4.0 (#437)
---
README.md | 2 +-
aws-lambda-java-runtime-interface-client/README.md | 4 ++--
aws-lambda-java-runtime-interface-client/RELEASE.CHANGELOG.md | 4 ++++
aws-lambda-java-runtime-interface-client/pom.xml | 2 +-
.../test/integration/test-handler/pom.xml | 2 +-
5 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/README.md b/README.md
index dca5cdc79..73678fa69 100644
--- a/README.md
+++ b/README.md
@@ -140,7 +140,7 @@ The purpose of this package is to allow developers to deploy their applications
com.amazonaws
aws-lambda-java-runtime-interface-client
- 2.3.3
+ 2.4.0
```
diff --git a/aws-lambda-java-runtime-interface-client/README.md b/aws-lambda-java-runtime-interface-client/README.md
index 9a0bf988e..35f8d9da6 100644
--- a/aws-lambda-java-runtime-interface-client/README.md
+++ b/aws-lambda-java-runtime-interface-client/README.md
@@ -70,7 +70,7 @@ pom.xml
com.amazonaws
aws-lambda-java-runtime-interface-client
- 2.3.3
+ 2.4.0
@@ -160,7 +160,7 @@ platform-specific JAR by setting the ``.
com.amazonaws
aws-lambda-java-runtime-interface-client
- 2.3.3
+ 2.4.0
linux-x86_64
```
diff --git a/aws-lambda-java-runtime-interface-client/RELEASE.CHANGELOG.md b/aws-lambda-java-runtime-interface-client/RELEASE.CHANGELOG.md
index cf535e2c8..98527e942 100644
--- a/aws-lambda-java-runtime-interface-client/RELEASE.CHANGELOG.md
+++ b/aws-lambda-java-runtime-interface-client/RELEASE.CHANGELOG.md
@@ -1,3 +1,7 @@
+### August 29, 2023
+`2.4.0`
+- Logging improvements ([#436](https://github.com/aws/aws-lambda-java-libs/pull/436))
+
### July 17, 2023
`2.3.3`
- Build platform specific JAR files
diff --git a/aws-lambda-java-runtime-interface-client/pom.xml b/aws-lambda-java-runtime-interface-client/pom.xml
index 9dca71fbe..e3a123e50 100644
--- a/aws-lambda-java-runtime-interface-client/pom.xml
+++ b/aws-lambda-java-runtime-interface-client/pom.xml
@@ -4,7 +4,7 @@
4.0.0
com.amazonaws
aws-lambda-java-runtime-interface-client
- 2.3.3
+ 2.4.0
jar
AWS Lambda Java Runtime Interface Client
diff --git a/aws-lambda-java-runtime-interface-client/test/integration/test-handler/pom.xml b/aws-lambda-java-runtime-interface-client/test/integration/test-handler/pom.xml
index 76ccb6413..b743ba345 100644
--- a/aws-lambda-java-runtime-interface-client/test/integration/test-handler/pom.xml
+++ b/aws-lambda-java-runtime-interface-client/test/integration/test-handler/pom.xml
@@ -15,7 +15,7 @@
com.amazonaws
aws-lambda-java-runtime-interface-client
- 2.3.3
+ 2.4.0
From 55942419f189b64d1dd52e819d5052405a19303d Mon Sep 17 00:00:00 2001
From: Alexander Smirnov <75367056+smirnoal@users.noreply.github.com>
Date: Fri, 1 Sep 2023 11:36:55 +0100
Subject: [PATCH 011/130] Stage events 3.11.3 (#438)
---
README.md | 2 +-
aws-lambda-java-events/README.md | 27 ++-----------------
aws-lambda-java-events/RELEASE.CHANGELOG.md | 4 +++
aws-lambda-java-events/pom.xml | 2 +-
aws-lambda-java-tests/pom.xml | 2 +-
.../kinesis-firehose-event-handler/pom.xml | 2 +-
6 files changed, 10 insertions(+), 29 deletions(-)
diff --git a/README.md b/README.md
index 73678fa69..27af4eafc 100644
--- a/README.md
+++ b/README.md
@@ -71,7 +71,7 @@ public class SqsHandler implements RequestHandler {
com.amazonaws
aws-lambda-java-events
- 3.11.2
+ 3.11.3
```
diff --git a/aws-lambda-java-events/README.md b/aws-lambda-java-events/README.md
index 2c5bdb1fd..02c070826 100644
--- a/aws-lambda-java-events/README.md
+++ b/aws-lambda-java-events/README.md
@@ -56,9 +56,7 @@
* `SQSEvent`
-### Getting Started
-
-[Maven](https://maven.apache.org)
+### Usage
```xml
@@ -71,29 +69,8 @@
com.amazonaws
aws-lambda-java-events
- 3.11.2
+ 3.11.3
...
```
-
-[Gradle](https://gradle.org)
-
-```groovy
-'com.amazonaws:aws-lambda-java-core:1.2.1'
-'com.amazonaws:aws-lambda-java-events:3.11.0'
-```
-
-[Leiningen](http://leiningen.org) and [Boot](http://boot-clj.com)
-
-```clojure
-[com.amazonaws/aws-lambda-java-core "1.2.1"]
-[com.amazonaws/aws-lambda-java-events "3.11.0"]
-```
-
-[sbt](http://www.scala-sbt.org)
-
-```scala
-"com.amazonaws" % "aws-lambda-java-core" % "1.2.1"
-"com.amazonaws" % "aws-lambda-java-events" % "3.11.0"
-```
diff --git a/aws-lambda-java-events/RELEASE.CHANGELOG.md b/aws-lambda-java-events/RELEASE.CHANGELOG.md
index 7dc121870..3b29f1e08 100644
--- a/aws-lambda-java-events/RELEASE.CHANGELOG.md
+++ b/aws-lambda-java-events/RELEASE.CHANGELOG.md
@@ -1,3 +1,7 @@
+### September 1, 2023
+`3.11.3`:
+- Update challengeAnswer field format in CognitoUserPoolEvent
+
### May 18, 2023
`3.11.2`:
- Add missing fields to API Gateway request context
diff --git a/aws-lambda-java-events/pom.xml b/aws-lambda-java-events/pom.xml
index 76bb4dbcd..59cf05101 100644
--- a/aws-lambda-java-events/pom.xml
+++ b/aws-lambda-java-events/pom.xml
@@ -5,7 +5,7 @@
com.amazonaws
aws-lambda-java-events
- 3.11.2
+ 3.11.3
jar
AWS Lambda Java Events Library
diff --git a/aws-lambda-java-tests/pom.xml b/aws-lambda-java-tests/pom.xml
index c754655c4..5676d32b3 100644
--- a/aws-lambda-java-tests/pom.xml
+++ b/aws-lambda-java-tests/pom.xml
@@ -45,7 +45,7 @@
com.amazonaws
aws-lambda-java-events
- 3.11.2
+ 3.11.3
org.junit.jupiter
diff --git a/samples/kinesis-firehose-event-handler/pom.xml b/samples/kinesis-firehose-event-handler/pom.xml
index 5265443a7..c4a5ac21c 100644
--- a/samples/kinesis-firehose-event-handler/pom.xml
+++ b/samples/kinesis-firehose-event-handler/pom.xml
@@ -46,7 +46,7 @@
com.amazonaws
aws-lambda-java-events
- 3.11.2
+ 3.11.3
From 5777886e749570d51ce2798014acc02c19ff7777 Mon Sep 17 00:00:00 2001
From: Daniel Torok
Date: Mon, 4 Sep 2023 13:53:19 +0100
Subject: [PATCH 012/130] [alc] fix nullpointer exception when logging null
(#38) (#439)
* [alc] fix nullpointer exception when logging null
---------
Co-authored-by: Daniel Torok
---
.../client/logging/AbstractLambdaLogger.java | 3 +-
.../logging/AbstractLambdaLoggerTest.java | 95 ++++++++++++++++---
2 files changed, 84 insertions(+), 14 deletions(-)
diff --git a/aws-lambda-java-runtime-interface-client/src/main/java/com/amazonaws/services/lambda/runtime/api/client/logging/AbstractLambdaLogger.java b/aws-lambda-java-runtime-interface-client/src/main/java/com/amazonaws/services/lambda/runtime/api/client/logging/AbstractLambdaLogger.java
index b9aa44770..8246a3ad2 100644
--- a/aws-lambda-java-runtime-interface-client/src/main/java/com/amazonaws/services/lambda/runtime/api/client/logging/AbstractLambdaLogger.java
+++ b/aws-lambda-java-runtime-interface-client/src/main/java/com/amazonaws/services/lambda/runtime/api/client/logging/AbstractLambdaLogger.java
@@ -33,7 +33,8 @@ public AbstractLambdaLogger(LogLevel logLevel, LogFormat logFormat) {
protected abstract void logMessage(byte[] message, LogLevel logLevel);
protected void logMessage(String message, LogLevel logLevel) {
- logMessage(message.getBytes(UTF_8), logLevel);
+ byte[] messageBytes = message == null ? null : message.getBytes(UTF_8);
+ logMessage(messageBytes, logLevel);
}
@Override
diff --git a/aws-lambda-java-runtime-interface-client/src/test/java/com/amazonaws/services/lambda/runtime/api/client/logging/AbstractLambdaLoggerTest.java b/aws-lambda-java-runtime-interface-client/src/test/java/com/amazonaws/services/lambda/runtime/api/client/logging/AbstractLambdaLoggerTest.java
index dca307c97..baeb4c242 100644
--- a/aws-lambda-java-runtime-interface-client/src/test/java/com/amazonaws/services/lambda/runtime/api/client/logging/AbstractLambdaLoggerTest.java
+++ b/aws-lambda-java-runtime-interface-client/src/test/java/com/amazonaws/services/lambda/runtime/api/client/logging/AbstractLambdaLoggerTest.java
@@ -13,18 +13,26 @@
public class AbstractLambdaLoggerTest {
- class TestLogger extends AbstractLambdaLogger {
+ class TestSink implements LogSink {
private List messages = new LinkedList<>();
- public TestLogger(LogLevel logLevel, LogFormat logFormat) {
- super(logLevel, logFormat);
+ public TestSink() {
}
@Override
- protected void logMessage(byte[] message, LogLevel logLevel) {
+ public void log(byte[] message) {
messages.add(message);
}
+ @Override
+ public void log(LogLevel logLevel, LogFormat logFormat, byte[] message) {
+ messages.add(message);
+ }
+
+ @Override
+ public void close() {
+ }
+
List getMessages() {
return messages;
}
@@ -39,36 +47,97 @@ private void logMessages(LambdaLogger logger) {
logger.log("fatal", LogLevel.FATAL);
}
+ @Test
+ public void testLoggingNullValuesWithoutLogLevelInText() {
+ TestSink sink = new TestSink();
+ LambdaLogger logger = new LambdaContextLogger(sink, LogLevel.INFO, LogFormat.TEXT);
+
+ String isNullString = null;
+ byte[] isNullBytes = null;
+
+ logger.log(isNullString);
+ logger.log(isNullBytes);
+
+ assertEquals("null", new String(sink.getMessages().get(0)));
+ assertEquals("null", new String(sink.getMessages().get(1)));
+ }
+
+ @Test
+ public void testLoggingNullValuesWithoutLogLevelInJSON() {
+ TestSink sink = new TestSink();
+ LambdaLogger logger = new LambdaContextLogger(sink, LogLevel.INFO, LogFormat.JSON);
+
+ String isNullString = null;
+ byte[] isNullBytes = null;
+
+ logger.log(isNullString);
+ logger.log(isNullBytes);
+
+ assertEquals(2, sink.getMessages().size());
+ }
+
+ @Test
+ public void testLoggingNullValuesWithLogLevelInText() {
+ TestSink sink = new TestSink();
+ LambdaLogger logger = new LambdaContextLogger(sink, LogLevel.INFO, LogFormat.TEXT);
+
+ String isNullString = null;
+ byte[] isNullBytes = null;
+
+ logger.log(isNullString, LogLevel.ERROR);
+ logger.log(isNullBytes, LogLevel.ERROR);
+
+ assertEquals("[ERROR] null", new String(sink.getMessages().get(0)));
+ assertEquals("null", new String(sink.getMessages().get(1)));
+ }
+
+ @Test
+ public void testLoggingNullValuesWithLogLevelInJSON() {
+ TestSink sink = new TestSink();
+ LambdaLogger logger = new LambdaContextLogger(sink, LogLevel.INFO, LogFormat.JSON);
+
+ String isNullString = null;
+ byte[] isNullBytes = null;
+
+ logger.log(isNullString, LogLevel.ERROR);
+ logger.log(isNullBytes, LogLevel.ERROR);
+
+ assertEquals(2, sink.getMessages().size());
+ }
@Test
public void testWithoutFiltering() {
- TestLogger logger = new TestLogger(LogLevel.UNDEFINED, LogFormat.TEXT);
+ TestSink sink = new TestSink();
+ LambdaLogger logger = new LambdaContextLogger(sink, LogLevel.UNDEFINED, LogFormat.TEXT);
logMessages(logger);
- assertEquals(6, logger.getMessages().size());
+ assertEquals(6, sink.getMessages().size());
}
@Test
public void testWithFiltering() {
- TestLogger logger = new TestLogger(LogLevel.WARN, LogFormat.TEXT);
+ TestSink sink = new TestSink();
+ LambdaLogger logger = new LambdaContextLogger(sink, LogLevel.WARN, LogFormat.TEXT);
logMessages(logger);
- assertEquals(3, logger.getMessages().size());
+ assertEquals(3, sink.getMessages().size());
}
@Test
public void testUndefinedLogLevelWithFiltering() {
- TestLogger logger = new TestLogger(LogLevel.WARN, LogFormat.TEXT);
+ TestSink sink = new TestSink();
+ LambdaLogger logger = new LambdaContextLogger(sink, LogLevel.WARN, LogFormat.TEXT);
logger.log("undefined");
- assertEquals(1, logger.getMessages().size());
+ assertEquals(1, sink.getMessages().size());
}
@Test
public void testFormattingLogMessages() {
- TestLogger logger = new TestLogger(LogLevel.INFO, LogFormat.TEXT);
+ TestSink sink = new TestSink();
+ LambdaLogger logger = new LambdaContextLogger(sink, LogLevel.INFO, LogFormat.TEXT);
logger.log("test message", LogLevel.INFO);
- assertEquals(1, logger.getMessages().size());
- assertEquals("[INFO] test message", new String(logger.getMessages().get(0)));
+ assertEquals(1, sink.getMessages().size());
+ assertEquals("[INFO] test message", new String(sink.getMessages().get(0)));
}
}
From fbc973cdcfc45972fccbcc1f185262f3c51e630a Mon Sep 17 00:00:00 2001
From: Daniel Torok
Date: Mon, 4 Sep 2023 14:03:21 +0100
Subject: [PATCH 013/130] Version bump to 2.4.1 (#440)
Co-authored-by: Daniel Torok
---
aws-lambda-java-runtime-interface-client/README.md | 4 ++--
aws-lambda-java-runtime-interface-client/RELEASE.CHANGELOG.md | 4 ++++
aws-lambda-java-runtime-interface-client/pom.xml | 2 +-
.../test/integration/test-handler/pom.xml | 2 +-
4 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/aws-lambda-java-runtime-interface-client/README.md b/aws-lambda-java-runtime-interface-client/README.md
index 35f8d9da6..c9194c0c9 100644
--- a/aws-lambda-java-runtime-interface-client/README.md
+++ b/aws-lambda-java-runtime-interface-client/README.md
@@ -70,7 +70,7 @@ pom.xml
com.amazonaws
aws-lambda-java-runtime-interface-client
- 2.4.0
+ 2.4.1
@@ -160,7 +160,7 @@ platform-specific JAR by setting the ``.
com.amazonaws
aws-lambda-java-runtime-interface-client
- 2.4.0
+ 2.4.1
linux-x86_64
```
diff --git a/aws-lambda-java-runtime-interface-client/RELEASE.CHANGELOG.md b/aws-lambda-java-runtime-interface-client/RELEASE.CHANGELOG.md
index 98527e942..09a85363b 100644
--- a/aws-lambda-java-runtime-interface-client/RELEASE.CHANGELOG.md
+++ b/aws-lambda-java-runtime-interface-client/RELEASE.CHANGELOG.md
@@ -1,3 +1,7 @@
+### September 4, 2023
+`2.4.1`
+- Null pointer bugfix ([#439](https://github.com/aws/aws-lambda-java-libs/pull/439))
+
### August 29, 2023
`2.4.0`
- Logging improvements ([#436](https://github.com/aws/aws-lambda-java-libs/pull/436))
diff --git a/aws-lambda-java-runtime-interface-client/pom.xml b/aws-lambda-java-runtime-interface-client/pom.xml
index e3a123e50..fe299bdd1 100644
--- a/aws-lambda-java-runtime-interface-client/pom.xml
+++ b/aws-lambda-java-runtime-interface-client/pom.xml
@@ -4,7 +4,7 @@
4.0.0
com.amazonaws
aws-lambda-java-runtime-interface-client
- 2.4.0
+ 2.4.1
jar
AWS Lambda Java Runtime Interface Client
diff --git a/aws-lambda-java-runtime-interface-client/test/integration/test-handler/pom.xml b/aws-lambda-java-runtime-interface-client/test/integration/test-handler/pom.xml
index b743ba345..028e92f56 100644
--- a/aws-lambda-java-runtime-interface-client/test/integration/test-handler/pom.xml
+++ b/aws-lambda-java-runtime-interface-client/test/integration/test-handler/pom.xml
@@ -15,7 +15,7 @@
com.amazonaws
aws-lambda-java-runtime-interface-client
- 2.4.0
+ 2.4.1
From 8d9a267dd5666a8e88339af18c8ce06a27d0df54 Mon Sep 17 00:00:00 2001
From: Nikolay Metchev
Date: Mon, 11 Sep 2023 12:39:14 +0100
Subject: [PATCH 014/130] Add super.toString() to Cognito events (#441)
---
.../events/CognitoUserPoolCreateAuthChallengeEvent.java | 2 ++
.../runtime/events/CognitoUserPoolCustomMessageEvent.java | 2 ++
.../events/CognitoUserPoolDefineAuthChallengeEvent.java | 2 ++
.../lambda/runtime/events/CognitoUserPoolMigrateUserEvent.java | 2 ++
.../runtime/events/CognitoUserPoolPostAuthenticationEvent.java | 3 +++
.../runtime/events/CognitoUserPoolPostConfirmationEvent.java | 3 +++
.../runtime/events/CognitoUserPoolPreAuthenticationEvent.java | 3 +++
.../lambda/runtime/events/CognitoUserPoolPreSignUpEvent.java | 2 ++
.../runtime/events/CognitoUserPoolPreTokenGenerationEvent.java | 2 ++
.../CognitoUserPoolVerifyAuthChallengeResponseEvent.java | 2 ++
10 files changed, 23 insertions(+)
diff --git a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolCreateAuthChallengeEvent.java b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolCreateAuthChallengeEvent.java
index 6739d27f4..6074ca9b5 100644
--- a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolCreateAuthChallengeEvent.java
+++ b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolCreateAuthChallengeEvent.java
@@ -26,6 +26,7 @@
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
+@ToString(callSuper = true)
public class CognitoUserPoolCreateAuthChallengeEvent extends CognitoUserPoolEvent {
/**
@@ -56,6 +57,7 @@ public CognitoUserPoolCreateAuthChallengeEvent(
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
+ @ToString(callSuper = true)
public static class Request extends CognitoUserPoolEvent.Request {
/**
* One or more key-value pairs that you can provide as custom input to the Lambda function that you specify for the create auth challenge trigger.
diff --git a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolCustomMessageEvent.java b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolCustomMessageEvent.java
index f8642c75c..403f85393 100644
--- a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolCustomMessageEvent.java
+++ b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolCustomMessageEvent.java
@@ -26,6 +26,7 @@
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
+@ToString(callSuper = true)
public class CognitoUserPoolCustomMessageEvent extends CognitoUserPoolEvent {
/**
* The request from the Amazon Cognito service.
@@ -55,6 +56,7 @@ public CognitoUserPoolCustomMessageEvent(
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
+ @ToString(callSuper = true)
public static class Request extends CognitoUserPoolEvent.Request {
/**
* One or more key-value pairs that you can provide as custom input to the Lambda function that you specify for the custom message trigger.
diff --git a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolDefineAuthChallengeEvent.java b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolDefineAuthChallengeEvent.java
index 33fcf53ad..8577c9f7a 100644
--- a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolDefineAuthChallengeEvent.java
+++ b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolDefineAuthChallengeEvent.java
@@ -26,6 +26,7 @@
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
+@ToString(callSuper = true)
public class CognitoUserPoolDefineAuthChallengeEvent extends CognitoUserPoolEvent {
/**
@@ -56,6 +57,7 @@ public CognitoUserPoolDefineAuthChallengeEvent(
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
+ @ToString(callSuper = true)
public static class Request extends CognitoUserPoolEvent.Request {
/**
* One or more key-value pairs that you can provide as custom input to the Lambda function that you specify for the define auth challenge trigger.
diff --git a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolMigrateUserEvent.java b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolMigrateUserEvent.java
index ee47c360e..381010a76 100644
--- a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolMigrateUserEvent.java
+++ b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolMigrateUserEvent.java
@@ -26,6 +26,7 @@
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
+@ToString(callSuper = true)
public class CognitoUserPoolMigrateUserEvent extends CognitoUserPoolEvent {
/**
* The request from the Amazon Cognito service.
@@ -55,6 +56,7 @@ public CognitoUserPoolMigrateUserEvent(
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
+ @ToString(callSuper = true)
public static class Request extends CognitoUserPoolEvent.Request {
/**
* The username entered by the user.
diff --git a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolPostAuthenticationEvent.java b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolPostAuthenticationEvent.java
index 5d2f5089f..de1af6565 100644
--- a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolPostAuthenticationEvent.java
+++ b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolPostAuthenticationEvent.java
@@ -16,6 +16,7 @@
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
+import lombok.ToString;
import java.util.Map;
@@ -29,6 +30,7 @@
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
+@ToString(callSuper = true)
public class CognitoUserPoolPostAuthenticationEvent extends CognitoUserPoolEvent {
/**
@@ -52,6 +54,7 @@ public CognitoUserPoolPostAuthenticationEvent(
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
+ @ToString(callSuper = true)
public static class Request extends CognitoUserPoolEvent.Request {
/**
* One or more key-value pairs that you can provide as custom input to the Lambda function that you specify for the post authentication trigger.
diff --git a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolPostConfirmationEvent.java b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolPostConfirmationEvent.java
index 340b2a885..4a835489d 100644
--- a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolPostConfirmationEvent.java
+++ b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolPostConfirmationEvent.java
@@ -16,6 +16,7 @@
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
+import lombok.ToString;
import java.util.Map;
@@ -29,6 +30,7 @@
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
+@ToString(callSuper = true)
public class CognitoUserPoolPostConfirmationEvent extends CognitoUserPoolEvent {
/**
@@ -52,6 +54,7 @@ public CognitoUserPoolPostConfirmationEvent(
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
+ @ToString(callSuper = true)
public static class Request extends CognitoUserPoolEvent.Request {
/**
* One or more key-value pairs that you can provide as custom input to the Lambda function that you specify for the post confirmation trigger.
diff --git a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolPreAuthenticationEvent.java b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolPreAuthenticationEvent.java
index 26f45bb99..110160415 100644
--- a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolPreAuthenticationEvent.java
+++ b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolPreAuthenticationEvent.java
@@ -16,6 +16,7 @@
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
+import lombok.ToString;
import java.util.Map;
@@ -29,6 +30,7 @@
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
+@ToString(callSuper = true)
public class CognitoUserPoolPreAuthenticationEvent extends CognitoUserPoolEvent {
/**
@@ -52,6 +54,7 @@ public CognitoUserPoolPreAuthenticationEvent(
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
+ @ToString(callSuper = true)
public static class Request extends CognitoUserPoolEvent.Request {
/**
* One or more name-value pairs containing the validation data in the request to register a user.
diff --git a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolPreSignUpEvent.java b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolPreSignUpEvent.java
index 2a7f0e3fc..da7a848e5 100644
--- a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolPreSignUpEvent.java
+++ b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolPreSignUpEvent.java
@@ -26,6 +26,7 @@
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
+@ToString(callSuper = true)
public class CognitoUserPoolPreSignUpEvent extends CognitoUserPoolEvent {
/**
@@ -56,6 +57,7 @@ public CognitoUserPoolPreSignUpEvent(
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
+ @ToString(callSuper = true)
public static class Request extends CognitoUserPoolEvent.Request {
/**
* One or more name-value pairs containing the validation data in the request to register a user.
diff --git a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolPreTokenGenerationEvent.java b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolPreTokenGenerationEvent.java
index db73bbd99..e49ce3c40 100644
--- a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolPreTokenGenerationEvent.java
+++ b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolPreTokenGenerationEvent.java
@@ -26,6 +26,7 @@
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
+@ToString(callSuper = true)
public class CognitoUserPoolPreTokenGenerationEvent extends CognitoUserPoolEvent {
/**
* The request from the Amazon Cognito service.
@@ -55,6 +56,7 @@ public CognitoUserPoolPreTokenGenerationEvent(
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
+ @ToString(callSuper = true)
public static class Request extends CognitoUserPoolEvent.Request {
/**
* One or more key-value pairs that you can provide as custom input to the Lambda function that you specify for the pre token generation trigger.
diff --git a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolVerifyAuthChallengeResponseEvent.java b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolVerifyAuthChallengeResponseEvent.java
index c8de149ed..982ff72fd 100644
--- a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolVerifyAuthChallengeResponseEvent.java
+++ b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/CognitoUserPoolVerifyAuthChallengeResponseEvent.java
@@ -26,6 +26,7 @@
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
+@ToString(callSuper = true)
public class CognitoUserPoolVerifyAuthChallengeResponseEvent extends CognitoUserPoolEvent {
/**
* The request from the Amazon Cognito service.
@@ -55,6 +56,7 @@ public CognitoUserPoolVerifyAuthChallengeResponseEvent(
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
+ @ToString(callSuper = true)
public static class Request extends CognitoUserPoolEvent.Request {
/**
* One or more key-value pairs that you can provide as custom input to the Lambda function that you specify for the verify auth challenge trigger.
From 90155b3db0f59f93d442eb533e735e9e0041b552 Mon Sep 17 00:00:00 2001
From: Anton Stepanov <110172761+anton-stepanof@users.noreply.github.com>
Date: Tue, 26 Sep 2023 17:46:14 +0100
Subject: [PATCH 015/130] Add support for events v4 (#445)
---
.../RELEASE.CHANGELOG.md | 4 ++++
aws-lambda-java-serialization/pom.xml | 23 ++++++++++++++++++-
.../verify-relocation.sh | 2 +-
3 files changed, 27 insertions(+), 2 deletions(-)
diff --git a/aws-lambda-java-serialization/RELEASE.CHANGELOG.md b/aws-lambda-java-serialization/RELEASE.CHANGELOG.md
index d1a3cd97d..259c78e54 100644
--- a/aws-lambda-java-serialization/RELEASE.CHANGELOG.md
+++ b/aws-lambda-java-serialization/RELEASE.CHANGELOG.md
@@ -1,3 +1,7 @@
+### September 21, 2023
+`1.1.3`:
+- Add support for event v4 lib
+
### February 22, 2023
`1.1.1`:
- Register `JodaModule` to JacksonFactory
diff --git a/aws-lambda-java-serialization/pom.xml b/aws-lambda-java-serialization/pom.xml
index d87f2b29e..bdfa13b20 100644
--- a/aws-lambda-java-serialization/pom.xml
+++ b/aws-lambda-java-serialization/pom.xml
@@ -4,7 +4,7 @@
com.amazonaws
aws-lambda-java-serialization
- 1.1.2
+ 1.1.3
jar
AWS Lambda Java Runtime Serialization
@@ -211,6 +211,27 @@
com.fasterxml.jackson
${relocation.prefix}.com.fasterxml.jackson
+
+ com.fasterxml.jackson.annotation.JsonInclude
+ com.fasterxml.jackson.annotation.JsonInclude$Value
+ com.fasterxml.jackson.annotation.JsonInclude$Include
+ com.fasterxml.jackson.annotation.JsonProperty
+ com.fasterxml.jackson.annotation.JsonProperty$Access
+ com.fasterxml.jackson.annotation.JsonFormat
+ com.fasterxml.jackson.annotation.JsonFormat$Shape
+ com.fasterxml.jackson.annotation.JsonFormat$Feature
+ com.fasterxml.jackson.annotation.JsonIgnore
+ com.fasterxml.jackson.annotation.JsonSerialize
+ com.fasterxml.jackson.annotation.JsonView
+ com.fasterxml.jackson.annotation.JsonTypeInfo
+ com.fasterxml.jackson.annotation.JsonRawValue
+ com.fasterxml.jackson.annotation.JsonUnwrapped
+ com.fasterxml.jackson.annotation.JsonBackReference
+ com.fasterxml.jackson.annotation.JsonManagedReference
+ com.fasterxml.jackson.annotation.JacksonAnnotation
+ com.fasterxml.jackson.annotation.JacksonAnnotationValue
+ com.fasterxml.jackson.annotation.OptBoolean
+
com.google.gson
diff --git a/aws-lambda-java-serialization/verify-relocation.sh b/aws-lambda-java-serialization/verify-relocation.sh
index d44cae7f4..78f2e63b8 100755
--- a/aws-lambda-java-serialization/verify-relocation.sh
+++ b/aws-lambda-java-serialization/verify-relocation.sh
@@ -19,7 +19,7 @@ if [[ ! -z "$OUTPUT" ]]; then
fi
echo 'Validating that everything other than serialization module classes were relocated'
-OUTPUT=$(zipinfo ${ARTIFACT_PATH} | grep '.class' | grep -v ${SERIALIZATION_MODULE_PATTERN//.//} | grep -v 'META-INF' | grep -v ${RELOCATION_PREFIX//.//} || true)
+OUTPUT=$(zipinfo ${ARTIFACT_PATH} | grep '.class' | grep -v ${SERIALIZATION_MODULE_PATTERN//.//} | grep -v 'com.fasterxml.jackson.annotation' | grep -v 'META-INF' | grep -v ${RELOCATION_PREFIX//.//} || true)
if [[ ! -z "$OUTPUT" ]]; then
echo "Some classes were not relocated"
echo ${OUTPUT}
From d3f23cea5050a296093abf0828c34ccd8333bb4f Mon Sep 17 00:00:00 2001
From: Vince Renders <57711162+render3d@users.noreply.github.com>
Date: Mon, 16 Oct 2023 16:38:27 +0100
Subject: [PATCH 016/130] Added missing 'version' field to ScheduledEvent from
CloudWatch (#447)
* Adding version field to avoid UnrecognizedPropertyException upon invocation of lambdas
---
.../lambda/runtime/events/ScheduledEvent.java | 56 +++++++++++++++----
1 file changed, 44 insertions(+), 12 deletions(-)
diff --git a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/ScheduledEvent.java b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/ScheduledEvent.java
index 5908c39c3..405ede583 100644
--- a/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/ScheduledEvent.java
+++ b/aws-lambda-java-events/src/main/java/com/amazonaws/services/lambda/runtime/events/ScheduledEvent.java
@@ -26,6 +26,8 @@ public class ScheduledEvent implements Serializable, Cloneable {
private static final long serialVersionUID = -5810383198587331146L;
+ private String version;
+
private String account;
private String region;
@@ -47,6 +49,29 @@ public class ScheduledEvent implements Serializable, Cloneable {
*/
public ScheduledEvent() {}
+ /**
+ * @return the version number
+ */
+ public String getVersion() {
+ return version;
+ }
+
+ /**
+ * @param version the version number
+ */
+ public void setVersion(String version) {
+ this.version = version;
+ }
+
+ /**
+ * @param version version number
+ * @return ScheduledEvent
+ */
+ public ScheduledEvent withVersion(String version) {
+ setVersion(version);
+ return this;
+ }
+
/**
* @return the account id
*/
@@ -69,7 +94,7 @@ public ScheduledEvent withAccount(String account) {
setAccount(account);
return this;
}
-
+
/**
* @return the aws region
*/
@@ -92,7 +117,7 @@ public ScheduledEvent withRegion(String region) {
setRegion(region);
return this;
}
-
+
/**
* @return The details of the events (usually left blank)
*/
@@ -115,7 +140,7 @@ public ScheduledEvent withDetail(Map detail) {
setDetail(detail);
return this;
}
-
+
/**
* @return The details type - see cloud watch events for more info
*/
@@ -138,19 +163,19 @@ public ScheduledEvent withDetailType(String detailType) {
setDetailType(detailType);
return this;
}
-
+
/**
- * @return the soruce of the event
+ * @return the source of the event
*/
public String getSource() {
return source;
}
/**
- * @param soruce the soruce of the event
+ * @param source the source of the event
*/
- public void setSource(String soruce) {
- this.source = soruce;
+ public void setSource(String source) {
+ this.source = source;
}
/**
@@ -161,7 +186,7 @@ public ScheduledEvent withSource(String source) {
setSource(source);
return this;
}
-
+
/**
* @return the timestamp for when the event is scheduled
*/
@@ -184,7 +209,7 @@ public ScheduledEvent withTime(DateTime time) {
setTime(time);
return this;
}
-
+
/**
* @return the id of the event
*/
@@ -207,7 +232,7 @@ public ScheduledEvent withId(String id) {
setId(id);
return this;
}
-
+
/**
* @return the resources used by event
*/
@@ -242,6 +267,8 @@ public ScheduledEvent withResources(List resources) {
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("{");
+ if (getVersion() != null)
+ sb.append("version: ").append(getVersion()).append(",");
if (getAccount() != null)
sb.append("account: ").append(getAccount()).append(",");
if (getRegion() != null)
@@ -272,6 +299,10 @@ public boolean equals(Object obj) {
if (obj instanceof ScheduledEvent == false)
return false;
ScheduledEvent other = (ScheduledEvent) obj;
+ if (other.getVersion() == null ^ this.getVersion() == null)
+ return false;
+ if (other.getVersion() != null && other.getVersion().equals(this.getVersion()) == false)
+ return false;
if (other.getAccount() == null ^ this.getAccount() == null)
return false;
if (other.getAccount() != null && other.getAccount().equals(this.getAccount()) == false)
@@ -312,6 +343,7 @@ public int hashCode() {
final int prime = 31;
int hashCode = 1;
+ hashCode = prime * hashCode + ((getVersion() == null) ? 0 : getVersion().hashCode());
hashCode = prime * hashCode + ((getAccount() == null) ? 0 : getAccount().hashCode());
hashCode = prime * hashCode + ((getRegion() == null) ? 0 : getRegion().hashCode());
hashCode = prime * hashCode + ((getDetail() == null) ? 0 : getDetail().hashCode());
@@ -331,5 +363,5 @@ public ScheduledEvent clone() {
throw new IllegalStateException("Got a CloneNotSupportedException from Object.clone()", e);
}
}
-
+
}
From 04b6e9667791c89641963888ad2881de2c7b9694 Mon Sep 17 00:00:00 2001
From: Alexander Smirnov <75367056+smirnoal@users.noreply.github.com>
Date: Thu, 19 Oct 2023 14:13:37 +0100
Subject: [PATCH 017/130] Stage aws-lambda-java-serialization 1.1.4 (#450)
---
README.md | 2 +-
.../RELEASE.CHANGELOG.md | 5 ++++
aws-lambda-java-serialization/pom.xml | 25 ++-----------------
.../verify-relocation.sh | 2 +-
aws-lambda-java-tests/pom.xml | 2 +-
5 files changed, 10 insertions(+), 26 deletions(-)
diff --git a/README.md b/README.md
index 27af4eafc..61bce30e2 100644
--- a/README.md
+++ b/README.md
@@ -154,7 +154,7 @@ This package defines the Lambda serialization logic using in the `aws-lambda-jav
com.amazonaws
aws-lambda-java-serialization
- 1.0.1
+ 1.1.4
```
diff --git a/aws-lambda-java-serialization/RELEASE.CHANGELOG.md b/aws-lambda-java-serialization/RELEASE.CHANGELOG.md
index 259c78e54..7e6939ed6 100644
--- a/aws-lambda-java-serialization/RELEASE.CHANGELOG.md
+++ b/aws-lambda-java-serialization/RELEASE.CHANGELOG.md
@@ -1,3 +1,8 @@
+### October 19, 2023
+`1.1.4`:
+- Update org.json version to 20231013
+- Rollback relocation changes(1.1.3 version)
+
### September 21, 2023
`1.1.3`:
- Add support for event v4 lib
diff --git a/aws-lambda-java-serialization/pom.xml b/aws-lambda-java-serialization/pom.xml
index bdfa13b20..7a665f213 100644
--- a/aws-lambda-java-serialization/pom.xml
+++ b/aws-lambda-java-serialization/pom.xml
@@ -4,7 +4,7 @@
com.amazonaws
aws-lambda-java-serialization
- 1.1.3
+ 1.1.4
jar
AWS Lambda Java Runtime Serialization
@@ -34,7 +34,7 @@
com.amazonaws.lambda.thirdparty
2.14.2
2.10.1
- 20230227
+ 20231013
7.3.2
@@ -211,27 +211,6 @@
com.fasterxml.jackson
${relocation.prefix}.com.fasterxml.jackson
-
- com.fasterxml.jackson.annotation.JsonInclude
- com.fasterxml.jackson.annotation.JsonInclude$Value
- com.fasterxml.jackson.annotation.JsonInclude$Include
- com.fasterxml.jackson.annotation.JsonProperty
- com.fasterxml.jackson.annotation.JsonProperty$Access
- com.fasterxml.jackson.annotation.JsonFormat
- com.fasterxml.jackson.annotation.JsonFormat$Shape
- com.fasterxml.jackson.annotation.JsonFormat$Feature
- com.fasterxml.jackson.annotation.JsonIgnore
- com.fasterxml.jackson.annotation.JsonSerialize
- com.fasterxml.jackson.annotation.JsonView
- com.fasterxml.jackson.annotation.JsonTypeInfo
- com.fasterxml.jackson.annotation.JsonRawValue
- com.fasterxml.jackson.annotation.JsonUnwrapped
- com.fasterxml.jackson.annotation.JsonBackReference
- com.fasterxml.jackson.annotation.JsonManagedReference
- com.fasterxml.jackson.annotation.JacksonAnnotation
- com.fasterxml.jackson.annotation.JacksonAnnotationValue
- com.fasterxml.jackson.annotation.OptBoolean
-
com.google.gson
diff --git a/aws-lambda-java-serialization/verify-relocation.sh b/aws-lambda-java-serialization/verify-relocation.sh
index 78f2e63b8..d44cae7f4 100755
--- a/aws-lambda-java-serialization/verify-relocation.sh
+++ b/aws-lambda-java-serialization/verify-relocation.sh
@@ -19,7 +19,7 @@ if [[ ! -z "$OUTPUT" ]]; then
fi
echo 'Validating that everything other than serialization module classes were relocated'
-OUTPUT=$(zipinfo ${ARTIFACT_PATH} | grep '.class' | grep -v ${SERIALIZATION_MODULE_PATTERN//.//} | grep -v 'com.fasterxml.jackson.annotation' | grep -v 'META-INF' | grep -v ${RELOCATION_PREFIX//.//} || true)
+OUTPUT=$(zipinfo ${ARTIFACT_PATH} | grep '.class' | grep -v ${SERIALIZATION_MODULE_PATTERN//.//} | grep -v 'META-INF' | grep -v ${RELOCATION_PREFIX//.//} || true)
if [[ ! -z "$OUTPUT" ]]; then
echo "Some classes were not relocated"
echo ${OUTPUT}
diff --git a/aws-lambda-java-tests/pom.xml b/aws-lambda-java-tests/pom.xml
index 5676d32b3..931095a87 100644
--- a/aws-lambda-java-tests/pom.xml
+++ b/aws-lambda-java-tests/pom.xml
@@ -40,7 +40,7 @@
com.amazonaws
aws-lambda-java-serialization
- 1.1.2
+ 1.1.4
com.amazonaws
From 5a94e196bb2a37afad708c66a5e10357ec9461f0 Mon Sep 17 00:00:00 2001
From: Daniel Torok
Date: Fri, 3 Nov 2023 13:06:07 +0000
Subject: [PATCH 018/130] [alc] Log4j2 support (#37) (#454)
* [alc] Log4j2 support
* [log4j2] bump aws-lambda-java-core deps to 1.2.3
* [log4j2] version bump and doc updates
---------
Co-authored-by: Daniel Torok
---
README.md | 8 +--
aws-lambda-java-log4j2/README.md | 25 ++++++----
aws-lambda-java-log4j2/RELEASE.CHANGELOG.md | 4 ++
aws-lambda-java-log4j2/pom.xml | 4 +-
.../lambda/runtime/log4j2/LambdaAppender.java | 50 +++++++++++++++++--
.../runtime/log4j2/LambdaJsonFormat.java | 29 +++++++++++
.../runtime/log4j2/LambdaTextFormat.java | 29 +++++++++++
.../src/main/resources/LambdaLayout.json | 39 +++++++++++++++
8 files changed, 169 insertions(+), 19 deletions(-)
create mode 100644 aws-lambda-java-log4j2/src/main/java/com/amazonaws/services/lambda/runtime/log4j2/LambdaJsonFormat.java
create mode 100644 aws-lambda-java-log4j2/src/main/java/com/amazonaws/services/lambda/runtime/log4j2/LambdaTextFormat.java
create mode 100644 aws-lambda-java-log4j2/src/main/resources/LambdaLayout.json
diff --git a/README.md b/README.md
index 61bce30e2..22cebffec 100644
--- a/README.md
+++ b/README.md
@@ -21,7 +21,7 @@ Example request handler
public class Handler implements RequestHandler