Skip to content

Commit 386a1f0

Browse files
authored
[SYNCOPE-1857] Do not select the internal storage db from classpath (#971)
1 parent 0398acc commit 386a1f0

File tree

19 files changed

+44
-53
lines changed

19 files changed

+44
-53
lines changed

core/persistence-jpa/pom.xml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ under the License.
3636
<properties>
3737
<syncope.connid.location>file:${bundles.directory}/</syncope.connid.location>
3838

39+
<DB_TYPE>POSTGRESQL</DB_TYPE>
3940
<jdbcdriver.groupId>org.postgresql</jdbcdriver.groupId>
4041
<jdbcdriver.artifactId>postgresql</jdbcdriver.artifactId>
4142

@@ -148,7 +149,6 @@ under the License.
148149
<configuration>
149150
<systemPropertyVariables>
150151
<syncope.connid.location>${syncope.connid.location}</syncope.connid.location>
151-
<CORE_PROPERTIES>classpath:core-test.properties</CORE_PROPERTIES>
152152
<TESTCONTAINERS_REUSE_ENABLE>true</TESTCONTAINERS_REUSE_ENABLE>
153153
</systemPropertyVariables>
154154
</configuration>
@@ -179,6 +179,7 @@ under the License.
179179
<id>mysql</id>
180180

181181
<properties>
182+
<DB_TYPE>MYSQL</DB_TYPE>
182183
<jdbcdriver.groupId>com.mysql</jdbcdriver.groupId>
183184
<jdbcdriver.artifactId>mysql-connector-j</jdbcdriver.artifactId>
184185
</properties>
@@ -188,6 +189,7 @@ under the License.
188189
<id>mariadb</id>
189190

190191
<properties>
192+
<DB_TYPE>MARIADB</DB_TYPE>
191193
<jdbcdriver.groupId>org.mariadb.jdbc</jdbcdriver.groupId>
192194
<jdbcdriver.artifactId>mariadb-java-client</jdbcdriver.artifactId>
193195
</properties>
@@ -197,6 +199,7 @@ under the License.
197199
<id>oracle</id>
198200

199201
<properties>
202+
<DB_TYPE>ORACLE</DB_TYPE>
200203
<jdbcdriver.groupId>com.oracle.database.jdbc</jdbcdriver.groupId>
201204
<jdbcdriver.artifactId>ojdbc11</jdbcdriver.artifactId>
202205
</properties>

core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/MariaDBPersistenceContext.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,15 @@
3535
import org.apache.syncope.core.persistence.jpa.dao.repo.MariaDBPlainSchemaRepoExtImpl;
3636
import org.apache.syncope.core.persistence.jpa.dao.repo.PlainSchemaRepoExt;
3737
import org.apache.syncope.core.persistence.jpa.entity.MariaDBEntityFactory;
38-
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
3938
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
39+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
4040
import org.springframework.context.annotation.Bean;
4141
import org.springframework.context.annotation.Configuration;
4242
import org.springframework.context.annotation.Lazy;
4343

4444
@Configuration(proxyBeanMethods = false)
45-
@ConditionalOnClass(name = "org.mariadb.jdbc.Driver")
45+
@ConditionalOnProperty(
46+
prefix = PersistenceProperties.PREFIX, name = PersistenceProperties.DB_TYPE, havingValue = "MARIADB")
4647
public class MariaDBPersistenceContext {
4748

4849
@ConditionalOnMissingBean

core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/MySQLPersistenceContext.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,15 @@
3535
import org.apache.syncope.core.persistence.jpa.dao.repo.MySQLPlainSchemaRepoExtImpl;
3636
import org.apache.syncope.core.persistence.jpa.dao.repo.PlainSchemaRepoExt;
3737
import org.apache.syncope.core.persistence.jpa.entity.MySQLEntityFactory;
38-
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
3938
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
39+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
4040
import org.springframework.context.annotation.Bean;
4141
import org.springframework.context.annotation.Configuration;
4242
import org.springframework.context.annotation.Lazy;
4343

4444
@Configuration(proxyBeanMethods = false)
45-
@ConditionalOnClass(name = "com.mysql.cj.jdbc.Driver")
45+
@ConditionalOnProperty(
46+
prefix = PersistenceProperties.PREFIX, name = PersistenceProperties.DB_TYPE, havingValue = "MYSQL")
4647
public class MySQLPersistenceContext {
4748

4849
@ConditionalOnMissingBean

core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/OraclePersistenceContext.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,15 @@
3535
import org.apache.syncope.core.persistence.jpa.dao.repo.OraclePlainSchemaRepoExtImpl;
3636
import org.apache.syncope.core.persistence.jpa.dao.repo.PlainSchemaRepoExt;
3737
import org.apache.syncope.core.persistence.jpa.entity.OracleEntityFactory;
38-
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
3938
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
39+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
4040
import org.springframework.context.annotation.Bean;
4141
import org.springframework.context.annotation.Configuration;
4242
import org.springframework.context.annotation.Lazy;
4343

4444
@Configuration(proxyBeanMethods = false)
45-
@ConditionalOnClass(name = "oracle.jdbc.OracleDriver")
45+
@ConditionalOnProperty(
46+
prefix = PersistenceProperties.PREFIX, name = PersistenceProperties.DB_TYPE, havingValue = "ORACLE")
4647
public class OraclePersistenceContext {
4748

4849
@ConditionalOnMissingBean

core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/PGPersistenceContext.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,16 @@
3535
import org.apache.syncope.core.persistence.jpa.dao.repo.PGPlainSchemaRepoExtImpl;
3636
import org.apache.syncope.core.persistence.jpa.dao.repo.PlainSchemaRepoExt;
3737
import org.apache.syncope.core.persistence.jpa.entity.PGEntityFactory;
38-
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
3938
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
39+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
4040
import org.springframework.context.annotation.Bean;
4141
import org.springframework.context.annotation.Configuration;
4242
import org.springframework.context.annotation.Lazy;
4343

4444
@Configuration(proxyBeanMethods = false)
45-
@ConditionalOnClass(name = "org.postgresql.Driver")
45+
@ConditionalOnProperty(
46+
prefix = PersistenceProperties.PREFIX, name = PersistenceProperties.DB_TYPE, havingValue = "POSTGRESQL",
47+
matchIfMissing = true)
4648
public class PGPersistenceContext {
4749

4850
@ConditionalOnMissingBean

core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/PersistenceProperties.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,13 @@
2121
import org.apache.syncope.core.persistence.common.AbstractPersistenceProperties;
2222
import org.springframework.boot.context.properties.ConfigurationProperties;
2323

24-
@ConfigurationProperties("persistence")
24+
@ConfigurationProperties(PersistenceProperties.PREFIX)
2525
public class PersistenceProperties extends AbstractPersistenceProperties<DomainProperties> {
2626

27+
public static final String PREFIX = "persistence";
28+
29+
public static final String DB_TYPE = "db-type";
30+
2731
private String remoteCommitProvider = "sjvm";
2832

2933
private String metaDataFactory;

core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/AbstractTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,14 @@
3434
import org.springframework.jdbc.core.JdbcTemplate;
3535
import org.springframework.test.context.DynamicPropertyRegistry;
3636
import org.springframework.test.context.DynamicPropertySource;
37+
import org.springframework.test.context.TestPropertySource;
3738
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
3839
import org.testcontainers.containers.MariaDBContainer;
3940
import org.testcontainers.containers.MySQLContainer;
4041
import org.testcontainers.oracle.OracleContainer;
4142

4243
@SpringJUnitConfig(classes = { MasterDomain.class, PersistenceTestContext.class })
44+
@TestPropertySource("classpath:core-test.properties")
4345
public abstract class AbstractTest {
4446

4547
private static String JDBC_DRIVER;

core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/PersistenceTestContext.java

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@
1919
package org.apache.syncope.core.persistence.jpa;
2020

2121
import jakarta.persistence.EntityManagerFactory;
22-
import java.util.ArrayList;
23-
import java.util.List;
2422
import javax.sql.DataSource;
2523
import org.apache.syncope.common.keymaster.client.api.ConfParamOps;
2624
import org.apache.syncope.common.keymaster.client.api.DomainOps;
@@ -42,9 +40,6 @@
4240
import org.springframework.context.annotation.Bean;
4341
import org.springframework.context.annotation.Configuration;
4442
import org.springframework.context.annotation.Import;
45-
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
46-
import org.springframework.core.io.DefaultResourceLoader;
47-
import org.springframework.core.io.Resource;
4843
import org.springframework.jndi.JndiObjectFactoryBean;
4944

5045
@Import({
@@ -59,21 +54,6 @@ public class PersistenceTestContext {
5954

6055
public static final ThreadLocal<String> TEST_DOMAIN = ThreadLocal.withInitial(() -> SyncopeConstants.MASTER_DOMAIN);
6156

62-
@Bean
63-
public static PropertySourcesPlaceholderConfigurer propertyPlaceholderConfigurer() {
64-
PropertySourcesPlaceholderConfigurer ppc = new PropertySourcesPlaceholderConfigurer();
65-
66-
DefaultResourceLoader resourceLoader = new DefaultResourceLoader();
67-
68-
List<Resource> locations = new ArrayList<>();
69-
for (String location : System.getProperty("CORE_PROPERTIES").split(",")) {
70-
locations.add(resourceLoader.getResource(location));
71-
}
72-
ppc.setLocations(locations.toArray(Resource[]::new));
73-
74-
return ppc;
75-
}
76-
7757
@Value("${security.adminUser}")
7858
private String adminUser;
7959

core/persistence-jpa/src/test/resources/core-test.properties

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ security.anonymousUser=${anonymousUser}
2020
security.jwsKey=${jwsKey}
2121
security.secretKey=${secretKey}
2222

23+
persistence.db-type=${DB_TYPE}
24+
2325
persistence.indexesXML=${INDEXES}
2426
persistence.viewsXML=${VIEWS}
2527

core/persistence-jpa/src/test/resources/simplelogger.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,4 @@ org.slf4j.simpleLogger.defaultLogLevel=debug
2323
org.slf4j.simpleLogger.log.org.springframework.jdbc.core.JdbcTemplate=error
2424
org.slf4j.simpleLogger.log.org.springframework.jdbc.datasource.DataSourceUtils=error
2525
org.slf4j.simpleLogger.log.com.github.dockerjava.zerodep.shaded=error
26+
org.slf4j.simpleLogger.log.org.testcontainers=error

0 commit comments

Comments
 (0)