Using SQS Event as a trigger in lambda function (Java Quarkus)

Viewed 583

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)
0 Answers
Related