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