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.AbstractMuleContextTestCase;
17 import org.mule.transformer.types.CollectionDataType;
18 import org.mule.transformer.types.DataTypeFactory;
19
20 import java.io.BufferedInputStream;
21 import java.io.ByteArrayInputStream;
22 import java.io.FileInputStream;
23 import java.io.InputStream;
24 import java.util.ArrayList;
25
26 import org.junit.Test;
27
28 import static org.junit.Assert.assertEquals;
29 import static org.junit.Assert.assertNotNull;
30 import static org.junit.Assert.assertTrue;
31
32
33 @ContainsTransformerMethods
34 public class AnnotatedTransformerTestCase extends AbstractMuleContextTestCase
35 {
36 @Override
37 protected void doSetUp() throws Exception
38 {
39 muleContext.getRegistry().registerObject("testcase", this);
40 }
41
42 @Test
43 public void testTransformerRegistration() throws Exception
44 {
45 AnnotatedTransformerProxy trans = (AnnotatedTransformerProxy)muleContext.getRegistry()
46 .lookupTransformer(getClass().getSimpleName() + ".dummy");
47
48 assertNotNull(trans);
49 assertEquals(getClass().getSimpleName() + ".dummy", trans.getName());
50 DataType dt = DataTypeFactory.create(ArrayList.class, Object.class, null);
51 assertTrue("should be a CollectionDataType", trans.getReturnDataType() instanceof CollectionDataType);
52 assertEquals(Object.class, ((CollectionDataType)trans.getReturnDataType()).getItemType());
53
54 assertEquals(dt, trans.getReturnDataType());
55
56 assertEquals(1, trans.getSourceDataTypes().size());
57 assertEquals(DataTypeFactory.INPUT_STREAM, trans.getSourceDataTypes().get(0));
58 assertEquals(5, trans.getPriorityWeighting());
59 }
60
61 @Test
62 public void testTransformerRegistration2() throws Exception
63 {
64 AnnotatedTransformerProxy trans = (AnnotatedTransformerProxy)muleContext.getRegistry()
65 .lookupTransformer(getClass().getSimpleName() + ".dummy2");
66
67 assertEquals(getClass().getSimpleName() + ".dummy2", trans.getName());
68 assertTrue("should be a CollectionDataType", trans.getReturnDataType() instanceof CollectionDataType);
69 assertEquals(String.class, ((CollectionDataType)trans.getReturnDataType()).getItemType());
70
71 DataType dt = DataTypeFactory.create(ArrayList.class, String.class, null);
72 assertEquals(dt, trans.getReturnDataType());
73 assertEquals(3, trans.getSourceDataTypes().size());
74 assertTrue(trans.getSourceDataTypes().contains(DataTypeFactory.create(BufferedInputStream.class)));
75 assertTrue(trans.getSourceDataTypes().contains(DataTypeFactory.create(FileInputStream.class)));
76 assertTrue(trans.getSourceDataTypes().contains(DataTypeFactory.create(ByteArrayInputStream.class)));
77 assertEquals(9, trans.getPriorityWeighting());
78 }
79
80 @Transformer
81 public ArrayList dummy(InputStream in)
82 {
83 return new ArrayList();
84 }
85
86 @Transformer(sourceTypes = {FileInputStream.class, ByteArrayInputStream.class}, priorityWeighting = 9)
87 public ArrayList<String> dummy2(BufferedInputStream in)
88 {
89 return new ArrayList<String>();
90 }
91 }