From 7a11fcb013dcabc31f3ae0c3adba9e171223ded1 Mon Sep 17 00:00:00 2001 From: Martin Kouba Date: Fri, 14 Jan 2022 10:23:11 +0100 Subject: [PATCH] ClientProxyGenerator - fix app class test for producers - and use the produced type to test the app class - follows up on https://github.com/quarkusio/quarkus/pull/22828 --- .../quarkus/arc/processor/ClientProxyGenerator.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) 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 6d3fdc18a9627a..03537a763553ba 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