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 int. 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 IntegerArrayConverter extends AbstractArrayConverter {
036:
037: // ----------------------------------------------------------- Constructors
038:
039: /**
040: * Create a {@link org.apache.commons.beanutils.Converter} that will throw
041: * a {@link ConversionException} if a conversion error occurs.
042: */
043: public IntegerArrayConverter() {
044:
045: this .defaultValue = null;
046: this .useDefault = false;
047:
048: }
049:
050: /**
051: * Create a {@link org.apache.commons.beanutils.Converter} that will return
052: * the specified default value if a conversion error occurs.
053: *
054: * @param defaultValue The default value to be returned
055: */
056: public IntegerArrayConverter(Object defaultValue) {
057:
058: this .defaultValue = defaultValue;
059: this .useDefault = true;
060:
061: }
062:
063: // ------------------------------------------------------- Static Variables
064:
065: /**
066: * <p>Model object for type comparisons.</p>
067: */
068: private static final int[] MODEL = new int[0];
069:
070: // --------------------------------------------------------- Public Methods
071:
072: /**
073: * Convert the specified input object into an output object of the
074: * specified type.
075: *
076: * @param type Data type to which this value should be converted
077: * @param value The input value to be converted
078: * @return the converted value
079: *
080: * @exception ConversionException if conversion cannot be performed
081: * successfully
082: */
083: public Object convert(Class type, Object value) {
084:
085: // Deal with a null value
086: if (value == null) {
087: if (useDefault) {
088: return (defaultValue);
089: } else {
090: throw new ConversionException("No value specified");
091: }
092: }
093:
094: // Deal with the no-conversion-needed case
095: if (MODEL.getClass() == value.getClass()) {
096: return (value);
097: }
098:
099: // Deal with input value as a String array
100: if (strings.getClass() == value.getClass()) {
101: try {
102: String[] values = (String[]) value;
103: int[] results = new int[values.length];
104: for (int i = 0; i < values.length; i++) {
105: results[i] = Integer.parseInt(values[i]);
106: }
107: return (results);
108: } catch (Exception e) {
109: if (useDefault) {
110: return (defaultValue);
111: } else {
112: throw new ConversionException(value.toString(), e);
113: }
114: }
115: }
116:
117: // Parse the input value as a String into elements
118: // and convert to the appropriate type
119: try {
120: List list = parseElements(value.toString());
121: int[] results = new int[list.size()];
122: for (int i = 0; i < results.length; i++) {
123: results[i] = Integer.parseInt((String) list.get(i));
124: }
125: return (results);
126: } catch (Exception e) {
127: if (useDefault) {
128: return (defaultValue);
129: } else {
130: throw new ConversionException(value.toString(), e);
131: }
132: }
133:
134: }
135:
136: }
|