aws / aws/aws-lambda-java-libs

How about some Builders in lambda-java-events

Ouverte
#566 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Java
Étoiles
548
Forks
241
Merge moyen
2 j 5 min
PR mergées (30 j)
11

Description

The core AWS Java/Kotlin libraries provide builders for just about every object. Builders abound! In the `aws-lambda-java-events` library we get sad old POJOs.

```Kotlin
val messageAttribute = SQSEvent.MessageAttribute()
messageAttribute.stringValue = "So Verbose!"

val sqsMessage = SQSEvent.SQSMessage()
sqsMessage.body = objectMapper.writeValueAsString(DummyMessage(name = "Bob"))
sqsMessage.messageAttributes["So-Much-Typing"] = messageAttribute // <<-- whoops, error, messageAttributes is null
```

I guess I could do this, but its not winning any awards:
```Kotlin
val messageAttribute = SQSEvent.MessageAttribute()
messageAttribute.stringValue = "Still have to do this on two lines"

val sqsMessage = SQSEvent.SQSMessage()
sqsMessage.body = objectMapper.writeValueAsString(DummyMessage(name = "Bob"))
sqsMessage.messageAttributes = mapOf("So-Much-Typing" to messageAttribute)
```

I'm using `SQSEvent` as an example because that's what I was working with today. But same goes for `SNSEvent`, `S3Event`, `ScheduleEvent`, `LexEvent`...

I see that `KafkaEvent` uses Lombok. I'd take that.

Thanks.

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par les classes SQSEvent et comparez leur construction actuelle de POJO avec le point d’entrée KafkaEvent basé sur Lombok. Examinez les classes SNSEvent, S3Event, ScheduleEvent et LexEvent correspondantes, puis définissez une approche de Builder cohérente pour tous les types d’événements et vérifiez que les objets imbriqués tels que messageAttributes peuvent être construits sans initialisation à null.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
aws, java, kotlin
Domaine
backend, cloud
Type d'issue
Fonctionnalité
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.