Commit dcc1ddee15bbffb6f1bf87ff9bfea478fd0e2d45
1 parent
54b02e18
Exists in
master
Aumentando cobertura de testes.
Showing
4 changed files
with
155 additions
and
117 deletions
Show diff stats
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/configuration/ConfigurationLoader.java
... | ... | @@ -79,9 +79,11 @@ public class ConfigurationLoader implements Serializable { |
79 | 79 | |
80 | 80 | private static final long serialVersionUID = 1L; |
81 | 81 | |
82 | - private static ResourceBundle bundle; | |
82 | + private ResourceBundle bundle; | |
83 | 83 | |
84 | - private static Logger logger; | |
84 | + private Logger logger; | |
85 | + | |
86 | + private CoreBootstrap bootstrap; | |
85 | 87 | |
86 | 88 | /** |
87 | 89 | * Loads a config class filling it with the corresponding values. |
... | ... | @@ -92,9 +94,8 @@ public class ConfigurationLoader implements Serializable { |
92 | 94 | */ |
93 | 95 | public void load(Object object) throws ConfigurationException { |
94 | 96 | Class<?> config = object.getClass(); |
95 | - CoreBootstrap bootstrap = Beans.getReference(CoreBootstrap.class); | |
96 | 97 | |
97 | - if (!bootstrap.isAnnotatedType(config)) { | |
98 | + if (!getBootstrap().isAnnotatedType(config)) { | |
98 | 99 | config = config.getSuperclass(); |
99 | 100 | getLogger().debug(getBundle().getString("proxy-detected", config, config.getClass().getSuperclass())); |
100 | 101 | } |
... | ... | @@ -429,7 +430,7 @@ public class ConfigurationLoader implements Serializable { |
429 | 430 | return classLoader != null ? classLoader.getResource(resource) : null; |
430 | 431 | } |
431 | 432 | |
432 | - private static ResourceBundle getBundle() { | |
433 | + private ResourceBundle getBundle() { | |
433 | 434 | if (bundle == null) { |
434 | 435 | bundle = ResourceBundleProducer.create("demoiselle-core-bundle"); |
435 | 436 | } |
... | ... | @@ -437,11 +438,19 @@ public class ConfigurationLoader implements Serializable { |
437 | 438 | return bundle; |
438 | 439 | } |
439 | 440 | |
440 | - private static Logger getLogger() { | |
441 | + private Logger getLogger() { | |
441 | 442 | if (logger == null) { |
442 | 443 | logger = LoggerProducer.create(ConfigurationLoader.class); |
443 | 444 | } |
444 | 445 | |
445 | 446 | return logger; |
446 | 447 | } |
448 | + | |
449 | + private CoreBootstrap getBootstrap(){ | |
450 | + if (bootstrap == null){ | |
451 | + bootstrap = Beans.getReference(CoreBootstrap.class); | |
452 | + } | |
453 | + | |
454 | + return bootstrap; | |
455 | + } | |
447 | 456 | } | ... | ... |
impl/extension/jpa/src/main/java/br/gov/frameworkdemoiselle/internal/producer/EntityManagerFactoryProducer.java
... | ... | @@ -110,7 +110,14 @@ public class EntityManagerFactoryProducer implements Serializable { |
110 | 110 | public void loadPersistenceUnits() { |
111 | 111 | ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader(); |
112 | 112 | for (String persistenceUnit : loadPersistenceUnitFromClassloader(contextClassLoader)) { |
113 | - create(persistenceUnit); | |
113 | + | |
114 | + try{ | |
115 | + create(persistenceUnit); | |
116 | + } | |
117 | + catch(Throwable t){ | |
118 | + throw new DemoiselleException(t); | |
119 | + } | |
120 | + | |
114 | 121 | logger.debug(bundle.getString("persistence-unit-name-found", persistenceUnit)); |
115 | 122 | } |
116 | 123 | } | ... | ... |
impl/extension/jpa/src/test/java/br/gov/frameworkdemoiselle/internal/configuration/EntityManagerConfigTest.java
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.internal.configuration; | |
38 | -//import org.junit.Ignore; | |
39 | -//import static org.easymock.EasyMock.expect; | |
40 | -//import static org.junit.Assert.assertEquals; | |
41 | -//import static org.powermock.api.easymock.PowerMock.mockStatic; | |
42 | -// | |
43 | -//import java.util.Locale; | |
44 | -// | |
45 | -//import org.junit.After; | |
46 | -//import org.junit.Before; | |
47 | -//import org.junit.Test; | |
48 | -//import org.junit.runner.RunWith; | |
49 | -//import org.powermock.api.easymock.PowerMock; | |
50 | -//import org.powermock.core.classloader.annotations.PrepareForTest; | |
51 | -//import org.powermock.modules.junit4.PowerMockRunner; | |
52 | -//import org.powermock.reflect.Whitebox; | |
53 | -//import org.slf4j.Logger; | |
54 | -// | |
55 | -//import br.gov.frameworkdemoiselle.internal.bootstrap.CoreBootstrap; | |
56 | -//import br.gov.frameworkdemoiselle.util.ResourceBundle; | |
57 | -// | |
58 | -///** | |
59 | -// * @author e-saito | |
60 | -// */ | |
61 | -///** | |
62 | -// * @author 80342167553 | |
63 | -// */ | |
64 | -//@Ignore | |
65 | -//@RunWith(PowerMockRunner.class) | |
66 | -//@PrepareForTest(CoreBootstrap.class) | |
67 | -//public class EntityManagerConfigTest { | |
68 | -// | |
69 | -// private EntityManagerConfig config = new EntityManagerConfig(); | |
70 | -// | |
71 | -// @Before | |
72 | -// public void setUp() throws Exception { | |
73 | -// Logger logger = PowerMock.createMock(Logger.class); | |
74 | -// ResourceBundle bundle = new ResourceBundle("demoiselle-core-bundle", Locale.getDefault()); | |
75 | -// | |
76 | -// ConfigurationLoader configurationLoader = new ConfigurationLoader(); | |
77 | -// | |
78 | -// Whitebox.setInternalState(configurationLoader, "bundle", bundle); | |
79 | -// Whitebox.setInternalState(configurationLoader, "logger", logger); | |
80 | -// | |
81 | -// mockStatic(CoreBootstrap.class); | |
82 | -// expect(CoreBootstrap.isAnnotatedType(config.getClass())).andReturn(true); | |
83 | -// PowerMock.replay(CoreBootstrap.class); | |
84 | -// | |
85 | -// configurationLoader.load(config); | |
86 | -// } | |
87 | -// | |
88 | -// @After | |
89 | -// public void tearDown() throws Exception { | |
90 | -// config = null; | |
91 | -// } | |
92 | -// | |
93 | -// /** | |
94 | -// * Test method for | |
95 | -// * {@link br.gov.frameworkdemoiselle.internal.configuration.EntityManagerConfig#getPersistenceUnitName()}. | |
96 | -// */ | |
97 | -// @Test | |
98 | -// public void testGetPersistenceUnitName() { | |
99 | -// assertEquals("PersistenceUnitName", config.getPersistenceUnitName()); | |
100 | -// } | |
101 | -//} | |
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.internal.configuration; | |
38 | +import static org.easymock.EasyMock.createMock; | |
39 | +import static org.easymock.EasyMock.expect; | |
40 | +import static org.junit.Assert.assertEquals; | |
41 | + | |
42 | +import java.util.Locale; | |
43 | + | |
44 | +import org.junit.After; | |
45 | +import org.junit.Before; | |
46 | +import org.junit.Test; | |
47 | +import org.junit.runner.RunWith; | |
48 | +import org.powermock.api.easymock.PowerMock; | |
49 | +import org.powermock.core.classloader.annotations.PrepareForTest; | |
50 | +import org.powermock.modules.junit4.PowerMockRunner; | |
51 | +import org.powermock.reflect.Whitebox; | |
52 | +import org.slf4j.Logger; | |
53 | +import org.slf4j.LoggerFactory; | |
54 | + | |
55 | +import br.gov.frameworkdemoiselle.internal.bootstrap.CoreBootstrap; | |
56 | +import br.gov.frameworkdemoiselle.util.ResourceBundle; | |
57 | + | |
58 | +/** | |
59 | + * @author e-saito | |
60 | + */ | |
61 | +/** | |
62 | + * @author 80342167553 | |
63 | + */ | |
64 | +@RunWith(PowerMockRunner.class) | |
65 | +@PrepareForTest(CoreBootstrap.class) | |
66 | +public class EntityManagerConfigTest { | |
67 | + | |
68 | + private EntityManagerConfig config = new EntityManagerConfig(); | |
69 | + | |
70 | + @Before | |
71 | + public void setUp() throws Exception { | |
72 | + Logger logger = LoggerFactory.getLogger(this.getClass()); | |
73 | + ResourceBundle bundle = new ResourceBundle("demoiselle-core-bundle", Locale.getDefault()); | |
74 | + | |
75 | + ConfigurationLoader configurationLoader = new ConfigurationLoader(); | |
76 | + | |
77 | + Whitebox.setInternalState(configurationLoader, "bundle", bundle); | |
78 | + Whitebox.setInternalState(configurationLoader, "logger", logger); | |
79 | + | |
80 | + CoreBootstrap bootstrap = createMock(CoreBootstrap.class); | |
81 | + expect(bootstrap.isAnnotatedType(config.getClass())).andReturn(true); | |
82 | + PowerMock.replay(bootstrap); | |
83 | + | |
84 | + Whitebox.setInternalState(configurationLoader, "bootstrap", bootstrap); | |
85 | + | |
86 | + configurationLoader.load(config); | |
87 | + } | |
88 | + | |
89 | + @After | |
90 | + public void tearDown() throws Exception { | |
91 | + config = null; | |
92 | + } | |
93 | + | |
94 | + /** | |
95 | + * Test method for | |
96 | + * {@link br.gov.frameworkdemoiselle.internal.configuration.EntityManagerConfig#getPersistenceUnitName()}. | |
97 | + */ | |
98 | + @Test | |
99 | + public void testGetPersistenceUnitName() { | |
100 | + assertEquals("PersistenceUnitName", config.getPersistenceUnitName()); | |
101 | + } | |
102 | +} | ... | ... |
impl/extension/jpa/src/test/java/br/gov/frameworkdemoiselle/internal/producer/EntityManagerFactoryProducerTest.java
1 | 1 | package br.gov.frameworkdemoiselle.internal.producer; |
2 | -import org.junit.Ignore; | |
3 | 2 | import static org.easymock.EasyMock.createMock; |
4 | 3 | import static org.easymock.EasyMock.expect; |
5 | 4 | import static org.easymock.EasyMock.verify; |
... | ... | @@ -26,14 +25,14 @@ import org.slf4j.Logger; |
26 | 25 | |
27 | 26 | import br.gov.frameworkdemoiselle.DemoiselleException; |
28 | 27 | import br.gov.frameworkdemoiselle.util.ResourceBundle; |
29 | -@Ignore | |
28 | + | |
30 | 29 | @RunWith(PowerMockRunner.class) |
31 | 30 | @PrepareForTest(Persistence.class) |
32 | 31 | public class EntityManagerFactoryProducerTest { |
33 | 32 | |
34 | 33 | private EntityManagerFactory emFactory; |
35 | 34 | private EntityManagerFactoryProducer producer; |
36 | - private Map<String, EntityManagerFactory> cache; | |
35 | + private Map<ClassLoader, Map<String, EntityManagerFactory>> cache; | |
37 | 36 | private Logger logger; |
38 | 37 | private ResourceBundle bundle; |
39 | 38 | |
... | ... | @@ -42,8 +41,8 @@ public class EntityManagerFactoryProducerTest { |
42 | 41 | logger = createMock(Logger.class); |
43 | 42 | bundle = ResourceBundleProducer.create("demoiselle-jpa-bundle", Locale.getDefault()); |
44 | 43 | producer = new EntityManagerFactoryProducer(); |
45 | - cache = Collections.synchronizedMap(new HashMap<String, EntityManagerFactory>()); | |
46 | - setInternalState(producer, Map.class, cache); | |
44 | + cache = Collections.synchronizedMap(new HashMap<ClassLoader, Map<String, EntityManagerFactory>>()); | |
45 | + setInternalState(producer, "factoryCache", cache); | |
47 | 46 | setInternalState(producer, Logger.class, logger); |
48 | 47 | setInternalState(producer, ResourceBundle.class, bundle); |
49 | 48 | emFactory = createMock(EntityManagerFactory.class); |
... | ... | @@ -51,7 +50,11 @@ public class EntityManagerFactoryProducerTest { |
51 | 50 | |
52 | 51 | @Test |
53 | 52 | public void testCreateWithUnitPersistenceExisting() { |
54 | - cache.put("pu1", emFactory); | |
53 | + ClassLoader cl = this.getClass().getClassLoader(); | |
54 | + HashMap<String, EntityManagerFactory> emEntry = new HashMap<String, EntityManagerFactory>(); | |
55 | + emEntry.put("pu1", emFactory); | |
56 | + cache.put(cl,emEntry); | |
57 | + | |
55 | 58 | Assert.assertEquals(emFactory, producer.create("pu1")); |
56 | 59 | } |
57 | 60 | |
... | ... | @@ -73,7 +76,12 @@ public class EntityManagerFactoryProducerTest { |
73 | 76 | replay(Persistence.class); |
74 | 77 | |
75 | 78 | producer.loadPersistenceUnits(); |
76 | - Assert.assertEquals(emFactory, cache.get("pu1")); | |
79 | + | |
80 | + ClassLoader cl = this.getClass().getClassLoader(); | |
81 | + Map<String, EntityManagerFactory> internalCache = cache.get(cl); | |
82 | + | |
83 | + Assert.assertNotNull(internalCache); | |
84 | + Assert.assertEquals(emFactory, internalCache.get("pu1")); | |
77 | 85 | } |
78 | 86 | |
79 | 87 | @Test |
... | ... | @@ -88,12 +96,25 @@ public class EntityManagerFactoryProducerTest { |
88 | 96 | |
89 | 97 | @Test |
90 | 98 | public void testGetCache() { |
91 | - Assert.assertEquals(cache, producer.getCache()); | |
99 | + ClassLoader cl = this.getClass().getClassLoader(); | |
100 | + HashMap<String, EntityManagerFactory> emEntry = new HashMap<String, EntityManagerFactory>(); | |
101 | + emEntry.put("pu1", emFactory); | |
102 | + cache.put(cl, emEntry); | |
103 | + | |
104 | + mockStatic(Persistence.class); | |
105 | + expect(Persistence.createEntityManagerFactory("pu1")).andReturn(emFactory); | |
106 | + replay(Persistence.class); | |
107 | + | |
108 | + Assert.assertEquals(cache.get(this.getClass().getClassLoader()), producer.getCache()); | |
92 | 109 | } |
93 | 110 | |
94 | 111 | @Test |
95 | 112 | public void testClose() { |
96 | - cache.put("pu1", emFactory); | |
113 | + ClassLoader cl = this.getClass().getClassLoader(); | |
114 | + HashMap<String, EntityManagerFactory> emEntry = new HashMap<String, EntityManagerFactory>(); | |
115 | + emEntry.put("pu1", emFactory); | |
116 | + cache.put(cl, emEntry); | |
117 | + | |
97 | 118 | emFactory.close(); |
98 | 119 | replay(emFactory); |
99 | 120 | producer.close(); | ... | ... |