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