From 86fe2d78dcfc3f296e1c91beb7daf8861f67aa14 Mon Sep 17 00:00:00 2001 From: Cleverson Sacramento Date: Fri, 5 Apr 2013 16:36:31 -0300 Subject: [PATCH] Incluindo os logs antigos no novo ConfigurationLoader --- impl/core/src/main/java/br/gov/frameworkdemoiselle/configuration/ConfigurationValueExtractor.java | 2 +- impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationArrayValueExtractor.java | 5 ++--- impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationClassValueExtractor.java | 6 +++--- impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationLoader.java | 36 +++++++++++++++++++++++++++--------- impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationMapValueExtractor.java | 5 ++--- impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationPrimitiveOrWrapperValueExtractor.java | 6 +++--- impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationStringValueExtractor.java | 4 ++-- impl/core/src/main/resources/demoiselle-core-bundle.properties | 5 +---- impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/MyValueExtractor.java | 2 +- 9 files changed, 42 insertions(+), 29 deletions(-) diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/configuration/ConfigurationValueExtractor.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/configuration/ConfigurationValueExtractor.java index a9074eb..9f4f1a6 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/configuration/ConfigurationValueExtractor.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/configuration/ConfigurationValueExtractor.java @@ -42,7 +42,7 @@ import org.apache.commons.configuration.Configuration; public interface ConfigurationValueExtractor { - Object getValue(String prefix, String key, Field field, Configuration configuration, Object defaultValue); + Object getValue(String prefix, String key, Field field, Configuration configuration); boolean isSupported(Field field); } diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationArrayValueExtractor.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationArrayValueExtractor.java index 9756f1b..2480374 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationArrayValueExtractor.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationArrayValueExtractor.java @@ -50,9 +50,8 @@ import br.gov.frameworkdemoiselle.configuration.ConfigurationValueExtractor; public class ConfigurationArrayValueExtractor implements ConfigurationValueExtractor { @Override - public Object getValue(String prefix, String key, Field field, Configuration configuration, Object defaultValue) { - return new DataConfiguration(configuration).getArray(field.getType().getComponentType(), prefix + key, - defaultValue); + public Object getValue(String prefix, String key, Field field, Configuration configuration) { + return new DataConfiguration(configuration).getArray(field.getType().getComponentType(), prefix + key); } @Override diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationClassValueExtractor.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationClassValueExtractor.java index a5cca3b..8021376 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationClassValueExtractor.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationClassValueExtractor.java @@ -51,8 +51,8 @@ import br.gov.frameworkdemoiselle.util.Reflections; public class ConfigurationClassValueExtractor implements ConfigurationValueExtractor { @Override - public Object getValue(String prefix, String key, Field field, Configuration configuration, Object defaultValue) { - Object value = defaultValue; + public Object getValue(String prefix, String key, Field field, Configuration configuration) { + Object value = null; String canonicalName = configuration.getString(prefix + key); if (canonicalName != null) { @@ -60,7 +60,7 @@ public class ConfigurationClassValueExtractor implements ConfigurationValueExtra value = Reflections.forName(canonicalName); } catch (ClassNotFoundException cause) { // TODO Lançar a mensagem correta - throw new ConfigurationException(null, cause); + throw new ConfigurationException("", cause); } } diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationLoader.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationLoader.java index 21ca878..956336c 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationLoader.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationLoader.java @@ -64,6 +64,7 @@ import br.gov.frameworkdemoiselle.util.Beans; import br.gov.frameworkdemoiselle.util.NameQualifier; import br.gov.frameworkdemoiselle.util.Reflections; import br.gov.frameworkdemoiselle.util.ResourceBundle; +import br.gov.frameworkdemoiselle.util.Strings; /** * This component loads a config class annotated with {@link Configuration} by filling its attributes with {@link Param} @@ -122,6 +123,11 @@ public class ConfigurationLoader implements Serializable { } private void validateField(Field field) { + Name annotation = field.getAnnotation(Name.class); + + if (annotation != null && Strings.isEmpty(annotation.value())) { + throw new ConfigurationException(getBundle().getString("configuration-name-attribute-cant-be-empty")); + } } private void loadType() { @@ -147,7 +153,7 @@ public class ConfigurationLoader implements Serializable { ((FileConfiguration) config).load(); } catch (org.apache.commons.configuration.ConfigurationException cause) { - // TODO Logar como warning. + getLogger().warn(getBundle().getString("file-not-found", this.resource)); config = null; } } @@ -159,17 +165,21 @@ public class ConfigurationLoader implements Serializable { AbstractConfiguration config; switch (this.type) { - case SYSTEM: - config = new SystemConfiguration(); + case PROPERTIES: + config = new PropertiesConfiguration(); break; case XML: config = new XMLConfiguration(); break; - default: - config = new PropertiesConfiguration(); + case SYSTEM: + config = new SystemConfiguration(); break; + + default: + throw new ConfigurationException(getBundle().getString("configuration-type-not-implemented-yet", + type.name())); } config.setDelimiterParsingDisabled(true); @@ -201,14 +211,22 @@ public class ConfigurationLoader implements Serializable { } Object defaultValue = Reflections.getFieldValue(field, this.object); - Object finalValue = getValue(field, field.getType(), getKey(field), defaultValue); + Object loadedValue = getValue(field, field.getType(), getKey(field), defaultValue); + Object finalValue = (loadedValue == null ? defaultValue : loadedValue); + + if (loadedValue == null) { + getLogger().debug(getBundle().getString("configuration-key-not-found", this.prefix + getKey(field))); + } Reflections.setFieldValue(field, this.object, finalValue); + getLogger().debug( + getBundle().getString("configuration-field-loaded", this.prefix + getKey(field), field.getName(), + finalValue == null ? "null" : finalValue)); } private Object getValue(Field field, Class type, String key, Object defaultValue) { ConfigurationValueExtractor extractor = getValueExtractor(field); - return extractor.getValue(this.prefix, key, field, this.configuration, defaultValue); + return extractor.getValue(this.prefix, key, field, this.configuration); } private ConfigurationValueExtractor getValueExtractor(Field field) { @@ -259,8 +277,8 @@ public class ConfigurationLoader implements Serializable { private void validateValue(Field field, Object value) { if (field.isAnnotationPresent(NotNull.class) && value == null) { - throw new ConfigurationException("", new NullPointerException()); - // TODO: Pegar mensagem do Bundle e verificar como as mensagens de log estão implementadas + throw new ConfigurationException(getBundle().getString("configuration-attribute-is-mandatory", + this.prefix + getKey(field), this.resource), new NullPointerException()); } } diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationMapValueExtractor.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationMapValueExtractor.java index e27dd98..c6b2f6e 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationMapValueExtractor.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationMapValueExtractor.java @@ -54,9 +54,8 @@ import br.gov.frameworkdemoiselle.configuration.ConfigurationValueExtractor; public class ConfigurationMapValueExtractor implements ConfigurationValueExtractor { @Override - public Object getValue(String prefix, String key, Field field, Configuration configuration, Object defaultValue) { - @SuppressWarnings("unchecked") - Map value = (Map) defaultValue; + public Object getValue(String prefix, String key, Field field, Configuration configuration) { + Map value = null; String regexp = "^(" + prefix + ")((.+)\\.)?(" + key + ")$"; Pattern pattern = Pattern.compile(regexp); diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationPrimitiveOrWrapperValueExtractor.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationPrimitiveOrWrapperValueExtractor.java index b2a6009..3da224e 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationPrimitiveOrWrapperValueExtractor.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationPrimitiveOrWrapperValueExtractor.java @@ -69,14 +69,14 @@ public class ConfigurationPrimitiveOrWrapperValueExtractor implements Configurat @Override @SuppressWarnings("unchecked") - public Object getValue(String prefix, String key, Field field, Configuration configuration, Object defaultValue) { + public Object getValue(String prefix, String key, Field field, Configuration configuration) { Object value; try { - value = new DataConfiguration(configuration).get(ClassUtils.primitiveToWrapper(field.getType()), prefix + key, defaultValue); + value = new DataConfiguration(configuration).get(ClassUtils.primitiveToWrapper(field.getType()), prefix + key); } catch (ConversionException cause) { - value = defaultValue; + value = null; } return value; diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationStringValueExtractor.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationStringValueExtractor.java index b64665e..9eb146d 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationStringValueExtractor.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationStringValueExtractor.java @@ -49,8 +49,8 @@ import br.gov.frameworkdemoiselle.configuration.ConfigurationValueExtractor; public class ConfigurationStringValueExtractor implements ConfigurationValueExtractor { @Override - public Object getValue(String prefix, String key, Field field, Configuration configuration, Object defaultValue) { - return configuration.getString(prefix + key, (String) defaultValue); + public Object getValue(String prefix, String key, Field field, Configuration configuration) { + return configuration.getString(prefix + key); } @Override diff --git a/impl/core/src/main/resources/demoiselle-core-bundle.properties b/impl/core/src/main/resources/demoiselle-core-bundle.properties index c28f7ff..ab87ce3 100644 --- a/impl/core/src/main/resources/demoiselle-core-bundle.properties +++ b/impl/core/src/main/resources/demoiselle-core-bundle.properties @@ -40,7 +40,6 @@ ambiguous-strategy-resolution=Foi detectada ambiguidade da interface {0} com as bean-not-found=Voc\u00EA est\u00E1 tentando obter um objeto n\u00E3o reconhecido pelo CDI via Beans.getReference({0}) more-than-one-exceptionhandler-defined-for-same-class=Foi definido mais de um m\u00E9todo na classe {0} para tratar a exce\u00E7\u00E3o {1} handling-exception=Tratando a exce\u00E7\u00E3o {0} -ambiguous-key=Existe mais de uma chave declarada no arquivo de configura\u00E7\u00E3o para o campo {0} da classe {1}. Indique qual a chave correta utilizando a anota\u00E7\u00E3o Name taking-off=O Demoiselle ${project.version} decolou engine-off=Desligando os motores do Demoiselle ${project.version} setting-up-bean-manager=BeanManager dispon\u00EDvel atrav\u00E9s do utilit\u00E1rio {0} @@ -59,16 +58,14 @@ loading-configuration-class=Carregando a classe de configura\u00E7\u00E3o {0} configuration-field-loaded=Configura\u00E7\u00E3o {0} atribu\u00EDda a {1} com o valor {2} configuration-attribute-is-mandatory=A configura\u00E7\u00E3o {0} \u00E9 obrigat\u00F3ria, mas n\u00E3o foi encontrada em {1} configuration-name-attribute-cant-be-empty=A nota\u00E7\u00E3o Name n\u00E3o pode estar em branco -configuration-key-not-found=Chave de configura\u00E7\u00E3o {0} n\u00E3o encontrada. Conven\u00E7\u00F5es verificadas\: {1} +configuration-key-not-found=Chave de configura\u00E7\u00E3o {0} n\u00E3o encontrada transaction-not-defined=Nenhuma transa\u00E7\u00E3o foi definida. Para utilizar @{0} \u00E9 preciso definir a propriedade frameworkdemoiselle.transaction.class com a estrat\u00E9gia de transa\u00E7\u00E3o desejada no arquivo demoiselle.properties executing-all=Executando todos os \: {0} custom-context-was-registered=O contexto {0} foi registrado custom-context-was-unregistered=O contexto {0} foi removido -error-creating-configuration-from-resource=Error creating configuration from resource named "{0}" configuration-type-not-implemented-yet=Configuration type "{0}" is not implemented yet -error-converting-to-type=Error converting to type "{0}" error-creating-new-instance-for=Error creating a new instance for "{0}" executed-successfully={0} execultado com sucesso must-declare-one-single-parameter=Voc\u00EA deve declarar um par\u00E2metro \u00FAnico em {0} diff --git a/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/MyValueExtractor.java b/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/MyValueExtractor.java index 95fe92e..eec8d13 100644 --- a/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/MyValueExtractor.java +++ b/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/MyValueExtractor.java @@ -9,7 +9,7 @@ import br.gov.frameworkdemoiselle.configuration.ConfigurationValueExtractor; public class MyValueExtractor implements ConfigurationValueExtractor { @Override - public Object getValue(String prefix, String key, Field field, Configuration configuration, Object defaultValue) { + public Object getValue(String prefix, String key, Field field, Configuration configuration) { return new MappedClass(); } -- libgit2 0.21.2