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,9 +79,11 @@ public class ConfigurationLoader implements Serializable { | ||
| 79 | 79 | ||
| 80 | private static final long serialVersionUID = 1L; | 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 | * Loads a config class filling it with the corresponding values. | 89 | * Loads a config class filling it with the corresponding values. |
| @@ -92,9 +94,8 @@ public class ConfigurationLoader implements Serializable { | @@ -92,9 +94,8 @@ public class ConfigurationLoader implements Serializable { | ||
| 92 | */ | 94 | */ |
| 93 | public void load(Object object) throws ConfigurationException { | 95 | public void load(Object object) throws ConfigurationException { |
| 94 | Class<?> config = object.getClass(); | 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 | config = config.getSuperclass(); | 99 | config = config.getSuperclass(); |
| 99 | getLogger().debug(getBundle().getString("proxy-detected", config, config.getClass().getSuperclass())); | 100 | getLogger().debug(getBundle().getString("proxy-detected", config, config.getClass().getSuperclass())); |
| 100 | } | 101 | } |
| @@ -429,7 +430,7 @@ public class ConfigurationLoader implements Serializable { | @@ -429,7 +430,7 @@ public class ConfigurationLoader implements Serializable { | ||
| 429 | return classLoader != null ? classLoader.getResource(resource) : null; | 430 | return classLoader != null ? classLoader.getResource(resource) : null; |
| 430 | } | 431 | } |
| 431 | 432 | ||
| 432 | - private static ResourceBundle getBundle() { | 433 | + private ResourceBundle getBundle() { |
| 433 | if (bundle == null) { | 434 | if (bundle == null) { |
| 434 | bundle = ResourceBundleProducer.create("demoiselle-core-bundle"); | 435 | bundle = ResourceBundleProducer.create("demoiselle-core-bundle"); |
| 435 | } | 436 | } |
| @@ -437,11 +438,19 @@ public class ConfigurationLoader implements Serializable { | @@ -437,11 +438,19 @@ public class ConfigurationLoader implements Serializable { | ||
| 437 | return bundle; | 438 | return bundle; |
| 438 | } | 439 | } |
| 439 | 440 | ||
| 440 | - private static Logger getLogger() { | 441 | + private Logger getLogger() { |
| 441 | if (logger == null) { | 442 | if (logger == null) { |
| 442 | logger = LoggerProducer.create(ConfigurationLoader.class); | 443 | logger = LoggerProducer.create(ConfigurationLoader.class); |
| 443 | } | 444 | } |
| 444 | 445 | ||
| 445 | return logger; | 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,7 +110,14 @@ public class EntityManagerFactoryProducer implements Serializable { | ||
| 110 | public void loadPersistenceUnits() { | 110 | public void loadPersistenceUnits() { |
| 111 | ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader(); | 111 | ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader(); |
| 112 | for (String persistenceUnit : loadPersistenceUnitFromClassloader(contextClassLoader)) { | 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 | logger.debug(bundle.getString("persistence-unit-name-found", persistenceUnit)); | 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 | package br.gov.frameworkdemoiselle.internal.producer; | 1 | package br.gov.frameworkdemoiselle.internal.producer; |
| 2 | -import org.junit.Ignore; | ||
| 3 | import static org.easymock.EasyMock.createMock; | 2 | import static org.easymock.EasyMock.createMock; |
| 4 | import static org.easymock.EasyMock.expect; | 3 | import static org.easymock.EasyMock.expect; |
| 5 | import static org.easymock.EasyMock.verify; | 4 | import static org.easymock.EasyMock.verify; |
| @@ -26,14 +25,14 @@ import org.slf4j.Logger; | @@ -26,14 +25,14 @@ import org.slf4j.Logger; | ||
| 26 | 25 | ||
| 27 | import br.gov.frameworkdemoiselle.DemoiselleException; | 26 | import br.gov.frameworkdemoiselle.DemoiselleException; |
| 28 | import br.gov.frameworkdemoiselle.util.ResourceBundle; | 27 | import br.gov.frameworkdemoiselle.util.ResourceBundle; |
| 29 | -@Ignore | 28 | + |
| 30 | @RunWith(PowerMockRunner.class) | 29 | @RunWith(PowerMockRunner.class) |
| 31 | @PrepareForTest(Persistence.class) | 30 | @PrepareForTest(Persistence.class) |
| 32 | public class EntityManagerFactoryProducerTest { | 31 | public class EntityManagerFactoryProducerTest { |
| 33 | 32 | ||
| 34 | private EntityManagerFactory emFactory; | 33 | private EntityManagerFactory emFactory; |
| 35 | private EntityManagerFactoryProducer producer; | 34 | private EntityManagerFactoryProducer producer; |
| 36 | - private Map<String, EntityManagerFactory> cache; | 35 | + private Map<ClassLoader, Map<String, EntityManagerFactory>> cache; |
| 37 | private Logger logger; | 36 | private Logger logger; |
| 38 | private ResourceBundle bundle; | 37 | private ResourceBundle bundle; |
| 39 | 38 | ||
| @@ -42,8 +41,8 @@ public class EntityManagerFactoryProducerTest { | @@ -42,8 +41,8 @@ public class EntityManagerFactoryProducerTest { | ||
| 42 | logger = createMock(Logger.class); | 41 | logger = createMock(Logger.class); |
| 43 | bundle = ResourceBundleProducer.create("demoiselle-jpa-bundle", Locale.getDefault()); | 42 | bundle = ResourceBundleProducer.create("demoiselle-jpa-bundle", Locale.getDefault()); |
| 44 | producer = new EntityManagerFactoryProducer(); | 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 | setInternalState(producer, Logger.class, logger); | 46 | setInternalState(producer, Logger.class, logger); |
| 48 | setInternalState(producer, ResourceBundle.class, bundle); | 47 | setInternalState(producer, ResourceBundle.class, bundle); |
| 49 | emFactory = createMock(EntityManagerFactory.class); | 48 | emFactory = createMock(EntityManagerFactory.class); |
| @@ -51,7 +50,11 @@ public class EntityManagerFactoryProducerTest { | @@ -51,7 +50,11 @@ public class EntityManagerFactoryProducerTest { | ||
| 51 | 50 | ||
| 52 | @Test | 51 | @Test |
| 53 | public void testCreateWithUnitPersistenceExisting() { | 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 | Assert.assertEquals(emFactory, producer.create("pu1")); | 58 | Assert.assertEquals(emFactory, producer.create("pu1")); |
| 56 | } | 59 | } |
| 57 | 60 | ||
| @@ -73,7 +76,12 @@ public class EntityManagerFactoryProducerTest { | @@ -73,7 +76,12 @@ public class EntityManagerFactoryProducerTest { | ||
| 73 | replay(Persistence.class); | 76 | replay(Persistence.class); |
| 74 | 77 | ||
| 75 | producer.loadPersistenceUnits(); | 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 | @Test | 87 | @Test |
| @@ -88,12 +96,25 @@ public class EntityManagerFactoryProducerTest { | @@ -88,12 +96,25 @@ public class EntityManagerFactoryProducerTest { | ||
| 88 | 96 | ||
| 89 | @Test | 97 | @Test |
| 90 | public void testGetCache() { | 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 | @Test | 111 | @Test |
| 95 | public void testClose() { | 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 | emFactory.close(); | 118 | emFactory.close(); |
| 98 | replay(emFactory); | 119 | replay(emFactory); |
| 99 | producer.close(); | 120 | producer.close(); |