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.beanutils2.converters; 18 19 /** 20 * {@link org.apache.commons.beanutils2.Converter} implementation that converts an incoming object into a {@link String} object. 21 * <p> 22 * Note that ConvertUtils really is designed to do string->object conversions, and offers very little support for object->string conversions. The 23 * ConvertUtils/ConvertUtilsBean methods only select a converter to apply based upon the target type being converted to, and generally assume that the input is 24 * a string (by calling its toString method if needed). 25 * <p> 26 * This class is therefore just a dummy converter that converts its input into a string by calling the input object's toString method and returning that value. 27 * <p> 28 * It is possible to replace this converter with something that has a big if/else statement that selects behavior based on the real type of the object being 29 * converted (or possibly has a map of converters, and looks them up based on the class of the input object). However this is not part of the existing 30 * ConvertUtils framework. 31 * 32 * 33 * @since 1.3 34 */ 35 public final class StringConverter extends AbstractConverter<String> { 36 37 /** 38 * Constructs a <strong>java.lang.String</strong> <em>Converter</em> that throws a {@code ConversionException} if an error occurs. 39 */ 40 public StringConverter() { 41 } 42 43 /** 44 * Constructs a <strong>java.lang.String</strong> <em>Converter</em> that returns a default value if an error occurs. 45 * 46 * @param defaultValue The default value to be returned if the value to be converted is missing or an error occurs converting the value. 47 */ 48 public StringConverter(final String defaultValue) { 49 super(defaultValue); 50 } 51 52 /** 53 * Convert the specified input object into an output object of the specified type. 54 * 55 * @param <T> Target type of the conversion. 56 * @param type Data type to which this value should be converted. 57 * @param value The input value to be converted. 58 * @return The converted value. 59 * @throws Throwable if an error occurs converting to the specified type 60 * @since 1.8.0 61 */ 62 @Override 63 protected <T> T convertToType(final Class<T> type, final Object value) throws Throwable { 64 // We have to support Object, too, because this class is sometimes 65 // used for a standard to Object conversion 66 if (String.class.equals(type) || Object.class.equals(type)) { 67 return type.cast(value.toString()); 68 } 69 throw conversionException(type, value); 70 } 71 72 /** 73 * Gets the default type this {@code Converter} handles. 74 * 75 * @return The default type this {@code Converter} handles. 76 * @since 1.8.0 77 */ 78 @Override 79 protected Class<String> getDefaultType() { 80 return String.class; 81 } 82 83 }