Commit d7ed5885ae146d8fd9bcfec665355f778023ae9a

Authored by Emerson Oliveira
1 parent 0d26fbc0
Exists in master

Implementação dos testes de carregamento de configuração do tipo Class

impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/configuration/ConfigurationLoader.java
@@ -41,6 +41,8 @@ import static br.gov.frameworkdemoiselle.configuration.ConfigType.SYSTEM; @@ -41,6 +41,8 @@ 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.ParameterizedType;
  45 +import java.lang.reflect.Type;
44 import java.util.List; 46 import java.util.List;
45 47
46 import javax.validation.constraints.NotNull; 48 import javax.validation.constraints.NotNull;
@@ -183,6 +185,8 @@ public class ConfigurationLoader implements Serializable { @@ -183,6 +185,8 @@ public class ConfigurationLoader implements Serializable {
183 185
184 if (field.getType().isArray()) { 186 if (field.getType().isArray()) {
185 value = getArrayValue(field, key); 187 value = getArrayValue(field, key);
  188 + } else if (field.getType() == Class.class) {
  189 + value = getClassValue(field, key);
186 } else { 190 } else {
187 value = getPrimitiveOrWrappedValue(field, key); 191 value = getPrimitiveOrWrappedValue(field, key);
188 } 192 }
@@ -195,6 +199,25 @@ public class ConfigurationLoader implements Serializable { @@ -195,6 +199,25 @@ public class ConfigurationLoader implements Serializable {
195 Reflections.getFieldValue(field, this.object)); 199 Reflections.getFieldValue(field, this.object));
196 } 200 }
197 201
  202 + private Object getClassValue(Field field, String key) {
  203 + Object value = null;
  204 +
  205 + String canonicalName = this.configuration.getString(key.toString());
  206 +
  207 + if (canonicalName != null) {
  208 + ClassLoader classLoader = Reflections.getClassLoaderForClass(canonicalName);
  209 +
  210 + try {
  211 + value = Class.forName(canonicalName, true, classLoader);
  212 + } catch (ClassNotFoundException cause) {
  213 + // TODO Lançar a mensagem correta
  214 + throw new ConfigurationException(null, cause);
  215 + }
  216 + }
  217 +
  218 + return value;
  219 + }
  220 +
198 @SuppressWarnings("unchecked") 221 @SuppressWarnings("unchecked")
199 private Object getPrimitiveOrWrappedValue(Field field, String key) { 222 private Object getPrimitiveOrWrappedValue(Field field, String key) {
200 Object value; 223 Object value;
@@ -235,7 +258,7 @@ public class ConfigurationLoader implements Serializable { @@ -235,7 +258,7 @@ public class ConfigurationLoader implements Serializable {
235 258
236 private void validateValue(Field field) { 259 private void validateValue(Field field) {
237 if (field.isAnnotationPresent(NotNull.class) && Reflections.getFieldValue(field, this.object) == null) { 260 if (field.isAnnotationPresent(NotNull.class) && Reflections.getFieldValue(field, this.object) == null) {
238 - throw new ConfigurationException(""); 261 + throw new ConfigurationException("", new NullPointerException());
239 // TODO: Pegar mensagem do Bundle e verificar como as mensagens de log estão implementadas 262 // TODO: Pegar mensagem do Bundle e verificar como as mensagens de log estão implementadas
240 } 263 }
241 } 264 }
impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/clazz/AbstractClassCastFieldConfig.java 0 → 100644
@@ -0,0 +1,46 @@ @@ -0,0 +1,46 @@
  1 +/*
  2 + * Demoiselle Framework
  3 + * Copyright (C) 2010 SERPRO
  4 + * ----------------------------------------------------------------------------
  5 + * This file is part of Demoiselle Framework.
  6 + *
  7 + * Demoiselle Framework is free software; you can redistribute it and/or
  8 + * modify it under the terms of the GNU Lesser General Public License version 3
  9 + * as published by the Free Software Foundation.
  10 + *
  11 + * This program is distributed in the hope that it will be useful,
  12 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14 + * GNU General Public License for more details.
  15 + *
  16 + * You should have received a copy of the GNU Lesser General Public License version 3
  17 + * along with this program; if not, see <http://www.gnu.org/licenses/>
  18 + * or write to the Free Software Foundation, Inc., 51 Franklin Street,
  19 + * Fifth Floor, Boston, MA 02110-1301, USA.
  20 + * ----------------------------------------------------------------------------
  21 + * Este arquivo é parte do Framework Demoiselle.
  22 + *
  23 + * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
  24 + * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
  25 + * do Software Livre (FSF).
  26 + *
  27 + * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
  28 + * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
  29 + * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
  30 + * para maiores detalhes.
  31 + *
  32 + * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
  33 + * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/>
  34 + * ou escreva para a Fundação do Software Livre (FSF) Inc.,
  35 + * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
  36 + */
  37 +package br.gov.frameworkdemoiselle.configuration.field.clazz;
  38 +
  39 +public abstract class AbstractClassCastFieldConfig {
  40 +
  41 + private Class<MyClass> forcingClassCastException;
  42 +
  43 + public Class<MyClass> getForcingClassCastException() {
  44 + return forcingClassCastException;
  45 + }
  46 +}
impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/clazz/AbstractClassFieldConfig.java
@@ -1,73 +0,0 @@ @@ -1,73 +0,0 @@
1 -/*  
2 - * Demoiselle Framework  
3 - * Copyright (C) 2010 SERPRO  
4 - * ----------------------------------------------------------------------------  
5 - * This file is part of Demoiselle Framework.  
6 - *  
7 - * Demoiselle Framework is free software; you can redistribute it and/or  
8 - * modify it under the terms of the GNU Lesser General Public License version 3  
9 - * as published by the Free Software Foundation.  
10 - *  
11 - * This program is distributed in the hope that it will be useful,  
12 - * but WITHOUT ANY WARRANTY; without even the implied warranty of  
13 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the  
14 - * GNU General Public License for more details.  
15 - *  
16 - * You should have received a copy of the GNU Lesser General Public License version 3  
17 - * along with this program; if not, see <http://www.gnu.org/licenses/>  
18 - * or write to the Free Software Foundation, Inc., 51 Franklin Street,  
19 - * Fifth Floor, Boston, MA 02110-1301, USA.  
20 - * ----------------------------------------------------------------------------  
21 - * Este arquivo é parte do Framework Demoiselle.  
22 - *  
23 - * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou  
24 - * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação  
25 - * do Software Livre (FSF).  
26 - *  
27 - * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA  
28 - * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou  
29 - * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português  
30 - * para maiores detalhes.  
31 - *  
32 - * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título  
33 - * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/>  
34 - * ou escreva para a Fundação do Software Livre (FSF) Inc.,  
35 - * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.  
36 - */  
37 -package br.gov.frameworkdemoiselle.configuration.field.clazz;  
38 -  
39 -public abstract class AbstractClassFieldConfig {  
40 -  
41 - private Class<MyClass> existentTypedClass;  
42 -  
43 - private Class<?> existentUntypedClass;  
44 -  
45 - private Class<MyClass> nonExistentTypedClass;  
46 -  
47 - private Class<?> nonExistentUntypedClass;  
48 -  
49 - private Class<MyClass> forcingClassCastException;  
50 -  
51 - public Class<MyClass> getExistentTypedClass() {  
52 - return existentTypedClass;  
53 - }  
54 -  
55 - public Class<?> getExistentUntypedClass() {  
56 - return existentUntypedClass;  
57 - }  
58 -  
59 - public Class<MyClass> getNonExistentTypedClass() {  
60 - return nonExistentTypedClass;  
61 - }  
62 -  
63 - public Class<?> getNonExistentUntypedClass() {  
64 - return nonExistentUntypedClass;  
65 - }  
66 -  
67 - public Class<MyClass> getForcingClassCastException() {  
68 - return forcingClassCastException;  
69 - }  
70 -  
71 - public static class MyClass {  
72 - }  
73 -}  
impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/clazz/AbstractClassNotFoundFieldConfig.java 0 → 100644
@@ -0,0 +1,52 @@ @@ -0,0 +1,52 @@
  1 +/*
  2 + * Demoiselle Framework
  3 + * Copyright (C) 2010 SERPRO
  4 + * ----------------------------------------------------------------------------
  5 + * This file is part of Demoiselle Framework.
  6 + *
  7 + * Demoiselle Framework is free software; you can redistribute it and/or
  8 + * modify it under the terms of the GNU Lesser General Public License version 3
  9 + * as published by the Free Software Foundation.
  10 + *
  11 + * This program is distributed in the hope that it will be useful,
  12 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14 + * GNU General Public License for more details.
  15 + *
  16 + * You should have received a copy of the GNU Lesser General Public License version 3
  17 + * along with this program; if not, see <http://www.gnu.org/licenses/>
  18 + * or write to the Free Software Foundation, Inc., 51 Franklin Street,
  19 + * Fifth Floor, Boston, MA 02110-1301, USA.
  20 + * ----------------------------------------------------------------------------
  21 + * Este arquivo é parte do Framework Demoiselle.
  22 + *
  23 + * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
  24 + * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
  25 + * do Software Livre (FSF).
  26 + *
  27 + * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
  28 + * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
  29 + * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
  30 + * para maiores detalhes.
  31 + *
  32 + * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
  33 + * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/>
  34 + * ou escreva para a Fundação do Software Livre (FSF) Inc.,
  35 + * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
  36 + */
  37 +package br.gov.frameworkdemoiselle.configuration.field.clazz;
  38 +
  39 +public abstract class AbstractClassNotFoundFieldConfig {
  40 +
  41 + private Class<MyClass> nonExistentTypedClass;
  42 +
  43 + private Class<?> nonExistentUntypedClass;
  44 +
  45 + public Class<MyClass> getNonExistentTypedClass() {
  46 + return nonExistentTypedClass;
  47 + }
  48 +
  49 + public Class<?> getNonExistentUntypedClass() {
  50 + return nonExistentUntypedClass;
  51 + }
  52 +}
impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/clazz/AbstractExistentClassFieldConfig.java 0 → 100644
@@ -0,0 +1,52 @@ @@ -0,0 +1,52 @@
  1 +/*
  2 + * Demoiselle Framework
  3 + * Copyright (C) 2010 SERPRO
  4 + * ----------------------------------------------------------------------------
  5 + * This file is part of Demoiselle Framework.
  6 + *
  7 + * Demoiselle Framework is free software; you can redistribute it and/or
  8 + * modify it under the terms of the GNU Lesser General Public License version 3
  9 + * as published by the Free Software Foundation.
  10 + *
  11 + * This program is distributed in the hope that it will be useful,
  12 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14 + * GNU General Public License for more details.
  15 + *
  16 + * You should have received a copy of the GNU Lesser General Public License version 3
  17 + * along with this program; if not, see <http://www.gnu.org/licenses/>
  18 + * or write to the Free Software Foundation, Inc., 51 Franklin Street,
  19 + * Fifth Floor, Boston, MA 02110-1301, USA.
  20 + * ----------------------------------------------------------------------------
  21 + * Este arquivo é parte do Framework Demoiselle.
  22 + *
  23 + * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
  24 + * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
  25 + * do Software Livre (FSF).
  26 + *
  27 + * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
  28 + * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
  29 + * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
  30 + * para maiores detalhes.
  31 + *
  32 + * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
  33 + * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/>
  34 + * ou escreva para a Fundação do Software Livre (FSF) Inc.,
  35 + * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
  36 + */
  37 +package br.gov.frameworkdemoiselle.configuration.field.clazz;
  38 +
  39 +public abstract class AbstractExistentClassFieldConfig {
  40 +
  41 + private Class<MyClass> existentTypedClass;
  42 +
  43 + private Class<?> existentUntypedClass;
  44 +
  45 + public Class<MyClass> getExistentTypedClass() {
  46 + return existentTypedClass;
  47 + }
  48 +
  49 + public Class<?> getExistentUntypedClass() {
  50 + return existentUntypedClass;
  51 + }
  52 +}
impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/clazz/ConfigurationClassFieldTest.java
@@ -37,13 +37,12 @@ @@ -37,13 +37,12 @@
37 package br.gov.frameworkdemoiselle.configuration.field.clazz; 37 package br.gov.frameworkdemoiselle.configuration.field.clazz;
38 38
39 import static junit.framework.Assert.assertEquals; 39 import static junit.framework.Assert.assertEquals;
  40 +import static junit.framework.Assert.fail;
40 41
41 import java.io.File; 42 import java.io.File;
42 43
43 import javax.inject.Inject; 44 import javax.inject.Inject;
44 45
45 -import junit.framework.Assert;  
46 -  
47 import org.jboss.arquillian.container.test.api.Deployment; 46 import org.jboss.arquillian.container.test.api.Deployment;
48 import org.jboss.arquillian.junit.Arquillian; 47 import org.jboss.arquillian.junit.Arquillian;
49 import org.jboss.shrinkwrap.api.asset.FileAsset; 48 import org.jboss.shrinkwrap.api.asset.FileAsset;
@@ -53,13 +52,18 @@ import org.junit.runner.RunWith; @@ -53,13 +52,18 @@ import org.junit.runner.RunWith;
53 52
54 import br.gov.frameworkdemoiselle.configuration.AbstractConfigurationTest; 53 import br.gov.frameworkdemoiselle.configuration.AbstractConfigurationTest;
55 import br.gov.frameworkdemoiselle.configuration.ConfigurationException; 54 import br.gov.frameworkdemoiselle.configuration.ConfigurationException;
56 -import br.gov.frameworkdemoiselle.configuration.field.clazz.AbstractClassFieldConfig.MyClass;  
57 55
58 @RunWith(Arquillian.class) 56 @RunWith(Arquillian.class)
59 public class ConfigurationClassFieldTest extends AbstractConfigurationTest { 57 public class ConfigurationClassFieldTest extends AbstractConfigurationTest {
60 58
61 @Inject 59 @Inject
62 - private PropertiesClassFieldConfig propertiesConfig; 60 + private PropertiesExistentClassFieldConfig propertiesExistentConfig;
  61 +
  62 + @Inject
  63 + private PropertiesClassNotFoundFieldConfig propertiesNotFoundConfig;
  64 +
  65 + @Inject
  66 + private PropertiesClassCastFieldConfig propertiesCastConfig;
63 67
64 @Deployment 68 @Deployment
65 public static JavaArchive createDeployment() { 69 public static JavaArchive createDeployment() {
@@ -79,40 +83,41 @@ public class ConfigurationClassFieldTest extends AbstractConfigurationTest { @@ -79,40 +83,41 @@ public class ConfigurationClassFieldTest extends AbstractConfigurationTest {
79 public void loadExistentTypedClass() { 83 public void loadExistentTypedClass() {
80 Class<MyClass> expected = MyClass.class; 84 Class<MyClass> expected = MyClass.class;
81 85
82 - assertEquals(expected, propertiesConfig.getExistentTypedClass()); 86 + assertEquals(expected, propertiesExistentConfig.getExistentTypedClass());
83 } 87 }
84 88
85 @Test 89 @Test
86 public void loadExistentUntypedClass() { 90 public void loadExistentUntypedClass() {
87 Class<?> expected = MyClass.class; 91 Class<?> expected = MyClass.class;
88 92
89 - assertEquals(expected, propertiesConfig.getExistentUntypedClass()); 93 + assertEquals(expected, propertiesExistentConfig.getExistentUntypedClass());
90 } 94 }
91 95
92 @Test 96 @Test
93 public void loadNonExistentTypedClass() { 97 public void loadNonExistentTypedClass() {
94 try { 98 try {
95 - propertiesConfig.getNonExistentTypedClass(); 99 + propertiesNotFoundConfig.getNonExistentTypedClass();
  100 + fail();
96 } catch (ConfigurationException cause) { 101 } catch (ConfigurationException cause) {
97 - Assert.assertEquals(ClassNotFoundException.class, cause.getCause()); 102 + assertEquals(ClassNotFoundException.class, cause.getCause().getClass());
98 } 103 }
99 } 104 }
100 105
101 @Test 106 @Test
102 public void loadNonExistentUntypedClass() { 107 public void loadNonExistentUntypedClass() {
103 try { 108 try {
104 - propertiesConfig.getNonExistentUntypedClass(); 109 + propertiesNotFoundConfig.getNonExistentUntypedClass();
  110 + fail();
105 } catch (ConfigurationException cause) { 111 } catch (ConfigurationException cause) {
106 - Assert.assertEquals(ClassNotFoundException.class, cause.getCause()); 112 + assertEquals(ClassNotFoundException.class, cause.getCause().getClass());
107 } 113 }
108 } 114 }
109 115
110 - @Test  
111 - public void loadForcingClassCastException() {  
112 - try {  
113 - propertiesConfig.getForcingClassCastException();  
114 - } catch (ConfigurationException cause) {  
115 - Assert.assertEquals(ClassCastException.class, cause.getCause());  
116 - } 116 + @Test(expected = ClassCastException.class)
  117 + public void loadForcingClassCastException() throws IllegalAccessException, InstantiationException {
  118 + Class<MyClass> clazz = propertiesCastConfig.getForcingClassCastException();
  119 +
  120 + @SuppressWarnings("unused")
  121 + MyClass myClass = clazz.newInstance();
117 } 122 }
118 } 123 }
impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/clazz/MyClass.java 0 → 100644
@@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
  1 +package br.gov.frameworkdemoiselle.configuration.field.clazz;
  2 +
  3 +public class MyClass {
  4 +
  5 +}
impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/clazz/PropertiesClassCastFieldConfig.java 0 → 100644
@@ -0,0 +1,45 @@ @@ -0,0 +1,45 @@
  1 +/*
  2 + * Demoiselle Framework
  3 + * Copyright (C) 2010 SERPRO
  4 + * ----------------------------------------------------------------------------
  5 + * This file is part of Demoiselle Framework.
  6 + *
  7 + * Demoiselle Framework is free software; you can redistribute it and/or
  8 + * modify it under the terms of the GNU Lesser General Public License version 3
  9 + * as published by the Free Software Foundation.
  10 + *
  11 + * This program is distributed in the hope that it will be useful,
  12 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14 + * GNU General Public License for more details.
  15 + *
  16 + * You should have received a copy of the GNU Lesser General Public License version 3
  17 + * along with this program; if not, see <http://www.gnu.org/licenses/>
  18 + * or write to the Free Software Foundation, Inc., 51 Franklin Street,
  19 + * Fifth Floor, Boston, MA 02110-1301, USA.
  20 + * ----------------------------------------------------------------------------
  21 + * Este arquivo é parte do Framework Demoiselle.
  22 + *
  23 + * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
  24 + * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
  25 + * do Software Livre (FSF).
  26 + *
  27 + * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
  28 + * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
  29 + * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
  30 + * para maiores detalhes.
  31 + *
  32 + * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
  33 + * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/>
  34 + * ou escreva para a Fundação do Software Livre (FSF) Inc.,
  35 + * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
  36 + */
  37 +package br.gov.frameworkdemoiselle.configuration.field.clazz;
  38 +
  39 +import static br.gov.frameworkdemoiselle.configuration.ConfigType.PROPERTIES;
  40 +import br.gov.frameworkdemoiselle.configuration.Configuration;
  41 +
  42 +@Configuration(type = PROPERTIES)
  43 +public class PropertiesClassCastFieldConfig extends AbstractClassCastFieldConfig {
  44 +
  45 +}
impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/clazz/PropertiesClassFieldConfig.java
@@ -1,41 +0,0 @@ @@ -1,41 +0,0 @@
1 -/*  
2 - * Demoiselle Framework  
3 - * Copyright (C) 2010 SERPRO  
4 - * ----------------------------------------------------------------------------  
5 - * This file is part of Demoiselle Framework.  
6 - *  
7 - * Demoiselle Framework is free software; you can redistribute it and/or  
8 - * modify it under the terms of the GNU Lesser General Public License version 3  
9 - * as published by the Free Software Foundation.  
10 - *  
11 - * This program is distributed in the hope that it will be useful,  
12 - * but WITHOUT ANY WARRANTY; without even the implied warranty of  
13 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the  
14 - * GNU General Public License for more details.  
15 - *  
16 - * You should have received a copy of the GNU Lesser General Public License version 3  
17 - * along with this program; if not, see <http://www.gnu.org/licenses/>  
18 - * or write to the Free Software Foundation, Inc., 51 Franklin Street,  
19 - * Fifth Floor, Boston, MA 02110-1301, USA.  
20 - * ----------------------------------------------------------------------------  
21 - * Este arquivo é parte do Framework Demoiselle.  
22 - *  
23 - * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou  
24 - * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação  
25 - * do Software Livre (FSF).  
26 - *  
27 - * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA  
28 - * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou  
29 - * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português  
30 - * para maiores detalhes.  
31 - *  
32 - * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título  
33 - * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/>  
34 - * ou escreva para a Fundação do Software Livre (FSF) Inc.,  
35 - * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.  
36 - */  
37 -package br.gov.frameworkdemoiselle.configuration.field.clazz;  
38 -  
39 -public class PropertiesClassFieldConfig extends AbstractClassFieldConfig {  
40 -  
41 -}  
impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/clazz/PropertiesClassNotFoundFieldConfig.java 0 → 100644
@@ -0,0 +1,45 @@ @@ -0,0 +1,45 @@
  1 +/*
  2 + * Demoiselle Framework
  3 + * Copyright (C) 2010 SERPRO
  4 + * ----------------------------------------------------------------------------
  5 + * This file is part of Demoiselle Framework.
  6 + *
  7 + * Demoiselle Framework is free software; you can redistribute it and/or
  8 + * modify it under the terms of the GNU Lesser General Public License version 3
  9 + * as published by the Free Software Foundation.
  10 + *
  11 + * This program is distributed in the hope that it will be useful,
  12 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14 + * GNU General Public License for more details.
  15 + *
  16 + * You should have received a copy of the GNU Lesser General Public License version 3
  17 + * along with this program; if not, see <http://www.gnu.org/licenses/>
  18 + * or write to the Free Software Foundation, Inc., 51 Franklin Street,
  19 + * Fifth Floor, Boston, MA 02110-1301, USA.
  20 + * ----------------------------------------------------------------------------
  21 + * Este arquivo é parte do Framework Demoiselle.
  22 + *
  23 + * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
  24 + * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
  25 + * do Software Livre (FSF).
  26 + *
  27 + * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
  28 + * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
  29 + * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
  30 + * para maiores detalhes.
  31 + *
  32 + * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
  33 + * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/>
  34 + * ou escreva para a Fundação do Software Livre (FSF) Inc.,
  35 + * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
  36 + */
  37 +package br.gov.frameworkdemoiselle.configuration.field.clazz;
  38 +
  39 +import static br.gov.frameworkdemoiselle.configuration.ConfigType.PROPERTIES;
  40 +import br.gov.frameworkdemoiselle.configuration.Configuration;
  41 +
  42 +@Configuration(type = PROPERTIES)
  43 +public class PropertiesClassNotFoundFieldConfig extends AbstractClassNotFoundFieldConfig {
  44 +
  45 +}
impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/clazz/PropertiesExistentClassFieldConfig.java 0 → 100644
@@ -0,0 +1,45 @@ @@ -0,0 +1,45 @@
  1 +/*
  2 + * Demoiselle Framework
  3 + * Copyright (C) 2010 SERPRO
  4 + * ----------------------------------------------------------------------------
  5 + * This file is part of Demoiselle Framework.
  6 + *
  7 + * Demoiselle Framework is free software; you can redistribute it and/or
  8 + * modify it under the terms of the GNU Lesser General Public License version 3
  9 + * as published by the Free Software Foundation.
  10 + *
  11 + * This program is distributed in the hope that it will be useful,
  12 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14 + * GNU General Public License for more details.
  15 + *
  16 + * You should have received a copy of the GNU Lesser General Public License version 3
  17 + * along with this program; if not, see <http://www.gnu.org/licenses/>
  18 + * or write to the Free Software Foundation, Inc., 51 Franklin Street,
  19 + * Fifth Floor, Boston, MA 02110-1301, USA.
  20 + * ----------------------------------------------------------------------------
  21 + * Este arquivo é parte do Framework Demoiselle.
  22 + *
  23 + * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
  24 + * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
  25 + * do Software Livre (FSF).
  26 + *
  27 + * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
  28 + * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
  29 + * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
  30 + * para maiores detalhes.
  31 + *
  32 + * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
  33 + * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/>
  34 + * ou escreva para a Fundação do Software Livre (FSF) Inc.,
  35 + * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
  36 + */
  37 +package br.gov.frameworkdemoiselle.configuration.field.clazz;
  38 +
  39 +import static br.gov.frameworkdemoiselle.configuration.ConfigType.PROPERTIES;
  40 +import br.gov.frameworkdemoiselle.configuration.Configuration;
  41 +
  42 +@Configuration(type = PROPERTIES)
  43 +public class PropertiesExistentClassFieldConfig extends AbstractExistentClassFieldConfig {
  44 +
  45 +}
impl/core/src/test/java/br/gov/frameworkdemoiselle/configuration/field/notnull/ConfigurationNotNullFieldTest.java
@@ -37,11 +37,14 @@ @@ -37,11 +37,14 @@
37 package br.gov.frameworkdemoiselle.configuration.field.notnull; 37 package br.gov.frameworkdemoiselle.configuration.field.notnull;
38 38
39 import static junit.framework.Assert.assertEquals; 39 import static junit.framework.Assert.assertEquals;
  40 +import static junit.framework.Assert.fail;
40 41
41 import java.io.File; 42 import java.io.File;
42 43
43 import javax.inject.Inject; 44 import javax.inject.Inject;
44 45
  46 +import junit.framework.Assert;
  47 +
45 import org.jboss.arquillian.container.test.api.Deployment; 48 import org.jboss.arquillian.container.test.api.Deployment;
46 import org.jboss.arquillian.junit.Arquillian; 49 import org.jboss.arquillian.junit.Arquillian;
47 import org.jboss.shrinkwrap.api.asset.FileAsset; 50 import org.jboss.shrinkwrap.api.asset.FileAsset;
@@ -94,18 +97,33 @@ public class ConfigurationNotNullFieldTest extends AbstractConfigurationTest { @@ -94,18 +97,33 @@ public class ConfigurationNotNullFieldTest extends AbstractConfigurationTest {
94 assertEquals(expected, filledFieldConfig.getIntegerNotNull()); 97 assertEquals(expected, filledFieldConfig.getIntegerNotNull());
95 } 98 }
96 99
97 - @Test(expected = ConfigurationException.class) 100 + @Test
98 public void loadFieldNotNullFromEmptyProperty() { 101 public void loadFieldNotNullFromEmptyProperty() {
99 - emptyFieldsConfig.getIntegerNotNull(); 102 + try {
  103 + emptyFieldsConfig.getIntegerNotNull();
  104 + fail();
  105 + } catch (ConfigurationException cause) {
  106 + Assert.assertEquals(NullPointerException.class, cause.getCause().getClass());
  107 + }
100 } 108 }
101 109
102 - @Test(expected = ConfigurationException.class) 110 + @Test
103 public void loadFieldFromPropertyFileWithoutNotNullField() { 111 public void loadFieldFromPropertyFileWithoutNotNullField() {
104 - withoutNotNullField.getIntegerNotNull(); 112 + try {
  113 + withoutNotNullField.getIntegerNotNull();
  114 + fail();
  115 + } catch (ConfigurationException cause) {
  116 + Assert.assertEquals(NullPointerException.class, cause.getCause().getClass());
  117 + }
105 } 118 }
106 119
107 - @Test(expected = ConfigurationException.class) 120 + @Test
108 public void loadFieldNotNullFromInexistentPropertyFile() { 121 public void loadFieldNotNullFromInexistentPropertyFile() {
109 - noFileConfig.getIntegerNotNull(); 122 + try {
  123 + noFileConfig.getIntegerNotNull();
  124 + fail();
  125 + } catch (ConfigurationException cause) {
  126 + Assert.assertEquals(NullPointerException.class, cause.getCause().getClass());
  127 + }
110 } 128 }
111 } 129 }
impl/core/src/test/resources/configuration/field/class/demoiselle.properties
@@ -33,9 +33,8 @@ @@ -33,9 +33,8 @@
33 # ou escreva para a Fundação do Software Livre (FSF) Inc., 33 # ou escreva para a Fundação do Software Livre (FSF) Inc.,
34 # 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. 34 # 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
35 35
36 -existentTypedClass=br.gov.frameworkdemoiselle.configuration.field.clazz.AbstractClassFieldConfig.MyClass  
37 -existentUntypedClass=br.gov.frameworkdemoiselle.configuration.field.clazz.AbstractClassFieldConfig.MyClass 36 +existentTypedClass=br.gov.frameworkdemoiselle.configuration.field.clazz.MyClass
  37 +existentUntypedClass=br.gov.frameworkdemoiselle.configuration.field.clazz.MyClass
38 nonExistentTypedClass=com.fake.NonExistentClass 38 nonExistentTypedClass=com.fake.NonExistentClass
39 nonExistentUntypedClass=com.fake.NonExistentClass 39 nonExistentUntypedClass=com.fake.NonExistentClass
40 -forcingTypedClassCastException=java.lang.String  
41 forcingClassCastException=java.lang.String 40 forcingClassCastException=java.lang.String