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 */ 017package org.apache.commons.beanutils2.converters; 018 019import java.io.File; 020 021/** 022 * {@link org.apache.commons.beanutils2.Converter} implementation that handles conversion to and from <strong>java.io.File</strong> objects. 023 * <p> 024 * Can be configured to either return a <em>default value</em> or throw a {@code ConversionException} if a conversion error occurs. 025 * 026 * @since 1.6 027 */ 028public final class FileConverter extends AbstractConverter<File> { 029 030 /** 031 * Constructs a <strong>java.io.File</strong> <em>Converter</em> that throws a {@code ConversionException} if an error occurs. 032 */ 033 public FileConverter() { 034 } 035 036 /** 037 * Constructs a <strong>java.io.File</strong> <em>Converter</em> that returns a default value if an error occurs. 038 * 039 * @param defaultValue The default value to be returned if the value to be converted is missing or an error occurs converting the value. 040 */ 041 public FileConverter(final File defaultValue) { 042 super(defaultValue); 043 } 044 045 /** 046 * <p> 047 * Converts the input object into a java.io.File. 048 * </p> 049 * 050 * @param <T> The target type of the conversion. 051 * @param type Data type to which this value should be converted. 052 * @param value The input value to be converted. 053 * @return The converted value. 054 * @throws Throwable if an error occurs converting to the specified type 055 * @since 1.8.0 056 */ 057 @Override 058 protected <T> T convertToType(final Class<T> type, final Object value) throws Throwable { 059 if (File.class.equals(type)) { 060 return type.cast(new File(value.toString())); 061 } 062 063 throw conversionException(type, value); 064 } 065 066 /** 067 * Gets the default type this {@code Converter} handles. 068 * 069 * @return The default type this {@code Converter} handles. 070 * @since 1.8.0 071 */ 072 @Override 073 protected Class<File> getDefaultType() { 074 return File.class; 075 } 076}