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

Reply via email to