1 /* 2 * $Id: AbstractDynamicMessageProcessor.java 20320 2010-11-24 15:03:31Z dfeist $ 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.processor; 12 13 import org.mule.api.MuleEvent; 14 import org.mule.api.MuleException; 15 import org.mule.api.processor.MessageProcessor; 16 import org.mule.util.ObjectUtils; 17 18 19 /** 20 * Implementation of {@link MessageProcessor} that dynamically chooses and uses 21 * another {@link MessageProcessor} 22 */ 23 public abstract class AbstractDynamicMessageProcessor implements MessageProcessor 24 { 25 26 public MuleEvent process(MuleEvent event) throws MuleException 27 { 28 return resolveMessageProcessor(event).process(event); 29 } 30 31 /** 32 * Determines which MessageProcessor should be used. Implementations may choose 33 * to use a message property, configure this 34 * 35 * @param event 36 * @return 37 */ 38 protected abstract MessageProcessor resolveMessageProcessor(MuleEvent event) throws MuleException; 39 40 @Override 41 public String toString() 42 { 43 return ObjectUtils.toString(this); 44 } 45 }