001 /*
002 @license.text@
003 */
004 package com.hammurapi.convert;
005
006 import com.hammurapi.util.Context;
007
008 /**
009 * Part of composite converters which converts one type to another.
010 * @author Pavel Vlasov
011 *
012 * @version $Revision: 1.1 $
013 */
014 public interface AtomicConverter<S, T> {
015
016 /**
017 * @return Type which converter converts from.
018 */
019 Class<S> getSourceType();
020
021 /**
022 * @return Type which converter converts to.
023 */
024 Class<? extends T> getTargetType();
025
026 /**
027 * Converts object to target type.
028 * @param source Source object.
029 * @param master Master converter to delegate conversion
030 * of object parts.
031 * @return Converted object.
032 */
033 T convert(S source, Converter master, Context context, ClassLoader classLoader);
034 }