1+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+ // SPDX-License-Identifier: MIT-0
3+
14package example ;
25
36import com .amazonaws .services .lambda .runtime .Context ;
4- import com .amazonaws .services .lambda .runtime .LambdaLogger ;
57import com .amazonaws .services .lambda .runtime .RequestStreamHandler ;
8+ import com .fasterxml .jackson .annotation .JsonProperty ;
9+ import com .fasterxml .jackson .databind .ObjectMapper ;
610
7- import java .io .InputStream ;
8- import java .io .InputStreamReader ;
9- import java .io .BufferedReader ;
10- import java .io .BufferedWriter ;
1111import java .io .IOException ;
12+ import java .io .InputStream ;
1213import java .io .OutputStream ;
13- import java .io .OutputStreamWriter ;
14- import java .io .PrintWriter ;
15- import java .nio .charset .Charset ;
14+ import java .util .List ;
1615
17- // Handler value: example.HandlerStream
1816public class HandlerStream implements RequestStreamHandler {
1917
20- @ Override
21- /*
22- * Takes an InputStream and an OutputStream. Reads from the InputStream,
23- * and copies all characters to the OutputStream.
24- */
25- public void handleRequest (InputStream inputStream , OutputStream outputStream , Context context ) throws IOException
26- {
27- LambdaLogger logger = context .getLogger ();
28- BufferedReader reader = new BufferedReader (new InputStreamReader (inputStream , Charset .forName ("US-ASCII" )));
29- PrintWriter writer = new PrintWriter (new BufferedWriter (new OutputStreamWriter (outputStream , Charset .forName ("US-ASCII" ))));
30- int nextChar ;
31- try {
32- while ((nextChar = reader .read ()) != -1 ) {
33- outputStream .write (nextChar );
34- }
35- } catch (IOException e ) {
36- e .printStackTrace ();
37- } finally {
38- reader .close ();
39- String finalString = writer .toString ();
40- logger .log ("Final string result: " + finalString );
41- writer .close ();
18+ private static final ObjectMapper objectMapper = new ObjectMapper ();
19+
20+ @ Override
21+ public void handleRequest (InputStream input , OutputStream output , Context context ) throws IOException {
22+ Order order = objectMapper .readValue (input , Order .class );
23+
24+ processOrder (order );
25+ OrderAccepted orderAccepted = new OrderAccepted (order .orderId );
26+
27+ objectMapper .writeValue (output , orderAccepted );
4228 }
43- }
29+
30+ private void processOrder (Order order ) {
31+ // business logic
32+ }
33+
34+ public record Order (@ JsonProperty ("orderId" ) String orderId , @ JsonProperty ("items" ) List <Item > items ) { }
35+
36+ public record Item (@ JsonProperty ("name" ) String name , @ JsonProperty ("quantity" ) Integer quantity ) { }
37+
38+ public record OrderAccepted (@ JsonProperty ("orderId" ) String orderId ) { }
4439}
0 commit comments