Commit 2f3cf8fa008dcff3437390ee9ad2dda97ac71a1a
1 parent
86a2e752
Exists in
master
Ajuste para carregamento de variáveis do tipo primitivo, wrapped e array
Showing
1 changed file
with
29 additions
and
84 deletions
Show diff stats
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,13 +41,12 @@ import static br.gov.frameworkdemoiselle.configuration.ConfigType.SYSTEM; | ||
| 41 | 41 | ||
| 42 | import java.io.Serializable; | 42 | import java.io.Serializable; |
| 43 | import java.lang.reflect.Field; | 43 | import java.lang.reflect.Field; |
| 44 | -import java.lang.reflect.InvocationTargetException; | ||
| 45 | -import java.lang.reflect.Method; | ||
| 46 | import java.util.List; | 44 | import java.util.List; |
| 47 | 45 | ||
| 48 | import javax.validation.constraints.NotNull; | 46 | import javax.validation.constraints.NotNull; |
| 49 | 47 | ||
| 50 | import org.apache.commons.configuration.AbstractConfiguration; | 48 | import org.apache.commons.configuration.AbstractConfiguration; |
| 49 | +import org.apache.commons.configuration.ConversionException; | ||
| 51 | import org.apache.commons.configuration.DataConfiguration; | 50 | import org.apache.commons.configuration.DataConfiguration; |
| 52 | import org.apache.commons.configuration.FileConfiguration; | 51 | import org.apache.commons.configuration.FileConfiguration; |
| 53 | import org.apache.commons.configuration.PropertiesConfiguration; | 52 | import org.apache.commons.configuration.PropertiesConfiguration; |
| @@ -60,7 +59,6 @@ import br.gov.frameworkdemoiselle.configuration.ConfigType; | @@ -60,7 +59,6 @@ import br.gov.frameworkdemoiselle.configuration.ConfigType; | ||
| 60 | import br.gov.frameworkdemoiselle.configuration.Configuration; | 59 | import br.gov.frameworkdemoiselle.configuration.Configuration; |
| 61 | import br.gov.frameworkdemoiselle.configuration.ConfigurationException; | 60 | import br.gov.frameworkdemoiselle.configuration.ConfigurationException; |
| 62 | import br.gov.frameworkdemoiselle.util.Reflections; | 61 | import br.gov.frameworkdemoiselle.util.Reflections; |
| 63 | -import br.gov.frameworkdemoiselle.util.Strings; | ||
| 64 | 62 | ||
| 65 | /** | 63 | /** |
| 66 | * This component loads a config class annotated with {@link Configuration} by filling its attributes with {@link Param} | 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,6 +100,12 @@ public class ConfigurationLoader implements Serializable { | ||
| 102 | } | 100 | } |
| 103 | 101 | ||
| 104 | private void validateFields() { | 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 | private void loadType() { | 111 | private void loadType() { |
| @@ -138,7 +142,7 @@ public class ConfigurationLoader implements Serializable { | @@ -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 | private void loadResource() { | 148 | private void loadResource() { |
| @@ -175,95 +179,36 @@ public class ConfigurationLoader implements Serializable { | @@ -175,95 +179,36 @@ public class ConfigurationLoader implements Serializable { | ||
| 175 | 179 | ||
| 176 | String key = getKey(field); | 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 | private void loadArrayField(Field field, String key) { | 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 | private void loadBasicField(Field field, String key) { | 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 | private String getKey(Field field) { | 214 | private String getKey(Field field) { |