From 4a8d17c84c7eee0cc84173f2210ef060a961875e Mon Sep 17 00:00:00 2001 From: Vincent Massol <vincent@massol.net> Date: Tue, 26 May 2020 12:10:50 +0200 Subject: [PATCH] XWIKI-17360: Add support for MariaDB XWIKI-17361: Add MariaDB configuration in hibernate config file --- pom.xml | 5 +++ .../xwiki-platform-test-docker/pom.xml | 13 +++++--- .../junit5/ConfigurationFilesGenerator.java | 12 +++++++ xwiki-platform-distribution/pom.xml | 17 ++++++++++ .../src/main/resources/hibernate.cfg.xml.vm | 32 ++++++++++++++++++- 5 files changed, 74 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 0473bb9f0fd..ff865eef30a 100644 --- a/pom.xml +++ b/pom.xml @@ -94,12 +94,17 @@ <mysql.groupId>mysql</mysql.groupId> <mysql.artifactId>mysql-connector-java</mysql.artifactId> <mysql.version>5.1.48</mysql.version> + <mariadb.groupId>org.mariadb.jdbc</mariadb.groupId> + <mariadb.artifactId>mariadb-java-client</mariadb.artifactId> + <mariadb.version>2.6.0</mariadb.version> <derby.groupId>org.apache.derby</derby.groupId> <derby.artifactId>derby</derby.artifactId> <derby.version>10.14.2.0</derby.version> <pgsql.groupId>org.postgresql</pgsql.groupId> <pgsql.artifactId>postgresql</pgsql.artifactId> <pgsql.version>42.2.12</pgsql.version> + <oracle.groupId>com.oracle.ojdbc</oracle.groupId> + <oracle.artifactId>ojdbc8</oracle.artifactId> <oracle.version>19.3.0.0</oracle.version> <mariadb.version>2.3.0</mariadb.version> diff --git a/xwiki-platform-core/xwiki-platform-test/xwiki-platform-test-docker/pom.xml b/xwiki-platform-core/xwiki-platform-test/xwiki-platform-test-docker/pom.xml index 475fc2effac..3345f095760 100644 --- a/xwiki-platform-core/xwiki-platform-test/xwiki-platform-test-docker/pom.xml +++ b/xwiki-platform-core/xwiki-platform-test/xwiki-platform-test-docker/pom.xml @@ -92,13 +92,18 @@ </dependency> <!-- Needed by TestContainers, to verify that the DBs are started --> <dependency> - <groupId>mysql</groupId> - <artifactId>mysql-connector-java</artifactId> + <groupId>${mysql.groupId}</groupId> + <artifactId>${mysql.artifactId}</artifactId> <version>${mysql.version}</version> </dependency> <dependency> - <groupId>com.oracle.ojdbc</groupId> - <artifactId>ojdbc8</artifactId> + <groupId>${mariadb.groupId}</groupId> + <artifactId>${mariadb.artifactId}</artifactId> + <version>${mariadb.version}</version> + </dependency> + <dependency> + <groupId>${oracle.groupId}</groupId> + <artifactId>${oracle.artifactId}</artifactId> <version>${oracle.version}</version> </dependency> <!-- Dependencies for WARBuilder --> diff --git a/xwiki-platform-core/xwiki-platform-test/xwiki-platform-test-docker/src/main/java/org/xwiki/test/docker/internal/junit5/ConfigurationFilesGenerator.java b/xwiki-platform-core/xwiki-platform-test/xwiki-platform-test-docker/src/main/java/org/xwiki/test/docker/internal/junit5/ConfigurationFilesGenerator.java index d89058082fd..3f1a8bbfef3 100644 --- a/xwiki-platform-core/xwiki-platform-test/xwiki-platform-test-docker/src/main/java/org/xwiki/test/docker/internal/junit5/ConfigurationFilesGenerator.java +++ b/xwiki-platform-core/xwiki-platform-test/xwiki-platform-test-docker/src/main/java/org/xwiki/test/docker/internal/junit5/ConfigurationFilesGenerator.java @@ -207,6 +207,18 @@ private Properties getDatabaseConfigurationProperties() null, null, null))); + } else if (this.testConfiguration.getDatabase().equals(Database.MARIADB)) { + props.putAll(getDBProperties(Arrays.asList( + "mariadb", + String.format("jdbc:mariadb://%s:%s/xwiki?useSSL=false", ipAddress, port), + DB_USERNAME, + DB_PASSWORD, + "org.mariadb.jdbc.Driver", + null, + null, + null, + null))); + } else if (this.testConfiguration.getDatabase().equals(Database.POSTGRESQL)) { props.putAll(getDBProperties(Arrays.asList( "pgsql", diff --git a/xwiki-platform-distribution/pom.xml b/xwiki-platform-distribution/pom.xml index 3cd4a99321e..998ad24473b 100644 --- a/xwiki-platform-distribution/pom.xml +++ b/xwiki-platform-distribution/pom.xml @@ -74,6 +74,7 @@ <xwiki.db.default.extraMappings>mailsender.hbm.xml</xwiki.db.default.extraMappings> <xwiki.db.oracle.extraMappings>mailsender.oracle.hbm.xml</xwiki.db.oracle.extraMappings> <xwiki.db.mysql.extraMappings>mailsender.hbm.xml</xwiki.db.mysql.extraMappings> + <xwiki.db.mariadb.extraMappings>mailsender.hbm.xml</xwiki.db.mariadb.extraMappings> <xwiki.db.hsqldb.extraMappings>mailsender.hbm.xml</xwiki.db.hsqldb.extraMappings> <xwiki.db.pgsql.extraMappings>mailsender.hbm.xml</xwiki.db.pgsql.extraMappings> <xwiki.db.derby.extraMappings>mailsender.hbm.xml</xwiki.db.derby.extraMappings> @@ -294,6 +295,7 @@ <xwikiDbHbmDefaultExtraMappings>${xwiki.db.default.extraMappings}</xwikiDbHbmDefaultExtraMappings> <xwikiDbHbmHSQLDBExtraMappings>${xwiki.db.hsqldb.extraMappings}</xwikiDbHbmHSQLDBExtraMappings> <xwikiDbHbmMySQLExtraMappings>${xwiki.db.mysql.extraMappings}</xwikiDbHbmMySQLExtraMappings> + <xwikiDbHbmMariaDBExtraMappings>${xwiki.db.mariadb.extraMappings}</xwikiDbHbmMariaDBExtraMappings> <xwikiDbHbmPostgreSQLExtraMappings>${xwiki.db.pgsql.extraMappings}</xwikiDbHbmPostgreSQLExtraMappings> <xwikiDbHbmOracleExtraMappings>${xwiki.db.oracle.extraMappings}</xwikiDbHbmOracleExtraMappings> <xwikiDbHbmDerbyExtraMappings>${xwiki.db.derby.extraMappings}</xwikiDbHbmDerbyExtraMappings> @@ -545,6 +547,21 @@ <xwiki.db.hbm.feeds>feeds.hbm.xml</xwiki.db.hbm.feeds> </properties> </profile> + <profile> + <id>mariadb</id> + <properties> + <xwiki.db>mariadb</xwiki.db> + <xwiki.db.jdbc.groupId>${mariadb.groupId}</xwiki.db.jdbc.groupId> + <xwiki.db.jdbc.artifactId>${mariadb.artifactId}</xwiki.db.jdbc.artifactId> + <xwiki.db.jdbc.version>${mariadb.version}</xwiki.db.jdbc.version> + <xwiki.db.connection.url>jdbc:mariadb://localhost/xwiki?useSSL=false</xwiki.db.connection.url> + <xwiki.db.connection.username>xwiki</xwiki.db.connection.username> + <xwiki.db.connection.password>xwiki</xwiki.db.connection.password> + <xwiki.db.connection.driver_class>org.mariadb.jdbc.Driver</xwiki.db.connection.driver_class> + <xwiki.db.hbm.xwiki>xwiki.hbm.xml</xwiki.db.hbm.xwiki> + <xwiki.db.hbm.feeds>feeds.hbm.xml</xwiki.db.hbm.feeds> + </properties> + </profile> <profile> <id>pgsql</id> <properties> diff --git a/xwiki-platform-tools/xwiki-platform-tool-configuration-resources/src/main/resources/hibernate.cfg.xml.vm b/xwiki-platform-tools/xwiki-platform-tool-configuration-resources/src/main/resources/hibernate.cfg.xml.vm index e7ef95f74a0..43cfd9e9c29 100644 --- a/xwiki-platform-tools/xwiki-platform-tool-configuration-resources/src/main/resources/hibernate.cfg.xml.vm +++ b/xwiki-platform-tools/xwiki-platform-tool-configuration-resources/src/main/resources/hibernate.cfg.xml.vm @@ -112,7 +112,7 @@ <property name="hibernate.dialect">$xwikiDbDialect</property> #end ## Note: This is starting the line in order not to put extra spaces when generated -#if ($xwikiDb == 'mysql' || $xwikiDb == 'oracle') +#if ($xwikiDb == 'mysql' || $xwikiDb == 'mariadb'|| $xwikiDb == 'oracle') <property name="hibernate.dbcp.poolPreparedStatements">true</property> <property name="hibernate.dbcp.maxOpenPreparedStatements">20</property> #end @@ -176,6 +176,36 @@ #end --> + <!-- MariaDB configuration. + Uncomment if you want to use MariaDB and comment out other database configurations. + Notes: + - if you want the main wiki database to be different than "xwiki" + you will also have to set the property xwiki.db in xwiki.cfg file + + <property name="hibernate.connection.url">jdbc:mariadb://localhost/xwiki?useSSL=false</property> + <property name="hibernate.connection.username">xwiki</property> + <property name="hibernate.connection.password">xwiki</property> + <property name="hibernate.connection.driver_class">org.mariadb.jdbc.Driver</property> + <property name="hibernate.dialect">org.hibernate.dialect.MariaDBDialect</property> + <property name="hibernate.dbcp.poolPreparedStatements">true</property> + <property name="hibernate.dbcp.maxOpenPreparedStatements">20</property> + + <property name="hibernate.connection.charSet">UTF-8</property> + <property name="hibernate.connection.useUnicode">true</property> + <property name="hibernate.connection.characterEncoding">utf8</property> + + <mapping resource="xwiki.hbm.xml"/> + <mapping resource="feeds.hbm.xml"/> +## Note: This is starting the line in order not to put extra spaces when generated +#foreach($mapping in $!xwikiDbHbmCommonExtraMappings.split(",")) + <mapping resource="$mapping"/> +#end +## Note: This is starting the line in order not to put extra spaces when generated +#foreach($mapping in $!xwikiDbHbmMariaDBExtraMappings.split(",")) + <mapping resource="$mapping"/> +#end + --> + <!-- HSQLDB configuration. Uncomment if you want to use HSQLDB and comment out other database configurations. Notes: -- GitLab