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.AbstractMuleTestCase;
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
29 @ContainsTransformerMethods
30 public class AnnotatedTransformerTestCase extends AbstractMuleTestCase
31 {
32 @Override
33 protected void doSetUp() throws Exception
34 {
35 muleContext.getRegistry().registerObject("testcase", this);
36 }
37
38 @Test
39 public void testTransformerRegistration() throws Exception
40 {
41 AnnotatedTransformerProxy trans = (AnnotatedTransformerProxy)muleContext.getRegistry()
42 .lookupTransformer(getClass().getSimpleName() + ".dummy");
43
44 assertNotNull(trans);
45 assertEquals(getClass().getSimpleName() + ".dummy", trans.getName());
46 DataType dt = DataTypeFactory.create(ArrayList.class, Object.class, null);
47 assertTrue("should be a CollectionDataType", trans.getReturnDataType() instanceof CollectionDataType);
48 assertEquals(Object.class, ((CollectionDataType)trans.getReturnDataType()).getItemType());
49
50 assertEquals(dt, trans.getReturnDataType());
51
52 assertEquals(1, trans.getSourceDataTypes().size());
53 assertEquals(DataTypeFactory.INPUT_STREAM, trans.getSourceDataTypes().get(0));
54 assertEquals(5, trans.getPriorityWeighting());
55 }
56
57 @Test
58 public void testTransformerRegistration2() throws Exception
59 {
60 AnnotatedTransformerProxy trans = (AnnotatedTransformerProxy)muleContext.getRegistry()
61 .lookupTransformer(getClass().getSimpleName() + ".dummy2");
62
63 assertEquals(getClass().getSimpleName() + ".dummy2", trans.getName());
64 assertTrue("should be a CollectionDataType", trans.getReturnDataType() instanceof CollectionDataType);
65 assertEquals(String.class, ((CollectionDataType)trans.getReturnDataType()).getItemType());
66
67 DataType dt = DataTypeFactory.create(ArrayList.class, String.class, null);
68 assertEquals(dt, trans.getReturnDataType());
69 assertEquals(3, trans.getSourceDataTypes().size());
70 assertTrue(trans.getSourceDataTypes().contains(DataTypeFactory.create(BufferedInputStream.class)));
71 assertTrue(trans.getSourceDataTypes().contains(DataTypeFactory.create(FileInputStream.class)));
72 assertTrue(trans.getSourceDataTypes().contains(DataTypeFactory.create(ByteArrayInputStream.class)));
73 assertEquals(9, trans.getPriorityWeighting());
74 }
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 }