Class MultipartPopulatorGenerator


  • final class MultipartPopulatorGenerator
    extends Object
    • Method Detail

      • generate

        static String generate​(org.jboss.jandex.ClassInfo multipartClassInfo,
                               io.quarkus.gizmo.ClassOutput classOutput,
                               org.jboss.jandex.IndexView index)
        Generates a class that populates a Pojo that is used as a @MultipartForm parameter in a resource method. The generated class is called at runtime by the __quarkus_rest_inject method of the class (which is added by MultipartTransformer).

        For example for a pojo like:

         public class FormData {
        
             @RestForm
             @PartType(MediaType.TEXT_PLAIN)
             private String foo;
        
             @RestForm
             @PartType(MediaType.APPLICATION_JSON)
             public Map map;
        
             @RestForm
             @PartType(MediaType.APPLICATION_JSON)
             public Person person;
        
             @RestForm
             @PartType(MediaType.TEXT_PLAIN)
             private Status status;
        
             @RestForm("htmlFile")
             private FileUpload htmlPart;
        
             @RestForm("htmlFile")
             public Path xmlPart;
        
             @RestForm
             public File txtFile;
        
             public String getFoo() {
                 return foo;
             }
        
             public void setFoo(String foo) {
                 this.foo = foo;
             }
        
             public Status getStatus() {
                 return status;
             }
        
             public void setStatus(Status status) {
                 this.status = status;
             }
        
             public FileUpload getHtmlPart() {
                 return htmlPart;
             }
        
             public void setHtmlPart(FileUpload htmlPart) {
                 this.htmlPart = htmlPart;
             }
         }
         

        the generated populator would look like:

         public class FormData_generated_populator {
             private static Class map_type;
             private static Type map_genericType;
             private static MediaType map_mediaType;
             private static Class person_type;
             private static Type person_genericType;
             private static MediaType person_mediaType;
             private static Class status_type;
             private static Type status_genericType;
             private static MediaType status_mediaType;
        
             static {
                 map_type = DeploymentUtils.loadClass("java.util.Map");
                 map_genericType = TypeSignatureParser.parse("Ljava/util/Map;");
                 map_mediaType = MediaType.valueOf("application/json");
                 Class var0 = DeploymentUtils.loadClass("org.acme.getting.started.Person");
                 person_type = var0;
                 person_genericType = var0;
                 person_mediaType = MediaType.valueOf("application/json");
                 Class var1 = DeploymentUtils.loadClass("org.acme.getting.started.Status");
                 status_type = var1;
                 status_genericType = var1;
                 status_mediaType = MediaType.valueOf("text/plain");
             }
        
             public static void populate(FormData var0, ResteasyReactiveInjectionContext var1) {
                 ResteasyReactiveRequestContext var3 = (ResteasyReactiveRequestContext) var1;
                 ServerHttpRequest var5 = var3.serverRequest();
                 String var2 = var5.getFormAttribute("foo");
                 var0.setFoo((String) var2);
                 QuarkusFileUpload var4 = MultipartSupport.getFileUpload("htmlFile", var3);
                 var0.setHtmlPart((FileUpload) var4);
                 String var6 = var5.getFormAttribute("map");
                 Class var7 = map_type;
                 Type var8 = map_genericType;
                 MediaType var9 = map_mediaType;
                 Object var10 = MultipartSupport.convertFormAttribute(var6, var7, var8, var9, var3);
                 var0.map = (Map) var10;
                 String var11 = var5.getFormAttribute("person");
                 Class var12 = person_type;
                 Type var13 = person_genericType;
                 MediaType var14 = person_mediaType;
                 Object var15 = MultipartSupport.convertFormAttribute(var11, var12, var13, var14, var3);
                 var0.person = (Person) var15;
                 String var16 = var5.getFormAttribute("status");
                 Class var17 = status_type;
                 Type var18 = status_genericType;
                 MediaType var19 = status_mediaType;
                 Object var20 = MultipartSupport.convertFormAttribute(var16, var17, var18, var19, var3);
                 var0.setStatus((Status) var20);
                 QuarkusFileUpload var21 = MultipartSupport.getFileUpload("txtFile", var3);
                 File var22;
                 if (var21 != null) {
                     var22 = var21.uploadedFile().toFile();
                 } else {
                     var22 = null;
                 }
        
                 var0.txtFile = (File) var22;
                 QuarkusFileUpload var23 = MultipartSupport.getFileUpload("htmlFile", var3);
                 Path var24;
                 if (var23 != null) {
                     var24 = var23.uploadedFile();
                 } else {
                     var24 = null;
                 }
        
                 var0.xmlPart = (Path) var24;
             }
         }