Open debae opened 3 years ago
/cc @matejvasek, @patriot1burke
In order to get it to work we need to register an ObjectMapperCustomizer ( which is used by quarkus-jackson ) that allows a float to be converted to a Date :
@Singleton
public ObjectMapperCustomizer kinesisObjectMapperCustomiser() {
return new ObjectMapperCustomizer() {
@Override
public void customize(ObjectMapper objectMapper) {
SimpleModule kinesisModule = new SimpleModule();
kinesisModule.addDeserializer(Date.class, new JsonDeserializer<>() {
@Override
public Date deserialize(JsonParser jsonParser, DeserializationContext ctxt) throws IOException {
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(jsonParser.getValueAsLong());
return calendar.getTime();
}
});
objectMapper.registerModule(kinesisModule);
}
};
}
The same applies when you are using the events from DynamoDB Streams
Is this still an issue?
Yes it is, we still need to add this configuration. The version of quarkus we are using now is 3.13.2
Thanks for the quick feedback!
Describe the bug
If you use the quarkus-lambda extension you can consume all AWS events by simply implementing the interface and selecting the correct type of event. In case of Kinesis :
The configured jackson ObjectMapper however cannot marshal the input event correctly.
Expected behavior
The KinesisEvent json can be marshalled correctly and the RequestHandler gets invoked.
Actual behavior
To Reproduce
Take an example input generated by sam local :
sam local generate-event kinesis get-records
Which gives you the following event:Environment (please complete the following information):
Output of
uname -a
orver
Darwin APRXJGH6D5D5F9 18.7.0 Darwin Kernel Version 18.7.0: Mon Aug 31 20:53:32 PDT 2020; root:xnu-4903.278.44~1/RELEASE_X86_64 x86_64
Output of
java -version
openjdk version "11.0.6" 2020-01-14
Quarkus version or git rev
1.11.3.Final
Additional context
(Add any other context about the problem here.)