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