View Javadoc

1   /*
2    * $Id: MessageEnricherTestCase.java 20464 2010-12-04 12:49:13Z dfeist $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.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.mule.enricher;
12  
13  import org.mule.RequestContext;
14  import org.mule.api.MuleEvent;
15  import org.mule.api.MuleException;
16  import org.mule.api.MuleMessage;
17  import org.mule.api.processor.MessageProcessor;
18  import org.mule.enricher.MessageEnricher;
19  import org.mule.enricher.MessageEnricher.EnrichExpressionPair;
20  import org.mule.tck.AbstractMuleTestCase;
21  import org.mule.transformer.simple.StringAppendTransformer;
22  
23  public class MessageEnricherTestCase extends AbstractMuleTestCase
24  {
25  
26      public void testEnrichHeaderWithPayload() throws Exception
27      {
28          MessageEnricher enricher = new MessageEnricher();
29          enricher.addEnrichExpressionPair(new EnrichExpressionPair("#[header:myHeader]"));
30          enricher.setEnrichmentMessageProcessor(new MessageProcessor()
31          {
32  
33              public MuleEvent process(MuleEvent event) throws MuleException
34              {
35                  event.getMessage().setPayload("test");
36                  return event;
37              }
38          });
39          
40          MuleMessage result = enricher.process(getTestEvent("")).getMessage();
41          assertEquals("test", result.getOutboundProperty("myHeader"));
42          assertEquals("", result.getPayload());
43      }
44  
45      public void testEnrichHeaderWithHeader() throws Exception
46      {
47          MessageEnricher enricher = new MessageEnricher();
48          enricher.addEnrichExpressionPair(new EnrichExpressionPair("#[header:header1]", "#[header:myHeader]"));
49          enricher.setEnrichmentMessageProcessor(new MessageProcessor()
50          {
51  
52              public MuleEvent process(MuleEvent event) throws MuleException
53              {
54                  event.getMessage().setOutboundProperty("header1", "test");
55                  return event;
56              }
57          });
58  
59          MuleMessage result = enricher.process(getTestEvent("")).getMessage();
60          assertEquals("test", result.getOutboundProperty("myHeader"));
61          assertEquals("", result.getPayload());
62      }
63  
64      public void testEnrichHeadersMToN() throws Exception
65      {
66          MessageEnricher enricher = new MessageEnricher();
67          enricher.addEnrichExpressionPair(new EnrichExpressionPair("#[header:header1]", "#[header:myHeader1]"));
68          enricher.addEnrichExpressionPair(new EnrichExpressionPair("#[header:header2]", "#[header:myHeader2]"));
69          enricher.addEnrichExpressionPair(new EnrichExpressionPair("#[header:header3]", "#[header:myHeader3]"));
70          enricher.setEnrichmentMessageProcessor(new MessageProcessor()
71          {
72  
73              public MuleEvent process(MuleEvent event) throws MuleException
74              {
75                  event.getMessage().setOutboundProperty("header1", "test");
76                  event.getMessage().setOutboundProperty("header2", "test2");
77                  event.getMessage().setOutboundProperty("header3", "test3");
78                  return event;
79              }
80          });
81  
82          MuleMessage result = enricher.process(getTestEvent("")).getMessage();
83  
84          assertNull(result.getOutboundProperty("myHeader"));
85          assertEquals("test2",result.getOutboundProperty("myHeader2"));
86          assertEquals("test3",result.getOutboundProperty("myHeader3"));
87  
88          assertEquals("", result.getPayload());
89      }
90  
91      public void testEnrichHeaderNestedEvaluator() throws Exception
92      {
93          muleContext.getRegistry().registerObject("appender", new StringAppendTransformer(" append"));
94  
95          MessageEnricher enricher = new MessageEnricher();
96          enricher.addEnrichExpressionPair(new EnrichExpressionPair("#[process:appender:#[header:header1]]",
97              "#[header:myHeader]"));
98          enricher.setEnrichmentMessageProcessor(new MessageProcessor()
99          {
100 
101             public MuleEvent process(MuleEvent event) throws MuleException
102             {
103                 event.getMessage().setOutboundProperty("header1", "test");
104                 return event;
105             }
106         });
107 
108         MuleEvent event = getTestEvent("");
109         RequestContext.setEvent(event);
110 
111         assertEquals("test append", enricher.process(getTestEvent("")).getMessage().getOutboundProperty(
112             "myHeader"));
113     }
114 
115 }