1 /* 2 * $Id: TransformerResolver.java 20570 2010-12-09 20:04:42Z aperepel $ 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 package org.mule.api.registry; 11 12 import org.mule.api.transformer.DataType; 13 import org.mule.api.transformer.Transformer; 14 15 /** 16 * A TransformResolver is used to find transformers that match a certain criteria in the registry. 17 * Implementations of this interface will use some or all of the information passed in to discover 18 * a matching transformer. 19 * <p/> 20 * Any implementations of this interface must be registered with the registry before it will get 21 * picked up. Typically this is done using the <code>registry-bootstrap.properties</code>. 22 * 23 * @since 3.0.0 24 */ 25 public interface TransformerResolver 26 { 27 /** 28 * Possible registry actions that occur that will trigger an event fired via {@link #transformerChange()} method. 29 */ 30 enum RegistryAction 31 { 32 /** 33 * signals that a transformer was added to the registry 34 */ 35 ADDED, 36 /** 37 * signals that a transformer was removed from the registry 38 */ 39 REMOVED 40 } 41 42 /** 43 * Responsible for finding a transformer with the given criteria. Note that if a transformer 44 * is not found null should be return, an exception must NOT be thrown. 45 * 46 * @param source information about the source object including the object iself 47 * @param result information about the result object to transform to 48 * @return a transformer from the registry that matches the criteria or null if a transformer was not found 49 * @throws ResolverException Only thrown if an exception is thrown during the search, this exception will just be a wrapper 50 */ 51 Transformer resolve(DataType<?> source, DataType<?> result) throws ResolverException; 52 53 /** 54 * A callback that is called when a transformer is registered or unregistered from the registry. 55 * This is used in situations where the resolver caches transformers and the cache needs to be 56 * updated. 57 * 58 * @param transformer the transformer that has changed 59 * @param registryAction whether the transformer was added or removed 60 */ 61 void transformerChange(Transformer transformer, RegistryAction registryAction); 62 }