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>
 

Reply via email to