From 5b13ae54e703ead7cbabd40a1eadfbecb6823ae4 Mon Sep 17 00:00:00 2001 From: Emerson Oliveira Date: Wed, 10 Apr 2013 09:53:43 -0300 Subject: [PATCH] Implementado o seguinte comportamento: quando não for encontrada uma classe extratora para um determinado campo, será lançada uma ConfigurationException, com uma mensagem apropriada e ClassNotFoundException como causa. Os testes da classe ConfigurationCUstomFieldTest foram ajustados para esperar esse comportamento --- impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ConfigurationLoader.java | 12 ++++++------ impl/core/src/main/resources/demoiselle-core-bundle.properties | 1 + impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/ConfigurationCustomFieldTest.java | 2 ++ impl/core/src/test/resources/configuration/field/custom/demoiselle.properties | 2 ++ 4 files changed, 11 insertions(+), 6 deletions(-) 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 956336c..308267d 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 @@ -126,7 +126,8 @@ public class ConfigurationLoader implements Serializable { Name annotation = field.getAnnotation(Name.class); if (annotation != null && Strings.isEmpty(annotation.value())) { - throw new ConfigurationException(getBundle().getString("configuration-name-attribute-cant-be-empty")); + throw new ConfigurationException(getBundle().getString("configuration-name-attribute-cant-be-empty"), + new IllegalArgumentException()); } } @@ -179,7 +180,7 @@ public class ConfigurationLoader implements Serializable { default: throw new ConfigurationException(getBundle().getString("configuration-type-not-implemented-yet", - type.name())); + type.name()), new IllegalArgumentException()); } config.setDelimiterParsingDisabled(true); @@ -241,13 +242,12 @@ public class ConfigurationLoader implements Serializable { } } - ConfigurationValueExtractor elected = StrategySelector.getInstance(ConfigurationValueExtractor.class, + ConfigurationValueExtractor elected = StrategySelector.selectInstance(ConfigurationValueExtractor.class, candidates); if (elected == null) { - // TODO lançar exceção informando que nenhum extrator foi encontrado para o field e ensinar como implementar - // um extrator personalizado. - throw new ConfigurationException(""); + throw new ConfigurationException(getBundle().getString("configuration-extractor-not-found", + field.toGenericString(), ConfigurationValueExtractor.class.getName()), new ClassNotFoundException()); } return elected; diff --git a/impl/core/src/main/resources/demoiselle-core-bundle.properties b/impl/core/src/main/resources/demoiselle-core-bundle.properties index ab87ce3..cfef2af 100644 --- a/impl/core/src/main/resources/demoiselle-core-bundle.properties +++ b/impl/core/src/main/resources/demoiselle-core-bundle.properties @@ -59,6 +59,7 @@ configuration-field-loaded=Configura\u00E7\u00E3o {0} atribu\u00EDda a {1} com o 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 +configuration-extractor-not-found=N\u00E3o foi poss\u00EDvel encontrar a classe extratora para o atributo {0}. Implemente a interface {1} para criar sua classe extratora. 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} diff --git a/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/ConfigurationCustomFieldTest.java b/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/ConfigurationCustomFieldTest.java index e5d206d..6fdb87c 100644 --- a/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/ConfigurationCustomFieldTest.java +++ b/impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/ConfigurationCustomFieldTest.java @@ -36,6 +36,7 @@ */ package br.gov.frameworkdemoiselle.configuration.field.custom; +import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNotNull; import static junit.framework.Assert.fail; @@ -84,6 +85,7 @@ public class ConfigurationCustomFieldTest extends AbstractConfigurationTest { unmappedField.getUnmappedClass(); fail(); } catch (ConfigurationException cause) { + assertEquals(ClassNotFoundException.class, cause.getCause().getClass()); } } } diff --git a/impl/core/src/test/resources/configuration/field/custom/demoiselle.properties b/impl/core/src/test/resources/configuration/field/custom/demoiselle.properties index 3f1fa2e..6b9e7a1 100644 --- a/impl/core/src/test/resources/configuration/field/custom/demoiselle.properties +++ b/impl/core/src/test/resources/configuration/field/custom/demoiselle.properties @@ -32,3 +32,5 @@ # "LICENCA.txt", junto com esse programa. Se não, acesse # ou escreva para a Fundação do Software Livre (FSF) Inc., # 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. +mappedClass=Mapped Class +unmappedClass=UnmappedClass -- libgit2 0.21.2