1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 package org.apache.commons.beanutils.converters; 18 19 /** 20 * {@link org.apache.commons.beanutils.Converter} 21 * implementation that converts an incoming 22 * object into a <code>java.lang.String</code> object. 23 * <p> 24 * Note that ConvertUtils really is designed to do string->object conversions, 25 * and offers very little support for object->string conversions. The 26 * ConvertUtils/ConvertUtilsBean methods only select a converter to apply 27 * based upon the target type being converted to, and generally assume that 28 * the input is a string (by calling its toString method if needed). 29 * <p> 30 * This class is therefore just a dummy converter that converts its input 31 * into a string by calling the input object's toString method and returning 32 * that value. 33 * <p> 34 * It is possible to replace this converter with something that has a big 35 * if/else statement that selects behaviour based on the real type of the 36 * object being converted (or possibly has a map of converters, and looks 37 * them up based on the class of the input object). However this is not part 38 * of the existing ConvertUtils framework. 39 * 40 * 41 * @author Craig R. McClanahan 42 * @version $Revision: 690380 $ $Date: 2008-08-29 16:04:38 -0400 (Fri, 29 Aug 2008) $ 43 * @since 1.3 44 */ 45 public final class StringConverter extends AbstractConverter { 46 47 48 /** 49 * Construct a <b>java.lang.String</b> <i>Converter</i> that throws 50 * a <code>ConversionException</code> if an error occurs. 51 */ 52 public StringConverter() { 53 super(); 54 } 55 56 /** 57 * Construct a <b>java.lang.String</b> <i>Converter</i> that returns 58 * a default value if an error occurs. 59 * 60 * @param defaultValue The default value to be returned 61 * if the value to be converted is missing or an error 62 * occurs converting the value. 63 */ 64 public StringConverter(Object defaultValue) { 65 super(defaultValue); 66 } 67 68 /** 69 * Return the default type this <code>Converter</code> handles. 70 * 71 * @return The default type this <code>Converter</code> handles. 72 * @since 1.8.0 73 */ 74 protected Class getDefaultType() { 75 return String.class; 76 } 77 78 /** 79 * Convert the specified input object into an output object of the 80 * specified type. 81 * 82 * @param type Data type to which this value should be converted. 83 * @param value The input value to be converted. 84 * @return The converted value. 85 * @throws Throwable if an error occurs converting to the specified type 86 * @since 1.8.0 87 */ 88 protected Object convertToType(Class type, Object value) throws Throwable { 89 return value.toString(); 90 } 91 92 93 }