Commit 5b13ae54e703ead7cbabd40a1eadfbecb6823ae4

Authored by Emerson Oliveira
1 parent 35c73525
Exists in master

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
... ... @@ -126,7 +126,8 @@ public class ConfigurationLoader implements Serializable {
126 126 Name annotation = field.getAnnotation(Name.class);
127 127  
128 128 if (annotation != null && Strings.isEmpty(annotation.value())) {
129   - throw new ConfigurationException(getBundle().getString("configuration-name-attribute-cant-be-empty"));
  129 + throw new ConfigurationException(getBundle().getString("configuration-name-attribute-cant-be-empty"),
  130 + new IllegalArgumentException());
130 131 }
131 132 }
132 133  
... ... @@ -179,7 +180,7 @@ public class ConfigurationLoader implements Serializable {
179 180  
180 181 default:
181 182 throw new ConfigurationException(getBundle().getString("configuration-type-not-implemented-yet",
182   - type.name()));
  183 + type.name()), new IllegalArgumentException());
183 184 }
184 185  
185 186 config.setDelimiterParsingDisabled(true);
... ... @@ -241,13 +242,12 @@ public class ConfigurationLoader implements Serializable {
241 242 }
242 243 }
243 244  
244   - ConfigurationValueExtractor elected = StrategySelector.getInstance(ConfigurationValueExtractor.class,
  245 + ConfigurationValueExtractor elected = StrategySelector.selectInstance(ConfigurationValueExtractor.class,
245 246 candidates);
246 247  
247 248 if (elected == null) {
248   - // TODO lançar exceção informando que nenhum extrator foi encontrado para o field e ensinar como implementar
249   - // um extrator personalizado.
250   - throw new ConfigurationException("");
  249 + throw new ConfigurationException(getBundle().getString("configuration-extractor-not-found",
  250 + field.toGenericString(), ConfigurationValueExtractor.class.getName()), new ClassNotFoundException());
251 251 }
252 252  
253 253 return elected;
... ...
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
59 59 configuration-attribute-is-mandatory=A configura\u00E7\u00E3o {0} \u00E9 obrigat\u00F3ria, mas n\u00E3o foi encontrada em {1}
60 60 configuration-name-attribute-cant-be-empty=A nota\u00E7\u00E3o Name n\u00E3o pode estar em branco
61 61 configuration-key-not-found=Chave de configura\u00E7\u00E3o {0} n\u00E3o encontrada
  62 +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.
62 63  
63 64 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
64 65 executing-all=Executando todos os \: {0}
... ...
impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/custom/ConfigurationCustomFieldTest.java
... ... @@ -36,6 +36,7 @@
36 36 */
37 37 package br.gov.frameworkdemoiselle.configuration.field.custom;
38 38  
  39 +import static junit.framework.Assert.assertEquals;
39 40 import static junit.framework.Assert.assertNotNull;
40 41 import static junit.framework.Assert.fail;
41 42  
... ... @@ -84,6 +85,7 @@ public class ConfigurationCustomFieldTest extends AbstractConfigurationTest {
84 85 unmappedField.getUnmappedClass();
85 86 fail();
86 87 } catch (ConfigurationException cause) {
  88 + assertEquals(ClassNotFoundException.class, cause.getCause().getClass());
87 89 }
88 90 }
89 91 }
... ...
impl/core/src/test/resources/configuration/field/custom/demoiselle.properties
... ... @@ -32,3 +32,5 @@
32 32 # "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/>
33 33 # ou escreva para a Fundação do Software Livre (FSF) Inc.,
34 34 # 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
  35 +mappedClass=Mapped Class
  36 +unmappedClass=UnmappedClass
... ...