Spring CloudEventMessageConverter produce a null pointer exception if initial message header map is null
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 72/100
Direzione di ricerca
Inizia da io.cloudevents.spring.messaging.CloudEventMessageConverter#toMessage e MessageBuilderMessageWriter, in particolare dal costruttore mostrato nello stack trace. Riproduci la chiamata a RabbitMessagingTemplate.convertAndSend senza headers personalizzati, quindi aggiungi test che dimostrino che una mappa di headers null non causa più un’eccezione e che il CloudEvent viene convertito correttamente.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Step to reproduce
Declare a Rabbit templating using converter
@Bean
public RabbitMessagingTemplate rabbitMessagingTemplate(RabbitTemplate rabbitTemplate, CloudEventMessageConverter cloudEventMessageConverter) {
var rmt = new RabbitMessagingTemplate(rabbitTemplate);
rmt.setMessageConverter(cloudEventMessageConverter);
return rmt;
}
Use it to publish a message
rabbitMessagingTemplate.convertAndSend("my.routing.key", CloudEventBuilder.v1()
.withId(UUID.randomUUID().toString())
.withType("mytype")
.withSource(new URI("my:urisource"))
.withData(new BytesCloudEventData("{\"data\":\"test\"}".getBytes()))
.build());
Result
NPE
java.lang.NullPointerException: Cannot invoke "java.util.Map.size()" because "m" is null
at java.base/java.util.HashMap.putMapEntries(HashMap.java:495)
at java.base/java.util.HashMap.putAll(HashMap.java:783)
at io.cloudevents.spring.messaging.MessageBuilderMessageWriter.<init>(MessageBuilderMessageWriter.java:45)
at io.cloudevents.spring.messaging.CloudEventMessageConverter.toMessage(CloudEventMessageConverter.java:54)
at org.springframework.messaging.core.AbstractMessageSendingTemplate.doConvert(AbstractMessageSendingTemplate.java:177)
at org.springframework.messaging.core.AbstractMessageSendingTemplate.convertAndSend(AbstractMessageSendingTemplate.java:150)
at org.springframework.messaging.core.AbstractMessageSendingTemplate.convertAndSend(AbstractMessageSendingTemplate.java:129)
at org.springframework.messaging.core.AbstractMessageSendingTemplate.convertAndSend(AbstractMessageSendingTemplate.java:122)
Solution
In call to io.cloudevents.spring.messaging.CloudEventMessageConverter#toMessage, the provided headers field can be null if caller didn't provide custom headers. A null check should be done and MessabeBilderMessageWriter should be called with default constructor in that case.
Workaround
use RabbitMessagingTemplate send methods that take a map as parameter
- Lingua principale
- Java
- Stelle
- 446
- Fork
- 172
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di cloudevents/sdk-java
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
cloudevents/sdk-java#731 · 1 reazione ·
-
bug
Difficoltà 1/5 1-3 ore Idoneità per principianti 88/100
cloudevents/sdk-java#697 · 3 commenti ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
cloudevents/sdk-java#660 · 2 commenti ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 38/100
cloudevents/sdk-java#748 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
cloudevents/sdk-java#711 · 1 commento ·
Tutte le issue di cloudevents/sdk-java
Issue simili
-
area-deployment area-integrations triage:bot-seen
Difficoltà 2/5 Mezza giornata Idoneità per principianti 86/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
apache/flink-agents#1156 ·
-
[source-shopify] FAILED bulk operation without partialDataUrl is silently treated as successful Apertaarea/connectors autoteam community connectors/source/shopify needs-triage team/use type/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100