View Javadoc
1   /*
2    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
3    * The software in this package is published under the terms of the CPAL v1.0
4    * license, a copy of which has been included with this distribution in the
5    * LICENSE.txt file.
6    */
7   package org.mule.api.annotations.param;
8   
9   import org.mule.util.StringDataSource;
10  
11  import java.io.IOException;
12  import java.util.ArrayList;
13  import java.util.List;
14  import java.util.Map;
15  
16  import javax.activation.DataHandler;
17  
18  /**
19   * Tests various cases for how attachments can be injected into a component invocation
20   */
21  public class InboundAttachmentsAnnotationComponent
22  {
23      public DataHandler processAttachment(@InboundAttachments("foo") DataHandler foo)
24      {
25          return foo;
26      }
27  
28      public String processAttachmentOptional(@InboundAttachments("faz?") DataHandler faz)
29      {
30          if(faz==null)
31          {
32              return "faz not set";
33          }
34          return null;
35      }
36  
37      //This tests automatic conversion of DataHandler to its content
38      public String processAttachmentWithType(@InboundAttachments("foo") String foo)
39      {
40          return foo;
41      }
42  
43      public Map<String, DataHandler> processAttachments(@InboundAttachments("foo, bar") Map<String, DataHandler> attachments)
44      {
45          return attachments;
46      }
47      
48      public Map<String, DataHandler> processAttachmentsAll(@InboundAttachments("*") Map<String, DataHandler> attachments)
49      {
50          return attachments;
51      }
52  
53      public Map<String, DataHandler> processAttachmentsWildcard(@InboundAttachments("ba*") Map<String, DataHandler> attachments)
54      {
55          return attachments;
56      }
57      
58      public Map<String, DataHandler> processAttachmentsMultiWildcard(@InboundAttachments("ba*, f*") Map<String, DataHandler> attachments)
59      {
60          return attachments;
61      }
62      
63      public Map<String, DataHandler> processSingleMapAttachment(@InboundAttachments("foo") Map<String, DataHandler> attachments)
64      {
65          return attachments;
66      }
67      
68      public Map<String, DataHandler> processAttachmentsOptional(@InboundAttachments("foo, bar, baz?") Map<String, DataHandler> attachments)
69      {
70          return attachments;
71      }
72  
73      public Map<String, DataHandler> processAttachmentsAllOptional(@InboundAttachments("foo?, bar?, baz?") Map<String, DataHandler> attachments)
74      {
75          return attachments;
76      }
77      
78      public Map<String, DataHandler> processUnmodifiableAttachments(@InboundAttachments("foo, bar") Map<String, DataHandler> attachments)
79      {
80          //Should throw UnsupportedOperationException
81          //TODO auto wrap method on Map
82          attachments.put("car", new DataHandler(new StringDataSource("carValue")));
83          return attachments;
84      }
85  
86      public List processAttachmentsList(@InboundAttachments("foo, bar, baz") List<DataHandler> attachments)
87      {
88          return readToList(attachments);
89      }
90  
91      public List processAttachmentsListAll(@InboundAttachments("*") List<DataHandler> attachments)
92      {
93          return readToList(attachments);
94      }
95  
96      public List processSingleAttachmentList(@InboundAttachments("foo") List<DataHandler> attachments)
97      {
98          return readToList(attachments);
99      }
100 
101     public List processAttachmentsListOptional(@InboundAttachments("foo, bar, baz?") List<DataHandler> attachments)
102     {
103         return readToList(attachments);
104     }
105 
106     public List processAttachmentsListAllOptional(@InboundAttachments("foo?, bar?, baz?") List<DataHandler> attachments)
107     {
108         return readToList(attachments);
109     }
110 
111     public List processUnmodifiableAttachmentsList(@InboundAttachments("foo, bar") List<DataHandler> attachments)
112     {
113         //Should throw UnsupportedOperationException
114         attachments.add(new DataHandler(new StringDataSource("carValue")));
115         return readToList(attachments);
116     }
117 
118     public List processAttachmentsListWildcard(@InboundAttachments("ba*") List<DataHandler> attachments)
119     {
120         return readToList(attachments);
121     }
122 
123     public List processAttachmentsListMultiWildcard(@InboundAttachments("ba*, f*") List<DataHandler> attachments)
124     {
125         return readToList(attachments);
126     }
127 
128     private List readToList(List<DataHandler> list)
129     {
130         if(list.size()==0) return list;
131         List l = new ArrayList(list.size());
132         for (DataHandler dataHandler : list)
133         {
134             try
135             {
136                 l.add(dataHandler.getContent());
137             }
138             catch (IOException e)
139             {
140                 e.printStackTrace();
141             }
142         }
143         return l;
144     }
145 }