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: */
017:
018: package org.apache.commons.beanutils.converters;
019:
020: import java.util.List;
021: import org.apache.commons.beanutils.ConversionException;
022:
023: /**
024: * <p>Standard {@link org.apache.commons.beanutils.Converter} implementation that converts an incoming
025: * String into a primitive array of char. On a conversion failure, returns
026: * a specified default value or throws a {@link ConversionException} depending
027: * on how this instance is constructed.</p>
028: *
029: * @author Craig R. McClanahan
030: * @version $Revision: 556229 $ $Date: 2007-07-14 07:11:19 +0100 (Sat, 14 Jul 2007) $
031: * @since 1.4
032: * @deprecated Replaced by the new {@link ArrayConverter} implementation
033: */
034:
035: public final class CharacterArrayConverter extends
036: AbstractArrayConverter {
037:
038: // ----------------------------------------------------------- Constructors
039:
040: /**
041: * Create a {@link org.apache.commons.beanutils.Converter} that will throw
042: * a {@link ConversionException} if a conversion error occurs.
043: */
044: public CharacterArrayConverter() {
045:
046: this .defaultValue = null;
047: this .useDefault = false;
048:
049: }
050:
051: /**
052: * Create a {@link org.apache.commons.beanutils.Converter} that will return
053: * the specified default value if a conversion error occurs.
054: *
055: * @param defaultValue The default value to be returned
056: */
057: public CharacterArrayConverter(Object defaultValue) {
058:
059: this .defaultValue = defaultValue;
060: this .useDefault = true;
061:
062: }
063:
064: // ------------------------------------------------------- Static Variables
065:
066: /**
067: * <p>Model object for type comparisons.</p>
068: */
069: private static final char[] MODEL = new char[0];
070:
071: // --------------------------------------------------------- Public Methods
072:
073: /**
074: * Convert the specified input object into an output object of the
075: * specified type.
076: *
077: * @param type Data type to which this value should be converted
078: * @param value The input value to be converted
079: * @return the converted value
080: *
081: * @exception ConversionException if conversion cannot be performed
082: * successfully
083: */
084: public Object convert(Class type, Object value) {
085:
086: // Deal with a null value
087: if (value == null) {
088: if (useDefault) {
089: return (defaultValue);
090: } else {
091: throw new ConversionException("No value specified");
092: }
093: }
094:
095: // Deal with the no-conversion-needed case
096: if (MODEL.getClass() == value.getClass()) {
097: return (value);
098: }
099:
100: // Deal with input value as a String array
101: if (strings.getClass() == value.getClass()) {
102: try {
103: String[] values = (String[]) value;
104: char[] results = new char[values.length];
105: for (int i = 0; i < values.length; i++) {
106: results[i] = values[i].charAt(0);
107: }
108: return (results);
109: } catch (Exception e) {
110: if (useDefault) {
111: return (defaultValue);
112: } else {
113: throw new ConversionException(value.toString(), e);
114: }
115: }
116: }
117:
118: // Parse the input value as a String into elements
119: // and convert to the appropriate type
120: try {
121: List list = parseElements(value.toString());
122: char[] results = new char[list.size()];
123: for (int i = 0; i < results.length; i++) {
124: results[i] = ((String) list.get(i)).charAt(0);
125: }
126: return (results);
127: } catch (Exception e) {
128: if (useDefault) {
129: return (defaultValue);
130: } else {
131: throw new ConversionException(value.toString(), e);
132: }
133: }
134:
135: }
136:
137: }
|