View Javadoc

1   /*
2    * $Id:AbstractExternalTransactionTestCase.java 8215 2007-09-05 16:56:51Z aperepel $
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  
11  package org.mule.transport.vm.functional.transactions;
12  
13  import static org.junit.Assert.assertEquals;
14  import static org.junit.Assert.assertNull;
15  import static org.junit.Assert.assertTrue;
16  
17  import java.util.Arrays;
18  import java.util.Collection;
19  
20  import org.apache.commons.logging.Log;
21  import org.apache.commons.logging.LogFactory;
22  import org.junit.Test;
23  import org.junit.runners.Parameterized.Parameters;
24  import org.mule.api.DefaultMuleException;
25  import org.mule.api.MuleEvent;
26  import org.mule.api.MuleException;
27  import org.mule.api.MuleMessage;
28  import org.mule.api.processor.MessageProcessor;
29  import org.mule.module.client.MuleClient;
30  import org.mule.tck.AbstractServiceAndFlowTestCase;
31  import org.mule.transport.NullPayload;
32  
33  /**
34   * Test transaction behavior when "joinExternal" is set to disallow joining external
35   * transactions There is one test per legal transactional behavior (e.g.
36   * ALWAYS_BEGIN).
37   */
38  public class MessageFilterTestCase extends AbstractServiceAndFlowTestCase
39  {
40  
41      protected static final Log logger = LogFactory.getLog(MessageFilterTestCase.class);
42  
43      private static String rejectMesage;
44  
45      public MessageFilterTestCase(ConfigVariant variant, String configResources)
46      {
47          super(variant, configResources);
48      }
49  
50      @Parameters
51      public static Collection<Object[]> parameters()
52      {
53          return Arrays.asList(new Object[][]{
54              {ConfigVariant.SERVICE, "org/mule/test/config/message-filter-config-service.xml"},
55              {ConfigVariant.FLOW, "org/mule/test/config/message-filter-config-flow.xml"}});
56      }
57  
58      /** Check that the configuration specifies considers external transactions */
59      @Test
60      public void testConfiguration() throws Exception
61      {
62          MuleClient client = new MuleClient(muleContext);
63  
64          MuleMessage response = client.send("vm://order.validation", "OK", null);
65          assertTrue(response.getPayload() instanceof NullPayload);
66          assertEquals("OK(rejected!-1)", rejectMesage);
67  
68          response = client.send("vm://order.validation", "OK-ABC", null);
69          assertTrue(response.getPayload() instanceof NullPayload);
70          assertEquals("OK-ABC(rejected!-2)", rejectMesage);
71  
72          response = client.send("vm://order.validation", "OK-DEF", null);
73          assertTrue(response.getPayload() instanceof NullPayload);
74          assertEquals("OK-DEF(rejected!-1)", rejectMesage);
75          rejectMesage = null;
76  
77          response = client.send("vm://order.validation", "OK-ABC-DEF", null);
78          assertEquals("OK-ABC-DEF(success)", response.getPayloadAsString());
79          assertNull(rejectMesage);
80      }
81  
82      public static class Reject1 implements MessageProcessor
83      {
84          public void setName(String name)
85          {
86          }
87  
88          public MuleEvent process(MuleEvent event) throws MuleException
89          {
90              try
91              {
92                  MuleMessage msg = event.getMessage();
93                  String payload = msg.getPayloadAsString();
94                  rejectMesage = payload + "(rejected!-1)";
95                  return null;
96              }
97              catch (Exception e)
98              {
99                  throw new DefaultMuleException(e);
100             }
101         }
102     }
103 
104     public static class Reject2 implements MessageProcessor
105     {
106         public void setName(String name)
107         {
108         }
109 
110         public MuleEvent process(MuleEvent event) throws MuleException
111         {
112             try
113             {
114                 MuleMessage msg = event.getMessage();
115                 String payload = msg.getPayloadAsString();
116                 rejectMesage = payload + "(rejected!-2)";
117                 return null;
118             }
119             catch (Exception e)
120             {
121                 throw new DefaultMuleException(e);
122             }
123         }
124     }
125 }