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) { | ... | ... |