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