1   package com.atlassian.plugins.rest.multipart;
2   
3   import com.atlassian.plugins.rest.common.multipart.FilePart;
4   import com.atlassian.plugins.rest.common.multipart.MultipartConfig;
5   import com.atlassian.plugins.rest.common.multipart.MultipartConfigClass;
6   import com.atlassian.plugins.rest.common.multipart.MultipartFormParam;
7   import com.atlassian.plugins.rest.common.security.AnonymousAllowed;
8   
9   import java.util.ArrayList;
10  import java.util.Collection;
11  import javax.ws.rs.POST;
12  import javax.ws.rs.Path;
13  
14  /**
15   */
16  @Path ("/multipart")
17  @AnonymousAllowed
18  public class MultipartResource
19  {
20      @POST
21      @Path("single")
22      public FilePartObject showMultipartSingle(@MultipartFormParam("file")FilePart filePart)
23      {
24          return new FilePartObject("file", filePart.isFormField(), filePart.getName(), filePart.getContentType(), filePart.getValue());
25      }
26  
27      @POST
28      @Path("multiple")
29      public FilePartObjects showMultipartMultiple(@MultipartFormParam("file") Collection<FilePart> fileParts)
30      {
31          Collection<FilePartObject> objects = new ArrayList<FilePartObject>();
32          for (FilePart filePart : fileParts)
33          {
34              objects.add(new FilePartObject("file", filePart.isFormField(), filePart.getName(), filePart.getContentType(), filePart.getValue()));
35          }
36          return new FilePartObjects(objects);
37      }
38  
39      @POST
40      @Path("config")
41      @MultipartConfigClass(MultipartResource.SmallMultipartConfig.class)
42      public FilePartObjects showMultipartConfig(@MultipartFormParam("file") Collection<FilePart> fileParts)
43      {
44          Collection<FilePartObject> objects = new ArrayList<FilePartObject>();
45          for (FilePart filePart : fileParts)
46          {
47              objects.add(new FilePartObject("file", filePart.isFormField(), filePart.getName(), filePart.getContentType(), filePart.getValue()));
48          }
49          return new FilePartObjects(objects);
50      }
51  
52      public static class SmallMultipartConfig implements MultipartConfig
53      {
54          public long getMaxFileSize()
55          {
56              return 10;
57          }
58  
59          public long getMaxSize()
60          {
61              return 1000;
62          }
63      }
64  
65  }