[ https://issues.apache.org/jira/browse/CXF-8968?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andriy Redko updated CXF-8968: ------------------------------ Issue Type: Improvement (was: Bug) > OpenTelemetryClientFeature cannot be used as a CDI bean unless it has a > no-args constructor > ------------------------------------------------------------------------------------------- > > Key: CXF-8968 > URL: https://issues.apache.org/jira/browse/CXF-8968 > Project: CXF > Issue Type: Improvement > Affects Versions: 4.0.3 > Reporter: Peter Palaga > Priority: Major > Fix For: 3.5.8, 3.6.3, 4.0.4 > > > I am playing with the new OpenTelemetryClientFeature on Quarkus, where we > typically produce CXF features as CDI beans. Quarkus CDI implementation does > not allow beans of type OpenTelemetryClientFeature, because the class does > not have the no-args constructor. > We just need to add the default constructor, much like we already have it in > OpenTelemetryFeature. > A PR follows. > For the sake of completeness here is the stack trace: > {code} > java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: > Build failed due to errors > [error]: Build step > io.quarkus.arc.deployment.ArcProcessor#generateResources threw an exception: > jakarta.enterprise.inject.spi.DeploymentException: It's not possible to > automatically add a synthetic no-args constructor to an unproxyable bean > class. You need to manually add a non-private no-args constructor to > io.quarkiverse.cxf.opentelemetry.it.BeanProducers$QuarkusOpenTelemetryClientFeature > in order to fulfill the requirements for normal scoped/intercepted/decorated > beans. > at > io.quarkus.arc.processor.Beans.cannotAddSyntheticNoArgsConstructor(Beans.java:958) > at io.quarkus.arc.processor.Beans.validateBean(Beans.java:857) > at io.quarkus.arc.processor.BeanInfo.validate(BeanInfo.java:605) > at > io.quarkus.arc.processor.BeanDeployment.validateBeans(BeanDeployment.java:1565) > at > io.quarkus.arc.processor.BeanDeployment.validate(BeanDeployment.java:482) > at > io.quarkus.arc.processor.BeanProcessor.validate(BeanProcessor.java:169) > at > io.quarkus.arc.deployment.ArcProcessor.validate(ArcProcessor.java:474) > at > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) > at > java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.base/java.lang.reflect.Method.invoke(Method.java:568) > at > io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:849) > at io.quarkus.builder.BuildContext.run(BuildContext.java:256) > at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18) > at > org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513) > at > org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538) > at java.base/java.lang.Thread.run(Thread.java:840) > at org.jboss.threads.JBossThread.run(JBossThread.java:501) > at > io.quarkus.test.junit.QuarkusTestExtension.throwBootFailureException(QuarkusTestExtension.java:638) > at > io.quarkus.test.junit.QuarkusTestExtension.interceptTestClassConstructor(QuarkusTestExtension.java:722) > at java.base/java.util.Optional.orElseGet(Optional.java:364) > at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) > at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) > Caused by: java.lang.RuntimeException: io.quarkus.builder.BuildException: > Build failure: Build failed due to errors > [error]: Build step > io.quarkus.arc.deployment.ArcProcessor#generateResources threw an exception: > jakarta.enterprise.inject.spi.DeploymentException: It's not possible to > automatically add a synthetic no-args constructor to an unproxyable bean > class. You need to manually add a non-private no-args constructor to > io.quarkiverse.cxf.opentelemetry.it.BeanProducers$QuarkusOpenTelemetryClientFeature > in order to fulfill the requirements for normal scoped/intercepted/decorated > beans. > at > io.quarkus.arc.processor.Beans.cannotAddSyntheticNoArgsConstructor(Beans.java:958) > at io.quarkus.arc.processor.Beans.validateBean(Beans.java:857) > at io.quarkus.arc.processor.BeanInfo.validate(BeanInfo.java:605) > at > io.quarkus.arc.processor.BeanDeployment.validateBeans(BeanDeployment.java:1565) > at > io.quarkus.arc.processor.BeanDeployment.validate(BeanDeployment.java:482) > at > io.quarkus.arc.processor.BeanProcessor.validate(BeanProcessor.java:169) > at > io.quarkus.arc.deployment.ArcProcessor.validate(ArcProcessor.java:474) > at > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) > at > java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.base/java.lang.reflect.Method.invoke(Method.java:568) > at > io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:849) > at io.quarkus.builder.BuildContext.run(BuildContext.java:256) > at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18) > at > org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513) > at > org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538) > at java.base/java.lang.Thread.run(Thread.java:840) > at org.jboss.threads.JBossThread.run(JBossThread.java:501) > at > io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:334) > at > io.quarkus.runner.bootstrap.AugmentActionImpl.createInitialRuntimeApplication(AugmentActionImpl.java:251) > at > io.quarkus.runner.bootstrap.AugmentActionImpl.createInitialRuntimeApplication(AugmentActionImpl.java:60) > at > io.quarkus.test.junit.QuarkusTestExtension.doJavaStart(QuarkusTestExtension.java:224) > at > io.quarkus.test.junit.QuarkusTestExtension.ensureStarted(QuarkusTestExtension.java:605) > at > io.quarkus.test.junit.QuarkusTestExtension.beforeAll(QuarkusTestExtension.java:655) > ... 1 more > Caused by: io.quarkus.builder.BuildException: Build failure: Build failed due > to errors > [error]: Build step > io.quarkus.arc.deployment.ArcProcessor#generateResources threw an exception: > jakarta.enterprise.inject.spi.DeploymentException: It's not possible to > automatically add a synthetic no-args constructor to an unproxyable bean > class. You need to manually add a non-private no-args constructor to > io.quarkiverse.cxf.opentelemetry.it.BeanProducers$QuarkusOpenTelemetryClientFeature > in order to fulfill the requirements for normal scoped/intercepted/decorated > beans. > at > io.quarkus.arc.processor.Beans.cannotAddSyntheticNoArgsConstructor(Beans.java:958) > at io.quarkus.arc.processor.Beans.validateBean(Beans.java:857) > at io.quarkus.arc.processor.BeanInfo.validate(BeanInfo.java:605) > at > io.quarkus.arc.processor.BeanDeployment.validateBeans(BeanDeployment.java:1565) > at > io.quarkus.arc.processor.BeanDeployment.validate(BeanDeployment.java:482) > at > io.quarkus.arc.processor.BeanProcessor.validate(BeanProcessor.java:169) > at > io.quarkus.arc.deployment.ArcProcessor.validate(ArcProcessor.java:474) > at > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) > at > java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.base/java.lang.reflect.Method.invoke(Method.java:568) > at > io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:849) > at io.quarkus.builder.BuildContext.run(BuildContext.java:256) > at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18) > at > org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513) > at > org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538) > at java.base/java.lang.Thread.run(Thread.java:840) > at org.jboss.threads.JBossThread.run(JBossThread.java:501) > at io.quarkus.builder.Execution.run(Execution.java:123) > at > io.quarkus.builder.BuildExecutionBuilder.execute(BuildExecutionBuilder.java:79) > at > io.quarkus.deployment.QuarkusAugmentor.run(QuarkusAugmentor.java:160) > at > io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:330) > ... 6 more > Caused by: jakarta.enterprise.inject.spi.DeploymentException: It's not > possible to automatically add a synthetic no-args constructor to an > unproxyable bean class. You need to manually add a non-private no-args > constructor to > io.quarkiverse.cxf.opentelemetry.it.BeanProducers$QuarkusOpenTelemetryClientFeature > in order to fulfill the requirements for normal scoped/intercepted/decorated > beans. > at > io.quarkus.arc.processor.Beans.cannotAddSyntheticNoArgsConstructor(Beans.java:958) > at io.quarkus.arc.processor.Beans.validateBean(Beans.java:857) > at io.quarkus.arc.processor.BeanInfo.validate(BeanInfo.java:605) > at > io.quarkus.arc.processor.BeanDeployment.validateBeans(BeanDeployment.java:1565) > at > io.quarkus.arc.processor.BeanDeployment.validate(BeanDeployment.java:482) > at > io.quarkus.arc.processor.BeanProcessor.validate(BeanProcessor.java:169) > at > io.quarkus.arc.deployment.ArcProcessor.validate(ArcProcessor.java:474) > at java.base/java.lang.reflect.Method.invoke(Method.java:568) > at > io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:849) > at io.quarkus.builder.BuildContext.run(BuildContext.java:256) > at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18) > at > org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513) > at > org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538) > at java.base/java.lang.Thread.run(Thread.java:840) > at org.jboss.threads.JBossThread.run(JBossThread.java:501) > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)