quarkus: MP rest client interface cannot be used as a CDI injected client and REST endpoint
When I want to use a single interface to define REST interface and inject MP REST client as CDI bean I get a compilation error.
@Path("/")
@RegisterRestClient
public interface GreetingService {
@GET
@Path("/hello")
@Produces(MediaType.TEXT_PLAIN)
String hello();
@GET
@Path("/bonjour")
@Produces(MediaType.TEXT_PLAIN)
String bonjour();
@GET
@Path("/conversation")
@Produces(MediaType.TEXT_PLAIN)
String conversation();
}
@Path("/")
public class GreetingResource implements GreetingService {
@Inject
@RestClient
private GreetingService greetingService;
@Override
public String hello() {
return "hello";
}
@Override
public String bonjour() {
return "bonjour";
}
@Override
public String conversation() {
return greetingService.hello() + " -> " + greetingService.bonjour();
}
}
./mvnw compile quarkus:dev 1:57
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------------< org.acme:tracing-example >----------------------
[INFO] Building tracing-example 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ tracing-example ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 2 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ tracing-example ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- quarkus-maven-plugin:0.13.3:dev (default-cli) @ tracing-example ---
Listening for transport dt_socket at address: 5005
13:57:05,504 INFO [io.qua.dep.QuarkusAugmentor] Beginning quarkus augmentation
13:57:05,649 INFO [org.jbo.threads] JBoss Threads version 3.0.0.Alpha4
13:57:05,917 ERROR [io.qua.dev.DevModeMain] Failed to start quarkus: java.lang.RuntimeException: org.jboss.builder.BuildException: Build failure: Build failed due to errors
[error]: Build step io.quarkus.arc.deployment.ArcAnnotationProcessor#build threw an exception: javax.enterprise.inject.spi.DeploymentException: javax.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type org.acme.quickstart.GreetingService and qualifiers [@RestClient]
- java member: org.acme.quickstart.GreetingResource#greetingService
- declared on CLASS bean [types=[org.acme.quickstart.GreetingService, org.acme.quickstart.GreetingResource, java.lang.Object], qualifiers=[@Default, @Any], target=org.acme.quickstart.GreetingResource]
at io.quarkus.runner.RuntimeRunner.run(RuntimeRunner.java:134)
at io.quarkus.dev.DevModeMain.doStart(DevModeMain.java:108)
at io.quarkus.dev.DevModeMain.main(DevModeMain.java:66)
Caused by: org.jboss.builder.BuildException: Build failure: Build failed due to errors
[error]: Build step io.quarkus.arc.deployment.ArcAnnotationProcessor#build threw an exception: javax.enterprise.inject.spi.DeploymentException: javax.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type org.acme.quickstart.GreetingService and qualifiers [@RestClient]
- java member: org.acme.quickstart.GreetingResource#greetingService
- declared on CLASS bean [types=[org.acme.quickstart.GreetingService, org.acme.quickstart.GreetingResource, java.lang.Object], qualifiers=[@Default, @Any], target=org.acme.quickstart.GreetingResource]
at org.jboss.builder.Execution.run(Execution.java:123)
at org.jboss.builder.BuildExecutionBuilder.execute(BuildExecutionBuilder.java:136)
at io.quarkus.deployment.QuarkusAugmentor.run(QuarkusAugmentor.java:110)
at io.quarkus.runner.RuntimeRunner.run(RuntimeRunner.java:99)
... 2 more
Caused by: javax.enterprise.inject.spi.DeploymentException: javax.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type org.acme.quickstart.GreetingService and qualifiers [@RestClient]
- java member: org.acme.quickstart.GreetingResource#greetingService
- declared on CLASS bean [types=[org.acme.quickstart.GreetingService, org.acme.quickstart.GreetingResource, java.lang.Object], qualifiers=[@Default, @Any], target=org.acme.quickstart.GreetingResource]
at io.quarkus.arc.processor.BeanDeployment.processErrors(BeanDeployment.java:739)
at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:276)
at io.quarkus.arc.processor.BeanProcessor.process(BeanProcessor.java:153)
at io.quarkus.arc.deployment.ArcAnnotationProcessor.build(ArcAnnotationProcessor.java:259)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at io.quarkus.deployment.ExtensionLoader$1.execute(ExtensionLoader.java:506)
at org.jboss.builder.BuildContext.run(BuildContext.java:413)
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1998)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1525)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1416)
at java.lang.Thread.run(Thread.java:748)
at org.jboss.threads.JBossThread.run(JBossThread.java:479)
Caused by: javax.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type org.acme.quickstart.GreetingService and qualifiers [@RestClient]
- java member: org.acme.quickstart.GreetingResource#greetingService
- declared on CLASS bean [types=[org.acme.quickstart.GreetingService, org.acme.quickstart.GreetingResource, java.lang.Object], qualifiers=[@Default, @Any], target=org.acme.quickstart.GreetingResource]
at io.quarkus.arc.processor.Beans.resolveInjectionPoint(Beans.java:326)
at io.quarkus.arc.processor.BeanInfo.init(BeanInfo.java:375)
at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:268)
... 14 more
About this issue
- Original URL
- State: closed
- Created 5 years ago
- Comments: 21 (18 by maintainers)
@kenfinnigan we had several complaints about this not being possible. Any chance we could come up with a plan to fix this use case?