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.AbstractMuleTestCase;
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 public class TransformDiscoveryTestCase extends AbstractMuleTestCase
22 {
23 @Override
24 protected void doSetUp() throws Exception
25 {
26 muleContext.getRegistry().registerTransformer(new StringToApple());
27 muleContext.getRegistry().registerTransformer(new StringToOrange());
28 }
29
30 public void testSimpleDiscovery() throws Exception
31 {
32 Transformer t = muleContext.getRegistry().lookupTransformer(DataTypeFactory.STRING, DataTypeFactory.create(Apple.class));
33 assertNotNull(t);
34 assertEquals(StringToApple.class, t.getClass());
35
36 t = muleContext.getRegistry().lookupTransformer(DataTypeFactory.STRING, DataTypeFactory.create(Orange.class));
37 assertNotNull(t);
38 assertEquals(StringToOrange.class, t.getClass());
39
40
41 try
42 {
43 muleContext.getRegistry().lookupTransformer(DataTypeFactory.STRING, DataTypeFactory.create(Banana.class));
44 fail("There is no transformer to go from String to Banana");
45 }
46 catch (TransformerException e)
47 {
48
49 }
50
51
52 muleContext.getRegistry().registerTransformer(new StringToRedApple());
53
54 t = muleContext.getRegistry().lookupTransformer(DataTypeFactory.STRING, DataTypeFactory.create(RedApple.class));
55 assertNotNull(t);
56 assertEquals(StringToRedApple.class, t.getClass());
57 }
58
59
60 protected class StringToApple extends org.mule.transformer.AbstractDiscoverableTransformer
61 {
62 public StringToApple()
63 {
64 setReturnDataType(DataTypeFactory.create(Apple.class));
65 }
66
67 protected Object doTransform(Object src, String encoding) throws TransformerException
68 {
69 return new Apple();
70 }
71 }
72
73 protected class StringToRedApple extends org.mule.transformer.AbstractDiscoverableTransformer
74 {
75 public StringToRedApple()
76 {
77 setReturnDataType(DataTypeFactory.create(RedApple.class));
78 setPriorityWeighting(MAX_PRIORITY_WEIGHTING);
79 }
80
81 protected Object doTransform(Object src, String encoding) throws TransformerException
82 {
83 return new RedApple();
84 }
85 }
86
87 protected class StringToOrange extends org.mule.transformer.AbstractDiscoverableTransformer
88 {
89 public StringToOrange()
90 {
91 setReturnDataType(DataTypeFactory.create(Orange.class));
92 }
93
94 protected Object doTransform(Object src, String encoding) throws TransformerException
95 {
96 return new Orange();
97 }
98 }
99 }