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
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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
43
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
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