001 /*******************************************************************************
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements. See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership. The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing,
013 * software distributed under the License is distributed on an
014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015 * KIND, either express or implied. See the License for the
016 * specific language governing permissions and limitations
017 * under the License.
018 *******************************************************************************/
019 package org.apache.commons.convert;
020
021 /**
022 * Abstract converter class. This class handles converter registration
023 * and it implements some of the <code>Converter</code> methods.
024 */
025 public abstract class AbstractConverter<S, T> implements Converter<S, T>, ConverterLoader {
026 private final Class<? super S> sourceClass;
027 private final Class<? super T> targetClass;
028
029 protected AbstractConverter(Class<? super S> sourceClass, Class<? super T> targetClass) {
030 this.sourceClass = sourceClass;
031 this.targetClass = targetClass;
032 }
033
034 public void loadConverters() {
035 Converters.registerConverter(this);
036 }
037
038 public boolean canConvert(Class<?> sourceClass, Class<?> targetClass) {
039 return Util.instanceOf(sourceClass, this.getSourceClass()) && Util.instanceOf(targetClass, this.getTargetClass());
040 }
041
042 public Class<? super S> getSourceClass() {
043 return sourceClass;
044 }
045
046 public Class<? super T> getTargetClass() {
047 return targetClass;
048 }
049 }