Repository: syncope Updated Branches: refs/heads/1_2_X 9aa765b25 -> 3967cfad9
[SYNCOPE-633] added MariaDB support Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/3967cfad Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/3967cfad Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/3967cfad Branch: refs/heads/1_2_X Commit: 3967cfad94505961cbd872298de42070caff676f Parents: 9aa765b Author: fmartelli <[email protected]> Authored: Fri Jan 30 16:28:12 2015 +0100 Committer: fmartelli <[email protected]> Committed: Fri Jan 30 16:28:12 2015 +0100 ---------------------------------------------------------------------- core/pom.xml | 38 ++++ .../main/resources/quartz/tables_mariadb.sql | 206 +++++++++++++++++++ .../core/rest/ConfigurationTestITCase.java | 8 +- .../resources/mariadb/persistence.properties | 28 +++ pom.xml | 1 + 5 files changed, 277 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/3967cfad/core/pom.xml ---------------------------------------------------------------------- diff --git a/core/pom.xml b/core/pom.xml index 4b13eab..3fa0e26 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -691,6 +691,7 @@ under the License. <exclude>oracle/**</exclude> <exclude>postgres/**</exclude> <exclude>mysql/**</exclude> + <exclude>mariadb/**</exclude> <exclude>sqlserver/**</exclude> <exclude>jboss/**</exclude> <exclude>weblogic/**</exclude> @@ -1155,6 +1156,43 @@ under the License. </profile> <profile> + <id>mariadb-it</id> + + <properties> + <jdbcdriver.groupId>org.mariadb.jdbc</jdbcdriver.groupId> + <jdbcdriver.artifactId>mariadb-java-client</jdbcdriver.artifactId> + <jdbcdriver.version>1.1.7</jdbcdriver.version> + </properties> + + <dependencies> + <dependency> + <groupId>${jdbcdriver.groupId}</groupId> + <artifactId>${jdbcdriver.artifactId}</artifactId> + <version>${jdbcdriver.version}</version> + <scope>test</scope> + </dependency> + </dependencies> + + <build> + <defaultGoal>clean verify</defaultGoal> + + <testResources> + <testResource> + <directory>src/test/resources</directory> + <filtering>true</filtering> + <excludes> + <exclude>persistence.properties</exclude> + </excludes> + </testResource> + <testResource> + <directory>src/test/resources/mariadb</directory> + <filtering>true</filtering> + </testResource> + </testResources> + </build> + </profile> + + <profile> <id>glassfish-it</id> <dependencies> http://git-wip-us.apache.org/repos/asf/syncope/blob/3967cfad/core/src/main/resources/quartz/tables_mariadb.sql ---------------------------------------------------------------------- diff --git a/core/src/main/resources/quartz/tables_mariadb.sql b/core/src/main/resources/quartz/tables_mariadb.sql new file mode 100644 index 0000000..ebb8e59 --- /dev/null +++ b/core/src/main/resources/quartz/tables_mariadb.sql @@ -0,0 +1,206 @@ +-- Licensed to the Apache Software Foundation (ASF) under one +-- or more contributor license agreements. See the NOTICE file +-- distributed with this work for additional information +-- regarding copyright ownership. The ASF licenses this file +-- to you under the Apache License, Version 2.0 (the +-- "License"); you may not use this file except in compliance +-- with the License. You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, +-- software distributed under the License is distributed on an +-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +-- KIND, either express or implied. See the License for the +-- specific language governing permissions and limitations +-- under the License. + +-- +-- Quartz seems to work best with the driver mm.mysql-2.0.7-bin.jar +-- +-- PLEASE consider using mysql with innodb tables to avoid locking issues +-- +-- In your Quartz properties file, you'll need to set +-- org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate +-- + +BEGIN; +DROP TABLE IF EXISTS QRTZ_FIRED_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS; +DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE; +DROP TABLE IF EXISTS QRTZ_LOCKS; +DROP TABLE IF EXISTS QRTZ_SIMPLE_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_SIMPROP_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_CRON_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_BLOB_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_JOB_DETAILS; +DROP TABLE IF EXISTS QRTZ_CALENDARS; +COMMIT; + + +BEGIN; +CREATE TABLE QRTZ_JOB_DETAILS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + JOB_NAME VARCHAR(200) NOT NULL, + JOB_GROUP VARCHAR(200) NOT NULL, + DESCRIPTION VARCHAR(250) NULL, + JOB_CLASS_NAME VARCHAR(250) NOT NULL, + IS_DURABLE VARCHAR(1) NOT NULL, + IS_NONCONCURRENT VARCHAR(1) NOT NULL, + IS_UPDATE_DATA VARCHAR(1) NOT NULL, + REQUESTS_RECOVERY VARCHAR(1) NOT NULL, + JOB_DATA BLOB NULL, + PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) +); +COMMIT; + +BEGIN; +CREATE TABLE QRTZ_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + JOB_NAME VARCHAR(200) NOT NULL, + JOB_GROUP VARCHAR(200) NOT NULL, + DESCRIPTION VARCHAR(250) NULL, + NEXT_FIRE_TIME BIGINT(13) NULL, + PREV_FIRE_TIME BIGINT(13) NULL, + PRIORITY INTEGER NULL, + TRIGGER_STATE VARCHAR(16) NOT NULL, + TRIGGER_TYPE VARCHAR(8) NOT NULL, + START_TIME BIGINT(13) NOT NULL, + END_TIME BIGINT(13) NULL, + CALENDAR_NAME VARCHAR(200) NULL, + MISFIRE_INSTR SMALLINT(2) NULL, + JOB_DATA BLOB NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) + REFERENCES QRTZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP) +); +COMMIT; + +BEGIN; +CREATE TABLE QRTZ_SIMPLE_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + REPEAT_COUNT BIGINT(7) NOT NULL, + REPEAT_INTERVAL BIGINT(12) NOT NULL, + TIMES_TRIGGERED BIGINT(10) NOT NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); +COMMIT; + +BEGIN; +CREATE TABLE QRTZ_CRON_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + CRON_EXPRESSION VARCHAR(200) NOT NULL, + TIME_ZONE_ID VARCHAR(80), + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); +COMMIT; + +BEGIN; +CREATE TABLE QRTZ_SIMPROP_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + STR_PROP_1 VARCHAR(512) NULL, + STR_PROP_2 VARCHAR(512) NULL, + STR_PROP_3 VARCHAR(512) NULL, + INT_PROP_1 INT NULL, + INT_PROP_2 INT NULL, + LONG_PROP_1 BIGINT NULL, + LONG_PROP_2 BIGINT NULL, + DEC_PROP_1 NUMERIC(13,4) NULL, + DEC_PROP_2 NUMERIC(13,4) NULL, + BOOL_PROP_1 VARCHAR(1) NULL, + BOOL_PROP_2 VARCHAR(1) NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); +COMMIT; + +BEGIN; +CREATE TABLE QRTZ_BLOB_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + BLOB_DATA BLOB NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); +COMMIT; + +BEGIN; +CREATE TABLE QRTZ_CALENDARS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + CALENDAR_NAME VARCHAR(200) NOT NULL, + CALENDAR BLOB NOT NULL, + PRIMARY KEY (SCHED_NAME,CALENDAR_NAME) +); +COMMIT; + +BEGIN; +CREATE TABLE QRTZ_PAUSED_TRIGGER_GRPS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP) +); +COMMIT; + +BEGIN; +CREATE TABLE QRTZ_FIRED_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + ENTRY_ID VARCHAR(95) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + INSTANCE_NAME VARCHAR(200) NOT NULL, + FIRED_TIME BIGINT(13) NOT NULL, + SCHED_TIME BIGINT(13) NOT NULL, + PRIORITY INTEGER NOT NULL, + STATE VARCHAR(16) NOT NULL, + JOB_NAME VARCHAR(200) NULL, + JOB_GROUP VARCHAR(200) NULL, + IS_NONCONCURRENT VARCHAR(1) NULL, + REQUESTS_RECOVERY VARCHAR(1) NULL, + PRIMARY KEY (SCHED_NAME,ENTRY_ID) +); +COMMIT; + +BEGIN; +CREATE TABLE QRTZ_SCHEDULER_STATE + ( + SCHED_NAME VARCHAR(120) NOT NULL, + INSTANCE_NAME VARCHAR(200) NOT NULL, + LAST_CHECKIN_TIME BIGINT(13) NOT NULL, + CHECKIN_INTERVAL BIGINT(13) NOT NULL, + PRIMARY KEY (SCHED_NAME,INSTANCE_NAME) +); +COMMIT; + +BEGIN; +CREATE TABLE QRTZ_LOCKS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + LOCK_NAME VARCHAR(40) NOT NULL, + PRIMARY KEY (SCHED_NAME,LOCK_NAME) +); +COMMIT; http://git-wip-us.apache.org/repos/asf/syncope/blob/3967cfad/core/src/test/java/org/apache/syncope/core/rest/ConfigurationTestITCase.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/syncope/core/rest/ConfigurationTestITCase.java b/core/src/test/java/org/apache/syncope/core/rest/ConfigurationTestITCase.java index 1f981ac..d81afb7 100644 --- a/core/src/test/java/org/apache/syncope/core/rest/ConfigurationTestITCase.java +++ b/core/src/test/java/org/apache/syncope/core/rest/ConfigurationTestITCase.java @@ -195,19 +195,19 @@ public class ConfigurationTestITCase extends AbstractTest { assertFalse(configExport.isEmpty()); assertTrue(configExport.length() > 1000); - String[] result = StringUtils.substringsBetween(configExport, "<RATTRTEMPLATE", "/>"); + String[] result = StringUtils.substringsBetween(configExport.toUpperCase(), "<RATTRTEMPLATE", "/>"); boolean rattrExists = false; for (String entry : result) { - if (entry.contains(roleKey.getName())) { + if (entry.contains(roleKey.getName().toUpperCase())) { rattrExists = true; } } assertTrue(rattrExists); - result = StringUtils.substringsBetween(configExport, "<MATTRTEMPLATE", "/>"); + result = StringUtils.substringsBetween(configExport.toUpperCase(), "<MATTRTEMPLATE", "/>"); boolean mattrExists = false; for (String entry : result) { - if (entry.contains(membershipKey.getName())) { + if (entry.contains(membershipKey.getName().toUpperCase())) { mattrExists = true; } } http://git-wip-us.apache.org/repos/asf/syncope/blob/3967cfad/core/src/test/resources/mariadb/persistence.properties ---------------------------------------------------------------------- diff --git a/core/src/test/resources/mariadb/persistence.properties b/core/src/test/resources/mariadb/persistence.properties new file mode 100644 index 0000000..8713629 --- /dev/null +++ b/core/src/test/resources/mariadb/persistence.properties @@ -0,0 +1,28 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +jpa.driverClassName=org.mariadb.jdbc.Driver +jpa.url=jdbc:mariadb://localhost:3306/syncope?characterEncoding=UTF-8 +jpa.username=syncope +jpa.password=syncope +jpa.dialect=org.apache.openjpa.jdbc.sql.MariaDBDictionary +jpa.pool.validationQuery=SELECT 1 +#note: other connection pool settings can also be configured here, see persistenceContext.xml +quartz.jobstore=org.quartz.impl.jdbcjobstore.StdJDBCDelegate +quartz.scheduler.idleWaitTime=5000 +quartz.sql=tables_mariadb.sql +audit.sql=audit.sql +database.schema= http://git-wip-us.apache.org/repos/asf/syncope/blob/3967cfad/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index 3b805c1..2d3f6c9 100644 --- a/pom.xml +++ b/pom.xml @@ -1410,6 +1410,7 @@ under the License. <exclude>**/.*</exclude> <exclude>**/deb/control/conffiles</exclude> <exclude>**/deb/control/control</exclude> + <exclude>**/*.lst</exclude> </excludes> </configuration> <executions>
