This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch 3_0_X
in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/3_0_X by this push:
new 089fe5adbb [SYNCOPE-1825] Ensuring to pass dbSchema, if available, as
openjpa.jdbc.Schema (#802)
089fe5adbb is described below
commit 089fe5adbb73647167978bd2afadb1c0a1395a7a
Author: Francesco Chicchiriccò <[email protected]>
AuthorDate: Fri Aug 2 12:40:52 2024 +0200
[SYNCOPE-1825] Ensuring to pass dbSchema, if available, as
openjpa.jdbc.Schema (#802)
---
.../core/persistence/jpa/DomainConfFactory.java | 17 +++++++++---
.../syncope/core/persistence/jpa/MasterDomain.java | 31 ++++++++++++----------
pom.xml | 2 +-
3 files changed, 32 insertions(+), 18 deletions(-)
diff --git
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/DomainConfFactory.java
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/DomainConfFactory.java
index 067779de87..b37591ec58 100644
---
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/DomainConfFactory.java
+++
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/DomainConfFactory.java
@@ -22,8 +22,10 @@ import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import java.io.ByteArrayInputStream;
import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
+import java.util.Optional;
import javax.persistence.EntityManagerFactory;
import javax.sql.DataSource;
import org.apache.syncope.common.keymaster.client.api.model.Domain;
@@ -129,18 +131,27 @@ public class DomainConfFactory implements DomainRegistry {
new ConnectorManagerRemoteCommitListener(domain.getKey());
BeanDefinitionBuilder emf =
BeanDefinitionBuilder.rootBeanDefinition(DomainEntityManagerFactoryBean.class).
- addPropertyValue("mappingResources", domain.getOrm()).
addPropertyValue("persistenceUnitName", domain.getKey()).
+ addPropertyValue("mappingResources", domain.getOrm()).
addPropertyReference("dataSource", domain.getKey() +
"DataSource").
addPropertyValue("jpaVendorAdapter", vendorAdapter).
addPropertyReference("commonEntityManagerFactoryConf",
"commonEMFConf").
addPropertyValue("connectorManagerRemoteCommitListener",
connectorManagerRemoteCommitListener);
+
+ Map<String, Object> jpaPropertyMap = new HashMap<>();
+ jpaPropertyMap.putAll(vendorAdapter.getJpaPropertyMap());
+ Optional.ofNullable(domain.getDbSchema()).
+ ifPresent(s -> jpaPropertyMap.put("openjpa.jdbc.Schema", s));
if (ctx.getEnvironment().containsProperty("openjpaMetaDataFactory")) {
- emf.addPropertyValue("jpaPropertyMap", Map.of(
+ jpaPropertyMap.put(
"openjpa.MetaDataFactory",
Objects.requireNonNull(ctx.getEnvironment().getProperty("openjpaMetaDataFactory")).
- replace("##orm##", domain.getOrm())));
+ replace("##orm##", domain.getOrm()));
}
+ if (!jpaPropertyMap.isEmpty()) {
+ emf.addPropertyValue("jpaPropertyMap", jpaPropertyMap);
+ }
+
registerBeanDefinition(domain.getKey() + "EntityManagerFactory",
emf.getBeanDefinition());
beanFactory().getBean(domain.getKey() + "EntityManagerFactory");
diff --git
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/MasterDomain.java
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/MasterDomain.java
index eef3e7635e..1ad1660f4e 100644
---
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/MasterDomain.java
+++
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/MasterDomain.java
@@ -22,8 +22,8 @@ import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import java.io.IOException;
import java.io.InputStream;
-import java.util.Map;
import java.util.Objects;
+import java.util.Optional;
import javax.sql.DataSource;
import org.apache.syncope.common.lib.SyncopeConstants;
import
org.apache.syncope.core.persistence.jpa.openjpa.ConnectorManagerRemoteCommitListener;
@@ -101,22 +101,25 @@ public class MasterDomain {
vendorAdapter.setGenerateDdl(true);
vendorAdapter.setDatabasePlatform(props.getDomain().get(0).getDatabasePlatform());
- DomainEntityManagerFactoryBean masterEntityManagerFactory = new
DomainEntityManagerFactoryBean();
-
masterEntityManagerFactory.setMappingResources(props.getDomain().get(0).getOrm());
-
masterEntityManagerFactory.setPersistenceUnitName(SyncopeConstants.MASTER_DOMAIN);
-
masterEntityManagerFactory.setDataSource(Objects.requireNonNull((DataSource)
masterDataSource.getObject()));
- masterEntityManagerFactory.setJpaVendorAdapter(vendorAdapter);
-
masterEntityManagerFactory.setCommonEntityManagerFactoryConf(commonEMFConf);
- masterEntityManagerFactory.setConnectorManagerRemoteCommitListener(
+ DomainEntityManagerFactoryBean emf = new
DomainEntityManagerFactoryBean();
+ emf.setPersistenceUnitName(SyncopeConstants.MASTER_DOMAIN);
+ emf.setMappingResources(props.getDomain().get(0).getOrm());
+ emf.setDataSource(Objects.requireNonNull((DataSource)
masterDataSource.getObject()));
+ emf.setJpaVendorAdapter(vendorAdapter);
+ emf.setCommonEntityManagerFactoryConf(commonEMFConf);
+ emf.setConnectorManagerRemoteCommitListener(
new
ConnectorManagerRemoteCommitListener(SyncopeConstants.MASTER_DOMAIN));
- if (props.getMetaDataFactory() != null) {
- masterEntityManagerFactory.setJpaPropertyMap(Map.of(
- "openjpa.MetaDataFactory",
- props.getMetaDataFactory().replace("##orm##",
props.getDomain().get(0).getOrm())));
- }
+ emf.getJpaPropertyMap().putAll(vendorAdapter.getJpaPropertyMap());
- return masterEntityManagerFactory;
+ Optional.ofNullable(props.getDomain().get(0).getDbSchema()).
+ ifPresent(s ->
emf.getJpaPropertyMap().put("openjpa.jdbc.Schema", s));
+
+ Optional.ofNullable(props.getMetaDataFactory()).
+ ifPresent(m -> emf.getJpaPropertyMap().put(
+ "openjpa.MetaDataFactory", m.replace("##orm##",
props.getDomain().get(0).getOrm())));
+
+ return emf;
}
@ConditionalOnMissingBean(name = "MasterTransactionManager")
diff --git a/pom.xml b/pom.xml
index 692befcbc6..f0bde1a54d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -511,7 +511,7 @@ under the License.
<jdbc.mysql.version>9.0.0</jdbc.mysql.version>
<jdbc.mariadb.version>3.4.1</jdbc.mariadb.version>
<jdbc.mssql.version>12.6.1.jre11</jdbc.mssql.version>
- <jdbc.oracle.version>23.4.0.24.05</jdbc.oracle.version>
+ <jdbc.oracle.version>23.5.0.24.07</jdbc.oracle.version>
<bundles.directory>${project.build.directory}/bundles</bundles.directory>