View Javadoc

1   /*
2    * $Id: TransformerCachingTestCase.java 22377 2011-07-11 12:41:42Z dirk.olmes $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
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              //no-op
78          }
79      }
80  }