1 /* 2 * $Id: AbstractDynamicMessageProcessor.java 20813 2010-12-21 11:37:48Z dirk.olmes $ 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 * Implementation of {@link MessageProcessor} that dynamically chooses and uses 20 * another {@link MessageProcessor} 21 */ 22 public abstract class AbstractDynamicMessageProcessor implements MessageProcessor 23 { 24 public MuleEvent process(MuleEvent event) throws MuleException 25 { 26 return resolveMessageProcessor(event).process(event); 27 } 28 29 /** 30 * Determines which MessageProcessor should be used. Implementations may choose 31 * to use a message property, configure this 32 */ 33 protected abstract MessageProcessor resolveMessageProcessor(MuleEvent event) throws MuleException; 34 35 @Override 36 public String toString() 37 { 38 return ObjectUtils.toString(this); 39 } 40 }