Coverage Report - org.mule.interceptors.MessageNormalizerInterceptor
 
Classes in this File Line Coverage Branch Coverage Complexity
MessageNormalizerInterceptor
0%
0/17
0%
0/4
1.6
 
 1  
 /*
 2  
  * $Id: MessageNormalizerInterceptor.java 7963 2007-08-21 08:53:15Z dirk.olmes $
 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.interceptors;
 12  
 
 13  
 import org.mule.config.MuleProperties;
 14  
 import org.mule.impl.RequestContext;
 15  
 import org.mule.umo.Invocation;
 16  
 import org.mule.umo.UMOException;
 17  
 import org.mule.umo.UMOInterceptor;
 18  
 import org.mule.umo.UMOMessage;
 19  
 
 20  
 /**
 21  
  * <code>MessageNormalizerInterceptor</code> can be used as a simple pre/post message
 22  
  * normalizer for a given component. This is useful in situations where you have an
 23  
  * existing component that may accept a one or more child objects of the incoming object.
 24  
  * For example, you may Have a BankQuoteRequest object that contains customer, credit and
 25  
  * loan details, but one component is only interested in enriching the customer
 26  
  * information. Rather than have your component understand how to deal with a
 27  
  * BankLoanRequest this interceptor can be used to extract the customer and pass that to
 28  
  * the component. Once the component have finshed processing this interceptor update the
 29  
  * BankLoanRequest with the new customer information.
 30  
  */
 31  0
 public abstract class MessageNormalizerInterceptor implements UMOInterceptor
 32  
 {
 33  0
     private Object originalPayload = null;
 34  
 
 35  
     /**
 36  
      * This method is invoked before the event is processed
 37  
      * 
 38  
      * @param invocation the message invocation being processed
 39  
      */
 40  
     public abstract UMOMessage before(Invocation invocation) throws UMOException;
 41  
 
 42  
     /**
 43  
      * This method is invoked after the event has been processed
 44  
      * 
 45  
      * @param invocation the message invocation being processed
 46  
      */
 47  
     public abstract UMOMessage after(Invocation invocation) throws UMOException;
 48  
 
 49  
     public final UMOMessage intercept(Invocation invocation) throws UMOException
 50  
     {
 51  
         // store the original payload as we will need it later
 52  0
         originalPayload = invocation.getEvent().getTransformedMessage();
 53  
 
 54  
         // get the updated message
 55  0
         UMOMessage bMessage = before(invocation);
 56  0
         if (bMessage != null)
 57  
         {
 58  
             // update the current event
 59  0
             RequestContext.rewriteEvent(bMessage);
 60  
             // update the message in the invocation
 61  0
             invocation.setMessage(bMessage);
 62  
             // remove any method override as it will not apply to the new
 63  
             // message payload
 64  0
             invocation.getMessage().removeProperty(MuleProperties.MULE_METHOD_PROPERTY);
 65  
         }
 66  
         // invoke
 67  0
         UMOMessage message = invocation.execute();
 68  
         // Update the message
 69  0
         invocation.setMessage(message);
 70  0
         UMOMessage aMessage = after(invocation);
 71  0
         if (aMessage == null)
 72  
         {
 73  0
             return message;
 74  
         }
 75  
         else
 76  
         {
 77  0
             return aMessage;
 78  
         }
 79  
     }
 80  
 
 81  
     protected Object getOriginalPayload()
 82  
     {
 83  0
         return originalPayload;
 84  
     }
 85  
 
 86  
     protected void setOriginalPayload(Object originalPayload)
 87  
     {
 88  0
         this.originalPayload = originalPayload;
 89  0
     }
 90  
 }