1 /*******************************************************************************
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 *******************************************************************************/
19 package org.apache.commons.convert;
20
21 /** Converter interface. Classes implement this interface to convert one
22 * Java object type to another.
23 *
24 * @param <S> The source object type
25 * @param <T> The target object type
26 */
27 public interface Converter<S, T> {
28 /** Returns <code>true</code> if this object can convert
29 * <code>sourceClass</code> to <code>targetClass</code>.
30 * <p>Implementations can accomodate class hierarchy ranges
31 * by converting super classes or interfaces.</p>
32 *
33 * @param sourceClass The source <code>Class</code>
34 * @param targetClass The target <code>Class</code>
35 * @return <code>true</code> if this object can convert
36 * <code>sourceClass</code> to <code>targetClass</code>.
37 */
38 public boolean canConvert(Class<?> sourceClass, Class<?> targetClass);
39
40 /** Converts <code>obj</code> to <code>T</code>.
41 *
42 * @param obj The source <code>Object</code> to convert
43 * @return The converted <code>Object</code>
44 * @throws ConversionException
45 */
46 public T convert(S obj) throws ConversionException;
47
48 /** Returns the source <code>Class</code> for this converter.
49 *
50 * @return The source <code>Class</code> for this converter
51 */
52 public Class<?> getSourceClass();
53
54 /** Returns the target <code>Class</code> for this converter.
55 *
56 * @return The target <code>Class</code> for this converter
57 */
58 public Class<?> getTargetClass();
59 }