View Javadoc

1   /*
2    * Copyright 2001-2004 The Apache Software Foundation.
3    * 
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    * 
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    * 
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */ 
16  
17  
18  package org.apache.commons.beanutils.converters;
19  
20  
21  import org.apache.commons.beanutils.ConversionException;
22  import org.apache.commons.beanutils.Converter;
23  
24  
25  /**
26   * <p>Standard {@link Converter} implementation that converts an incoming
27   * String into a <code>java.lang.Long</code> object, optionally using a
28   * default value or throwing a {@link ConversionException} if a conversion
29   * error occurs.</p>
30   *
31   * @author Craig R. McClanahan
32   * @version $Revision: 1.8 $ $Date: 2004/02/28 13:18:34 $
33   * @since 1.3
34   */
35  
36  public final class LongConverter implements Converter {
37  
38  
39      // ----------------------------------------------------------- Constructors
40  
41  
42      /**
43       * Create a {@link Converter} that will throw a {@link ConversionException}
44       * if a conversion error occurs.
45       */
46      public LongConverter() {
47  
48          this.defaultValue = null;
49          this.useDefault = false;
50  
51      }
52  
53  
54      /**
55       * Create a {@link Converter} that will return the specified default value
56       * if a conversion error occurs.
57       *
58       * @param defaultValue The default value to be returned
59       */
60      public LongConverter(Object defaultValue) {
61  
62          this.defaultValue = defaultValue;
63          this.useDefault = true;
64  
65      }
66  
67  
68      // ----------------------------------------------------- Instance Variables
69  
70  
71      /**
72       * The default value specified to our Constructor, if any.
73       */
74      private Object defaultValue = null;
75  
76  
77      /**
78       * Should we return the default value on conversion errors?
79       */
80      private boolean useDefault = true;
81  
82  
83      // --------------------------------------------------------- Public Methods
84  
85  
86      /**
87       * Convert the specified input object into an output object of the
88       * specified type.
89       *
90       * @param type Data type to which this value should be converted
91       * @param value The input value to be converted
92       *
93       * @exception ConversionException if conversion cannot be performed
94       *  successfully
95       */
96      public Object convert(Class type, Object value) {
97  
98          if (value == null) {
99              if (useDefault) {
100                 return (defaultValue);
101             } else {
102                 throw new ConversionException("No value specified");
103             }
104         }
105 
106         if (value instanceof Long) {
107             return (value);
108         } else if(value instanceof Number) {
109             return new Long(((Number)value).longValue());
110         }
111 
112         try {
113             return (new Long(value.toString()));
114         } catch (Exception e) {
115             if (useDefault) {
116                 return (defaultValue);
117             } else {
118                 throw new ConversionException(e);
119             }
120         }
121 
122     }
123 
124 
125 }