View Javadoc

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