This is an automated email from the ASF dual-hosted git repository.
oscerd pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-kamelets.git
The following commit(s) were added to refs/heads/main by this push:
new e1022b258 Fix #2969: stop overriding Apicurio's avroDatumProvider
default (#2993)
e1022b258 is described below
commit e1022b25826dc935313a7fb84906b0d6ccf6c407
Author: Andrea Cosentino <[email protected]>
AuthorDate: Tue Sep 1 11:06:05 2026 +0200
Fix #2969: stop overriding Apicurio's avroDatumProvider default (#2993)
Five Kamelets defaulted avroDatumProvider to
io.apicurio.registry.serde.avro.ReflectAvroDatumProvider. Apicurio's own
default is DefaultAvroDatumProvider -- confirmed from the bytecode of
apicurio-registry-serdes-avro-serde, where AvroKafkaSerdeConfig is the
class holding the constant. So the catalog was silently flipping a library
default rather than restating it.
That matters most on the read path: with the reflect provider, the schema
resolved from the registry drives reflection-based class resolution during
deserialization. Of the five, kafka-batch-apicurio-registry-source is the
only one that both reads Avro and is not already disclaimed by a
-not-secured- name.
All five now restate Apicurio's default, and the property description says
what each provider does so the reflect provider stays available as an
informed opt-in rather than an invisible default.
This changes deserialization behaviour for anyone who relied on the
implicit reflect provider to map Avro onto plain POJOs -- see the PR for
the compatibility note.
Co-authored-by: Claude Opus 5 (1M context) <[email protected]>
---
kamelets/kafka-apicurio-registry-not-secured-sink.kamelet.yaml | 7 +++++--
.../kafka-batch-apicurio-registry-not-secured-source.kamelet.yaml | 7 +++++--
kamelets/kafka-batch-apicurio-registry-source.kamelet.yaml | 7 +++++--
kamelets/kafka-not-secured-apicurio-registry-sink.kamelet.yaml | 7 +++++--
kamelets/kafka-not-secured-apicurio-registry-source.kamelet.yaml | 7 +++++--
5 files changed, 25 insertions(+), 10 deletions(-)
diff --git a/kamelets/kafka-apicurio-registry-not-secured-sink.kamelet.yaml
b/kamelets/kafka-apicurio-registry-not-secured-sink.kamelet.yaml
index 3cef7d02d..95285571e 100644
--- a/kamelets/kafka-apicurio-registry-not-secured-sink.kamelet.yaml
+++ b/kamelets/kafka-apicurio-registry-not-secured-sink.kamelet.yaml
@@ -56,9 +56,12 @@ spec:
type: string
avroDatumProvider:
title: Avro Datum Provider
- description: How to write data with Avro.
+ description: How to write data with Avro. Defaults to Apicurio's own
DefaultAvroDatumProvider,
+ which handles GenericRecord and generated SpecificRecord classes. Set
+ io.apicurio.registry.serde.avro.ReflectAvroDatumProvider to map
arbitrary POJOs onto Avro
+ by reflection instead.
type: string
- default: "io.apicurio.registry.serde.avro.ReflectAvroDatumProvider"
+ default: "io.apicurio.registry.serde.avro.DefaultAvroDatumProvider"
dependencies:
- "camel:core"
- "camel:kamelet"
diff --git
a/kamelets/kafka-batch-apicurio-registry-not-secured-source.kamelet.yaml
b/kamelets/kafka-batch-apicurio-registry-not-secured-source.kamelet.yaml
index 0211c4575..801d1df3a 100644
--- a/kamelets/kafka-batch-apicurio-registry-not-secured-source.kamelet.yaml
+++ b/kamelets/kafka-batch-apicurio-registry-not-secured-source.kamelet.yaml
@@ -86,9 +86,12 @@ spec:
type: string
avroDatumProvider:
title: Avro Datum Provider
- description: How to read data with Avro.
+ description: How to read data with Avro. Defaults to Apicurio's own
DefaultAvroDatumProvider,
+ which handles GenericRecord and generated SpecificRecord classes. Set
+ io.apicurio.registry.serde.avro.ReflectAvroDatumProvider to map Avro
onto arbitrary POJOs
+ by reflection instead..
type: string
- default: "io.apicurio.registry.serde.avro.ReflectAvroDatumProvider"
+ default: "io.apicurio.registry.serde.avro.DefaultAvroDatumProvider"
batchSize:
title: Batch Dimension
description: The maximum number of records returned in a single call
to poll().
diff --git a/kamelets/kafka-batch-apicurio-registry-source.kamelet.yaml
b/kamelets/kafka-batch-apicurio-registry-source.kamelet.yaml
index 26c782b9a..e326f6445 100644
--- a/kamelets/kafka-batch-apicurio-registry-source.kamelet.yaml
+++ b/kamelets/kafka-batch-apicurio-registry-source.kamelet.yaml
@@ -92,9 +92,12 @@ spec:
type: string
avroDatumProvider:
title: Avro Datum Provider
- description: How to read data with Avro
+ description: How to read data with Avro. Defaults to Apicurio's own
DefaultAvroDatumProvider,
+ which handles GenericRecord and generated SpecificRecord classes. Set
+ io.apicurio.registry.serde.avro.ReflectAvroDatumProvider to map Avro
onto arbitrary POJOs
+ by reflection instead.
type: string
- default: "io.apicurio.registry.serde.avro.ReflectAvroDatumProvider"
+ default: "io.apicurio.registry.serde.avro.DefaultAvroDatumProvider"
batchSize:
title: Batch Dimension
description: The maximum number of records returned in a single call
to poll()
diff --git a/kamelets/kafka-not-secured-apicurio-registry-sink.kamelet.yaml
b/kamelets/kafka-not-secured-apicurio-registry-sink.kamelet.yaml
index c2b9d0cb9..31ccd272a 100644
--- a/kamelets/kafka-not-secured-apicurio-registry-sink.kamelet.yaml
+++ b/kamelets/kafka-not-secured-apicurio-registry-sink.kamelet.yaml
@@ -62,9 +62,12 @@ spec:
type: string
avroDatumProvider:
title: Avro Datum Provider
- description: How to write data with Avro
+ description: How to write data with Avro. Defaults to Apicurio's own
DefaultAvroDatumProvider,
+ which handles GenericRecord and generated SpecificRecord classes. Set
+ io.apicurio.registry.serde.avro.ReflectAvroDatumProvider to map
arbitrary POJOs onto Avro
+ by reflection instead.
type: string
- default: "io.apicurio.registry.serde.avro.ReflectAvroDatumProvider"
+ default: "io.apicurio.registry.serde.avro.DefaultAvroDatumProvider"
apicurioAuthServiceUrl:
title: Apicurio Registry Auth Service URL
description: The URL for Keycloak instance securing the Apicurio
Registry
diff --git a/kamelets/kafka-not-secured-apicurio-registry-source.kamelet.yaml
b/kamelets/kafka-not-secured-apicurio-registry-source.kamelet.yaml
index 3fd442c23..4eeb0c89d 100644
--- a/kamelets/kafka-not-secured-apicurio-registry-source.kamelet.yaml
+++ b/kamelets/kafka-not-secured-apicurio-registry-source.kamelet.yaml
@@ -92,9 +92,12 @@ spec:
type: string
avroDatumProvider:
title: Avro Datum Provider
- description: How to read data with Avro
+ description: How to read data with Avro. Defaults to Apicurio's own
DefaultAvroDatumProvider,
+ which handles GenericRecord and generated SpecificRecord classes. Set
+ io.apicurio.registry.serde.avro.ReflectAvroDatumProvider to map Avro
onto arbitrary POJOs
+ by reflection instead.
type: string
- default: "io.apicurio.registry.serde.avro.ReflectAvroDatumProvider"
+ default: "io.apicurio.registry.serde.avro.DefaultAvroDatumProvider"
apicurioAuthServiceUrl:
title: Apicurio Registry Auth Service URL
description: The URL for Keycloak instance securing the Apicurio
Registry