This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 04630565d67397ff0f126d2fc9833023829370a2
Author: James Netherton <[email protected]>
AuthorDate: Tue Jul 21 08:02:35 2026 +0100

    Remove redundant Debezium workarounds for kafka-clients 4.2.0 compatibility
    
    Fixes #8530
---
 .../deployment/DebeziumSupportProcessor.java       | 101 ---------------------
 1 file changed, 101 deletions(-)

diff --git 
a/extensions-support/debezium/deployment/src/main/java/org/apache/camel/quarkus/support/debezium/deployment/DebeziumSupportProcessor.java
 
b/extensions-support/debezium/deployment/src/main/java/org/apache/camel/quarkus/support/debezium/deployment/DebeziumSupportProcessor.java
index 6554629c24..33fccdf8a1 100644
--- 
a/extensions-support/debezium/deployment/src/main/java/org/apache/camel/quarkus/support/debezium/deployment/DebeziumSupportProcessor.java
+++ 
b/extensions-support/debezium/deployment/src/main/java/org/apache/camel/quarkus/support/debezium/deployment/DebeziumSupportProcessor.java
@@ -16,8 +16,6 @@
  */
 package org.apache.camel.quarkus.support.debezium.deployment;
 
-import java.util.function.BooleanSupplier;
-
 import io.debezium.connector.base.DefaultQueueProvider;
 import io.debezium.connector.common.BaseSourceTask;
 import io.debezium.embedded.async.ConvertingAsyncEngineBuilderFactory;
@@ -48,26 +46,18 @@ import io.debezium.storage.file.history.FileSchemaHistory;
 import io.quarkus.arc.deployment.AdditionalBeanBuildItem;
 import io.quarkus.deployment.annotations.BuildProducer;
 import io.quarkus.deployment.annotations.BuildStep;
-import io.quarkus.deployment.builditem.BytecodeTransformerBuildItem;
 import io.quarkus.deployment.builditem.CombinedIndexBuildItem;
 import io.quarkus.deployment.builditem.IndexDependencyBuildItem;
 import 
io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem;
 import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
 import io.quarkus.deployment.builditem.nativeimage.ServiceProviderBuildItem;
-import io.quarkus.gizmo.Gizmo;
 import org.apache.camel.quarkus.support.debezium.DebeziumComponentObserver;
 import org.apache.kafka.connect.source.SourceTask;
 import org.jboss.jandex.DotName;
 import org.jboss.jandex.IndexView;
-import org.jboss.logging.Logger;
-import org.objectweb.asm.ClassVisitor;
-import org.objectweb.asm.MethodVisitor;
-import org.objectweb.asm.Opcodes;
 
 public class DebeziumSupportProcessor {
 
-    private static final Logger LOG = 
Logger.getLogger(DebeziumSupportProcessor.class);
-
     @BuildStep
     void addDependencies(BuildProducer<IndexDependencyBuildItem> 
indexDependency) {
         indexDependency.produce(new 
IndexDependencyBuildItem("org.apache.kafka", "connect-json"));
@@ -172,95 +162,4 @@ public class DebeziumSupportProcessor {
                 .produce(new 
NativeImageResourceBuildItem("META-INF/services/org.apache.kafka.connect.source.SourceConnector"));
     }
 
-    // TODO: Remove this - https://github.com/apache/camel-quarkus/issues/8530
-    @BuildStep(onlyIf = KafkaClients42IsPresent.class)
-    BytecodeTransformerBuildItem patchConfigInfos() {
-        // Patch ConfigInfos to add values() method as duplicate of configs()
-        // This provides backward compatibility for Debezium with 
kafka-clients 4.2.0
-        return new BytecodeTransformerBuildItem.Builder()
-                
.setClassToTransform("org.apache.kafka.connect.runtime.rest.entities.ConfigInfos")
-                .setCacheable(true)
-                .setVisitorFunction((className, classVisitor) -> new 
ConfigInfosClassVisitor(classVisitor))
-                .build();
-    }
-
-    // TODO: Remove this - https://github.com/apache/camel-quarkus/issues/8530
-    static final class KafkaClients42IsPresent implements BooleanSupplier {
-        @Override
-        public boolean getAsBoolean() {
-            try {
-                // Check if ConfigInfos.values() is present. If it's not, then 
kafka-clients >= 4.2.0 is on the classpath
-                Class<?> configInfos = 
Thread.currentThread().getContextClassLoader()
-                        
.loadClass("org.apache.kafka.connect.runtime.rest.entities.ConfigInfos");
-                configInfos.getDeclaredMethod("values");
-                return false;
-            } catch (ClassNotFoundException e) {
-                throw new RuntimeException(e);
-            } catch (NoSuchMethodException e) {
-                return true;
-            }
-        }
-    }
-
-    /**
-     * Adds a values() method to ConfigInfos that duplicates the configs() 
method.
-     * This provides backward compatibility with older Debezium versions.
-     */
-    static class ConfigInfosClassVisitor extends ClassVisitor {
-
-        private String configsFieldDescriptor = null;
-        private String configsMethodSignature = null;
-
-        protected ConfigInfosClassVisitor(ClassVisitor classVisitor) {
-            super(Gizmo.ASM_API_VERSION, classVisitor);
-        }
-
-        @Override
-        public org.objectweb.asm.FieldVisitor visitField(int access, String 
name, String descriptor, String signature,
-                Object value) {
-            // Track the configs field descriptor
-            if ("configs".equals(name)) {
-                configsFieldDescriptor = descriptor;
-            }
-            return super.visitField(access, name, descriptor, signature, 
value);
-        }
-
-        @Override
-        public MethodVisitor visitMethod(int access, String name, String 
descriptor, String signature,
-                String[] exceptions) {
-            // Track the signature of configs() method
-            if ("configs".equals(name) && 
"()Ljava/util/List;".equals(descriptor)) {
-                configsMethodSignature = signature;
-            }
-            return super.visitMethod(access, name, descriptor, signature, 
exceptions);
-        }
-
-        @Override
-        public void visitEnd() {
-            // Add values() method that duplicates configs()
-            LOG.debug("Adding values() method to ConfigInfos as duplicate of 
configs()");
-
-            MethodVisitor mv = cv.visitMethod(
-                    Opcodes.ACC_PUBLIC,
-                    "values",
-                    "()Ljava/util/List;",
-                    configsMethodSignature, // Same generic signature as 
configs()
-                    null);
-
-            if (mv != null) {
-                mv.visitCode();
-                // Method body: return this.configs;
-                mv.visitVarInsn(Opcodes.ALOAD, 0); // Load 'this'
-                mv.visitFieldInsn(Opcodes.GETFIELD,
-                        
"org/apache/kafka/connect/runtime/rest/entities/ConfigInfos",
-                        "configs",
-                        configsFieldDescriptor != null ? 
configsFieldDescriptor : "Ljava/util/List;");
-                mv.visitInsn(Opcodes.ARETURN); // Return the field value
-                mv.visitMaxs(1, 1); // Max stack=1, max locals=1
-                mv.visitEnd();
-            }
-
-            super.visitEnd();
-        }
-    }
 }

Reply via email to