Commit 392ab62c3d72b6f144e6d12b4491782a2f9c9331
1 parent
62dde646
Exists in
master
Ajustes para carregamento de arrays a partir de arquivo do
tipo properties
Showing
1 changed file
with
15 additions
and
15 deletions
Show diff stats
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/configuration/ConfigurationLoader.java
... | ... | @@ -52,6 +52,7 @@ import org.apache.commons.configuration.FileConfiguration; |
52 | 52 | import org.apache.commons.configuration.PropertiesConfiguration; |
53 | 53 | import org.apache.commons.configuration.SystemConfiguration; |
54 | 54 | import org.apache.commons.configuration.XMLConfiguration; |
55 | +import org.apache.commons.lang.ClassUtils; | |
55 | 56 | |
56 | 57 | import br.gov.frameworkdemoiselle.annotation.Ignore; |
57 | 58 | import br.gov.frameworkdemoiselle.annotation.Name; |
... | ... | @@ -178,37 +179,36 @@ public class ConfigurationLoader implements Serializable { |
178 | 179 | } |
179 | 180 | |
180 | 181 | String key = getKey(field); |
182 | + Object value; | |
181 | 183 | |
182 | 184 | if (field.getType().isArray()) { |
183 | - loadArrayField(field, key); | |
184 | - } else if (field.getType() == String.class) { | |
185 | - loadStringField(field, key); | |
185 | + value = getArrayValue(field, key); | |
186 | 186 | } else { |
187 | - loadBasicField(field, key); | |
187 | + value = getPrimitiveOrWrappedValue(field, key); | |
188 | 188 | } |
189 | - } | |
190 | 189 | |
191 | - private void loadArrayField(Field field, String key) { | |
192 | - Object value = this.configuration.getArray(field.getType().getComponentType(), key, | |
193 | - Reflections.getFieldValue(field, this.object)); | |
194 | 190 | Reflections.setFieldValue(field, this.object, value); |
195 | 191 | } |
196 | 192 | |
197 | - private void loadStringField(Field field, String key) { | |
198 | - Object value = this.configuration.getString(key, (String) Reflections.getFieldValue(field, this.object)); | |
199 | - Reflections.setFieldValue(field, this.object, value); | |
193 | + private Object getArrayValue(Field field, String key) { | |
194 | + return this.configuration.getArray(field.getType().getComponentType(), key, | |
195 | + Reflections.getFieldValue(field, this.object)); | |
200 | 196 | } |
201 | 197 | |
202 | - private void loadBasicField(Field field, String key) { | |
198 | + @SuppressWarnings("unchecked") | |
199 | + private Object getPrimitiveOrWrappedValue(Field field, String key) { | |
203 | 200 | Object value; |
201 | + Object defaultValue = Reflections.getFieldValue(field, this.object); | |
204 | 202 | |
205 | 203 | try { |
206 | - value = this.configuration.get(field.getType(), key, Reflections.getFieldValue(field, this.object)); | |
204 | + Class<Object> type = ClassUtils.primitiveToWrapper(field.getType()); | |
205 | + value = this.configuration.get(type, key, defaultValue); | |
206 | + | |
207 | 207 | } catch (ConversionException cause) { |
208 | - value = null; | |
208 | + value = defaultValue; | |
209 | 209 | } |
210 | 210 | |
211 | - Reflections.setFieldValue(field, this.object, value); | |
211 | + return value; | |
212 | 212 | } |
213 | 213 | |
214 | 214 | private String getKey(Field field) { | ... | ... |