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.param;
8   
9   import org.mule.api.model.InvocationResult;
10  import org.mule.tck.testmodels.fruit.Banana;
11  import org.mule.tck.testmodels.fruit.Fruit;
12  import org.mule.tck.testmodels.fruit.Orange;
13  import org.mule.tck.testmodels.fruit.RedApple;
14  
15  import java.util.List;
16  
17  import org.junit.Test;
18  
19  import static org.junit.Assert.assertEquals;
20  import static org.junit.Assert.assertTrue;
21  import static org.junit.Assert.fail;
22  
23  public class LookupEntrypointInjectionTestCase extends AbstractAnnotatedEntrypointResolverTestCase
24  {
25  
26      @Override
27      protected Object getComponent()
28      {
29          return new LookupComponent();
30      }
31  
32      @Test
33      public void testLookups() throws Exception
34      {
35          RedApple redApple = new RedApple();
36          redApple.wash();
37  
38          muleContext.getRegistry().registerObject("redApple", redApple);
39          muleContext.getRegistry().registerObject("anotherRedApple", new RedApple());
40          muleContext.getRegistry().registerObject("aBanana", new Banana());
41  
42          InvocationResult response = invokeResolver("listFruit", eventContext);
43          assertTrue("Message payload should be a List", response.getResult() instanceof List);
44          List<Fruit> result = (List<Fruit>) response.getResult();
45          assertEquals(2, result.size());
46  
47          assertEquals(redApple, result.get(1));
48  
49          //Add optional Orange
50          muleContext.getRegistry().registerObject("orange", new Orange());
51          response = invokeResolver("listFruit", eventContext);
52          assertTrue("Message payload should be a List", response.getResult() instanceof List);
53          result = (List<Fruit>) response.getResult();
54          //We now have an orange
55          assertEquals(3, result.size());
56  
57          //Remove required object
58          muleContext.getRegistry().unregisterObject("redApple");
59  
60          try
61          {
62              invokeResolver("listFruit", eventContext);
63              fail("redApple is a required property but not in the registry");
64          }
65          catch (Exception e)
66          {
67              //expected
68          }
69  
70      }
71  }