Class CustomResourceProducersGenerator


  • final class CustomResourceProducersGenerator
    extends Object
    • Method Detail

      • generate

        public static void generate​(Map<org.jboss.jandex.DotName,​org.jboss.jandex.MethodInfo> resourcesThatNeedCustomProducer,
                                    Set<String> beanParamsThatNeedCustomProducer,
                                    io.quarkus.deployment.annotations.BuildProducer<GeneratedBeanBuildItem> generatedBeanBuildItemBuildProducer,
                                    io.quarkus.deployment.annotations.BuildProducer<AdditionalBeanBuildItem> additionalBeanBuildItemBuildProducer)
        We generate a class that contains as many CDI producer methods as there are JAX-RS Resources that use JAX-RS params. If for example there was a single such JAX-RS resource looking like:
        
         @Path("/query")
         public class QueryParamResource {
        
                 private final String queryParamValue;
                 private final UriInfo uriInfo;
        
                 public QueryParamResource(@QueryParam("p1") String headerValue, @Context UriInfo uriInfo) {
                        this.headerValue = headerValue;
           }
        
           @GET
           public String get() {
                    // DO something
           }
         }
        
          
        then the generated producer would look like this:
        
          @Singleton
         public class ResourcesWithParamProducer {
        
            @Inject
            CurrentVertxRequest currentVertxRequest;
        
            @Produces
            @RequestScoped
            public QueryParamResource producer_QueryParamResource_somehash(UriInfo uriInfo) {
                        return new QueryParamResource(getContext().getContext().queryParams().get("p1"), uriInfo);
            }
        
                private QuarkusRestRequestContext getContext() {
                        return (QuarkusRestRequestContext) currentVertxRequest.getOtherHttpContextObject();
            }
         }