I'm trying to implement a simple lambda which is triggered by SQS. But when I call the function it gets a nullpointer. I thought at first it was a CDI problem. Here's my lambda Handler class
public class TestLambda implements RequestHandler<SQSEvent, OutputObject> {
@Inject
ProcessingService service;
@Override
public OutputObject handleRequest(SQSEvent sqsEvent, Context context) {
Gson gson = new Gson();
SQSEvent.SQSMessage SQSmsg = sqsEvent.getRecords().get(0);
String body = SQSmsg.getBody();
PayloadDto payloadDto = gson.fromJson(body, PayloadDto.class);
return service.process(payloadDto).setRequestId(context.getAwsRequestId());
}}
There's my ProcessingService class which process the incoming messages for the SQS Event
@ApplicationScoped
public class ProcessingService {
public static final String CAN_ONLY_GREET_NICKNAMES = "Can only greet nicknames";
public OutputObject process(PayloadDto input) {
if (input.getName().equals("Stuart")) {
throw new IllegalArgumentException(CAN_ONLY_GREET_NICKNAMES);
}
String result = input.getGreeting() + " " + input.getName();
OutputObject out = new OutputObject();
out.setResult(result);
return out;
}
}
And finally the PayloadDto and Output classes:
public class PayloadDto {
private String name;
private String greeting;
public String getName() {
return name;
}
public PayloadDto setName(String name) {
this.name = name;
return this;
}
public String getGreeting() {
return greeting;
}
public PayloadDto setGreeting(String greeting) {
this.greeting = greeting;
return this;
}
}
public class OutputObject {
private String result;
private String requestId;
public String getResult() {
return result;
}
public String getRequestId() {
return requestId;
}
public OutputObject setResult(String result) {
this.result = result;
return this;
}
public OutputObject setRequestId(String requestId) {
this.requestId = requestId;
return this;
}
}
The logs of the invoke:
java.lang.NullPointerException: java.lang.NullPointerException
java.lang.NullPointerException
at com.github.macices.ProcessingService.process(ProcessingService.java:11)
at com.github.macices.ProcessingService_ClientProxy.process(Unknown Source)
at com.github.macices.TestLambda.handleRequest(TestLambda.java:17)
at com.github.macices.TestLambda.handleRequest(TestLambda.java:9)
at io.quarkus.amazon.lambda.runtime.AmazonLambdaRecorder.handle(AmazonLambdaRecorder.java:79)
at io.quarkus.amazon.lambda.runtime.QuarkusStreamHandler.handleRequest(QuarkusStreamHandler.java:58)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)