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.AbstractMuleTestCase;
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 public class TransformerCachingTestCase extends AbstractMuleTestCase
24 {
25 public void testCacheUpdate() throws Exception
26 {
27 Transformer trans = muleContext.getRegistry().lookupTransformer(new SimpleDataType(FilterInputStream.class), DataTypeFactory.BYTE_ARRAY);
28 assertNotNull(trans);
29 assertTrue(trans instanceof ObjectToByteArray);
30
31 Transformer trans2 = new FilterInputStreamToByteArray();
32 muleContext.getRegistry().registerTransformer(trans2);
33
34 trans = muleContext.getRegistry().lookupTransformer(new SimpleDataType(FilterInputStream.class), DataTypeFactory.BYTE_ARRAY);
35 assertNotNull(trans);
36 assertTrue(trans instanceof FilterInputStreamToByteArray);
37
38 trans = muleContext.getRegistry().lookupTransformer(DataTypeFactory.INPUT_STREAM, DataTypeFactory.BYTE_ARRAY);
39 assertNotNull(trans);
40 assertTrue(trans instanceof ObjectToByteArray);
41
42 muleContext.getRegistry().unregisterTransformer(trans2.getName());
43
44 trans = muleContext.getRegistry().lookupTransformer(new SimpleDataType(FilterInputStream.class), DataTypeFactory.BYTE_ARRAY);
45 assertNotNull(trans);
46 assertTrue(trans instanceof ObjectToByteArray);
47
48 }
49
50 public static class FilterInputStreamToByteArray extends AbstractTransformer implements DiscoverableTransformer
51 {
52 public FilterInputStreamToByteArray()
53 {
54 registerSourceType(DataTypeFactory.create(FilterInputStream.class));
55 setReturnDataType(DataTypeFactory.BYTE_ARRAY);
56 }
57
58 @Override
59 protected Object doTransform(Object src, String outputEncoding) throws TransformerException
60 {
61 throw new UnsupportedOperationException("This is a transformer only to be used for testing");
62 }
63
64 public int getPriorityWeighting()
65 {
66 return 0;
67 }
68
69 public void setPriorityWeighting(int weighting)
70 {
71
72 }
73 }
74 }