Skip to content

Commit 101eea3

Browse files
committed
Update all of java-basic to use Java 11.
- Added a bit more functionality to each handler - Added proper unit testing for each handler; all tests pass - Maven hack to exclude META-INF from shaded jar, avoiding a warning - Tested handlers to ensure they work as advertised
1 parent 7ba155d commit 101eea3

File tree

12 files changed

+128
-22
lines changed

12 files changed

+128
-22
lines changed

sample-apps/java-basic/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ task buildZip(type: Zip) {
2828
}
2929

3030
java {
31-
sourceCompatibility = JavaVersion.VERSION_1_8
32-
targetCompatibility = JavaVersion.VERSION_1_8
31+
sourceCompatibility = JavaVersion.VERSION_11
32+
targetCompatibility = JavaVersion.VERSION_11
3333
}
3434

3535
build.dependsOn buildZip

sample-apps/java-basic/pom.xml

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
<name>java-basic-function</name>
99
<properties>
1010
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
11-
<maven.compiler.source>1.8</maven.compiler.source>
12-
<maven.compiler.target>1.8</maven.compiler.target>
11+
<maven.compiler.source>11</maven.compiler.source>
12+
<maven.compiler.target>11</maven.compiler.target>
1313
</properties>
1414
<dependencies>
1515
<dependency>
@@ -61,6 +61,14 @@
6161
<version>3.2.2</version>
6262
<configuration>
6363
<createDependencyReducedPom>false</createDependencyReducedPom>
64+
<filters>
65+
<filter>
66+
<artifact>com.example:*</artifact>
67+
<excludes>
68+
<exclude>META-INF/MANIFEST.MF</exclude>
69+
</excludes>
70+
</filter>
71+
</filters>
6472
</configuration>
6573
<executions>
6674
<execution>
@@ -76,8 +84,8 @@
7684
<artifactId>maven-compiler-plugin</artifactId>
7785
<version>3.8.1</version>
7886
<configuration>
79-
<source>1.8</source>
80-
<target>1.8</target>
87+
<source>11</source>
88+
<target>11</target>
8189
</configuration>
8290
</plugin>
8391
</plugins>

sample-apps/java-basic/src/main/java/example/HandlerDivide.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
// Handler value: example.HandlerDivide
1010
public class HandlerDivide implements RequestHandler<List<Integer>, Integer>{
1111

12+
/*
13+
* Takes a list of two integers and divides them.
14+
*/
1215
@Override
1316
public Integer handleRequest(List<Integer> event, Context context)
1417
{

sample-apps/java-basic/src/main/java/example/HandlerInteger.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,14 @@
88
public class HandlerInteger implements RequestHandler<Integer, Integer>{
99

1010
@Override
11+
/*
12+
* Takes an Integer as input, adds 1, and returns it.
13+
*/
1114
public Integer handleRequest(Integer event, Context context)
1215
{
1316
LambdaLogger logger = context.getLogger();
1417
logger.log("EVENT: " + event);
1518
logger.log("EVENT TYPE: " + event.getClass().toString());
16-
return context.getRemainingTimeInMillis();
19+
return event + 1;
1720
}
1821
}

sample-apps/java-basic/src/main/java/example/HandlerList.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,14 @@
1010
public class HandlerList implements RequestHandler<List<Integer>, Integer>{
1111

1212
@Override
13+
/*
14+
* Takes a list of Integers and returns its sum.
15+
*/
1316
public Integer handleRequest(List<Integer> event, Context context)
1417
{
1518
LambdaLogger logger = context.getLogger();
1619
logger.log("EVENT: " + event);
1720
logger.log("EVENT TYPE: " + event.getClass().toString());
18-
return context.getRemainingTimeInMillis() ;
21+
return event.stream().mapToInt(Integer::intValue).sum();
1922
}
2023
}

sample-apps/java-basic/src/main/java/example/HandlerStream.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@
1111
public class HandlerStream implements RequestStreamHandler {
1212

1313
@Override
14+
/*
15+
* Takes an InputStream and an OutputStream. Reads from the InputStream,
16+
* and copies all characters to the OutputStream.
17+
*/
1418
public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) throws IOException
1519
{
1620
int nextChar;

sample-apps/java-basic/src/main/java/example/HandlerString.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,17 @@
55
import com.amazonaws.services.lambda.runtime.LambdaLogger;
66

77
// Handler value: example.HandlerString
8-
public class HandlerString implements RequestHandler<String, Integer>{
8+
public class HandlerString implements RequestHandler<String, String>{
99

1010
@Override
11-
public Integer handleRequest(String event, Context context)
11+
/*
12+
* Takes a String as input, and converts all characters to lowercase.
13+
*/
14+
public String handleRequest(String event, Context context)
1215
{
1316
LambdaLogger logger = context.getLogger();
1417
logger.log("EVENT: " + event);
1518
logger.log("EVENT TYPE: " + event.getClass().toString());
16-
return context.getRemainingTimeInMillis();
19+
return event.toLowerCase();
1720
}
1821
}

sample-apps/java-basic/src/main/java/example/HandlerWeatherData.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,21 @@
88
public class HandlerWeatherData implements RequestHandler<WeatherData, WeatherData>{
99

1010
@Override
11+
/*
12+
* Takes in a WeatherData event object and updates its attributes with dummy values.
13+
* Returns the updated WeatherData object.
14+
*/
1115
public WeatherData handleRequest(WeatherData event, Context context)
1216
{
1317
LambdaLogger logger = context.getLogger();
1418
logger.log("EVENT: " + event);
1519
logger.log("EVENT TYPE: " + event.getClass().toString());
20+
21+
event.setHumidityPct(50.5);
22+
event.setPressureHPa(1005);
23+
event.setWindKmh(28);
24+
// Assumes temperature of event is already set
25+
event.setTemperatureK(event.getTemperatureK() + 2);
1626
return event;
1727
}
1828
}

sample-apps/java-basic/src/main/java/example/InputLengthException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ public class InputLengthException extends RuntimeException {
66
public InputLengthException(String errorMessage) {
77
super(errorMessage);
88
}
9-
}
9+
}
Lines changed: 78 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,98 @@
11
package example;
22

3-
import static org.junit.jupiter.api.Assertions.assertTrue;
3+
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
4+
import static org.junit.jupiter.api.Assertions.assertEquals;
5+
import static org.junit.jupiter.api.Assertions.assertNotNull;
6+
import static org.junit.jupiter.api.Assertions.assertNull;
47
import org.junit.jupiter.api.Test;
58

69
import com.amazonaws.services.lambda.runtime.Context;
710

811
import org.slf4j.Logger;
912
import org.slf4j.LoggerFactory;
1013

14+
import java.io.ByteArrayInputStream;
15+
import java.io.ByteArrayOutputStream;
16+
import java.io.IOException;
17+
import java.nio.charset.StandardCharsets;
1118
import java.util.HashMap;
19+
import java.util.List;
1220

1321
class InvokeTest {
1422
private static final Logger logger = LoggerFactory.getLogger(InvokeTest.class);
1523

1624
@Test
17-
void invokeTest() {
18-
logger.info("Invoke TEST");
19-
HashMap<String,String> event = new HashMap<String,String>();
25+
void testHandler() {
26+
logger.info("Invoke TEST - Handler");
27+
var event = new HashMap<String,String>();
2028
Context context = new TestContext();
2129
Handler handler = new Handler();
22-
String result = handler.handleRequest(event, context);
23-
assertTrue(result.contains("200 OK"));
30+
assertNull(handler.handleRequest(event, context));
2431
}
2532

33+
@Test
34+
void testHandlerDivide() {
35+
logger.info("Invoke TEST - HandlerDivide");
36+
var event = List.of(20, 5);
37+
Context context = new TestContext();
38+
HandlerDivide handler = new HandlerDivide();
39+
assertEquals(4, handler.handleRequest(event, context));
40+
}
41+
42+
@Test
43+
void testHandlerInteger() {
44+
logger.info("Invoke TEST - HandlerInteger");
45+
Integer event = 1;
46+
Context context = new TestContext();
47+
HandlerInteger handler = new HandlerInteger();
48+
assertEquals(2, handler.handleRequest(event, context));
49+
}
50+
51+
@Test
52+
void testHandlerList() {
53+
logger.info("Invoke TEST - HandlerList");
54+
var event = List.of(1, 2, 3, 4);
55+
Context context = new TestContext();
56+
HandlerList handler = new HandlerList();
57+
assertEquals(10, handler.handleRequest(event, context));
58+
}
59+
60+
@Test
61+
void testHandlerStream() throws IOException {
62+
logger.info("Invoke TEST - HandlerStream");
63+
String inputStr = "Hello world";
64+
byte[] inputBytes = inputStr.getBytes();
65+
ByteArrayInputStream inputStream = new ByteArrayInputStream(inputBytes);
66+
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
67+
Context context = new TestContext();
68+
HandlerStream handler = new HandlerStream();
69+
handler.handleRequest(inputStream, outputStream, context);
70+
byte[] outputBytes = outputStream.toByteArray();
71+
assertArrayEquals(inputBytes, outputBytes);
72+
String outputStr = new String(outputBytes, StandardCharsets.UTF_8);
73+
assertEquals(inputStr, outputStr);
74+
}
75+
76+
@Test
77+
void testHandlerString() {
78+
logger.info("Invoke TEST - HandlerString");
79+
String event = "HeLlO wOrLd";
80+
Context context = new TestContext();
81+
HandlerString handler = new HandlerString();
82+
assertEquals("hello world", handler.handleRequest(event, context));
83+
}
84+
85+
@Test
86+
void testHandlerWeatherData() {
87+
logger.info("Invoke TEST - HandlerWeatherData");
88+
WeatherData inputData = new WeatherData();
89+
inputData.setTemperatureK(298);
90+
Context context = new TestContext();
91+
HandlerWeatherData handler = new HandlerWeatherData();
92+
WeatherData outputData = handler.handleRequest(inputData, context);
93+
assertNotNull(outputData.getHumidityPct());
94+
assertNotNull(outputData.getPressureHPa());
95+
assertNotNull(outputData.getWindKmh());
96+
assertEquals(300, outputData.getTemperatureK());
97+
}
2698
}

sample-apps/java-basic/template-mvn.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ Resources:
77
Properties:
88
CodeUri: target/java-basic-1.0-SNAPSHOT.jar
99
Handler: example.Handler
10-
Runtime: java8
10+
Runtime: java11
1111
Description: Java function
12-
MemorySize: 512
12+
MemorySize: 2048
1313
Timeout: 10
1414
# Function's execution role
1515
Policies:

sample-apps/java-basic/template.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ Resources:
77
Properties:
88
CodeUri: build/distributions/java-basic.zip
99
Handler: example.Handler
10-
Runtime: java8
10+
Runtime: java11
1111
Description: Java function
12-
MemorySize: 512
12+
MemorySize: 2048
1313
Timeout: 10
1414
# Function's execution role
1515
Policies:

0 commit comments

Comments
 (0)