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