FoundationAtomicConvertersBundle.java

biz/hammurapi/convert/FoundationAtomicConvertersBundle.java

Violations

Inspector Message Severity Location
Java Inspector 048 Copyrights information should be present in each file. 1
Java Inspector 089 Type is not documented 2 45:1
Java Inspector 089 Undocumented method 2 49:9
Java Inspector 089 Undocumented method 2 92:25
Java Inspector 089 Undocumented method 2 111:25
Java Inspector 089 Undocumented method 2 119:25
Java Inspector 089 Undocumented method 2 127:25
Java Inspector 089 Undocumented method 2 136:25
Java Inspector 089 Undocumented method 2 145:25
Java Inspector 089 Undocumented method 2 154:25
Java Inspector 089 Undocumented method 2 162:25
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 57:56
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 58:58
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 59:57
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 60:55
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 61:56
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 62:57
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 64:56
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 65:58
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 66:57
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 67:59
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 68:56
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 69:57
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 98:56
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 98:86
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 98:119
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 98:141
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 100:44
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 100:75
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 100:107
Java Inspector 026 Avoid hardwired string literals. Allowed literals: [] 3 100:129
Java Inspector 051 It is good practice to call in any case super() in a constructor. 3 56:5
Java Inspector 090 Unnecessary else part in if. The main part terminates control flow (return, break, throw, or continue). 3 98:33

Source code

1/*
2 * hgcommons 9
3 * Hammurapi Group Common Library
4 * Copyright (C) 2003 Hammurapi Group
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 *
20 * URL: http://www.hammurapi.biz/hammurapi-biz/ef/xmenu/hammurapi-group/products/products/hgcommons/index.html
21 * e-Mail: support@hammurapi.biz
22 */
23package biz.hammurapi.convert;
24
25import java.io.File;
26import java.io.FileInputStream;
27import java.io.FileReader;
28import java.io.InputStream;
29import java.io.InputStreamReader;
30import java.io.Reader;
31import java.lang.reflect.Constructor;
32import java.math.BigDecimal;
33import java.util.ArrayList;
34import java.util.Collection;
35import java.util.Collections;
36import java.util.List;
37
38import biz.hammurapi.config.Context;
39
40
41/**
42 * @author Pavel Vlasov
43 * @version $Revision: 1.7 $
44 */
45public class FoundationAtomicConvertersBundle implements AtomicConvertersBundle {
46
47 private List converters=new ArrayList();
48
49 public Collection getConverters() {
50 return Collections.unmodifiableCollection(converters);
51 }
52
53 /**
54 * Creates new composite converter populated by default with some generic converters.
55 */
56 public FoundationAtomicConvertersBundle() {
57 addConverter(Number.class, byte.class, "byteValue", null);
58 addConverter(Number.class, double.class, "doubleValue", null);
59 addConverter(Number.class, float.class, "floatValue", null);
60 addConverter(Number.class, int.class, "intValue", null);
61 addConverter(Number.class, long.class, "longValue", null);
62 addConverter(Number.class, short.class, "shortValue", null);
63
64 addConverter(Number.class, Byte.class, "byteValue", null);
65 addConverter(Number.class, Double.class, "doubleValue", null);
66 addConverter(Number.class, Float.class, "floatValue", null);
67 addConverter(Number.class, Integer.class, "intValue", null);
68 addConverter(Number.class, Long.class, "longValue", null);
69 addConverter(Number.class, Short.class, "shortValue", null);
70
71 converters.addAll(ReflectionConverter.discoverConstructorConverters(String.class));
72 converters.addAll(ReflectionConverter.discoverConstructorConverters(Integer.class));
73 converters.addAll(ReflectionConverter.discoverConstructorConverters(Long.class));
74 converters.addAll(ReflectionConverter.discoverConstructorConverters(Double.class));
75 converters.addAll(ReflectionConverter.discoverConstructorConverters(Float.class));
76 converters.addAll(ReflectionConverter.discoverConstructorConverters(Byte.class));
77 converters.addAll(ReflectionConverter.discoverConstructorConverters(Short.class));
78 converters.addAll(ReflectionConverter.discoverConstructorConverters(BigDecimal.class));
79
80 try {
81 addConverter(File.class, Reader.class, null, FileReader.class.getConstructor(new Class[] {File.class}));
82 addConverter(File.class, InputStream.class, null, FileInputStream.class.getConstructor(new Class[] {File.class}));
83 addConverter(InputStream.class, Reader.class, null, InputStreamReader.class.getConstructor(new Class[] {InputStream.class}));
84 } catch (SecurityException e) {
85 throw new ConversionException(e);
86 } catch (NoSuchMethodException e) {
87 throw new ConversionException(e);
88 }
89
90 converters.add(new AtomicConverterBase(String.class, boolean.class) {
91
92 public Object convert(Object source, Converter master, Context context) {
93 if (source==null) {
94 return Boolean.FALSE;
95 }
96
97 String str = ((String) source).trim();
98 if (str.length()==0 || "no".equalsIgnoreCase(str) || "false".equalsIgnoreCase(str) || "0".equals(source) || "".equals(source)) {
99 return Boolean.FALSE;
100 } else if ("yes".equalsIgnoreCase(str) || "true".equalsIgnoreCase(str) || "1".equals(source) || "on".equals(source)) {
101 return Boolean.TRUE;
102 }
103
104 return null;
105 }
106
107 });
108
109 converters.add(new AtomicConverterBase(String.class, byte.class) {
110
111 public Object convert(Object source, Converter master, Context context) {
112 return new Byte((String) source);
113 }
114
115 });
116
117 converters.add(new AtomicConverterBase(String.class, double.class) {
118
119 public Object convert(Object source, Converter master, Context context) {
120 return new Double((String) source);
121 }
122
123 });
124
125 converters.add(new AtomicConverterBase(String.class, float.class) {
126
127 public Object convert(Object source, Converter master, Context context) {
128 return new Float((String) source);
129 }
130
131 });
132
133
134 converters.add(new AtomicConverterBase(String.class, int.class) {
135
136 public Object convert(Object source, Converter master, Context context) {
137 return new Integer((String) source);
138 }
139
140 });
141
142
143 converters.add(new AtomicConverterBase(String.class, long.class) {
144
145 public Object convert(Object source, Converter master, Context context) {
146 return new Long((String) source);
147 }
148
149 });
150
151
152 converters.add(new AtomicConverterBase(String.class, short.class) {
153
154 public Object convert(Object source, Converter master, Context context) {
155 return new Short((String) source);
156 }
157
158 });
159
160 converters.add(new AtomicConverterBase(String.class, Class.class) {
161
162 public Object convert(Object source, Converter master, Context context) {
163 try {
164 return Class.forName((String) source);
165 } catch (ClassNotFoundException e) {
166 throw new ConversionException(e);
167 }
168 }
169
170 });
171
172 }
173
174 private void addConverter(Class source, Class target, String accessor, Constructor constructor) {
175 try {
176 converters.add(new ReflectionConverter(accessor==null ? null : source.getMethod(accessor, null), constructor));
177 } catch (Exception e) {
178 throw new ConversionException(e);
179 }
180 }
181
182}
183