View Javadoc
1   /*
2    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
3    * The software in this package is published under the terms of the CPAL v1.0
4    * license, a copy of which has been included with this distribution in the
5    * LICENSE.txt file.
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              //no-op
75          }
76      }
77  }