Commit 2f3cf8fa008dcff3437390ee9ad2dda97ac71a1a

Authored by Emerson Oliveira
1 parent 86a2e752
Exists in master

Ajuste para carregamento de variáveis do tipo primitivo, wrapped e array

impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/configuration/ConfigurationLoader.java
... ... @@ -41,13 +41,12 @@ import static br.gov.frameworkdemoiselle.configuration.ConfigType.SYSTEM;
41 41  
42 42 import java.io.Serializable;
43 43 import java.lang.reflect.Field;
44   -import java.lang.reflect.InvocationTargetException;
45   -import java.lang.reflect.Method;
46 44 import java.util.List;
47 45  
48 46 import javax.validation.constraints.NotNull;
49 47  
50 48 import org.apache.commons.configuration.AbstractConfiguration;
  49 +import org.apache.commons.configuration.ConversionException;
51 50 import org.apache.commons.configuration.DataConfiguration;
52 51 import org.apache.commons.configuration.FileConfiguration;
53 52 import org.apache.commons.configuration.PropertiesConfiguration;
... ... @@ -60,7 +59,6 @@ import br.gov.frameworkdemoiselle.configuration.ConfigType;
60 59 import br.gov.frameworkdemoiselle.configuration.Configuration;
61 60 import br.gov.frameworkdemoiselle.configuration.ConfigurationException;
62 61 import br.gov.frameworkdemoiselle.util.Reflections;
63   -import br.gov.frameworkdemoiselle.util.Strings;
64 62  
65 63 /**
66 64 * This component loads a config class annotated with {@link Configuration} by filling its attributes with {@link Param}
... ... @@ -102,6 +100,12 @@ public class ConfigurationLoader implements Serializable {
102 100 }
103 101  
104 102 private void validateFields() {
  103 + for (Field field : getFields()) {
  104 + validateField(field);
  105 + }
  106 + }
  107 +
  108 + private void validateField(Field field) {
105 109 }
106 110  
107 111 private void loadType() {
... ... @@ -138,7 +142,7 @@ public class ConfigurationLoader implements Serializable {
138 142 }
139 143 }
140 144  
141   - this.configuration = new DataConfiguration(conf);
  145 + this.configuration = (conf == null ? null : new DataConfiguration(conf));
142 146 }
143 147  
144 148 private void loadResource() {
... ... @@ -175,95 +179,36 @@ public class ConfigurationLoader implements Serializable {
175 179  
176 180 String key = getKey(field);
177 181  
178   - // if (field.getType() == String.class) {
179   - // loadStringField(field, key);
180   - // } else {
181   - // loadBasicField(field, key);
182   - // }
183   -
184   - // if (field.getType().isArray()) {
185   - // loadArrayField(field, key);
186   - // } else {
187   - loadBasicField(field, key);
188   - // }
  182 + if (field.getType().isArray()) {
  183 + loadArrayField(field, key);
  184 + } else if (field.getType() == String.class) {
  185 + loadStringField(field, key);
  186 + } else {
  187 + loadBasicField(field, key);
  188 + }
189 189 }
190 190  
191   - // private void loadStringField(Field field, String key) {
192   - // try {
193   - // String value = (String) Reflections.getFieldValue(field, this.object);
194   - //
195   - // for (String string : this.configuration.getStringArray(key)) {
196   - // if (value == null) {
197   - // value = "";
198   - // this.configuration.get(String.class, key);
199   - // } else {
200   - // value += ",";
201   - // }
202   - //
203   - // value += string;
204   - // }
205   - // // this.configuration.setDelimiterParsingDisabled(true);
206   - //
207   - // Reflections.setFieldValue(field, this.object, value);
208   - //
209   - // } catch (SecurityException cause) {
210   - // cause.printStackTrace();
211   - // } catch (IllegalArgumentException cause) {
212   - // cause.printStackTrace();
213   - // }
214   - // }
215   -
216 191 private void loadArrayField(Field field, String key) {
217   - try {
218   - @SuppressWarnings("unused")
219   - Object array = this.configuration.getArray(Integer.class, key);
220   -
221   - String methodName = "get" + Strings.firstToUpper(field.getType().getSimpleName());
222   -
223   - if (field.getType().isArray()) {
224   - methodName = Strings.removeChars(methodName, '[', ']') + "Array";
225   - }
  192 + Object value = this.configuration.getArray(field.getType().getComponentType(), key,
  193 + Reflections.getFieldValue(field, this.object));
  194 + Reflections.setFieldValue(field, this.object, value);
  195 + }
226 196  
227   - Method method = this.configuration.getClass().getMethod(methodName, String.class, field.getType());
228   - Object value = method.invoke(this.configuration, key, Reflections.getFieldValue(field, this.object));
229   - Reflections.setFieldValue(field, this.object, value);
230   -
231   - } catch (SecurityException cause) {
232   - cause.printStackTrace();
233   - } catch (NoSuchMethodException cause) {
234   - cause.printStackTrace();
235   - } catch (IllegalArgumentException cause) {
236   - cause.printStackTrace();
237   - } catch (IllegalAccessException cause) {
238   - cause.printStackTrace();
239   - } catch (InvocationTargetException cause) {
240   - cause.printStackTrace();
241   - }
  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);
242 200 }
243 201  
244 202 private void loadBasicField(Field field, String key) {
245   - try {
246   - String methodName = "get" + Strings.firstToUpper(field.getType().getSimpleName());
  203 + Object value;
247 204  
248   - if (field.getType().isArray()) {
249   - methodName = Strings.removeChars(methodName, '[', ']') + "Array";
250   - }
251   -
252   - Method method = this.configuration.getClass().getMethod(methodName, String.class, field.getType());
253   - Object value = method.invoke(this.configuration, key, Reflections.getFieldValue(field, this.object));
254   - Reflections.setFieldValue(field, this.object, value);
255   -
256   - } catch (SecurityException cause) {
257   - cause.printStackTrace();
258   - } catch (NoSuchMethodException cause) {
259   - cause.printStackTrace();
260   - } catch (IllegalArgumentException cause) {
261   - cause.printStackTrace();
262   - } catch (IllegalAccessException cause) {
263   - cause.printStackTrace();
264   - } catch (InvocationTargetException cause) {
265   - cause.printStackTrace();
  205 + try {
  206 + value = this.configuration.get(field.getType(), key, Reflections.getFieldValue(field, this.object));
  207 + } catch (ConversionException cause) {
  208 + value = null;
266 209 }
  210 +
  211 + Reflections.setFieldValue(field, this.object, value);
267 212 }
268 213  
269 214 private String getKey(Field field) {
... ...