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.api.annotations.transformer;
8   
9   import org.mule.api.annotations.ContainsTransformerMethods;
10  import org.mule.api.annotations.Transformer;
11  import org.mule.api.transformer.DataType;
12  import org.mule.config.transformer.AnnotatedTransformerProxy;
13  import org.mule.tck.junit4.AbstractMuleContextTestCase;
14  import org.mule.transformer.types.CollectionDataType;
15  import org.mule.transformer.types.DataTypeFactory;
16  
17  import java.io.BufferedInputStream;
18  import java.io.ByteArrayInputStream;
19  import java.io.FileInputStream;
20  import java.io.InputStream;
21  import java.util.ArrayList;
22  
23  import org.junit.Test;
24  
25  import static org.junit.Assert.assertEquals;
26  import static org.junit.Assert.assertNotNull;
27  import static org.junit.Assert.assertTrue;
28  
29  
30  @ContainsTransformerMethods
31  public class AnnotatedTransformerTestCase extends AbstractMuleContextTestCase
32  {
33      @Override
34      protected void doSetUp() throws Exception
35      {
36          muleContext.getRegistry().registerObject("testcase", this);
37      }
38  
39      @Test
40      public void testTransformerRegistration() throws Exception
41      {
42          AnnotatedTransformerProxy trans = (AnnotatedTransformerProxy)muleContext.getRegistry()
43                  .lookupTransformer(getClass().getSimpleName() + ".dummy");
44  
45          assertNotNull(trans);
46          assertEquals(getClass().getSimpleName() + ".dummy", trans.getName());
47          DataType dt = DataTypeFactory.create(ArrayList.class, Object.class, null);
48          assertTrue("should be a CollectionDataType", trans.getReturnDataType() instanceof CollectionDataType);
49          assertEquals(Object.class, ((CollectionDataType)trans.getReturnDataType()).getItemType());
50  
51          assertEquals(dt, trans.getReturnDataType());
52  
53          assertEquals(1, trans.getSourceDataTypes().size());
54          assertEquals(DataTypeFactory.INPUT_STREAM, trans.getSourceDataTypes().get(0));
55          assertEquals(5, trans.getPriorityWeighting());
56      }
57  
58      @Test
59      public void testTransformerRegistration2() throws Exception
60      {
61          AnnotatedTransformerProxy trans = (AnnotatedTransformerProxy)muleContext.getRegistry()
62                  .lookupTransformer(getClass().getSimpleName() + ".dummy2");
63  
64          assertEquals(getClass().getSimpleName() + ".dummy2", trans.getName());
65          assertTrue("should be a CollectionDataType", trans.getReturnDataType() instanceof CollectionDataType);
66          assertEquals(String.class, ((CollectionDataType)trans.getReturnDataType()).getItemType());
67  
68          DataType dt = DataTypeFactory.create(ArrayList.class, String.class, null);
69          assertEquals(dt, trans.getReturnDataType());
70          assertEquals(3, trans.getSourceDataTypes().size());
71          assertTrue(trans.getSourceDataTypes().contains(DataTypeFactory.create(BufferedInputStream.class)));
72          assertTrue(trans.getSourceDataTypes().contains(DataTypeFactory.create(FileInputStream.class)));
73          assertTrue(trans.getSourceDataTypes().contains(DataTypeFactory.create(ByteArrayInputStream.class)));
74          assertEquals(9, trans.getPriorityWeighting());
75      }
76  
77      @Transformer
78      public ArrayList dummy(InputStream in)
79      {
80          return new ArrayList();
81      }
82  
83      @Transformer(sourceTypes = {FileInputStream.class, ByteArrayInputStream.class}, priorityWeighting = 9)
84      public ArrayList<String> dummy2(BufferedInputStream in)
85      {
86          return new ArrayList<String>();
87      }
88  }