1
2
3
4
5
6
7
8
9
10 package org.mule.transformer;
11
12 import org.mule.api.transformer.Transformer;
13 import org.mule.api.transformer.TransformerException;
14 import org.mule.tck.junit4.AbstractMuleContextTestCase;
15 import org.mule.tck.testmodels.fruit.Apple;
16 import org.mule.tck.testmodels.fruit.Banana;
17 import org.mule.tck.testmodels.fruit.Orange;
18 import org.mule.tck.testmodels.fruit.RedApple;
19 import org.mule.transformer.types.DataTypeFactory;
20
21 import org.junit.Test;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertNotNull;
25 import static org.junit.Assert.fail;
26
27 public class TransformDiscoveryTestCase extends AbstractMuleContextTestCase
28 {
29 @Override
30 protected void doSetUp() throws Exception
31 {
32 muleContext.getRegistry().registerTransformer(new StringToApple());
33 muleContext.getRegistry().registerTransformer(new StringToOrange());
34 }
35
36 @Test
37 public void testSimpleDiscovery() throws Exception
38 {
39 Transformer t = muleContext.getRegistry().lookupTransformer(DataTypeFactory.STRING, DataTypeFactory.create(Apple.class));
40 assertNotNull(t);
41 assertEquals(StringToApple.class, t.getClass());
42
43 t = muleContext.getRegistry().lookupTransformer(DataTypeFactory.STRING, DataTypeFactory.create(Orange.class));
44 assertNotNull(t);
45 assertEquals(StringToOrange.class, t.getClass());
46
47
48 try
49 {
50 muleContext.getRegistry().lookupTransformer(DataTypeFactory.STRING, DataTypeFactory.create(Banana.class));
51 fail("There is no transformer to go from String to Banana");
52 }
53 catch (TransformerException e)
54 {
55
56 }
57
58
59 muleContext.getRegistry().registerTransformer(new StringToRedApple());
60
61 t = muleContext.getRegistry().lookupTransformer(DataTypeFactory.STRING, DataTypeFactory.create(RedApple.class));
62 assertNotNull(t);
63 assertEquals(StringToRedApple.class, t.getClass());
64 }
65
66 protected class StringToApple extends org.mule.transformer.AbstractDiscoverableTransformer
67 {
68 public StringToApple()
69 {
70 setReturnDataType(DataTypeFactory.create(Apple.class));
71 }
72
73 protected Object doTransform(Object src, String encoding) throws TransformerException
74 {
75 return new Apple();
76 }
77 }
78
79 protected class StringToRedApple extends org.mule.transformer.AbstractDiscoverableTransformer
80 {
81 public StringToRedApple()
82 {
83 setReturnDataType(DataTypeFactory.create(RedApple.class));
84 setPriorityWeighting(MAX_PRIORITY_WEIGHTING);
85 }
86
87 protected Object doTransform(Object src, String encoding) throws TransformerException
88 {
89 return new RedApple();
90 }
91 }
92
93 protected class StringToOrange extends org.mule.transformer.AbstractDiscoverableTransformer
94 {
95 public StringToOrange()
96 {
97 setReturnDataType(DataTypeFactory.create(Orange.class));
98 }
99
100 protected Object doTransform(Object src, String encoding) throws TransformerException
101 {
102 return new Orange();
103 }
104 }
105 }