`ToCloudEventTransformer`: binary mode sets `contentType` to `application/cloudevents`

Abierto Apto para principiantes
#11,635 4 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@Adrastopoulos ya está trabajando en esto.

Desde el 28/10/2026.

  • #11636 de @Adrastopoulos — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
86/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
java, spring
Área
api, backend

Línea de trabajo

Lee ToCloudEventTransformer.java alrededor de la línea 347 y las aserciones del modo binario en ToCloudEventTransformerTests alrededor de las líneas 167 y 225. Comprueba cómo el transformador establece contentType cuando conserva el payload y escribe encabezados ce-*. Actualiza la expectativa del modo binario para que se conserve el tipo de contenido de entrada application/json y, después, confirma que la prueba cubre el tipo de contenido y el payload esperados de los datos de CloudEvent.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

in: cloudevents type: bug

Spring Integration 7.1.2, cloudevents-spring 5.1.0.

In binary mode, ToCloudEventTransformer keeps the event data as the payload and writes the attributes as ce-* headers, but it also replaces contentType with application/cloudevents (MessageBuilderMessageWriter#create(…), line 347). The CloudEvents bindings use that media type to mark structured mode; in binary mode the content type is the datacontenttype (HTTP binding §3 and §3.1.1, AMQP binding §3 and §3.1.1). So the CloudEvents SDK can't read the output:

Message<byte[]> input = MessageBuilder.withPayload("{\"order\":42}".getBytes(StandardCharsets.UTF_8))
    .setHeader(MessageHeaders.CONTENT_TYPE, "application/json")
    .build();

Message<?> output = (Message<?>) toCloudEventTransformer.transform(input);
new CloudEventMessageConverter().fromMessage(output, CloudEvent.class);
  • Expected: a CloudEvent with datacontenttype application/json and the payload as its data.
  • Actual: CloudEventRWException: Could not parse. Unknown encoding. Invalid content type or spec version.

With contentType set back to application/json, the same message reads correctly.

Suggested fix: in binary mode, keep the input's contentType, since the payload doesn't change. ToCloudEventTransformerTests asserts the current value at lines 167 and 225.

Lenguaje dominante
Java
Estrellas
1.6k
Forks
1.2k
Merge medio
20 h 16 min
PR fusionados (30 d)
79

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de spring-projects/spring-integration

Todos los issues de spring-projects/spring-integration

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.