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(); | ... | ... |