1
2
3
4
5
6
7 package org.mule.registry;
8
9 import org.mule.api.transformer.DiscoverableTransformer;
10 import org.mule.api.transformer.Transformer;
11 import org.mule.api.transformer.TransformerException;
12 import org.mule.tck.junit4.AbstractMuleContextTestCase;
13 import org.mule.transformer.AbstractTransformer;
14 import org.mule.transformer.simple.ObjectToByteArray;
15 import org.mule.transformer.types.DataTypeFactory;
16 import org.mule.transformer.types.SimpleDataType;
17
18 import java.io.FilterInputStream;
19
20 import org.junit.Test;
21
22 import static org.junit.Assert.assertNotNull;
23 import static org.junit.Assert.assertTrue;
24
25 public class TransformerCachingTestCase extends AbstractMuleContextTestCase
26 {
27 @Test
28 public void testCacheUpdate() throws Exception
29 {
30 SimpleDataType<?> sourceType = new SimpleDataType<FilterInputStream>(FilterInputStream.class);
31 Transformer trans = muleContext.getRegistry().lookupTransformer(sourceType, DataTypeFactory.BYTE_ARRAY);
32 assertNotNull(trans);
33 assertTrue(trans instanceof ObjectToByteArray);
34
35 Transformer trans2 = new FilterInputStreamToByteArray();
36 muleContext.getRegistry().registerTransformer(trans2);
37
38 trans = muleContext.getRegistry().lookupTransformer(sourceType, DataTypeFactory.BYTE_ARRAY);
39 assertNotNull(trans);
40 assertTrue(trans instanceof FilterInputStreamToByteArray);
41
42 trans = muleContext.getRegistry().lookupTransformer(DataTypeFactory.INPUT_STREAM, DataTypeFactory.BYTE_ARRAY);
43 assertNotNull(trans);
44 assertTrue(trans instanceof ObjectToByteArray);
45
46 muleContext.getRegistry().unregisterTransformer(trans2.getName());
47
48 trans = muleContext.getRegistry().lookupTransformer(sourceType, DataTypeFactory.BYTE_ARRAY);
49 assertNotNull(trans);
50 assertTrue(trans instanceof ObjectToByteArray);
51 }
52
53 public static class FilterInputStreamToByteArray extends AbstractTransformer implements DiscoverableTransformer
54 {
55 public FilterInputStreamToByteArray()
56 {
57 registerSourceType(DataTypeFactory.create(FilterInputStream.class));
58 setReturnDataType(DataTypeFactory.BYTE_ARRAY);
59 }
60
61 @Override
62 protected Object doTransform(Object src, String outputEncoding) throws TransformerException
63 {
64 throw new UnsupportedOperationException("This is a transformer only to be used for testing");
65 }
66
67 public int getPriorityWeighting()
68 {
69 return 0;
70 }
71
72 public void setPriorityWeighting(int weighting)
73 {
74
75 }
76 }
77 }