Class CustomResourceProducersGenerator

java.lang.Object
io.quarkus.resteasy.reactive.server.deployment.CustomResourceProducersGenerator

final class CustomResourceProducersGenerator extends Object
  • Method Summary

    Modifier and Type
    Method
    Description
    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.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Method Details

    • 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();
          }
       }