You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2015/08/02 07:45:18 UTC
[04/15] syncope git commit: [SYNCOPE-652] Still several things to
refine, but it starts taking shape
http://git-wip-us.apache.org/repos/asf/syncope/blob/34a1c214/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/SyncJobDelegate.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/SyncJobDelegate.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/SyncJobDelegate.java
new file mode 100644
index 0000000..245a74a
--- /dev/null
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/SyncJobDelegate.java
@@ -0,0 +1,221 @@
+/*
+ * 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.
+ */
+package org.apache.syncope.core.provisioning.java.sync;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.common.lib.types.SyncPolicySpec;
+import org.apache.syncope.core.misc.spring.ApplicationContextProvider;
+import org.apache.syncope.core.persistence.api.dao.GroupDAO;
+import org.apache.syncope.core.persistence.api.dao.NotFoundException;
+import org.apache.syncope.core.persistence.api.dao.UserDAO;
+import org.apache.syncope.core.persistence.api.entity.group.Group;
+import org.apache.syncope.core.persistence.api.entity.resource.Provision;
+import org.apache.syncope.core.persistence.api.entity.task.ProvisioningTask;
+import org.apache.syncope.core.persistence.api.entity.task.SyncTask;
+import org.apache.syncope.core.provisioning.api.Connector;
+import org.apache.syncope.core.provisioning.api.sync.AnyObjectSyncResultHandler;
+import org.apache.syncope.core.provisioning.api.sync.GroupSyncResultHandler;
+import org.apache.syncope.core.provisioning.api.sync.ProvisioningProfile;
+import org.apache.syncope.core.provisioning.api.sync.SyncActions;
+import org.apache.syncope.core.provisioning.api.sync.UserSyncResultHandler;
+import org.identityconnectors.framework.common.objects.SyncResultsHandler;
+import org.identityconnectors.framework.common.objects.SyncToken;
+import org.quartz.JobExecutionException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.support.AbstractBeanDefinition;
+
+public class SyncJobDelegate extends AbstractProvisioningJobDelegate<SyncTask> {
+
+ @Autowired
+ private UserDAO userDAO;
+
+ @Autowired
+ private GroupDAO groupDAO;
+
+ @Autowired
+ protected SyncUtils syncUtils;
+
+ protected void setGroupOwners(final GroupSyncResultHandler ghandler) {
+ for (Map.Entry<Long, String> entry : ghandler.getGroupOwnerMap().entrySet()) {
+ Group group = groupDAO.find(entry.getKey());
+ if (group == null) {
+ throw new NotFoundException("Group " + entry.getKey());
+ }
+
+ if (StringUtils.isBlank(entry.getValue())) {
+ group.setGroupOwner(null);
+ group.setUserOwner(null);
+ } else {
+ Long userKey = syncUtils.findMatchingAnyKey(
+ anyTypeDAO.findUser(),
+ entry.getValue(),
+ ghandler.getProfile().getTask().getResource(),
+ ghandler.getProfile().getConnector());
+
+ if (userKey == null) {
+ Long groupKey = syncUtils.findMatchingAnyKey(
+ anyTypeDAO.findGroup(),
+ entry.getValue(),
+ ghandler.getProfile().getTask().getResource(),
+ ghandler.getProfile().getConnector());
+
+ if (groupKey != null) {
+ group.setGroupOwner(groupDAO.find(groupKey));
+ }
+ } else {
+ group.setUserOwner(userDAO.find(userKey));
+ }
+ }
+
+ groupDAO.save(group);
+ }
+ }
+
+ @Override
+ protected String doExecuteProvisioning(
+ final SyncTask syncTask,
+ final Connector connector,
+ final boolean dryRun) throws JobExecutionException {
+
+ LOG.debug("Executing sync on {}", syncTask.getResource());
+
+ List<SyncActions> actions = new ArrayList<>();
+ for (String className : syncTask.getActionsClassNames()) {
+ try {
+ Class<?> actionsClass = Class.forName(className);
+ SyncActions syncActions = (SyncActions) ApplicationContextProvider.getBeanFactory().
+ createBean(actionsClass, AbstractBeanDefinition.AUTOWIRE_BY_TYPE, true);
+
+ actions.add(syncActions);
+ } catch (Exception e) {
+ LOG.info("Class '{}' not found", className, e);
+ }
+ }
+
+ ProvisioningProfile<SyncTask, SyncActions> profile = new ProvisioningProfile<>(connector, syncTask);
+ profile.getActions().addAll(actions);
+ profile.setDryRun(dryRun);
+ profile.setResAct(getSyncPolicySpec(syncTask).getConflictResolutionAction());
+
+ // Prepare handler for SyncDelta objects (any objects)
+ AnyObjectSyncResultHandler ahandler =
+ (AnyObjectSyncResultHandler) ApplicationContextProvider.getBeanFactory().
+ createBean(AnyObjectSyncResultHandlerImpl.class, AbstractBeanDefinition.AUTOWIRE_BY_NAME, false);
+ ahandler.setProfile(profile);
+
+ // Prepare handler for SyncDelta objects (users)
+ UserSyncResultHandler uhandler =
+ (UserSyncResultHandler) ApplicationContextProvider.getBeanFactory().
+ createBean(UserSyncResultHandlerImpl.class, AbstractBeanDefinition.AUTOWIRE_BY_NAME, false);
+ uhandler.setProfile(profile);
+
+ // Prepare handler for SyncDelta objects (groups)
+ GroupSyncResultHandler ghandler =
+ (GroupSyncResultHandler) ApplicationContextProvider.getBeanFactory().
+ createBean(GroupSyncResultHandlerImpl.class, AbstractBeanDefinition.AUTOWIRE_BY_NAME, false);
+ ghandler.setProfile(profile);
+
+ if (!profile.isDryRun()) {
+ for (SyncActions action : actions) {
+ action.beforeAll(profile);
+ }
+ }
+
+ for (Provision provision : syncTask.getResource().getProvisions()) {
+ if (provision.getMapping() != null) {
+ SyncResultsHandler handler;
+ switch (provision.getAnyType().getKind()) {
+ case USER:
+ handler = uhandler;
+ break;
+
+ case GROUP:
+ handler = ghandler;
+ break;
+
+ case ANY_OBJECT:
+ default:
+ handler = ahandler;
+ }
+
+ try {
+ SyncToken latestSyncToken = null;
+ if (!syncTask.isFullReconciliation()) {
+ latestSyncToken = connector.getLatestSyncToken(provision.getObjectClass());
+ }
+
+ if (syncTask.isFullReconciliation()) {
+ connector.getAllObjects(provision.getObjectClass(), handler,
+ connector.getOperationOptions(provision.getMapping().getItems()));
+ } else {
+ connector.sync(provision.getObjectClass(), provision.getSyncToken(), handler,
+ connector.getOperationOptions(provision.getMapping().getItems()));
+ }
+
+ if (!dryRun && !syncTask.isFullReconciliation()) {
+ try {
+ provision.setSyncToken(latestSyncToken);
+ resourceDAO.save(provision.getResource());
+ } catch (Exception e) {
+ throw new JobExecutionException("While updating SyncToken", e);
+ }
+ }
+ } catch (Throwable t) {
+ throw new JobExecutionException("While syncing on connector", t);
+ }
+ }
+ }
+
+ try {
+ setGroupOwners(ghandler);
+ } catch (Exception e) {
+ LOG.error("While setting group owners", e);
+ }
+
+ if (!profile.isDryRun()) {
+ for (SyncActions action : actions) {
+ action.afterAll(profile);
+ }
+ }
+
+ String result = createReport(profile.getResults(), syncTask.getResource().getSyncTraceLevel(), dryRun);
+
+ LOG.debug("Sync result: {}", result);
+
+ return result;
+ }
+
+ private SyncPolicySpec getSyncPolicySpec(final ProvisioningTask task) {
+ SyncPolicySpec syncPolicySpec;
+
+ if (task instanceof SyncTask) {
+ syncPolicySpec = task.getResource().getSyncPolicy() == null
+ ? null
+ : task.getResource().getSyncPolicy().getSpecification(SyncPolicySpec.class);
+ } else {
+ syncPolicySpec = null;
+ }
+
+ // step required because the call <policy>.getSpecification() could return a null value
+ return syncPolicySpec == null ? new SyncPolicySpec() : syncPolicySpec;
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/34a1c214/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/SyncJobImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/SyncJobImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/SyncJobImpl.java
deleted file mode 100644
index c52c3cf..0000000
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/SyncJobImpl.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * 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.
- */
-package org.apache.syncope.core.provisioning.java.sync;
-
-import java.util.Map;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.common.lib.mod.ReferenceMod;
-import org.apache.syncope.common.lib.mod.GroupMod;
-import org.apache.syncope.common.lib.types.SyncPolicySpec;
-import org.apache.syncope.core.persistence.api.entity.task.ProvisioningTask;
-import org.apache.syncope.core.persistence.api.entity.task.SyncTask;
-import org.apache.syncope.core.provisioning.api.Connector;
-import org.apache.syncope.core.provisioning.api.sync.ProvisioningProfile;
-import org.apache.syncope.core.provisioning.api.sync.SyncActions;
-import org.apache.syncope.core.misc.spring.ApplicationContextProvider;
-import org.apache.syncope.core.persistence.api.entity.resource.Provision;
-import org.apache.syncope.core.provisioning.api.job.SyncJob;
-import org.apache.syncope.core.provisioning.api.sync.AnyObjectSyncResultHandler;
-import org.apache.syncope.core.provisioning.api.sync.GroupSyncResultHandler;
-import org.apache.syncope.core.provisioning.api.sync.UserSyncResultHandler;
-import org.apache.syncope.core.workflow.api.GroupWorkflowAdapter;
-import org.identityconnectors.framework.common.objects.SyncResultsHandler;
-import org.identityconnectors.framework.common.objects.SyncToken;
-import org.quartz.JobExecutionException;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.support.AbstractBeanDefinition;
-
-/**
- * Job for executing synchronization (from external resource) tasks.
- *
- * @see AbstractProvisioningJob
- * @see SyncTask
- */
-public class SyncJobImpl extends AbstractProvisioningJob<SyncTask, SyncActions> implements SyncJob {
-
- /**
- * Group workflow adapter.
- */
- @Autowired
- private GroupWorkflowAdapter gwfAdapter;
-
- @Autowired
- protected SyncUtils syncUtils;
-
- protected void setGroupOwners(final GroupSyncResultHandler ghandler) {
- for (Map.Entry<Long, String> entry : ghandler.getGroupOwnerMap().entrySet()) {
- GroupMod groupMod = new GroupMod();
- groupMod.setKey(entry.getKey());
-
- if (StringUtils.isBlank(entry.getValue())) {
- groupMod.setGroupOwner(null);
- groupMod.setUserOwner(null);
- } else {
- Long userKey = syncUtils.findMatchingAnyKey(
- anyTypeDAO.findUser(),
- entry.getValue(),
- ghandler.getProfile().getTask().getResource(),
- ghandler.getProfile().getConnector());
-
- if (userKey == null) {
- Long groupKey = syncUtils.findMatchingAnyKey(
- anyTypeDAO.findGroup(),
- entry.getValue(),
- ghandler.getProfile().getTask().getResource(),
- ghandler.getProfile().getConnector());
-
- if (groupKey != null) {
- groupMod.setGroupOwner(new ReferenceMod(groupKey));
- }
- } else {
- groupMod.setUserOwner(new ReferenceMod(userKey));
- }
- }
-
- gwfAdapter.update(groupMod);
- }
- }
-
- @Override
- protected String executeWithSecurityContext(
- final SyncTask syncTask,
- final Connector connector,
- final boolean dryRun) throws JobExecutionException {
-
- LOG.debug("Executing sync on {}", syncTask.getResource());
-
- ProvisioningProfile<SyncTask, SyncActions> profile = new ProvisioningProfile<>(connector, syncTask);
- if (actions != null) {
- profile.getActions().addAll(actions);
- }
- profile.setDryRun(dryRun);
- profile.setResAct(getSyncPolicySpec(syncTask).getConflictResolutionAction());
-
- // Prepare handler for SyncDelta objects (any objects)
- AnyObjectSyncResultHandler ahandler =
- (AnyObjectSyncResultHandler) ApplicationContextProvider.getApplicationContext().getBeanFactory().
- createBean(AnyObjectSyncResultHandlerImpl.class, AbstractBeanDefinition.AUTOWIRE_BY_NAME, false);
- ahandler.setProfile(profile);
-
- // Prepare handler for SyncDelta objects (users)
- UserSyncResultHandler uhandler =
- (UserSyncResultHandler) ApplicationContextProvider.getApplicationContext().getBeanFactory().
- createBean(UserSyncResultHandlerImpl.class, AbstractBeanDefinition.AUTOWIRE_BY_NAME, false);
- uhandler.setProfile(profile);
-
- // Prepare handler for SyncDelta objects (groups)
- GroupSyncResultHandler ghandler =
- (GroupSyncResultHandler) ApplicationContextProvider.getApplicationContext().getBeanFactory().
- createBean(GroupSyncResultHandlerImpl.class, AbstractBeanDefinition.AUTOWIRE_BY_NAME, false);
- ghandler.setProfile(profile);
-
- if (actions != null && !profile.isDryRun()) {
- for (SyncActions action : actions) {
- action.beforeAll(profile);
- }
- }
-
- for (Provision provision : syncTask.getResource().getProvisions()) {
- if (provision.getMapping() != null) {
- SyncResultsHandler handler;
- switch (provision.getAnyType().getKind()) {
- case USER:
- handler = uhandler;
- break;
-
- case GROUP:
- handler = ghandler;
- break;
-
- case ANY_OBJECT:
- default:
- handler = ahandler;
- }
-
- try {
- SyncToken latestSyncToken = null;
- if (!syncTask.isFullReconciliation()) {
- latestSyncToken = connector.getLatestSyncToken(provision.getObjectClass());
- }
-
- if (syncTask.isFullReconciliation()) {
- connector.getAllObjects(provision.getObjectClass(), handler,
- connector.getOperationOptions(provision.getMapping().getItems()));
- } else {
- connector.sync(provision.getObjectClass(), provision.getSyncToken(), handler,
- connector.getOperationOptions(provision.getMapping().getItems()));
- }
-
- if (!dryRun && !syncTask.isFullReconciliation()) {
- try {
- provision.setSyncToken(latestSyncToken);
- resourceDAO.save(provision.getResource());
- } catch (Exception e) {
- throw new JobExecutionException("While updating SyncToken", e);
- }
- }
- } catch (Throwable t) {
- throw new JobExecutionException("While syncing on connector", t);
- }
- }
- }
-
- try {
- setGroupOwners(ghandler);
- } catch (Exception e) {
- LOG.error("While setting group owners", e);
- }
-
- if (actions != null && !profile.isDryRun()) {
- for (SyncActions action : actions) {
- action.afterAll(profile);
- }
- }
-
- String result = createReport(profile.getResults(), syncTask.getResource().getSyncTraceLevel(), dryRun);
-
- LOG.debug("Sync result: {}", result);
-
- return result;
- }
-
- private SyncPolicySpec getSyncPolicySpec(final ProvisioningTask task) {
- SyncPolicySpec syncPolicySpec;
-
- if (task instanceof SyncTask) {
- syncPolicySpec = task.getResource().getSyncPolicy() == null
- ? null
- : task.getResource().getSyncPolicy().getSpecification(SyncPolicySpec.class);
- } else {
- syncPolicySpec = null;
- }
-
- // step required because the call <policy>.getSpecification() could return a null value
- return syncPolicySpec == null ? new SyncPolicySpec() : syncPolicySpec;
- }
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/34a1c214/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/SyncUtils.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/SyncUtils.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/SyncUtils.java
index c3d11a9..dc5cdf0 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/SyncUtils.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/SyncUtils.java
@@ -64,7 +64,9 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+@Transactional(readOnly = true)
@Component
public class SyncUtils {
http://git-wip-us.apache.org/repos/asf/syncope/blob/34a1c214/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/UserSyncResultHandlerImpl.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/UserSyncResultHandlerImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/UserSyncResultHandlerImpl.java
index d5c41db..20a3673 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/UserSyncResultHandlerImpl.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/sync/UserSyncResultHandlerImpl.java
@@ -107,12 +107,11 @@ public class UserSyncResultHandlerImpl extends AbstractSyncResultHandler impleme
final Long key,
final boolean unlink) {
- taskExecutor.execute(
- propagationManager.getUserDeleteTasks(
- key, Collections.singleton(profile.getTask().getResource().getKey())));
+ taskExecutor.execute(propagationManager.getUserDeleteTasks(
+ key, Collections.singleton(profile.getTask().getResource().getKey())));
if (unlink) {
- final UserMod userMod = new UserMod();
+ UserMod userMod = new UserMod();
userMod.setKey(key);
userMod.getResourcesToRemove().add(profile.getTask().getResource().getKey());
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/34a1c214/core/provisioning-java/src/main/resources/provisioning.properties
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/resources/provisioning.properties b/core/provisioning-java/src/main/resources/provisioning.properties
index af1dd4b..59e5916 100644
--- a/core/provisioning-java/src/main/resources/provisioning.properties
+++ b/core/provisioning-java/src/main/resources/provisioning.properties
@@ -18,3 +18,6 @@ userProvisioningManager=org.apache.syncope.core.provisioning.java.DefaultUserPro
groupProvisioningManager=org.apache.syncope.core.provisioning.java.DefaultGroupProvisioningManager
anyObjectProvisioningManager=org.apache.syncope.core.provisioning.java.DefaultAnyObjectProvisioningManager
virAttrCache=org.apache.syncope.core.provisioning.java.cache.MemoryVirAttrCache
+
+quartz.jobstore=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
+quartz.sql=tables_postgres.sql
http://git-wip-us.apache.org/repos/asf/syncope/blob/34a1c214/core/provisioning-java/src/main/resources/provisioningContext.xml
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/resources/provisioningContext.xml b/core/provisioning-java/src/main/resources/provisioningContext.xml
index 32120f4..2f0f617 100644
--- a/core/provisioning-java/src/main/resources/provisioningContext.xml
+++ b/core/provisioning-java/src/main/resources/provisioningContext.xml
@@ -35,14 +35,33 @@ under the License.
<bean class="${groupProvisioningManager}"/>
<bean class="${anyObjectProvisioningManager}"/>
+ <bean id="quartzDataSourceInit" class="org.springframework.jdbc.datasource.init.DataSourceInitializer">
+ <property name="dataSource" ref="MasterDataSource"/>
+ <property name="enabled" value="true"/>
+ <property name="databasePopulator">
+ <bean class="org.springframework.jdbc.datasource.init.ResourceDatabasePopulator">
+ <property name="continueOnError" value="true"/>
+ <property name="ignoreFailedDrops" value="true"/>
+ <property name="sqlScriptEncoding" value="UTF-8"/>
+ <property name="scripts">
+ <array>
+ <value type="org.springframework.core.io.Resource">
+ classpath:/quartz/${quartz.sql}
+ </value>
+ </array>
+ </property>
+ </bean>
+ </property>
+ </bean>
+
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"
- lazy-init="false" depends-on="nonJPAdbInitializer">
+ lazy-init="false" depends-on="quartzDataSourceInit">
<property name="autoStartup" value="true"/>
<property name="applicationContextSchedulerContextKey" value="applicationContext"/>
<property name="waitForJobsToCompleteOnShutdown" value="true"/>
<property name="overwriteExistingJobs" value="true"/>
- <property name="dataSource" ref="dataSource"/>
- <property name="transactionManager" ref="transactionManager"/>
+ <property name="dataSource" ref="MasterDataSource"/>
+ <property name="transactionManager" ref="MasterTransactionManager"/>
<property name="jobFactory">
<bean class="org.apache.syncope.core.provisioning.java.job.SpringBeanJobFactory"/>
</property>
@@ -104,7 +123,7 @@ under the License.
<constructor-arg index="1" value="true"/>
</bean>
- <bean id="connIdBundleManager" class="org.apache.syncope.core.provisioning.java.ConnIdBundleManagerImpl" scope="singleton">
+ <bean id="connIdBundleManager" class="org.apache.syncope.core.provisioning.java.ConnIdBundleManagerImpl">
<property name="stringLocations" value="${connid.locations}"/>
</bean>
http://git-wip-us.apache.org/repos/asf/syncope/blob/34a1c214/core/provisioning-java/src/main/resources/quartz/tables_h2.sql
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/resources/quartz/tables_h2.sql b/core/provisioning-java/src/main/resources/quartz/tables_h2.sql
new file mode 100644
index 0000000..e798223
--- /dev/null
+++ b/core/provisioning-java/src/main/resources/quartz/tables_h2.sql
@@ -0,0 +1,266 @@
+-- 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.
+
+-- Thanks to Amir Kibbar and Peter Rietzler for contributing the schema for H2 database,
+-- and verifying that it works with Quartz's StdJDBCDelegate
+--
+-- Note, Quartz depends on row-level locking which means you must use the MVCC=TRUE
+-- setting on your H2 database, or you will experience dead-locks
+--
+--
+-- In your Quartz properties file, you'll need to set
+-- org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
+
+CREATE TABLE QRTZ_CALENDARS (
+ SCHED_NAME VARCHAR(120) NOT NULL,
+ CALENDAR_NAME VARCHAR (200) NOT NULL ,
+ CALENDAR IMAGE NOT NULL
+);
+
+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 (120) NOT NULL ,
+ TIME_ZONE_ID VARCHAR (80)
+);
+
+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 NOT NULL ,
+ SCHED_TIME BIGINT NOT NULL ,
+ PRIORITY INTEGER NOT NULL ,
+ STATE VARCHAR (16) NOT NULL,
+ JOB_NAME VARCHAR (200) NULL ,
+ JOB_GROUP VARCHAR (200) NULL ,
+ IS_NONCONCURRENT BOOLEAN NULL ,
+ REQUESTS_RECOVERY BOOLEAN NULL
+);
+
+CREATE TABLE QRTZ_PAUSED_TRIGGER_GRPS (
+ SCHED_NAME VARCHAR(120) NOT NULL,
+ TRIGGER_GROUP VARCHAR (200) NOT NULL
+);
+
+CREATE TABLE QRTZ_SCHEDULER_STATE (
+ SCHED_NAME VARCHAR(120) NOT NULL,
+ INSTANCE_NAME VARCHAR (200) NOT NULL ,
+ LAST_CHECKIN_TIME BIGINT NOT NULL ,
+ CHECKIN_INTERVAL BIGINT NOT NULL
+);
+
+CREATE TABLE QRTZ_LOCKS (
+ SCHED_NAME VARCHAR(120) NOT NULL,
+ LOCK_NAME VARCHAR (40) NOT NULL
+);
+
+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 BOOLEAN NOT NULL ,
+ IS_NONCONCURRENT BOOLEAN NOT NULL ,
+ IS_UPDATE_DATA BOOLEAN NOT NULL ,
+ REQUESTS_RECOVERY BOOLEAN NOT NULL ,
+ JOB_DATA IMAGE NULL
+);
+
+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 NOT NULL ,
+ REPEAT_INTERVAL BIGINT NOT NULL ,
+ TIMES_TRIGGERED BIGINT NOT NULL
+);
+
+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 INTEGER NULL,
+ INT_PROP_2 INTEGER 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 BOOLEAN NULL,
+ BOOL_PROP_2 BOOLEAN NULL,
+);
+
+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 IMAGE NULL
+);
+
+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 NULL ,
+ PREV_FIRE_TIME BIGINT NULL ,
+ PRIORITY INTEGER NULL ,
+ TRIGGER_STATE VARCHAR (16) NOT NULL ,
+ TRIGGER_TYPE VARCHAR (8) NOT NULL ,
+ START_TIME BIGINT NOT NULL ,
+ END_TIME BIGINT NULL ,
+ CALENDAR_NAME VARCHAR (200) NULL ,
+ MISFIRE_INSTR SMALLINT NULL ,
+ JOB_DATA IMAGE NULL
+);
+
+ALTER TABLE QRTZ_CALENDARS ADD
+ CONSTRAINT PK_QRTZ_CALENDARS PRIMARY KEY
+ (
+ SCHED_NAME,
+ CALENDAR_NAME
+ );
+
+ALTER TABLE QRTZ_CRON_TRIGGERS ADD
+ CONSTRAINT PK_QRTZ_CRON_TRIGGERS PRIMARY KEY
+ (
+ SCHED_NAME,
+ TRIGGER_NAME,
+ TRIGGER_GROUP
+ );
+
+ALTER TABLE QRTZ_FIRED_TRIGGERS ADD
+ CONSTRAINT PK_QRTZ_FIRED_TRIGGERS PRIMARY KEY
+ (
+ SCHED_NAME,
+ ENTRY_ID
+ );
+
+ALTER TABLE QRTZ_PAUSED_TRIGGER_GRPS ADD
+ CONSTRAINT PK_QRTZ_PAUSED_TRIGGER_GRPS PRIMARY KEY
+ (
+ SCHED_NAME,
+ TRIGGER_GROUP
+ );
+
+ALTER TABLE QRTZ_SCHEDULER_STATE ADD
+ CONSTRAINT PK_QRTZ_SCHEDULER_STATE PRIMARY KEY
+ (
+ SCHED_NAME,
+ INSTANCE_NAME
+ );
+
+ALTER TABLE QRTZ_LOCKS ADD
+ CONSTRAINT PK_QRTZ_LOCKS PRIMARY KEY
+ (
+ SCHED_NAME,
+ LOCK_NAME
+ );
+
+ALTER TABLE QRTZ_JOB_DETAILS ADD
+ CONSTRAINT PK_QRTZ_JOB_DETAILS PRIMARY KEY
+ (
+ SCHED_NAME,
+ JOB_NAME,
+ JOB_GROUP
+ );
+
+ALTER TABLE QRTZ_SIMPLE_TRIGGERS ADD
+ CONSTRAINT PK_QRTZ_SIMPLE_TRIGGERS PRIMARY KEY
+ (
+ SCHED_NAME,
+ TRIGGER_NAME,
+ TRIGGER_GROUP
+ );
+
+ALTER TABLE QRTZ_SIMPROP_TRIGGERS ADD
+ CONSTRAINT PK_QRTZ_SIMPROP_TRIGGERS PRIMARY KEY
+ (
+ SCHED_NAME,
+ TRIGGER_NAME,
+ TRIGGER_GROUP
+ );
+
+ALTER TABLE QRTZ_TRIGGERS ADD
+ CONSTRAINT PK_QRTZ_TRIGGERS PRIMARY KEY
+ (
+ SCHED_NAME,
+ TRIGGER_NAME,
+ TRIGGER_GROUP
+ );
+
+ALTER TABLE QRTZ_CRON_TRIGGERS ADD
+ CONSTRAINT FK_QRTZ_CRON_TRIGGERS_QRTZ_TRIGGERS FOREIGN KEY
+ (
+ SCHED_NAME,
+ TRIGGER_NAME,
+ TRIGGER_GROUP
+ ) REFERENCES QRTZ_TRIGGERS (
+ SCHED_NAME,
+ TRIGGER_NAME,
+ TRIGGER_GROUP
+ ) ON DELETE CASCADE;
+
+
+ALTER TABLE QRTZ_SIMPLE_TRIGGERS ADD
+ CONSTRAINT FK_QRTZ_SIMPLE_TRIGGERS_QRTZ_TRIGGERS FOREIGN KEY
+ (
+ SCHED_NAME,
+ TRIGGER_NAME,
+ TRIGGER_GROUP
+ ) REFERENCES QRTZ_TRIGGERS (
+ SCHED_NAME,
+ TRIGGER_NAME,
+ TRIGGER_GROUP
+ ) ON DELETE CASCADE;
+
+ALTER TABLE QRTZ_SIMPROP_TRIGGERS ADD
+ CONSTRAINT FK_QRTZ_SIMPROP_TRIGGERS_QRTZ_TRIGGERS FOREIGN KEY
+ (
+ SCHED_NAME,
+ TRIGGER_NAME,
+ TRIGGER_GROUP
+ ) REFERENCES QRTZ_TRIGGERS (
+ SCHED_NAME,
+ TRIGGER_NAME,
+ TRIGGER_GROUP
+ ) ON DELETE CASCADE;
+
+
+ALTER TABLE QRTZ_TRIGGERS ADD
+ CONSTRAINT FK_QRTZ_TRIGGERS_QRTZ_JOB_DETAILS FOREIGN KEY
+ (
+ SCHED_NAME,
+ JOB_NAME,
+ JOB_GROUP
+ ) REFERENCES QRTZ_JOB_DETAILS (
+ SCHED_NAME,
+ JOB_NAME,
+ JOB_GROUP
+ );
+
+COMMIT;
http://git-wip-us.apache.org/repos/asf/syncope/blob/34a1c214/core/provisioning-java/src/main/resources/quartz/tables_mariadb.sql
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/resources/quartz/tables_mariadb.sql b/core/provisioning-java/src/main/resources/quartz/tables_mariadb.sql
new file mode 100644
index 0000000..ebb8e59
--- /dev/null
+++ b/core/provisioning-java/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/34a1c214/core/provisioning-java/src/main/resources/quartz/tables_mysql.sql
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/resources/quartz/tables_mysql.sql b/core/provisioning-java/src/main/resources/quartz/tables_mysql.sql
new file mode 100644
index 0000000..ebb8e59
--- /dev/null
+++ b/core/provisioning-java/src/main/resources/quartz/tables_mysql.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/34a1c214/core/provisioning-java/src/main/resources/quartz/tables_mysql_innodb.sql
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/resources/quartz/tables_mysql_innodb.sql b/core/provisioning-java/src/main/resources/quartz/tables_mysql_innodb.sql
new file mode 100644
index 0000000..c54493e
--- /dev/null
+++ b/core/provisioning-java/src/main/resources/quartz/tables_mysql_innodb.sql
@@ -0,0 +1,221 @@
+-- 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.
+
+--
+-- In your Quartz properties file, you'll need to set
+-- org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
+--
+--
+-- By: Ron Cordell - roncordell
+-- I didn't see this anywhere, so I thought I'd post it here. This is the script from Quartz to create the tables in a MySQL database, modified to use INNODB instead of MYISAM.
+--
+
+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))
+ENGINE=InnoDB;
+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))
+ENGINE=InnoDB;
+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))
+ENGINE=InnoDB;
+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(120) 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))
+ENGINE=InnoDB;
+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))
+ENGINE=InnoDB;
+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),
+INDEX (SCHED_NAME,TRIGGER_NAME, TRIGGER_GROUP),
+FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP))
+ENGINE=InnoDB;
+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))
+ENGINE=InnoDB;
+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))
+ENGINE=InnoDB;
+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))
+ENGINE=InnoDB;
+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))
+ENGINE=InnoDB;
+COMMIT;
+
+BEGIN;
+CREATE TABLE QRTZ_LOCKS (
+SCHED_NAME VARCHAR(120) NOT NULL,
+LOCK_NAME VARCHAR(40) NOT NULL,
+PRIMARY KEY (SCHED_NAME,LOCK_NAME))
+ENGINE=InnoDB;
+COMMIT;
+
+BEGIN;
+CREATE INDEX IDX_QRTZ_J_REQ_RECOVERY ON QRTZ_JOB_DETAILS(SCHED_NAME,REQUESTS_RECOVERY);
+CREATE INDEX IDX_QRTZ_J_GRP ON QRTZ_JOB_DETAILS(SCHED_NAME,JOB_GROUP);
+
+CREATE INDEX IDX_QRTZ_T_J ON QRTZ_TRIGGERS(SCHED_NAME,JOB_NAME,JOB_GROUP);
+CREATE INDEX IDX_QRTZ_T_JG ON QRTZ_TRIGGERS(SCHED_NAME,JOB_GROUP);
+CREATE INDEX IDX_QRTZ_T_C ON QRTZ_TRIGGERS(SCHED_NAME,CALENDAR_NAME);
+CREATE INDEX IDX_QRTZ_T_G ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_GROUP);
+CREATE INDEX IDX_QRTZ_T_STATE ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_STATE);
+CREATE INDEX IDX_QRTZ_T_N_STATE ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP,TRIGGER_STATE);
+CREATE INDEX IDX_QRTZ_T_N_G_STATE ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_GROUP,TRIGGER_STATE);
+CREATE INDEX IDX_QRTZ_T_NEXT_FIRE_TIME ON QRTZ_TRIGGERS(SCHED_NAME,NEXT_FIRE_TIME);
+CREATE INDEX IDX_QRTZ_T_NFT_ST ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_STATE,NEXT_FIRE_TIME);
+CREATE INDEX IDX_QRTZ_T_NFT_MISFIRE ON QRTZ_TRIGGERS(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME);
+CREATE INDEX IDX_QRTZ_T_NFT_ST_MISFIRE ON QRTZ_TRIGGERS(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_STATE);
+CREATE INDEX IDX_QRTZ_T_NFT_ST_MISFIRE_GRP ON QRTZ_TRIGGERS(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_GROUP,TRIGGER_STATE);
+
+CREATE INDEX IDX_QRTZ_FT_TRIG_INST_NAME ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,INSTANCE_NAME);
+CREATE INDEX IDX_QRTZ_FT_INST_JOB_REQ_RCVRY ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,INSTANCE_NAME,REQUESTS_RECOVERY);
+CREATE INDEX IDX_QRTZ_FT_J_G ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,JOB_NAME,JOB_GROUP);
+CREATE INDEX IDX_QRTZ_FT_JG ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,JOB_GROUP);
+CREATE INDEX IDX_QRTZ_FT_T_G ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP);
+CREATE INDEX IDX_QRTZ_FT_TG ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,TRIGGER_GROUP);
+COMMIT;
http://git-wip-us.apache.org/repos/asf/syncope/blob/34a1c214/core/provisioning-java/src/main/resources/quartz/tables_oracle.sql
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/resources/quartz/tables_oracle.sql b/core/provisioning-java/src/main/resources/quartz/tables_oracle.sql
new file mode 100644
index 0000000..4384ac5
--- /dev/null
+++ b/core/provisioning-java/src/main/resources/quartz/tables_oracle.sql
@@ -0,0 +1,208 @@
+-- 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.
+
+--
+-- A hint submitted by a user: Oracle DB MUST be created as "shared" and the
+-- job_queue_processes parameter must be greater than 2
+-- However, these settings are pretty much standard after any
+-- Oracle install, so most users need not worry about this.
+--
+-- Many other users (including the primary author of Quartz) have had success
+-- runing in dedicated mode, so only consider the above as a hint ;-)
+--
+
+delete from qrtz_fired_triggers;
+delete from qrtz_simple_triggers;
+delete from qrtz_simprop_triggers;
+delete from qrtz_cron_triggers;
+delete from qrtz_blob_triggers;
+delete from qrtz_triggers;
+delete from qrtz_job_details;
+delete from qrtz_calendars;
+delete from qrtz_paused_trigger_grps;
+delete from qrtz_locks;
+delete from qrtz_scheduler_state;
+
+drop table qrtz_calendars;
+drop table qrtz_fired_triggers;
+drop table qrtz_blob_triggers;
+drop table qrtz_cron_triggers;
+drop table qrtz_simple_triggers;
+drop table qrtz_simprop_triggers;
+drop table qrtz_triggers;
+drop table qrtz_job_details;
+drop table qrtz_paused_trigger_grps;
+drop table qrtz_locks;
+drop table qrtz_scheduler_state;
+
+
+CREATE TABLE qrtz_job_details
+ (
+ SCHED_NAME VARCHAR2(120) NOT NULL,
+ JOB_NAME VARCHAR2(200) NOT NULL,
+ JOB_GROUP VARCHAR2(200) NOT NULL,
+ DESCRIPTION VARCHAR2(250) NULL,
+ JOB_CLASS_NAME VARCHAR2(250) NOT NULL,
+ IS_DURABLE VARCHAR2(1) NOT NULL,
+ IS_NONCONCURRENT VARCHAR2(1) NOT NULL,
+ IS_UPDATE_DATA VARCHAR2(1) NOT NULL,
+ REQUESTS_RECOVERY VARCHAR2(1) NOT NULL,
+ JOB_DATA BLOB NULL,
+ CONSTRAINT QRTZ_JOB_DETAILS_PK PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
+);
+CREATE TABLE qrtz_triggers
+ (
+ SCHED_NAME VARCHAR2(120) NOT NULL,
+ TRIGGER_NAME VARCHAR2(200) NOT NULL,
+ TRIGGER_GROUP VARCHAR2(200) NOT NULL,
+ JOB_NAME VARCHAR2(200) NOT NULL,
+ JOB_GROUP VARCHAR2(200) NOT NULL,
+ DESCRIPTION VARCHAR2(250) NULL,
+ NEXT_FIRE_TIME NUMBER(13) NULL,
+ PREV_FIRE_TIME NUMBER(13) NULL,
+ PRIORITY NUMBER(13) NULL,
+ TRIGGER_STATE VARCHAR2(16) NOT NULL,
+ TRIGGER_TYPE VARCHAR2(8) NOT NULL,
+ START_TIME NUMBER(13) NOT NULL,
+ END_TIME NUMBER(13) NULL,
+ CALENDAR_NAME VARCHAR2(200) NULL,
+ MISFIRE_INSTR NUMBER(2) NULL,
+ JOB_DATA BLOB NULL,
+ CONSTRAINT QRTZ_TRIGGERS_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
+ CONSTRAINT QRTZ_TRIGGER_TO_JOBS_FK FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
+ REFERENCES QRTZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP)
+);
+CREATE TABLE qrtz_simple_triggers
+ (
+ SCHED_NAME VARCHAR2(120) NOT NULL,
+ TRIGGER_NAME VARCHAR2(200) NOT NULL,
+ TRIGGER_GROUP VARCHAR2(200) NOT NULL,
+ REPEAT_COUNT NUMBER(7) NOT NULL,
+ REPEAT_INTERVAL NUMBER(12) NOT NULL,
+ TIMES_TRIGGERED NUMBER(10) NOT NULL,
+ CONSTRAINT QRTZ_SIMPLE_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
+ CONSTRAINT QRTZ_SIMPLE_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+ REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+);
+CREATE TABLE qrtz_cron_triggers
+ (
+ SCHED_NAME VARCHAR2(120) NOT NULL,
+ TRIGGER_NAME VARCHAR2(200) NOT NULL,
+ TRIGGER_GROUP VARCHAR2(200) NOT NULL,
+ CRON_EXPRESSION VARCHAR2(120) NOT NULL,
+ TIME_ZONE_ID VARCHAR2(80),
+ CONSTRAINT QRTZ_CRON_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
+ CONSTRAINT QRTZ_CRON_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+ REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+);
+CREATE TABLE qrtz_simprop_triggers
+ (
+ SCHED_NAME VARCHAR2(120) NOT NULL,
+ TRIGGER_NAME VARCHAR2(200) NOT NULL,
+ TRIGGER_GROUP VARCHAR2(200) NOT NULL,
+ STR_PROP_1 VARCHAR2(512) NULL,
+ STR_PROP_2 VARCHAR2(512) NULL,
+ STR_PROP_3 VARCHAR2(512) NULL,
+ INT_PROP_1 NUMBER(10) NULL,
+ INT_PROP_2 NUMBER(10) NULL,
+ LONG_PROP_1 NUMBER(13) NULL,
+ LONG_PROP_2 NUMBER(13) NULL,
+ DEC_PROP_1 NUMERIC(13,4) NULL,
+ DEC_PROP_2 NUMERIC(13,4) NULL,
+ BOOL_PROP_1 VARCHAR2(1) NULL,
+ BOOL_PROP_2 VARCHAR2(1) NULL,
+ CONSTRAINT QRTZ_SIMPROP_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
+ CONSTRAINT QRTZ_SIMPROP_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+ REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+);
+CREATE TABLE qrtz_blob_triggers
+ (
+ SCHED_NAME VARCHAR2(120) NOT NULL,
+ TRIGGER_NAME VARCHAR2(200) NOT NULL,
+ TRIGGER_GROUP VARCHAR2(200) NOT NULL,
+ BLOB_DATA BLOB NULL,
+ CONSTRAINT QRTZ_BLOB_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
+ CONSTRAINT QRTZ_BLOB_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+ REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
+);
+CREATE TABLE qrtz_calendars
+ (
+ SCHED_NAME VARCHAR2(120) NOT NULL,
+ CALENDAR_NAME VARCHAR2(200) NOT NULL,
+ CALENDAR BLOB NOT NULL,
+ CONSTRAINT QRTZ_CALENDARS_PK PRIMARY KEY (SCHED_NAME,CALENDAR_NAME)
+);
+CREATE TABLE qrtz_paused_trigger_grps
+ (
+ SCHED_NAME VARCHAR2(120) NOT NULL,
+ TRIGGER_GROUP VARCHAR2(200) NOT NULL,
+ CONSTRAINT QRTZ_PAUSED_TRIG_GRPS_PK PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP)
+);
+CREATE TABLE qrtz_fired_triggers
+ (
+ SCHED_NAME VARCHAR2(120) NOT NULL,
+ ENTRY_ID VARCHAR2(95) NOT NULL,
+ TRIGGER_NAME VARCHAR2(200) NOT NULL,
+ TRIGGER_GROUP VARCHAR2(200) NOT NULL,
+ INSTANCE_NAME VARCHAR2(200) NOT NULL,
+ FIRED_TIME NUMBER(13) NOT NULL,
+ SCHED_TIME NUMBER(13) NOT NULL,
+ PRIORITY NUMBER(13) NOT NULL,
+ STATE VARCHAR2(16) NOT NULL,
+ JOB_NAME VARCHAR2(200) NULL,
+ JOB_GROUP VARCHAR2(200) NULL,
+ IS_NONCONCURRENT VARCHAR2(1) NULL,
+ REQUESTS_RECOVERY VARCHAR2(1) NULL,
+ CONSTRAINT QRTZ_FIRED_TRIGGER_PK PRIMARY KEY (SCHED_NAME,ENTRY_ID)
+);
+CREATE TABLE qrtz_scheduler_state
+ (
+ SCHED_NAME VARCHAR2(120) NOT NULL,
+ INSTANCE_NAME VARCHAR2(200) NOT NULL,
+ LAST_CHECKIN_TIME NUMBER(13) NOT NULL,
+ CHECKIN_INTERVAL NUMBER(13) NOT NULL,
+ CONSTRAINT QRTZ_SCHEDULER_STATE_PK PRIMARY KEY (SCHED_NAME,INSTANCE_NAME)
+);
+CREATE TABLE qrtz_locks
+ (
+ SCHED_NAME VARCHAR2(120) NOT NULL,
+ LOCK_NAME VARCHAR2(40) NOT NULL,
+ CONSTRAINT QRTZ_LOCKS_PK PRIMARY KEY (SCHED_NAME,LOCK_NAME)
+);
+
+create index idx_qrtz_j_req_recovery on qrtz_job_details(SCHED_NAME,REQUESTS_RECOVERY);
+create index idx_qrtz_j_grp on qrtz_job_details(SCHED_NAME,JOB_GROUP);
+
+create index idx_qrtz_t_j on qrtz_triggers(SCHED_NAME,JOB_NAME,JOB_GROUP);
+create index idx_qrtz_t_jg on qrtz_triggers(SCHED_NAME,JOB_GROUP);
+create index idx_qrtz_t_c on qrtz_triggers(SCHED_NAME,CALENDAR_NAME);
+create index idx_qrtz_t_g on qrtz_triggers(SCHED_NAME,TRIGGER_GROUP);
+create index idx_qrtz_t_state on qrtz_triggers(SCHED_NAME,TRIGGER_STATE);
+create index idx_qrtz_t_n_state on qrtz_triggers(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP,TRIGGER_STATE);
+create index idx_qrtz_t_n_g_state on qrtz_triggers(SCHED_NAME,TRIGGER_GROUP,TRIGGER_STATE);
+create index idx_qrtz_t_next_fire_time on qrtz_triggers(SCHED_NAME,NEXT_FIRE_TIME);
+create index idx_qrtz_t_nft_st on qrtz_triggers(SCHED_NAME,TRIGGER_STATE,NEXT_FIRE_TIME);
+create index idx_qrtz_t_nft_misfire on qrtz_triggers(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME);
+create index idx_qrtz_t_nft_st_misfire on qrtz_triggers(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_STATE);
+create index idx_qrtz_t_nft_st_misfire_grp on qrtz_triggers(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_GROUP,TRIGGER_STATE);
+
+create index idx_qrtz_ft_trig_inst_name on qrtz_fired_triggers(SCHED_NAME,INSTANCE_NAME);
+create index idx_qrtz_ft_inst_job_req_rcvry on qrtz_fired_triggers(SCHED_NAME,INSTANCE_NAME,REQUESTS_RECOVERY);
+create index idx_qrtz_ft_j_g on qrtz_fired_triggers(SCHED_NAME,JOB_NAME,JOB_GROUP);
+create index idx_qrtz_ft_jg on qrtz_fired_triggers(SCHED_NAME,JOB_GROUP);
+create index idx_qrtz_ft_t_g on qrtz_fired_triggers(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP);
+create index idx_qrtz_ft_tg on qrtz_fired_triggers(SCHED_NAME,TRIGGER_GROUP);
http://git-wip-us.apache.org/repos/asf/syncope/blob/34a1c214/core/provisioning-java/src/main/resources/quartz/tables_postgres.sql
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/resources/quartz/tables_postgres.sql b/core/provisioning-java/src/main/resources/quartz/tables_postgres.sql
new file mode 100644
index 0000000..9b7800f
--- /dev/null
+++ b/core/provisioning-java/src/main/resources/quartz/tables_postgres.sql
@@ -0,0 +1,204 @@
+-- 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.
+
+-- Thanks to Patrick Lightbody for submitting this...
+--
+-- In your Quartz properties file, you'll need to set
+-- org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
+
+drop table qrtz_fired_triggers;
+DROP TABLE QRTZ_PAUSED_TRIGGER_GRPS;
+DROP TABLE QRTZ_SCHEDULER_STATE;
+DROP TABLE QRTZ_LOCKS;
+drop table qrtz_simple_triggers;
+drop table qrtz_cron_triggers;
+drop table qrtz_simprop_triggers;
+DROP TABLE QRTZ_BLOB_TRIGGERS;
+drop table qrtz_triggers;
+drop table qrtz_job_details;
+drop table qrtz_calendars;
+
+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 BOOL NOT NULL,
+ IS_NONCONCURRENT BOOL NOT NULL,
+ IS_UPDATE_DATA BOOL NOT NULL,
+ REQUESTS_RECOVERY BOOL NOT NULL,
+ JOB_DATA BYTEA NULL,
+ PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
+);
+
+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 NULL,
+ PREV_FIRE_TIME BIGINT NULL,
+ PRIORITY INTEGER NULL,
+ TRIGGER_STATE VARCHAR(16) NOT NULL,
+ TRIGGER_TYPE VARCHAR(8) NOT NULL,
+ START_TIME BIGINT NOT NULL,
+ END_TIME BIGINT NULL,
+ CALENDAR_NAME VARCHAR(200) NULL,
+ MISFIRE_INSTR SMALLINT NULL,
+ JOB_DATA BYTEA 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)
+);
+
+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 NOT NULL,
+ REPEAT_INTERVAL BIGINT NOT NULL,
+ TIMES_TRIGGERED BIGINT 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)
+);
+
+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(120) 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)
+);
+
+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 BOOL NULL,
+ BOOL_PROP_2 BOOL 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)
+);
+
+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 BYTEA 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)
+);
+
+CREATE TABLE qrtz_calendars
+ (
+ SCHED_NAME VARCHAR(120) NOT NULL,
+ CALENDAR_NAME VARCHAR(200) NOT NULL,
+ CALENDAR BYTEA NOT NULL,
+ PRIMARY KEY (SCHED_NAME,CALENDAR_NAME)
+);
+
+
+CREATE TABLE qrtz_paused_trigger_grps
+ (
+ SCHED_NAME VARCHAR(120) NOT NULL,
+ TRIGGER_GROUP VARCHAR(200) NOT NULL,
+ PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP)
+);
+
+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 NOT NULL,
+ SCHED_TIME BIGINT NOT NULL,
+ PRIORITY INTEGER NOT NULL,
+ STATE VARCHAR(16) NOT NULL,
+ JOB_NAME VARCHAR(200) NULL,
+ JOB_GROUP VARCHAR(200) NULL,
+ IS_NONCONCURRENT BOOL NULL,
+ REQUESTS_RECOVERY BOOL NULL,
+ PRIMARY KEY (SCHED_NAME,ENTRY_ID)
+);
+
+CREATE TABLE qrtz_scheduler_state
+ (
+ SCHED_NAME VARCHAR(120) NOT NULL,
+ INSTANCE_NAME VARCHAR(200) NOT NULL,
+ LAST_CHECKIN_TIME BIGINT NOT NULL,
+ CHECKIN_INTERVAL BIGINT NOT NULL,
+ PRIMARY KEY (SCHED_NAME,INSTANCE_NAME)
+);
+
+CREATE TABLE qrtz_locks
+ (
+ SCHED_NAME VARCHAR(120) NOT NULL,
+ LOCK_NAME VARCHAR(40) NOT NULL,
+ PRIMARY KEY (SCHED_NAME,LOCK_NAME)
+);
+
+create index idx_qrtz_j_req_recovery on qrtz_job_details(SCHED_NAME,REQUESTS_RECOVERY);
+create index idx_qrtz_j_grp on qrtz_job_details(SCHED_NAME,JOB_GROUP);
+
+create index idx_qrtz_t_j on qrtz_triggers(SCHED_NAME,JOB_NAME,JOB_GROUP);
+create index idx_qrtz_t_jg on qrtz_triggers(SCHED_NAME,JOB_GROUP);
+create index idx_qrtz_t_c on qrtz_triggers(SCHED_NAME,CALENDAR_NAME);
+create index idx_qrtz_t_g on qrtz_triggers(SCHED_NAME,TRIGGER_GROUP);
+create index idx_qrtz_t_state on qrtz_triggers(SCHED_NAME,TRIGGER_STATE);
+create index idx_qrtz_t_n_state on qrtz_triggers(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP,TRIGGER_STATE);
+create index idx_qrtz_t_n_g_state on qrtz_triggers(SCHED_NAME,TRIGGER_GROUP,TRIGGER_STATE);
+create index idx_qrtz_t_next_fire_time on qrtz_triggers(SCHED_NAME,NEXT_FIRE_TIME);
+create index idx_qrtz_t_nft_st on qrtz_triggers(SCHED_NAME,TRIGGER_STATE,NEXT_FIRE_TIME);
+create index idx_qrtz_t_nft_misfire on qrtz_triggers(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME);
+create index idx_qrtz_t_nft_st_misfire on qrtz_triggers(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_STATE);
+create index idx_qrtz_t_nft_st_misfire_grp on qrtz_triggers(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_GROUP,TRIGGER_STATE);
+
+create index idx_qrtz_ft_trig_inst_name on qrtz_fired_triggers(SCHED_NAME,INSTANCE_NAME);
+create index idx_qrtz_ft_inst_job_req_rcvry on qrtz_fired_triggers(SCHED_NAME,INSTANCE_NAME,REQUESTS_RECOVERY);
+create index idx_qrtz_ft_j_g on qrtz_fired_triggers(SCHED_NAME,JOB_NAME,JOB_GROUP);
+create index idx_qrtz_ft_jg on qrtz_fired_triggers(SCHED_NAME,JOB_GROUP);
+create index idx_qrtz_ft_t_g on qrtz_fired_triggers(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP);
+create index idx_qrtz_ft_tg on qrtz_fired_triggers(SCHED_NAME,TRIGGER_GROUP);
+
+
+commit;
http://git-wip-us.apache.org/repos/asf/syncope/blob/34a1c214/core/provisioning-java/src/main/resources/quartz/tables_sqlServer.sql
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/resources/quartz/tables_sqlServer.sql b/core/provisioning-java/src/main/resources/quartz/tables_sqlServer.sql
new file mode 100644
index 0000000..288b990
--- /dev/null
+++ b/core/provisioning-java/src/main/resources/quartz/tables_sqlServer.sql
@@ -0,0 +1,296 @@
+-- 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.
+
+IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_QRTZ_TRIGGERS_QRTZ_JOB_DETAILS]') AND OBJECTPROPERTY(id, N'ISFOREIGNKEY') = 1)
+ALTER TABLE [dbo].[QRTZ_TRIGGERS] DROP CONSTRAINT FK_QRTZ_TRIGGERS_QRTZ_JOB_DETAILS;
+
+IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_QRTZ_CRON_TRIGGERS_QRTZ_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISFOREIGNKEY') = 1)
+ALTER TABLE [dbo].[QRTZ_CRON_TRIGGERS] DROP CONSTRAINT FK_QRTZ_CRON_TRIGGERS_QRTZ_TRIGGERS;
+
+IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_QRTZ_SIMPLE_TRIGGERS_QRTZ_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISFOREIGNKEY') = 1)
+ALTER TABLE [dbo].[QRTZ_SIMPLE_TRIGGERS] DROP CONSTRAINT FK_QRTZ_SIMPLE_TRIGGERS_QRTZ_TRIGGERS;
+
+IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[FK_QRTZ_SIMPROP_TRIGGERS_QRTZ_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISFOREIGNKEY') = 1)
+ALTER TABLE [dbo].[QRTZ_SIMPROP_TRIGGERS] DROP CONSTRAINT FK_QRTZ_SIMPROP_TRIGGERS_QRTZ_TRIGGERS;
+
+IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_CALENDARS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1)
+DROP TABLE [dbo].[QRTZ_CALENDARS];
+
+IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_CRON_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1)
+DROP TABLE [dbo].[QRTZ_CRON_TRIGGERS];
+
+IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_BLOB_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1)
+DROP TABLE [dbo].[QRTZ_BLOB_TRIGGERS];
+
+IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_FIRED_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1)
+DROP TABLE [dbo].[QRTZ_FIRED_TRIGGERS];
+
+IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_PAUSED_TRIGGER_GRPS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1)
+DROP TABLE [dbo].[QRTZ_PAUSED_TRIGGER_GRPS];
+
+IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_SCHEDULER_STATE]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1)
+DROP TABLE [dbo].[QRTZ_SCHEDULER_STATE];
+
+IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_LOCKS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1)
+DROP TABLE [dbo].[QRTZ_LOCKS];
+
+IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_JOB_DETAILS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1)
+DROP TABLE [dbo].[QRTZ_JOB_DETAILS];
+
+IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_SIMPLE_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1)
+DROP TABLE [dbo].[QRTZ_SIMPLE_TRIGGERS];
+
+IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_SIMPROP_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1)
+DROP TABLE [dbo].[QRTZ_SIMPROP_TRIGGERS];
+
+IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[QRTZ_TRIGGERS]') AND OBJECTPROPERTY(id, N'ISUSERTABLE') = 1)
+DROP TABLE [dbo].[QRTZ_TRIGGERS];
+
+CREATE TABLE [dbo].[QRTZ_CALENDARS] (
+ [SCHED_NAME] [VARCHAR] (120) NOT NULL ,
+ [CALENDAR_NAME] [VARCHAR] (200) NOT NULL ,
+ [CALENDAR] [IMAGE] NOT NULL
+) ON [PRIMARY];
+
+CREATE TABLE [dbo].[QRTZ_CRON_TRIGGERS] (
+ [SCHED_NAME] [VARCHAR] (120) NOT NULL ,
+ [TRIGGER_NAME] [VARCHAR] (200) NOT NULL ,
+ [TRIGGER_GROUP] [VARCHAR] (200) NOT NULL ,
+ [CRON_EXPRESSION] [VARCHAR] (120) NOT NULL ,
+ [TIME_ZONE_ID] [VARCHAR] (80)
+) ON [PRIMARY];
+
+CREATE TABLE [dbo].[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] NOT NULL ,
+ [SCHED_TIME] [BIGINT] 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
+) ON [PRIMARY];
+
+CREATE TABLE [dbo].[QRTZ_PAUSED_TRIGGER_GRPS] (
+ [SCHED_NAME] [VARCHAR] (120) NOT NULL ,
+ [TRIGGER_GROUP] [VARCHAR] (200) NOT NULL
+) ON [PRIMARY];
+
+CREATE TABLE [dbo].[QRTZ_SCHEDULER_STATE] (
+ [SCHED_NAME] [VARCHAR] (120) NOT NULL ,
+ [INSTANCE_NAME] [VARCHAR] (200) NOT NULL ,
+ [LAST_CHECKIN_TIME] [BIGINT] NOT NULL ,
+ [CHECKIN_INTERVAL] [BIGINT] NOT NULL
+) ON [PRIMARY];
+
+CREATE TABLE [dbo].[QRTZ_LOCKS] (
+ [SCHED_NAME] [VARCHAR] (120) NOT NULL ,
+ [LOCK_NAME] [VARCHAR] (40) NOT NULL
+) ON [PRIMARY];
+
+CREATE TABLE [dbo].[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] [IMAGE] NULL
+) ON [PRIMARY];
+
+CREATE TABLE [dbo].[QRTZ_SIMPLE_TRIGGERS] (
+ [SCHED_NAME] [VARCHAR] (120) NOT NULL ,
+ [TRIGGER_NAME] [VARCHAR] (200) NOT NULL ,
+ [TRIGGER_GROUP] [VARCHAR] (200) NOT NULL ,
+ [REPEAT_COUNT] [BIGINT] NOT NULL ,
+ [REPEAT_INTERVAL] [BIGINT] NOT NULL ,
+ [TIMES_TRIGGERED] [BIGINT] NOT NULL
+) ON [PRIMARY];
+
+CREATE TABLE [dbo].[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,
+) ON [PRIMARY];
+
+CREATE TABLE [dbo].[QRTZ_BLOB_TRIGGERS] (
+ [SCHED_NAME] [VARCHAR] (120) NOT NULL ,
+ [TRIGGER_NAME] [VARCHAR] (200) NOT NULL ,
+ [TRIGGER_GROUP] [VARCHAR] (200) NOT NULL ,
+ [BLOB_DATA] [IMAGE] NULL
+) ON [PRIMARY];
+
+CREATE TABLE [dbo].[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] NULL ,
+ [PREV_FIRE_TIME] [BIGINT] NULL ,
+ [PRIORITY] [INTEGER] NULL ,
+ [TRIGGER_STATE] [VARCHAR] (16) NOT NULL ,
+ [TRIGGER_TYPE] [VARCHAR] (8) NOT NULL ,
+ [START_TIME] [BIGINT] NOT NULL ,
+ [END_TIME] [BIGINT] NULL ,
+ [CALENDAR_NAME] [VARCHAR] (200) NULL ,
+ [MISFIRE_INSTR] [SMALLINT] NULL ,
+ [JOB_DATA] [IMAGE] NULL
+) ON [PRIMARY];
+
+ALTER TABLE [dbo].[QRTZ_CALENDARS] WITH NOCHECK ADD
+ CONSTRAINT [PK_QRTZ_CALENDARS] PRIMARY KEY CLUSTERED
+ (
+ [SCHED_NAME],
+ [CALENDAR_NAME]
+ ) ON [PRIMARY];
+
+ALTER TABLE [dbo].[QRTZ_CRON_TRIGGERS] WITH NOCHECK ADD
+ CONSTRAINT [PK_QRTZ_CRON_TRIGGERS] PRIMARY KEY CLUSTERED
+ (
+ [SCHED_NAME],
+ [TRIGGER_NAME],
+ [TRIGGER_GROUP]
+ ) ON [PRIMARY];
+
+ALTER TABLE [dbo].[QRTZ_FIRED_TRIGGERS] WITH NOCHECK ADD
+ CONSTRAINT [PK_QRTZ_FIRED_TRIGGERS] PRIMARY KEY CLUSTERED
+ (
+ [SCHED_NAME],
+ [ENTRY_ID]
+ ) ON [PRIMARY];
+
+ALTER TABLE [dbo].[QRTZ_PAUSED_TRIGGER_GRPS] WITH NOCHECK ADD
+ CONSTRAINT [PK_QRTZ_PAUSED_TRIGGER_GRPS] PRIMARY KEY CLUSTERED
+ (
+ [SCHED_NAME],
+ [TRIGGER_GROUP]
+ ) ON [PRIMARY];
+
+ALTER TABLE [dbo].[QRTZ_SCHEDULER_STATE] WITH NOCHECK ADD
+ CONSTRAINT [PK_QRTZ_SCHEDULER_STATE] PRIMARY KEY CLUSTERED
+ (
+ [SCHED_NAME],
+ [INSTANCE_NAME]
+ ) ON [PRIMARY];
+
+ALTER TABLE [dbo].[QRTZ_LOCKS] WITH NOCHECK ADD
+ CONSTRAINT [PK_QRTZ_LOCKS] PRIMARY KEY CLUSTERED
+ (
+ [SCHED_NAME],
+ [LOCK_NAME]
+ ) ON [PRIMARY];
+
+ALTER TABLE [dbo].[QRTZ_JOB_DETAILS] WITH NOCHECK ADD
+ CONSTRAINT [PK_QRTZ_JOB_DETAILS] PRIMARY KEY CLUSTERED
+ (
+ [SCHED_NAME],
+ [JOB_NAME],
+ [JOB_GROUP]
+ ) ON [PRIMARY];
+
+ALTER TABLE [dbo].[QRTZ_SIMPLE_TRIGGERS] WITH NOCHECK ADD
+ CONSTRAINT [PK_QRTZ_SIMPLE_TRIGGERS] PRIMARY KEY CLUSTERED
+ (
+ [SCHED_NAME],
+ [TRIGGER_NAME],
+ [TRIGGER_GROUP]
+ ) ON [PRIMARY];
+
+ALTER TABLE [dbo].[QRTZ_SIMPROP_TRIGGERS] WITH NOCHECK ADD
+ CONSTRAINT [PK_QRTZ_SIMPROP_TRIGGERS] PRIMARY KEY CLUSTERED
+ (
+ [SCHED_NAME],
+ [TRIGGER_NAME],
+ [TRIGGER_GROUP]
+ ) ON [PRIMARY];
+
+ALTER TABLE [dbo].[QRTZ_TRIGGERS] WITH NOCHECK ADD
+ CONSTRAINT [PK_QRTZ_TRIGGERS] PRIMARY KEY CLUSTERED
+ (
+ [SCHED_NAME],
+ [TRIGGER_NAME],
+ [TRIGGER_GROUP]
+ ) ON [PRIMARY];
+
+ALTER TABLE [dbo].[QRTZ_CRON_TRIGGERS] ADD
+ CONSTRAINT [FK_QRTZ_CRON_TRIGGERS_QRTZ_TRIGGERS] FOREIGN KEY
+ (
+ [SCHED_NAME],
+ [TRIGGER_NAME],
+ [TRIGGER_GROUP]
+ ) REFERENCES [dbo].[QRTZ_TRIGGERS] (
+ [SCHED_NAME],
+ [TRIGGER_NAME],
+ [TRIGGER_GROUP]
+ ) ON DELETE CASCADE;
+
+ALTER TABLE [dbo].[QRTZ_SIMPLE_TRIGGERS] ADD
+ CONSTRAINT [FK_QRTZ_SIMPLE_TRIGGERS_QRTZ_TRIGGERS] FOREIGN KEY
+ (
+ [SCHED_NAME],
+ [TRIGGER_NAME],
+ [TRIGGER_GROUP]
+ ) REFERENCES [dbo].[QRTZ_TRIGGERS] (
+ [SCHED_NAME],
+ [TRIGGER_NAME],
+ [TRIGGER_GROUP]
+ ) ON DELETE CASCADE;
+
+ALTER TABLE [dbo].[QRTZ_SIMPROP_TRIGGERS] ADD
+ CONSTRAINT [FK_QRTZ_SIMPROP_TRIGGERS_QRTZ_TRIGGERS] FOREIGN KEY
+ (
+ [SCHED_NAME],
+ [TRIGGER_NAME],
+ [TRIGGER_GROUP]
+ ) REFERENCES [dbo].[QRTZ_TRIGGERS] (
+ [SCHED_NAME],
+ [TRIGGER_NAME],
+ [TRIGGER_GROUP]
+ ) ON DELETE CASCADE;
+
+ALTER TABLE [dbo].[QRTZ_TRIGGERS] ADD
+ CONSTRAINT [FK_QRTZ_TRIGGERS_QRTZ_JOB_DETAILS] FOREIGN KEY
+ (
+ [SCHED_NAME],
+ [JOB_NAME],
+ [JOB_GROUP]
+ ) REFERENCES [dbo].[QRTZ_JOB_DETAILS] (
+ [SCHED_NAME],
+ [JOB_NAME],
+ [JOB_GROUP]
+ );
http://git-wip-us.apache.org/repos/asf/syncope/blob/34a1c214/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/AbstractTest.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/AbstractTest.java b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/AbstractTest.java
index e26f238..07bda8a 100644
--- a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/AbstractTest.java
+++ b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/AbstractTest.java
@@ -21,6 +21,7 @@ package org.apache.syncope.core.provisioning.java;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.transaction.TransactionConfiguration;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {
@@ -29,5 +30,6 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
"classpath:workflowContext.xml",
"classpath:provisioningTest.xml"
})
+@TransactionConfiguration(transactionManager = "MasterTransactionManager")
public abstract class AbstractTest {
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/34a1c214/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/ConnectorManagerTest.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/ConnectorManagerTest.java b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/ConnectorManagerTest.java
index 138fee3..1a71b89 100644
--- a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/ConnectorManagerTest.java
+++ b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/ConnectorManagerTest.java
@@ -65,7 +65,7 @@ public class ConnectorManagerTest extends AbstractTest {
}
assertEquals(expected,
- ApplicationContextProvider.getApplicationContext().
+ ApplicationContextProvider.getBeanFactory().
getBeanNamesForType(Connector.class, false, true).length);
}
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/34a1c214/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/TestInitializer.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/TestInitializer.java b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/TestInitializer.java
new file mode 100644
index 0000000..98392af
--- /dev/null
+++ b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/TestInitializer.java
@@ -0,0 +1,37 @@
+/*
+ * 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.
+ */
+package org.apache.syncope.core.provisioning.java;
+
+import org.apache.syncope.core.persistence.api.content.ContentLoader;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class TestInitializer implements InitializingBean {
+
+ @Autowired
+ private ContentLoader contentLoader;
+
+ @Override
+ public void afterPropertiesSet() throws Exception {
+ contentLoader.load();
+ }
+
+}