1
2
3
4
5
6
7
8
9
10 package org.mule.api.annotations.transformer;
11
12 import org.mule.api.annotations.ContainsTransformerMethods;
13 import org.mule.api.annotations.Transformer;
14 import org.mule.api.transformer.DataType;
15 import org.mule.config.transformer.AnnotatedTransformerProxy;
16 import org.mule.tck.junit4.AbstractMuleTestCase;
17 import org.mule.transformer.types.CollectionDataType;
18 import org.mule.transformer.types.DataTypeFactory;
19
20 import java.io.InputStream;
21 import java.lang.reflect.Method;
22 import java.util.ArrayList;
23
24 import org.junit.Test;
25
26 import static org.junit.Assert.assertEquals;
27 import static org.junit.Assert.assertTrue;
28
29 @ContainsTransformerMethods
30 public class CollectionTransformerTestCase extends AbstractMuleTestCase
31 {
32 @Test
33 public void testTransformerRegistration() throws Exception
34 {
35 Method m = getClass().getDeclaredMethod("dummy", InputStream.class);
36 AnnotatedTransformerProxy trans = new AnnotatedTransformerProxy(5, getClass(), m, new Class[]{}, null, null);
37
38 DataType dt = DataTypeFactory.create(ArrayList.class, Object.class, null);
39 assertTrue("should be a CollectionDataType", trans.getReturnDataType() instanceof CollectionDataType);
40 assertEquals(Object.class, ((CollectionDataType)trans.getReturnDataType()).getItemType());
41
42 assertEquals(dt, trans.getReturnDataType());
43 }
44
45 @Test
46 public void testTransformerRegistration2() throws Exception
47 {
48 Method m = getClass().getDeclaredMethod("dummy2", InputStream.class);
49 AnnotatedTransformerProxy trans = new AnnotatedTransformerProxy(5, getClass(), m, new Class[]{}, null, null);
50
51 DataType dt = DataTypeFactory.create(ArrayList.class, String.class, null);
52 assertTrue("should be a CollectionDataType", trans.getReturnDataType() instanceof CollectionDataType);
53 assertEquals(String.class, ((CollectionDataType)trans.getReturnDataType()).getItemType());
54 assertEquals(dt, trans.getReturnDataType());
55
56 }
57
58
59 @Transformer
60 public ArrayList dummy(InputStream in)
61 {
62 return new ArrayList();
63 }
64
65 @Transformer
66 public ArrayList<String> dummy2(InputStream in)
67 {
68 return new ArrayList<String>();
69 }
70 }