Author: sergeyb
Date: Mon Apr 14 15:45:43 2014
New Revision: 1587227
URL: http://svn.apache.org/r1587227
Log:
[ARIES-1160] Updating JPA container to correctly deal with Bundle.RESOLVED
events when creating a factory, patch from Christian Schneider applied
Modified:
aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/EntityManagerFactoryManager.java
Modified:
aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/EntityManagerFactoryManager.java
URL:
http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/EntityManagerFactoryManager.java?rev=1587227&r1=1587226&r2=1587227&view=diff
==============================================================================
---
aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/EntityManagerFactoryManager.java
(original)
+++
aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/EntityManagerFactoryManager.java
Mon Apr 14 15:45:43 2014
@@ -309,32 +309,34 @@ public class EntityManagerFactoryManager
* valid and should be destroyed
*/
private void createEntityManagerFactories() throws
InvalidPersistenceUnitException {
+ if (emfs == null) {
+ emfs = new HashMap<String, CountingEntityManagerFactory>();
+ }
//Only try if we have a provider and EMFs
- if(provider != null) {
- if(emfs == null && !quiesce) {
- try {
- emfs = new HashMap<String, CountingEntityManagerFactory>();
-
- //Get hold of the provider
- PersistenceProvider providerService = (PersistenceProvider)
containerContext.getService(provider);
-
- if(providerService == null) {
-
_logger.warn(NLS.MESSAGES.getMessage("persistence.provider.gone.awol",
bundle.getSymbolicName() + '/' + bundle.getVersion()));
- throw new InvalidPersistenceUnitException();
- }
+ if(provider == null || !emfs.isEmpty() || quiesce) {
+ return;
+ }
+ try {
+ //Get hold of the provider
+ PersistenceProvider providerService = (PersistenceProvider)
containerContext.getService(provider);
- for(Entry<String, ? extends ManagedPersistenceUnitInfo> entry :
- persistenceUnits.entrySet()){
- ManagedPersistenceUnitInfo mpui = entry.getValue();
- emfs.put(entry.getKey(), new CountingEntityManagerFactory(
- providerService.createContainerEntityManagerFactory(
- mpui.getPersistenceUnitInfo(),
mpui.getContainerProperties()), entry.getKey()));
- }
- } finally {
- //Remember to unget the provider
- containerContext.ungetService(provider);
+ if(providerService == null) {
+ _logger.warn(NLS.MESSAGES.getMessage("persistence.provider.gone.awol",
bundle.getSymbolicName() + '/' + bundle.getVersion()));
+ throw new InvalidPersistenceUnitException();
+ }
+
+ for(String unitName : persistenceUnits.keySet()){
+ ManagedPersistenceUnitInfo mpui = persistenceUnits.get(unitName);
+ try {
+ EntityManagerFactory emf =
providerService.createContainerEntityManagerFactory(mpui.getPersistenceUnitInfo(),
mpui.getContainerProperties());
+ emfs.put(unitName, new CountingEntityManagerFactory(emf, unitName));
+ } catch (Exception e) {
+ _logger.warn("Error creating EntityManagerFactory", e);
}
}
+ } finally {
+ //Remember to unget the provider
+ containerContext.ungetService(provider);
}
}