1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.core.persistence.jpa.spring;
20
21 import javax.persistence.EntityManagerFactory;
22 import javax.persistence.spi.PersistenceUnitInfo;
23 import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI;
24 import org.apache.openjpa.persistence.OpenJPAPersistence;
25 import org.apache.syncope.core.persistence.jpa.openjpa.ConnectorManagerRemoteCommitListener;
26 import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
27
28
29
30
31
32 public class DomainEntityManagerFactoryBean extends LocalContainerEntityManagerFactoryBean {
33
34 private static final long serialVersionUID = 49152547930966545L;
35
36 protected ConnectorManagerRemoteCommitListener connectorManagerRemoteCommitListener;
37
38 public void setCommonEntityManagerFactoryConf(final CommonEntityManagerFactoryConf commonEMFConf) {
39 super.setJpaPropertyMap(commonEMFConf.getJpaPropertyMap());
40
41 if (commonEMFConf.getPackagesToScan() != null) {
42 super.setPackagesToScan(commonEMFConf.getPackagesToScan());
43 }
44
45 super.setValidationMode(commonEMFConf.getValidationMode());
46
47 if (commonEMFConf.getPersistenceUnitPostProcessors() != null) {
48 super.setPersistenceUnitPostProcessors(commonEMFConf.getPersistenceUnitPostProcessors());
49 }
50
51 commonEMFConf.getDomains().put(this.getPersistenceUnitName(), this.getDataSource());
52 }
53
54 public void setConnectorManagerRemoteCommitListener(
55 final ConnectorManagerRemoteCommitListener connectorManagerRemoteCommitListener) {
56
57 this.connectorManagerRemoteCommitListener = connectorManagerRemoteCommitListener;
58 }
59
60 @Override
61 protected void postProcessEntityManagerFactory(final EntityManagerFactory emf, final PersistenceUnitInfo pui) {
62 super.postProcessEntityManagerFactory(emf, pui);
63
64 OpenJPAEntityManagerFactorySPI emfspi = (OpenJPAEntityManagerFactorySPI) OpenJPAPersistence.cast(emf);
65 emfspi.getConfiguration().getRemoteCommitEventManager().addListener(connectorManagerRemoteCommitListener);
66 }
67 }