diff --git a/independent-projects/arc/processor/src/main/java/io/quarkus/arc/processor/ClientProxyGenerator.java b/independent-projects/arc/processor/src/main/java/io/quarkus/arc/processor/ClientProxyGenerator.java index 6d3fdc18a9627..03537a763553b 100644 --- a/independent-projects/arc/processor/src/main/java/io/quarkus/arc/processor/ClientProxyGenerator.java +++ b/independent-projects/arc/processor/src/main/java/io/quarkus/arc/processor/ClientProxyGenerator.java @@ -78,6 +78,16 @@ public ClientProxyGenerator(Predicate applicationClassPredicate, boolea Collection generate(BeanInfo bean, String beanClassName, Consumer bytecodeTransformerConsumer, boolean transformUnproxyableClasses) { + DotName testedName; + // For producers we need to test the produced type + if (bean.isProducerField()) { + testedName = bean.getTarget().get().asField().type().name(); + } else if (bean.isProducerMethod()) { + testedName = bean.getTarget().get().asMethod().returnType().name(); + } else { + testedName = bean.getBeanClass(); + } + ProviderType providerType = new ProviderType(bean.getProviderType()); ClassInfo providerClass = getClassByName(bean.getDeployment().getBeanArchiveIndex(), providerType.name()); String baseName = getBaseName(bean, beanClassName); @@ -87,7 +97,7 @@ Collection generate(BeanInfo bean, String beanClassName, return Collections.emptyList(); } - ResourceClassOutput classOutput = new ResourceClassOutput(applicationClassPredicate.test(bean.getBeanClass()), + ResourceClassOutput classOutput = new ResourceClassOutput(applicationClassPredicate.test(testedName), name -> name.equals(generatedName) ? SpecialType.CLIENT_PROXY : null, generateSources); // Foo_ClientProxy extends Foo implements ClientProxy