001    /*
002     * Licensed to the Apache Software Foundation (ASF) under one or more
003     * contributor license agreements.  See the NOTICE file distributed with
004     * this work for additional information regarding copyright ownership.
005     * The ASF licenses this file to You under the Apache License, Version 2.0
006     * (the "License"); you may not use this file except in compliance with
007     * the License.  You may obtain a copy of the License at
008     *
009     *      http://www.apache.org/licenses/LICENSE-2.0
010     *
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS,
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     * See the License for the specific language governing permissions and
015     * limitations under the License.
016     */
017    
018    
019    package org.apache.commons.beanutils;
020    
021    
022    /**
023     * <p>General purpose data type converter that can be registered and used
024     * within the BeanUtils package to manage the conversion of objects from
025     * one type to another.</p>
026     *
027     * <p>Converter subclasses bundled with the BeanUtils library are required
028     * to be thread-safe, as users of the library may call conversion methods
029     * from more than one thread simultaneously.</p>
030     *
031     * <p>Custom converter subclasses created by users of the library can be
032     * non-thread-safe if the application using them is single-threaded. However
033     * it is recommended that they be written in a thread-safe manner anyway.</p> 
034     *
035     * @author Craig McClanahan
036     * @author Paulo Gaspar
037     * @version $Revision: 555824 $ $Date: 2007-07-13 01:27:15 +0100 (Fri, 13 Jul 2007) $
038     * @since 1.3
039     */
040    
041    public interface Converter {
042    
043    
044        /**
045         * Convert the specified input object into an output object of the
046         * specified type.
047         *
048         * @param type Data type to which this value should be converted
049         * @param value The input value to be converted
050         * @return The converted value
051         *
052         * @exception ConversionException if conversion cannot be performed
053         *  successfully
054         */
055        public Object convert(Class type, Object value);
056    
057    
058    }